diff --git a/.gitignore b/.gitignore
index dba52f811..b70dafaa1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -44,8 +44,9 @@ src/calendar-server/org.gnome.Shell.CalendarServer.service
src/gnome-shell
src/gnome-shell-calendar-server
src/gnome-shell-extension-tool
-src/gnome-shell-real
src/gnome-shell-jhbuild
+src/gnome-shell-perf-helper
+src/gnome-shell-real
src/run-js-test
src/test-recorder
src/test-recorder.ogg
diff --git a/configure.ac b/configure.ac
index 4da29428e..0c617875f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
AC_PREREQ(2.63)
-AC_INIT([gnome-shell],[2.91.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
+AC_INIT([gnome-shell],[2.91.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@@ -71,13 +71,14 @@ LIBEDATASERVER_MIN_VERSION=1.2.0
LIBEDATASERVERUI2_MIN_VERSION=1.2.0
LIBEDATASERVERUI3_MIN_VERSION=2.91.6
TELEPATHY_GLIB_MIN_VERSION=0.13.12
+TELEPATHY_LOGGER_MIN_VERSION=0.2.4
POLKIT_MIN_VERSION=0.100
# Collect more than 20 libraries for a prize!
PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
gio-unix-2.0 dbus-glib-1 libxml-2.0
gtk+-3.0 >= $GTK_MIN_VERSION
- libmutter-wm >= $MUTTER_MIN_VERSION
+ libmutter >= $MUTTER_MIN_VERSION
gjs-internals-1.0 >= $GJS_MIN_VERSION
libgnome-menu $recorder_modules gconf-2.0
gdk-x11-3.0
@@ -87,6 +88,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION
gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION
libcanberra
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
+ telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
@@ -96,6 +98,14 @@ AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're li
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
+JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
+# NM is the only typelib we use that we don't jhbuild
+PKG_CHECK_EXISTS([libnm-glib >= 0.8.995],
+ [NM_TYPELIBDIR=`$PKG_CONFIG --variable=libdir libnm-glib`/girepository-1.0
+ if test "$INTROSPECTION_TYPELIBDIR" != "$NM_TYPELIBDIR"; then
+ JHBUILD_TYPELIBDIR="$JHBUILD_TYPELIBDIR:$NM_TYPELIBDIR"
+ fi])
+AC_SUBST(JHBUILD_TYPELIBDIR)
saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS
@@ -136,8 +146,8 @@ PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedatas
AC_SUBST(CALENDAR_SERVER_CFLAGS)
AC_SUBST(CALENDAR_SERVER_LIBS)
-MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter-wm`
-MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wm`
+MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter`
+MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter`
AC_SUBST(MUTTER_GIR_DIR)
AC_SUBST(MUTTER_TYPELIB_DIR)
diff --git a/data/Makefile.am b/data/Makefile.am
index 990f2325e..819b15c34 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -24,7 +24,8 @@ dist_theme_DATA = \
theme/calendar-today.svg \
theme/close-window.svg \
theme/close.svg \
- theme/corner-ripple.png \
+ theme/corner-ripple-ltr.png \
+ theme/corner-ripple-rtl.png \
theme/dash-placeholder.svg \
theme/filter-selected-ltr.svg \
theme/filter-selected-rtl.svg \
@@ -49,6 +50,7 @@ dist_theme_DATA = \
theme/separator-white.png \
theme/single-view-active.svg \
theme/single-view.svg \
+ theme/source-button-border.svg \
theme/toggle-off-us.svg \
theme/toggle-off-intl.svg \
theme/toggle-on-us.svg \
diff --git a/data/gnome-shell.desktop.in.in b/data/gnome-shell.desktop.in.in
index e64364ac1..6d04a0a11 100644
--- a/data/gnome-shell.desktop.in.in
+++ b/data/gnome-shell.desktop.in.in
@@ -13,3 +13,4 @@ NoDisplay=true
X-GNOME-Autostart-Phase=WindowManager
X-GNOME-Provides=panel;windowmanager;
X-GNOME-Autostart-Notify=true
+X-GNOME-AutoRestart=true
diff --git a/data/gnome-shell.schemas b/data/gnome-shell.schemas
index 24cade651..f2e69eefd 100644
--- a/data/gnome-shell.schemas
+++ b/data/gnome-shell.schemas
@@ -81,5 +81,20 @@
+
+ /schemas/desktop/gnome/shell/windows/workspaces_only_on_primary
+ /desktop/gnome/shell/windows/workspaces_only_on_primary
+ gnome-shell
+ bool
+ true
+
+ Workspaces only on primary monitor
+
+ This key overrides /apps/mutter/general/workspaces_only_on_primary when
+ running GNOME Shell.
+
+
+
+
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index 672642590..698ebc1ea 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -1,5 +1,5 @@
-
true
@@ -54,7 +54,7 @@
-
false
@@ -65,7 +65,7 @@
-
false
@@ -83,7 +83,7 @@
-
15
diff --git a/data/theme/corner-ripple.png b/data/theme/corner-ripple-ltr.png
similarity index 100%
rename from data/theme/corner-ripple.png
rename to data/theme/corner-ripple-ltr.png
diff --git a/data/theme/corner-ripple-rtl.png b/data/theme/corner-ripple-rtl.png
new file mode 100644
index 000000000..26cf965f6
Binary files /dev/null and b/data/theme/corner-ripple-rtl.png differ
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index 7d9f0110f..1909da9c0 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -34,13 +34,6 @@ stage {
color: rgba(0,0,0,0.5);
}
-.label-real-shadow {
- background-gradient-direction: horizontal;
- background-gradient-start: rgba(0, 0, 0, 0);
- background-gradient-end: rgba(0, 0, 0, 255);
- width: 10px;
-}
-
StScrollBar
{
padding: 0px;
@@ -82,10 +75,10 @@ StScrollBar StButton#vhandle:hover
}
StTooltip StLabel {
- border: 1px solid rgba(79,111,173,1);
+ border: 1px solid rgba(255,255,255,0.6);
border-radius: 5px;
- padding: 4px;
- background-color: rgba(79,111,173,0.9);
+ padding: 2px 12px;
+ background-color: rgba(0,0,0,0.9);
color: #ffffff;
font-size: 0.8em;
font-weight: normal;
@@ -105,7 +98,7 @@ StTooltip StLabel {
.popup-menu {
color: #ffffff;
- font-size: 14px;
+ font-size: 10.5pt;
min-width: 200px;
}
@@ -160,6 +153,14 @@ StTooltip StLabel {
spacing: .5em;
}
+.popup-inactive-menu-item {
+ color: #999;
+}
+
+.popup-subtitle-menu-item {
+ font-weight: bold;
+}
+
.popup-menu-icon {
icon-size: 1.14em;
}
@@ -190,6 +191,8 @@ StTooltip StLabel {
color: #ffffff;
background-color: black;
border-image: url("panel-border.svg") 1;
+ font-size: 10.5pt;
+ height: 1.86em;
}
#panelLeft, #panelCenter, #panelRight {
@@ -249,12 +252,16 @@ StTooltip StLabel {
.panel-button {
padding: 0px 12px;
- font-size: 14px;
font-weight: bold;
color: #ccc;
transition-duration: 100;
}
+.panel-button:hover {
+ color: white;
+ text-shadow: black 0px 2px 2px;
+}
+
.panel-button:active,
.panel-button:checked,
.panel-button:focus {
@@ -317,7 +324,7 @@ StTooltip StLabel {
background-color: rgba(0,0,0,0.6);
}
-.workspaces-view {
+.window-caption {
color: white;
spacing: 25px;
}
@@ -346,13 +353,14 @@ StTooltip StLabel {
.workspace-thumbnail-indicator {
outline: 2px solid white;
+ border: 1px solid #888;
}
.window-caption {
background: rgba(0,0,0,0.8);
border: 1px solid rgba(128,128,128,0.40);
border-radius: 10px;
- font-size: 12px;
+ font-size: 9pt;
padding: 2px 8px;
-shell-caption-spacing: 4px;
}
@@ -372,7 +380,7 @@ StTooltip StLabel {
#dash {
color: #5f5f5f;
- font-size: 12px;
+ font-size: 9pt;
padding: 4px 0px;
background-color: rgba(0, 0, 0, 0.5);
border: 1px solid rgba(128, 128, 128, 0.4);
@@ -398,12 +406,12 @@ StTooltip StLabel {
}
#viewSelector {
- spacing: 16px;
- font-size: 16px;
+ spacing: 1em;
+ font-size: 12pt;
}
#viewSelectorTabBar {
- padding: 16px;
+ padding: 1em;
}
#searchArea {
@@ -451,8 +459,8 @@ StTooltip StLabel {
.view-tab-title {
color: #888a85;
font-weight: bold;
- padding: 0px 12px;
- height: 24px;
+ padding: 0px 0.75em;
+ height: 1.5em;
}
.view-tab-title:hover {
@@ -462,8 +470,7 @@ StTooltip StLabel {
.view-tab-title:selected {
color: #000000;
background-color: #c2c7cd;
- border-radius: 4px;
- height: 24px;
+ border-radius: 0.25em;
}
#searchResults {
@@ -526,7 +533,7 @@ StTooltip StLabel {
.dash-search-button-label {
color: #cccccc;
- font-size: 16px;
+ font-size: 12pt;
}
/* Apps */
@@ -551,9 +558,9 @@ StTooltip StLabel {
}
.app-filter {
- font-size: 14px;
+ font-size: 10.5pt;
font-weight: bold;
- height: 40px;
+ height: 2.85em;
color: #aaa;
width: 200px;
}
@@ -596,7 +603,7 @@ StTooltip StLabel {
border-radius: 4px;
padding: 3px;
border: 1px rgba(0,0,0,0);
- font-size: 10px;
+ font-size: 7.5pt;
color: white;
transition-duration: 100;
text-align: center;
@@ -626,7 +633,7 @@ StTooltip StLabel {
}
.app-well-menu {
- font-size: 12px
+ font-size: 9pt;
}
/* LookingGlass */
@@ -782,7 +789,7 @@ StTooltip StLabel {
.calendar-month-label {
color: #666666;
- font-size: 10px;
+ font-size: 7.5pt;
padding: 2px;
font-weight: bold;
}
@@ -825,16 +832,16 @@ StTooltip StLabel {
.datemenu-date-label {
padding: .4em 1.75em;
- font-size: 14px;
+ font-size: 10.5pt;
color: #cccccc;
font-weight: bold;
}
.calendar-day-base {
- font-size: 10px;
+ font-size: 7.5pt;
text-align: center;
- width: 24px;
- height: 24px;
+ width: 2.4em;
+ height: 2.4em;
}
.calendar-day-base:hover {
@@ -904,7 +911,7 @@ StTooltip StLabel {
}
.events-day-header {
- font-size: 12px;
+ font-size: 9pt;
font-weight: bold;
color: rgba(153, 153, 153, 1.0);
padding-left: 0.3em;
@@ -916,7 +923,7 @@ StTooltip StLabel {
}
.events-day-dayname {
- font-size: 12px;
+ font-size: 9pt;
color: rgba(153, 153, 153, 1.0);
text-align: left;
}
@@ -926,7 +933,7 @@ StTooltip StLabel {
}
.events-day-time {
- font-size: 12px;
+ font-size: 9pt;
color: #fff;
text-align: right;
}
@@ -936,7 +943,7 @@ StTooltip StLabel {
}
.events-day-task {
- font-size: 12px;
+ font-size: 9pt;
color: rgba(153, 153, 153, 1.0);
}
@@ -965,13 +972,13 @@ StTooltip StLabel {
#message-tray {
background-gradient-direction: vertical;
background-gradient-start: rgba(0,0,0,0.01);
- background-gradient-end: rgba(0,0,0,0.95);
+ background-gradient-end: rgba(0,0,0,0.82);
height: 36px;
color: white;
}
#notification {
- font-size: 16px;
+ font-size: 12pt;
border-radius: 5px 5px 0px 0px;
background: rgba(0,0,0,0.9);
padding: 8px 8px 4px 8px;
@@ -1000,11 +1007,29 @@ StTooltip StLabel {
}
.summary-boxpointer #summary-right-click-menu {
- font-size: 14px;
+ font-size: 10.5pt;
padding-top: 12px;
padding-bottom: 12px;
}
+#summary-notification-stack-scrollview {
+ max-height: 18em;
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+
+#summary-notification-stack-scrollview > .top-shadow, #summary-notification-stack-scrollview > .bottom-shadow {
+ height: 1em;
+}
+
+#summary-notification-stack-scrollview:ltr {
+ padding-right: 8px;
+}
+
+#summary-notification-stack-scrollview:rtl {
+ padding-left: 8px;
+}
+
#notification-scrollview {
max-height: 10em;
}
@@ -1102,7 +1127,7 @@ StTooltip StLabel {
.chat-meta-message {
padding-left: 4px;
border-radius: 4px;
- font-size: 14px;
+ font-size: 10.5pt;
color: #bbbbbb;
}
@@ -1151,14 +1176,32 @@ StTooltip StLabel {
padding: 2px 4px 0px 0px;
}
+.summary-source-button {
+ color: #fff;
+ text-shadow: black 0px 2px 2px;
+}
+
.summary-source-button:ltr {
- padding-left: 4px;
- padding-right: 16px;
+ padding-right: 12px;
+}
+
+.summary-source-button:selected .summary-source {
+ background-image: url("panel-button-highlight-narrow.svg");
+ border-image: url("source-button-border.svg") 10 10 0 1;
+}
+
+.summary-source-button:expanded:selected .summary-source {
+ background-image: none;
+ border-image: none;
+}
+
+.summary-source-button:expanded:selected {
+ background-image: url("panel-button-highlight-wide.svg");
+ border-image: url("source-button-border.svg") 10 10 0 1;
}
.summary-source-button:rtl {
- padding-right: 4px;
- padding-left: 16px;
+ padding-left: 12px;
}
.summary-source-button:last-child:ltr {
@@ -1169,8 +1212,13 @@ StTooltip StLabel {
padding-left: 12px;
}
+.summary-source {
+ padding-right: 4px;
+ padding-left: 4px;
+}
+
.source-title {
- font-size: 12px;
+ font-size: 9pt;
font-weight: bold;
padding-left: 4px;
}
@@ -1192,7 +1240,7 @@ StTooltip StLabel {
border-radius: 24px;
padding: 20px;
- font-size: 12px;
+ font-size: 9pt;
color: white;
}
@@ -1251,7 +1299,11 @@ StTooltip StLabel {
.ripple-box {
width: 52px;
height: 52px;
- background-image: url("corner-ripple.png");
+ background-image: url("corner-ripple-ltr.png");
+}
+
+.ripple-box:rtl {
+ background-image: url("corner-ripple-rtl.png");
}
.switcher-arrow {
@@ -1321,10 +1373,14 @@ StTooltip StLabel {
padding-top: 30px;
}
+.modal-dialog-button-box {
+ spacing: 21px;
+}
+
.modal-dialog-button {
border: 1px solid #8b8b8b;
border-radius: 18px;
- font-size: 14px;
+ font-size: 10.5pt;
margin-left: 10px;
margin-right: 10px;
@@ -1357,12 +1413,12 @@ StTooltip StLabel {
/* Run Dialog */
.run-dialog-label {
- font-size: 12px;
+ font-size: 9pt;
color: white;
}
.run-dialog-error-label {
- font-size: 12px;
+ font-size: 9pt;
color: white;
}
@@ -1372,9 +1428,9 @@ StTooltip StLabel {
}
.run-dialog-entry {
- font-size: 14px;
+ font-size: 10.5pt;
font-weight: bold;
- width: 320px;
+ width: 23em;
color: white;
}
@@ -1392,6 +1448,10 @@ StTooltip StLabel {
}
/* End Session Dialog */
+.end-session-dialog {
+ spacing: 42px;
+}
+
.end-session-dialog-subject {
font-size: 12pt;
font-weight: bold;
@@ -1410,13 +1470,11 @@ StTooltip StLabel {
font-size: 10pt;
color: white;
padding-left: 17px;
- padding-right: 40px;
- width: 16em;
+ width: 28em;
}
.end-session-dialog-description:rtl {
padding-right: 17px;
- padding-left: 40px;
}
.end-session-dialog-logout-icon {
@@ -1435,16 +1493,23 @@ StTooltip StLabel {
font-size: 10pt;
max-height: 200px;
padding-top: 42px;
- padding-bottom: 42px;
- padding-left: 17px;
+ padding-left: 49px;
padding-right: 32px;
}
.end-session-dialog-app-list:rtl {
- padding-right: 17px;
+ padding-right: 49px;
padding-left: 32px;
}
+.end-session-dialog-app-list-item {
+ color: #ccc;
+}
+
+.end-session-dialog-app-list-item:hover {
+ color: white;
+}
+
.end-session-dialog-app-list-item:ltr {
padding-right: 1em;
}
diff --git a/data/theme/source-button-border.svg b/data/theme/source-button-border.svg
new file mode 100644
index 000000000..6e5051ee9
--- /dev/null
+++ b/data/theme/source-button-border.svg
@@ -0,0 +1,74 @@
+
+
+
+
diff --git a/js/Makefile.am b/js/Makefile.am
index 2cb6be03c..a892d24b3 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -8,6 +8,7 @@ nobase_dist_js_DATA = \
misc/format.js \
misc/gnomeSession.js \
misc/history.js \
+ misc/modemManager.js \
misc/params.js \
misc/semantic.js \
misc/util.js \
@@ -51,6 +52,7 @@ nobase_dist_js_DATA = \
ui/statusMenu.js \
ui/status/accessibility.js \
ui/status/keyboard.js \
+ ui/status/network.js \
ui/status/power.js \
ui/status/volume.js \
ui/status/bluetooth.js \
diff --git a/js/misc/modemManager.js b/js/misc/modemManager.js
new file mode 100644
index 000000000..f33023805
--- /dev/null
+++ b/js/misc/modemManager.js
@@ -0,0 +1,225 @@
+// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
+
+const DBus = imports.dbus;
+const Lang = imports.lang;
+const Shell = imports.gi.Shell;
+const Signals = imports.signals;
+
+// The following are not the complete interfaces, just the methods we need
+// (or may need in the future)
+
+const ModemGsmNetworkInterface = {
+ name: 'org.freedesktop.ModemManager.Modem.Gsm.Network',
+ methods: [
+ { name: 'GetRegistrationInfo', inSignature: '', outSignature: 'uss' },
+ { name: 'GetSignalQuality', inSignature: '', outSignature: 'u' }
+ ],
+ properties: [
+ { name: 'AccessTechnology', signature: 'u', access: 'read' }
+ ],
+ signals: [
+ { name: 'SignalQuality', inSignature: 'u' },
+ { name: 'RegistrationInfo', inSignature: 'uss' }
+ ]
+};
+const ModemGsmNetworkProxy = DBus.makeProxyClass(ModemGsmNetworkInterface);
+
+const ModemCdmaInterface = {
+ name: 'org.freedesktop.ModemManager.Modem.Cdma',
+ methods: [
+ { name: 'GetSignalQuality', inSignature: '', outSignature: 'u' },
+ { name: 'GetServingSystem', inSignature: '', outSignature: 'usu' }
+ ],
+ signals: [
+ { name: 'SignalQuality', inSignature: 'u' }
+ ]
+};
+const ModemCdmaProxy = DBus.makeProxyClass(ModemCdmaInterface);
+
+let _providersTable;
+function _getProvidersTable() {
+ if (_providersTable)
+ return _providersTable;
+ let [providers, countryCodes] = Shell.mobile_providers_parse();
+ return _providersTable = providers;
+}
+
+function ModemGsm() {
+ this._init.apply(this, arguments);
+}
+
+ModemGsm.prototype = {
+ _init: function(path) {
+ this._proxy = new ModemGsmNetworkProxy(DBus.system, 'org.freedesktop.ModemManager', path);
+
+ this.signal_quality = 0;
+ this.operator_name = null;
+
+ // Code is duplicated because the function have different signatures
+ this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, quality) {
+ this.signal_quality = quality;
+ this.emit('notify::signal-quality');
+ }));
+ this._proxy.connect('RegistrationInfo', Lang.bind(this, function(proxy, status, code, name) {
+ this.operator_name = this._findOperatorName(name, code);
+ this.emit('notify::operator-name');
+ }));
+ this._proxy.GetRegistrationInfoRemote(Lang.bind(this, function(result, err) {
+ if (err) {
+ log(err);
+ return;
+ }
+
+ let [status, code, name] = result;
+ this.operator_name = this._findOperatorName(name, code);
+ this.emit('notify::operator-name');
+ }));
+ this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
+ if (err) {
+ // it will return an error if the device is not connected
+ this.signal_quality = 0;
+ } else {
+ let [quality] = result;
+ this.signal_quality = quality;
+ }
+ this.emit('notify::signal-quality');
+ }));
+ },
+
+ _findOperatorName: function(name, opCode) {
+ if (name.length != 0 && (name.length > 6 || name.length < 5)) {
+ // this looks like a valid name, i.e. not an MCCMNC (that some
+ // devices return when not yet connected
+ return name;
+ }
+ if (isNaN(parseInt(name))) {
+ // name is definitely not a MCCMNC, so it may be a name
+ // after all; return that
+ return name;
+ }
+
+ let needle;
+ if (name.length == 0 && opCode)
+ needle = opCode;
+ else if (name.length == 6 || name.length == 5)
+ needle = name;
+ else // nothing to search
+ return null;
+
+ return this._findProviderForMCCMNC(needle);
+ },
+
+ _findProviderForMCCMNC: function(needle) {
+ let table = _getProvidersTable();
+ let needlemcc = needle.substring(0, 3);
+ let needlemnc = needle.substring(3, needle.length);
+
+ let name2, name3;
+ for (let iter in table) {
+ let providers = table[iter];
+
+ // Search through each country's providers
+ for (let i = 0; i < providers.length; i++) {
+ let provider = providers[i];
+
+ // Search through MCC/MNC list
+ let list = provider.get_gsm_mcc_mnc();
+ for (let j = 0; j < list.length; j++) {
+ let mccmnc = list[j];
+
+ // Match both 2-digit and 3-digit MNC; prefer a
+ // 3-digit match if found, otherwise a 2-digit one.
+ if (mccmnc.mcc != needlemcc)
+ continue; // MCC was wrong
+
+ if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
+ name3 = provider.name;
+
+ if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
+ name2 = provider.name;
+
+ if (name2 && name3)
+ break;
+ }
+ }
+ }
+
+ return name3 || name2 || null;
+ }
+}
+Signals.addSignalMethods(ModemGsm.prototype);
+
+function ModemCdma() {
+ this._init.apply(this, arguments);
+}
+
+ModemCdma.prototype = {
+ _init: function(path) {
+ this._proxy = new ModemCdmaProxy(DBus.system, 'org.freedesktop.ModemManager', path);
+
+ this.signal_quality = 0;
+ this.operator_name = null;
+ this._proxy.connect('SignalQuality', Lang.bind(this, function(proxy, quality) {
+ this.signal_quality = quality;
+ this.emit('notify::signal-quality');
+
+ // receiving this signal means the device got activated
+ // and we can finally call GetServingSystem
+ if (this.operator_name == null)
+ this._refreshServingSystem();
+ }));
+ this._proxy.GetSignalQualityRemote(Lang.bind(this, function(result, err) {
+ if (err) {
+ // it will return an error if the device is not connected
+ this.signal_quality = 0;
+ } else {
+ let [quality] = result;
+ this.signal_quality = quality;
+ }
+ this.emit('notify::signal-quality');
+ }));
+ },
+
+ _refreshServingSystem: function() {
+ this._proxy.GetServingSystemRemote(Lang.bind(this, function(result, err) {
+ if (err) {
+ // it will return an error if the device is not connected
+ this.operator_name = null;
+ } else {
+ let [bandClass, band, id] = result;
+ if (name.length > 0)
+ this.operator_name = this._findProviderForSid(id);
+ else
+ this.operator_name = null;
+ }
+ this.emit('notify::operator-name');
+ }));
+ },
+
+ _findProviderForSid: function(sid) {
+ if (sid == 0)
+ return null;
+
+ let table = _getProvidersTable();
+
+ // Search through each country
+ for (let iter in table) {
+ let providers = table[iter];
+
+ // Search through each country's providers
+ for (let i = 0; i < providers.length; i++) {
+ let provider = providers[i];
+ let cdma_sid = provider.get_cdma_sid();
+
+ // Search through CDMA SID list
+ for (let j = 0; j < cdma_sid.length; j++) {
+ if (cdma_sid[j] == sid)
+ return provider.name;
+ }
+ }
+ }
+
+ return null;
+ }
+};
+Signals.addSignalMethods(ModemCdma.prototype);
diff --git a/js/misc/util.js b/js/misc/util.js
index e2ec2c164..e22811716 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -6,7 +6,6 @@ const GLib = imports.gi.GLib;
const Shell = imports.gi.Shell;
const Main = imports.ui.main;
-const MessageTray = imports.ui.messageTray;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
@@ -56,20 +55,6 @@ function spawnCommandLine(command_line) {
}
}
-// spawnDesktop:
-// @id: a desktop file ID
-//
-// Spawns the desktop file identified by @id using startup notification,
-// etc, handling any errors that occur when trying to find or start
-// the program.
-function spawnDesktop(id) {
- try {
- trySpawnDesktop(id);
- } catch (err) {
- _handleSpawnError(id, err);
- }
-}
-
// trySpawn:
// @argv: an argv array
//
@@ -117,41 +102,9 @@ function trySpawnCommandLine(command_line) {
trySpawn(argv);
}
-// trySpawnDesktop:
-// @id: a desktop file ID
-//
-// Spawns the desktop file identified by @id using startup notification.
-// On error, throws an exception.
-function trySpawnDesktop(id) {
- let app;
-
- // shell_app_system_load_from_desktop_file() will end up returning
- // a stupid error message if the desktop file doesn't exist, but
- // that's the only case it returns an error for, so we just
- // substitute our own error in instead
- try {
- app = Shell.AppSystem.get_default().load_from_desktop_file(id + '.desktop');
- } catch (err) {
- throw new Error(_("No such application"));
- }
-
- try {
- app.launch();
- } catch(err) {
- // see trySpawn
- err.message = err.message.replace(/.*\((.+)\)/, '$1');
- throw err;
- }
-}
-
function _handleSpawnError(command, err) {
let title = _("Execution of '%s' failed:").format(command);
-
- let source = new MessageTray.SystemNotificationSource();
- Main.messageTray.add(source);
- let notification = new MessageTray.Notification(source, title, err.message);
- notification.setTransient(true);
- source.notify(notification);
+ Main.notifyError(title, err.message);
}
// killall:
@@ -178,3 +131,83 @@ function killall(processName) {
logError(e, 'Failed to kill ' + processName);
}
}
+
+// This was ported from network-manager-applet
+// Copyright 2007 - 2011 Red Hat, Inc.
+// Author: Dan Williams
+
+const _IGNORED_WORDS = [
+ 'Semiconductor',
+ 'Components',
+ 'Corporation',
+ 'Communications',
+ 'Company',
+ 'Corp.',
+ 'Corp',
+ 'Co.',
+ 'Inc.',
+ 'Inc',
+ 'Incorporated',
+ 'Ltd.',
+ 'Limited.',
+ 'Intel?',
+ 'chipset',
+ 'adapter',
+ '[hex]',
+ 'NDIS',
+ 'Module'
+];
+
+const _IGNORED_PHRASES = [
+ 'Multiprotocol MAC/baseband processor',
+ 'Wireless LAN Controller',
+ 'Wireless LAN Adapter',
+ 'Wireless Adapter',
+ 'Network Connection',
+ 'Wireless Cardbus Adapter',
+ 'Wireless CardBus Adapter',
+ '54 Mbps Wireless PC Card',
+ 'Wireless PC Card',
+ 'Wireless PC',
+ 'PC Card with XJACK(r) Antenna',
+ 'Wireless cardbus',
+ 'Wireless LAN PC Card',
+ 'Technology Group Ltd.',
+ 'Communication S.p.A.',
+ 'Business Mobile Networks BV',
+ 'Mobile Broadband Minicard Composite Device',
+ 'Mobile Communications AB',
+ '(PC-Suite Mode)'
+];
+
+function fixupPCIDescription(desc) {
+ desc.replace(/[_,]/, ' ');
+
+ /* Attempt to shorten ID by ignoring certain phrases */
+ for (let i = 0; i < _IGNORED_PHRASES.length; i++) {
+ let item = _IGNORED_PHRASES[i];
+ let pos = desc.indexOf(item);
+ if (pos != -1) {
+ let before = desc.substring(0, pos);
+ let after = desc.substring(pos + item.length, desc.length);
+ desc = before + after;
+ }
+ }
+
+ /* Attmept to shorten ID by ignoring certain individual words */
+ let words = desc.split(' ');
+ let out = [ ];
+ for (let i = 0; i < words; i++) {
+ let item = words[i];
+
+ // skip empty items (that come out from consecutive spaces)
+ if (item.length == 0)
+ continue;
+
+ if (_IGNORED_WORDS.indexOf(item) == -1) {
+ out.push(item);
+ }
+ }
+
+ return out.join(' ');
+}
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index 46ab9a325..54a456706 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -376,7 +376,15 @@ AltTabPopup.prototype = {
this.destroy();
},
+ _popModal: function() {
+ if (this._haveModal) {
+ Main.popModal(this.actor);
+ this._haveModal = false;
+ }
+ },
+
destroy : function() {
+ this._popModal();
if (this.actor.visible) {
Tweener.addTween(this.actor,
{ opacity: 0,
@@ -392,8 +400,7 @@ AltTabPopup.prototype = {
},
_onDestroy : function() {
- if (this._haveModal)
- Main.popModal(this.actor);
+ this._popModal();
if (this._thumbnails)
this._destroyThumbnails();
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index ffd49fa07..2623a4607 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -86,10 +86,14 @@ AlphabeticalView.prototype = {
if (vfade)
offset = vfade.fade_offset;
- if (icon.y < value + offset)
- value = Math.max(0, icon.y - offset);
- else if (icon.y + icon.height > value + pageSize - offset)
- value = Math.min(upper, icon.y + icon.height + offset - pageSize);
+ // If this gets called as part of a right-click, the actor
+ // will be needs_allocation, and so "icon.y" would return 0
+ let box = icon.get_allocation_box();
+
+ if (box.y1 < value + offset)
+ value = Math.max(0, box.y1 - offset);
+ else if (box.y2 > value + pageSize - offset)
+ value = Math.min(upper, box.y2 + offset - pageSize);
else
return;
@@ -412,6 +416,10 @@ AppWellIcon.prototype = {
this._removeMenuTimeout();
Main.overview.beginItemDrag(this);
}));
+ this._draggable.connect('drag-cancelled', Lang.bind(this,
+ function () {
+ Main.overview.cancelledItemDrag(this);
+ }));
this._draggable.connect('drag-end', Lang.bind(this,
function () {
Main.overview.endItemDrag(this);
@@ -505,6 +513,8 @@ AppWellIcon.prototype = {
this._menuManager.addMenu(this._menu);
}
+ this.actor.set_hover(true);
+ this.actor.show_tooltip();
this._menu.popup();
return false;
@@ -568,6 +578,9 @@ AppIconMenu.prototype = {
PopupMenu.PopupMenu.prototype._init.call(this, source.actor, 0.5, side, 0);
+ // We want to keep the item hovered while the menu is up
+ this.blockSourceEvents = true;
+
this._source = source;
this.connect('activate', Lang.bind(this, this._onActivate));
diff --git a/js/ui/chrome.js b/js/ui/chrome.js
index addc9ac7d..27779fcf3 100644
--- a/js/ui/chrome.js
+++ b/js/ui/chrome.js
@@ -36,8 +36,8 @@ Chrome.prototype = {
this._trackedActors = [];
- global.gdk_screen.connect('monitors-changed',
- Lang.bind(this, this._monitorsChanged));
+ global.screen.connect('monitors-changed',
+ Lang.bind(this, this._monitorsChanged));
global.screen.connect('restacked',
Lang.bind(this, this._windowsRestacked));
@@ -335,6 +335,11 @@ Chrome.prototype = {
this._updateVisibility();
this._queueUpdateRegions();
}
+
+ // Figure out where the pointer is in case we lost track of
+ // it during a grab. (In particular, if a trayicon popup menu
+ // is dismissed, see if we need to close the message tray.)
+ global.sync_pointer();
},
_updateRegions: function() {
diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js
index ff926a476..65b0a8046 100644
--- a/js/ui/ctrlAltTab.js
+++ b/js/ui/ctrlAltTab.js
@@ -281,6 +281,7 @@ CtrlAltTabPopup.prototype = {
},
_onDestroy : function() {
+ this._popModal();
if (this._keyPressEventId)
this.actor.disconnect(this._keyPressEventId);
if (this._keyReleaseEventId)
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 6a39edc48..28e4bdbe0 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -283,20 +283,37 @@ Dash.prototype = {
Lang.bind(this, this._onDragBegin));
Main.overview.connect('item-drag-end',
Lang.bind(this, this._onDragEnd));
+ Main.overview.connect('item-drag-cancelled',
+ Lang.bind(this, this._onDragCancelled));
Main.overview.connect('window-drag-begin',
Lang.bind(this, this._onDragBegin));
+ Main.overview.connect('window-drag-cancelled',
+ Lang.bind(this, this._onDragCancelled));
Main.overview.connect('window-drag-end',
Lang.bind(this, this._onDragEnd));
},
_onDragBegin: function() {
+ this._dragCancelled = false;
this._dragMonitor = {
dragMotion: Lang.bind(this, this._onDragMotion)
};
DND.addDragMonitor(this._dragMonitor);
},
+ _onDragCancelled: function() {
+ this._dragCancelled = true;
+ this._endDrag();
+ },
+
_onDragEnd: function() {
+ if (this._dragCancelled)
+ return;
+
+ this._endDrag();
+ },
+
+ _endDrag: function() {
this._clearDragPlaceholder();
if (this._favRemoveTarget) {
this._favRemoveTarget.actor.hide();
@@ -372,6 +389,8 @@ Dash.prototype = {
Lang.bind(this, function() {
display.actor.opacity = 255;
}));
+ display.actor.set_tooltip_text(app.get_name());
+
let item = new DashItemContainer();
item.setChild(display.actor);
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 8d35bbcef..c0c8cea4e 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -200,13 +200,13 @@ DateMenuButton.prototype = {
_onPreferencesActivate: function() {
this.menu.close();
- Util.spawnDesktop('gnome-datetime-panel');
+ let app = Shell.AppSystem.get_default().get_app('gnome-datetime-panel.desktop');
+ app.activate(-1);
},
_onOpenCalendarActivate: function() {
this.menu.close();
- // TODO: pass '-c calendar' (to force the calendar at startup)
// TODO: pass the selected day
- Util.spawnDesktop('evolution');
- },
+ Util.spawn(['evolution', '-c', 'calendar']);
+ }
};
diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index 46d32fdd3..46440d6ff 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -507,6 +507,9 @@ _Draggable.prototype = {
if (!this._buttonDown)
this._dragComplete();
this.emit('drag-end', eventTime, false);
+ if (!this._dragOrigParent)
+ this._dragActor.destroy();
+
return;
}
diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
index 08c5705c9..c019e2aaa 100644
--- a/js/ui/endSessionDialog.js
+++ b/js/ui/endSessionDialog.js
@@ -66,16 +66,20 @@ const logoutDialogContent = {
uninhibitedDescriptionWithUser: _("%s will be logged out automatically in %d seconds."),
uninhibitedDescription: _("You will be logged out automatically in %d seconds."),
endDescription: _("Logging out of the system."),
- confirmButtonText: _("Log Out"),
+ confirmButtons: [{ signal: 'ConfirmedLogout',
+ label: _("Log Out") }],
iconStyleClass: 'end-session-dialog-logout-icon'
};
const shutdownDialogContent = {
- subject: _("Shut Down"),
- inhibitedDescription: _("Click Shut Down to quit these applications and shut down the system."),
- uninhibitedDescription: _("The system will shut down automatically in %d seconds."),
- endDescription: _("Shutting down the system."),
- confirmButtonText: _("Shut Down"),
+ subject: _("Power Off"),
+ inhibitedDescription: _("Click Power Off to quit these applications and power off the system."),
+ uninhibitedDescription: _("The system will power off automatically in %d seconds."),
+ endDescription: _("Powering off the system."),
+ confirmButtons: [{ signal: 'ConfirmedReboot',
+ label: _("Restart") },
+ { signal: 'ConfirmedShutdown',
+ label: _("Power Off") }],
iconName: 'system-shutdown',
iconStyleClass: 'end-session-dialog-shutdown-icon'
};
@@ -85,7 +89,8 @@ const restartDialogContent = {
inhibitedDescription: _("Click Restart to quit these applications and restart the system."),
uninhibitedDescription: _("The system will restart automatically in %d seconds."),
endDescription: _("Restarting the system."),
- confirmButtonText: _("Restart"),
+ confirmButtons: [{ signal: 'ConfirmedReboot',
+ label: _("Restart") }],
iconName: 'system-shutdown',
iconStyleClass: 'end-session-dialog-shutdown-icon'
};
@@ -233,7 +238,7 @@ EndSessionDialog.prototype = {
__proto__: ModalDialog.ModalDialog.prototype,
_init: function() {
- ModalDialog.ModalDialog.prototype._init.call(this);
+ ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'end-session-dialog' });
this._user = Gdm.UserManager.ref_default().get_user(GLib.get_user_name());
@@ -288,12 +293,26 @@ EndSessionDialog.prototype = {
this.contentLayout.add(scrollView,
{ x_fill: true,
y_fill: true });
+ scrollView.hide();
+
this._applicationList = new St.BoxLayout({ vertical: true });
scrollView.add_actor(this._applicationList,
{ x_fill: true,
y_fill: true,
x_align: St.Align.START,
y_align: St.Align.MIDDLE });
+
+ this._applicationList.connect('actor-added',
+ Lang.bind(this, function() {
+ if (this._applicationList.get_children().length == 1)
+ scrollView.show();
+ }));
+
+ this._applicationList.connect('actor-removed',
+ Lang.bind(this, function() {
+ if (this._applicationList.get_children().length == 0)
+ scrollView.hide();
+ }));
},
_onDestroy: function() {
@@ -392,18 +411,27 @@ EndSessionDialog.prototype = {
return;
let dialogContent = DialogContent[this._type];
- let confirmButtonText = _("Confirm");
+ let buttons = [{ action: Lang.bind(this, this.cancel),
+ label: _("Cancel"),
+ key: Clutter.Escape }];
- if (dialogContent.confirmButtonText)
- confirmButtonText = dialogContent.confirmButtonText;
+ for (let i = 0; i < dialogContent.confirmButtons.length; i++) {
+ let signal = dialogContent.confirmButtons[i].signal;
+ let label = dialogContent.confirmButtons[i].label;
+ buttons.push({ action: Lang.bind(this, function() {
+ this._confirm(signal);
+ }),
+ label: label });
+ }
- this.setButtons([{ label: _("Cancel"),
- action: Lang.bind(this, this.cancel),
- key: Clutter.Escape
- },
- { label: confirmButtonText,
- action: Lang.bind(this, this._confirm)
- }]);
+ this.setButtons(buttons);
+ },
+
+ close: function() {
+ ModalDialog.ModalDialog.prototype.close.call(this);
+ DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
+ 'org.gnome.SessionManager.EndSessionDialog',
+ 'Closed', '', []);
},
cancel: function() {
@@ -414,12 +442,12 @@ EndSessionDialog.prototype = {
this.close(global.get_current_time());
},
- _confirm: function() {
+ _confirm: function(signal) {
this._fadeOutDialog();
this._stopTimer();
DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog',
'org.gnome.SessionManager.EndSessionDialog',
- 'Confirmed', '', []);
+ signal, '', []);
},
_onOpened: function() {
@@ -434,7 +462,11 @@ EndSessionDialog.prototype = {
time: this._secondsLeft,
transition: 'linear',
onUpdate: Lang.bind(this, this._updateContent),
- onComplete: Lang.bind(this, this._confirm),
+ onComplete: Lang.bind(this, function() {
+ let dialogContent = DialogContent[this._type];
+ let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1];
+ this._confirm(button.signal);
+ }),
});
},
diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js
index 24556e233..c6deb1904 100644
--- a/js/ui/iconGrid.js
+++ b/js/ui/iconGrid.js
@@ -281,8 +281,11 @@ IconGrid.prototype = {
}
},
+ childrenInRow: function(rowWidth) {
+ return this._computeLayout(rowWidth)[0];
+ },
+
_computeLayout: function (forWidth) {
- let children = this._grid.get_children();
let nColumns = 0;
let usedWidth = 0;
while ((this._colLimit == null || nColumns < this._colLimit) &&
diff --git a/js/ui/main.js b/js/ui/main.js
index 24dab3193..603f48522 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -86,6 +86,9 @@ function start() {
global.logError = _logError;
global.log = _logDebug;
+ // Chain up async errors reported from C
+ global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
+
Gio.DesktopAppInfo.set_desktop_env('GNOME');
shellDBusService = new ShellDBus.GnomeShell();
@@ -133,6 +136,7 @@ function start() {
// Set up stage hierarchy to group all UI actors under one container.
uiGroup = new Clutter.Group();
+ St.set_ui_root(global.stage, uiGroup);
global.window_group.reparent(uiGroup);
global.overlay_group.reparent(uiGroup);
global.stage.add_actor(uiGroup);
@@ -189,7 +193,7 @@ function start() {
// Attempt to become a PolicyKit authentication agent
PolkitAuthenticationAgent.init()
- global.gdk_screen.connect('monitors-changed', _relayout);
+ global.screen.connect('monitors-changed', _relayout);
ExtensionSystem.init();
ExtensionSystem.loadExtensions();
@@ -216,7 +220,11 @@ function start() {
}
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
- Mainloop.idle_add(_nWorkspacesChanged);
+
+ global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
+ global.screen.connect('window-left-monitor', _windowLeftMonitor);
+
+ _nWorkspacesChanged();
}
let _workspaces = [];
@@ -303,6 +311,20 @@ function _windowRemoved(workspace, window) {
});
}
+function _windowLeftMonitor(metaScreen, monitorIndex, metaWin) {
+ // If the window left the primary monitor, that
+ // might make that workspace empty
+ if (monitorIndex == global.get_primary_monitor_index())
+ _queueCheckWorkspaces();
+}
+
+function _windowEnteredMonitor(metaScreen, monitorIndex, metaWin) {
+ // If the window entered the primary monitor, that
+ // might make that workspace non-empty
+ if (monitorIndex == global.get_primary_monitor_index())
+ _queueCheckWorkspaces();
+}
+
function _queueCheckWorkspaces() {
if (_checkWorkspacesId == 0)
_checkWorkspacesId = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, _checkWorkspaces);
@@ -395,6 +417,27 @@ function loadTheme() {
themeContext.set_theme (theme);
}
+/**
+ * notifyError:
+ * @msg: An error message
+ * @details: Additional information
+ *
+ * See shell_global_notify_problem().
+ */
+function notifyError(msg, details) {
+ // Also print to stderr so it's logged somewhere
+ if (details)
+ log("error: " + msg + ": " + details);
+ else
+ log("error: " + msg)
+
+ let source = new MessageTray.SystemNotificationSource();
+ messageTray.add(source);
+ let notification = new MessageTray.Notification(source, msg, details);
+ notification.setTransient(true);
+ source.notify(notification);
+}
+
/**
* _log:
* @category: string message type ('info', 'error')
@@ -438,28 +481,67 @@ function _getAndClearErrorStack() {
function _relayout() {
let monitors = global.get_monitors();
- if (monitors.length != hotCorners.length) {
- // destroy old corners
- for (let i = 0; i < hotCorners.length; i++)
- hotCorners[i].destroy();
- hotCorners = [];
- for (let i = 0; i < monitors.length; i++)
- hotCorners[i] = new Panel.HotCorner();
- }
+ // destroy old corners
+ for (let i = 0; i < hotCorners.length; i++)
+ hotCorners[i].destroy();
+ hotCorners = [];
let primary = global.get_primary_monitor();
for (let i = 0; i < monitors.length; i++) {
let monitor = monitors[i];
- let corner = hotCorners[i];
let isPrimary = (monitor.x == primary.x &&
monitor.y == primary.y &&
monitor.width == primary.width &&
monitor.height == primary.height);
+
+ let cornerX = monitor.x;
+ let cornerY = monitor.y;
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
- corner.actor.set_position(monitor.x + monitor.width, monitor.y);
+ cornerX += monitor.width;
+
+
+ let haveTopLeftCorner = true;
+
+ /* Check if we have a top left (right for RTL) corner.
+ * I.e. if there is no monitor directly above or to the left(right) */
+ let besideX;
+ if (St.Widget.get_default_direction() == St.TextDirection.RTL)
+ besideX = monitor.x + 1;
else
- corner.actor.set_position(monitor.x, monitor.y);
+ besideX = cornerX - 1;
+ let besideY = cornerY;
+ let aboveX = cornerX;
+ let aboveY = cornerY - 1;
+
+ for (let j = 0; j < monitors.length; j++) {
+ if (i == j)
+ continue;
+ let otherMonitor = monitors[j];
+ if (besideX >= otherMonitor.x &&
+ besideX < otherMonitor.x + otherMonitor.width &&
+ besideY >= otherMonitor.y &&
+ besideY < otherMonitor.y + otherMonitor.height) {
+ haveTopLeftCorner = false;
+ break;
+ }
+ if (aboveX >= otherMonitor.x &&
+ aboveX < otherMonitor.x + otherMonitor.width &&
+ aboveY >= otherMonitor.y &&
+ aboveY < otherMonitor.y + otherMonitor.height) {
+ haveTopLeftCorner = false;
+ break;
+ }
+ }
+
+ /* We only want hot corners where there is a natural top-left
+ * corner, and on the primary monitor */
+ if (!isPrimary && !haveTopLeftCorner)
+ continue;
+
+ let corner = new Panel.HotCorner();
+ hotCorners.push(corner);
+ corner.actor.set_position(cornerX, cornerY);
if (isPrimary)
panel.setHotCorner(corner);
}
diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js
index 4f2512238..f95180167 100644
--- a/js/ui/messageTray.js
+++ b/js/ui/messageTray.js
@@ -406,24 +406,23 @@ Notification.prototype = {
this._bannerBodyMarkup = false;
this._titleFitsInBannerMode = true;
this._spacing = 0;
+ this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
source.connect('destroy', Lang.bind(this,
- // Avoid passing 'source' as an argument to this.destroy()
- function () {
- this.destroy();
+ function (source, reason) {
+ this.destroy(reason);
}));
- this.actor = new St.Table({ name: 'notification',
- reactive: true });
- this.actor.connect('style-changed', Lang.bind(this, this._styleChanged));
- this.actor.connect('button-release-event', Lang.bind(this,
- function (actor, event) {
- if (!this._actionArea ||
- !this._actionArea.contains(event.get_source()))
- this._onClicked();
- }));
+ this.actor = new St.Button();
+ this.actor._delegate = this;
+ this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
+ this._table = new St.Table({ name: 'notification',
+ reactive: true });
+ this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
+ this.actor.set_child(this._table);
+
this._buttonFocusManager = St.FocusManager.get_for_stage(global.stage);
// The first line should have the title, followed by the
@@ -435,10 +434,10 @@ Notification.prototype = {
this._bannerBox.connect('get-preferred-width', Lang.bind(this, this._bannerBoxGetPreferredWidth));
this._bannerBox.connect('get-preferred-height', Lang.bind(this, this._bannerBoxGetPreferredHeight));
this._bannerBox.connect('allocate', Lang.bind(this, this._bannerBoxAllocate));
- this.actor.add(this._bannerBox, { row: 0,
- col: 1,
- y_expand: false,
- y_fill: false });
+ this._table.add(this._bannerBox, { row: 0,
+ col: 1,
+ y_expand: false,
+ y_fill: false });
this._titleLabel = new St.Label();
this._bannerBox.add_actor(this._titleLabel);
@@ -468,31 +467,39 @@ Notification.prototype = {
this._customContent = params.customContent;
+ let oldFocus = global.stage.key_focus;
+
if (this._icon)
this._icon.destroy();
// We always clear the content area if we don't have custom
// content because it might contain the @banner that didn't
// fit in the banner mode.
if (this._scrollArea && (!this._customContent || params.clear)) {
+ if (oldFocus && this._scrollArea.contains(oldFocus))
+ this.actor.grab_key_focus();
+
this._scrollArea.destroy();
this._scrollArea = null;
this._contentArea = null;
}
if (this._actionArea && params.clear) {
+ if (oldFocus && this._actionArea.contains(oldFocus))
+ this.actor.grab_key_focus();
+
this._actionArea.destroy();
this._actionArea = null;
this._buttonBox = null;
}
if (!this._scrollArea && !this._actionArea)
- this.actor.remove_style_class_name('multi-line-notification');
+ this._table.remove_style_class_name('multi-line-notification');
this._icon = params.icon || this.source.createNotificationIcon();
- this.actor.add(this._icon, { row: 0,
- col: 0,
- x_expand: false,
- y_expand: false,
- y_fill: false,
- y_align: St.Align.START });
+ this._table.add(this._icon, { row: 0,
+ col: 0,
+ x_expand: false,
+ y_expand: false,
+ y_fill: false,
+ y_align: St.Align.START });
title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : '';
this._titleLabel.clutter_text.set_markup('' + title + '');
@@ -518,13 +525,23 @@ Notification.prototype = {
this._updated();
},
+ setIconVisible: function(visible) {
+ this._icon.visible = visible;
+ },
+
+ enableScrolling: function(enableScrolling) {
+ this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
+ if (this._scrollArea)
+ this._scrollArea.vscrollbar_policy = this._scrollPolicy;
+ },
+
_createScrollArea: function() {
- this.actor.add_style_class_name('multi-line-notification');
+ this._table.add_style_class_name('multi-line-notification');
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
- vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
+ vscrollbar_policy: this._scrollPolicy,
hscrollbar_policy: Gtk.PolicyType.NEVER,
vfade: true });
- this.actor.add(this._scrollArea, { row: 1, col: 1 });
+ this._table.add(this._scrollArea, { row: 1, col: 1 });
this._contentArea = new St.BoxLayout({ name: 'notification-body',
vertical: true });
this._scrollArea.add_actor(this._contentArea);
@@ -603,8 +620,8 @@ Notification.prototype = {
props.row = 2;
props.col = 1;
- this.actor.add_style_class_name('multi-line-notification');
- this.actor.add(this._actionArea, props);
+ this._table.add_style_class_name('multi-line-notification');
+ this._table.add(this._actionArea, props);
this._updated();
},
@@ -665,7 +682,7 @@ Notification.prototype = {
},
_styleChanged: function() {
- this._spacing = this.actor.get_theme_node().get_length('spacing-columns');
+ this._spacing = this._table.get_theme_node().get_length('spacing-columns');
},
_bannerBoxGetPreferredWidth: function(actor, forHeight, alloc) {
@@ -710,7 +727,7 @@ Notification.prototype = {
// Make _bannerLabel visible if the entire notification
// fits on one line, or if the notification is currently
// unexpanded and only showing one line anyway.
- if (!this.expanded || (bannerFits && this.actor.row_count == 1))
+ if (!this.expanded || (bannerFits && this._table.row_count == 1))
this._bannerLabel.opacity = 255;
}
@@ -722,7 +739,7 @@ Notification.prototype = {
function() {
this._addBannerBody();
if (!this._titleFitsInBannerMode)
- this.actor.add_style_class_name('multi-line-notification');
+ this._table.add_style_class_name('multi-line-notification');
this._updated();
return false;
}));
@@ -743,7 +760,7 @@ Notification.prototype = {
this._titleLabel.clutter_text.line_wrap = true;
this._titleLabel.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
this._titleLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
- } else if (this.actor.row_count > 1 && this._bannerLabel.opacity != 0) {
+ } else if (this._table.row_count > 1 && this._bannerLabel.opacity != 0) {
// We always hide the banner if the notification has additional content.
//
// We don't need to wrap the banner that doesn't fit the way we wrap the
@@ -808,6 +825,7 @@ Notification.prototype = {
destroy: function(reason) {
this._destroyedReason = reason;
this.actor.destroy();
+ this.actor._delegate = null;
}
};
Signals.addSignalMethods(Notification.prototype);
@@ -822,9 +840,13 @@ Source.prototype = {
_init: function(title) {
this.title = title;
this._iconBin = new St.Bin({ width: this.ICON_SIZE,
- height: this.ICON_SIZE });
+ height: this.ICON_SIZE,
+ x_fill: true,
+ y_fill: true });
this.isTransient = false;
this.isChat = false;
+
+ this.notifications = [];
},
setTransient: function(isTransient) {
@@ -844,30 +866,40 @@ Source.prototype = {
return this._iconBin;
},
- notify: function(notification) {
- if (this.notification) {
- this.notification.disconnect(this._notificationClickedId);
- this.notification.disconnect(this._notificationDestroyedId);
+ pushNotification: function(notification) {
+ if (this.notifications.indexOf(notification) < 0) {
+ this.notifications.push(notification);
+ this.emit('notification-added', notification);
}
- this.notification = notification;
-
- this._notificationClickedId = notification.connect('clicked', Lang.bind(this, this.open));
- this._notificationDestroyedId = notification.connect('destroy', Lang.bind(this,
+ notification.connect('clicked', Lang.bind(this, this.open));
+ notification.connect('destroy', Lang.bind(this,
function () {
- if (this.notification == notification) {
- this.notification = null;
- this._notificationDestroyedId = 0;
- this._notificationClickedId = 0;
- this._notificationRemoved();
- }
- }));
+ let index = this.notifications.indexOf(notification);
+ if (index < 0)
+ return;
+ this.notifications.splice(index, 1);
+ if (this.notifications.length == 0)
+ this._lastNotificationRemoved();
+ }));
+ },
+
+ notify: function(notification) {
+ this.pushNotification(notification);
this.emit('notify', notification);
},
- destroy: function() {
- this.emit('destroy');
+ destroy: function(reason) {
+ this.emit('destroy', reason);
+ },
+
+ // A subclass can redefine this to "steal" clicks from the
+ // summaryitem; Use Clutter.get_current_event() to get the
+ // details, return true to prevent the default handling from
+ // ocurring.
+ handleSummaryClick: function() {
+ return false;
},
//// Protected methods ////
@@ -883,8 +915,14 @@ Source.prototype = {
open: function(notification) {
},
+ destroyNonResidentNotifications: function() {
+ for (let i = this.notifications.length - 1; i >= 0; i--)
+ if (!this.notifications[i].resident)
+ this.notifications[i].destroy();
+ },
+
// Default implementation is to destroy this source, but subclasses can override
- _notificationRemoved: function() {
+ _lastNotificationRemoved: function() {
this.destroy();
}
};
@@ -897,8 +935,12 @@ function SummaryItem(source) {
SummaryItem.prototype = {
_init: function(source) {
this.source = source;
+ this.source.connect('notification-added', Lang.bind(this, this._notificationAddedToSource));
+
this.actor = new St.Button({ style_class: 'summary-source-button',
+ y_fill: true,
reactive: true,
+ button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO | St.ButtonMask.THREE,
track_hover: true });
this._sourceBox = new St.BoxLayout({ style_class: 'summary-source' });
@@ -913,9 +955,30 @@ SummaryItem.prototype = {
this._sourceTitleBin.child = this._sourceTitle;
this._sourceTitleBin.width = 0;
- this._sourceBox.add_actor(this._sourceIcon);
- this._sourceBox.add_actor(this._sourceTitleBin, { expand: true });
+ this._sourceBox.add(this._sourceIcon, { y_fill: false });
+ this._sourceBox.add(this._sourceTitleBin, { expand: true, y_fill: false });
this.actor.child = this._sourceBox;
+
+ this.notificationStackView = new St.ScrollView({ name: source.isChat ? '' : 'summary-notification-stack-scrollview',
+ vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
+ hscrollbar_policy: Gtk.PolicyType.NEVER,
+ vfade: true });
+ this.notificationStack = new St.BoxLayout({ name: 'summary-notification-stack',
+ vertical: true });
+ this.notificationStackView.add_actor(this.notificationStack);
+ this._notificationExpandedIds = [];
+ this._notificationDoneDisplayingIds = [];
+ this._notificationDestroyedIds = [];
+
+ this._oldMaxScrollAdjustment = 0;
+
+ this.notificationStackView.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
+ let currentValue = adjustment.value + adjustment.page_size;
+ if (currentValue == this._oldMaxScrollAdjustment)
+ this.scrollTo(St.Side.BOTTOM);
+ this._oldMaxScrollAdjustment = adjustment.upper;
+ }));
+
this.rightClickMenu = new St.BoxLayout({ name: 'summary-right-click-menu',
vertical: true });
@@ -924,14 +987,14 @@ SummaryItem.prototype = {
item = new PopupMenu.PopupMenuItem(_("Open"));
item.connect('activate', Lang.bind(this, function() {
source.open();
- this.emit('right-click-menu-done-displaying');
+ this.emit('done-displaying-content');
}));
this.rightClickMenu.add(item.actor);
item = new PopupMenu.PopupMenuItem(_("Remove"));
item.connect('activate', Lang.bind(this, function() {
source.destroy();
- this.emit('right-click-menu-done-displaying');
+ this.emit('done-displaying-content');
}));
this.rightClickMenu.add(item.actor);
@@ -961,6 +1024,87 @@ SummaryItem.prototype = {
setEllipsization: function(mode) {
this._sourceTitle.clutter_text.ellipsize = mode;
+ },
+
+ prepareNotificationStackForShowing: function() {
+ if (this.notificationStack.get_children().length > 0)
+ return;
+
+ for (let i = 0; i < this.source.notifications.length; i++) {
+ this._appendNotificationToStack(this.source.notifications[i]);
+ }
+ },
+
+ doneShowingNotificationStack: function() {
+ let notificationActors = this.notificationStack.get_children();
+ for (let i = 0; i < notificationActors.length; i++) {
+ notificationActors[i]._delegate.collapseCompleted();
+ notificationActors[i]._delegate.disconnect(this._notificationExpandedIds[i]);
+ notificationActors[i]._delegate.disconnect(this._notificationDoneDisplayingIds[i]);
+ notificationActors[i]._delegate.disconnect(this._notificationDestroyedIds[i]);
+ this.notificationStack.remove_actor(notificationActors[i]);
+ notificationActors[i]._delegate.setIconVisible(true);
+ notificationActors[i]._delegate.enableScrolling(true);
+ }
+ this._notificationExpandedIds = [];
+ this._notificationDoneDisplayingIds = [];
+ this._notificationDestroyedIds = [];
+ },
+
+ _notificationAddedToSource: function(source, notification) {
+ if (this.notificationStack.mapped)
+ this._appendNotificationToStack(notification);
+ },
+
+ _appendNotificationToStack: function(notification) {
+ let notificationExpandedId = notification.connect('expanded', Lang.bind(this, this._contentUpdated));
+ this._notificationExpandedIds.push(notificationExpandedId);
+ let notificationDoneDisplayingId = notification.connect('done-displaying', Lang.bind(this, this._notificationDoneDisplaying));
+ this._notificationDoneDisplayingIds.push(notificationDoneDisplayingId);
+ let notificationDestroyedId = notification.connect('destroy', Lang.bind(this, this._notificationDestroyed));
+ this._notificationDestroyedIds.push(notificationDestroyedId);
+ if (!this.source.isChat)
+ notification.enableScrolling(false);
+ if (this.notificationStack.get_children().length > 0)
+ notification.setIconVisible(false);
+ this.notificationStack.add(notification.actor);
+ notification.expand(false);
+ },
+
+ // scrollTo:
+ // @side: St.Side.TOP or St.Side.BOTTOM
+ //
+ // Scrolls the notifiction stack to the indicated edge
+ scrollTo: function(side) {
+ let adjustment = this.notificationStackView.vscroll.adjustment;
+ if (side == St.Side.TOP)
+ adjustment.value = adjustment.lower;
+ else if (side == St.Side.BOTTOM)
+ adjustment.value = adjustment.upper;
+ },
+
+ _contentUpdated: function() {
+ this.emit('content-updated');
+ },
+
+ _notificationDoneDisplaying: function() {
+ this.emit('done-displaying-content');
+ },
+
+ _notificationDestroyed: function(notification) {
+ let index = this.notificationStack.get_children().indexOf(notification.actor);
+ if (index >= 0) {
+ notification.disconnect(this._notificationExpandedIds[index]);
+ this._notificationExpandedIds.splice(index, 1);
+ notification.disconnect(this._notificationDoneDisplayingIds[index]);
+ this._notificationDoneDisplayingIds.splice(index, 1);
+ notification.disconnect(this._notificationDestroyedIds[index]);
+ this._notificationDestroyedIds.splice(index, 1);
+ this.notificationStack.remove_actor(notification.actor);
+ this._contentUpdated();
+ }
+ if (this.notificationStack.get_children().length > 0)
+ this.notificationStack.get_children()[0]._delegate.setIconVisible(true);
}
};
Signals.addSignalMethods(SummaryItem.prototype);
@@ -1009,14 +1153,15 @@ MessageTray.prototype = {
this._summaryBoxPointer.actor.lower_bottom();
this._summaryBoxPointer.actor.hide();
- this._summaryNotification = null;
- this._summaryNotificationClickedId = 0;
- this._summaryRightClickMenuClickedId = 0;
+ this._summaryBoxPointerItem = null;
+ this._summaryBoxPointerContentUpdatedId = 0;
+ this._summaryBoxPointerDoneDisplayingId = 0;
this._clickedSummaryItem = null;
this._clickedSummaryItemMouseButton = -1;
this._clickedSummaryItemAllocationChangedId = 0;
this._expandedSummaryItem = null;
this._summaryItemTitleWidth = 0;
+ this._pointerBarrier = 0;
// To simplify the summary item animation code, we pretend
// that there's an invisible SummaryItem to the left of the
@@ -1051,18 +1196,17 @@ MessageTray.prototype = {
this._notificationTimeoutId = 0;
this._notificationExpandedId = 0;
this._summaryBoxPointerState = State.HIDDEN;
- this._summaryNotificationTimeoutId = 0;
- this._summaryNotificationExpandedId = 0;
+ this._summaryBoxPointerTimeoutId = 0;
this._overviewVisible = Main.overview.visible;
this._notificationRemoved = false;
- this._reNotifyWithSummaryNotificationAfterHide = false;
+ this._reNotifyAfterHideNotification = null;
Main.chrome.addActor(this.actor, { affectsStruts: false,
visibleInOverview: true });
Main.chrome.trackActor(this._notificationBin);
Main.chrome.trackActor(this._summaryBoxPointer.actor);
- global.gdk_screen.connect('monitors-changed', Lang.bind(this, this._setSizePosition));
+ global.screen.connect('monitors-changed', Lang.bind(this, this._setSizePosition));
this._setSizePosition();
@@ -1106,6 +1250,15 @@ MessageTray.prototype = {
this._notificationBin.width = primary.width;
this._summaryBin.x = 0;
this._summaryBin.width = primary.width;
+
+ if (this._pointerBarrier)
+ global.destroy_pointer_barrier(this._pointerBarrier);
+ this._pointerBarrier =
+ global.create_pointer_barrier(primary.x + primary.width, primary.y + primary.height - this.actor.height,
+ primary.x + primary.width, primary.y + primary.height,
+ 4 /* BarrierNegativeX */);
+
+
},
contains: function(source) {
@@ -1161,9 +1314,9 @@ MessageTray.prototype = {
this._onSummaryItemHoverChanged(summaryItem);
}));
- summaryItem.actor.connect('button-press-event', Lang.bind(this,
- function (actor, event) {
- this._onSummaryItemClicked(summaryItem, event);
+ summaryItem.actor.connect('clicked', Lang.bind(this,
+ function (actor, button) {
+ this._onSummaryItemClicked(summaryItem, button);
}));
source.connect('destroy', Lang.bind(this, this._onSourceDestroy));
@@ -1227,13 +1380,6 @@ MessageTray.prototype = {
if (needUpdate);
this._updateState();
-
- // remove all notifications with this source from the queue
- let newNotificationQueue = [];
- for (let i = this._notificationQueue.length - 1; i >= 0; i--) {
- if (this._notificationQueue[i].source == source)
- this._notificationQueue[i].destroy();
- }
},
_onNotificationDestroy: function(notification) {
@@ -1262,14 +1408,18 @@ MessageTray.prototype = {
},
_onNotify: function(source, notification) {
- if (notification == this._summaryNotification) {
- if (!this._summaryNotificationExpandedId)
- // We must be in the process of hiding the summary notification.
- // If the summary notification is updated while it is being
- // hidden, we show the update as a new notification. However,
- // we must first wait till the hide is complete and the
- // notification actor is not part of the stage.
- this._reNotifyWithSummaryNotificationAfterHide = true;
+ if (this._summaryBoxPointerItem && this._summaryBoxPointerItem.source == source) {
+ if (this._summaryBoxPointerState == State.HIDING)
+ // We are in the process of hiding the summary box pointer.
+ // If there is an update for one of the notifications or
+ // a new notification to be added to the notification stack
+ // while it is in the process of being hidden, we show it as
+ // a new notification. However, we first wait till the hide
+ // is complete. This is especially important if one of the
+ // notifications in the stack was updated because we will
+ // need to be able to re-parent its actor to a different
+ // part of the stage.
+ this._reNotifyAfterHideNotification = notification;
return;
}
@@ -1308,12 +1458,18 @@ MessageTray.prototype = {
// Turn off ellipsization for the previously expanded item that is
// collapsing and for the item that is expanding because it looks
// better that way.
- if (this._expandedSummaryItem)
+ if (this._expandedSummaryItem) {
+ // Ideally, we would remove 'expanded' pseudo class when the item
+ // is done collapsing, but we don't track when that happens.
+ this._expandedSummaryItem.actor.remove_style_pseudo_class('expanded');
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
+ }
this._expandedSummaryItem = summaryItem;
- if (this._expandedSummaryItem)
+ if (this._expandedSummaryItem) {
+ this._expandedSummaryItem.actor.add_style_pseudo_class('expanded');
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.NONE);
+ }
// We tween on a "_expandedSummaryItemTitleWidth" pseudo-property
// that represents the current title width of the
@@ -1335,6 +1491,8 @@ MessageTray.prototype = {
},
set _expandedSummaryItemTitleWidth(expansion) {
+ expansion = Math.round(expansion);
+
// Expand the expanding item to its new width
if (this._expandedSummaryItem)
this._expandedSummaryItem.setTitleWidth(expansion);
@@ -1365,11 +1523,32 @@ MessageTray.prototype = {
if (this._summaryItems[i] == this._expandedSummaryItem)
continue;
- let width = this._summaryItems[i].getTitleWidth();
- this._summaryItems[i].setTitleWidth(width * shrinkage);
+ let oldWidth = this._summaryItems[i].getTitleWidth();
+ let newWidth = Math.floor(oldWidth * shrinkage);
+ excess -= newWidth;
+ this._summaryItems[i].setTitleWidth(newWidth);
+ }
+ if (this._expandedSummaryItem) {
+ let oldWidth = this._imaginarySummaryItemTitleWidth;
+ let newWidth = Math.floor(oldWidth * shrinkage);
+ excess -= newWidth;
+ this._imaginarySummaryItemTitleWidth = newWidth;
+ }
+
+ // If the tray as a whole is fully-expanded, make sure the
+ // left edge doesn't wobble during animation due to rounding.
+ if (this._imaginarySummaryItemTitleWidth == 0 && excess != 0) {
+ for (let i = 0; i < this._summaryItems.length; i++) {
+ if (this._summaryItems[i] == this._expandedSummaryItem)
+ continue;
+
+ let oldWidth = this._summaryItems[i].getTitleWidth();
+ if (oldWidth != 0) {
+ this._summaryItems[i].setTitleWidth (oldWidth + excess);
+ break;
+ }
+ }
}
- if (this._expandedSummaryItem)
- this._imaginarySummaryItemTitleWidth *= shrinkage;
},
_expandSummaryItemCompleted: function() {
@@ -1377,13 +1556,14 @@ MessageTray.prototype = {
this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.END);
},
- _onSummaryItemClicked: function(summaryItem, event) {
- let clickedButton = event.get_button();
- if (!this._clickedSummaryItem ||
- this._clickedSummaryItem != summaryItem ||
- this._clickedSummaryItemMouseButton != clickedButton) {
+ _onSummaryItemClicked: function(summaryItem, button) {
+ if (summaryItem.source.handleSummaryClick())
+ this._unsetClickedSummaryItem();
+ else if (!this._clickedSummaryItem ||
+ this._clickedSummaryItem != summaryItem ||
+ this._clickedSummaryItemMouseButton != button) {
this._clickedSummaryItem = summaryItem;
- this._clickedSummaryItemMouseButton = clickedButton;
+ this._clickedSummaryItemMouseButton = button;
} else {
this._unsetClickedSummaryItem();
}
@@ -1519,14 +1699,15 @@ MessageTray.prototype = {
// at the present time.
_updateState: function() {
// Notifications
- let notificationsPending = this._notificationQueue.length > 0 &&
- (!this._busy || this._notificationQueue[0].urgency == Urgency.CRITICAL);
+ let notificationUrgent = this._notificationQueue.length > 0 && this._notificationQueue[0].urgency == Urgency.CRITICAL;
+ let notificationsPending = this._notificationQueue.length > 0 && (!this._busy || notificationUrgent);
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
let notificationExpanded = this._notificationBin.y < 0;
let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked) || this._notificationRemoved;
+ let canShowNotification = notificationsPending && this._summaryState == State.HIDDEN;
if (this._notificationState == State.HIDDEN) {
- if (notificationsPending)
+ if (canShowNotification)
this._showNotification();
} else if (this._notificationState == State.SHOWN) {
if (notificationExpired)
@@ -1548,7 +1729,11 @@ MessageTray.prototype = {
this._notificationState == State.SHOWN);
let notificationsDone = !notificationsVisible && !notificationsPending;
- if (this._summaryState == State.HIDDEN) {
+ let summaryOptionalInOverview = this._overviewVisible && !this._locked && !summaryHovered;
+ let mustHideSummary = (notificationsPending && (notificationUrgent || summaryOptionalInOverview))
+ || notificationsVisible;
+
+ if (this._summaryState == State.HIDDEN && !mustHideSummary) {
if (this._backFromAway) {
// Immediately set this to false, so that we don't schedule a timeout later
this._backFromAway = false;
@@ -1560,7 +1745,7 @@ MessageTray.prototype = {
this._showSummary(0);
}
} else if (this._summaryState == State.SHOWN) {
- if (!summaryPinned)
+ if (!summaryPinned || mustHideSummary)
this._hideSummary();
else if (summaryVisibleWithNoHover && !summaryNotificationIsForExpandedSummaryItem)
// If we are hiding the summary, we'll collapse the expanded summary item when we are done
@@ -1575,18 +1760,21 @@ MessageTray.prototype = {
let summarySourceIsMainNotificationSource = (haveClickedSummaryItem && this._notification &&
this._clickedSummaryItem.source == this._notification.source);
let canShowSummaryBoxPointer = this._summaryState == State.SHOWN;
- let wrongSummaryNotification = (this._clickedSummaryItemMouseButton == 1 &&
- this._summaryNotification != this._clickedSummaryItem.source.notification);
+ // We only have sources with empty notification stacks for legacy tray icons. Currently, we never attempt
+ // to show notifications for legacy tray icons, but this would be necessary if we did.
+ let requestedNotificationStackIsEmpty = (this._clickedSummaryItemMouseButton == 1 && this._clickedSummaryItem.source.notifications.length == 0);
+ let wrongSummaryNotificationStack = (this._clickedSummaryItemMouseButton == 1 &&
+ this._summaryBoxPointer.bin.child != this._clickedSummaryItem.notificationStackView);
let wrongSummaryRightClickMenu = (this._clickedSummaryItemMouseButton == 3 &&
this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu);
let wrongSummaryBoxPointer = (haveClickedSummaryItem &&
- (wrongSummaryNotification || wrongSummaryRightClickMenu));
+ (wrongSummaryNotificationStack || wrongSummaryRightClickMenu));
if (this._summaryBoxPointerState == State.HIDDEN) {
- if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer)
+ if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer && !requestedNotificationStackIsEmpty)
this._showSummaryBoxPointer();
} else if (this._summaryBoxPointerState == State.SHOWN) {
- if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer)
+ if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer || mustHideSummary)
this._hideSummaryBoxPointer();
}
@@ -1841,38 +2029,33 @@ MessageTray.prototype = {
},
_hideSummaryCompleted: function() {
- this._expandedSummaryItem = null;
- this._expandedSummaryItemTitleWidth = this._summaryItemTitleWidth;
+ this._setExpandedSummaryItem(null);
},
_showSummaryBoxPointer: function() {
+ this._summaryBoxPointerItem = this._clickedSummaryItem;
+ this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
+ Lang.bind(this, this._adjustSummaryBoxPointerPosition));
+ this._summaryBoxPointerDoneDisplayingId = this._summaryBoxPointerItem.connect('done-displaying-content',
+ Lang.bind(this, this._escapeTray));
if (this._clickedSummaryItemMouseButton == 1) {
- let clickedSummaryItemNotification = this._clickedSummaryItem.source.notification;
- let index = this._notificationQueue.indexOf(clickedSummaryItemNotification);
- if (index != -1)
- this._notificationQueue.splice(index, 1);
-
- this._summaryNotification = clickedSummaryItemNotification;
- this._summaryNotificationClickedId = this._summaryNotification.connect('done-displaying',
- Lang.bind(this, this._escapeTray));
- this._summaryBoxPointer.bin.child = this._summaryNotification.actor;
- if (!this._summaryNotificationExpandedId)
- this._summaryNotificationExpandedId = this._summaryNotification.connect('expanded',
- Lang.bind(this, this._onSummaryBoxPointerExpanded));
- this._summaryNotification.expand(false);
+ this._notificationQueue = this._notificationQueue.filter( Lang.bind(this,
+ function(notification) {
+ return this._summaryBoxPointerItem.source != notification.source;
+ }));
+ this._summaryBoxPointerItem.prepareNotificationStackForShowing();
+ this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackView;
+ this._summaryBoxPointerItem.scrollTo(St.Side.BOTTOM);
} else if (this._clickedSummaryItemMouseButton == 3) {
- this._summaryRightClickMenuClickedId = this._clickedSummaryItem.connect('right-click-menu-done-displaying',
- Lang.bind(this, this._escapeTray));
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
}
this._focusGrabber.grabFocus(this._summaryBoxPointer.bin.child);
-
this._clickedSummaryItemAllocationChangedId =
this._clickedSummaryItem.actor.connect('allocation-changed',
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
- // _clickedSummaryItem.actor can change absolute postiion without changing allocation
+ // _clickedSummaryItem.actor can change absolute position without changing allocation
this._summaryMotionId = this._summary.connect('allocation-changed',
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
@@ -1881,6 +2064,7 @@ MessageTray.prototype = {
this._adjustSummaryBoxPointerPosition();
this._summaryBoxPointerState = State.SHOWING;
+ this._clickedSummaryItem.actor.add_style_pseudo_class('selected');
this._summaryBoxPointer.show(true, Lang.bind(this, function() {
this._summaryBoxPointerState = State.SHOWN;
}));
@@ -1902,24 +2086,13 @@ MessageTray.prototype = {
this._summaryMotionId = 0;
}
- if (this._summaryRightClickMenuClickedId) {
- this._clickedSummaryItem.disconnect(this._summaryRightClickMenuClickedId);
- this._summaryRightClickMenuClickedId = 0;
- }
-
+ if (this._clickedSummaryItem)
+ this._clickedSummaryItem.actor.remove_style_pseudo_class('selected');
this._clickedSummaryItem = null;
this._clickedSummaryItemMouseButton = -1;
},
- _onSummaryBoxPointerExpanded: function() {
- this._adjustSummaryBoxPointerPosition();
- },
-
_hideSummaryBoxPointer: function() {
- if (this._summaryNotificationExpandedId) {
- this._summaryNotification.disconnect(this._summaryNotificationExpandedId);
- this._summaryNotificationExpandedId = 0;
- }
// Unset this._clickedSummaryItem if we are no longer showing the summary
if (this._summaryState != State.SHOWN)
this._unsetClickedSummaryItem();
@@ -1930,21 +2103,32 @@ MessageTray.prototype = {
},
_hideSummaryBoxPointerCompleted: function() {
+ let doneShowingNotificationStack = (this._summaryBoxPointer.bin.child == this._summaryBoxPointerItem.notificationStackView);
+
this._summaryBoxPointerState = State.HIDDEN;
this._summaryBoxPointer.bin.child = null;
- if (this._summaryNotification != null) {
- this._summaryNotification.collapseCompleted();
- this._summaryNotification.disconnect(this._summaryNotificationClickedId);
- this._summaryNotificationClickedId = 0;
- let summaryNotification = this._summaryNotification;
- this._summaryNotification = null;
- if (summaryNotification.isTransient && !this._reNotifyWithSummaryNotificationAfterHide)
- summaryNotification.destroy(NotificationDestroyedReason.EXPIRED);
- if (this._reNotifyWithSummaryNotificationAfterHide) {
- this._onNotify(summaryNotification.source, summaryNotification);
- this._reNotifyWithSummaryNotificationAfterHide = false;
+ this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
+ this._summaryBoxPointerContentUpdatedId = 0;
+ this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerDoneDisplayingId);
+ this._summaryBoxPointerDoneDisplayingId = 0;
+
+ let sourceNotificationStackDoneShowing = null;
+ if (doneShowingNotificationStack) {
+ this._summaryBoxPointerItem.doneShowingNotificationStack();
+ sourceNotificationStackDoneShowing = this._summaryBoxPointerItem.source;
+ }
+
+ this._summaryBoxPointerItem = null;
+
+ if (sourceNotificationStackDoneShowing) {
+ if (sourceNotificationStackDoneShowing.isTransient && !this._reNotifyAfterHideNotification)
+ sourceNotificationStackDoneShowing.destroy(NotificationDestroyedReason.EXPIRED);
+ if (this._reNotifyAfterHideNotification) {
+ this._onNotify(this._reNotifyAfterHideNotification.source, this._reNotifyAfterHideNotification);
+ this._reNotifyAfterHideNotification = null;
}
}
+
if (this._clickedSummaryItem)
this._updateState();
}
diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js
index 45a1e3c38..802f9c90f 100644
--- a/js/ui/modalDialog.js
+++ b/js/ui/modalDialog.js
@@ -39,13 +39,20 @@ ModalDialog.prototype = {
params = Params.parse(params, { styleClass: null });
this.state = State.CLOSED;
+ this._hasModal = false;
this._group = new St.Group({ visible: false,
x: 0,
y: 0 });
Main.uiGroup.add_actor(this._group);
+
+ let constraint = new Clutter.BindConstraint({ source: global.stage,
+ coordinate: Clutter.BindCoordinate.POSITION | Clutter.BindCoordinate.SIZE });
+ this._group.add_constraint(constraint);
+
global.focus_manager.add_group(this._group);
this._initialKeyFocus = this._group;
+ this._savedKeyFocus = null;
this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy));
@@ -60,12 +67,18 @@ ModalDialog.prototype = {
this._group.add_actor(this._backgroundBin);
this._lightbox.highlight(this._backgroundBin);
+ this._backgroundStack = new Shell.Stack();
+ this._backgroundBin.child = this._backgroundStack;
+
+ this._eventBlocker = new Clutter.Group({ reactive: true });
+ this._backgroundStack.add_actor(this._eventBlocker);
+
this._dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog',
vertical: true });
if (params.styleClass != null) {
this._dialogLayout.add_style_class_name(params.styleClass);
}
- this._backgroundBin.child = this._dialogLayout;
+ this._backgroundStack.add_actor(this._dialogLayout);
this.contentLayout = new St.BoxLayout({ vertical: true });
this._dialogLayout.add(this.contentLayout,
@@ -74,8 +87,9 @@ ModalDialog.prototype = {
x_align: St.Align.MIDDLE,
y_align: St.Align.START });
- this._buttonLayout = new St.BoxLayout({ opacity: 220,
- vertical: false });
+ this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
+ opacity: 220,
+ vertical: false });
this._dialogLayout.add(this._buttonLayout,
{ expand: true,
x_align: St.Align.MIDDLE,
@@ -154,22 +168,23 @@ ModalDialog.prototype = {
transition: 'easeOutQuad',
onComplete: Lang.bind(this,
function() {
- this._initialKeyFocus.grab_key_focus();
this.state = State.OPENED;
this.emit('opened');
- }),
+ })
});
},
+ setInitialKeyFocus: function(actor) {
+ this._initialKeyFocus = actor;
+ },
+
open: function(timestamp) {
if (this.state == State.OPENED || this.state == State.OPENING)
return true;
- if (!Main.pushModal(this._group, timestamp))
+ if (!this.pushModal(timestamp))
return false;
- global.stage.set_key_focus(this._group);
-
this._fadeOpen();
return true;
},
@@ -178,14 +193,8 @@ ModalDialog.prototype = {
if (this.state == State.CLOSED || this.state == State.CLOSING)
return;
- let needsPopModal;
-
- if (this.state == State.OPENED || this.state == State.OPENING)
- needsPopModal = true;
- else
- needsPopModal = false;
-
this.state = State.CLOSING;
+ this.popModal(timestamp);
Tweener.addTween(this._group,
{ opacity: 0,
@@ -195,13 +204,46 @@ ModalDialog.prototype = {
function() {
this.state = State.CLOSED;
this._group.hide();
-
- if (needsPopModal)
- Main.popModal(this._group, timestamp);
})
});
},
+ // Drop modal status without closing the dialog; this makes the
+ // dialog insensitive as well, so it needs to be followed shortly
+ // by either a close() or a pushModal()
+ popModal: function(timestamp) {
+ if (!this._hasModal)
+ return;
+
+ let focus = global.stage.key_focus;
+ if (focus && this._group.contains(focus))
+ this._savedKeyFocus = focus;
+ else
+ this._savedKeyFocus = null;
+ Main.popModal(this._group, timestamp);
+ global.gdk_screen.get_display().sync();
+ this._hasModal = false;
+
+ this._eventBlocker.raise_top();
+ },
+
+ pushModal: function (timestamp) {
+ if (this._hasModal)
+ return true;
+ if (!Main.pushModal(this._group, timestamp))
+ return false;
+
+ this._hasModal = true;
+ if (this._savedKeyFocus) {
+ this._savedKeyFocus.grab_key_focus();
+ this._savedKeyFocus = null;
+ } else
+ this._initialKeyFocus.grab_key_focus();
+
+ this._eventBlocker.lower_bottom();
+ return true;
+ },
+
// This method is like close, but fades the dialog out much slower,
// and leaves the lightbox in place. Once in the faded out state,
// the dialog can be brought back by an open call, or the lightbox
@@ -220,6 +262,7 @@ ModalDialog.prototype = {
if (this.state == State.FADED_OUT)
return;
+ this.popModal(timestamp);
Tweener.addTween(this._dialogLayout,
{ opacity: 0,
time: FADE_OUT_DIALOG_TIME,
@@ -227,7 +270,6 @@ ModalDialog.prototype = {
onComplete: Lang.bind(this,
function() {
this.state = State.FADED_OUT;
- Main.popModal(this._group, timestamp);
})
});
}
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index adfe870df..c3ae212ac 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -1,5 +1,6 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
+const Clutter = imports.gi.Clutter;
const DBus = imports.dbus;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
@@ -345,7 +346,7 @@ NotificationDaemon.prototype = {
notification.setTransient(hints['transient'] == true);
let sourceIconActor = source.useNotificationIcon ? this._iconForNotificationData(icon, hints, source.ICON_SIZE) : null;
- source.notify(notification, sourceIconActor);
+ source.processNotification(notification, sourceIconActor);
},
CloseNotification: function(id) {
@@ -389,8 +390,7 @@ NotificationDaemon.prototype = {
for (let id in this._sources) {
let source = this._sources[id];
if (source.app == tracker.focus_app) {
- if (source.notification && !source.notification.resident)
- source.notification.destroy();
+ source.destroyNonResidentNotifications();
return;
}
}
@@ -441,15 +441,43 @@ Source.prototype = {
this.title = this.app.get_name();
else
this.useNotificationIcon = true;
- this._isTrayIcon = false;
+ this._trayIcon = null;
},
- notify: function(notification, icon) {
+ processNotification: function(notification, icon) {
if (!this.app)
this._setApp();
if (!this.app && icon)
this._setSummaryIcon(icon);
- MessageTray.Source.prototype.notify.call(this, notification);
+
+ let tracker = Shell.WindowTracker.get_default();
+ if (notification.resident && this.app && tracker.focus_app == this.app)
+ this.pushNotification(notification);
+ else
+ this.notify(notification);
+ },
+
+ handleSummaryClick: function() {
+ if (!this._trayIcon)
+ return false;
+
+ let event = Clutter.get_current_event();
+ if (event.type() != Clutter.EventType.BUTTON_RELEASE)
+ return false;
+
+ if (Main.overview.visible) {
+ // We can't just connect to Main.overview's 'hidden' signal,
+ // because it's emitted *before* it calls popModal()...
+ let id = global.connect('notify::stage-input-mode', Lang.bind(this,
+ function () {
+ global.disconnect(id);
+ this._trayIcon.click(event);
+ }));
+ Main.overview.hide();
+ } else {
+ this._trayIcon.click(event);
+ }
+ return true;
},
_setApp: function() {
@@ -466,7 +494,7 @@ Source.prototype = {
// Only override the icon if we were previously using
// notification-based icons (ie, not a trayicon) or if it was unset before
- if (!this._isTrayIcon) {
+ if (!this._trayIcon) {
this.useNotificationIcon = false;
this._setSummaryIcon(this.app.create_icon_texture (this.ICON_SIZE));
}
@@ -475,25 +503,29 @@ Source.prototype = {
setTrayIcon: function(icon) {
this._setSummaryIcon(icon);
this.useNotificationIcon = false;
- this._isTrayIcon = true;
+ this._trayIcon = icon;
},
open: function(notification) {
+ this.destroyNonResidentNotifications();
this.openApp();
},
- _notificationRemoved: function() {
- if (!this._isTrayIcon)
+ _lastNotificationRemoved: function() {
+ if (!this._trayIcon)
this.destroy();
},
_appStateChanged: function() {
// Destroy notification sources when their apps exit.
// The app exiting would normally result in a tray icon being removed,
- // so it should be ok to destroy the source associated with a tray icon
- // here too, however we just let that happen through the code path
- // associated with the tray icon being removed.
- if (!this._isTrayIcon && this.app.get_state() == Shell.AppState.STOPPED)
+ // so the associated source would be destroyed through the code path
+ // that handles the tray icon being removed. We should not destroy
+ // the source associated with a tray icon when the application state
+ // is Shell.AppState.STOPPED because running applications that have
+ // no open windows would also have that state. This is often the case
+ // for applications that use tray icons.
+ if (!this._trayIcon && this.app.get_state() == Shell.AppState.STOPPED)
this.destroy();
},
diff --git a/js/ui/overview.js b/js/ui/overview.js
index ad04b7873..6f1c9a564 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -23,6 +23,7 @@ const PlaceDisplay = imports.ui.placeDisplay;
const Tweener = imports.ui.tweener;
const ViewSelector = imports.ui.viewSelector;
const WorkspacesView = imports.ui.workspacesView;
+const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
const ZeitgeistSearch = imports.ui.zeitgeistSearch;
// Time for initial animation going into Overview mode
@@ -74,11 +75,13 @@ ShellInfo.prototype = {
Main.messageTray.add(this._source);
}
- let notification = this._source.notification;
- if (notification == null)
+ let notification = null;
+ if (this._source.notifications.length == 0) {
notification = new MessageTray.Notification(this._source, text, null);
- else
+ } else {
+ notification = this._source.notifications[0];
notification.update(text, null, { clear: true });
+ }
notification.setTransient(true);
@@ -247,7 +250,8 @@ Overview.prototype = {
_onDragMotion: function(dragEvent) {
let targetIsWindow = dragEvent.targetActor &&
dragEvent.targetActor._delegate &&
- dragEvent.targetActor._delegate.metaWindow;
+ dragEvent.targetActor._delegate.metaWindow &&
+ !(dragEvent.targetActor._delegate instanceof WorkspaceThumbnail.WindowClone);
this._windowSwitchTimestamp = global.get_current_time();
@@ -443,7 +447,7 @@ Overview.prototype = {
let primary = global.get_primary_monitor();
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
- let contentY = Panel.PANEL_HEIGHT;
+ let contentY = Main.panel.actor.height;
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
this._group.set_position(primary.x, primary.y);
@@ -478,6 +482,10 @@ Overview.prototype = {
this.emit('item-drag-begin');
},
+ cancelledItemDrag: function(source) {
+ this.emit('item-drag-cancelled');
+ },
+
endItemDrag: function(source) {
this.emit('item-drag-end');
},
@@ -690,6 +698,7 @@ Overview.prototype = {
this._animateNotVisible();
this._syncInputMode();
+ global.sync_pointer();
},
_hideDone: function() {
diff --git a/js/ui/panel.js b/js/ui/panel.js
index c08c3e834..8cbceb051 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -22,8 +22,6 @@ const DateMenu = imports.ui.dateMenu;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
-const PANEL_HEIGHT = 26;
-
const PANEL_ICON_SIZE = 24;
const STARTUP_ANIMATION_TIME = 0.2;
@@ -33,8 +31,7 @@ const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5;
const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
-const SPINNER_UPDATE_TIMEOUT = 130;
-const SPINNER_SPEED = 0.02;
+const SPINNER_ANIMATION_TIME = 0.2;
const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery'];
const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
@@ -47,6 +44,12 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = {
if (Config.HAVE_BLUETOOTH)
STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
+try {
+ STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
+} catch(e) {
+ log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
+}
+
// To make sure the panel corners blend nicely with the panel,
// we draw background and borders the same way, e.g. drawing
// them as filled shapes from the outside inwards instead of
@@ -275,20 +278,13 @@ AppMenuButton.prototype = {
this.hide();
}));
- this._updateId = 0;
- this._animationStep = 0;
- this._clipWidth = PANEL_ICON_SIZE;
- this._direction = SPINNER_SPEED;
+ this._stop = true;
this._spinner = new AnimatedIcon('process-working.svg',
PANEL_ICON_SIZE);
this._container.add_actor(this._spinner.actor);
this._spinner.actor.lower_bottom();
- this._shadow = new St.Bin({ style_class: 'label-real-shadow' });
- this._shadow.hide();
- this._container.add_actor(this._shadow);
-
let tracker = Shell.WindowTracker.get_default();
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
tracker.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
@@ -338,62 +334,26 @@ AppMenuButton.prototype = {
this._iconBox.remove_clip();
},
- _stopAnimation: function(animate) {
- this._label.actor.remove_clip();
- if (this._updateId) {
- this._shadow.hide();
- if (animate) {
- Tweener.addTween(this._spinner.actor,
- { opacity: 0,
- time: 0.2,
- transition: "easeOutQuad",
- onCompleteScope: this,
- onComplete: function() {
- this._spinner.actor.opacity = 255;
- this._spinner.actor.hide();
- }
- });
- }
- Mainloop.source_remove(this._updateId);
- this._updateId = 0;
- }
- if (!animate)
- this._spinner.actor.hide();
- },
-
stopAnimation: function() {
- this._direction = SPINNER_SPEED * 3;
- this._stop = true;
- },
+ if (this._stop)
+ return;
- _update: function() {
- this._animationStep += this._direction;
- if (this._animationStep > 1 && this._stop) {
- this._animationStep = 1;
- this._stopAnimation(true);
- return false;
- }
- if (this._animationStep > 1)
- this._animationStep = 1;
- this._clipWidth = this._label.actor.width - (this._label.actor.width - PANEL_ICON_SIZE) * (1 - this._animationStep);
- if (this.actor.get_direction() == St.TextDirection.LTR) {
- this._label.actor.set_clip(0, 0, this._clipWidth + this._shadow.width, this.actor.height);
- } else {
- this._label.actor.set_clip(this._label.actor.width - this._clipWidth, 0, this._clipWidth, this.actor.height);
- }
- this._container.queue_relayout();
- return true;
+ this._stop = true;
+ Tweener.addTween(this._spinner.actor,
+ { opacity: 0,
+ time: SPINNER_ANIMATION_TIME,
+ transition: "easeOutQuad",
+ onCompleteScope: this,
+ onComplete: function() {
+ this._spinner.actor.opacity = 255;
+ this._spinner.actor.hide();
+ }
+ });
},
startAnimation: function() {
- this._direction = SPINNER_SPEED;
- this._stopAnimation(false);
- this._animationStep = 0;
- this._update();
this._stop = false;
- this._updateId = Mainloop.timeout_add(SPINNER_UPDATE_TIMEOUT, Lang.bind(this, this._update));
this._spinner.actor.show();
- this._shadow.show();
},
_getContentPreferredWidth: function(actor, forHeight, alloc) {
@@ -455,18 +415,13 @@ AppMenuButton.prototype = {
this._label.actor.allocate(childBox, flags);
if (direction == St.TextDirection.LTR) {
- childBox.x1 = Math.floor(iconWidth / 2) + this._clipWidth + this._shadow.width;
+ childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
childBox.x2 = childBox.x1 + this._spinner.actor.width;
childBox.y1 = box.y1;
childBox.y2 = box.y2 - 1;
this._spinner.actor.allocate(childBox, flags);
- childBox.x1 = Math.floor(iconWidth / 2) + this._clipWidth + 2;
- childBox.x2 = childBox.x1 + this._shadow.width;
- childBox.y1 = box.y1;
- childBox.y2 = box.y2 - 1;
- this._shadow.allocate(childBox, flags);
} else {
- childBox.x1 = this._label.actor.width - this._clipWidth - this._spinner.actor.width;
+ childBox.x1 = -this._spinner.actor.width;
childBox.x2 = childBox.x1 + this._spinner.actor.width;
childBox.y1 = box.y1;
childBox.y2 = box.y2 - 1;
@@ -545,8 +500,8 @@ AppMenuButton.prototype = {
this.stopAnimation();
return;
}
- this._stopAnimation();
+ this._spinner.actor.hide();
if (this._iconBox.child != null)
this._iconBox.child.destroy();
this._iconBox.hide();
@@ -751,6 +706,8 @@ HotCorner.prototype = {
x: x,
y: y });
ripple._opacity = startOpacity;
+ if (ripple.get_direction() == St.TextDirection.RTL)
+ ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
Tweener.addTween(ripple, { _opacity: finalOpacity,
scale_x: finalScale,
scale_y: finalScale,
@@ -834,6 +791,8 @@ Panel.prototype = {
this.actor.remove_style_class_name('in-overview');
}));
+ this._leftPointerBarrier = 0;
+ this._rightPointerBarrier = 0;
this._menus = new PopupMenu.PopupMenuManager(this);
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
@@ -1017,7 +976,7 @@ Panel.prototype = {
affectsStruts: false,
affectsInputRegion: false });
- Main.ctrlAltTabManager.addGroup(this.actor, _("Panel"), 'start-here',
+ Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'start-here',
{ sortGroup: CtrlAltTab.SortGroup.TOP });
},
@@ -1094,7 +1053,21 @@ Panel.prototype = {
let primary = global.get_primary_monitor();
this.actor.set_position(primary.x, primary.y);
- this.actor.set_size(primary.width, PANEL_HEIGHT);
+ this.actor.set_size(primary.width, -1);
+
+ if (this._leftPointerBarrier)
+ global.destroy_pointer_barrier(this._leftPointerBarrier);
+ if (this._rightPointerBarrier)
+ global.destroy_pointer_barrier(this._rightPointerBarrier);
+
+ this._leftPointerBarrier =
+ global.create_pointer_barrier(primary.x, primary.y,
+ primary.x, primary.y + this.actor.height,
+ 1 /* BarrierPositiveX */);
+ this._rightPointerBarrier =
+ global.create_pointer_barrier(primary.x + primary.width, primary.y,
+ primary.x + primary.width, primary.y + this.actor.height,
+ 4 /* BarrierNegativeX */);
this._leftCorner.relayout();
this._rightCorner.relayout();
diff --git a/js/ui/polkitAuthenticationAgent.js b/js/ui/polkitAuthenticationAgent.js
index 8834c0e43..8f7703c9f 100644
--- a/js/ui/polkitAuthenticationAgent.js
+++ b/js/ui/polkitAuthenticationAgent.js
@@ -71,7 +71,7 @@ AuthenticationDialog.prototype = {
{ y_align: St.Align.START });
this._subjectLabel = new St.Label({ style_class: 'polkit-dialog-headline',
- text: _('Authentication Required') });
+ text: _("Authentication Required") });
messageBox.add(this._subjectLabel,
{ y_fill: false,
@@ -105,13 +105,9 @@ AuthenticationDialog.prototype = {
let userIsRoot = false;
if (userName == 'root') {
userIsRoot = true;
- userRealName = _('Administrator');
+ userRealName = _("Administrator");
}
- // Work around Gdm.UserManager returning an empty string for the real name
- if (userRealName.length == 0)
- userRealName = userName;
-
if (userIsRoot) {
let userLabel = new St.Label(({ style_class: 'polkit-dialog-user-root-label',
text: userRealName }));
@@ -143,7 +139,7 @@ AuthenticationDialog.prototype = {
this._passwordLabel = new St.Label(({ style_class: 'polkit-dialog-password-label' }));
this._passwordBox.add(this._passwordLabel);
this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
- text: _(''),
+ text: "",
can_focus: true});
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
this._passwordBox.add(this._passwordEntry,
@@ -173,11 +169,11 @@ AuthenticationDialog.prototype = {
messageBox.add(this._nullMessageLabel);
this._nullMessageLabel.show();
- this.setButtons([{ label: _('Cancel'),
+ this.setButtons([{ label: _("Cancel"),
action: Lang.bind(this, this.cancel),
key: Clutter.Escape
},
- { label: _('Authenticate'),
+ { label: _("Authenticate"),
action: Lang.bind(this, this._onAuthenticateButtonPressed)
}]);
@@ -261,7 +257,7 @@ AuthenticationDialog.prototype = {
* show "Sorry, that didn't work. Please try again."
*/
if (!this._errorMessageLabel.visible && !this._wasDismissed) {
- this._errorMessageLabel.set_text(_('Sorry, that didn\'t 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();
@@ -273,7 +269,7 @@ AuthenticationDialog.prototype = {
_onSessionRequest: function(session, request, echo_on) {
// Cheap localization trick
if (request == 'Password:')
- this._passwordLabel.set_text(_('Password:'));
+ this._passwordLabel.set_text(_("Password:"));
else
this._passwordLabel.set_text(request);
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 887fb41f2..97a9c4d7f 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -173,6 +173,8 @@ PopupBaseMenuItem.prototype = {
cr.fill();
},
+ // This returns column widths in logical order (i.e. from the dot
+ // to the image), not in visual order (left to right)
getColumnWidths: function() {
let widths = [];
for (let i = 0, col = 0; i < this._children.length; i++) {
@@ -224,19 +226,36 @@ PopupBaseMenuItem.prototype = {
_allocate: function(actor, box, flags) {
let height = box.y2 - box.y1;
+ let direction = this.actor.get_direction();
if (this._dot) {
+ // The dot is placed outside box
+ // one quarter of padding from the border of the container
+ // (so 3/4 from the inner border)
+ // (padding is box.x1)
let dotBox = new Clutter.ActorBox();
let dotWidth = Math.round(box.x1 / 2);
- dotBox.x1 = Math.round(box.x1 / 4);
- dotBox.x2 = dotBox.x1 + dotWidth;
+ if (direction == St.TextDirection.LTR) {
+ dotBox.x1 = Math.round(box.x1 / 4);
+ dotBox.x2 = dotBox.x1 + dotWidth;
+ } else {
+ dotBox.x2 = box.x2 + 3 * Math.round(box.x1 / 4);
+ dotBox.x1 = dotBox.x2 - dotWidth;
+ }
dotBox.y1 = Math.round(box.y1 + (height - dotWidth) / 2);
dotBox.y2 = dotBox.y1 + dotWidth;
this._dot.allocate(dotBox, flags);
}
- let x = box.x1;
+ let x;
+ if (direction == St.TextDirection.LTR)
+ x = box.x1;
+ else
+ x = box.x2;
+ // if direction is ltr, x is the right edge of the last added
+ // actor, and it's constantly increasing, whereas if rtl, x is
+ // the left edge and it decreases
for (let i = 0, col = 0; i < this._children.length; i++) {
let child = this._children[i];
let childBox = new Clutter.ActorBox();
@@ -244,9 +263,12 @@ PopupBaseMenuItem.prototype = {
let [minWidth, naturalWidth] = child.actor.get_preferred_width(-1);
let availWidth, extraWidth;
if (this._columnWidths) {
- if (child.span == -1)
- availWidth = box.x2 - x;
- else {
+ if (child.span == -1) {
+ if (direction == St.TextDirection.LTR)
+ availWidth = box.x2 - x;
+ else
+ availWidth = x - box.x1;
+ } else {
availWidth = 0;
for (let j = 0; j < child.span; j++)
availWidth += this._columnWidths[col++];
@@ -257,18 +279,36 @@ PopupBaseMenuItem.prototype = {
extraWidth = 0;
}
- if (child.expand) {
- childBox.x1 = x;
- childBox.x2 = x + availWidth;
- } else if (child.align === St.Align.CENTER) {
- childBox.x1 = x + Math.round(extraWidth / 2);
- childBox.x2 = childBox.x1 + naturalWidth;
- } else if (child.align === St.Align.END) {
- childBox.x2 = x + availWidth;
- childBox.x1 = childBox.x2 - naturalWidth;
+ if (direction == St.TextDirection.LTR) {
+ if (child.expand) {
+ childBox.x1 = x;
+ childBox.x2 = x + availWidth;
+ } else if (child.align === St.Align.CENTER) {
+ childBox.x1 = x + Math.round(extraWidth / 2);
+ childBox.x2 = childBox.x1 + naturalWidth;
+ } else if (child.align === St.Align.END) {
+ childBox.x2 = x + availWidth;
+ childBox.x1 = childBox.x2 - naturalWidth;
+ } else {
+ childBox.x1 = x;
+ childBox.x2 = x + naturalWidth;
+ }
} else {
- childBox.x1 = x;
- childBox.x2 = x + naturalWidth;
+ if (child.expand) {
+ childBox.x1 = x - availWidth;
+ childBox.x2 = x;
+ } else if (child.align === St.Align.CENTER) {
+ childBox.x1 = x - Math.round(extraWidth / 2);
+ childBox.x2 = childBox.x1 + naturalWidth;
+ } else if (child.align === St.Align.END) {
+ // align to the left
+ childBox.x1 = x - availWidth;
+ childBox.x2 = childBox.x1 + naturalWidth;
+ } else {
+ // align to the right
+ childBox.x2 = x;
+ childBox.x1 = x - naturalWidth;
+ }
}
let [minHeight, naturalHeight] = child.actor.get_preferred_height(-1);
@@ -277,7 +317,10 @@ PopupBaseMenuItem.prototype = {
child.actor.allocate(childBox, flags);
- x += availWidth + this._spacing;
+ if (direction == St.TextDirection.LTR)
+ x += availWidth + this._spacing;
+ else
+ x -= availWidth + this._spacing;
}
}
};
@@ -724,6 +767,11 @@ PopupMenuBase.prototype = {
}
this.isOpen = false;
+
+ // If set, we don't send events (including crossing events) to the source actor
+ // for the menu which causes its prelight state to freeze
+ this.blockSourceEvents = false;
+
this._activeMenuItem = null;
},
@@ -1331,14 +1379,20 @@ PopupMenuManager.prototype = {
return this._activeMenuContains(event.get_source());
},
- _eventIsOnAnyMenuSource: function(event) {
+ _shouldBlockEvent: function(event) {
let src = event.get_source();
+
+ if (this._activeMenu != null && this._activeMenu.actor.contains(src))
+ return false;
+
for (let i = 0; i < this._menus.length; i++) {
let menu = this._menus[i].menu;
- if (menu.sourceActor && menu.sourceActor.contains(src))
- return true;
+ if (menu.sourceActor && !menu.blockSourceEvents && menu.sourceActor.contains(src)) {
+ return false;
+ }
}
- return false;
+
+ return true;
},
_findMenu: function(item) {
@@ -1370,7 +1424,7 @@ PopupMenuManager.prototype = {
} else if (eventType == Clutter.EventType.BUTTON_PRESS && !activeMenuContains) {
this._closeMenu();
return true;
- } else if (activeMenuContains || this._eventIsOnAnyMenuSource(event)) {
+ } else if (!this._shouldBlockEvent(event)) {
return false;
}
diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js
index 15340d359..fdf6c4ed8 100644
--- a/js/ui/runDialog.js
+++ b/js/ui/runDialog.js
@@ -22,6 +22,9 @@ const MAX_FILE_DELETED_BEFORE_INVALID = 10;
const HISTORY_KEY = 'command-history';
+const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
+const DISABLE_COMMAND_LINE_KEY = 'disable-command-line';
+
const DIALOG_GROW_TIME = 0.1;
function CommandCompleter() {
@@ -167,6 +170,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
_init : function() {
ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' });
+ this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
global.settings.connect('changed::development-tools', Lang.bind(this, function () {
this._enableInternalCommands = global.settings.get_boolean('development-tools');
}));
@@ -206,10 +210,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
this._entryText = entry.clutter_text;
this.contentLayout.add(entry, { y_align: St.Align.START });
- this.connect('opened',
- Lang.bind(this, function() {
- this._entryText.grab_key_focus();
- }));
+ this.setInitialKeyFocus(this._entryText);
this._errorBox = new St.BoxLayout({ style_class: 'run-dialog-error-box' });
@@ -239,15 +240,21 @@ __proto__: ModalDialog.ModalDialog.prototype,
this._entryText.connect('key-press-event', Lang.bind(this, function(o, e) {
let symbol = e.get_key_symbol();
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
+ this.popModal();
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
this._run(o.get_text(), true);
else
this._run(o.get_text(), false);
if (!this._commandError)
- this.close(global.get_current_time());
+ this.close();
+ else {
+ if (!this.pushModal())
+ this.close();
+ }
+ return true;
}
if (symbol == Clutter.Escape) {
- this.close(global.get_current_time());
+ this.close();
return true;
}
if (symbol == Clutter.slash) {
@@ -353,6 +360,9 @@ __proto__: ModalDialog.ModalDialog.prototype,
this._entryText.set_text('');
this._commandError = false;
+ if (this._lockdownSettings.get_boolean(DISABLE_COMMAND_LINE_KEY))
+ return;
+
ModalDialog.ModalDialog.prototype.open.call(this);
},
diff --git a/js/ui/searchDisplay.js b/js/ui/searchDisplay.js
index 5dc8bf701..0e42f416f 100644
--- a/js/ui/searchDisplay.js
+++ b/js/ui/searchDisplay.js
@@ -5,6 +5,7 @@ const Lang = imports.lang;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
const Gtk = imports.gi.Gtk;
+const Meta = imports.gi.Meta;
const St = imports.gi.St;
const DND = imports.ui.dnd;
@@ -49,6 +50,10 @@ SearchResult.prototype = {
Lang.bind(this, function() {
Main.overview.beginItemDrag(this);
}));
+ draggable.connect('drag-cancelled',
+ Lang.bind(this, function() {
+ Main.overview.cancelledItemDrag(this);
+ }));
draggable.connect('drag-end',
Lang.bind(this, function() {
Main.overview.endItemDrag(this);
@@ -100,8 +105,30 @@ GridSearchResults.prototype = {
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_SEARCH_RESULTS_ROWS,
xAlign: St.Align.START });
this.actor = new St.Bin({ x_align: St.Align.START });
+
this.actor.set_child(this._grid.actor);
this.selectionIndex = -1;
+ this._width = 0;
+ this.actor.connect('notify::width', Lang.bind(this, function() {
+ this._width = this.actor.width;
+ Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
+ this._tryAddResults();
+ }));
+ }));
+ this._notDisplayedResult = [];
+ this._terms = [];
+ },
+
+ _tryAddResults: function() {
+ let canDisplay = this._grid.childrenInRow(this._width) * MAX_SEARCH_RESULTS_ROWS
+ - this._grid.visibleItemsCount();
+
+ for (let i = Math.min(this._notDisplayedResult.length, canDisplay); i > 0; i--) {
+ let result = this._notDisplayedResult.shift();
+ let meta = this.provider.getResultMeta(result);
+ let display = new SearchResult(this.provider, meta, this._terms);
+ this._grid.addItem(display.actor);
+ }
},
getVisibleResultCount: function() {
@@ -109,15 +136,15 @@ GridSearchResults.prototype = {
},
renderResults: function(results, terms) {
- for (let i = 0; i < results.length; i++) {
- let result = results[i];
- let meta = this.provider.getResultMeta(result);
- let display = new SearchResult(this.provider, meta, terms);
- this._grid.addItem(display.actor);
- }
+ // copy the lists
+ this._notDisplayedResult = results.slice(0);
+ this._terms = terms.slice(0);
+ this._tryAddResults();
},
clear: function () {
+ this._terms = [];
+ this._notDisplayedResult = [];
this._grid.removeAll();
this.selectionIndex = -1;
},
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
index 5d77a5c1c..b9cf7230a 100644
--- a/js/ui/status/accessibility.js
+++ b/js/ui/status/accessibility.js
@@ -66,13 +66,13 @@ ATIndicator.prototype = {
let textZoom = this._buildFontItem();
this.menu.addMenuItem(textZoom);
- let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
- 'screen-reader-enabled');
- this.menu.addMenuItem(screenReader);
+// let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+// 'screen-reader-enabled');
+// this.menu.addMenuItem(screenReader);
- let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
- 'screen-keyboard-enabled');
- this.menu.addMenuItem(screenKeyboard);
+// let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+// 'screen-keyboard-enabled');
+// this.menu.addMenuItem(screenKeyboard);
let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
this.menu.addMenuItem(visualBell);
@@ -91,7 +91,8 @@ ATIndicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Universal Access Settings"), function() {
- Util.spawnDesktop('gnome-universal-access-panel');
+ let app = Shell.AppSystem.get_default().get_app('gnome-universal-access-panel.desktop');
+ app.activate(-1);
});
},
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index 78859075c..070016aac 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -93,7 +93,8 @@ Indicator.prototype = {
this._updateFullMenu();
this.menu.addAction(_("Bluetooth Settings"), function() {
- GLib.spawn_command_line_async('gnome-control-center bluetooth');
+ let app = Shell.AppSystem.get_default().get_app('bluetooth-properties.desktop');
+ app.activate(-1);
});
this._applet.connect('pincode-request', Lang.bind(this, this._pinRequest));
@@ -136,6 +137,7 @@ Indicator.prototype = {
_updateDevices: function() {
let devices = this._applet.get_devices();
+ let newlist = [ ];
for (let i = 0; i < this._deviceItems.length; i++) {
let item = this._deviceItems[i];
let destroy = true;
@@ -143,26 +145,20 @@ Indicator.prototype = {
// we need to deep compare because BluetoothSimpleDevice is a boxed type
// (but we take advantage of that, because _skip will disappear the next
// time get_devices() is called)
- if (this._deviceCompare(item._device, devices[i])) {
- item.label.text = devices[i].alias;
- devices[i]._skip = true;
+ if (this._deviceCompare(item._device, devices[j])) {
+ item.label.text = devices[j].alias;
+ devices[j]._skip = true;
destroy = false;
+ break;
}
}
- if (destroy) {
+ if (destroy)
item.destroy();
- item._destroyed = true;
- }
- }
-
- let newlist = [ ];
- for (let i = 0; i < this._deviceItems.length; i++) {
- let item = this._deviceItems[i];
- if (!item._destroyed)
+ else
newlist.push(item);
}
- this._deviceItems = newlist;
+ this._deviceItems = newlist;
this._hasDevices = newlist.length > 0;
for (let i = 0; i < devices.length; i++) {
let d = devices[i];
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index ae498e0f9..06a0b4991 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -74,7 +74,8 @@ XKBIndicator.prototype = {
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
}));
this.menu.addAction(_("Localization Settings"), function() {
- Util.spawn(['gnome-control-center', 'region']);
+ let app = Shell.AppSystem.get_default().get_app('gnome-region-panel.desktop');
+ app.activate(-1);
});
},
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
new file mode 100644
index 000000000..189af8004
--- /dev/null
+++ b/js/ui/status/network.js
@@ -0,0 +1,2107 @@
+// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*-
+const ByteArray = imports.byteArray;
+const DBus = imports.dbus;
+const GLib = imports.gi.GLib;
+const GObject = imports.gi.GObject;
+const Lang = imports.lang;
+const Mainloop = imports.mainloop;
+const NetworkManager = imports.gi.NetworkManager;
+const NMClient = imports.gi.NMClient;
+const Shell = imports.gi.Shell;
+const Signals = imports.signals;
+const St = imports.gi.St;
+
+const Main = imports.ui.main;
+const PanelMenu = imports.ui.panelMenu;
+const PopupMenu = imports.ui.popupMenu;
+const MessageTray = imports.ui.messageTray;
+const ModemManager = imports.misc.modemManager;
+const Util = imports.misc.util;
+
+const Gettext = imports.gettext.domain('gnome-shell');
+const _ = Gettext.gettext;
+
+const NMConnectionCategory = {
+ WIRED: 'wired',
+ WIRELESS: 'wireless',
+ WWAN: 'wwan',
+ VPN: 'vpn'
+};
+
+const NMAccessPointSecurity = {
+ UNKNOWN: 0,
+ NONE: 1,
+ WEP: 2,
+ WPA: 3,
+ WPA2: 4
+};
+
+// small optimization, to avoid using [] all the time
+const NM80211Mode = NetworkManager['80211Mode'];
+const NM80211ApFlags = NetworkManager['80211ApFlags'];
+const NM80211ApSecurityFlags = NetworkManager['80211ApSecurityFlags'];
+
+function macToArray(string) {
+ return string.split(':').map(function(el) {
+ return parseInt(el, 16);
+ });
+}
+
+function macCompare(one, two) {
+ for (let i = 0; i < 6; i++) {
+ if (one[i] != two[i])
+ return false;
+ }
+ return true;
+}
+
+function ssidCompare(one, two) {
+ if (!one || !two)
+ return false;
+ if (one.length != two.length)
+ return false;
+ for (let i = 0; i < one.length; i++) {
+ if (one[i] != two[i])
+ return false;
+ }
+ return true;
+}
+
+// shared between NMNetworkMenuItem and NMDeviceWWAN
+function signalToIcon(value) {
+ if (value > 80)
+ return 'excellent';
+ if (value > 55)
+ return 'good';
+ if (value > 30)
+ return 'ok';
+ if (value > 5)
+ return 'weak';
+ return 'none';
+}
+
+// shared between NMNetworkMenuItem and NMDeviceWireless
+function sortAccessPoints(accessPoints) {
+ return accessPoints.sort(function (one, two) {
+ return two.strength - one.strength;
+ });
+}
+
+function NMNetworkMenuItem() {
+ this._init.apply(this, arguments);
+}
+
+NMNetworkMenuItem.prototype = {
+ __proto__: PopupMenu.PopupImageMenuItem.prototype,
+
+ _init: function(accessPoints, title, params) {
+ accessPoints = sortAccessPoints(accessPoints);
+ this.bestAP = accessPoints[0];
+
+ let ssid = this.bestAP.get_ssid();
+ title = title || NetworkManager.utils_ssid_to_utf8(ssid) || _("");
+
+ PopupMenu.PopupImageMenuItem.prototype._init.call(this, title, this._getIcon(), params);
+
+ this._accessPoints = [ ];
+ for (let i = 0; i < accessPoints.length; i++) {
+ let ap = accessPoints[i];
+ // need a wrapper object here, because the access points can be shared
+ // between many NMNetworkMenuItems
+ let apObj = {
+ ap: ap,
+ updateId: ap.connect('notify::strength', Lang.bind(this, this._updated))
+ };
+ this._accessPoints.push(apObj);
+ }
+ },
+
+ _updated: function(ap, strength) {
+ if (strength > this.bestAP.strength)
+ this.bestAP = ap;
+
+ this.setIcon(this._getIcon());
+ },
+
+ _getIcon: function() {
+ return 'network-wireless-signal-' + signalToIcon(this.bestAP.strength);
+ },
+
+ updateAccessPoints: function(accessPoints) {
+ for (let i = 0; i < this._accessPoints.length; i++) {
+ let apObj = this._accessPoints[i];
+ apObj.ap.disconnect(apObj.updateId);
+ apObj.updateId = 0;
+ }
+
+ accessPoints = sortAccessPoints(accessPoints);
+ this.bestAP = accessPoints[0];
+ this._accessPoints = [ ];
+ for (let i = 0; i < accessPoints; i++) {
+ let ap = accessPoints[i];
+ let apObj = {
+ ap: ap,
+ updateId: ap.connect('notify::strength', Lang.bind(this, this._updated))
+ };
+ this._accessPoints.push(apObj);
+ }
+ },
+
+ destroy: function() {
+ for (let i = 0; i < this._accessPoints.length; i++) {
+ let apObj = this._accessPoints[i];
+ apObj.ap.disconnect(apObj.updateId);
+ apObj.updateId = 0;
+ }
+
+ PopupMenu.PopupImageMenuItem.prototype.destroy.call(this);
+ }
+};
+
+function NMDeviceTitleMenuItem() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceTitleMenuItem.prototype = {
+ __proto__: PopupMenu.PopupBaseMenuItem.prototype,
+
+ _init: function(description, params) {
+ PopupMenu.PopupBaseMenuItem.prototype._init.call(this, params);
+
+ this._descriptionLabel = new St.Label({ text: description,
+ style_class: 'popup-subtitle-menu-item'
+ });
+ this.addActor(this._descriptionLabel);
+
+ this._statusBin = new St.Bin({ x_align: St.Align.END });
+ this.addActor(this._statusBin, { align: St.Align.END });
+
+ this._statusLabel = new St.Label({ text: '',
+ style_class: 'popup-inactive-menu-item'
+ });
+ this._switch = new PopupMenu.Switch(false);
+ this._statusBin.child = this._switch.actor;
+ },
+
+ setStatus: function(text) {
+ if (text) {
+ this._statusLabel.text = text;
+ this._statusBin.child = this._statusLabel;
+ this.actor.reactive = false;
+ this.actor.can_focus = false;
+ } else {
+ this._statusBin.child = this._switch.actor;
+ this.actor.reactive = true;
+ this.actor.can_focus = true;
+ }
+ },
+
+ activate: function(event) {
+ if (this._switch.actor.mapped) {
+ this._switch.toggle();
+ this.emit('toggled', this._switch.state);
+ }
+
+ PopupMenu.PopupBaseMenuItem.prototype.activate.call(this, event);
+ },
+
+ get state() {
+ return this._switch.state;
+ },
+
+ setToggleState: function(newval) {
+ this._switch.setToggleState(newval);
+ }
+};
+
+function NMWiredSectionTitleMenuItem() {
+ this._init.apply(this, arguments);
+}
+
+NMWiredSectionTitleMenuItem.prototype = {
+ __proto__: NMDeviceTitleMenuItem.prototype,
+
+ updateForDevice: function(device) {
+ if (device) {
+ this._device = device;
+ this.setStatus(device.getStatusLabel());
+ this.setToggleState(device.connected);
+ } else
+ this.setStatus('');
+ },
+
+ activate: function(event) {
+ NMDeviceTitleMenuItem.prototype.activate.call(this, event);
+
+ if (!this._device) {
+ log('Section title activated when there is more than one device, should be non reactive');
+ return;
+ }
+
+ if (this._switch.state)
+ this._device.activate();
+ else
+ this._device.deactivate();
+ }
+};
+
+function NMWirelessSectionTitleMenuItem() {
+ this._init.apply(this, arguments);
+}
+
+NMWirelessSectionTitleMenuItem.prototype = {
+ __proto__: NMDeviceTitleMenuItem.prototype,
+
+ _init: function(client, property, title, params) {
+ NMDeviceTitleMenuItem.prototype._init.call(this, title, params);
+
+ this._client = client;
+ this._property = property + '_enabled';
+ this._propertyHardware = property + '_hardware_enabled';
+ this._setEnabledFunc = property + '_set_enabled';
+
+ this._client.connect('notify::' + property + '-enabled', Lang.bind(this, this._propertyChanged));
+ this._client.connect('notify::' + property + '-hardware-enabled', Lang.bind(this, this._propertyChanged));
+
+ this._propertyChanged();
+ },
+
+ updateForDevice: function(device) {
+ // we show the switch
+ // - if there not just one device
+ // - if the switch is off
+ // - if the device is activated or disconnected
+ if (device && this._softwareEnabled && this._hardwareEnabled) {
+ let text = device.getStatusLabel();
+ this.setStatus(text);
+ } else
+ this.setStatus(null);
+ },
+
+ activate: function(event) {
+ NMDeviceTitleMenuItem.prototype.activate.call(this, event);
+
+ this._client[this._setEnabledFunc](this._switch.state);
+ },
+
+ _propertyChanged: function() {
+ this._softwareEnabled = this._client[this._property];
+ this._hardwareEnabled = this._client[this._propertyHardware];
+
+ let enabled = this._softwareEnabled && this._hardwareEnabled;
+ this.setToggleState(enabled);
+ if (!this._hardwareEnabled)
+ /* Translators: this indicates that wireless or wwan is disabled by hardware killswitch */
+ this.setStatus(_("disabled"));
+
+ this.emit('enabled-changed', enabled);
+ }
+};
+
+function NMDevice() {
+ throw new TypeError('Instantanting abstract class NMDevice');
+}
+
+NMDevice.prototype = {
+ _init: function(client, device, connections) {
+ this.device = device;
+ if (device) {
+ this.device._delegate = this;
+ this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
+ } else
+ this._stateChangedId = 0;
+
+ // protected
+ this._client = client;
+ this._connections = [ ];
+ for (let i = 0; i < connections.length; i++) {
+ if (!connections[i]._uuid)
+ continue;
+ if (!this.connectionValid(connections[i]))
+ continue;
+ // record the connection
+ let obj = {
+ connection: connections[i],
+ name: connections[i]._name,
+ uuid: connections[i]._uuid,
+ timestamp: connections[i]._timestamp,
+ };
+ this._connections.push(obj);
+ }
+ this._connections.sort(function(one, two) {
+ return two.timestamp - one.timestamp;
+ });
+ this._activeConnection = null;
+ this._activeConnectionItem = null;
+ this._autoConnectionItem = null;
+
+ if (this.device) {
+ this.statusItem = new NMDeviceTitleMenuItem(this._getDescription());
+ this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
+ if (state)
+ this.activate();
+ else
+ this.deactivate();
+ this.emit('enabled-changed');
+ }));
+ }
+ this.section = new PopupMenu.PopupMenuSection();
+
+ this._createSection();
+ },
+
+ destroy: function() {
+ if (this.device)
+ this.device._delegate = null;
+
+ if (this._stateChangedId) {
+ // Need to go through GObject.Object.prototype because
+ // nm_device_disconnect conflicts with g_signal_disconnect
+ GObject.Object.prototype.disconnect.call(this.device, this._stateChangedId);
+ this._stateChangedId = 0;
+ }
+
+ this._clearSection();
+ if (this.titleItem)
+ this.titleItem.destroy();
+ this.section.destroy();
+ },
+
+ deactivate: function() {
+ this.device.disconnect(null);
+ },
+
+ activate: function() {
+ if (this._activeConnection)
+ // nothing to do
+ return;
+
+ // pick the most recently used connection and connect to that
+ // or if no connections ever set, create an automatic one
+ if (this._connections.length > 0) {
+ this._client.activate_connection(this._connections[0].connection.path, this.device, null, null);
+ } else if (this._autoConnectionName) {
+ let connection = this._createAutomaticConnection();
+ this._client.add_and_activate_connection(connection, this.device, null, null);
+ }
+ },
+
+ get connected() {
+ return this.device.state == NetworkManager.DeviceState.ACTIVATED;
+ },
+
+ setActiveConnection: function(activeConnection) {
+ if (activeConnection == this._activeConnection)
+ // nothing to do
+ return;
+
+ // remove any UI
+ if (this._activeConnectionItem) {
+ this._activeConnectionItem.destroy();
+ this._activeConnectionItem = null;
+ }
+
+ this._activeConnection = activeConnection;
+
+ this._clearSection();
+ this._createSection();
+ },
+
+ checkConnection: function(connection) {
+ let exists = this._findConnection(connection) != -1;
+ let valid = this.connectionValid(connection);
+ if (exists && !valid)
+ this.removeConnection(connection);
+ else if (!exists && valid)
+ this.addConnection(connection);
+ },
+
+ addConnection: function(connection) {
+ // record the connection
+ let obj = {
+ connection: connection,
+ name: connection._name,
+ uuid: connection._uuid,
+ timestamp: connection._timestamp,
+ };
+ this._connections.push(obj);
+ this._connections.sort(function(one, two) {
+ return two.timestamp - one.timestamp;
+ });
+
+ this._clearSection();
+ this._createSection();
+ },
+
+ removeConnection: function(connection) {
+ if (!connection._uuid) {
+ log('Cannot remove a connection without an UUID');
+ return;
+ }
+ let pos = this._findConnection(connection._uuid);
+ if (pos == -1) {
+ // this connection was never added, nothing to do here
+ return;
+ }
+
+ let obj = this._connections[pos];
+ if (obj.item)
+ obj.item.destroy();
+ this._connections.splice(pos, 1);
+
+ if (this._connections.length <= 1) {
+ // We need to show the automatic connection again
+ // (or in the case of NMDeviceWired, we want to hide
+ // the only explicit connection)
+ this._clearSection();
+ this._createSection();
+ }
+ },
+
+ connectionValid: function(connection) {
+ throw new TypeError('Invoking pure virtual function NMDevice.connectionValid');
+ },
+
+ setEnabled: function(enabled) {
+ // do nothing by default, we want to keep the conneciton list visible
+ // in the majority of cases (wired, wwan, vpn)
+ },
+
+ getStatusLabel: function() {
+ switch(this.device.state) {
+ case NetworkManager.DeviceState.DISCONNECTED:
+ case NetworkManager.DeviceState.ACTIVATED:
+ return null;
+ case NetworkManager.DeviceState.PREPARE:
+ case NetworkManager.DeviceState.CONFIG:
+ case NetworkManager.DeviceState.IP_CONFIG:
+ return _("connecting...");
+ case NetworkManager.DeviceState.NEED_AUTH:
+ /* Translators: this is for network connections that require some kind of key or password */
+ return _("authentication required");
+ case NetworkManager.DeviceState.UNAVAILABLE:
+ // This state is actually a compound of various states (generically unavailable,
+ // firmware missing, carrier not available), that are exposed by different properties
+ // (whose state may or may not updated when we receive state-changed).
+ if (!this._firmwareMissingId)
+ this._firmwareMissingId = this.device.connect('notify::firmware-missing', Lang.bind(this, this._substateChanged));
+ if (this.device.firmware_missing) {
+ /* Translators: this is for devices that require some kind of firmware or kernel
+ module, which is missing */
+ return _("firmware missing");
+ }
+ if (this.device.capabilities & NetworkManager.DeviceCapabilities.CARRIER_DETECT) {
+ if (!this._carrierChangedId)
+ this._carrierChangedId = this.device.connect('notify::carrier', Lang.bind(this, this._substateChanged));
+ if (!this.carrier) {
+ /* Translators: this is for wired network devices that are physically disconnected */
+ return _("cable unplugged");
+ }
+ }
+ /* Translators: this is for a network device that cannot be activated (for example it
+ is disabled by rfkill, or it has no coverage */
+ return _("unavailable");
+ case NetworkManager.DeviceState.FAILED:
+ return _("connection failed");
+ default:
+ log('Device state invalid, is %d'.format(this.device.state));
+ return 'invalid';
+ }
+ },
+
+ // protected
+ _createAutomaticConnection: function() {
+ throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
+ },
+
+ _findConnection: function(uuid) {
+ for (let i = 0; i < this._connections.length; i++) {
+ let obj = this._connections[i];
+ if (obj.uuid == uuid)
+ return i;
+ }
+ return -1;
+ },
+
+ _clearSection: function() {
+ // Clear everything
+ this.section.removeAll();
+ this._autoConnectionItem = null;
+ this._activeConnectionItem = null;
+ for (let i = 0; i < this._connections.length; i++) {
+ this._connections[i].item = null;
+ }
+ },
+
+ _shouldShowConnectionList: function() {
+ return (this.device.state == NetworkManager.DeviceState.DISCONNECTED ||
+ this.device.state == NetworkManager.DeviceState.ACTIVATED);
+ },
+
+ _createSection: function() {
+ if (!this._shouldShowConnectionList())
+ return;
+
+ if (this._activeConnection) {
+ this._createActiveConnectionItem();
+ this.section.addMenuItem(this._activeConnectionItem);
+ }
+ if (this._connections.length > 0) {
+ for(let j = 0; j < this._connections.length; ++j) {
+ let obj = this._connections[j];
+ if (this._activeConnection &&
+ obj.connection == this._activeConnection._connection)
+ continue;
+ obj.item = this._createConnectionItem(obj);
+ this.section.addMenuItem(obj.item);
+ }
+ } else if (this._autoConnectionName) {
+ this._autoConnectionItem = new PopupMenu.PopupMenuItem(this._autoConnectionName);
+ this._autoConnectionItem.connect('activate', Lang.bind(this, function() {
+ let connection = this._createAutomaticConnection();
+ this._client.add_and_activate_connection(connection, this.device, null, null);
+ }));
+ this.section.addMenuItem(this._autoConnectionItem);
+ }
+ },
+
+ _createConnectionItem: function(obj) {
+ let path = obj.connection.path;
+ let item = new PopupMenu.PopupMenuItem(obj.name);
+ item.connect('activate', Lang.bind(this, function() {
+ this._client.activate_connection(path, this.device, null, null);
+ }));
+ return item;
+ },
+
+ _createActiveConnectionItem: function() {
+ let title;
+ let active = this._activeConnection._connection;
+ if (active) {
+ title = active._name;
+ } else {
+ /* TRANSLATORS: this is the indication that a connection for another logged in user is active,
+ and we cannot access its settings (including the name) */
+ title = _("Connected (private)");
+ }
+ this._activeConnectionItem = new PopupMenu.PopupMenuItem(title, { reactive: false });
+ this._activeConnectionItem.setShowDot(true);
+ },
+
+ _deviceStateChanged: function(device, newstate, oldstate, reason) {
+ if (newstate == oldstate) {
+ log('device emitted state-changed without actually changing state');
+ return;
+ }
+
+ if (oldstate == NetworkManager.DeviceState.ACTIVATED) {
+ this.emit('network-lost');
+ }
+
+ switch(newstate) {
+ case NetworkManager.DeviceState.NEED_AUTH:
+ // FIXME: make this have a real effect
+ // (currently we rely on a running nm-applet)
+ this.emit('need-auth');
+ break;
+ case NetworkManager.DeviceState.FAILED:
+ this.emit('activation-failed', reason);
+ break;
+ }
+
+ if (this._carrierChangedId) {
+ // see above for why this is needed
+ GObject.Object.prototype.disconnect.call(this.device, this._carrierChangedId);
+ this._carrierChangedId = 0;
+ }
+ if (this._firmwareChangedId) {
+ GObject.Object.prototype.disconnect.call(this.device, this._firmwareChangedId);
+ this._firmwareChangedId = 0;
+ }
+
+ this.statusItem.setStatus(this.getStatusLabel());
+ this.statusItem.setToggleState(this.connected);
+
+ this._clearSection();
+ this._createSection();
+ this.emit('state-changed');
+ },
+
+ _substateChanged: function() {
+ this.statusItem.setStatus(this.getStatusLabel());
+
+ this.emit('state-changed');
+ },
+
+ _getDescription: function() {
+ let dev_product = this.device.get_product();
+ let dev_vendor = this.device.get_vendor();
+ if (!dev_product || !dev_vendor)
+ return null;
+
+ let product = Util.fixupPCIDescription(dev_product);
+ let vendor = Util.fixupPCIDescription(dev_vendor);
+ let out = '';
+
+ // Another quick hack; if all of the fixed up vendor string
+ // is found in product, ignore the vendor.
+ if (product.indexOf(vendor) == -1)
+ out += vendor + ' ';
+ out += product;
+
+ return out;
+ }
+};
+Signals.addSignalMethods(NMDevice.prototype);
+
+
+function NMDeviceWired() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceWired.prototype = {
+ __proto__: NMDevice.prototype,
+
+ _init: function(client, device, connections) {
+ this._autoConnectionName = _("Auto Ethernet");
+ this.category = NMConnectionCategory.WIRED;
+
+ NMDevice.prototype._init.call(this, client, device, connections);
+ },
+
+ connectionValid: function(connection) {
+ if (connection._type != NetworkManager.SETTING_WIRED_SETTING_NAME)
+ return false;
+
+ let ethernetSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRED_SETTING_NAME);
+ let fixedMac = ethernetSettings.get_mac_address();
+ if (fixedMac)
+ return macCompare(fixedMac, macToArray(this.device.perm_hw_address));
+ return true;
+ },
+
+ _createSection: function() {
+ NMDevice.prototype._createSection.call(this);
+
+ // if we have only one connection (normal or automatic)
+ // we hide the connection list, and use the switch to control
+ // the device
+ // we can do it here because addConnection and removeConnection
+ // both call _createSection at some point
+ if (this._connections.length <= 1)
+ this.section.actor.hide();
+ else
+ this.section.actor.show();
+ },
+
+ _createAutomaticConnection: function() {
+ let connection = new NetworkManager.Connection();
+ connection._uuid = NetworkManager.utils_uuid_generate();
+ connection.add_setting(new NetworkManager.SettingWired());
+ connection.add_setting(new NetworkManager.SettingConnection({
+ uuid: connection._uuid,
+ id: this._autoConnectionName,
+ type: NetworkManager.SETTING_WIRED_SETTING_NAME,
+ autoconnect: true
+ }));
+ return connection;
+ }
+};
+
+function NMDeviceModem() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceModem.prototype = {
+ __proto__: NMDevice.prototype,
+
+ _init: function(client, device, connections) {
+ let is_wwan = false;
+
+ this._enabled = true;
+ this.mobileDevice = null;
+ this._connectionType = 'ppp';
+
+ this._capabilities = device.current_capabilities;
+ if (this._capabilities & NetworkManager.DeviceModemCapabilities.GSM_UMTS) {
+ is_wwan = true;
+ this.mobileDevice = new ModemManager.ModemGsm(device.udi);
+ this._connectionType = NetworkManager.SETTING_GSM_SETTING_NAME;
+ } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.CDMA_EVDO) {
+ is_wwan = true;
+ this.mobileDevice = new ModemManager.ModemCdma(device.udi);
+ this._connectionType = NetworkManager.SETTING_CDMA_SETTING_NAME;
+ } else if (this._capabilities & NetworkManager.DeviceModemCapabilities.LTE) {
+ is_wwan = true;
+ // FIXME: support signal quality
+ }
+
+ if (is_wwan) {
+ this.category = NMConnectionCategory.WWAN;
+ this._autoConnectionName = _("Auto broadband");
+ } else {
+ this.category = NMConnectionCategory.WIRED;
+ this._autoConnectionName = _("Auto dial-up");
+ }
+
+ if (this.mobileDevice) {
+ this._operatorNameId = this.mobileDevice.connect('notify::operator-name', Lang.bind(this, function() {
+ if (this._operatorItem) {
+ let name = this.mobileDevice.operator_name;
+ if (name) {
+ this._operatorItem.label.text = name;
+ this._operatorItem.actor.show();
+ } else
+ this._operatorItem.actor.hide();
+ }
+ }));
+ this._signalQualityId = this.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
+ if (this._operatorItem) {
+ this._operatorItem.setIcon(this._getSignalIcon());
+ }
+ }));
+ }
+
+ NMDevice.prototype._init.call(this, client, device, connections, 1);
+ },
+
+ setEnabled: function(enabled) {
+ this._enabled = enabled;
+ if (this.category == NMConnectionCategory.WWAN) {
+ if (enabled) {
+ // prevent "network unavailable" statuses
+ this.statusItem.setStatus(null);
+ } else
+ this.statusItem.setStatus(this.getStatusLabel());
+ }
+
+ NMDevice.prototype.setEnabled.call(this, enabled);
+ },
+
+ get connected() {
+ return this._enabled && this.device.state == NetworkManager.DeviceState.CONNECTED;
+ },
+
+ destroy: function() {
+ if (this._operatorNameId) {
+ this.mobileDevice.disconnect(this._operatorNameId);
+ this._operatorNameId = 0;
+ }
+ if (this._signalQualityId) {
+ this.mobileDevice.disconnect(this._signalQualityId);
+ this._signalQualityId = 0;
+ }
+
+ NMDevice.prototype.destroy.call(this);
+ },
+
+ _getSignalIcon: function() {
+ return 'network-cellular-signal-' + signalToIcon(this.mobileDevice.signal_quality);
+ },
+
+ _createSection: function() {
+ if (this.mobileDevice) {
+ // If operator_name is null, just pass the empty string, as the item is hidden anyway
+ this._operatorItem = new PopupMenu.PopupImageMenuItem(this.mobileDevice.operator_name || '',
+ this._getSignalIcon(),
+ { reactive: false });
+ if (this.mobileDevice.operator_name)
+ this._operatorItem.actor.hide();
+ this.section.addMenuItem(this._operatorItem);
+ }
+
+ NMDevice.prototype._createSection.call(this);
+ },
+
+ clearSection: function() {
+ this._operatorItem = null;
+
+ NMDevice.prototype._clearSection.call(this);
+ },
+
+ connectionValid: function(connection) {
+ return connection._type == this._connectionType;
+ },
+
+ _createAutomaticConnection: function() {
+ // FIXME: we need to summon the mobile wizard here
+ // or NM will not have the necessary parameters to complete the connection
+ // pending a DBus method on nm-applet
+
+ let connection = new NetworkManager.Connection;
+ connection._uuid = NetworkManager.utils_uuid_generate();
+ connection.add_setting(new NetworkManager.SettingConnection({
+ uuid: connection._uuid,
+ id: this._autoConnectionName,
+ type: this._connectionType,
+ autoconnect: false
+ }));
+ return connection;
+ }
+};
+
+function NMDeviceBluetooth() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceBluetooth.prototype = {
+ __proto__: NMDevice.prototype,
+
+ _init: function(client, device, connections) {
+ this._autoConnectionName = this._makeConnectionName(device);
+ device.connect('notify::name', Lang.bind(this, this._updateAutoConnectionName));
+
+ this.category = NMConnectionCategory.WWAN;
+
+ NMDevice.prototype._init.call(this, client, device, connections);
+ },
+
+ connectionValid: function(connection) {
+ if (connection._type != NetworkManager.SETTING_BLUETOOTH_SETTING_NAME)
+ return false;
+
+ let bluetoothSettings = connection.get_setting_by_name(NetworkManager.SETTING_BLUETOOTH_SETTING_NAME);
+ let fixedBdaddr = bluetoothSettings.get_bdaddr();
+ if (fixedBdaddr)
+ return macCompare(fixedBdaddr, macToArray(this.device.hw_address));
+
+ return true;
+ },
+
+ _createAutomaticConnection: function() {
+ let connection = new NetworkManager.Connection;
+ connection._uuid = NetworkManager.utils_uuid_generate();
+ connection.add_setting(new NetworkManager.SettingBluetooth);
+ connection.add_setting(new NetworkManager.SettingConnection({
+ uuid: connection._uuid,
+ id: this._autoConnectionName,
+ type: NetworkManager.SETTING_BLUETOOTH_SETTING_NAME,
+ autoconnect: false
+ }));
+ return connection;
+ },
+
+ _makeConnectionName: function(device) {
+ let name = device.name;
+ if (name)
+ return _("Auto %s").format(name);
+ else
+ return _("Auto bluetooth");
+ },
+
+ _updateAutoConnectionName: function() {
+ this._autoConnectionName = this._makeConnectioName(this.device);
+
+ this._clearSection();
+ this._createSection();
+ }
+};
+
+
+// Not a real device, but I save a lot code this way
+function NMDeviceVPN() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceVPN.prototype = {
+ __proto__: NMDevice.prototype,
+
+ _init: function(client) {
+ // Disable autoconnections
+ this._autoConnectionName = null;
+ this.category = NMConnectionCategory.VPN;
+
+ NMDevice.prototype._init.call(this, client, null, [ ]);
+ },
+
+ connectionValid: function(connection) {
+ return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME;
+ },
+
+ get empty() {
+ return this._connections.length == 0;
+ },
+
+ get connected() {
+ return true;
+ },
+
+ _shouldShowConnectionList: function() {
+ return true;
+ },
+
+ deactivate: function() {
+ if (this._activeConnection)
+ this._client.deactivate_connection(this._activeConnection);
+ },
+
+ getStatusLabel: function() {
+ return null;
+ }
+};
+
+function NMDeviceWireless() {
+ this._init.apply(this, arguments);
+}
+
+NMDeviceWireless.prototype = {
+ __proto__: NMDevice.prototype,
+
+ _init: function(client, device, connections) {
+ this.category = NMConnectionCategory.WIRELESS;
+
+ this._overflowItem = null;
+ this._networks = [ ];
+
+ // breaking the layers with this, but cannot call
+ // this.connectionValid until I have a device
+ this.device = device;
+
+ let validConnections = connections.filter(Lang.bind(this, function(connection) {
+ return this.connectionValid(connection);
+ }));
+ let accessPoints = device.get_access_points() || [ ];
+ for (let i = 0; i < accessPoints.length; i++) {
+ // Access points are grouped by network
+ let ap = accessPoints[i];
+ let pos = this._findNetwork(ap);
+ let obj;
+ if (pos != -1) {
+ obj = this._networks[pos];
+ obj.accessPoints.push(ap);
+ } else {
+ obj = { ssid: ap.get_ssid(),
+ mode: ap.mode,
+ security: this._getApSecurityType(ap),
+ connections: [ ],
+ item: null,
+ accessPoints: [ ap ]
+ };
+ this._networks.push(obj);
+ }
+
+ // Check if some connection is valid for this AP
+ for (let j = 0; j < validConnections.length; j++) {
+ let connection = validConnections[j];
+ if (this._connectionValidForAP(connection, ap) &&
+ obj.connections.indexOf(connection) == -1) {
+ obj.connections.push(connection);
+ }
+ }
+ }
+ this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
+ this._apRemovedId = device.connect('access-point-removed', Lang.bind(this, this._accessPointRemoved));
+
+ NMDevice.prototype._init.call(this, client, device, validConnections);
+ },
+
+ destroy: function() {
+ if (this._apAddedId) {
+ // see above for this HACK
+ GObject.Object.prototype.disconnect.call(this.device, this._apAddedId);
+ this._apAddedId = 0;
+ }
+
+ if (this._apRemovedId) {
+ GObject.Object.prototype.disconnect.call(this.device, this._apRemovedId);
+ this._apRemovedId = 0;
+ }
+
+ NMDevice.prototype.destroy.call(this);
+ },
+
+ setEnabled: function(enabled) {
+ if (enabled) {
+ this.statusItem.actor.show();
+ this.section.actor.show();
+ } else {
+ this.statusItem.actor.hide();
+ this.section.actor.hide();
+ }
+ },
+
+ activate: function() {
+ if (this._activeConnection)
+ // nothing to do
+ return;
+
+ // among all visible networks, pick the last recently used connection
+ let best = null;
+ let bestApObj = null;
+ let bestTime = 0;
+ for (let i = 0; i < this._networks.length; i++) {
+ let apObj = this._networks[i];
+ for (let j = 0; j < apObj.connections.length; j++) {
+ let connection = apObj.connections[j];
+ if (connection._timestamp > bestTime) {
+ best = connection;
+ bestTime = connection._timestamp;
+ bestApObj = apObj;
+ }
+ }
+ }
+
+ if (best) {
+ for (let i = 0; i < bestApObj.accessPoints.length; i++) {
+ let ap = bestApObj.accessPoints[i];
+ if (this._connectionValidForAP(best, ap)) {
+ this._client.activate_connection(best.path, this.device, ap.dbus_path, null);
+ break;
+ }
+ }
+ return;
+ }
+
+ // XXX: what else to do?
+ // for now, just pick a random network
+ // (this function is called in a corner case anyway, that is, only when
+ // the user toggles the switch and has more than one wireless device)
+ if (this._networks.length > 0) {
+ let connection = this._createAutomaticConnection(this._networks[0]);
+ let accessPoints = sortAccessPoints(this._networks[0].accessPoints);
+ this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null);
+ }
+ },
+
+ _getApSecurityType: function(accessPoint) {
+ if (accessPoint._secType)
+ return accessPoint._secType;
+ // XXX: have this checked by someone familiar with IEEE 802.1x
+
+ let flags = accessPoint.flags;
+ let wpa_flags = accessPoint.wpa_flags;
+ let rsn_flags = accessPoint.rsn_flags;
+ let type;
+ if ( !(flags & NM80211ApFlags.PRIVACY)
+ && (wpa_flags == NM80211ApSecurityFlags.NONE)
+ && (rsn_flags == NM80211ApSecurityFlags.NONE))
+ type = NMAccessPointSecurity.NONE;
+ else if ( (flags & NM80211ApFlags.PRIVACY)
+ && (wpa_flags == NM80211ApSecurityFlags.NONE)
+ && (rsn_flags == NM80211ApSecurityFlags.NONE))
+ type = NMAccessPointSecurity.WEP;
+ else if ( !(flags & NM80211ApFlags.PRIVACY)
+ && (wpa_flags != NM80211ApSecurity.NONE)
+ && (rsn_flags != NM80211ApSecurity.NONE))
+ type = NMAccessPointSecurity.WPA;
+ else
+ type = NMAccessPointSecurity.WPA2;
+
+ // cache the found value to avoid checking flags all the time
+ accessPoint._secType = type;
+ return type;
+ },
+
+ _networkCompare: function(network, accessPoint) {
+ if (!ssidCompare(network.ssid, accessPoint.get_ssid()))
+ return false;
+ if (network.mode != accessPoint.mode)
+ return false;
+ if (network.security != this._getApSecurityType(accessPoint))
+ return false;
+
+ return true;
+ },
+
+ _findNetwork: function(accessPoint) {
+ for (let i = 0; i < this._networks.length; i++) {
+ if (this._networkCompare(this._networks[i], accessPoint))
+ return i;
+ }
+ return -1;
+ },
+
+ _accessPointAdded: function(device, accessPoint) {
+ let pos = this._findNetwork(accessPoint);
+ let apObj;
+ if (pos != -1) {
+ apObj = this._networks[pos];
+ if (apObj.accessPoints.indexOf(accessPoint) != -1) {
+ log('Access point was already seen, not adding again');
+ return;
+ }
+
+ apObj.accessPoints.push(accessPoint);
+ } else {
+ apObj = { ssid: accessPoint.get_ssid(),
+ mode: accessPoint.mode,
+ security: this._getApSecurityType(accessPoint),
+ connections: [ ],
+ item: null,
+ accessPoints: [ accessPoint ]
+ };
+ this._networks.push(apObj);
+ }
+
+ // check if this enables new connections for this group
+ for (let i = 0; i < this._connections.length; i++) {
+ let connection = this._connections[i].connection;
+ if (this._connectionValidForAP(connection, accessPoint) &&
+ apObj.connections.indexOf(connection) == -1) {
+ apObj.connections.push(connection);
+ }
+ }
+
+ // update everything
+ this._clearSection();
+ this._createSection();
+ },
+
+ _accessPointRemoved: function(device, accessPoint) {
+ let pos = this._findNetwork(accessPoint);
+
+ if (pos == -1) {
+ log('Removing an access point that was never added');
+ return;
+ }
+
+ let apObj = this._networks[pos];
+ let i = apObj.accessPoints.indexOf(accessPoint);
+
+ if (i == -1) {
+ log('Removing an access point that was never added');
+ return;
+ }
+
+ apObj.accessPoints.splice(i, 1);
+
+ if (apObj.accessPoints.length == 0) {
+ if (apObj.item)
+ apObj.item.destroy();
+ this._networks.splice(pos, 1);
+ } else if (apObj.item)
+ apObj.item.updateAccessPoints(apObj.accessPoints);
+ },
+
+ _createAPItem: function(connection, accessPointObj, useConnectionName) {
+ let item = new NMNetworkMenuItem(accessPointObj.accessPoints, useConnectionName ? connection._name : undefined);
+ item._connection = connection;
+ item.connect('activate', Lang.bind(this, function() {
+ let accessPoints = sortAccessPoints(accessPointObj.accessPoints);
+ for (let i = 0; i < accessPoints.length; i++) {
+ if (this._connectionValidForAP(connection, accessPoints[i])) {
+ this._client.activate_connection(connection.path, this.device, accessPoints[i].dbus_path, null);
+ break;
+ }
+ }
+ }));
+ return item;
+ },
+
+ connectionValid: function(connection) {
+ if (connection._type != NetworkManager.SETTING_WIRELESS_SETTING_NAME)
+ return false;
+
+ let wirelessSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SETTING_NAME);
+ let wirelessSecuritySettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SECURITY_SETTING_NAME);
+
+ let fixedMac = wirelessSettings.get_mac_address();
+ if (fixedMac && !macCompare(fixedMac, macToArray(this.device.perm_hw_address)))
+ return false;
+
+ if (wirelessSecuritySettings &&
+ wirelessSecuritySettings.key_mgmt != 'none' &&
+ wirelessSecuritySettings.key_mgmt != 'ieee8021x') {
+ let capabilities = this.device.wireless_capabilities;
+ if (!(capabilities & NetworkManager.DeviceWifiCapabilities.WPA) ||
+ !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_TKIP))
+ return false;
+ if (wirelessSecuritySettings.get_num_protos() == 1 &&
+ wirelessSecuritySettings.get_proto(0) == 'rsn' &&
+ !(capabilities & NetworkManager.DeviceWifiCapabilities.RSN))
+ return false;
+ if (wirelessSecuritySettings.get_num_pairwise() == 1 &&
+ wirelessSecuritySettings.get_pairwise(0) == 'ccmp' &&
+ !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_CCMP))
+ return false;
+ if (wirelessSecuritySettings.get_num_groups() == 1 &&
+ wirelessSecuritySettings.get_group(0) == 'ccmp' &&
+ !(capabilities & NetworkManager.DeviceWifiCapabilities.CIPHER_CCMP))
+ return false;
+ }
+ return true;
+ },
+
+ _clearSection: function() {
+ NMDevice.prototype._clearSection.call(this);
+
+ for (let i = 0; i < this._networks.length; i++)
+ this._networks[i].item = null;
+ this._overflowItem = null;
+ },
+
+ removeConnection: function(connection) {
+ if (!connection._uuid)
+ return;
+ let pos = this._findConnection(connection._uuid);
+ if (pos == -1) {
+ // removing connection that was never added
+ return;
+ }
+
+ let obj = this._connections[pos];
+ this._connections.splice(pos, 1);
+
+ let anyauto = false, forceupdate = false;
+ for (let i = 0; i < this._networks.length; i++) {
+ let apObj = this._networks[i];
+ let connections = apObj.connections;
+ for (let k = 0; k < connections.length; k++) {
+ if (connections[k]._uuid == connection._uuid) {
+ // remove the connection from the access point group
+ connections.splice(k);
+ anyauto = connections.length == 0;
+ if (apObj.item) {
+ if (apObj.item instanceof PopupMenu.PopupSubMenuMenuItem) {
+ let items = apObj.item.menu.getMenuItems();
+ if (items.length == 2) {
+ // we need to update the connection list to convert this to a normal item
+ forceupdate = true;
+ } else {
+ for (let j = 0; j < items.length; j++) {
+ if (items[j]._connection._uuid == connection._uuid) {
+ items[j].destroy();
+ break;
+ }
+ }
+ }
+ } else {
+ apObj.item.destroy();
+ apObj.item = null;
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ if (forceupdate || anyauto) {
+ this._clearSection();
+ this._createSection();
+ }
+ },
+
+ addConnection: function(connection) {
+ // record the connection
+ let obj = {
+ connection: connection,
+ name: connection._name,
+ uuid: connection._uuid,
+ };
+ this._connections.push(obj);
+
+ // find an appropriate access point
+ let any = false, forceupdate = false;
+ for (let i = 0; i < this._networks.length; i++) {
+ let apObj = this._networks[i];
+
+ // Check if connection is valid for any of these access points
+ let any = false;
+ for (let k = 0; k < apObj.accessPoints.length; k++) {
+ let ap = apObj.accessPoints[k];
+ if (this._connectionValidForAP(connection, ap)) {
+ apObj.connections.push(connection);
+ any = true;
+ break;
+ }
+ }
+
+ if (any && this._shouldShowConnectionList()) {
+ // we need to show this connection
+ if (apObj.item && apObj.item.menu) {
+ // We're already showing the submenu for this access point
+ apObj.item.menu.addMenuItem(this._createAPItem(connection, apObj, true));
+ } else {
+ if (apObj.item)
+ apObj.item.destroy();
+ if (apObj.connections.length == 1) {
+ apObj.item = this._createAPItem(connection, apObj, false);
+ this.section.addMenuItem(apObj.item);
+ } else {
+ apObj.item = null;
+ // we need to force an update to create the submenu
+ forceupdate = true;
+ }
+ }
+ }
+ }
+
+ if (forceupdate) {
+ this._clearSection();
+ this._createSection();
+ }
+ },
+
+ _connectionValidForAP: function(connection, ap) {
+ // copied and adapted from nm-applet
+ let wirelessSettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SETTING_NAME);
+ if (!ssidCompare(wirelessSettings.get_ssid(), ap.get_ssid()))
+ return false;
+
+ let wirelessSecuritySettings = connection.get_setting_by_name(NetworkManager.SETTING_WIRELESS_SECURITY_SETTING_NAME);
+
+ let fixedBssid = wirelessSettings.get_bssid();
+ if (fixedBssid && !macCompare(fixedBssid, macToArray(ap.hw_address)))
+ return false;
+
+ let fixedBand = wirelessSettings.band;
+ if (fixedBand) {
+ let freq = ap.frequency;
+ if (fixedBand == 'a' && (freq < 4915 || freq > 5825))
+ return false;
+ if (fixedBand == 'bg' && (freq < 2412 || freq > 2484))
+ return false;
+ }
+
+ let fixedChannel = wirelessSettings.channel;
+ if (fixedChannel && fixedChannel != NetworkManager.utils_wifi_freq_to_channel(ap.frequency))
+ return false;
+
+ if (!wirelessSecuritySettings)
+ return true;
+
+ return wirelessSettings.ap_security_compatible(wirelessSecuritySettings, ap.flags, ap.wpa_flags, ap.rsn_flags, ap.mode);
+ },
+
+ _createActiveConnectionItem: function() {
+ let activeAp = this.device.active_access_point;
+ let icon, title;
+ if (this._activeConnection._connection) {
+ let connection = this._activeConnection._connection;
+ if (activeAp)
+ this._activeConnectionItem = new NMNetworkMenuItem([ activeAp ], undefined,
+ { reactive: false });
+ else
+ this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(connection._name,
+ 'network-wireless-connected',
+ { reactive: false });
+ } else {
+ // We cannot read the connection (due to ACL, or API incompatibility), but we still show signal if we have it
+ let menuItem;
+ if (activeAp)
+ this._activeConnectionItem = new NMNetworkMenuItem([ activeAp ], undefined,
+ { reactive: false });
+ else
+ this._activeConnectionItem = new PopupMenu.PopupImageMenuItem(_("Connected (private)"),
+ 'network-wireless-connected',
+ { reactive: false });
+ }
+ this._activeConnectionItem.setShowDot(true);
+ },
+
+ _createAutomaticConnection: function(apObj) {
+ let name;
+ let ssid = NetworkManager.utils_ssid_to_utf8(apObj.ssid);
+ if (ssid) {
+ /* TRANSLATORS: this the automatic wireless connection name (including the network name) */
+ name = _("Auto %s").format(ssid);
+ } else
+ name = _("Auto wireless");
+
+ let connection = new NetworkManager.Connection();
+ connection.add_setting(new NetworkManager.SettingWireless());
+ connection.add_setting(new NetworkManager.SettingConnection({
+ id: name,
+ autoconnect: true, // NetworkManager will know to ignore this if appropriate
+ uuid: NetworkManager.utils_uuid_generate(),
+ type: NetworkManager.SETTING_WIRELESS_SETTING_NAME
+ }));
+ return connection;
+ },
+
+ _createSection: function() {
+ if (!this._shouldShowConnectionList())
+ return;
+
+ if(this._activeConnection) {
+ this._createActiveConnectionItem();
+ this.section.addMenuItem(this._activeConnectionItem);
+ }
+
+ let activeAp = this.device.active_access_point;
+ let activeApSsid = activeAp ? activeAp.get_ssid() : null;
+
+ // we want five access points in the menu, including the active one
+ let numItems = this._activeConnection ? 4 : 5;
+
+ for(let j = 0; j < this._networks.length; j++) {
+ let apObj = this._networks[j];
+ if(activeAp && ssidCompare(apObj.ssid, activeApSsid))
+ continue;
+
+ let menuItem;
+ if(apObj.connections.length > 0) {
+ if (apObj.connections.length == 1)
+ apObj.item = this._createAPItem(apObj.connections[0], apObj, false);
+ else {
+ let title = NetworkManager.utils_ssid_to_utf8(apObj.ssid) || _("");
+ apObj.item = new PopupMenu.PopupSubMenuMenuItem(title);
+ apObj.item._apObj = apObj;
+ for (let i = 0; i < apObj.connections.length; i++)
+ apObj.item.menu.addMenuItem(this._createAPItem(apObj.connections[i], apObj, true));
+ }
+ } else {
+ apObj.item = new NMNetworkMenuItem(apObj.accessPoints);
+ apObj.item._apObj = apObj;
+ apObj.item.connect('activate', Lang.bind(this, function() {
+ let connection = this._createAutomaticConnection(apObj);
+ let accessPoints = sortAccessPoints(apObj.accessPoints);
+ this._client.add_and_activate_connection(connection, this.device, accessPoints[0].dbus_path, null)
+ }));
+ }
+
+ if (j < numItems)
+ this.section.addMenuItem(apObj.item);
+ else {
+ if (!this._overflowItem) {
+ this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
+ this.section.addMenuItem(this._overflowItem);
+ }
+ this._overflowItem.menu.addMenuItem(apObj.item);
+ }
+ }
+ },
+};
+
+function NMApplet() {
+ this._init.apply(this, arguments);
+}
+NMApplet.prototype = {
+ __proto__: PanelMenu.SystemStatusButton.prototype,
+
+ _init: function() {
+ PanelMenu.SystemStatusButton.prototype._init.call(this, 'network-error');
+
+ this._client = NMClient.Client.new();
+
+ this._statusSection = new PopupMenu.PopupMenuSection();
+ this._statusItem = new PopupMenu.PopupMenuItem('', { style_class: 'popup-inactive-menu-item', reactive: false });
+ this._statusSection.addMenuItem(this._statusItem);
+ this._statusSection.addAction(_("Enable networking"), Lang.bind(this, function() {
+ this._client.networking_enabled = true;
+ }));
+ this._statusSection.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._statusSection.actor.hide();
+ this.menu.addMenuItem(this._statusSection);
+
+ this._devices = { };
+
+ this._devices.wired = {
+ section: new PopupMenu.PopupMenuSection(),
+ devices: [ ],
+ item: new NMWiredSectionTitleMenuItem(_("Wired"))
+ };
+
+ this._devices.wired.section.addMenuItem(this._devices.wired.item);
+ this._devices.wired.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._devices.wired.section.actor.hide();
+ this.menu.addMenuItem(this._devices.wired.section);
+
+ this._devices.wireless = {
+ section: new PopupMenu.PopupMenuSection(),
+ devices: [ ],
+ item: this._makeToggleItem('wireless', _("Wireless"))
+ };
+ this._devices.wireless.section.addMenuItem(this._devices.wireless.item);
+ this._devices.wireless.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._devices.wireless.section.actor.hide();
+ this.menu.addMenuItem(this._devices.wireless.section);
+
+ this._devices.wwan = {
+ section: new PopupMenu.PopupMenuSection(),
+ devices: [ ],
+ item: this._makeToggleItem('wwan', _("Mobile broadband"))
+ };
+ this._devices.wwan.section.addMenuItem(this._devices.wwan.item);
+ this._devices.wwan.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._devices.wwan.section.actor.hide();
+ this.menu.addMenuItem(this._devices.wwan.section);
+
+ this._devices.vpn = {
+ section: new PopupMenu.PopupMenuSection(),
+ device: new NMDeviceVPN(this._client),
+ item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
+ };
+ this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
+ this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
+ this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
+ this._devices.vpn.section.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
+ this._devices.vpn.section.actor.hide();
+ this.menu.addMenuItem(this._devices.vpn.section);
+
+ this.menu.addAction(_("Network Settings"), function() {
+ let app = Shell.AppSystem.get_default().get_app('gnome-network-panel.desktop');
+ app.activate(-1);
+ });
+
+ this._activeConnections = [ ];
+ this._connections = [ ];
+
+ this._mainConnection = null;
+ this._activeAccessPointUpdateId = 0;
+ this._activeAccessPoint = null;
+ this._mobileUpdateId = 0;
+ this._mobileUpdateDevice = null;
+
+ // Device types
+ this._dtypes = { };
+ this._dtypes[NetworkManager.DeviceType.ETHERNET] = NMDeviceWired;
+ this._dtypes[NetworkManager.DeviceType.WIFI] = NMDeviceWireless;
+ this._dtypes[NetworkManager.DeviceType.MODEM] = NMDeviceModem;
+ this._dtypes[NetworkManager.DeviceType.BT] = NMDeviceBluetooth;
+ // TODO: WiMax support
+
+ // Connection types
+ this._ctypes = { };
+ this._ctypes[NetworkManager.SETTING_WIRELESS_SETTING_NAME] = NMConnectionCategory.WIRELESS;
+ this._ctypes[NetworkManager.SETTING_WIRED_SETTING_NAME] = NMConnectionCategory.WIRED;
+ this._ctypes[NetworkManager.SETTING_PPPOE_SETTING_NAME] = NMConnectionCategory.WIRED;
+ this._ctypes[NetworkManager.SETTING_PPP_SETTING_NAME] = NMConnectionCategory.WIRED;
+ this._ctypes[NetworkManager.SETTING_BLUETOOTH_SETTING_NAME] = NMConnectionCategory.WWAN;
+ this._ctypes[NetworkManager.SETTING_CDMA_SETTING_NAME] = NMConnectionCategory.WWAN;
+ this._ctypes[NetworkManager.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
+ this._ctypes[NetworkManager.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
+
+ this._settings = NMClient.RemoteSettings.new(null);
+ this._connectionsReadId = this._settings.connect('connections-read', Lang.bind(this, function() {
+ this._readConnections();
+ this._readDevices();
+ this._syncNMState();
+
+ // Connect to signals late so that early signals don't find in inconsistent state
+ // and connect only once (this signal handler can be called again if NetworkManager goes up and down)
+ if (!this._inited) {
+ this._inited = true;
+ this._client.connect('notify::manager-running', Lang.bind(this, this._syncNMState));
+ this._client.connect('notify::networking-enabled', Lang.bind(this, this._syncNMState));
+ this._client.connect('notify::state', Lang.bind(this, this._syncNMState));
+ this._client.connect('notify::active-connections', Lang.bind(this, this._updateIcon));
+ this._client.connect('device-added', Lang.bind(this, this._deviceAdded));
+ this._client.connect('device-removed', Lang.bind(this, this._deviceRemoved));
+ this._settings.connect('new-connection', Lang.bind(this, this._newConnection));
+ }
+ }));
+ },
+
+ _ensureSource: function() {
+ if (!this._source) {
+ this._source = new NMMessageTraySource();
+ this._source._destroyId = this._source.connect('destroy', Lang.bind(this, function() {
+ this._source._destroyId = 0;
+ this._source = null;
+ }));
+ Main.messageTray.add(this._source);
+ }
+ },
+
+ _makeToggleItem: function(type, title) {
+ let item = new NMWirelessSectionTitleMenuItem(this._client, type, title);
+ item.connect('enabled-changed', Lang.bind(this, function(item, enabled) {
+ let devices = this._devices[type].devices;
+ devices.forEach(function(dev) {
+ dev.setEnabled(enabled);
+ });
+ this._syncSectionTitle(type);
+ }));
+ return item;
+ },
+
+ _syncSectionTitle: function(category) {
+ let devices = this._devices[category].devices;
+ let managedDevices = devices.filter(function(dev) {
+ return dev.device.state != NetworkManager.DeviceState.UNMANAGED;
+ });
+ let item = this._devices[category].item;
+ let section = this._devices[category].section;
+ if (managedDevices.length == 0)
+ section.actor.hide();
+ else {
+ section.actor.show();
+ if (managedDevices.length == 1) {
+ let dev = managedDevices[0];
+ dev.statusItem.actor.hide();
+ item.updateForDevice(dev);
+ } else {
+ managedDevices.forEach(function(dev) {
+ dev.statusItem.actor.show();
+ });
+ }
+ }
+ },
+
+ _readDevices: function() {
+ let devices = this._client.get_devices() || [ ];
+ for (let i = 0; i < devices.length; ++i) {
+ this._deviceAdded(this._client, devices[i]);
+ }
+ },
+
+ _deviceAdded: function(client, device) {
+ if (device._delegate) {
+ // already seen, not adding again
+ return;
+ }
+ let wrapperClass = this._dtypes[device.get_device_type()];
+ if (wrapperClass) {
+ let wrapper = new wrapperClass(this._client, device, this._connections);
+
+ // FIXME: these notifications are duplicate with those exposed by nm-applet
+ // uncomment this code in 3.2, when we'll conflict with and kill nm-applet
+ /* wrapper._networkLostId = wrapper.connect('network-lost', Lang.bind(this, function(emitter) {
+ this._ensureSource();
+ let icon = new St.Icon({ icon_name: 'network-offline',
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: this._source.ICON_SIZE
+ });
+ let notification = new MessageTray.Notification(this._source,
+ _("Connectivity lost"),
+ _("You're no longer connected to the network"),
+ { icon: icon });
+ this._source.notify(notification);
+ }));
+ wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(wrapper, reason) {
+ this._ensureSource();
+ let icon = new St.Icon({ icon_name: 'network-error',
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: this._source.ICON_SIZE,
+ });
+ let banner;
+ // XXX: nm-applet has no special text depending on reason
+ // but I'm not sure of this generic message
+ let notification = new MessageTray.Notification(this._source,
+ _("Connection failed"),
+ _("Activation of network connection failed"),
+ { icon: icon });
+ this._source.notify(notification);
+ })); */
+ wrapper._stateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
+ this._syncSectionTitle(dev.category);
+ }));
+ wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
+ //wrapper.disconnect(wrapper._networkLostId);
+ //wrapper.disconnect(wrapper._activationFailedId);
+ wrapper.disconnect(wrapper._stateChangedId);
+ });
+ let section = this._devices[wrapper.category].section;
+ let devices = this._devices[wrapper.category].devices;
+
+ section.addMenuItem(wrapper.section, 1);
+ section.addMenuItem(wrapper.statusItem, 1);
+ devices.push(wrapper);
+
+ this._syncSectionTitle(wrapper.category);
+ } else
+ log('Invalid network device type, is ' + device.get_device_type());
+ },
+
+ _deviceRemoved: function(client, device) {
+ if (!device._delegate) {
+ log('Removing a network device that was not added');
+ return;
+ }
+
+ let wrapper = device._delegate;
+ wrapper.destroy();
+
+ let devices = this._devices[wrapper.category].devices;
+ let pos = devices.indexOf(wrapper);
+ devices.splice(pos, 1);
+
+ this._syncSectionTitle(wrapper.category)
+ },
+
+ _syncActiveConnections: function() {
+ let closedConnections = [ ];
+ let newActiveConnections = this._client.get_active_connections() || [ ];
+ for (let i = 0; i < this._activeConnections.length; i++) {
+ let a = this._activeConnections[i];
+ if (newActiveConnections.indexOf(a) == -1) // connection is removed
+ closedConnections.push(a);
+ }
+
+ for (let i = 0; i < closedConnections.length; i++) {
+ let active = closedConnections[i];
+ if (active._primaryDevice)
+ active._primaryDevice.setActiveConnection(null);
+ if (active._notifyStateId) {
+ active.disconnect(active._notifyStateId);
+ active._notifyStateId = 0;
+ }
+ if (active._inited) {
+ active.disconnect(active._notifyDefaultId);
+ active.disconnect(active._notifyDefault6Id);
+ active._inited = false;
+ }
+ }
+
+ this._activeConnections = newActiveConnections;
+ this._mainConnection = null;
+ let activating = null;
+ let default_ip4 = null;
+ let default_ip6 = null;
+ for (let i = 0; i < this._activeConnections.length; i++) {
+ let a = this._activeConnections[i];
+
+ if (!a._inited) {
+ a._notifyDefaultId = a.connect('notify::default', Lang.bind(this, this._updateIcon));
+ a._notifyDefault6Id = a.connect('notify::default6', Lang.bind(this, this._updateIcon));
+ if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING) // prepare to notify to the user
+ a._notifyStateId = a.connect('notify::state', Lang.bind(this, this._notifyActiveConnection));
+ else {
+ // notify as soon as possible
+ Mainloop.idle_add(Lang.bind(this, function() {
+ this._notifyActiveConnection(a);
+ }));
+ }
+
+ a._inited = true;
+ }
+
+ if (!a._connection) {
+ a._connection = this._settings.get_connection_by_path(a.connection);
+
+ if (a._connection) {
+ a._type = a._connection._type;
+ a._section = this._ctypes[a._type];
+ } else {
+ a._connection = null;
+ a._type = null;
+ a._section = null;
+ log('Cannot find connection for active (or connection cannot be read)');
+ }
+ }
+
+ if (a['default'])
+ default_ip4 = a;
+ if (a.default6)
+ default_ip6 = a;
+
+ if (a.state == NetworkManager.ActiveConnectionState.ACTIVATING) {
+ activating = a;
+
+ // don't set activating connections to devices, NMDevice:state-changed
+ // should take care of rebuilding the menu
+ continue;
+ }
+
+ if (!a._primaryDevice) {
+ if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
+ // find a good device to be considered primary
+ a._primaryDevice = null;
+ let devices = a.get_devices();
+ for (let j = 0; j < devices.length; j++) {
+ let d = devices[j];
+ if (d._delegate) {
+ a._primaryDevice = d._delegate;
+ break;
+ }
+ }
+ } else
+ a._primaryDevice = this._vpnDevice;
+
+ if (a._primaryDevice)
+ a._primaryDevice.setActiveConnection(a);
+ }
+ }
+
+ this._mainConnection = activating || default_ip4 || default_ip6 || this._activeConnections[0] || null;
+ },
+
+ _notifyActiveConnection: function(active) {
+ // FIXME: duplicate notifications when nm-applet is running
+ // This code will come back when nm-applet is killed
+ this._syncNMState();
+ return;
+
+ if (active.state == NetworkManager.ActiveConnectionState.ACTIVATED) {
+
+ // notify only connections that are visible
+ if (active._connection) {
+ this._ensureSource();
+
+ let icon;
+ let banner;
+ switch (active._section) {
+ case NMConnectionCategory.WWAN:
+ icon = 'network-cellular-signal-excellent';
+ banner = _("You're now connected to mobile broadband connection '%s'").format(active._connection._name);
+ break;
+ case NMConnectionCategory.WIRELESS:
+ icon = 'network-wireless-signal-excellent';
+ banner = _("You're now connected to wireless network '%s'").format(active._connection._name);
+ break;
+ case NMConnectionCategory.WIRED:
+ icon = 'network-wired';
+ banner = _("You're now connected to wired network '%s'").format(active._connection._name);
+ break;
+ case NMConnectionCategory.VPN:
+ icon = 'network-vpn';
+ banner = _("You're now connected to VPN network '%s'").format(active._connection._name);
+ break;
+ default:
+ // a fallback for a generic 'connected' icon
+ icon = 'network-transmit-receive';
+ banner = _("You're now connected to '%s'").format(active._connection._name);
+ }
+
+ let iconActor = new St.Icon({ icon_name: icon,
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: this._source.ICON_SIZE
+ });
+ let notification = new MessageTray.Notification(this._source,
+ _("Connection established"),
+ banner,
+ { icon: iconActor });
+ this._source.notify(notification);
+ }
+
+ if (active._stateChangeId) {
+ active.disconnect(active._stateChangeId);
+ active._stateChangeId = 0;
+ }
+ }
+
+ this._syncNMState();
+ },
+
+ _readConnections: function() {
+ let connections = this._settings.list_connections();
+ for (let i = 0; i < connections.length; i++) {
+ let connection = connections[i];
+ if (connection._uuid) {
+ // connection was already seen (for example because NetworkManager was restarted)
+ continue;
+ }
+ connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
+ connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
+
+ this._updateConnection(connection);
+ this._connections.push(connection);
+ }
+ },
+
+ _newConnection: function(settings, connection) {
+ if (connection._uuid) {
+ // connection was already seen
+ return;
+ }
+
+ connection._removedId = connection.connect('removed', Lang.bind(this, this._connectionRemoved));
+ connection._updatedId = connection.connect('updated', Lang.bind(this, this._updateConnection));
+
+ this._updateConnection(connection);
+ this._connections.push(connection);
+
+ this._updateIcon();
+ },
+
+ _connectionRemoved: function(connection) {
+ let pos = this._connections.indexOf(connection);
+ if (pos != -1)
+ this._connections.splice(connection);
+
+ let section = connection._section;
+ if (section == NMConnectionCategory.VPN) {
+ this._devices.vpn.device.removeConnection(connection);
+ if (this._devices.vpn.device.empty)
+ this._devices.vpn.section.actor.hide();
+ } else {
+ let devices = this._devices[section].devices;
+ for (let i = 0; i < devices.length; i++)
+ devices[i].removeConnection(connection);
+ }
+
+ connection._uuid = null;
+ connection.disconnect(connection._removedId);
+ connection.disconnect(connection._updatedId);
+ },
+
+ _updateConnection: function(connection) {
+ let connectionSettings = connection.get_setting_by_name(NetworkManager.SETTING_CONNECTION_SETTING_NAME);
+ connection._type = connectionSettings.type;
+ connection._section = this._ctypes[connection._type];
+ connection._name = connectionSettings.id;
+ connection._uuid = connectionSettings.uuid;
+ connection._timestamp = connectionSettings.timestamp;
+
+ let section = connection._section;
+ if (section == NMConnectionCategory.VPN) {
+ this._devices.vpn.device.checkConnection(connection);
+ this._devices.vpn.section.actor.show();
+ connection._everAdded = true;
+ } else {
+ let devices = this._devices[section].devices;
+ for (let i = 0; i < devices.length; i++) {
+ devices[i].checkConnection(connection);
+ }
+ }
+ },
+
+ _hideDevices: function() {
+ this._devicesHidden = true;
+
+ for (let category in this._devices)
+ this._devices[category].section.actor.hide();
+ },
+
+ _showNormal: function() {
+ if (!this._devicesHidden) // nothing to do
+ return;
+ this._devicesHidden = false;
+
+ this._statusSection.actor.hide();
+
+ this._syncSectionTitle('wired');
+ this._syncSectionTitle('wireless');
+ this._syncSectionTitle('wwan');
+
+ if (!this._devices.vpn.device.empty)
+ this._devices.vpn.section.actor.show();
+ },
+
+ _syncNMState: function() {
+ if (!this._client.manager_running) {
+ log('NetworkManager is not running, hiding...');
+ this.menu.close();
+ this.actor.hide();
+ return;
+ } else
+ this.actor.show();
+
+ if (!this._client.networking_enabled) {
+ this.setIcon('network-offline');
+ this._hideDevices();
+ this._statusItem.label.text = _("Networking is disabled");
+ this._statusSection.actor.show();
+ return;
+ }
+
+ this._showNormal();
+ this._updateIcon();
+ },
+
+ _updateIcon: function() {
+ this._syncActiveConnections();
+ let mc = this._mainConnection;
+ let hasApIcon = false;
+ let hasMobileIcon = false;
+
+ if (!mc) {
+ this.setIcon('network-offline');
+ } else if (mc.state == NetworkManager.ActiveConnectionState.ACTIVATING) {
+ switch (mc._section) {
+ case NMConnectionCategory.WWAN:
+ this.setIcon('network-cellular-acquiring');
+ break;
+ case NMConnectionCategory.WIRELESS:
+ this.setIcon('network-wireless-acquiring');
+ break;
+ case NMConnectionCategory.WIRED:
+ this.setIcon('network-wired-acquiring');
+ break;
+ case NMConnectionCategory.VPN:
+ this.setIcon('network-vpn-acquiring');
+ break;
+ default:
+ // fallback to a generic connected icon
+ // (it could be a private connection of some other user)
+ this.setIcon('network-wired-acquiring');
+ }
+ } else {
+ let dev;
+ switch (mc._section) {
+ case NMConnectionCategory.WIRELESS:
+ dev = mc._primaryDevice;
+ if (dev) {
+ let ap = dev.device.active_access_point;
+ let mode = dev.device.mode;
+ if (!ap) {
+ if (mode != NetworkManager['80211Mode'].ADHOC) {
+ log('An active wireless connection, in infrastructure mode, involves no access point?');
+ break;
+ }
+ this.setIcon('network-wireless-connected');
+ } else {
+ if (this._accessPointUpdateId && this._activeAccessPoint != ap) {
+ this._activeAccessPoint.disconnect(this._accessPointUpdateId);
+ this._activeAccessPoint = ap;
+ this._activeAccessPointUpdateId = ap.connect('notify::strength', Lang.bind(function() {
+ this.setIcon('network-wireless-signal-' + signalToIcon(ap.strength));
+ }));
+ }
+ this.setIcon('network-wireless-signal-' + signalToIcon(ap.strength));
+ hasApIcon = true;
+ }
+ break;
+ } else {
+ log('Active connection with no primary device?');
+ break;
+ }
+ case NMConnectionCategory.WIRED:
+ this.setIcon('network-wired');
+ break;
+ case NMConnectionCategory.WWAN:
+ dev = mc._primaryDevice;
+ if (!dev) {
+ log('Active connection with no primary device?');
+ break;
+ }
+ if (!dev.mobileDevice) {
+ // this can happen for bluetooth in PAN mode
+ this.setIcon('network-cellular-connected');
+ break;
+ }
+
+ if (this._mobileUpdateId && this._mobileUpdateDevice != dev) {
+ this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
+ this._mobileUpdateDevice = dev.mobileDevice;
+ this._mobileUpdateId = dev.mobileDevice.connect('notify::signal-quality', Lang.bind(this, function() {
+ this.setIcon('network-cellular-signal-' + signalToIcon(dev.mobileDevice.signal_quality));
+ }));
+ }
+ this.setIcon('network-cellular-signal-' + signalToIcon(dev.mobileDevice.signal_quality));
+ hasMobileIcon = true;
+ break;
+ case NMConnectionCategory.VPN:
+ this.setIcon('network-vpn');
+ break;
+ default:
+ // fallback to a generic connected icon
+ // (it could be a private connection of some other user)
+ this.setIcon('network-wired');
+ break;
+ }
+ }
+
+ // cleanup stale signal connections
+
+ if (!hasApIcon && this._activeAccessPointUpdateId) {
+ this._activeAccessPoint.disconnect(this._activeAccessPointUpdateId);
+ this._activeAccessPoint = null;
+ this._activeAccessPointUpdateId = 0;
+ }
+ if (!hasMobileIcon && this._mobileUpdateId) {
+ this._mobileUpdateDevice.disconnect(this._mobileUpdateId);
+ this._mobileUpdateDevice = null;
+ this._mobileUpdateId = 0;
+ }
+ }
+};
+
+function NMMessageTraySource() {
+ this._init();
+}
+
+NMMessageTraySource.prototype = {
+ __proto__: MessageTray.Source.prototype,
+
+ _init: function() {
+ MessageTray.Source.prototype._init.call(this, _("Network Manager"));
+
+ let icon = new St.Icon({ icon_name: 'network-transmit-receive',
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: this.ICON_SIZE
+ });
+ this._setSummaryIcon(icon);
+ }
+};
diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index fabb18187..ca41f3a71 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -83,7 +83,8 @@ Indicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Power Settings"),function() {
- Util.spawnDesktop('gnome-power-panel');
+ let app = Shell.AppSystem.get_default().get_app('gnome-power-panel.desktop');
+ app.activate(-1);
});
this._proxy.connect('Changed', Lang.bind(this, this._devicesChanged));
diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js
index 36aa65d12..29ffcee76 100644
--- a/js/ui/status/volume.js
+++ b/js/ui/status/volume.js
@@ -64,7 +64,8 @@ Indicator.prototype = {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Sound Settings"), function() {
- Util.spawnDesktop('gnome-sound-panel');
+ let app = Shell.AppSystem.get_default().get_app('gnome-sound-panel.desktop');
+ app.activate(-1);
});
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js
index 2a04506db..760d0bc1c 100644
--- a/js/ui/statusMenu.js
+++ b/js/ui/statusMenu.js
@@ -2,6 +2,7 @@
const Gdm = imports.gi.Gdm;
const DBus = imports.dbus;
+const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
@@ -20,6 +21,11 @@ const Util = imports.misc.util;
const BUS_NAME = 'org.gnome.ScreenSaver';
const OBJECT_PATH = '/org/gnome/ScreenSaver';
+const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
+const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
+const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
+const DISABLE_LOG_OUT_KEY = 'disable-log-out';
+
const ScreenSaverInterface = {
name: BUS_NAME,
methods: [ { name: 'Lock', inSignature: '' } ]
@@ -44,6 +50,8 @@ StatusMenuButton.prototype = {
let box = new St.BoxLayout({ name: 'panelStatusMenu' });
this.actor.set_child(box);
+ this._lockdownSettings = new Gio.Settings({ schema: LOCKDOWN_SCHEMA });
+
this._gdm = Gdm.UserManager.ref_default();
this._gdm.queue_load();
@@ -79,6 +87,15 @@ StatusMenuButton.prototype = {
this._gdm.connect('notify::is-loaded', Lang.bind(this, this._updateSwitchUser));
this._gdm.connect('user-added', Lang.bind(this, this._updateSwitchUser));
this._gdm.connect('user-removed', Lang.bind(this, this._updateSwitchUser));
+ this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
+ Lang.bind(this, this._updateSwitchUser));
+ this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
+ Lang.bind(this, this._updateLogout));
+ this._lockdownSettings.connect('changed::' + DISABLE_LOCK_SCREEN_KEY,
+ Lang.bind(this, this._updateLockScreen));
+ this._updateSwitchUser();
+ this._updateLogout();
+ this._updateLockScreen();
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
},
@@ -95,11 +112,41 @@ StatusMenuButton.prototype = {
this._name.set_text("");
},
+ _updateSessionSeparator: function() {
+ let showSeparator = this._loginScreenItem.actor.visible ||
+ this._logoutItem.actor.visible ||
+ this._lockScreenItem.actor.visible;
+ if (showSeparator)
+ this._sessionSeparator.actor.show();
+ else
+ this._sessionSeparator.actor.hide();
+ },
+
_updateSwitchUser: function() {
- if (this._gdm.can_switch ())
+ let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
+ if (allowSwitch && this._gdm.can_switch ())
this._loginScreenItem.actor.show();
else
this._loginScreenItem.actor.hide();
+ this._updateSessionSeparator();
+ },
+
+ _updateLogout: function() {
+ let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
+ if (allowLogout)
+ this._logoutItem.actor.show();
+ else
+ this._logoutItem.actor.hide();
+ this._updateSessionSeparator();
+ },
+
+ _updateLockScreen: function() {
+ let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
+ if (allowLockScreen)
+ this._lockScreenItem.actor.show();
+ else
+ this._lockScreenItem.actor.hide();
+ this._updateSessionSeparator();
},
_updateSuspendOrPowerOff: function() {
@@ -113,7 +160,7 @@ StatusMenuButton.prototype = {
if (!this._haveSuspend) {
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
} else {
- this._suspendOrPowerOffItem.updateText(_("Suspend"), ("Power Off..."));
+ this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
}
},
@@ -161,6 +208,7 @@ StatusMenuButton.prototype = {
item = new PopupMenu.PopupMenuItem(_("Lock Screen"));
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
this.menu.addMenuItem(item);
+ this._lockScreenItem = item;
item = new PopupMenu.PopupMenuItem(_("Switch User"));
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
@@ -170,9 +218,11 @@ StatusMenuButton.prototype = {
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
this.menu.addMenuItem(item);
+ this._logoutItem = item;
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
+ this._sessionSeparator = item;
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
_("Power Off..."));
@@ -190,12 +240,14 @@ StatusMenuButton.prototype = {
_onMyAccountActivate: function() {
Main.overview.hide();
- Util.spawnDesktop('gnome-user-accounts-panel');
+ let app = Shell.AppSystem.get_default().get_app('gnome-user-accounts-panel.desktop');
+ app.activate(-1);
},
_onPreferencesActivate: function() {
Main.overview.hide();
- Util.spawnDesktop('gnome-control-center');
+ let app = Shell.AppSystem.get_default().get_app('gnome-control-center.desktop');
+ app.activate(-1);
},
_onLockScreenActivate: function() {
diff --git a/js/ui/telepathyClient.js b/js/ui/telepathyClient.js
index 7dd972e7a..4634a40d3 100644
--- a/js/ui/telepathyClient.js
+++ b/js/ui/telepathyClient.js
@@ -7,10 +7,12 @@ const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
+const Tpl = imports.gi.TelepathyLogger;
const Tp = imports.gi.TelepathyGLib;
const Gettext = imports.gettext.domain('gnome-shell');
const _ = Gettext.gettext;
+const History = imports.misc.history;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
@@ -21,6 +23,9 @@ const SCROLLBACK_RECENT_TIME = 15 * 60; // 15 minutes
const SCROLLBACK_RECENT_LENGTH = 20;
const SCROLLBACK_IDLE_LENGTH = 5;
+// See Source._displayPendingMessages
+const SCROLLBACK_HISTORY_LINES = 10;
+
const NotificationDirection = {
SENT: 'chat-sent',
RECEIVED: 'chat-received'
@@ -35,6 +40,31 @@ let contactFeatures = [Tp.ContactFeature.ALIAS,
// lets us see messages even if they belong to another app (eg,
// Empathy).
+function makeMessageFromTpMessage(tpMessage, direction) {
+ let [text, flags] = tpMessage.to_text();
+ return {
+ messageType: tpMessage.get_message_type(),
+ text: text,
+ sender: tpMessage.sender.alias,
+ timestamp: tpMessage.get_received_timestamp(),
+ direction: direction
+ };
+}
+
+
+function makeMessageFromTplEvent(event) {
+ let sent = event.get_sender().get_entity_type() == Tpl.EntityType.SELF;
+ let direction = sent ? NotificationDirection.SENT : NotificationDirection.RECEIVED;
+
+ return {
+ messageType: event.get_message_type(),
+ text: event.get_message(),
+ sender: event.get_sender().get_alias(),
+ timestamp: event.get_timestamp(),
+ direction: direction
+ };
+}
+
function Client() {
this._init();
};
@@ -67,7 +97,22 @@ Client.prototype = {
_observeChannels: function(observer, account, conn, channels,
dispatchOp, requests, context) {
- let connPath = conn.get_object_path();
+ // If the self_contact doesn't have the ALIAS, make sure
+ // to fetch it before trying to grab the channels.
+ let self_contact = conn.get_self_contact();
+ if (self_contact.has_feature(Tp.ContactFeature.ALIAS)) {
+ this._finishObserveChannels(account, conn, channels, context);
+ } else {
+ Shell.get_self_contact_features(conn,
+ contactFeatures.length, contactFeatures,
+ Lang.bind(this, function() {
+ this._finishObserveChannels(account, conn, channels, context);
+ }));
+ context.delay();
+ }
+ },
+
+ _finishObserveChannels: function(account, conn, channels, context) {
let len = channels.length;
for (let i = 0; i < len; i++) {
let channel = channels[i];
@@ -90,7 +135,6 @@ Client.prototype = {
}), null);
}
- // Allow dbus method to return
context.accept();
},
@@ -116,7 +160,7 @@ Source.prototype = {
__proto__: MessageTray.Source.prototype,
_init: function(account, conn, channel, contact) {
- MessageTray.Source.prototype._init.call(this, channel.get_identifier());
+ MessageTray.Source.prototype._init.call(this, contact.get_alias());
this.isChat = true;
@@ -127,8 +171,6 @@ Source.prototype = {
this._channel = channel;
this._closedId = this._channel.connect('invalidated', Lang.bind(this, this._channelClosed));
- this._updateAlias();
-
this._notification = new Notification(this);
this._notification.setUrgency(MessageTray.Urgency.HIGH);
@@ -143,11 +185,18 @@ Source.prototype = {
this._notifyAvatarId = this._contact.connect('notify::avatar-file', Lang.bind(this, this._updateAvatarIcon));
this._presenceChangedId = this._contact.connect('presence-changed', Lang.bind(this, this._presenceChanged));
- this._displayPendingMessages();
+ // Add ourselves as a source.
+ Main.messageTray.add(this);
+ this.pushNotification(this._notification);
+
+ this._getLogMessages();
},
_updateAlias: function() {
+ let oldAlias = this.title;
this.title = this._contact.get_alias();
+ this._notification.appendAliasChange(oldAlias, this.title);
+ this.pushNotification(this._notification);
},
createNotificationIcon: function() {
@@ -183,13 +232,50 @@ Source.prototype = {
req.ensure_channel_async('', null, null);
},
- _displayPendingMessages: function() {
- let msgs = this._channel.get_pending_messages();
+ _getLogMessages: function() {
+ let logManager = Tpl.LogManager.dup_singleton();
+ let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
+ Shell.get_contact_events(logManager,
+ this._account, entity,
+ SCROLLBACK_HISTORY_LINES,
+ Lang.bind(this, this._displayPendingMessages));
+ },
- for (let i = 0; i < msgs.length; i++) {
- let msg = msgs[i];
- this._messageReceived(this._channel, msg);
+ _displayPendingMessages: function(logManager, result) {
+ let [success, events] = logManager.get_filtered_events_finish(result);
+
+ let logMessages = events.map(makeMessageFromTplEvent);
+ for (let i = 0; i < logMessages.length; i++) {
+ this._notification.appendMessage(logMessages[i], true);
}
+
+ let pendingMessages = this._channel.get_pending_messages();
+ let hasPendingMessage = false;
+ for (let i = 0; i < pendingMessages.length; i++) {
+ let message = makeMessageFromTpMessage(pendingMessages[i], NotificationDirection.RECEIVED);
+
+ // Skip any pending messages that are in the logs.
+ let inLog = false;
+ for (let j = 0; j < logMessages.length; j++) {
+ let logMessage = logMessages[j];
+ if (logMessage.timestamp == message.timestamp && logMessage.text == message.body) {
+ inLog = true;
+ }
+ }
+
+ if (inLog)
+ continue;
+
+ this._notification.appendMessage(message, true);
+ hasPendingMessage = true;
+ }
+
+ // Only show the timestamp if we have at least one message.
+ if (hasPendingMessage || logMessages.length > 0)
+ this._notification.appendTimestamp();
+
+ if (hasPendingMessage)
+ this.notify();
},
_channelClosed: function() {
@@ -205,25 +291,32 @@ Source.prototype = {
},
_messageReceived: function(channel, message) {
- this._notification.appendMessage(message, NotificationDirection.RECEIVED);
+ message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED);
+ this._notification.appendMessage(message);
this.notify();
},
// This is called for both messages we send from
// our client and other clients as well.
_messageSent: function(channel, message, flags, token) {
- this._notification.appendMessage(message, NotificationDirection.SENT);
+ message = makeMessageFromTpMessage(message, NotificationDirection.SENT);
+ this._notification.appendMessage(message);
},
notify: function() {
- if (!Main.messageTray.contains(this))
- Main.messageTray.add(this);
-
MessageTray.Source.prototype.notify.call(this, this._notification);
},
respond: function(text) {
- let msg = Tp.ClientMessage.new_text(Tp.ChannelTextMessageType.NORMAL, text);
+ let type;
+ if (text.slice(0, 4) == '/me ') {
+ type = Tp.ChannelTextMessageType.ACTION;
+ text = text.slice(4);
+ } else {
+ type = Tp.ChannelTextMessageType.NORMAL;
+ }
+
+ let msg = Tp.ClientMessage.new_text(type, text);
this._channel.send_message_async(msg, 0, null);
},
@@ -289,19 +382,40 @@ Notification.prototype = {
this._oldMaxScrollAdjustment = adjustment.upper;
}));
+ this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
+
this._history = [];
this._timestampTimeoutId = 0;
},
- appendMessage: function(message, direction) {
- let [text, flags] = message.to_text();
- let timestamp = message.get_received_timestamp();
+ /**
+ * appendMessage:
+ * @message: An object with the properties:
+ * text: the body of the message,
+ * messageType: a #Tp.ChannelTextMessageType,
+ * sender: the name of the sender,
+ * timestamp: the time the message was sent
+ * direction: a #NotificationDirection
+ *
+ * @noTimestamp: Whether to add a timestamp. If %true, no timestamp
+ * will be added, regardless of the difference since the
+ * last timestamp
+ */
+ appendMessage: function(message, noTimestamp) {
+ let messageBody = GLib.markup_escape_text(message.text, -1);
+ let styles = [message.direction];
- this.update(this.source.title, text, { customContent: true });
- this._append(text, direction, timestamp);
+ if (message.messageType == Tp.ChannelTextMessageType.ACTION) {
+ let senderAlias = GLib.markup_escape_text(message.sender, -1);
+ messageBody = '%s %s'.format(senderAlias, messageBody);
+ styles.push('chat-action');
+ }
+
+ this.update(this.source.title, messageBody, { customContent: true, bannerMarkup: true });
+ this._append(messageBody, styles, message.timestamp, noTimestamp);
},
- _append: function(text, style, timestamp) {
+ _append: function(text, styles, timestamp, noTimestamp) {
let currentTime = (Date.now() / 1000);
if (!timestamp)
timestamp = currentTime;
@@ -313,19 +427,22 @@ Notification.prototype = {
if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId);
- let body = this.addBody(text);
- body.add_style_class_name(style);
+ let body = this.addBody(text, true);
+ for (let i = 0; i < styles.length; i ++)
+ body.add_style_class_name(styles[i]);
this._history.unshift({ actor: body, time: timestamp, realMessage: true });
- if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
- this._appendTimestamp();
- else
- // Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
- // from the timestamp of the message.
- this._timestampTimeoutId = Mainloop.timeout_add_seconds(
- SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
- Lang.bind(this, this._appendTimestamp));
+ if (!noTimestamp) {
+ if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME)
+ this.appendTimestamp();
+ else
+ // Schedule a new timestamp in SCROLLBACK_IMMEDIATE_TIME
+ // from the timestamp of the message.
+ this._timestampTimeoutId = Mainloop.timeout_add_seconds(
+ SCROLLBACK_IMMEDIATE_TIME - (currentTime - timestamp),
+ Lang.bind(this, this.appendTimestamp));
+ }
if (this._history.length > 1) {
// Keep the scrollback from growing too long. If the most
@@ -346,7 +463,7 @@ Notification.prototype = {
}
},
- _appendTimestamp: function() {
+ appendTimestamp: function() {
let lastMessageTime = this._history[0].time;
let lastMessageDate = new Date(lastMessageTime * 1000);
@@ -372,11 +489,28 @@ Notification.prototype = {
this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false});
},
+ appendAliasChange: function(oldAlias, newAlias) {
+ // FIXME: uncomment this after 3.0 string freeze ends
+
+ // oldAlias = GLib.markup_escape_text(oldAlias, -1);
+ // newAlias = GLib.markup_escape_text(newAlias, -1);
+
+ // /* Translators: this is the other person changing their old IM name to their new
+ // IM name. */
+ // let message = '' + _("%s is now known as %s").format(oldAlias, newAlias) + '';
+ // let label = this.addBody(message, true);
+ // label.add_style_class_name('chat-meta-message');
+ // this._history.unshift({ actor: label, time: (Date.now() / 1000), realMessage: false });
+ // this.update(newAlias, null, { customContent: true });
+ },
+
_onEntryActivated: function() {
let text = this._responseEntry.get_text();
if (text == '')
return;
+ this._inputHistory.addItem(text);
+
// Telepathy sends out the Sent signal for us.
// see Source._messageSent
this._responseEntry.set_text('');
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index 45b1b386b..b1d7dd103 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -41,11 +41,14 @@ BaseTab.prototype = {
this.visible = false;
},
- show: function() {
+ show: function(animate) {
this.visible = true;
- this.page.opacity = 0;
this.page.show();
+ if (!animate)
+ return;
+
+ this.page.opacity = 0;
Tweener.addTween(this.page,
{ opacity: 255,
time: 0.1,
@@ -393,6 +396,8 @@ ViewSelector.prototype = {
},
_switchTab: function(tab) {
+ let firstSwitch = this._activeTab == null;
+
if (this._activeTab && this._activeTab.visible) {
if (this._activeTab == tab)
return;
@@ -408,11 +413,13 @@ ViewSelector.prototype = {
}
}
+ // Only fade when switching between tabs,
+ // not when setting the initially selected one.
if (!tab.visible)
- tab.show();
+ tab.show(!firstSwitch);
// Pull a Meg Ryan:
- if (Main.overview && Main.overview.workspaces) {
+ if (!firstSwitch && Main.overview.workspaces) {
if (tab != this._tabs[0]) {
Tweener.addTween(Main.overview.workspaces.actor,
{ opacity: 0,
diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js
index a10608f48..b113a1a28 100644
--- a/js/ui/windowManager.js
+++ b/js/ui/windowManager.js
@@ -123,11 +123,11 @@ WindowManager.prototype = {
Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
- this._undimParentWindow(this._dimmedWindows[i], true);
+ this._undimWindow(this._dimmedWindows[i], true);
}));
Main.overview.connect('hiding', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
- this._dimParentWindow(this._dimmedWindows[i], true);
+ this._dimWindow(this._dimmedWindows[i], true);
}));
},
@@ -234,41 +234,39 @@ WindowManager.prototype = {
_unmaximizeWindowDone : function(shellwm, actor) {
},
- _parentHasOtherAttachedDialog: function(parent, self) {
+ _hasAttachedDialogs: function(window, ignoreWindow) {
var count = 0;
- parent.foreach_transient(function(win) {
- if (win.get_window_type() == Meta.WindowType.MODAL_DIALOG && win != self)
+ window.foreach_transient(function(win) {
+ if (win != ignoreWindow && win.get_window_type() == Meta.WindowType.MODAL_DIALOG)
count++;
return false;
});
return count != 0;
},
- _markParentWindowAsDimmable: function(actor, animate) {
- if (Meta.prefs_get_attach_modal_dialogs()) {
- this._dimmedWindows.push(actor);
- if (this._shouldAnimate())
- this._dimParentWindow(actor, animate);
+ _checkDimming: function(window, ignoreWindow) {
+ let shouldDim = Meta.prefs_get_attach_modal_dialogs() && this._hasAttachedDialogs(window, ignoreWindow);
+
+ if (shouldDim && !window._dimmed) {
+ window._dimmed = true;
+ this._dimmedWindows.push(window);
+ if (!Main.overview.visible)
+ this._dimWindow(window, true);
+ } else if (!shouldDim && window._dimmed) {
+ window._dimmed = false;
+ this._dimmedWindows = this._dimmedWindows.filter(function(win) {
+ return win != window;
+ });
+ if (!Main.overview.visible)
+ this._undimWindow(window, true);
}
},
- _unmarkParentWindowAsDimmable: function(actor, animate) {
- if (!Main.overview.visible)
- this._undimParentWindow(actor, true);
- this._dimmedWindows = this._dimmedWindows.filter(function(win) {
- return win != actor;
- });
- },
-
- _dimParentWindow: function(actor, animate) {
- let meta = actor.get_meta_window();
- let parent = meta.get_transient_for();
- if (!parent)
+ _dimWindow: function(window, animate) {
+ let actor = window.get_compositor_private();
+ if (!actor)
return;
- let parentActor = parent.get_compositor_private();
- if (!parentActor || this._parentHasOtherAttachedDialog(parent, meta))
- return;
- let texture = parentActor.get_texture();
+ let texture = actor.get_texture();
if (animate)
Tweener.addTween(getWindowDimmer(texture),
{ dimFraction: 1.0,
@@ -279,15 +277,11 @@ WindowManager.prototype = {
getWindowDimmer(texture).dimFraction = 1.0;
},
- _undimParentWindow: function(actor, animate) {
- let meta = actor.get_meta_window();
- let parent = meta.get_transient_for();
- if (!parent)
+ _undimWindow: function(window, animate) {
+ let actor = window.get_compositor_private();
+ if (!actor)
return;
- let parentActor = parent.get_compositor_private();
- if (!parentActor || this._parentHasOtherAttachedDialog(parent, meta))
- return;
- let texture = parentActor.get_texture();
+ let texture = actor.get_texture();
if (animate)
Tweener.addTween(getWindowDimmer(texture),
{ dimFraction: 0.0,
@@ -304,17 +298,19 @@ WindowManager.prototype = {
let type = actor.meta_window.get_window_type();
if (type == actor._windowType)
return;
- if (type == Meta.WindowType.MODAL_DIALOG)
- this._markParentWindowAsDimmable(actor, true);
- else if (actor._windowType == Meta.WindowType.MODAL_DIALOG)
- this._unmarkParentWindowAsDimmable(actor, true);
+ if (type == Meta.WindowType.MODAL_DIALOG ||
+ actor._windowType == Meta.WindowType.MODAL_DIALOG) {
+ let parent = actor.get_meta_window().get_transient_for();
+ if (parent)
+ this._checkDimming(parent);
+ }
actor._windowType = type;
}));
if (actor.meta_window.get_window_type() == Meta.WindowType.MODAL_DIALOG
&& Meta.prefs_get_attach_modal_dialogs()
&& actor.get_meta_window().get_transient_for()) {
- this._markParentWindowAsDimmable(actor, true);
+ this._checkDimming(actor.get_meta_window().get_transient_for());
if (this._shouldAnimate()) {
actor.set_scale(1.0, 0.0);
actor.show();
@@ -374,14 +370,20 @@ WindowManager.prototype = {
},
_destroyWindow : function(shellwm, actor) {
- let parent = actor.meta_window.get_transient_for();
+ let window = actor.meta_window;
+ let parent = window.get_transient_for();
if (actor._notifyWindowTypeSignalId) {
- actor.meta_window.disconnect(actor._notifyWindowTypeSignalId);
+ window.disconnect(actor._notifyWindowTypeSignalId);
actor._notifyWindowTypeSignalId = 0;
}
- while (actor.meta_window.get_window_type() == Meta.WindowType.MODAL_DIALOG
+ if (window._dimmed) {
+ this._dimmedWindows = this._dimmedWindows.filter(function(win) {
+ return win != window;
+ });
+ }
+ while (window.get_window_type() == Meta.WindowType.MODAL_DIALOG
&& parent) {
- this._unmarkParentWindowAsDimmable(actor, true);
+ this._checkDimming(parent, window);
if (!Meta.prefs_get_attach_modal_dialogs()
|| !this._shouldAnimate())
break;
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 9a80f8c8e..3a07585ad 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -221,8 +221,15 @@ WindowClone.prototype = {
let [width, height] = this.actor.get_transformed_size();
- this.actor.x = _clamp(this.actor.x, 0, global.screen_width - width);
- this.actor.y = _clamp(this.actor.y, Panel.PANEL_HEIGHT, global.screen_height - height);
+ let monitorIndex = this.metaWindow.get_monitor();
+ let availArea = global.get_monitors()[monitorIndex];
+ if (monitorIndex == global.get_primary_monitor_index()) {
+ availArea.y += Main.panel.actor.height;
+ availArea.height -= Main.panel.actor.height;
+ }
+
+ this.actor.x = _clamp(this.actor.x, availArea.x, availArea.x + availArea.width - width);
+ this.actor.y = _clamp(this.actor.y, availArea.y, availArea.y + availArea.height - height);
},
_zoomStart : function () {
@@ -387,12 +394,6 @@ WindowOverlay.prototype = {
show: function() {
this._hidden = false;
- let [x, y, mask] = global.get_pointer();
- let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE,
- x, y);
- if (actor == this._windowClone.actor) {
- this.closeButton.show();
- }
this.title.show();
},
@@ -541,14 +542,14 @@ const WindowPositionFlags = {
};
/**
- * @metaWorkspace: a #Meta.Workspace
+ * @metaWorkspace: a #Meta.Workspace, or null
*/
-function Workspace(metaWorkspace) {
- this._init(metaWorkspace);
+function Workspace(metaWorkspace, monitorIndex) {
+ this._init(metaWorkspace, monitorIndex);
}
Workspace.prototype = {
- _init : function(metaWorkspace) {
+ _init : function(metaWorkspace, monitorIndex) {
// When dragging a window, we use this slot for reserve space.
this._reservedSlot = null;
this.metaWorkspace = metaWorkspace;
@@ -557,6 +558,8 @@ Workspace.prototype = {
this._width = 0;
this._height = 0;
+ this.monitorIndex = monitorIndex;
+ this._monitor = global.get_monitors()[this.monitorIndex];
this._windowOverlaysGroup = new Clutter.Group();
// Without this the drop area will be overlapped.
this._windowOverlaysGroup.set_size(0, 0);
@@ -572,7 +575,7 @@ Workspace.prototype = {
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
- let windows = Main.getWindowActorsForWorkspace(this.metaWorkspace.index());
+ let windows = global.get_window_actors().filter(this._isMyWindow, this);
// Create clones for windows that should be
// visible in the Overview
@@ -585,10 +588,16 @@ Workspace.prototype = {
}
// Track window changes
- this._windowAddedId = this.metaWorkspace.connect('window-added',
- Lang.bind(this, this._windowAdded));
- this._windowRemovedId = this.metaWorkspace.connect('window-removed',
- Lang.bind(this, this._windowRemoved));
+ if (this.metaWorkspace) {
+ this._windowAddedId = this.metaWorkspace.connect('window-added',
+ Lang.bind(this, this._windowAdded));
+ this._windowRemovedId = this.metaWorkspace.connect('window-removed',
+ Lang.bind(this, this._windowRemoved));
+ }
+ this._windowEnteredMonitorId = global.screen.connect('window-entered-monitor',
+ Lang.bind(this, this._windowEnteredMonitor));
+ this._windowLeftMonitorId = global.screen.connect('window-left-monitor',
+ Lang.bind(this, this._windowLeftMonitor));
this._repositionWindowsId = 0;
this.leavingOverview = false;
@@ -896,7 +905,7 @@ Workspace.prototype = {
clones = this._orderWindowsByMotionAndStartup(clones, slots);
let currentWorkspace = global.screen.get_active_workspace();
- let isOnCurrentWorkspace = this.metaWorkspace == currentWorkspace;
+ let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
for (let i = 0; i < clones.length; i++) {
let slot = slots[i];
@@ -999,7 +1008,8 @@ Workspace.prototype = {
for (let i = 0; i < this._windows.length; i++) {
let clone = this._windows[i];
let overlay = this._windowOverlays[i];
- this._showWindowOverlay(clone, overlay, this.metaWorkspace == currentWorkspace);
+ this._showWindowOverlay(clone, overlay,
+ this.metaWorkspace == null || this.metaWorkspace == currentWorkspace);
}
},
@@ -1036,7 +1046,7 @@ Workspace.prototype = {
this._windowOverlaysGroup.hide();
},
- _windowRemoved : function(metaWorkspace, metaWin) {
+ _doRemoveWindow : function(metaWin) {
let win = metaWin.get_compositor_private();
// find the position of the window in our list
@@ -1045,6 +1055,10 @@ Workspace.prototype = {
if (index == -1)
return;
+ // Check if window still should be here
+ if (win && this._isMyWindow(win))
+ return;
+
let clone = this._windows[index];
this._windows.splice(index, 1);
@@ -1088,7 +1102,7 @@ Workspace.prototype = {
Lang.bind(this, this._delayedWindowRepositioning));
},
- _windowAdded : function(metaWorkspace, metaWin) {
+ _doAddWindow : function(metaWin) {
if (this.leavingOverview)
return;
@@ -1100,13 +1114,18 @@ Workspace.prototype = {
Mainloop.idle_add(Lang.bind(this,
function () {
if (this.actor && metaWin.get_compositor_private())
- this._windowAdded(metaWorkspace, metaWin);
+ this._doAddWindow(metaWin);
return false;
}));
return;
}
- if (!this._isOverviewWindow(win))
+ // We might have the window in our list already if it was on all workspaces and
+ // now was moved to this workspace
+ if (this._lookupIndex (metaWin) != -1)
+ return;
+
+ if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
return;
let clone = this._addWindowClone(win);
@@ -1131,6 +1150,26 @@ Workspace.prototype = {
this.positionWindows(WindowPositionFlags.ANIMATE);
},
+ _windowAdded : function(metaWorkspace, metaWin) {
+ this._doAddWindow(metaWin);
+ },
+
+ _windowRemoved : function(metaWorkspace, metaWin) {
+ this._doRemoveWindow(metaWin);
+ },
+
+ _windowEnteredMonitor : function(metaScreen, monitorIndex, metaWin) {
+ if (monitorIndex == this.monitorIndex) {
+ this._doAddWindow(metaWin);
+ }
+ },
+
+ _windowLeftMonitor : function(metaScreen, monitorIndex, metaWin) {
+ if (monitorIndex == this.monitorIndex) {
+ this._doRemoveWindow(metaWin);
+ }
+ },
+
// check for maximized windows on the workspace
hasMaximizedWindows: function() {
for (let i = 0; i < this._windows.length; i++) {
@@ -1167,7 +1206,7 @@ Workspace.prototype = {
this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this,
this._doneLeavingOverview));
- if (this.metaWorkspace != currentWorkspace)
+ if (this.metaWorkspace != null && this.metaWorkspace != currentWorkspace)
return;
// Position and scale the windows.
@@ -1211,8 +1250,12 @@ Workspace.prototype = {
}
Tweener.removeTweens(actor);
- this.metaWorkspace.disconnect(this._windowAddedId);
- this.metaWorkspace.disconnect(this._windowRemovedId);
+ if (this.metaWorkspace) {
+ this.metaWorkspace.disconnect(this._windowAddedId);
+ this.metaWorkspace.disconnect(this._windowRemovedId);
+ }
+ global.screen.disconnect(this._windowEnteredMonitorId);
+ global.screen.disconnect(this._windowLeftMonitorId);
if (this._repositionWindowsId > 0)
Mainloop.source_remove(this._repositionWindowsId);
@@ -1231,9 +1274,10 @@ Workspace.prototype = {
this.leavingOverview = false;
},
- // Tests if @win belongs to this workspaces
+ // Tests if @win belongs to this workspaces and monitor
_isMyWindow : function (win) {
- return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index());
+ return (this.metaWorkspace == null || Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index())) &&
+ (!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
},
// Tests if @win should be shown in the Overview
@@ -1321,8 +1365,10 @@ Workspace.prototype = {
},
_onCloneSelected : function (clone, time) {
- Main.activateWindow(clone.metaWindow, time,
- this.metaWorkspace.index());
+ let wsIndex = undefined;
+ if (this.metaWorkspace)
+ wsIndex = this.metaWorkspace.index();
+ Main.activateWindow(clone.metaWindow, time, wsIndex);
},
// Draggable target interface
@@ -1350,7 +1396,15 @@ Workspace.prototype = {
};
let metaWindow = win.get_meta_window();
- metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
+
+ // We need to move the window before changing the workspace, because
+ // the move itself could cause a workspace change if the window enters
+ // the primary monitor
+ if (metaWindow.get_monitor() != this.monitorIndex)
+ metaWindow.move_to_monitor(this.monitorIndex);
+
+ let index = this.metaWorkspace ? this.metaWorkspace.index() : global.screen.get_active_workspace_index();
+ metaWindow.change_workspace_by_index(index,
false, // don't create workspace
time);
return true;
diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
index 9aeab981c..96fd52bc5 100644
--- a/js/ui/workspaceThumbnail.js
+++ b/js/ui/workspaceThumbnail.js
@@ -146,6 +146,7 @@ function WorkspaceThumbnail(metaWorkspace) {
WorkspaceThumbnail.prototype = {
_init : function(metaWorkspace) {
this.metaWorkspace = metaWorkspace;
+ this.monitorIndex = global.get_primary_monitor_index();
this.actor = new St.Group({ reactive: true,
clip_to_allocation: true,
@@ -169,7 +170,8 @@ WorkspaceThumbnail.prototype = {
this._background = new Clutter.Clone({ source: global.background_actor });
this._contents.add_actor(this._background);
- this.setPorthole(0, 0, global.screen_width, global.screen_height);
+ let monitor = global.get_primary_monitor();
+ this.setPorthole(monitor.x, monitor.y, monitor.width, monitor.height);
let windows = global.get_window_actors().filter(this._isMyWindow, this);
@@ -186,6 +188,10 @@ WorkspaceThumbnail.prototype = {
Lang.bind(this, this._windowAdded));
this._windowRemovedId = this.metaWorkspace.connect('window-removed',
Lang.bind(this, this._windowRemoved));
+ this._windowEnteredMonitorId = global.screen.connect('window-entered-monitor',
+ Lang.bind(this, this._windowEnteredMonitor));
+ this._windowLeftMonitorId = global.screen.connect('window-left-monitor',
+ Lang.bind(this, this._windowLeftMonitor));
this.state = ThumbnailState.NORMAL;
this._slidePosition = 0; // Fully slid in
@@ -193,6 +199,8 @@ WorkspaceThumbnail.prototype = {
},
setPorthole: function(x, y, width, height) {
+ this._portholeX = x;
+ this._portholeY = y;
this.actor.set_size(width, height);
this._contents.set_position(-x, -y);
},
@@ -239,7 +247,7 @@ WorkspaceThumbnail.prototype = {
return this._collapseFraction;
},
- _windowRemoved : function(metaWorkspace, metaWin) {
+ _doRemoveWindow : function(metaWin) {
let win = metaWin.get_compositor_private();
// find the position of the window in our list
@@ -248,12 +256,16 @@ WorkspaceThumbnail.prototype = {
if (index == -1)
return;
+ // Check if window still should be here
+ if (win && this._isMyWindow(win))
+ return;
+
let clone = this._windows[index];
this._windows.splice(index, 1);
clone.destroy();
},
- _windowAdded : function(metaWorkspace, metaWin) {
+ _doAddWindow : function(metaWin) {
if (this.leavingOverview)
return;
@@ -265,18 +277,43 @@ WorkspaceThumbnail.prototype = {
Mainloop.idle_add(Lang.bind(this,
function () {
if (this.actor && metaWin.get_compositor_private())
- this._windowAdded(metaWorkspace, metaWin);
+ this._doAddWindow(metaWin);
return false;
}));
return;
}
- if (!this._isOverviewWindow(win))
+ // We might have the window in our list already if it was on all workspaces and
+ // now was moved to this workspace
+ if (this._lookupIndex (metaWin) != -1)
+ return;
+
+ if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
return;
let clone = this._addWindowClone(win);
},
+ _windowAdded : function(metaWorkspace, metaWin) {
+ this._doAddWindow(metaWin);
+ },
+
+ _windowRemoved : function(metaWorkspace, metaWin) {
+ this._doRemoveWindow(metaWin);
+ },
+
+ _windowEnteredMonitor : function(metaScreen, monitorIndex, metaWin) {
+ if (monitorIndex == this.monitorIndex) {
+ this._doAddWindow(metaWin);
+ }
+ },
+
+ _windowLeftMonitor : function(metaScreen, monitorIndex, metaWin) {
+ if (monitorIndex == this.monitorIndex) {
+ this._doRemoveWindow(metaWin);
+ }
+ },
+
destroy : function() {
this.actor.destroy();
},
@@ -284,15 +321,17 @@ WorkspaceThumbnail.prototype = {
_onDestroy: function(actor) {
this.metaWorkspace.disconnect(this._windowAddedId);
this.metaWorkspace.disconnect(this._windowRemovedId);
+ global.screen.disconnect(this._windowEnteredMonitorId);
+ global.screen.disconnect(this._windowLeftMonitorId);
this._windows = [];
this.actor = null;
},
- // Tests if @win belongs to this workspaces
+ // Tests if @win belongs to this workspace and monitor
_isMyWindow : function (win) {
- return win.get_workspace() == this.metaWorkspace.index() ||
- (win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
+ return Main.isWindowActorDisplayedOnWorkspace(win, this.metaWorkspace.index()) &&
+ (!win.get_meta_window() || win.get_meta_window().get_monitor() == this.monitorIndex);
},
// Tests if @win should be shown in the Overview
@@ -340,6 +379,11 @@ WorkspaceThumbnail.prototype = {
// Draggable target interface
handleDragOver : function(source, actor, x, y, time) {
+ if (source == Main.xdndHandler) {
+ this.metaWorkspace.activate(time);
+ return DND.DragMotionResult.CONTINUE;
+ }
+
if (this.state > ThumbnailState.NORMAL)
return DND.DragMotionResult.CONTINUE;
@@ -361,6 +405,13 @@ WorkspaceThumbnail.prototype = {
return false;
let metaWindow = win.get_meta_window();
+
+ // We need to move the window before changing the workspace, because
+ // the move itself could cause a workspace change if the window enters
+ // the primary monitor
+ if (metaWindow.get_monitor() != this.monitorIndex)
+ metaWindow.move_to_monitor(this.monitorIndex);
+
metaWindow.change_workspace_by_index(this.metaWorkspace.index(),
false, // don't create workspace
time);
@@ -442,11 +493,12 @@ ThumbnailsBox.prototype = {
// The "porthole" is the portion of the screen that we show in the workspaces
let panelHeight = Main.panel.actor.height;
+ let monitor = global.get_primary_monitor();
this._porthole = {
- x: 0,
- y: panelHeight,
- width: global.screen_width,
- height: global.screen_height - panelHeight
+ x: monitor.x,
+ y: monitor.y + panelHeight,
+ width: monitor.width,
+ height: monitor.height - panelHeight
};
this.addThumbnails(0, global.screen.n_workspaces);
diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js
index 3f79ec8c3..567f90a2c 100644
--- a/js/ui/workspacesView.js
+++ b/js/ui/workspacesView.js
@@ -51,6 +51,7 @@ WorkspacesView.prototype = {
this._height = 0;
this._x = 0;
this._y = 0;
+ this._workspaceRatioSpacing = 0;
this._spacing = 0;
this._lostWorkspaces = [];
this._animating = false; // tweening
@@ -67,6 +68,18 @@ WorkspacesView.prototype = {
this._workspaces[w].actor.reparent(this.actor);
this._workspaces[activeWorkspaceIndex].actor.raise_top();
+ this._extraWorkspaces = [];
+ let monitors = global.get_monitors();
+ let m = 0;
+ for (let i = 0; i < monitors.length; i++) {
+ if (i == global.get_primary_monitor_index())
+ continue;
+ let ws = new Workspace.Workspace(null, i);
+ this._extraWorkspaces[m++] = ws;
+ ws.setGeometry(monitors[i].x, monitors[i].y, monitors[i].width, monitors[i].height);
+ global.overlay_group.add_actor(ws.actor);
+ }
+
// Position/scale the desktop windows and their children after the
// workspaces have been created. This cannot be done first because
// window movement depends on the Workspaces object being accessible
@@ -76,6 +89,8 @@ WorkspacesView.prototype = {
Lang.bind(this, function() {
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomToOverview();
+ for (let w = 0; w < this._extraWorkspaces.length; w++)
+ this._extraWorkspaces[w].zoomToOverview();
}));
this._overviewShownId =
Main.overview.connect('shown',
@@ -110,7 +125,7 @@ WorkspacesView.prototype = {
this._swipeScrollEndId = 0;
},
- setGeometry: function(x, y, width, height) {
+ setGeometry: function(x, y, width, height, spacing) {
if (this._x == x && this._y == y &&
this._width == width && this._height == height)
return;
@@ -118,6 +133,7 @@ WorkspacesView.prototype = {
this._height = height;
this._x = x;
this._y = y;
+ this._workspaceRatioSpacing = spacing;
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setGeometry(x, y, width, height);
@@ -146,6 +162,8 @@ WorkspacesView.prototype = {
for (let w = 0; w < this._workspaces.length; w++)
this._workspaces[w].zoomFromOverview();
+ for (let w = 0; w < this._extraWorkspaces.length; w++)
+ this._extraWorkspaces[w].zoomFromOverview();
},
destroy: function() {
@@ -155,6 +173,8 @@ WorkspacesView.prototype = {
syncStacking: function(stackIndices) {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].syncStacking(stackIndices);
+ for (let i = 0; i < this._extraWorkspaces.length; i++)
+ this._extraWorkspaces[i].syncStacking(stackIndices);
},
updateWindowPositions: function() {
@@ -182,7 +202,7 @@ WorkspacesView.prototype = {
Tweener.removeTweens(workspace.actor);
let opacity = (this._inDrag && w != active) ? 200 : 255;
- let y = (w - active) * (this._height + this._spacing);
+ let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
if (showAnimation) {
let params = { y: y,
@@ -315,6 +335,8 @@ WorkspacesView.prototype = {
},
_onDestroy: function() {
+ for (let i = 0; i < this._extraWorkspaces.length; i++)
+ this._extraWorkspaces[i].destroy();
this._scrollAdjustment.run_dispose();
Main.overview.disconnect(this._overviewShowingId);
Main.overview.disconnect(this._overviewShownId);
@@ -365,6 +387,7 @@ WorkspacesView.prototype = {
return;
this._inDrag = true;
+ this._firstDragMotion = true;
this._dragMonitor = {
dragMotion: Lang.bind(this, this._onDragMotion)
@@ -376,6 +399,14 @@ WorkspacesView.prototype = {
if (Main.overview.animationInProgress)
return DND.DragMotionResult.CONTINUE;
+ if (this._firstDragMotion) {
+ this._firstDragMotion = false;
+ for (let i = 0; i < this._workspaces.length; i++)
+ this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
+ for (let i = 0; i < this._extraWorkspaces.length; i++)
+ this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
+ }
+
let primary = global.get_primary_monitor();
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
@@ -389,7 +420,6 @@ WorkspacesView.prototype = {
let switchTop = (dragEvent.y <= topEdge && topWorkspace);
if (switchTop && this._dragOverLastY != topEdge) {
topWorkspace.metaWorkspace.activate(global.get_current_time());
- topWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
this._dragOverLastY = topEdge;
return DND.DragMotionResult.CONTINUE;
@@ -398,7 +428,6 @@ WorkspacesView.prototype = {
let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace);
if (switchBottom && this._dragOverLastY != bottomEdge) {
bottomWorkspace.metaWorkspace.activate(global.get_current_time());
- bottomWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
this._dragOverLastY = bottomEdge;
return DND.DragMotionResult.CONTINUE;
@@ -433,7 +462,6 @@ WorkspacesView.prototype = {
this._timeoutId = Mainloop.timeout_add_seconds(1,
Lang.bind(this, function() {
hoverWorkspace.metaWorkspace.activate(global.get_current_time());
- hoverWorkspace.setReservedSlot(dragEvent.dragActor._delegate);
return false;
}));
} else {
@@ -456,6 +484,8 @@ WorkspacesView.prototype = {
for (let i = 0; i < this._workspaces.length; i++)
this._workspaces[i].setReservedSlot(null);
+ for (let i = 0; i < this._extraWorkspaces.length; i++)
+ this._extraWorkspaces[i].setReservedSlot(null);
},
_swipeScrollBegin: function() {
@@ -534,6 +564,7 @@ WorkspacesDisplay.prototype = {
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
+ this.actor.set_clip_to_allocation(true);
let controls = new St.Bin({ style_class: 'workspace-controls',
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT,
@@ -549,6 +580,8 @@ WorkspacesDisplay.prototype = {
controls.connect('scroll-event',
Lang.bind(this, this._onScrollEvent));
+ this._monitorIndex = global.get_primary_monitor_index();
+ this._monitor = global.get_monitors()[this._monitorIndex];
this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
controls.add_actor(this._thumbnailsBox.actor);
@@ -557,13 +590,28 @@ WorkspacesDisplay.prototype = {
this._inDrag = false;
this._cancelledDrag = false;
+
+ this._alwaysZoomOut = false;
this._zoomOut = false;
this._zoomFraction = 0;
+ this._updateAlwaysZoom();
+
+ global.screen.connect('monitors-changed', Lang.bind(this, this._updateAlwaysZoom));
+ Main.xdndHandler.connect('drag-begin', Lang.bind(this, function(){
+ this._alwaysZoomOut = true;
+ }));
+
+ Main.xdndHandler.connect('drag-end', Lang.bind(this, function(){
+ this._alwaysZoomOut = false;
+ this._updateAlwaysZoom();
+ }));
+
this._nWorkspacesNotifyId = 0;
this._switchWorkspaceNotifyId = 0;
this._itemDragBeginId = 0;
+ this._itemDragCancelledId = 0;
this._itemDragEndId = 0;
this._windowDragBeginId = 0;
this._windowDragCancelledId = 0;
@@ -571,13 +619,17 @@ WorkspacesDisplay.prototype = {
},
show: function() {
+ this._zoomOut = this._alwaysZoomOut;
+ this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
+ this._updateZoom();
+
this._controls.show();
this._thumbnailsBox.show();
this._workspaces = [];
for (let i = 0; i < global.screen.n_workspaces; i++) {
let metaWorkspace = global.screen.get_workspace_by_index(i);
- this._workspaces[i] = new Workspace.Workspace(metaWorkspace);
+ this._workspaces[i] = new Workspace.Workspace(metaWorkspace, this._monitorIndex);
}
if (this.workspacesView)
@@ -596,6 +648,9 @@ WorkspacesDisplay.prototype = {
if (this._itemDragBeginId == 0)
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
Lang.bind(this, this._dragBegin));
+ if (this._itemDragCancelledId == 0)
+ this._itemDragCancelledId = Main.overview.connect('item-drag-cancelled',
+ Lang.bind(this, this._dragCancelled));
if (this._itemDragEndId == 0)
this._itemDragEndId = Main.overview.connect('item-drag-end',
Lang.bind(this, this._dragEnd));
@@ -610,9 +665,6 @@ WorkspacesDisplay.prototype = {
Lang.bind(this, this._dragEnd));
this._onRestacked();
- this._zoomOut = false;
- this._zoomFraction = 0;
- this._updateZoom();
},
hide: function() {
@@ -631,7 +683,11 @@ WorkspacesDisplay.prototype = {
Main.overview.disconnect(this._itemDragBeginId);
this._itemDragBeginId = 0;
}
- if (this._itemEndBeginId > 0) {
+ if (this._itemDragCancelledId > 0) {
+ Main.overview.disconnect(this._itemDragCancelledId);
+ this._itemDragCancelledId = 0;
+ }
+ if (this._itemDragEndId > 0) {
Main.overview.disconnect(this._itemDragEndId);
this._itemDragEndId = 0;
}
@@ -666,6 +722,23 @@ WorkspacesDisplay.prototype = {
return this._zoomFraction;
},
+ _updateAlwaysZoom: function() {
+ this._alwaysZoomOut = false;
+
+ let monitors = global.get_monitors();
+ let primary = global.get_primary_monitor();
+
+ /* Look for any monitor to the right of the primary, if there is
+ * one, we always keep zoom out, otherwise its hard to reach
+ * the thumbnail area without passing into the next monitor. */
+ for (let i = 0; i < monitors.length; i++) {
+ if (monitors[i].x >= primary.x + primary.width) {
+ this._alwaysZoomOut = true;
+ break;
+ }
+ }
+ },
+
_getPreferredWidth: function (actor, forHeight, alloc) {
// pass through the call in case the child needs it, but report 0x0
this._controls.get_preferred_width(forHeight);
@@ -708,8 +781,11 @@ WorkspacesDisplay.prototype = {
if (!this.workspacesView)
return;
- let width = this.actor.allocation.x2 - this.actor.allocation.x1;
- let height = this.actor.allocation.y2 - this.actor.allocation.y1;
+ let fullWidth = this.actor.allocation.x2 - this.actor.allocation.x1;
+ let fullHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
+
+ let width = fullWidth;
+ let height = fullHeight;
let [controlsMin, controlsNatural] = this._controls.get_preferred_width(height);
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
@@ -728,7 +804,11 @@ WorkspacesDisplay.prototype = {
x += controlsVisible;
}
- this.workspacesView.setGeometry(x, y, width, height);
+ height = (fullHeight / fullWidth) * width;
+ let difference = fullHeight - height;
+ y += difference / 2;
+
+ this.workspacesView.setGeometry(x, y, width, height, difference);
},
_onRestacked: function() {
@@ -757,7 +837,7 @@ WorkspacesDisplay.prototype = {
// Assume workspaces are only added at the end
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
let metaWorkspace = global.screen.get_workspace_by_index(w);
- this._workspaces[w] = new Workspace.Workspace(metaWorkspace);
+ this._workspaces[w] = new Workspace.Workspace(metaWorkspace, this._monitorIndex);
}
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
@@ -794,7 +874,7 @@ WorkspacesDisplay.prototype = {
if (Main.overview.animationInProgress)
return;
- let shouldZoom = this._controls.hover || (this._inDrag && !this._cancelledDrag);
+ let shouldZoom = this._alwaysZoomOut || this._controls.hover || (this._inDrag && !this._cancelledDrag);
if (shouldZoom != this._zoomOut) {
this._zoomOut = shouldZoom;
this._updateWorkspacesGeometry();
diff --git a/po/LINGUAS b/po/LINGUAS
index a611eb6d8..d02675d1a 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,6 +1,7 @@
af
ar
bg
+bn_IN
ca
cs
da
@@ -23,6 +24,7 @@ ja
ko
kn
lt
+lv
nb
nl
nn
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 1a4e2720b..6c87e1517 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -13,6 +13,7 @@ js/ui/messageTray.js
js/ui/overview.js
js/ui/panel.js
js/ui/placeDisplay.js
+js/ui/polkitAuthenticationAgent.js
js/ui/popupMenu.js
js/ui/runDialog.js
js/ui/searchDisplay.js
@@ -20,6 +21,7 @@ js/ui/statusMenu.js
js/ui/status/accessibility.js
js/ui/status/bluetooth.js
js/ui/status/keyboard.js
+js/ui/status/network.js
js/ui/status/power.js
js/ui/status/volume.js
js/ui/telepathyClient.js
@@ -29,8 +31,10 @@ js/ui/workspacesView.js
src/gvc/gvc-mixer-control.c
src/gdmuser/gdm-user.c
src/main.c
+src/shell-app.c
src/shell-app-system.c
src/shell-global.c
+src/shell-mobile-providers.c
src/shell-polkit-authentication-agent.c
src/shell-util.c
diff --git a/po/ar.po b/po/ar.po
index 54c334476..8c1c93a5d 100644
--- a/po/ar.po
+++ b/po/ar.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-09 01:12+0200\n"
-"PO-Revision-Date: 2011-03-09 01:12+0300\n"
+"POT-Creation-Date: 2011-03-22 20:58+0200\n"
+"PO-Revision-Date: 2011-03-22 20:58+0300\n"
"Last-Translator: Khaled Hosny \n"
"Language-Team: Arabic \n"
"MIME-Version: 1.0\n"
@@ -144,47 +144,43 @@ msgstr ""
msgid "disabled OpenSearch providers"
msgstr ""
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "لم يُعثَر على الأمر"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "تعذّر تحليل الأمر:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "لا تطبيق بهذا الاسم"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "فشل تنفيذ '%s':"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "الكل"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "التطبيقات"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "الإعدادات"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "نافذة جديدة"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "أزِل من المفضّلة"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "أضِف إلى المفضّلة"
@@ -344,7 +340,7 @@ msgstr "هذا الأسبوع"
msgid "Next week"
msgstr "الأسبوع القادم"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:945
msgid "Remove"
msgstr "أزِل"
@@ -399,7 +395,7 @@ msgstr "%A %Ol:%OM %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A %e %B، %Y"
@@ -412,7 +408,7 @@ msgstr "العناصر الحديثة"
msgid "Log Out %s"
msgstr "اخرج%.0s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "اخرج"
@@ -434,45 +430,42 @@ msgstr "ستُخرج تلقائيا بعد %d ثوان."
msgid "Logging out of the system."
msgstr "يخرج من النظام."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
-msgstr "أطفئ"
-
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام."
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "أطفئ الحاسوب"
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "انقر على \"أطفئ الحاسوب\" لغلق هذه التطبيقات وإطفاء النظام."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "يُغلق النظام."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "يُطفأ النظام."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "أعِد التشغيل"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr "انقر على \"أعِد التشغيل\" لغلق هذه التطبيقات إعادة تشغيل النظام."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "سيُعاد تشغيل النظام تلقائيا خلال %d ثوان."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "يُعيد تشغيل النظام."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "أكّد"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "ألغِ"
@@ -486,7 +479,7 @@ msgstr "مفعّل"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "معطّل"
@@ -506,47 +499,47 @@ msgstr "اعرض المصدر"
msgid "Web Page"
msgstr "صفحة الوب"
-#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:938
msgid "Open"
msgstr "افتح"
-#: ../js/ui/messageTray.js:1963
+#: ../js/ui/messageTray.js:2018
msgid "System Information"
msgstr "معلومات النظام"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:89
msgid "Undo"
msgstr "تراجع"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:184
msgid "Windows"
msgstr "النوافذ"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:187
msgid "Applications"
msgstr "التطبيقات"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:203
msgid "Dash"
msgstr "الشريط"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "أغلق %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "الأنشطة"
-#: ../js/ui/panel.js:1020
-msgid "Panel"
-msgstr "اللوحة"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "الشريط العلوي"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -561,7 +554,7 @@ msgstr "أعد المحاولة"
msgid "Connect to..."
msgstr "اتّصل ب..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "الأماكن والأجهزة"
@@ -570,55 +563,55 @@ msgstr "الأماكن والأجهزة"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "من فضلك اكتب أمرا:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "يبحث..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "لا نتائج مطابقة."
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "أطفئ..."
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "علّق"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "متاح"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "مشغول"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "حسابي"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "إعدادات النظام"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "أوصد الشاشة"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "بدّل المستخدم"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "اخرج..."
@@ -626,14 +619,12 @@ msgstr "اخرج..."
msgid "Zoom"
msgstr "تقريب"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "قارئ الشاشة"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "لوحة مفاتيح على الشاشة"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "تنبيهات بصرية"
@@ -658,17 +649,17 @@ msgstr "مفاتيح الفأرة"
msgid "Universal Access Settings"
msgstr "إعدادات الإتاحة"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "تباين عال"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "نص كبير"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "بلوتوث"
@@ -688,94 +679,94 @@ msgstr "اضبط جهازا جديدا..."
msgid "Bluetooth Settings"
msgstr "إعدادات بلوتوث"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "الاتصال"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "أرسل ملفات..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "تصفح الملفات..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "عطل أثناء تصفّح الجهاز"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "تعذّر تصفح الجهاز، رسالة العطل '%s'"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "إعدادات لوحة المفاتيح"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "إعدادات الفأرة"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "إعدادات الصوت"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "طلب تخويل من %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "يريد الجهاز %s صلاحية الوصول للخدمة '%s'"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "امنح الصلاحية دائما"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "امنح هذه المرة فقط"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "أخرج"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "تأكيد مزاوجة %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "يريد الجهاز %s المزاوجة مع هذا الحاسوب"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "من فضلك أكد تطابق الرقم '%s' مع الموجود على الجهاز."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "مطابقات"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "لا تتطابق"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "طلب مزاوجة من %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "من فضلك أدخل الرقم المذكور على الجهاز."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "حسنا"
@@ -787,17 +778,147 @@ msgstr "أظهر تخطيط لوحة المفاتيح..."
msgid "Localization Settings"
msgstr "إعدادات اللغة"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<غير معروفة>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "مُعَطَّلة"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "يتّصل..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "الاستيثاق مطلوب"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "الكبل مفصول"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "غير متاح"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "فشل الاتصال"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "متّصل (شخصي)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "إيثرنت تلقائي"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "نطاق عريض تلقائي"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "اتصال هاتفي تلقائي"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s تلقائي"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "بلوتوث تلقائي"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "لاسلكي تلقائي"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "المزيد..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "فعّل الشبكات"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "سلكي"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "لاسلكي"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "شبكة هاتف محمول"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "اتصال شخف"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "إعدادات الشّبكة"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "صرت الآن متّصلا بشبكة الهاتف المحمول '%s'"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "صرت الآن متّصلا بالشبكة اللاسلكية '%s'"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "صرت الآن متّصلا بالشبكة السلكية '%s'"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "صرت الآن متّصلا بشبكة شخف '%s'"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "صرت الآن متّصلا بشبكة '%s'"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "تم الاتصال"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "عُطّلت الشبكات"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "مدير الشبكة"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "إعدادات الطاقة"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "يَحسِب..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -809,12 +930,12 @@ msgstr[4] "بقي %d ساعة"
msgstr[5] "بقي %d ساعة"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "بقي %d %s و %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "ساعة"
@@ -824,7 +945,7 @@ msgstr[3] "ساعات"
msgstr[4] "ساعة"
msgstr[5] "ساعة"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "دقيقة"
@@ -834,7 +955,7 @@ msgstr[3] "دقائق"
msgstr[4] "دقيقة"
msgstr[5] "دقيقة"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -845,78 +966,78 @@ msgstr[3] "بقي %d دقائق"
msgstr[4] "بقي %d دقيقة"
msgstr[5] "بقي %d دقيقة"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "مقبس طاقة"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "بطارية حاسوب محمول"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "مزود طاقة لا منقطعة"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "شاشة"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "فأرة"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "لوحة المفاتيح"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "مساعد رقمي"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "هاتف محمول"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "مشغل وسائط"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "لوحة"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "حاسوب"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "مجهول"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "جزء"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "ميكروفون"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s متّصل."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s غير متّصل."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s غائب."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s مشغول."
@@ -924,7 +1045,7 @@ msgstr "%s مشغول."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "أُرسلت الساعة %l:%M:%S في %A"
@@ -933,11 +1054,11 @@ msgstr "أُرسلت الساعة %l:%M:%S في %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "اكتب نصا للبحث عنه..."
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "ابحث"
@@ -953,7 +1074,7 @@ msgstr "'%s' جاهز"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -966,7 +1087,7 @@ msgstr[5] "%u مخرج"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@@ -977,19 +1098,24 @@ msgstr[3] "%u مداخل"
msgstr[4] "%u مدخلا"
msgstr[5] "%u مدخل"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "أصوات النظام"
-#: ../src/main.c:395
+#: ../src/main.c:438
msgid "Print version"
msgstr "اطبع الإصدارة"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "فشل تشغيل '%s'"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "منذ أقل من دقيقة"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1000,7 +1126,7 @@ msgstr[3] "منذ %d دقائق"
msgstr[4] "منذ %d دقيقة"
msgstr[5] "منذ %d دقيقة"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1011,7 +1137,7 @@ msgstr[3] "منذ %d ساعات"
msgstr[4] "منذ %d ساعة"
msgstr[5] "منذ %d ساعة"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1022,7 +1148,7 @@ msgstr[3] "منذ %d أيام"
msgstr[4] "منذ %d يوما"
msgstr[5] "منذ %d يوم"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1033,6 +1159,14 @@ msgstr[3] "منذ %d أسابيع"
msgstr[4] "منذ %d أسبوعا"
msgstr[5] "منذ %d أسبوع"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "المملكة المتحدة"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "المبدئي"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "أغلق المستخدم مربع الاستيثاق الحِواري"
@@ -1057,6 +1191,33 @@ msgstr "نظام الملفات"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "أطفئ"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "انقر على \"أطفئ\" لغلق هذه التطبيقات وإطفاء النظام."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "سيُطفأ النظام تلقائيا خلال %d ثوان."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "يُغلق النظام."
+
+#~ msgid "Confirm"
+#~ msgstr "أكّد"
+
+#~ msgid "Panel"
+#~ msgstr "اللوحة"
+
+#~ msgid "No such application"
+#~ msgstr "لا تطبيق بهذا الاسم"
+
+#~ msgid "Screen Reader"
+#~ msgstr "قارئ الشاشة"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "لوحة مفاتيح على الشاشة"
+
#~ msgid "PREFERENCES"
#~ msgstr "التفضيلات"
@@ -1125,9 +1286,6 @@ msgstr "%1$s: %2$s"
#~ msgid "Frequent"
#~ msgstr "متكرر"
-#~ msgid "More"
-#~ msgstr "المزيد"
-
#~ msgid "(see all)"
#~ msgstr "(انظر الكل)"
diff --git a/po/bn_IN.po b/po/bn_IN.po
new file mode 100644
index 000000000..9bacf469a
--- /dev/null
+++ b/po/bn_IN.po
@@ -0,0 +1,1189 @@
+# Bengali (India) translation for gnome-shell.
+# Copyright (C) 2011 gnome-shell's COPYRIGHT HOLDER
+# This file is distributed under the same license as the gnome-shell package.
+#
+# , 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome-shell master\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-22 23:02+0000\n"
+"PO-Revision-Date: 2011-03-23 20:57+0530\n"
+"Last-Translator: \n"
+"Language-Team: Bengali (India) \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: Lokalize 1.1\n"
+
+#: ../data/gnome-shell.desktop.in.in.h:1
+msgid "GNOME Shell"
+msgstr "GNOME Shell"
+
+#: ../data/gnome-shell.desktop.in.in.h:2
+msgid "Window management and application launching"
+msgstr "উইন্ডো পরিচালনা ও অ্যাপ্লিকেশন প্রারম্ভ"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:1
+msgid ""
+"Allows access to internal debugging and monitoring tools using the Alt-F2 "
+"dialog."
+msgstr ""
+"Alt-F2 ডায়লগের মাধ্যমে ডিবাগিং ও নিরীক্ষণের জন্য ব্যবহৃত অভ্যন্তরীণ সরঞ্জাম "
+"ব্যবহারের সুবিধা উপলব্ধ করা হবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:2
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr ""
+"Alt-F2-র সাহায্যে ডিভেলর ও পরীক্ষকদের ব্যবহারযোগ্য সামগ্রী ব্যবহারের সুবিধা "
+"উপলব্ধ করা হবে"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
+msgid "File extension used for storing the screencast"
+msgstr "স্ক্রিন-কাস্ট সংরক্ষণের জন্য ব্যবহৃত ফাইল এক্সটেশন"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
+msgid "Framerate used for recording screencasts."
+msgstr "স্ক্রিন-কাস্ট রেকর্ড করার জন্য ব্যবহৃত ফ্রেমের হার"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
+msgid ""
+"GNOME Shell extensions have a uuid property; this key lists extensions which "
+"should not be loaded."
+msgstr ""
+"GNOME Shell এক্সটেনশনের ক্ষেত্রে uuid বৈশিষ্ট্য উপস্থিত রয়েছে; যে সমস্ত "
+"এক্সটেনশন লোড করা হবে না সেগুলি এই কি দ্বারা চিহ্নিত হবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "কমান্ড (Alt-F2) ডায়লগের পূর্ববর্তী তথ্য"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "লুকিং-গ্লাস ডায়লগের পূর্ববর্তী তথ্য"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
+msgid "If true, display date in the clock, in addition to time."
+msgstr "মান true(সত্য) হলে, ঘড়ির মধ্যে সময়ের সাথে তারিখ প্রদর্শন করা হবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
+msgid "If true, display seconds in time."
+msgstr "মান true(সত্য) হলে, সময়ের ক্ষেত্রে সেকেন্ড প্রদর্শন করা হয়।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
+msgid "If true, display the ISO week date in the calendar."
+msgstr ""
+"মান true(সত্য) হলে, বর্ষপঞ্জির মধ্যে ISO সপ্তাহের তারিখ প্রদর্শন করা হবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
+msgid "List of desktop file IDs for favorite applications"
+msgstr "পছন্দসই অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত ডেস্কটপ ফাইলের ID"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#, no-c-format
+msgid ""
+"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
+"used for gst-launch. The pipeline should have an unconnected sink pad where "
+"the recorded video is recorded. It will normally have a unconnected source "
+"pad; output from that pad will be written into the output file. However the "
+"pipeline can also take care of its own output - this might be used to send "
+"the output to an icecast server via shout2send or similar. When unset or set "
+"to an empty value, the default pipeline will be used. This is currently "
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
+msgstr ""
+"রেকর্ডিং এনকোড করার জন্য ব্যবহারযোগ্য GStreamer পাইপ-লাইন নির্ধারণ করা হয়। "
+"gst-launch-এ ব্যবহৃত সিন্টেক্স ব্যবহার করা হয়। রেকর্ড করা ভিডিওটি রেকর্ড "
+"জন্য পাইপ-লাইনের মধ্যে একটি বিচ্ছিন্ন সিংক-প্যাড উপস্থিত থাকা আবশ্যক। "
+"সাধারণত একটি বিচ্ছিন্ন সিংক-প্যাড উপস্থিত থাকবে; এই প্যাড থেকে প্রাপ্ত "
+"আউটপুটটি আউটপুট ফাইলের মধ্যে লেখা হবে। পাইপ-লাইন দ্বারা নিজের আউটপুট "
+"ব্যবস্থাপনা করা হয় - এই বৈশিষ্ট্যের সাহায্যে আউটপুটটি shout2send-র মাধ্যমে "
+"icecast সার্ভারে পাঠানো যাবে অথবা সমতূল্য ব্যবস্থাপন করা যাবে। ফাঁকা মান "
+"নির্ধারিত হলে ডিফল্ট পাইপ-লাইন ব্যবহার করা হবে। বর্তমানে এটি 'videorate ! "
+"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' ও VP8 কোডেক সহ "
+"WEBM-এ রেকর্ড করা হয়। সিস্টেমের সর্বোত্তম অনুমিত থ্রেড সংখ্যা ধারণের জন্য "
+"%T প্রয়োগ করা হয়।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "ঘড়ির মধ্যে তারিখ প্রদর্শন করা হবে"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
+msgid "Show the week date in the calendar"
+msgstr "বর্ষপঞ্জির মধ্যে সপ্তাহের তারিখ প্রদর্শন করা হবে"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
+msgid "Show time with seconds"
+msgstr "সেকেন্ড সহ সময় প্রদর্শন করা হবে"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
+msgid ""
+"The applications corresponding to these identifiers will be displayed in the "
+"favorites area."
+msgstr ""
+"এই আইডেন্টিফায়ার দ্বারা চিহ্নিত অ্যাপ্লিকেশনগুলি, পছন্দসই অ্যাপ্লিকেশনের "
+"অংশে প্রদর্শন করা হবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
+msgid ""
+"The filename for recorded screencasts will be a unique filename based on the "
+"current date, and use this extension. It should be changed when recording to "
+"a different container format."
+msgstr ""
+"রেকর্ড করার স্ক্রিন-কাস্টের ক্ষেত্রে ব্যবহারযোগ্য একটি স্বতন্ত্র ফাইলের নাম "
+"গঠন করা হবে বর্তমান তারিখ প্রয়োগ করে ও এর সাথে এই এক্সটেনশন প্রয়োগ করুন। "
+"ভিন্ন কনটেইনার বিন্যাসে রেকর্ড করার সময় এই এক্সটেনশন পরিবর্তন করা আবশ্যক।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
+msgid ""
+"The framerate of the resulting screencast recordered by GNOME Shell's "
+"screencast recorder in frames-per-second."
+msgstr ""
+"GNOME Shell-র স্ক্রিন-কাস্ট রেকর্ডার সহযোগে রেকর্ড করার স্ক্রিন-কাস্টের "
+"ফ্রেমের হার, ফ্রেম/সেকেন্ড হিসাবে।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
+msgid "The gstreamer pipeline used to encode the screencast"
+msgstr "স্ক্রিন-কাস্ট এনকোড করার জন্য ব্যবহৃত gstreamer পাইল-লাইন"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
+msgid ""
+"The shell normally monitors active applications in order to present the most "
+"used ones (e.g. in launchers). While this data will be kept private, you may "
+"want to disable this for privacy reasons. Please note that doing so won't "
+"remove already saved data."
+msgstr ""
+"সর্বাধিক ব্যবহৃত অ্যাপ্লিকেশনের তালিকা প্রদর্শনের জন্য shell দ্বারা সক্রিয় "
+"অ্যাপ্লিকেশনের নিরীক্ষণ করা হয় (উদাহরণস্বরূপ, লঞ্চারের মধ্যে)। এই তথ্য গোপন "
+"রাখা হলেও, অতিরিক্ত গোপনীয়তার জন্য এই বৈশিষ্ট্য নিষ্ক্রিয় করা যেতে পারে। "
+"উল্লেখ্য, নিষ্ক্রিয় করার ফলে পূর্বে সংরক্ষিত তথ্য মুছে ফেলা হবে না।"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "নিষ্ক্রিয় করার উদ্দেশ্যে চিহ্নিত এক্সটেনশনের uuid"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr "অ্যাপ্লিকেশনের ব্যবহার সম্পর্কিত পরিসংখ্যান সংগ্রহ করা হবে কি না"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "নিষ্ক্রিয় OpenSearch উপলব্ধকারী"
+
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "কমান্ড পাওয়া যায়নি"
+
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "কমান্ড পার্স করতে ব্যর্থ"
+
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "'%s' সঞ্চালন করতে ব্যর্থ:"
+
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:230
+msgid "All"
+msgstr "সকল"
+
+#: ../js/ui/appDisplay.js:328
+msgid "APPLICATIONS"
+msgstr "APPLICATIONS"
+
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "SETTINGS"
+
+#: ../js/ui/appDisplay.js:625
+msgid "New Window"
+msgstr "নতুন উইন্ডো"
+
+#: ../js/ui/appDisplay.js:628
+msgid "Remove from Favorites"
+msgstr "পছন্দের তালিকা থেকে সরিয়ে ফেলুন"
+
+#: ../js/ui/appDisplay.js:629
+msgid "Add to Favorites"
+msgstr "পছন্দের তালিকায় যোগ করুন"
+
+#: ../js/ui/appFavorites.js:91
+#, c-format
+msgid "%s has been added to your favorites."
+msgstr "আপনার পছন্দের তালিকার মধ্যে %s-কে যোগ করা হয়েছে"
+
+#: ../js/ui/appFavorites.js:122
+#, c-format
+msgid "%s has been removed from your favorites."
+msgstr "আপনার পছন্দের তালিকা থেকে %s-কে সরিয়ে ফেলা হয়েছে।"
+
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "সারাদিন"
+
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
+
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
+
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "র"
+
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "সো"
+
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "ম"
+
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "বু"
+
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "বৃ"
+
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "শু"
+
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "শ"
+
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "রবি"
+
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "সো"
+
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "ম"
+
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "বু"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "বৃহ"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "শু"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "শ"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "কিছুই নির্ধারিত হয়নি"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "আজ"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "আগামীকাল"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "এই সপ্তাহ"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "পরবর্তী সপ্তাহ"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
+msgid "Remove"
+msgstr "সরিয়ে ফেলুন"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "তারিখ ও সময় সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "বর্ষপঞ্জি খুলুন"
+
+#. Translators: This is the time format with date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:164
+msgid "%a %b %e, %R:%S"
+msgstr "%a %b %e, %R:%S"
+
+#: ../js/ui/dateMenu.js:165
+msgid "%a %b %e, %R"
+msgstr "%a %b %e, %R"
+
+#. Translators: This is the time format without date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:169
+msgid "%a %R:%S"
+msgstr "%a %R:%S"
+
+#: ../js/ui/dateMenu.js:170
+msgid "%a %R"
+msgstr "%a %R"
+
+#. Translators: This is a time format with date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:177
+msgid "%a %b %e, %l:%M:%S %p"
+msgstr "%a %b %e, %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:178
+msgid "%a %b %e, %l:%M %p"
+msgstr "%a %b %e, %l:%M %p"
+
+#. Translators: This is a time format without date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:182
+msgid "%a %l:%M:%S %p"
+msgstr "%a %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:183
+msgid "%a %l:%M %p"
+msgstr "%a %l:%M %p"
+
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %B %e, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "RECENT ITEMS"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "%s প্রস্থান করুন"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
+msgid "Log Out"
+msgstr "প্রস্থান করুন"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"এই অ্যাপ্লিকেশনগুলি বন্ধ করে সিস্টেম থেকে লগ-আউট করার জন্য 'প্রস্থান করুন' "
+"ক্লিক করুন।"
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s-কে %d সেকেন্ডের পরে স্বয়ংক্রিয়ভাবে লগ-আউট করা হবে।"
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "%d সেকেন্ডের পরে স্বয়ংক্রিয়ভাবে আপনাকে লগ-আউট করা হবে।"
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "সিস্টেম থেকে লগ-আউট করা হচ্ছে।"
+
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "বন্ধ করুন"
+
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr ""
+"এই অ্যাপ্লিকেশনগুলি থেকে প্রস্থান করে সিস্টেম বন্ধ করার জন্য 'বন্ধ করুন' "
+"ক্লিক করুন।"
+
+#: ../js/ui/endSessionDialog.js:77
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "%d সেকেন্ডের পরে স্বয়ংক্রিয়ভাবে সিস্টেমটি বন্ধ করা হবে।"
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "সিস্টেম বন্ধ করা হচ্ছে।"
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
+msgid "Restart"
+msgstr "পুনরারম্ভ"
+
+#: ../js/ui/endSessionDialog.js:89
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"এই অ্যাপ্লিকেশনগুলি থেকে প্রস্থান করে সিস্টেম পুনরায় আরম্ভ করার জন্য "
+"'পুনরারম্ভ' ক্লিক করুন।"
+
+#: ../js/ui/endSessionDialog.js:90
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "%d সেকেন্ডের পরে স্বয়ংক্রিয়ভাবে সিস্টেমটি পুনরায় আরম্ভ করা হবে।"
+
+#: ../js/ui/endSessionDialog.js:91
+msgid "Restarting the system."
+msgstr "সিস্টেম পুনরায় আরম্ভ করা হচ্ছে।"
+
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "বাতিল"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "কোনো এক্সটেনশন ইনস্টল করা হয়নি"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "সক্রিয়"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "নিষ্ক্রিয়"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "ত্রুটি"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "মেয়াদ উত্তীর্ণ"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "উৎস প্রদর্শন"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "ওয়েব পেজ"
+
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "খুলুন"
+
+#: ../js/ui/messageTray.js:2145
+msgid "System Information"
+msgstr "সিস্টেম সংক্রান্ত তথ্য"
+
+#: ../js/ui/overview.js:91
+msgid "Undo"
+msgstr "পূর্বাবস্থা"
+
+#: ../js/ui/overview.js:186
+msgid "Windows"
+msgstr "উইন্ডো"
+
+#: ../js/ui/overview.js:189
+msgid "Applications"
+msgstr "অ্যাপ্লিকেশন"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "ড্যাশ"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "%s থেকে প্রস্থান করুন"
+
+#. Button on the left side of the panel.
+#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
+#: ../js/ui/panel.js:878
+msgid "Activities"
+msgstr "কর্ম"
+
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "উপরের বার"
+
+#: ../js/ui/placeDisplay.js:122
+#, c-format
+msgid "Failed to unmount '%s'"
+msgstr "'%s' আন-মাউন্ট করতে ব্যর্থ"
+
+#: ../js/ui/placeDisplay.js:125
+msgid "Retry"
+msgstr "পুনঃপ্রচেষ্টা"
+
+#: ../js/ui/placeDisplay.js:165
+msgid "Connect to..."
+msgstr "চিহ্নিত বস্তুর সাথে সংযোগ স্থাপন করুন..."
+
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "PLACES & DEVICES"
+
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:679
+msgid "toggle-switch-us"
+msgstr "toggle-switch-us"
+
+#: ../js/ui/runDialog.js:205
+msgid "Please enter a command:"
+msgstr "অনুগ্রহ করে একটি কমান্ড লিখুন:"
+
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "অনুসন্ধান করা হচ্ছে..."
+
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "কোনো মিল পাওয়া যায়নি।"
+
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "বন্ধ করুন..."
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "স্থগিত করুন"
+
+#: ../js/ui/statusMenu.js:184
+msgid "Available"
+msgstr "উপলব্ধ"
+
+#: ../js/ui/statusMenu.js:189
+msgid "Busy"
+msgstr "ব্যস্ত"
+
+#: ../js/ui/statusMenu.js:197
+msgid "My Account"
+msgstr "আমার অ্যাকাউন্ট"
+
+#: ../js/ui/statusMenu.js:201
+msgid "System Settings"
+msgstr "সিস্টেমের বৈশিষ্ট্য"
+
+#: ../js/ui/statusMenu.js:208
+msgid "Lock Screen"
+msgstr "পর্দা লক করুন"
+
+#: ../js/ui/statusMenu.js:213
+msgid "Switch User"
+msgstr "ব্যবহারকারী পরিবর্তন"
+
+#: ../js/ui/statusMenu.js:218
+msgid "Log Out..."
+msgstr "প্রস্থান..."
+
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "বড় মাপে প্রদর্শন"
+
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "দৃশ্যমান সূচনা"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "স্টিকি-কি"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "ধীর-কি"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "বাউন্স-কি"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "মাউস-কি"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "সার্বজনীন ব্যবহারের বৈশিষ্ট্য"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "উচ্চ মাত্রার বৈপরিত্য"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "বড় মাপের হরফ"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "ব্লু-টুথ"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "দৃশ্যমান"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "ডিভাইসের মধ্যে ফাইল পাঠান..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "নতুন ডিভাইস প্রস্তুত করুন..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "ব্লু-টুথ সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "সংযোগ"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "ফাইল পাঠিয়ে দিন..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "ফাইল ব্রাউজ করুন..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "ডিভাইস ব্রাউজ করতে ত্রুটি"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "অনুরোধ করা ডিভাইসটি ব্রাউজ করা যায়নি, '%s' ত্রুটি দেখা দিয়েছে"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "কি-বোর্ড সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "মাউস সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "শব্দ সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "%s থেকে প্রাপ্র অনুমোদনের অনুরোধ"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "%s ডিভাইস দ্বারা '%s' পরিসেবা ব্যবহারের অনুরোধ করা হচ্ছে"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "সর্বদা অনুমতি প্রদান করা হবে"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "শুধুমাত্র এইবার প্রদান করা হবে"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "প্রত্যাখ্যান করুন"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "%s-র জন্য জুটি নির্মাণের নিশ্চিতি"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "%s ডিভাইসটি এই কম্পিউটারের সাথে "
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "PIN '%s'-টি এই ডিভাইসের সাথে মিলছে কি না তা নিশ্চিত করুন।"
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "মিল পাওয়া গিয়েছে"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "মিল পাওয়া যায়নি"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "%s-র জন্য জুটি তৈরির অনুরোধ"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "অনুগ্রহ করে ডিভাইসে উল্লিখি PIN লিখুন।"
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "OK"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "কি-বোর্ড বিন্যাস প্রদর্শন করা হবে..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "স্থানীয়করণ সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "নিষ্ক্রিয়"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "সংযোগ করা হচ্ছে..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "অনুমোদন প্রয়োজন"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "কেবল বিচ্ছিন্ন করা হয়েছে"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "উপলব্ধ নয়"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "সংযোগ বিফল"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "সংযুক্ত (ব্যক্তিগত)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "স্বয়ংক্রিয় ইথারনেট"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "স্বয়ংক্রিয় ব্রডব্যান্ড"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "স্বয়ংক্রিয় ডায়াল-আপ"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "স্বয়ংক্রিয় %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "স্বয়ংক্রিয় ব্লু-টুথ"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "স্বয়ংক্রিয় বেতার"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "অতিরিক্ত..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "নেটওয়ার্ক সক্রিয় করুন"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "তারযুক্ত"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "বেতার"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "মোবাইল ব্রড-ব্যান্ড"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN সংযোগ"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "নেটওয়ার্ক সংক্রান্ত বৈশিষ্ট্য"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "মোবাইল ব্রড-ব্যান্ড সংযোগ '%s' বর্তমানে সক্রিয়"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "বেতার নেটওয়ার্ক সংযোগ '%s' বর্তমানে সক্রিয়"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "তারযুক্ত নেটওয়ার্ক সংযোগ '%s' বর্তমানে সক্রিয়"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "VPN নেটওয়ার্ক সংযোগ '%s' বর্তমানে সক্রিয়"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "'%s' সংযোগ বর্তমানে সক্রিয়"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "সংযোগ স্থাপিত হয়েছে"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "নেটওয়ার্ক নিষ্ক্রিয় রয়েছে"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Network Manager"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "বিদ্যুৎ পরিচালনা সংক্রান্ত বৈশিষ্ট্য"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "গণনা করা হচ্ছে..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "%d ঘন্টা অবশিষ্ট"
+msgstr[1] "%d ঘন্টা অবশিষ্ট"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "%d %s %d %s অবশিষ্ট"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "ঘন্টা"
+msgstr[1] "ঘন্টা"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "মিনিট"
+msgstr[1] "মিনিট"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "%d মিনিট অবশিষ্ট"
+msgstr[1] "%d মিনিট অবশিষ্ট"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "AC অ্যাডাপ্টার"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "ল্যাপটপ ব্যাটারি"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "মনিটর"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "মাউস"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "কি-বোর্ড"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "সেল ফোন"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "মিডিয়া প্লেয়ার"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "ট্যাবলেট"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "কম্পিউটার"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
+msgid "Unknown"
+msgstr "অজানা"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "ভলিউম"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "মাইক্রোফোন"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s বর্তমানে অন-লাইন।"
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s বর্তমানে অফ-লাইন"
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s বর্তমানে অনুপস্থিত।"
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s বর্তমানে ব্যস্ত।"
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "%X-এ %A-র মধ্যে পাঠানো হয়েছে"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "অনুসন্ধান করার জন্য লিখুন..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "অনুসন্ধান করুন"
+
+#: ../js/ui/windowAttentionHandler.js:42
+#, c-format
+msgid "%s has finished starting"
+msgstr "%s আরম্ভ হয়েছে"
+
+#: ../js/ui/windowAttentionHandler.js:44
+#, c-format
+msgid "'%s' is ready"
+msgstr "'%s' প্রস্তুত"
+
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u আউটপুট"
+msgstr[1] "%u আউটপুট"
+
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u ইনপুট"
+msgstr[1] "%u ইনপুট"
+
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "সিস্টেমের শব্দ"
+
+#: ../src/main.c:438
+msgid "Print version"
+msgstr "সংস্করণ প্রদর্শন করা হবে"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "'%s' আরম্ভ করতে ব্যর্থ"
+
+#: ../src/shell-global.c:1395
+msgid "Less than a minute ago"
+msgstr "এক মিনিটের কম সময় পূর্বে"
+
+#: ../src/shell-global.c:1399
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] "%d মিনিট পূর্বে"
+msgstr[1] "%d মিনিট পূর্বে"
+
+#: ../src/shell-global.c:1404
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] "%d ঘন্টা পূর্বে"
+msgstr[1] "%d ঘন্টা পূর্বে"
+
+#: ../src/shell-global.c:1409
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "%d দিন পূর্বে"
+msgstr[1] "%d দিন পূর্বে"
+
+#: ../src/shell-global.c:1414
+#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] "%d সপ্তাহ পূর্বে"
+msgstr[1] "%d সপ্তাহ পূর্বে"
+
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "যুক্তরাজ্য"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "ডিফল্ট"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "ব্যবহারকারী দ্বারা অনুমোদনের ডায়লগ বাতিল করা হয়েছে"
+
+#: ../src/shell-util.c:89
+msgid "Home Folder"
+msgstr "ব্যক্তিগত ফোল্ডার"
+
+#. Translators: this is the same string as the one found in
+#. * nautilus
+#: ../src/shell-util.c:104
+msgid "File System"
+msgstr "ফাইল-সিস্টেম"
+
+#. Translators: the first string is the name of a gvfs
+#. * method, and the second string is a path. For
+#. * example, "Trash: some-directory". It means that the
+#. * directory called "some-directory" is in the trash.
+#.
+#: ../src/shell-util.c:300
+#, c-format
+msgid "%1$s: %2$s"
+msgstr "%1$s: %2$s"
+
+
diff --git a/po/es.po b/po/es.po
index 742c329e5..6d7cf643f 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,18 +1,18 @@
# Spanish translation of gnome-shell.
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
-# Jorge González , 2009, 2010, 2011.
# Benjamín Valero Espinosa , 2011.
# Daniel Mustieles , 2010, 2011.
+# Jorge González , 2009, 2010, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2011-03-09 21:00+0000\n"
-"PO-Revision-Date: 2011-03-10 10:59+0100\n"
-"Last-Translator: Daniel Mustieles \n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-25 20:20+0000\n"
+"PO-Revision-Date: 2011-03-25 21:35+0100\n"
+"Last-Translator: Jorge González \n"
"Language-Team: Español \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -96,16 +96,16 @@ msgid ""
"at the optimal thread count on the system."
msgstr ""
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
-"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
-"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. "
-"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese "
-"punto se escibirá en el archivo de salida. No obstante la tubería también "
-"puede tomar parte en su propia salida; esto se puede usar para enviar la "
-"salida a un servidor «icecast» a través de shout2send o similar. Cuando no "
-"está establecido o lo está a un valor vacío, se usará la tubería "
-"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads="
-"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como "
-"suposición para el número de hilos óptimos en el sistema."
+"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
+"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se "
+"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida "
+"de ese punto se escibirá en el archivo de salida. No obstante la tubería "
+"también puede tomar parte en su propia salida; esto se puede usar para "
+"enviar la salida a un servidor «icecast» a través de shout2send o similar. "
+"Cuando no está establecido o lo está a un valor vacío, se usará la tubería "
+"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 "
+"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T "
+"como suposición para el número de hilos óptimos en el sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
@@ -174,47 +174,43 @@ msgstr ""
msgid "disabled OpenSearch providers"
msgstr "proveedores OpenSearch desactivados"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Comando no encontrado"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "No se pudo analizar el comando:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "No existe la aplicación"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Falló la ejecución de «%s»:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Todas"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "APLICACIONES"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "CONFIGURACIÓN"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Ventana nueva"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
@@ -374,7 +370,7 @@ msgstr "Esta semana"
msgid "Next week"
msgstr "La semana que viene"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Quitar"
@@ -429,7 +425,7 @@ msgstr "%a %H:%M"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y"
@@ -442,7 +438,7 @@ msgstr "ELEMENTOS RECIENTES"
msgid "Log Out %s"
msgstr "Cerrar la sesión %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Cerrar la sesión"
@@ -466,46 +462,44 @@ msgstr "Su sesión se cerrará automáticamente en %d segundos."
msgid "Logging out of the system."
msgstr "Cerrando la sesión."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
msgstr "Apagar"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
-#: ../js/ui/endSessionDialog.js:76
+#: ../js/ui/endSessionDialog.js:77
#, c-format
-msgid "The system will shut down automatically in %d seconds."
+msgid "The system will power off automatically in %d seconds."
msgstr "El sistema se apagará automáticamente en %d segundos."
-#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
msgstr "Apagando el sistema."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Reiniciar"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "El sistema se reiniciará automáticamente en %d segundos."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Reiniciando el sistema."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Cancelar"
@@ -519,7 +513,7 @@ msgstr "Activado"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Desactivado"
@@ -539,47 +533,47 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "Abrir"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Información del sistema"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Deshacer"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Ventanas"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Aplicaciones"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "Plano"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Salir de %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Actividades"
-#: ../js/ui/panel.js:1020
-msgid "Panel"
-msgstr "Panel"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Barra superior"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -594,64 +588,85 @@ msgstr "Reintentar"
msgid "Connect to..."
msgstr "Conectar a…"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "LUGARES Y DISPOSITIVOS"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Se necesita autenticación"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Autenticar"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Inténtelo de nuevo,"
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Contraseña:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Introduzca un comando:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Buscando…"
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "No se encontró ningún resultado coincidente."
-#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "Apagar…"
-#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "Suspender"
-#: ../js/ui/statusMenu.js:136
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Disponible"
-#: ../js/ui/statusMenu.js:141
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Ocupado"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Mi cuenta"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Configuración del sistema"
-#: ../js/ui/statusMenu.js:160
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Bloquear la pantalla"
-#: ../js/ui/statusMenu.js:164
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Cambiar de usuario"
-#: ../js/ui/statusMenu.js:169
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Cerrar la sesión…"
@@ -659,14 +674,12 @@ msgstr "Cerrar la sesión…"
msgid "Zoom"
msgstr "Ampliación"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Lector de pantalla"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Teclado en pantalla"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Alertas visuales"
@@ -689,19 +702,19 @@ msgstr "Teclas del ratón"
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
-msgstr "Preferencias del acceso universal"
+msgstr "Configuración del acceso universal"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Contraste alto"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Texto grande"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -721,94 +734,94 @@ msgstr "Configurar un dispositivo nuevo…"
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Conexión"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Enviar archivos…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Examinar archivos…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Error al examinar el dispositivo"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Configuración del teclado"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Ajustes del ratón…"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Configuración del sonido"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Solicitud de autorización de %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "El dispositivo %s quiere acceder al servicio «%s»"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Conceder acceso siempre"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Conceder sólo esta vez"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Rechazar"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Confirmación de emparejamiento para «%s»"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Coincide"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "No coincide"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Solicitud de emparejamiento para «%s»"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Introduzca el PIN mencionado en el dispositivo."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "Aceptar"
@@ -820,17 +833,153 @@ msgstr "Mostrar la distribución del teclado…"
msgid "Localization Settings"
msgstr "Configuración regional"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1437
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "desactivada"
+
+#: ../js/ui/status/network.js:478
+msgid "connecting..."
+msgstr "conectando…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:481
+msgid "authentication required"
+msgstr "se necesita autenticación"
+
+#. Translators: this is for devices that require some kind of firmware or kernel
+#. module, which is missing
+#: ../js/ui/status/network.js:491
+msgid "firmware missing"
+msgstr "falta el «firmware»"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:498
+msgid "cable unplugged"
+msgstr "cable desconectado"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:503
+msgid "unavailable"
+msgstr "no disponible"
+
+#: ../js/ui/status/network.js:505
+msgid "connection failed"
+msgstr "falló la conexión"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1385
+msgid "Connected (private)"
+msgstr "Conectada (privada)"
+
+#: ../js/ui/status/network.js:666
+msgid "Auto Ethernet"
+msgstr "Ethernet automática"
+
+#: ../js/ui/status/network.js:741
+msgid "Auto broadband"
+msgstr "Banda ancha automática"
+
+#: ../js/ui/status/network.js:744
+msgid "Auto dial-up"
+msgstr "Marcado automático"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:887 ../js/ui/status/network.js:1397
+#, c-format
+msgid "Auto %s"
+msgstr "%s automática"
+
+#: ../js/ui/status/network.js:889
+msgid "Auto bluetooth"
+msgstr "Bluetooth automático"
+
+#: ../js/ui/status/network.js:1399
+msgid "Auto wireless"
+msgstr "Inalámbrica automática"
+
+#: ../js/ui/status/network.js:1457
+msgid "More..."
+msgstr "Más…"
+
+#: ../js/ui/status/network.js:1480
+msgid "Enable networking"
+msgstr "Activar red"
+
+#: ../js/ui/status/network.js:1492
+msgid "Wired"
+msgstr "Cableada"
+
+#: ../js/ui/status/network.js:1503
+msgid "Wireless"
+msgstr "Inalámbrica"
+
+#: ../js/ui/status/network.js:1513
+msgid "Mobile broadband"
+msgstr "Banda ancha móvil"
+
+#: ../js/ui/status/network.js:1523
+msgid "VPN Connections"
+msgstr "Conexiones VPN"
+
+#: ../js/ui/status/network.js:1532
+msgid "Network Settings"
+msgstr "Configuración de la red"
+
+#: ../js/ui/status/network.js:1827
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Ahora está conectado a la red de banda ancha móvil «%s»"
+
+#: ../js/ui/status/network.js:1831
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Ahora está conectado a la red inalámbrica «%s»"
+
+#: ../js/ui/status/network.js:1835
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Ahora está conectado a la red cableada «%s»"
+
+#: ../js/ui/status/network.js:1839
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Ahora está conectado a la VPN «%s»"
+
+#: ../js/ui/status/network.js:1844
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Ahora está conectado a «%s»"
+
+#: ../js/ui/status/network.js:1852
+msgid "Connection established"
+msgstr "Conexión establecida"
+
+#: ../js/ui/status/network.js:1974
+msgid "Networking is disabled"
+msgstr "La red está desactivada"
+
+#: ../js/ui/status/network.js:2099
+msgid "Network Manager"
+msgstr "Gestor de la red"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Configuración de energía"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Estimando…"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -838,102 +987,102 @@ msgstr[0] "Queda %d hora"
msgstr[1] "Queda %d horas"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "Quedan %d %s %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "hora"
msgstr[1] "horas"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "Queda %d minuto"
msgstr[1] "Queda %d minutos"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Adaptador de corriente"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Batería del portátil"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "SAI"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Ratón"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Teclado"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Teléfono móvil"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Reproductor multimedia"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tableta"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Equipo"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Desconocido"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volumen"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Micrófono"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s está conectado/a."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s está desconectado/a."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s está ausente."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s está ocupado/a."
@@ -941,7 +1090,7 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Enviado a las %X el %A"
@@ -950,11 +1099,11 @@ msgstr "Enviado a las %X el %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Teclear para buscar…"
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "Buscar"
@@ -970,7 +1119,7 @@ msgstr "«%s» está preparado"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -979,53 +1128,66 @@ msgstr[1] "%u salidas"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u entrada"
msgstr[1] "%u entradas"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Sonidos del sistema"
-#: ../src/main.c:395
+#: ../src/main.c:446
msgid "Print version"
msgstr "Imprimir versión"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Falló al lanzar «%s»"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Hace menos de un minuto"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Hace %d minuto"
msgstr[1] "Hace %d minutos"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Hace %d hora"
msgstr[1] "Hace %d horas"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "Hace %d día"
msgstr[1] "Hace %d días"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "Hace %d semana"
msgstr[1] "Hace %d semanas"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Predeterminada"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "El usuario rechazó el diálogo de autenticación"
@@ -1050,6 +1212,36 @@ msgstr "Sistema de archivos"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "Apagar"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "El sistema se apagará automáticamente en %d segundos."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "Apagando el sistema."
+
+#~ msgid "Confirm"
+#~ msgstr "Confirmar"
+
+#~ msgid "Panel"
+#~ msgstr "Panel"
+
+#~ msgid "No such application"
+#~ msgstr "No existe la aplicación"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Lector de pantalla"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Teclado en pantalla"
+
+#~ msgid "%s is now known as %s"
+#~ msgstr "Ahora %s se llama %s"
+
#~ msgid "PREFERENCES"
#~ msgstr "PREFERENCIAS"
@@ -1224,8 +1416,8 @@ msgstr "%1$s: %2$s"
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
#~ "in time."
#~ msgstr ""
-#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
-#~ "en la hora."
+#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
+#~ "segundos en la hora."
#~ msgid ""
#~ "This key specifies the format used by the panel clock when the format key "
@@ -1242,18 +1434,19 @@ msgstr "%1$s: %2$s"
#~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
-#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
-#~ "01-01. If set to \"custom\", the clock will display time according to the "
-#~ "format specified in the custom_format key. Note that if set to either "
-#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
#~ msgstr ""
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
-#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
-#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
-#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
-#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
-#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
-#~ "ignoran las claves «show_date» y «show_seconds»."
+#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
+#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
+#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
+#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
+#~ "especificado en la clave «custom_format». Note que si se establece a "
+#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
#~ msgid "Clock Format"
#~ msgstr "Formato del reloj"
@@ -1319,9 +1512,6 @@ msgstr "%1$s: %2$s"
#~ msgid "Frequent"
#~ msgstr "Frecuentes"
-#~ msgid "More"
-#~ msgstr "Más"
-
#~ msgid "(see all)"
#~ msgstr "(ver todo)"
@@ -1349,8 +1539,5 @@ msgstr "%1$s: %2$s"
#~ msgid "DOCUMENTS"
#~ msgstr "DOCUMENTOS"
-#~ msgid "Manager"
-#~ msgstr "Gestor"
-
#~ msgid "The user manager object this user is controlled by."
#~ msgstr "El objeto de gestión de usuarios que controla a este usuario."
diff --git a/po/et.po b/po/et.po
index ddbe685b8..ad03b0c42 100644
--- a/po/et.po
+++ b/po/et.po
@@ -12,21 +12,21 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell MASTER\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2011-02-04 22:28+0000\n"
-"PO-Revision-Date: 2011-02-06 08:43+0200\n"
-"Last-Translator: Ivar Smolin \n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-18 10:35+0000\n"
+"PO-Revision-Date: 2011-03-18 21:33+0300\n"
+"Last-Translator: Mattias Põldaru \n"
"Language-Team: Estonian \n"
+"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: Estonian\n"
"X-Poedit-Country: Estonia\n"
msgid "GNOME Shell"
-msgstr "GNOME kest"
+msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Aknahaldur ja rakenduste käivitaja"
@@ -58,6 +58,10 @@ msgstr ""
msgid "History for command (Alt-F2) dialog"
msgstr "Käsudialoogi (Alt-F2) ajalugu"
+# suurendusklaasidialoog? miks ka mitte :)
+msgid "History for the looking glass dialog"
+msgstr "Otsingudialoogi ajalugu"
+
msgid "If true, display date in the clock, in addition to time."
msgstr "Kui määratud, siis kuvatakse kellaaja kõrval ka kuupäeva."
@@ -83,6 +87,16 @@ msgid ""
"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
"at the optimal thread count on the system."
msgstr ""
+"Määrab GStreameri toru, mida kasutatakse lindistuste kodeerimiseks. See peab "
+"vastama gst-launch'i süntaksile. Torul peaks olema vaba plokk (pad), kuhu "
+"lindistatav video salvestatakse. Tavaliselt on vaba plokk olemas; selle "
+"ploki väljund kirjutatakse väljundfaili. Toru võib hoolitseda ka enda "
+"väljundi eest - seda võib kasutada väljundi saatmiseks icecast serverisse "
+"shout2send või sarnase tehnoloogia abil. Kui see on määramata või väärtus on "
+"tühi, kasutatakse vaikimisi toru. See on praegu 'videorate ! vp8enc "
+"quality=10 speed=2 threads=%T ! queue ! webmmux' ning lindistab WEBM "
+"vormingusse VP8 koodekiga. %T asendatakse süsteemi oletatava optimaalseima "
+"lõimede (thread) arvuga."
msgid "Show date in clock"
msgstr "Kell näitab kuupäeva"
@@ -96,7 +110,7 @@ msgstr "Kellaaega näidatakse sekunditega"
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
-msgstr ""
+msgstr "Nendele tunnustele vastavaid rakendusi kuvatakse lemmikutes."
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
@@ -112,9 +126,10 @@ msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
+"GNOME Shelli lindistatava ekraanivideo kaadrisagedus (kaadrit sekundis)."
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr ""
+msgstr "GStreameri toru, mida ekraanivideo kodeerimiseks kasutatakse"
msgid ""
"The shell normally monitors active applications in order to present the most "
@@ -122,125 +137,19 @@ msgid ""
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
+"Shell tavaliselt seirab aktiivseid rakendusi, et näidata enamkasutatavaid "
+"(näiteks käivitajaid). Kuigi neid andmeid hoitakse privaatselt, võid "
+"privaatsuse suurendamiseks selle keelata. Selle keelamine siiski ei eemalda "
+"juba salvestatud andmeid."
msgid "Uuids of extensions to disable"
msgstr "Keelatavate laienduste UUID-d"
msgid "Whether to collect stats about applications usage"
-msgstr ""
+msgstr "Kas rakenduste kasutuse kohta kogutakse andmeid"
msgid "disabled OpenSearch providers"
-msgstr ""
-
-msgid "Clip the crosshairs at the center"
-msgstr "Niitristi keskel on auk"
-
-msgid "Color of the crosshairs"
-msgstr "Niitristi värvus"
-
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
-
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr ""
-
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr ""
-"Määrab niitristi läbipaistvuse, alates täiesti läbipaistmatust kuni täiesti "
-"läbipaistvani."
-
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-"Määrab, kas niitrist kattub suurendatud hiire pildiga või on keskelt ära "
-"lõigatud nii, et jooned ümbritsevad hiirekursori pilti."
-
-msgid "Enable lens mode"
-msgstr "Läätsede režiimi lubamine"
-
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr "Lubab/keelab niitristi kuvamise suurendatud hiirekursori kohal."
-
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr ""
-
-msgid "Length of the crosshairs"
-msgstr "Niitristi pikkus"
-
-msgid "Magnification factor"
-msgstr "Suurendustegur"
-
-msgid "Mouse Tracking Mode"
-msgstr "Hiire jälitamise režiim"
-
-msgid "Opacity of the crosshairs"
-msgstr "Niitristi läbipaistvus"
-
-msgid "Screen position"
-msgstr "Ekraani asukoht"
-
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr "Suurendusklaas võib liikuda töölauapiiridest väljapoole"
-
-msgid "Show or hide crosshairs"
-msgstr "Niitristi kuvamine või peitmine"
-
-msgid "Show or hide the magnifier"
-msgstr "Suurendusklaasi kuvamine või peitmine"
-
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr ""
-"Suurendusklaasi ja selle kõigi suurenduspiirkondade kuvamine või peitmine."
-
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "Niitristi püst- ja rõhtjoone värvus."
-
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr ""
-"Suurendatud vaade täidab kas kogu ekraani või täidab ülemise, alumise, "
-"vasaku või parema ekraanipoole."
-
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr "Suurendustegur. 1,0 tähendab originaalsuurust. 2,0 muudab kaks korda."
-
-msgid "Thickness of the crosshairs"
-msgstr "Niitristi paksus"
-
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr ""
-"Kas suurendatud vaate keskkoht peaks asetsema süsteemi hiire kohal ning "
-"liikuma sellega kaasa."
-
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr "Niitristi moodustavate püst- ja rõhtjoone laius"
+msgstr "keelatud OpenSearch pakkujad"
msgid "Command not found"
msgstr "Käsku ei leitud"
@@ -250,9 +159,6 @@ msgstr "Käsku ei leitud"
msgid "Could not parse command:"
msgstr "Käsku pole võimalik analüüsida:"
-msgid "No such application"
-msgstr "Sellist rakendust ei ole"
-
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' käivitamine nurjus:"
@@ -264,8 +170,8 @@ msgstr "Kõik"
msgid "APPLICATIONS"
msgstr "Rakendused"
-msgid "PREFERENCES"
-msgstr "Eelistused"
+msgid "SETTINGS"
+msgstr "Seaded"
msgid "New Window"
msgstr "Uus aken"
@@ -382,7 +288,7 @@ msgstr "L"
#. Translators: Text to show if there are no events
msgid "Nothing Scheduled"
-msgstr ""
+msgstr "Ühtegi sündmust pole plaanitud"
#. Translators: Shown on calendar heading when selected day occurs on current year
msgctxt "calendar heading"
@@ -465,6 +371,8 @@ msgstr "Logi välja"
msgid "Click Log Out to quit these applications and log out of the system."
msgstr ""
+"Nende rakenduste sulgemiseks ja süsteemist väljalogimiseks klõpsa nupule "
+"Logi välja."
#, c-format
msgid "%s will be logged out automatically in %d seconds."
@@ -482,6 +390,8 @@ msgstr "Lülita välja"
msgid "Click Shut Down to quit these applications and shut down the system."
msgstr ""
+"Nende rakenduste sulgemiseks ja süsteemi väljalülitamiseks klõpsa nupule "
+"Logi välja."
#, c-format
msgid "The system will shut down automatically in %d seconds."
@@ -534,6 +444,9 @@ msgstr "Kuva lähtekoodi"
msgid "Web Page"
msgstr "Veebileht"
+msgid "Open"
+msgstr "Ava"
+
msgid "System Information"
msgstr "Süsteemi andmed"
@@ -546,6 +459,11 @@ msgstr "Aknad"
msgid "Applications"
msgstr "Rakendused"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+msgid "Dash"
+msgstr "Dokk"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
#, c-format
msgid "Quit %s"
@@ -556,6 +474,9 @@ msgstr "Lõpeta %s"
msgid "Activities"
msgstr "Tegevused"
+msgid "Panel"
+msgstr "Paneel"
+
#, c-format
msgid "Failed to unmount '%s'"
msgstr "'%s' lahtihaakimine nurjus"
@@ -580,6 +501,18 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Palun sisesta käsk:"
+msgid "Searching..."
+msgstr "Otsimine..."
+
+msgid "No matching results."
+msgstr "Tulemused puuduvad."
+
+msgid "Power Off..."
+msgstr "Lülita välja..."
+
+msgid "Suspend"
+msgstr "Uinak"
+
msgid "Available"
msgstr "Saadaval"
@@ -601,24 +534,15 @@ msgstr "Vaheta kasutajat"
msgid "Log Out..."
msgstr "Logi välja..."
-#. This is temporarily removed, see
-#. http://bugzilla.gnome.org/show_bug.cgi?id=636680
-#. for details.
-#. item = new PopupMenu.PopupMenuItem(_("Suspend..."));
-#. item.connect('activate', Lang.bind(this, this._onShutDownActivate));
-#. this.menu.addMenuItem(item);
-msgid "Shut Down..."
-msgstr "Lülita välja..."
-
msgid "Zoom"
-msgstr ""
-
-msgid "Screen Reader"
-msgstr "Ekraanilugeja"
-
-msgid "Screen Keyboard"
-msgstr "Ekraaniklaviatuur"
+msgstr "Suurendus"
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
msgid "Visual Alerts"
msgstr "Visuaalsed märguanded"
@@ -638,10 +562,10 @@ msgid "Universal Access Settings"
msgstr "Universaalse ligipääsu sätted"
msgid "High Contrast"
-msgstr ""
+msgstr "Kõrgkontrastne"
msgid "Large Text"
-msgstr ""
+msgstr "Suur tekst"
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -653,7 +577,7 @@ msgid "Send Files to Device..."
msgstr "Failide saatmine seadmesse..."
msgid "Setup a New Device..."
-msgstr ""
+msgstr "Uue seadme häälestamine..."
msgid "Bluetooth Settings"
msgstr "Bluetoothi sätted"
@@ -672,7 +596,7 @@ msgstr "Viga seadme sirvimisel"
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
-msgstr ""
+msgstr "Küsitud seadet pole võimalik sirvida, viga on '%s'"
msgid "Keyboard Settings"
msgstr "Klaviatuurisätted"
@@ -683,9 +607,6 @@ msgstr "Hiiresätted"
msgid "Sound Settings"
msgstr "Helisätted"
-msgid "Bluetooth Agent"
-msgstr "Bluetoothi agent"
-
#, c-format
msgid "Authorization request from %s"
msgstr "Autoriseerimise päring seadmelt %s"
@@ -731,12 +652,121 @@ msgstr "Palun sisesta seadme poolt öeldav PIN-kood."
msgid "OK"
msgstr "Olgu"
+msgid "Show Keyboard Layout..."
+msgstr "Klaviatuuripaigutuse kuvamine..."
+
msgid "Localization Settings"
msgstr "Lokaliseerimissätted"
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+msgid "disabled"
+msgstr "keelatud"
+
+msgid "connecting..."
+msgstr "ühendumine..."
+
+#. Translators: this is for network connections that require some kind of key or password
+msgid "authentication required"
+msgstr "vajalik on autentimine"
+
+#. Translators: this is for wired network devices that are physically disconnected
+msgid "cable unplugged"
+msgstr "juhe eemaldatud"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+msgid "unavailable"
+msgstr "pole saadaval"
+
+msgid "connection failed"
+msgstr "ühendumine nurjus"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+msgid "Connected (private)"
+msgstr "Ühendatud (privaatne)"
+
+msgid "Auto Ethernet"
+msgstr "Automaatne ethernet"
+
+msgid "Auto broadband"
+msgstr "Automaatne lairibaühendus"
+
+msgid "Auto dial-up"
+msgstr "Automaatne sissehelistamine"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#, c-format
+msgid "Auto %s"
+msgstr "Automaatne %s"
+
+msgid "Auto bluetooth"
+msgstr "Automaatne bluetooth"
+
+msgid "Auto wireless"
+msgstr "Automaatne juhtmeta ühendus"
+
+msgid "More..."
+msgstr "Veel..."
+
+msgid "Enable networking"
+msgstr "Luba võrguühendused"
+
+msgid "Wired"
+msgstr "Juhtmega"
+
+msgid "Wireless"
+msgstr "Juhtmeta"
+
+msgid "Mobile broadband"
+msgstr "Mobiiliühendus"
+
+msgid "VPN Connections"
+msgstr "VPN-ühendused"
+
+msgid "Network Settings"
+msgstr "Võrgusätted"
+
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Loodi mobiiliühendus '%s'"
+
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Loodi ühendus juhtmeta võrguga '%s'"
+
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Loodi ühendus juhtmega võrguga '%s'"
+
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Loodi ühendus VPN-võrguga '%s'"
+
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Loodi võrguühendus '%s' kaudu"
+
+msgid "Connection estabilished"
+msgstr "Ühendus loodud"
+
+msgid "Networking is disabled"
+msgstr "Võrguühendused on keelatud"
+
+msgid "Network Manager"
+msgstr "Võrguhaldur"
+
msgid "Power Settings"
msgstr "Toitesätted..."
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+msgid "Estimating..."
+msgstr "Andmete kogumine..."
+
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -829,8 +859,15 @@ msgstr "%s on hõivatud."
msgid "Sent at %X on %A"
msgstr "Saadetud: %a, kell %X"
-msgid "Search your computer"
-msgstr ""
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+msgid "Type to search..."
+msgstr "Otsing..."
+
+msgid "Search"
+msgstr "Otsing"
#, c-format
msgid "%s has finished starting"
@@ -840,32 +877,32 @@ msgstr "%s läks käima"
msgid "'%s' is ready"
msgstr "'%s' on valmis"
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr "Pole võimalik uut tööala lisada, kuna tööalade piir on saavutatud."
-
-msgid "Can't remove the first workspace."
-msgstr "Esimest tööala pole võimalik eemaldada."
-
#. translators:
#. * The number of sound outputs on a particular device
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%u väljund"
+msgstr[1] "%u väljundit"
#. translators:
#. * The number of sound inputs on a particular device
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%u sisend"
+msgstr[1] "%u sisendit"
msgid "System Sounds"
msgstr "Süsteemi helid"
+msgid "Print version"
+msgstr "Printimise versioon"
+
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "'%s' käivitamine nurjus"
+
msgid "Less than a minute ago"
msgstr "Vähem kui minuti eest"
@@ -893,6 +930,15 @@ msgid_plural "%d weeks ago"
msgstr[0] "%d nädal tagasi"
msgstr[1] "%d nädalat tagasi"
+msgid "United Kingdom"
+msgstr "Suurbritannia"
+
+msgid "Default"
+msgstr "Vaikimisi"
+
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Kasutaja katkestas autentimisdialoogi"
+
msgid "Home Folder"
msgstr "Kodukaust"
@@ -901,9 +947,6 @@ msgstr "Kodukaust"
msgid "File System"
msgstr "Failisüsteem"
-msgid "Search"
-msgstr "Otsing"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -913,8 +956,120 @@ msgstr "Otsing"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
-#~ msgid "Suspend..."
-#~ msgstr "Peata..."
+#~ msgid "No such application"
+#~ msgstr "Sellist rakendust ei ole"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Ekraanilugeja"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Ekraaniklaviatuur"
+
+#~ msgid "Clip the crosshairs at the center"
+#~ msgstr "Niitristi keskel on auk"
+
+#~ msgid "Color of the crosshairs"
+#~ msgstr "Niitristi värvus"
+
+#~ msgid ""
+#~ "Determines the transparency of the crosshairs, from fully opaque to fully "
+#~ "transparent."
+#~ msgstr ""
+#~ "Määrab niitristi läbipaistvuse, alates täiesti läbipaistmatust kuni "
+#~ "täiesti läbipaistvani."
+
+#~ msgid ""
+#~ "Determines whether the crosshairs intersect the magnified mouse sprite, "
+#~ "or are clipped such that the ends of the horizontal and vertical lines "
+#~ "surround the mouse image."
+#~ msgstr ""
+#~ "Määrab, kas niitrist kattub suurendatud hiire pildiga või on keskelt ära "
+#~ "lõigatud nii, et jooned ümbritsevad hiirekursori pilti."
+
+#~ msgid "Enable lens mode"
+#~ msgstr "Läätsede režiimi lubamine"
+
+#~ msgid ""
+#~ "Enables/disables display of crosshairs centered on the magnified mouse "
+#~ "sprite."
+#~ msgstr "Lubab/keelab niitristi kuvamise suurendatud hiirekursori kohal."
+
+#~ msgid "Length of the crosshairs"
+#~ msgstr "Niitristi pikkus"
+
+#~ msgid "Magnification factor"
+#~ msgstr "Suurendustegur"
+
+#~ msgid "Mouse Tracking Mode"
+#~ msgstr "Hiire jälitamise režiim"
+
+#~ msgid "Opacity of the crosshairs"
+#~ msgstr "Niitristi läbipaistvus"
+
+#~ msgid "Screen position"
+#~ msgstr "Ekraani asukoht"
+
+#~ msgid "Scroll magnified contents beyond the edges of the desktop"
+#~ msgstr "Suurendusklaas võib liikuda töölauapiiridest väljapoole"
+
+#~ msgid "Show or hide crosshairs"
+#~ msgstr "Niitristi kuvamine või peitmine"
+
+#~ msgid "Show or hide the magnifier"
+#~ msgstr "Suurendusklaasi kuvamine või peitmine"
+
+#~ msgid "Show or hide the magnifier and all of its zoom regions."
+#~ msgstr ""
+#~ "Suurendusklaasi ja selle kõigi suurenduspiirkondade kuvamine või peitmine."
+
+#~ msgid ""
+#~ "The color of the the vertical and horizontal lines that make up the "
+#~ "crosshairs."
+#~ msgstr "Niitristi püst- ja rõhtjoone värvus."
+
+#~ msgid ""
+#~ "The magnified view either fills the entire screen, or occupies the top-"
+#~ "half, bottom-half, left-half, or right-half of the screen."
+#~ msgstr ""
+#~ "Suurendatud vaade täidab kas kogu ekraani või täidab ülemise, alumise, "
+#~ "vasaku või parema ekraanipoole."
+
+#~ msgid ""
+#~ "The power of the magnification. A value of 1.0 means no magnification. A "
+#~ "value of 2.0 doubles the size."
+#~ msgstr ""
+#~ "Suurendustegur. 1,0 tähendab originaalsuurust. 2,0 muudab kaks korda."
+
+#~ msgid "Thickness of the crosshairs"
+#~ msgstr "Niitristi paksus"
+
+#~ msgid ""
+#~ "Whether the magnified view should be centered over the location of the "
+#~ "system mouse and move with it."
+#~ msgstr ""
+#~ "Kas suurendatud vaate keskkoht peaks asetsema süsteemi hiire kohal ning "
+#~ "liikuma sellega kaasa."
+
+#~ msgid ""
+#~ "Width of the vertical and horizontal lines that make up the crosshairs."
+#~ msgstr "Niitristi moodustavate püst- ja rõhtjoone laius"
+
+#~ msgid "PREFERENCES"
+#~ msgstr "Eelistused"
+
+#~ msgid "Shut Down..."
+#~ msgstr "Lülita välja..."
+
+#~ msgid "Bluetooth Agent"
+#~ msgstr "Bluetoothi agent"
+
+#~ msgid ""
+#~ "Can't add a new workspace because maximum workspaces limit has been "
+#~ "reached."
+#~ msgstr "Pole võimalik uut tööala lisada, kuna tööalade piir on saavutatud."
+
+#~ msgid "Can't remove the first workspace."
+#~ msgstr "Esimest tööala pole võimalik eemaldada."
#~ msgid "Clock"
#~ msgstr "Kell"
@@ -958,11 +1113,5 @@ msgstr "%1$s: %2$s"
#~ msgid "Find"
#~ msgstr "Otsi"
-#~ msgid "Searching..."
-#~ msgstr "Otsimine..."
-
-#~ msgid "No matching results."
-#~ msgstr "Tulemused puuduvad."
-
#~ msgid "Invisible"
#~ msgstr "Nähtamatu"
diff --git a/po/fr.po b/po/fr.po
index b792453a8..b55d37fd3 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,19 +1,21 @@
# French translations for gnome-shell package.
-# Copyright (C) 2009-2010 Listed translators
+# Copyright (C) 2009-2011 Listed translators
# This file is distributed under the same license as the gnome-shell package.
#
-# Mathieu Bridon , 2009
-# Pablo Martin-Gomez , 2010
-# Claude Paroz , 2010
+# Mathieu Bridon , 2009.
+# Pablo Martin-Gomez , 2010.
+# Claude Paroz , 2010.
+# Bruno Brouard , 2011.
+# Cyril Arnaud ,2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2010-09-22 15:13+0000\n"
-"PO-Revision-Date: 2010-09-05 21:03+0200\n"
-"Last-Translator: Claude Paroz \n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-24 08:03+0000\n"
+"PO-Revision-Date: 2011-03-24 13:49+0100\n"
+"Last-Translator: Bruno Brouard \n"
"Language-Team: GNOME French Team \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -28,14 +30,6 @@ msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Gestion des fenêtres et lancement des applications"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Horloge"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Personnaliser l'horloge du tableau de bord"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
@@ -45,25 +39,21 @@ msgstr ""
"la boîte de dialogue de lancement d'application (Alt-F2)."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Format personnalisé de l'horloge"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Activer les outils internes pour les développeurs et les testeurs depuis Alt-"
"F2"
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
msgstr "Extension de fichier à utiliser pour enregistrer l'animation d'écran"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr ""
"Nombre d'images par seconde pour l'enregistrement des animations d'écran."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
@@ -71,46 +61,33 @@ msgstr ""
"Les extensions GNOME Shell ont une propriété uuid ; cette clé énumère les "
"extensions qui ne doivent pas être chargées."
-#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Historique de la boîte de dialogue des commandes (Alt-F2)"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Historique de la boîte de dialogue d'inspection"
+
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Mode d'affichage de l'heure"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Si vrai, afficher la date dans l'horloge, en plus de l'heure."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Si vrai (case cochée) et que le mode d'affichage de l'heure est « 12 heures » "
-"ou « 24 heures », la date est affichée dans l'horloge, en plus de l'heure."
+msgid "If true, display seconds in time."
+msgstr "Si vrai, afficher les secondes dans l'horloge."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Si vrai (case cochée) et que le mode d'affichage de l'heure est « 12 heures » "
-"ou « 24 heures », les secondes sont affichées avec l'heure."
+msgid "If true, display the ISO week date in the calendar."
+msgstr "Si vrai, afficher le numéro de semaine ISO dans le calendrier."
#: ../data/org.gnome.shell.gschema.xml.in.h:11
-msgid "If true, display the ISO week date in the calendar."
-msgstr ""
-"Si vrai (case cochée), le calendrier utilise la numérotation ISO des "
-"semaines."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid "List of desktop file IDs for favorite applications"
msgstr ""
"Liste d'identifiants de fichiers desktop pour les applications favorites"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid "Overview workspace view mode"
-msgstr "Mode d'aperçu des espaces de travail"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -119,7 +96,9 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
"Définition du pipeline GStreamer utilisé pour coder les enregistrements "
"vidéo. La syntaxe est identique à celle de gst-launch. Le connecteur "
@@ -129,22 +108,24 @@ msgstr ""
"pipeline peut aussi se charger de sa propre sortie, par exemple pour diriger "
"la sortie vers un serveur icecast via shout2send ou autre. Si cette clé "
"n'est pas définie ou si elle est vide, c'est le pipeline par défaut qui est "
-"utilisé. Celui-ci est actuellement « videorate ! theoraenc ! oggmux » et "
-"l'enregistrement utilise le format Ogg Theora."
+"utilisé. Celui-ci est actuellement « videorate ! vp8enc quality=10 speed=2 "
+"threads=%T ! queue ! webmmux' » et l'enregistrement utilise le format WEBM "
+"et le codec VP8. %T est utilisé comme paramètre pour une supposition quant "
+"au nombre optimal de threads à utiliser sur le système."
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "Afficher la date dans l'horloge"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "Afficher la numérotation des semaines dans le calendrier"
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "Afficher l'heure avec les secondes"
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@@ -152,7 +133,7 @@ msgstr ""
"Les applications correspondant à ces identifiants sont affichées dans la "
"zone des favoris."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@@ -162,7 +143,7 @@ msgstr ""
"utilise cette extension. Elle devrait être modifiée si le format du "
"conteneur utilisé pour l'enregistrement est différent."
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -170,19 +151,11 @@ msgstr ""
"Le nombre d'images par seconde des animations d'écran enregistrées par "
"l'outil idoine de GNOME Shell."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Le pipeline gstreamer utilisé pour coder l'animation d'écran"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"The selected workspace view mode in the overview. Supported values are "
-"\"single\" and \"grid\"."
-msgstr ""
-"Le mode d'aperçu des espaces de travail. Les valeurs prises en charge sont : "
-"« single » (unique) et « grid » (grille)."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -195,359 +168,1051 @@ msgstr ""
"pousser à désactiver cette fonctionnalité. Remarquez que cette désactivation "
"ne supprime pas d'éventuelles données déjà enregistrées."
-#: ../data/org.gnome.shell.gschema.xml.in.h:24
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Cette clé définit le format utilisé par l'horloge du tableau de bord quand "
-"le format de l'heure est « custom » (personnalisé). Vous pouvez utiliser des "
-"indicateurs de conversion que strftime() comprend afin d'obtenir un format "
-"particulier. Consultez le manuel de strftime() pour plus d'informations."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Cette clé définit le format de l'heure utilisé par l'horloge du tableau de "
-"bord. Les valeurs possibles sont « 12-hour » (12 heures), « 24-hour » (24 "
-"heures), « unix » et « custom » (personnalisé). Si vous choisissez « unix », "
-"l'horloge affiche l'heure en secondes depuis Epoch, c'est-à-dire le "
-"01/01/1970. Si vous choisissez « custom », l'horloge affiche la date et "
-"l'heure selon le format défini dans la clé « custom_format ». Remarquez que "
-"si vous choisissez « unix » ou « custom », les clés « show_date » et "
-"« show_seconds » seront ignorées."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:26
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "Identifiants UUID des extensions à désactiver"
-#: ../data/org.gnome.shell.gschema.xml.in.h:27
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Collecter des statistiques sur l'utilisation des applications"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Format de l'horloge"
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "fournisseurs OpenSearch désactivés"
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Préférences de l'horloge"
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Commande non trouvée"
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Affichage dans le tableau de bord"
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Impossible d'analyser la commande :"
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Afficher les _secondes"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Exécution de « %s » impossible :"
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Afficher la _date"
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:230
+msgid "All"
+msgstr "Toutes"
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "Format _12 heures"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "Format _24 heures"
-
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:316 ../js/ui/dash.js:778
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "APPLICATIONS"
-#: ../js/ui/appDisplay.js:348
-msgid "PREFERENCES"
-msgstr "PRÉFÉRENCES"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "PARAMÈTRES"
-#: ../js/ui/appDisplay.js:653
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Nouvelle fenêtre"
-#: ../js/ui/appDisplay.js:657
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Enlever des favoris"
-#: ../js/ui/appDisplay.js:658
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Ajouter aux favoris"
-#: ../js/ui/appDisplay.js:986
-msgid "Drag here to add favorites"
-msgstr "Glisser ici pour ajouter aux favoris"
-
-#: ../js/ui/appFavorites.js:88
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s a été ajouté à vos favoris."
-#: ../js/ui/appFavorites.js:107
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s a été supprimé de vos favoris."
-#: ../js/ui/dash.js:142
-msgid "Find"
-msgstr "Rechercher"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Toute la journée"
-#: ../js/ui/dash.js:473
-msgid "Searching..."
-msgstr "Recherche en cours..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:487
-msgid "No matching results."
-msgstr "Aucun résultat correspondant."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:797 ../js/ui/placeDisplay.js:554
-msgid "PLACES & DEVICES"
-msgstr "RACCOURCIS et PÉRIPHÉRIQUES"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "D"
-#. **** Documents ****
-#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "ÉLÉMENTS RÉCENTS"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "L"
-#: ../js/ui/lookingGlass.js:552
-msgid "No extensions installed"
-msgstr "Aucune extension installée"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "M"
-#: ../js/ui/lookingGlass.js:589
-msgid "Enabled"
-msgstr "Activé"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "M"
-#: ../js/ui/lookingGlass.js:591
-msgid "Disabled"
-msgstr "Désactivé"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "J"
-#: ../js/ui/lookingGlass.js:593
-msgid "Error"
-msgstr "Erreur"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "V"
-#: ../js/ui/lookingGlass.js:595
-msgid "Out of date"
-msgstr "Périmé"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:620
-msgid "View Source"
-msgstr "Afficher la source"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Dim."
-#: ../js/ui/lookingGlass.js:626
-msgid "Web Page"
-msgstr "Page Web"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Lun."
-#: ../js/ui/overview.js:160
-msgid "Undo"
-msgstr "Annuler"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Mar."
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:467
-#, c-format
-msgid "Quit %s"
-msgstr "Quitter %s"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Mer."
-#: ../js/ui/panel.js:492
-msgid "Preferences"
-msgstr "Préférences"
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Jeu."
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Ven."
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Sam."
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Rien au calendrier"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A %d %B"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A %d %B, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Aujourd'hui"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Demain"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Cette semaine"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "La semaine prochaine"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
+msgid "Remove"
+msgstr "Enlever"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Paramètres de date et heure"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Ouvrir le calendrier"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:578
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %R:%S"
-#: ../js/ui/panel.js:579
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:583
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/panel.js:584
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:591
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %l:%M:%S %p"
-#: ../js/ui/panel.js:592
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:596
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
-#: ../js/ui/panel.js:597
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %e %B %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "ÉLÉMENTS RÉCENTS"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Fermer la session de %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
+msgid "Log Out"
+msgstr "Fermer la session"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Cliquez sur « Fermer la session » pour quitter ces applications et fermer la "
+"session."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s sera déconnecté automatiquement dans %d secondes."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Vous allez être déconnecter automatiquement dans %d secondes."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Déconnexion du système."
+
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Éteindre"
+
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr ""
+"Cliquez sur « Éteindre » pour quitter ces applications et éteindre l'ordinateur."
+
+#: ../js/ui/endSessionDialog.js:77
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Cet ordinateur s'éteindra automatiquement dans %d secondes."
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "Extinction du système."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
+msgid "Restart"
+msgstr "Redémarrer"
+
+#: ../js/ui/endSessionDialog.js:89
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Cliquez sur « Redémarrer » pour quitter ces applications et redémarrer "
+"l'ordinateur."
+
+#: ../js/ui/endSessionDialog.js:90
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Cet ordinateur redémarrera automatiquement dans %d secondes."
+
+#: ../js/ui/endSessionDialog.js:91
+msgid "Restarting the system."
+msgstr "Redémarrage du système."
+
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Annuler"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Aucune extension installée"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Activé"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Erreur"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Périmé"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Afficher la source"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Page Web"
+
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "Ouvrir"
+
+#: ../js/ui/messageTray.js:2145
+msgid "System Information"
+msgstr "Informations du système"
+
+#: ../js/ui/overview.js:91
+msgid "Undo"
+msgstr "Annuler"
+
+#: ../js/ui/overview.js:186
+msgid "Windows"
+msgstr "Fenêtres"
+
+#: ../js/ui/overview.js:189
+msgid "Applications"
+msgstr "Applications"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "Dash"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Quitter %s"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:742
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Activités"
-#: ../js/ui/placeDisplay.js:111
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Barre supérieure"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Impossible de monter « %s »"
-#: ../js/ui/placeDisplay.js:114
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Réessayer"
-#: ../js/ui/placeDisplay.js:159
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Connexion à..."
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "RACCOURCIS et PÉRIPHÉRIQUES"
+
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Authentification nécessaire"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administrateur"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "S'authentifier"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Désolé, cela n'a pas fonctionné. Essayez à nouveau."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Mot de passe :"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:32
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Veuillez saisir une commande :"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Exécution de « %s » impossible :"
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "Recherche en cours..."
-#: ../js/ui/statusMenu.js:91
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "Aucun résultat correspondant."
+
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "Éteindre..."
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "Mettre en veille"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Disponible"
-#: ../js/ui/statusMenu.js:95
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Occupé"
-#: ../js/ui/statusMenu.js:99
-msgid "Invisible"
-msgstr "Invisible"
+#: ../js/ui/statusMenu.js:197
+msgid "My Account"
+msgstr "Mon compte"
-#: ../js/ui/statusMenu.js:106
-msgid "Account Information..."
-msgstr "Informations personnelles..."
+#: ../js/ui/statusMenu.js:201
+msgid "System Settings"
+msgstr "Paramètres système"
-#: ../js/ui/statusMenu.js:110
-msgid "System Preferences..."
-msgstr "Préférences du système..."
-
-#: ../js/ui/statusMenu.js:117
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Verrouiller l'écran"
-#: ../js/ui/statusMenu.js:121
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Changer d'utilisateur"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Fermer la session..."
-#: ../js/ui/statusMenu.js:130
-msgid "Shut Down..."
-msgstr "Éteindre..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Zoom"
-#: ../js/ui/windowAttentionHandler.js:43
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Alertes visuelles"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Touches rémanentes"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Touches lentes"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Rebonds de touches"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Touches de la souris"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Paramètres de l'accès universel"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Contraste élevé"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Grand texte"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Visibilité"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Envoyer les fichiers au périphérique..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Configurer un nouveau périphérique..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Paramètres Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Connexion"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Envoyer des fichiers..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Parcourir les fichiers..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Erreur en parcourant le périphérique"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Le périphérique demandé ne peut pas être parcouru, l'erreur est « %s »"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Paramètres du clavier"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Paramètres de la souris"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Paramètres du son"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Demande d'autorisation de « %s »"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Le périphérique %s souhaite accéder au service « %s »"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Toujours accorder l'accès"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Accorder l'accès cette fois uniquement"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Refuser"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Confirmation de la demande de liaison pour « %s »"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Le périphérique « %s » souhaite se connecter à cet ordinateur"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr ""
+"Veuillez confirmer que le numéro d'identification personnel (PIN) « %s » "
+"correspond à celui du périphérique."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Correspond"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Ne correspond pas"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Demande de liaison pour « %s »"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr ""
+"Veuillez saisir le numéro d'identification personnel (PIN) mentionné sur le "
+"périphérique."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "Valider"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Afficher la disposition du clavier..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Paramètres de localisation"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "désactivé"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "connexion..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "authentification nécessaire"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "câble débranché"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "non disponible"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "échec de connexion"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Connecté (privé)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet automatique"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Connexion large bande automatique"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Connexion par téléphone automatique"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Auto %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth automatique"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Sans fil automatique"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Plus..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Activer le réseau"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Filaire"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Sans fil"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Téléphone mobile à large bande"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Connexions par VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Paramètres du réseau"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Vous êtes maintenant connecté au réseau mobile à large bande « %s »"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Vous êtes maintenant connecté au réseau sans fil « %s »"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Vous êtes maintenant connecté au réseau filaire « %s »"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Vous êtes maintenant connecté au réseau VPN « %s »"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Vous êtes maintenant connecté à « %s »"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Connexion établie"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Le réseau est désactivé"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Gestionnaire de réseau"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Paramètres de gestion de l'alimentation"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "En cours d'estimation..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "%d heure restante"
+msgstr[1] "%d heures restantes"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "%d %s %d %s restantes"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "heure"
+msgstr[1] "heures"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minute"
+msgstr[1] "minutes"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "%d minute restante"
+msgstr[1] "%d minutes restantes"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Adaptateur secteur"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Batterie de l'ordinateur"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Écran"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Souris"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Clavier"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "Assistant personnel"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Téléphone portable"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Lecteur multimédia"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Tablette"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Ordinateur"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Volume"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Microphone"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s est en ligne."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s est hors ligne."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s est absent."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s est occupé."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Envoyé à %X à %H:%M"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Rechercher..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Recherche"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "Lancement de %s terminé"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "« %s » est prêt"
-#: ../js/ui/workspacesView.js:230
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Impossible d'ajouter un espace de travail car le nombre maximum d'espaces de "
-"travail est atteint."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u sortie"
+msgstr[1] "%u sorties"
-#: ../js/ui/workspacesView.js:247
-msgid "Can't remove the first workspace."
-msgstr "Impossible de supprimer le premier espace de travail."
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u entrée"
+msgstr[1] "%u entrées"
-#: ../src/shell-global.c:1189
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Sons système"
+
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "Affiche la version"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Impossible de lancer « %s »"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Il y a moins d'une minute"
-#: ../src/shell-global.c:1193
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Il y a %d minute"
msgstr[1] "Il y a %d minutes"
-#: ../src/shell-global.c:1198
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Il y a %d heure"
msgstr[1] "Il y a %d heures"
-#: ../src/shell-global.c:1203
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "Il y a %d jour"
msgstr[1] "Il y a %d jours"
-#: ../src/shell-global.c:1208
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "Il y a %d semaine"
msgstr[1] "Il y a %d semaines"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Royaume-Uni"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Défaut"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Dossier personnel"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Système de fichiers"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Recherche"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s : %2$s"
diff --git a/po/gl.po b/po/gl.po
index 2bdba4397..a32d9af5d 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -2,24 +2,25 @@
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
#
+#
# Anton Meixome , 2009.
# Antón Méixome , 2009.
-# Fran Diéguez , 2009, 2010, 2011.
-#
+# Fran Diéguez , 2009, 2010, 2011.
+# Fran Dieguez , 2011.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-06 00:11+0100\n"
-"PO-Revision-Date: 2011-02-06 00:14+0100\n"
-"Last-Translator: Fran Diéguez \n"
-"Language-Team: Galician \n"
+"POT-Creation-Date: 2011-03-24 09:50+0100\n"
+"PO-Revision-Date: 2011-03-24 09:51+0100\n"
+"Last-Translator: Fran Dieguez \n"
+"Language-Team: Galician \n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Virtaal 0.4.0\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Lokalize 1.2\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@@ -64,22 +65,26 @@ msgid "History for command (Alt-F2) dialog"
msgstr "Historial do diálogo de orde (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Historial do diálogo de «looking glass»"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
msgstr "Se é verdadeiro, móstrase a data no reloxo, ademais da hora."
-#: ../data/org.gnome.shell.gschema.xml.in.h:8
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display seconds in time."
msgstr "Se é verdadeiro, móstranse os segundos na hora."
-#: ../data/org.gnome.shell.gschema.xml.in.h:9
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
-#: ../data/org.gnome.shell.gschema.xml.in.h:10
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "Mostra os ID de ficheiros desktop para os aplicativos preferidos"
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@@ -105,19 +110,19 @@ msgstr ""
"códec VP8. Úsase %T como suposición para o número de fillos óptimos no "
"sistema."
-#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "Mostrar a data no reloxo"
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "Mostrar a data da semana no calendario"
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "Mostrar a hora con segundos"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@@ -125,7 +130,7 @@ msgstr ""
"Os aplicativos que corresponden a estes identificadores mostraranse na área "
"de preferidos."
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@@ -135,7 +140,7 @@ msgstr ""
"baseado na data actual e usa esta extensión. Debería cambiar ao grabar nun "
"formato de contedor diferente."
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -143,11 +148,11 @@ msgstr ""
"A taxa de marcos do screencast resultante grabado polo grabador de "
"screencasts de GNOME Shell en marcos-por-segundo."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "A tubería de gstreamer usada para codificar o screencast"
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -159,213 +164,55 @@ msgstr ""
"privados, vostede pode desactivar isto por motivos de privacidade. Teña en "
"conta que facendo isto non eliminará os datos gardados."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "Os Uuid das extensións a desactivar"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Indica se recoller estatísticas sobre o uso dos aplicativos"
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "disabled OpenSearch providers"
msgstr "fornecedores de OpenSearch desactivados"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1
-msgid "Clip the crosshairs at the center"
-msgstr "Poñer o punto de mira no centro"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2
-msgid "Color of the crosshairs"
-msgstr "Cor do punto de mira"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
-"Determina a lonxitude das liñas verticais e horizontais que contén o punto "
-"de mira."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr ""
-"Determina a posición da imaxe magnificada do rato dentro da vista "
-"magnificada e como reacciona ao movemento do rato do sistema. Os valores son "
-"«none» (ningún): sen seguimento do rato; «centered» (centrado): a imaxe do "
-"rato móstrase no centro da rexión ampliada (que tamén representa o punto "
-"baixo o rato do sistema) e o contido magnificado deslízase segundo se move o "
-"rato do sistema; «proporcional»: a posición do rato magnificado na rexión de "
-"ampliación é proporcionalmente a mesma que a posición do rato do sistema na "
-"pantalla; «push» (empurrar): cando o rato magnificado cruza un límite da "
-"rexión de ampliación, o contido deslízase na vista."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr ""
-"Determina a transparencia do punto de mira, desde a opacidade total á "
-"transparencia total."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-"Determina se as cruces cruzan o «sprite» magnificado do rato ou fíxanse de "
-"tal forma que os finais das liñas horizontais e verticais rodean a imaxe do "
-"rato."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7
-msgid "Enable lens mode"
-msgstr "Activar o modo lente"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr ""
-"Activa/desactiva a visualización do punto de mira centrada no mapa de bits "
-"de magnificación do rato."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr ""
-"Para o seguimento do centro do rato, cando o punteiro do sistema está preto "
-"do bordo da pantalla, o contido magnificado continúa desprazándose de tal "
-"forma que o bordo da pantalla móvese dentro da vista magnificada."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10
-msgid "Length of the crosshairs"
-msgstr "Lonxitude do punto de mira"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11
-msgid "Magnification factor"
-msgstr "Factor de magnificación"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12
-msgid "Mouse Tracking Mode"
-msgstr "Modo de seguimento do rato"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13
-msgid "Opacity of the crosshairs"
-msgstr "Opacidade do punto de mira"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14
-msgid "Screen position"
-msgstr "Posición de pantalla"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr "Mostrar os contidos magnificados máis aló dos bordos do escritorio"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16
-msgid "Show or hide crosshairs"
-msgstr "Mostrar ou agochar o punto de mira"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17
-msgid "Show or hide the magnifier"
-msgstr "Mostrar ou agochar o magnificador"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr ""
-"Mostrar ou agochar o magnificador e todas as súas rexións de magnificación."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "A cor das liñas verticais e horizontais que contén o punto de mira."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr ""
-"A vista magnificada tanto se enche a pantalla completa, ou ocupa a metade "
-"superior, metade inferior, metade da esquerda ou metade da dereita da "
-"pantalla."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr ""
-"O poder da magnificación. Un valor de 1.0 desactiva a magnificación. Un "
-"valor de 2.0 duplica o tamaño."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22
-msgid "Thickness of the crosshairs"
-msgstr "Grosor do punto de mira"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr ""
-"Indica se a visualización do punto de mira debería centrarse sobre a "
-"localización do rato do sistema ou moverse con el."
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr "Anchura das liñas verticais e horizontais que contén o punto de mira."
-
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Orde non atopada"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Non foi posíbel analizar a orde:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Non existe o aplicativo"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Produciuse un fallo na execución de «%s»:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:164
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Todos"
-#: ../js/ui/appDisplay.js:245
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "APLICATIVOS"
-#: ../js/ui/appDisplay.js:275
-msgid "PREFERENCES"
-msgstr "PREFERENCIAS"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "CONFIGURACIÓN"
-#: ../js/ui/appDisplay.js:572
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Xanela nova"
-#: ../js/ui/appDisplay.js:576
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Eliminar dos favoritos"
-#: ../js/ui/appDisplay.js:577
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
@@ -382,19 +229,19 @@ msgstr "%s foi eliminado dos seus favoritos."
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
-#: ../js/ui/calendar.js:65
+#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "Todo o día"
#. Translators: Shown in calendar event list, if 24h format
-#: ../js/ui/calendar.js:70
+#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
-#: ../js/ui/calendar.js:77
+#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
msgstr "%l:%M %p"
@@ -404,43 +251,43 @@ msgstr "%l:%M %p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
-#: ../js/ui/calendar.js:117
+#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday
-#: ../js/ui/calendar.js:119
+#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday
-#: ../js/ui/calendar.js:121
+#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday
-#: ../js/ui/calendar.js:123
+#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday
-#: ../js/ui/calendar.js:125
+#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
msgstr "X"
#. Translators: Calendar grid abbreviation for Friday
-#: ../js/ui/calendar.js:127
+#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday
-#: ../js/ui/calendar.js:129
+#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@@ -451,81 +298,81 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
-#: ../js/ui/calendar.js:142
+#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "Do"
#. Translators: Event list abbreviation for Monday
-#: ../js/ui/calendar.js:144
+#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "L"
#. Translators: Event list abbreviation for Tuesday
-#: ../js/ui/calendar.js:146
+#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "M"
#. Translators: Event list abbreviation for Wednesday
-#: ../js/ui/calendar.js:148
+#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "W"
#. Translators: Event list abbreviation for Thursday
-#: ../js/ui/calendar.js:150
+#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "X"
#. Translators: Event list abbreviation for Friday
-#: ../js/ui/calendar.js:152
+#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "V"
#. Translators: Event list abbreviation for Saturday
-#: ../js/ui/calendar.js:154
+#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
msgstr "S"
#. Translators: Text to show if there are no events
-#: ../js/ui/calendar.js:701
+#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "Nada programado"
#. Translators: Shown on calendar heading when selected day occurs on current year
-#: ../js/ui/calendar.js:717
+#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
-#: ../js/ui/calendar.js:720
+#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
-#: ../js/ui/calendar.js:730
+#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "Hoxe"
-#: ../js/ui/calendar.js:734
+#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "Mañá"
-#: ../js/ui/calendar.js:743
+#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "Esta semana"
-#: ../js/ui/calendar.js:751
+#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "A vindeira semana"
-#: ../js/ui/dash.js:27
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Eliminar"
@@ -533,47 +380,47 @@ msgstr "Eliminar"
msgid "Date and Time Settings"
msgstr "Configuracións do data e hora"
-#: ../js/ui/dateMenu.js:110
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Abrir o calendario"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:149
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e de %b, %R:%S"
-#: ../js/ui/dateMenu.js:150
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e de %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:154
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/dateMenu.js:155
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:162
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e de %b, %H:%M:%S"
-#: ../js/ui/dateMenu.js:163
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e de %b, %H:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:167
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %H:%M:%S"
-#: ../js/ui/dateMenu.js:168
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
@@ -584,7 +431,7 @@ msgstr "%a %l:%M %p"
msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y"
-#: ../js/ui/docDisplay.js:18
+#: ../js/ui/docDisplay.js:19
msgid "RECENT ITEMS"
msgstr "ELEMENTOS RECENTES"
@@ -593,7 +440,7 @@ msgstr "ELEMENTOS RECENTES"
msgid "Log Out %s"
msgstr "Saír da sesión de %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Saír da sesión"
@@ -616,230 +463,260 @@ msgstr "A súa sesión pecharase automaticamente en %d segundos."
msgid "Logging out of the system."
msgstr "Saíndo da sesión."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
msgstr "Apagar"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
msgstr ""
"Prema sobre Apagar para saír de estes aplicativos e apagar o computador."
-#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "O computador apagarase automaticamente en %d segundos."
-
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "Apagando o computador."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "O seu computador apagarase automaticamente en %d segundos."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "Apagando o sistema."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Reiniciar"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Prema sobre Reiniciar para saír de estes aplicativos e reiniciar o seu "
"computador."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "O seu computador reiniciarase automaticamente en %d segundos."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Reiniciando o computador."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Confirmar"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Cancelar"
-#: ../js/ui/lookingGlass.js:556
+#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "Non hai ningunha extensión instalada"
-#: ../js/ui/lookingGlass.js:593
+#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "Activado"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Desactivado"
-#: ../js/ui/lookingGlass.js:597
+#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "Erro"
-#: ../js/ui/lookingGlass.js:599
+#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "Desactualizado"
-#: ../js/ui/lookingGlass.js:624
+#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "Ver fonte"
-#: ../js/ui/lookingGlass.js:630
+#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "Páxina web"
-#: ../js/ui/messageTray.js:1809
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "Abrir"
+
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Información do sistema"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Desfacer"
-#: ../js/ui/overview.js:159
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Xanelas"
-#: ../js/ui/overview.js:162
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Aplicativos"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "Panel"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:480
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Saír de %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:614
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Actividades"
-#: ../js/ui/placeDisplay.js:106
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Barra superior"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Produciuse un fallo ao desmontar «%s»"
-#: ../js/ui/placeDisplay.js:109
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Reintentar"
-#: ../js/ui/placeDisplay.js:150
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Conectar con…"
-#: ../js/ui/placeDisplay.js:386
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "LUGARES E DISPOSITIVOS"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Autenticación requirida"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Autenticar"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Desculpe, iso non funcionou. Ténteo de novo."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Contrasinal:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:33
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:209
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Insira unha orde:"
-#: ../js/ui/searchDisplay.js:295
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Buscando..."
-#: ../js/ui/searchDisplay.js:309
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Non hai resultados que coincidan."
-#: ../js/ui/statusMenu.js:102
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "Apagar…"
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "Suspender"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Dispoñíbel"
-#: ../js/ui/statusMenu.js:107
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Ocupado"
-#: ../js/ui/statusMenu.js:115
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "A miña conta"
-#: ../js/ui/statusMenu.js:119
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Configuracións do sistema"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Bloquear pantalla"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Cambiar de usuario"
-#: ../js/ui/statusMenu.js:135
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Saír da sesión…"
-#. This is temporarily removed, see
-#. http://bugzilla.gnome.org/show_bug.cgi?id=636680
-#. for details.
-#. item = new PopupMenu.PopupMenuItem(_("Suspend..."));
-#. item.connect('activate', Lang.bind(this, this._onShutDownActivate));
-#. this.menu.addMenuItem(item);
-#: ../js/ui/statusMenu.js:149
-msgid "Shut Down..."
-msgstr "Apagar…"
-
-#: ../js/ui/status/accessibility.js:83
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Ampliación"
-#: ../js/ui/status/accessibility.js:89
-msgid "Screen Reader"
-msgstr "Lector de pantalla"
-
-#: ../js/ui/status/accessibility.js:92
-msgid "Screen Keyboard"
-msgstr "Teclado en pantalla"
-
-#: ../js/ui/status/accessibility.js:95
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Alertas visuais"
-#: ../js/ui/status/accessibility.js:98
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Teclas persistentes"
-#: ../js/ui/status/accessibility.js:101
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Teclas lentas"
-#: ../js/ui/status/accessibility.js:104
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Rebote das teclas"
-#: ../js/ui/status/accessibility.js:107
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Teclas do Rato"
-#: ../js/ui/status/accessibility.js:111
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Configuracións de acceso universal"
-#: ../js/ui/status/accessibility.js:163
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Alto contraste"
-#: ../js/ui/status/accessibility.js:205
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Texto máis grande"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -859,111 +736,246 @@ msgstr "Configurar un novo dispositivo…"
msgid "Bluetooth Settings"
msgstr "Configuracións de Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Conexión"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Enviar ficheiros…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Explorar ficheiros…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Produciuse un erro ao explorar o dispositivo"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "O dispositivo solicitado non pode explorarse, o erro foi «%s»"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Configuracións do teclado"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Configuracións do rato"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Configuracións do son"
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
-msgid "Bluetooth Agent"
-msgstr "Axente Bluetooth"
-
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Solicitude de autorización de %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "O dispositivo %s quere acceder ao servizo «%s»"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Conceder acceso sempre"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Conceder só esta vez"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Rexeitar"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Confirmación de emparellado para «%s»"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "O dispositivo «%s» quere emparellarse con este equipo"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Confirme que o PIN mostrado en «%s» coincide co do dispositivo."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Coincide"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Non coincide"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Solicitude de emparellamento para «%s»"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Introduza o PIN mencionado no dispositivo."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "Aceptar"
-#: ../js/ui/status/keyboard.js:78
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Mostrar a distribución do teclado…"
+
+#: ../js/ui/status/keyboard.js:76
msgid "Localization Settings"
msgstr "Configuracións do son"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "desactivada"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "conectando..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "autenticación requirida"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cable desconectado"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "non dispoñíbel"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "conexión fallida"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Conectado (privado)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet automática"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Banda larga automática"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Por liña conmutada automática"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s automática"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth automática"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Sen fíos automática"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Máis..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Activar rede"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Con fíos"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Sen fíos"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Banda larga móbil"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Conexións VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Configuracións da rede"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Vostede está conectado agora á conexión de banda larga móbil «%s»"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Vostede está conectado agora á conexión sen fíos «%s»"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Vostede está conectado agora á conexión con fíos «%s»"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Vostede está conectado agora á conexión VPN «%s»"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Vostede está conectado agora a «%s»"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Conexión estabelecida"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "A rede está desactivada"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Xestor de rede"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Configuracións de enerxía"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Estimando…"
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -971,102 +983,102 @@ msgstr[0] "%d hora restante"
msgstr[1] "%d horas restante"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s retante"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "hora"
msgstr[1] "horas"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minuto restante"
msgstr[1] "%d minutos restantes"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Adaptador de corrente"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Batería do portátil"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Rato"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Teclado"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Teléfono móbil"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Reprodutor multimedia"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablet"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Computador"
-#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Descoñecido"
-#: ../js/ui/status/volume.js:42
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volume"
-#: ../js/ui/status/volume.js:55
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Micrófono"
-#: ../js/ui/telepathyClient.js:563
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s está conectado/a."
-#: ../js/ui/telepathyClient.js:568
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s está desconectado/a."
-#: ../js/ui/telepathyClient.js:571
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s está ausente."
-#: ../js/ui/telepathyClient.js:574
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s está ocupado/a."
@@ -1074,39 +1086,36 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:668
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Enviado ás %X o %A"
-#: ../js/ui/viewSelector.js:26
-msgid "Search your computer"
-msgstr "Buscar no seu computador"
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Teclear para buscar…"
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Buscar"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s rematou de iniarse"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "«%s» está preparado"
-#: ../js/ui/workspacesView.js:243
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Non é posíbel engadir unha área de traballo nova porque chegouse ao límite "
-"de áreas de traballo."
-
-#: ../js/ui/workspacesView.js:259
-msgid "Can't remove the first workspace."
-msgstr "Non é posíbel quitar a primeira área de traballo."
-
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -1115,49 +1124,70 @@ msgstr[1] "%u saídas"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u entrada"
msgstr[1] "%u entradas"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Sons do sistema"
-#: ../src/shell-global.c:1365
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "Imprimir versión"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Produciuse un fallo ao iniciar «%s»"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Hai menos dun minuto"
-#: ../src/shell-global.c:1369
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "hai %d minuto"
msgstr[1] "hai %d minutos"
-#: ../src/shell-global.c:1374
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "hai %d hora"
msgstr[1] "hai %d horas"
-#: ../src/shell-global.c:1379
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "hai %d día"
msgstr[1] "hai %d días"
-#: ../src/shell-global.c:1384
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "hai %d semana"
msgstr[1] "hai %d semanas"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Predeterminado"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "O usuario rexeitou o diálogo de autenticación"
+
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Cartafol persoal"
@@ -1168,10 +1198,6 @@ msgstr "Cartafol persoal"
msgid "File System"
msgstr "Sistema de ficheiros"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "Buscar"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -1182,8 +1208,192 @@ msgstr "Buscar"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
-#~ msgid "Suspend..."
-#~ msgstr "Suspender…"
+#~ msgid "Shut Down"
+#~ msgstr "Apagar"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr ""
+#~ "Prema sobre Apagar para saír de estes aplicativos e apagar o computador."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "O computador apagarase automaticamente en %d segundos."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "Apagando o computador."
+
+#~ msgid "Confirm"
+#~ msgstr "Confirmar"
+
+#~ msgid "Panel"
+#~ msgstr "Panel"
+
+#~ msgid "No such application"
+#~ msgstr "Non existe o aplicativo"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Lector de pantalla"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Teclado en pantalla"
+
+#~ msgid "%s is now known as %s"
+#~ msgstr "%s é coñecido agora como %s"
+
+#~ msgid "Clip the crosshairs at the center"
+#~ msgstr "Poñer o punto de mira no centro"
+
+#~ msgid "Color of the crosshairs"
+#~ msgstr "Cor do punto de mira"
+
+#~ msgid ""
+#~ "Determines the length of the vertical and horizontal lines that make up "
+#~ "the crosshairs."
+#~ msgstr ""
+#~ "Determina a lonxitude das liñas verticais e horizontais que contén o "
+#~ "punto de mira."
+
+#~ msgid ""
+#~ "Determines the position of the magnified mouse image within the magnified "
+#~ "view and how it reacts to system mouse movement. The values are - none: "
+#~ "no mouse tracking; - centered: the mouse image is displayed at the center "
+#~ "of the zoom region (which also represents the point under the system "
+#~ "mouse) and the magnified contents are scrolled as the system mouse moves; "
+#~ "- proportional: the position of the magnified mouse in the zoom region is "
+#~ "proportionally the same as the position of the system mouse on screen; - "
+#~ "push: when the magnified mouse intersects a boundary of the zoom region, "
+#~ "the contents are scrolled into view."
+#~ msgstr ""
+#~ "Determina a posición da imaxe magnificada do rato dentro da vista "
+#~ "magnificada e como reacciona ao movemento do rato do sistema. Os valores "
+#~ "son «none» (ningún): sen seguimento do rato; «centered» (centrado): a "
+#~ "imaxe do rato móstrase no centro da rexión ampliada (que tamén representa "
+#~ "o punto baixo o rato do sistema) e o contido magnificado deslízase "
+#~ "segundo se move o rato do sistema; «proporcional»: a posición do rato "
+#~ "magnificado na rexión de ampliación é proporcionalmente a mesma que a "
+#~ "posición do rato do sistema na pantalla; «push» (empurrar): cando o rato "
+#~ "magnificado cruza un límite da rexión de ampliación, o contido deslízase "
+#~ "na vista."
+
+#~ msgid ""
+#~ "Determines the transparency of the crosshairs, from fully opaque to fully "
+#~ "transparent."
+#~ msgstr ""
+#~ "Determina a transparencia do punto de mira, desde a opacidade total á "
+#~ "transparencia total."
+
+#~ msgid ""
+#~ "Determines whether the crosshairs intersect the magnified mouse sprite, "
+#~ "or are clipped such that the ends of the horizontal and vertical lines "
+#~ "surround the mouse image."
+#~ msgstr ""
+#~ "Determina se as cruces cruzan o «sprite» magnificado do rato ou fíxanse "
+#~ "de tal forma que os finais das liñas horizontais e verticais rodean a "
+#~ "imaxe do rato."
+
+#~ msgid "Enable lens mode"
+#~ msgstr "Activar o modo lente"
+
+#~ msgid ""
+#~ "Enables/disables display of crosshairs centered on the magnified mouse "
+#~ "sprite."
+#~ msgstr ""
+#~ "Activa/desactiva a visualización do punto de mira centrada no mapa de "
+#~ "bits de magnificación do rato."
+
+#~ msgid ""
+#~ "For centered mouse tracking, when the system pointer is at or near the "
+#~ "edge of the screen, the magnified contents continue to scroll such that "
+#~ "the screen edge moves into the magnified view."
+#~ msgstr ""
+#~ "Para o seguimento do centro do rato, cando o punteiro do sistema está "
+#~ "preto do bordo da pantalla, o contido magnificado continúa desprazándose "
+#~ "de tal forma que o bordo da pantalla móvese dentro da vista magnificada."
+
+#~ msgid "Length of the crosshairs"
+#~ msgstr "Lonxitude do punto de mira"
+
+#~ msgid "Magnification factor"
+#~ msgstr "Factor de magnificación"
+
+#~ msgid "Mouse Tracking Mode"
+#~ msgstr "Modo de seguimento do rato"
+
+#~ msgid "Opacity of the crosshairs"
+#~ msgstr "Opacidade do punto de mira"
+
+#~ msgid "Screen position"
+#~ msgstr "Posición de pantalla"
+
+#~ msgid "Scroll magnified contents beyond the edges of the desktop"
+#~ msgstr "Mostrar os contidos magnificados máis aló dos bordos do escritorio"
+
+#~ msgid "Show or hide crosshairs"
+#~ msgstr "Mostrar ou agochar o punto de mira"
+
+#~ msgid "Show or hide the magnifier"
+#~ msgstr "Mostrar ou agochar o magnificador"
+
+#~ msgid "Show or hide the magnifier and all of its zoom regions."
+#~ msgstr ""
+#~ "Mostrar ou agochar o magnificador e todas as súas rexións de "
+#~ "magnificación."
+
+#~ msgid ""
+#~ "The color of the the vertical and horizontal lines that make up the "
+#~ "crosshairs."
+#~ msgstr "A cor das liñas verticais e horizontais que contén o punto de mira."
+
+#~ msgid ""
+#~ "The magnified view either fills the entire screen, or occupies the top-"
+#~ "half, bottom-half, left-half, or right-half of the screen."
+#~ msgstr ""
+#~ "A vista magnificada tanto se enche a pantalla completa, ou ocupa a metade "
+#~ "superior, metade inferior, metade da esquerda ou metade da dereita da "
+#~ "pantalla."
+
+#~ msgid ""
+#~ "The power of the magnification. A value of 1.0 means no magnification. A "
+#~ "value of 2.0 doubles the size."
+#~ msgstr ""
+#~ "O poder da magnificación. Un valor de 1.0 desactiva a magnificación. Un "
+#~ "valor de 2.0 duplica o tamaño."
+
+#~ msgid "Thickness of the crosshairs"
+#~ msgstr "Grosor do punto de mira"
+
+#~ msgid ""
+#~ "Whether the magnified view should be centered over the location of the "
+#~ "system mouse and move with it."
+#~ msgstr ""
+#~ "Indica se a visualización do punto de mira debería centrarse sobre a "
+#~ "localización do rato do sistema ou moverse con el."
+
+#~ msgid ""
+#~ "Width of the vertical and horizontal lines that make up the crosshairs."
+#~ msgstr ""
+#~ "Anchura das liñas verticais e horizontais que contén o punto de mira."
+
+#~ msgid "PREFERENCES"
+#~ msgstr "PREFERENCIAS"
+
+#~ msgid "Shut Down..."
+#~ msgstr "Apagar…"
+
+#~ msgid "Bluetooth Agent"
+#~ msgstr "Axente Bluetooth"
+
+#~ msgid "Search your computer"
+#~ msgstr "Buscar no seu computador"
+
+#~ msgid ""
+#~ "Can't add a new workspace because maximum workspaces limit has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Non é posíbel engadir unha área de traballo nova porque chegouse ao "
+#~ "límite de áreas de traballo."
+
+#~ msgid "Can't remove the first workspace."
+#~ msgstr "Non é posíbel quitar a primeira área de traballo."
#~ msgid "Clock"
#~ msgstr "Reloxo"
diff --git a/po/he.po b/po/he.po
index 08a4d69fb..12c3a08a8 100644
--- a/po/he.po
+++ b/po/he.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-10 18:43+0200\n"
-"PO-Revision-Date: 2011-03-10 18:45+0200\n"
+"POT-Creation-Date: 2011-03-17 00:33+0200\n"
+"PO-Revision-Date: 2011-03-17 00:37+0200\n"
"Last-Translator: Yaron Shahrabani \n"
"Language-Team: Hebrew \n"
"MIME-Version: 1.0\n"
@@ -171,21 +171,17 @@ msgstr "Whether to collect stats about applications usage"
msgid "disabled OpenSearch providers"
msgstr "disabled OpenSearch providers"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "הפקודה לא נמצאה"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "לא ניתן לפענח את הפקודה:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "אין כזה יישום"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "ההרצה של '%s' נכשלה:"
@@ -371,7 +367,7 @@ msgstr "השבוע"
msgid "Next week"
msgstr "בשבוע הבא"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "הסרה"
@@ -426,7 +422,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A ה־%e ב%B, %Y"
@@ -499,7 +495,7 @@ msgstr "המערכת מופעלת מחדש"
msgid "Confirm"
msgstr "אישור"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:465
msgid "Cancel"
msgstr "ביטול"
@@ -513,7 +509,7 @@ msgstr "פעיל"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "מנוטרל"
@@ -533,11 +529,11 @@ msgstr "צפייה במקור"
msgid "Web Page"
msgstr "דף אינטרנט"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:926
msgid "Open"
msgstr "פתיחה"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:1986
msgid "System Information"
msgstr "פרטי המערכת"
@@ -560,18 +556,18 @@ msgid "Dash"
msgstr "חלונית"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:514
#, c-format
msgid "Quit %s"
msgstr "יציאה מ־%s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:873
msgid "Activities"
msgstr "פעילויות"
-#: ../js/ui/panel.js:1020
+#: ../js/ui/panel.js:974
msgid "Panel"
msgstr "לוח"
@@ -588,7 +584,7 @@ msgstr "ניסיון חוזר"
msgid "Connect to..."
msgstr "התחברות אל..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "מקומות והתקנים"
@@ -597,7 +593,7 @@ msgstr "מקומות והתקנים"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -613,39 +609,39 @@ msgstr "בחיפוש..."
msgid "No matching results."
msgstr "אין תוצאות תואמות."
-#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
msgid "Power Off..."
msgstr "כיבוי..."
-#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
msgid "Suspend"
msgstr "השהיה"
-#: ../js/ui/statusMenu.js:136
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "זמין"
-#: ../js/ui/statusMenu.js:141
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "עסוק"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:150
msgid "My Account"
msgstr "החשבון שלי"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:154
msgid "System Settings"
msgstr "הגדרות המערכת"
-#: ../js/ui/statusMenu.js:160
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "נעילת המסך"
-#: ../js/ui/statusMenu.js:164
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "החלפת משתמש"
-#: ../js/ui/statusMenu.js:169
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "ניתוק..."
@@ -653,14 +649,12 @@ msgstr "ניתוק..."
msgid "Zoom"
msgstr "תקריב"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "מקריא מסך"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "מקלדת מסך"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "התראות חזותיות"
@@ -685,17 +679,17 @@ msgstr "מקשי עכבר"
msgid "Universal Access Settings"
msgstr "הגדרות גישה אוניברסלית"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "ניגודיות גבוהה"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "טקסט גדול"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:236
+#: ../js/ui/status/bluetooth.js:332 ../js/ui/status/bluetooth.js:366
+#: ../js/ui/status/bluetooth.js:406 ../js/ui/status/bluetooth.js:439
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -715,94 +709,94 @@ msgstr "הגדרת התקן חדש..."
msgid "Bluetooth Settings"
msgstr "הגדרות Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:187
msgid "Connection"
msgstr "חיבור"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:223
msgid "Send Files..."
msgstr "שליחת קבצים..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:228
msgid "Browse Files..."
msgstr "עיון בקבצים..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:237
msgid "Error browsing device"
msgstr "שגיאה בעיון בהתקן"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:238
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:246
msgid "Keyboard Settings"
msgstr "הגדרות מקלדת"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:251
msgid "Mouse Settings"
msgstr "הגדרות עכבר"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "הגדרות שמע"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:367
#, c-format
msgid "Authorization request from %s"
msgstr "בקשת אישור מאת %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:373
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:375
msgid "Always grant access"
msgstr "תמיד להעניק גישה"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:376
msgid "Grant this time only"
msgstr "הענקת גישה הפעם בלבד"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:377
msgid "Reject"
msgstr "סירוב"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:407
#, c-format
msgid "Pairing confirmation for %s"
msgstr "אישור צימוד עבור %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:413 ../js/ui/status/bluetooth.js:447
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:414
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "נא לאשר האם קוד ה־PIN '%s' תואם את זה שמופיע בהתקן."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:416
msgid "Matches"
msgstr "התאמות"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:417
msgid "Does not match"
msgstr "אינו תואם"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:440
#, c-format
msgid "Pairing request for %s"
msgstr "בקשת צימוד עבור %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:448
msgid "Please enter the PIN mentioned on the device."
msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:464
msgid "OK"
msgstr "אישור"
@@ -814,17 +808,147 @@ msgstr "הצגת פריסת המקלדת..."
msgid "Localization Settings"
msgstr "הגדרות אזוריות"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<לא ידוע>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "מנוטרל"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "בהתחברות..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "נדרש אימות"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "הכבל מנותק"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "לא זמין"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "החיבור נכשל"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "מחובר (פרטי)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "אתרנט אוטומטי"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "פס רחב אוטומטי"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "חיוג אוטומטי"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s אוטומטי"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth אוטומטי"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "אלחוטי אוטומטי"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "עוד..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "הפעלת תכונת הרשת"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "קווי"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "אלחוטי"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "פס־רחב נייד"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "חיבורי VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "הגדרות הרשת"
+
+#: ../js/ui/status/network.js:1782
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "כרגע ישנו חיבור בינך ובין רשת הפס הרחב הניידת '%s'"
+
+#: ../js/ui/status/network.js:1786
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "כרגע ישנו חיבור בינך ובין הרשת האלחוטית '%s'"
+
+#: ../js/ui/status/network.js:1790
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "כרגע ישנו חיבור בינך ובין הרשת הקווית '%s'"
+
+#: ../js/ui/status/network.js:1794
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "כרגע ישנו חיבור בינך ובין רשת ה־VPN '%s'"
+
+#: ../js/ui/status/network.js:1799
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "כעת ישנו חיבור בינך ובין '%s'"
+
+#: ../js/ui/status/network.js:1807
+msgid "Connection established"
+msgstr "ההתחברות הצליחה"
+
+#: ../js/ui/status/network.js:1929
+msgid "Networking is disabled"
+msgstr "תכונת הרשת מנוטרלת"
+
+#: ../js/ui/status/network.js:2054
+msgid "Network Manager"
+msgstr "מנהל הרשתות"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "הגדרות צריכת החשמל"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "מתבצע שיערוך..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -833,26 +957,26 @@ msgstr[1] "נותרו %d שעות"
msgstr[2] "נותרו שעתיים"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s נותרו"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "שעה"
msgstr[1] "שעות"
msgstr[2] "שעתיים"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "דקה"
msgstr[1] "דקות"
msgstr[2] "דקות"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -860,78 +984,78 @@ msgstr[0] "דקה אחת נותרה"
msgstr[1] "%d דקות נותרו"
msgstr[2] "שתי דקות נותרו"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "מתאם חשמל"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "סוללת נייד"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "אל־פסק"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "צג"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "עכבר"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "מקלדת"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "מחשב כף יד"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "טלפון סלולרי"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "נגן מדיה"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "טבלת שליטה"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "מחשב"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
msgid "Unknown"
msgstr "לא ידוע"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "עצמה"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "מיקרופון"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s התחבר/ה."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s התנתק/ה."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "'%s' מרוחק/ת."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s עסוק/ה."
@@ -939,7 +1063,7 @@ msgstr "%s עסוק/ה."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "נשלח ב־%X בשעה %A"
@@ -948,11 +1072,11 @@ msgstr "נשלח ב־%X בשעה %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:119
msgid "Type to search..."
msgstr "יש להקליד כדי לחפש..."
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
msgid "Search"
msgstr "חיפוש"
@@ -968,7 +1092,7 @@ msgstr "'%s' מוכן"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -978,7 +1102,7 @@ msgstr[2] "2 פלטים"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@@ -986,7 +1110,7 @@ msgstr[0] "קלט אחד"
msgstr[1] "%u קלטים"
msgstr[2] "2 קלטים"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "צלילי מערכת"
@@ -994,11 +1118,16 @@ msgstr "צלילי מערכת"
msgid "Print version"
msgstr "Print version"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:442
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "אירע כשל בטעינת '%s'"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "לפני פחות מדקה"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1006,7 +1135,7 @@ msgstr[0] "לפני דקה"
msgstr[1] "לפני %d דקות"
msgstr[2] "לפני 2 דקות"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1014,7 +1143,7 @@ msgstr[0] "לפני שעה"
msgstr[1] "לפני %d שעות"
msgstr[2] "לפני שעתיים"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1022,7 +1151,7 @@ msgstr[0] "לפני יום"
msgstr[1] "לפני %d ימים"
msgstr[2] "לפני יומיים"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1030,6 +1159,14 @@ msgstr[0] "לפני שבוע"
msgstr[1] "לפני %d שבועות"
msgstr[2] "לפני שבועיים"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "בריטניה"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "בררת מחדל"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
@@ -1054,6 +1191,15 @@ msgstr "מערכת הקבצים"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "No such application"
+#~ msgstr "אין כזה יישום"
+
+#~ msgid "Screen Reader"
+#~ msgstr "מקריא מסך"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "מקלדת מסך"
+
#~ msgid "PREFERENCES"
#~ msgstr "העדפות"
diff --git a/po/hu.po b/po/hu.po
index b37f1faf3..d5c396b42 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-24 16:09+0100\n"
-"PO-Revision-Date: 2011-02-24 16:10+0100\n"
+"POT-Creation-Date: 2011-03-19 02:47+0100\n"
+"PO-Revision-Date: 2011-03-19 02:47+0100\n"
"Last-Translator: Gabor Kelemen \n"
"Language-Team: Hungarian \n"
"Language: \n"
@@ -173,47 +173,43 @@ msgstr "Statisztikák gyűjtése alkalmazások használatáról"
msgid "disabled OpenSearch providers"
msgstr "kikapcsolt OpenSearch szolgáltatók"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "A parancs nem található"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "A parancs nem dolgozható fel:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Nincs ilyen alkalmazás"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "„%s” végrehajtása meghiúsult:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:174
+#: ../js/ui/appDisplay.js:226
msgid "All"
msgstr "Összes"
-#: ../js/ui/appDisplay.js:261
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "ALKALMAZÁSOK"
-#: ../js/ui/appDisplay.js:291
-msgid "PREFERENCES"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
msgstr "BEÁLLÍTÁSOK"
-#: ../js/ui/appDisplay.js:551
+#: ../js/ui/appDisplay.js:612
msgid "New Window"
msgstr "Új ablak"
-#: ../js/ui/appDisplay.js:555
+#: ../js/ui/appDisplay.js:615
msgid "Remove from Favorites"
msgstr "Eltávolítás a Kedvencek közül"
-#: ../js/ui/appDisplay.js:556
+#: ../js/ui/appDisplay.js:616
msgid "Add to Favorites"
msgstr "Hozzáadás a Kedvencekhez"
@@ -230,19 +226,19 @@ msgstr "%s eltávolítva a Kedvencek közül"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
-#: ../js/ui/calendar.js:65
+#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "Egész nap"
#. Translators: Shown in calendar event list, if 24h format
-#: ../js/ui/calendar.js:70
+#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
msgstr "%k.%M"
#. Transators: Shown in calendar event list, if 12h format
-#: ../js/ui/calendar.js:77
+#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
msgstr "%p %l.%M"
@@ -252,43 +248,43 @@ msgstr "%p %l.%M"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
-#: ../js/ui/calendar.js:117
+#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "V"
#. Translators: Calendar grid abbreviation for Monday
-#: ../js/ui/calendar.js:119
+#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "H"
#. Translators: Calendar grid abbreviation for Tuesday
-#: ../js/ui/calendar.js:121
+#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "K"
#. Translators: Calendar grid abbreviation for Wednesday
-#: ../js/ui/calendar.js:123
+#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "Sz"
#. Translators: Calendar grid abbreviation for Thursday
-#: ../js/ui/calendar.js:125
+#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
msgstr "Cs"
#. Translators: Calendar grid abbreviation for Friday
-#: ../js/ui/calendar.js:127
+#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "P"
#. Translators: Calendar grid abbreviation for Saturday
-#: ../js/ui/calendar.js:129
+#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
msgstr "Sz"
@@ -299,136 +295,136 @@ msgstr "Sz"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
-#: ../js/ui/calendar.js:142
+#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "V"
#. Translators: Event list abbreviation for Monday
-#: ../js/ui/calendar.js:144
+#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "H"
#. Translators: Event list abbreviation for Tuesday
-#: ../js/ui/calendar.js:146
+#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "K"
#. Translators: Event list abbreviation for Wednesday
-#: ../js/ui/calendar.js:148
+#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "Sze"
#. Translators: Event list abbreviation for Thursday
-#: ../js/ui/calendar.js:150
+#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "Cs"
#. Translators: Event list abbreviation for Friday
-#: ../js/ui/calendar.js:152
+#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "P"
#. Translators: Event list abbreviation for Saturday
-#: ../js/ui/calendar.js:154
+#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
msgstr "Szo"
#. Translators: Text to show if there are no events
-#: ../js/ui/calendar.js:701
+#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "Semmi sincs ütemezve"
#. Translators: Shown on calendar heading when selected day occurs on current year
-#: ../js/ui/calendar.js:717
+#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %B %d"
#. Translators: Shown on calendar heading when selected day occurs on different year
-#: ../js/ui/calendar.js:720
+#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %Y %B %d"
-#: ../js/ui/calendar.js:730
+#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "Ma"
-#: ../js/ui/calendar.js:734
+#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "Holnap"
-#: ../js/ui/calendar.js:743
+#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "Ezen a héten"
-#: ../js/ui/calendar.js:751
+#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "Jövő héten"
-#: ../js/ui/dash.js:174
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "Eltávolítás"
-#: ../js/ui/dateMenu.js:93
+#: ../js/ui/dateMenu.js:91
msgid "Date and Time Settings"
msgstr "Dátum- és időbeállítások"
-#: ../js/ui/dateMenu.js:112
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Naptár megnyitása"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:151
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %k.%M.%S"
-#: ../js/ui/dateMenu.js:152
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %k.%M"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:156
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %k.%M.%S"
-#: ../js/ui/dateMenu.js:157
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %k.%M"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:164
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %p %l.%M.%S"
-#: ../js/ui/dateMenu.js:165
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %p %l.%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:169
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a, %p %l.%M.%S"
-#: ../js/ui/dateMenu.js:170
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a, %p %l.%M"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:196
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%Y. %b %e %A"
@@ -507,41 +503,45 @@ msgstr "A rendszer újraindítása."
msgid "Confirm"
msgstr "Megerősítés"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Mégse"
-#: ../js/ui/lookingGlass.js:587
+#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "Nincsenek kiterjesztések telepítve"
-#: ../js/ui/lookingGlass.js:624
+#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "Engedélyezve"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Tiltva"
-#: ../js/ui/lookingGlass.js:628
+#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "Hiba"
-#: ../js/ui/lookingGlass.js:630
+#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "Elavult"
-#: ../js/ui/lookingGlass.js:655
+#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "Forrás megtekintése"
-#: ../js/ui/lookingGlass.js:661
+#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "Weblap"
-#: ../js/ui/messageTray.js:1902
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr "Megnyitás"
+
+#: ../js/ui/messageTray.js:1986
msgid "System Information"
msgstr "Rendszerinformációk"
@@ -557,18 +557,29 @@ msgstr "Ablakok"
msgid "Applications"
msgstr "Alkalmazások"
+# FIXME - valami jobbat
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr "Dash"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:537
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "%s bezárása"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:905
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Tevékenységek"
+#: ../js/ui/panel.js:975
+msgid "Panel"
+msgstr "Panel"
+
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@@ -582,7 +593,7 @@ msgstr "Újra"
msgid "Connect to..."
msgstr "Kapcsolódás…"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "HELYEK ÉS ESZKÖZÖK"
@@ -591,7 +602,7 @@ msgstr "HELYEK ÉS ESZKÖZÖK"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:612
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -599,97 +610,95 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Adjon meg egy parancsot:"
-#: ../js/ui/searchDisplay.js:295
+#: ../js/ui/searchDisplay.js:283
msgid "Searching..."
msgstr "Keresés…"
-#: ../js/ui/searchDisplay.js:309
+#: ../js/ui/searchDisplay.js:297
msgid "No matching results."
msgstr "Nincs találat."
-#: ../js/ui/statusMenu.js:99 ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
msgid "Power Off..."
msgstr "Kikapcsolás…"
-#: ../js/ui/statusMenu.js:101 ../js/ui/statusMenu.js:162
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
msgid "Suspend"
msgstr "Felfüggesztés"
-#: ../js/ui/statusMenu.js:122
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Elérhető"
-#: ../js/ui/statusMenu.js:127
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Elfoglalt"
-#: ../js/ui/statusMenu.js:135
+#: ../js/ui/statusMenu.js:150
msgid "My Account"
msgstr "Saját fiók"
-#: ../js/ui/statusMenu.js:139
+#: ../js/ui/statusMenu.js:154
msgid "System Settings"
msgstr "Rendszerbeállítások"
-#: ../js/ui/statusMenu.js:146
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Képernyő zárolása"
-#: ../js/ui/statusMenu.js:150
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Felhasználóváltás"
-#: ../js/ui/statusMenu.js:155
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Kijelentkezés…"
-#: ../js/ui/status/accessibility.js:81
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Nagyítás"
-#: ../js/ui/status/accessibility.js:88
-msgid "Screen Reader"
-msgstr "Képernyőolvasó"
-
-#: ../js/ui/status/accessibility.js:92
-msgid "Screen Keyboard"
-msgstr "Képernyő-billentyűzet"
-
-#: ../js/ui/status/accessibility.js:96
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Vizuális figyelmeztetések"
-#: ../js/ui/status/accessibility.js:99
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Ragadós billentyűk"
-#: ../js/ui/status/accessibility.js:102
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Lassú billentyűk"
-#: ../js/ui/status/accessibility.js:105
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Billentyűszűrés"
-#: ../js/ui/status/accessibility.js:108
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Egérbillentyűk"
-#: ../js/ui/status/accessibility.js:112
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Akadálymentesítési beállítások"
-#: ../js/ui/status/accessibility.js:164
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Nagy kontraszt"
-#: ../js/ui/status/accessibility.js:209
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Nagy szöveg"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -709,94 +718,94 @@ msgstr "Új eszköz beállítása…"
msgid "Bluetooth Settings"
msgstr "Bluetooth-beállítások"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Kapcsolat"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Fájlok küldése…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Fájlok tallózása…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Hiba az eszköz tallózásakor"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "A kért eszköz nem tallózható. A hiba: „%s”"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Billentyűzetbeállítások"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Egérbeállítások"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Hangbeállítások"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Felhatalmazási kérés a következőtől: %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "A(z) %s eszköz szeretné használni a(z) „%s” szolgáltatást"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Hozzáférhet mindig"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Csak most"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Visszautasítás"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Párosítás megerősítése ehhez: %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Az eszköz (%s) párosítást kér a számítógéppel"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Erősítse meg, hogy a(z) „%s” PIN megegyezik az eszközön lévővel."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Megegyezik"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Nem egyezik"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Párosítási kérés ehhez: %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Adja meg az eszközön említett PIN-kódot."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -808,11 +817,147 @@ msgstr "Billentyűzetkiosztás megjelenítése…"
msgid "Localization Settings"
msgstr "Lokalizációs beállítások"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "tiltva"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "kapcsolódás…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "hitelesítés szükséges"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "vezeték kihúzva"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "nem érhető el"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "a kapcsolódás meghiúsult"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Kapcsolódva (privát)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Auto Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Auto széles sáv"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Auto betárcsázós"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Auto %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Auto Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Auto vezeték nélküli"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Több…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Hálózat engedélyezése"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Vezetékes"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Vezeték nélküli"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobil széles sáv"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN kapcsolatok"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Hálózati beállítások"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Csatlakozott a(z) „%s” mobil széles sávú kapcsolathoz"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Csatlakozott a(z) „%s” vezeték nélküli hálózathoz"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Csatlakozott a(z) „%s” vezetékes hálózathoz"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Csatlakozott a(z) „%s” VPN hálózathoz"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Csatlakozott ehhez: „%s”"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Kapcsolat létrejött"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Hálózat letiltva"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Hálózatkezelő"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Energiabeállítások"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Becslés…"
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -820,102 +965,102 @@ msgstr[0] "%d óra van hátra"
msgstr[1] "%d óra van hátra"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s van hátra"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "óra"
msgstr[1] "óra"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "perc"
msgstr[1] "perc"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d perc van hátra"
msgstr[1] "%d perc van hátra"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Hálózati csatlakozó"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Noteszgép-akkumulátor"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "Szünetmentes táp"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Egér"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Billentyűzet"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Mobiltelefon"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Médialejátszó"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Táblagép"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Számítógép"
-#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
msgid "Unknown"
msgstr "Ismeretlen"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Hangerő"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Mikrofon"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s elérhető."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s kilépett."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s távol van."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s elfoglalt."
@@ -923,7 +1068,7 @@ msgstr "%s elfoglalt."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Elküldve: %A, %X"
@@ -931,24 +1076,28 @@ msgstr "Elküldve: %A, %X"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
-#. characters
-#: ../js/ui/viewSelector.js:30
+#. characters.
+#: ../js/ui/viewSelector.js:119
msgid "Type to search..."
msgstr "Gépeljen a kereséshez…"
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Oldalsáv"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s indítása befejeződött"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "„%s” kész"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -957,51 +1106,68 @@ msgstr[1] "%u kimenet"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u bemenet"
msgstr[1] "%u bemenet"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Rendszerhangok"
-#: ../src/shell-global.c:1363
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Verzió kiírása"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "„%s” indítása meghiúsult"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Kevesebb, mint egy perce"
-#: ../src/shell-global.c:1367
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d perce"
msgstr[1] "%d perce"
-#: ../src/shell-global.c:1372
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d órája"
msgstr[1] "%d órája"
-#: ../src/shell-global.c:1377
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d napja"
msgstr[1] "%d napja"
-#: ../src/shell-global.c:1382
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d hete"
msgstr[1] "%d hete"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Egyesült Királyság"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Alapértelmezett"
+
#: ../src/shell-polkit-authentication-agent.c:334
-msgid "Authentation dialog was dismissed by the user"
+msgid "Authentication dialog was dismissed by the user"
msgstr "A hitelesítési ablakot a felhasználó bezárta"
#: ../src/shell-util.c:89
@@ -1014,10 +1180,6 @@ msgstr "Saját mappa"
msgid "File System"
msgstr "Fájlrendszer"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "Oldalsáv"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
diff --git a/po/id.po b/po/id.po
index ab1d4b834..14e467165 100644
--- a/po/id.po
+++ b/po/id.po
@@ -1,333 +1,1191 @@
# Indonesian translation of gnome-shell
# Copyright (C) 2010 THE gnome-shell'S COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
-# Andika Triwidada , 2010.
#
+# Andika Triwidada , 2010.
+# Dirgita , 2011.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2010-05-30 20:55+0000\n"
-"PO-Revision-Date: 2010-05-31 19:43+0700\n"
-"Last-Translator: Andika Triwidada \n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-19 10:16+0000\n"
+"PO-Revision-Date: 2011-03-05 22:23+0700\n"
+"Last-Translator: Dirgita \n"
"Language-Team: GNOME Indonesian Translation Team \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: id\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Poedit-Language: Indonesian\n"
"X-Poedit-Country: Indonesia\n"
"X-Poedit-SourceCharset: UTF-8\n"
+"X-Generator: Lokalize 1.1\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
-msgstr "Shell GNOME"
+msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Manajemen jendela dan peluncuran aplikasi"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:1
+msgid ""
+"Allows access to internal debugging and monitoring tools using the Alt-F2 "
+"dialog."
+msgstr ""
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Gubah panel jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:2
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr ""
+"Mengaktifkan perkakas internal yang berguna bagi pengembang dan penguji "
+"dengan Alt-F2"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Format Jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
+msgid "File extension used for storing the screencast"
+msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Preferensi Jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
+msgid "Framerate used for recording screencasts."
+msgstr "Laju gambar untuk menyimpan tangkapan layar."
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Tampilan Panel"
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
+msgid ""
+"GNOME Shell extensions have a uuid property; this key lists extensions which "
+"should not be loaded."
+msgstr ""
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Tampilka_n detik"
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "Riwayat dialog perintah (Alt-F2)"
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Tampilkan tan_ggal"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#, fuzzy
+msgid "History for the looking glass dialog"
+msgstr "Riwayat dialog perintah (Alt-F2)"
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "Format _12 jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Jika bernilai benar (true), tanggal akan ditampilkan."
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "Format _24 jam"
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
+msgid "If true, display seconds in time."
+msgstr "Jika bernilai benar (true), detik akan ditampilkan."
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:306 ../js/ui/dash.js:858
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
+msgid "If true, display the ISO week date in the calendar."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
+msgid "List of desktop file IDs for favorite applications"
+msgstr "Daftar ID berkas desktop untuk aplikasi favorit"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#, no-c-format
+msgid ""
+"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
+"used for gst-launch. The pipeline should have an unconnected sink pad where "
+"the recorded video is recorded. It will normally have a unconnected source "
+"pad; output from that pad will be written into the output file. However the "
+"pipeline can also take care of its own output - this might be used to send "
+"the output to an icecast server via shout2send or similar. When unset or set "
+"to an empty value, the default pipeline will be used. This is currently "
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "Menampilkan tanggal pada jam"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
+msgid "Show the week date in the calendar"
+msgstr "Menampilkan tanggal pada kalender"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
+msgid "Show time with seconds"
+msgstr "Menampilkan detik"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
+msgid ""
+"The applications corresponding to these identifiers will be displayed in the "
+"favorites area."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
+msgid ""
+"The filename for recorded screencasts will be a unique filename based on the "
+"current date, and use this extension. It should be changed when recording to "
+"a different container format."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
+msgid ""
+"The framerate of the resulting screencast recordered by GNOME Shell's "
+"screencast recorder in frames-per-second."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
+msgid "The gstreamer pipeline used to encode the screencast"
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
+msgid ""
+"The shell normally monitors active applications in order to present the most "
+"used ones (e.g. in launchers). While this data will be kept private, you may "
+"want to disable this for privacy reasons. Please note that doing so won't "
+"remove already saved data."
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "Ekstensi Uuid yang hendak dinonaktifkan"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr ""
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr ""
+
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Perintah tidak ditemukan"
+
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Tidak dapat mengurai perintah:"
+
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Eksekusi '%s' gagal:"
+
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Semua"
+
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "APLIKASI"
-#: ../js/ui/appDisplay.js:338
-msgid "PREFERENCES"
-msgstr "PREFERENSI"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
+msgstr "PENGATURAN"
-#: ../js/ui/appDisplay.js:710
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Jendela Baru"
-#: ../js/ui/appDisplay.js:714
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
-#: ../js/ui/appDisplay.js:715
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
-#: ../js/ui/appDisplay.js:1042
-msgid "Drag here to add favorites"
-msgstr "Seret ke sini untuk menambah favorit"
-
-#: ../js/ui/appFavorites.js:89
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s telah ditambahkan ke favorit Anda."
-#: ../js/ui/appFavorites.js:107
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda."
-#: ../js/ui/dash.js:189
-msgid "Find"
-msgstr "Temukan"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Sepanjang Hari"
-#: ../js/ui/dash.js:513
-msgid "Searching..."
-msgstr "Mencari..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:527
-msgid "No matching results."
-msgstr "Tak ada yang cocok."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:877 ../js/ui/placeDisplay.js:551
-msgid "PLACES & DEVICES"
-msgstr "LOKASI & PERANGKAT"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "M"
-#. **** Documents ****
-#: ../js/ui/dash.js:884 ../js/ui/docDisplay.js:497
-msgid "RECENT ITEMS"
-msgstr "DOKUMEN TERKINI"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:470
-msgid "No extensions installed"
-msgstr "Tak ada ekstensi terpasang"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:507
-msgid "Enabled"
-msgstr "Diaktifkan"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "R"
-#: ../js/ui/lookingGlass.js:509
-msgid "Disabled"
-msgstr "Dinonaktifkan"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "K"
-#: ../js/ui/lookingGlass.js:511
-msgid "Error"
-msgstr "Galat"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "J"
-#: ../js/ui/lookingGlass.js:513
-msgid "Out of date"
-msgstr "Kadaluarsa"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:538
-msgid "View Source"
-msgstr "Tilik Sumber"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Min"
-#: ../js/ui/lookingGlass.js:544
-msgid "Web Page"
-msgstr "Halaman Web"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Sen"
-#: ../js/ui/overview.js:161
-msgid "Undo"
-msgstr "Batal"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Sel"
-#. Button on the left side of the panel.
-#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:903
-msgid "Activities"
-msgstr "Aktivitas"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Rab"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Kam"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Jum"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Sab"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Tidak Ada Jadwal"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %d %B"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %d %B %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Hari ini"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Besok"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Minggu ini"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Minggu depan"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+msgid "Remove"
+msgstr "Hapus"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Pengaturan Waktu dan Tanggal"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Buka Kalender"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:1118
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %R:%S"
-#: ../js/ui/panel.js:1119
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:1123
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/panel.js:1124
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:1131
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %k:%M:%S"
-#: ../js/ui/panel.js:1132
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %k:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:1136
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %k:%M:%S"
-#: ../js/ui/panel.js:1137
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %k:%M"
-#: ../js/ui/placeDisplay.js:108
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+#, fuzzy
+msgid "%A %B %e, %Y"
+msgstr "%a %e %b, %R"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "DOKUMEN TERKINI"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Keluar %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Keluar"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr "Klik Keluar untuk menutup aplikasi ini serta keluar dari sistem."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s akan keluar otomatis dalam %d detik."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Anda akan keluar otomatis dalam %d detik."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Keluar dari sistem."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Matikan"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Klik Matikan untuk menutup aplikasi ini serta mematikan sistem."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Sistem akan mati otomatis dalam %d detik."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Mematikan sistem."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Nyalakan Ulang"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Klik Nyalakan Ulang untuk menutup aplikasi ini serta menyalakan kembali "
+"sistem."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Sistem akan dinyalakan ulang setelah %d detik."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Menyalan ulang sistem."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Konfirmasi"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Batal"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Tak ada ekstensi terpasang"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Diaktifkan"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Dinonaktifkan"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Galat"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Kadaluarsa"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Tilik Sumber"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Halaman Web"
+
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr ""
+
+#: ../js/ui/messageTray.js:1986
+msgid "System Information"
+msgstr "Informasi Sistem"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Batal"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Jendela"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Aplikasi"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr ""
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Keluar %s"
+
+#. Button on the left side of the panel.
+#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
+#: ../js/ui/panel.js:874
+msgid "Activities"
+msgstr "Aktivitas"
+
+#: ../js/ui/panel.js:975
+#, fuzzy
+#| msgid "Cancel"
+msgid "Panel"
+msgstr "Batal"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Gagal melepas kait '%s'"
-#: ../js/ui/placeDisplay.js:111
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Coba lagi"
-#: ../js/ui/placeDisplay.js:156
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Sambung ke..."
-#: ../js/ui/runDialog.js:231
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "LOKASI & PERANGKAT"
+
+# Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
+
+#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
-msgstr "Silakan masukkan suatu perintah:"
+msgstr "Ketikkan perintah:"
-#: ../js/ui/runDialog.js:375
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Eksekusi '%s' gagal:"
+#: ../js/ui/searchDisplay.js:287
+msgid "Searching..."
+msgstr "Mencari..."
-#: ../js/ui/statusMenu.js:90
+#: ../js/ui/searchDisplay.js:301
+msgid "No matching results."
+msgstr "Tak ada yang cocok."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+msgid "Power Off..."
+msgstr "Matikan..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+msgid "Suspend"
+msgstr "Suspensi"
+
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Ada"
-#: ../js/ui/statusMenu.js:94
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Sibuk"
-#: ../js/ui/statusMenu.js:98
-msgid "Invisible"
-msgstr "Tak nampak"
+#: ../js/ui/statusMenu.js:150
+msgid "My Account"
+msgstr "Akun Saya"
-#: ../js/ui/statusMenu.js:105
-msgid "Account Information..."
-msgstr "Informasi Akun..."
+#: ../js/ui/statusMenu.js:154
+msgid "System Settings"
+msgstr "Pengaturan Sistem"
-#: ../js/ui/statusMenu.js:109
-msgid "System Preferences..."
-msgstr "Preferensi Sistem..."
-
-#: ../js/ui/statusMenu.js:116
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Kunci Layar"
-#: ../js/ui/statusMenu.js:120
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Ganti Pengguna"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Keluar..."
-#: ../js/ui/statusMenu.js:129
-msgid "Shut Down..."
-msgstr "Matikan..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Zum"
-#: ../js/ui/windowAttentionHandler.js:47
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Peringatan Visual"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Tombol Lengket"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Tombol Lambat"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Tombol Pantul"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Tombol Tetikus"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Pengaturan Akses Universal"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Kontras Tinggi"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Teks Besar"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Visibilitas"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Kirim Berkas pada Perangkat..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Setel Perangkat Baru..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Pengaturan Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Koneksi"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Kirim Berkas..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Telusur Berkas..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Galat ketika menelusuri perangkat"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Perangkat yang dipinta tidak dapat ditelusuri, dengan galat '%s'"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Pengaturan Papan Ketik"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Pengaturan Tetikus"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Pengaturan Suara"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Permintaan otorisasi dari %s"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Perangkat %s ingin mengakses layanan '%s'"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Selalu berikan akses"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Hanya untuk saat ini"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Tolak"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Konfirmasi berpasangan untuk %s"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Perangkat %s ingin berpasangan dengan komputer ini"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr ""
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Cocok"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Tidak cocok"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Permintaan berpasangan untuk %s"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Ketikkan PIN yang disebutkan oleh perangkat."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "Oke"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Tampilkan Tata Letak Papan Ketik..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Pengaturan Pelokalan"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+#, fuzzy
+#| msgid "Unknown"
+msgid ""
+msgstr "Tak dikenal"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+#, fuzzy
+#| msgid "Disabled"
+msgid "disabled"
+msgstr "Dinonaktifkan"
+
+#: ../js/ui/status/network.js:476
+#, fuzzy
+#| msgid "Connection"
+msgid "connecting..."
+msgstr "Koneksi"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr ""
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr ""
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+#, fuzzy
+#| msgid "Available"
+msgid "unavailable"
+msgstr "Ada"
+
+#: ../js/ui/status/network.js:491
+#, fuzzy
+#| msgid "Connection"
+msgid "connection failed"
+msgstr "Koneksi"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr ""
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr ""
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr ""
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr ""
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, fuzzy, c-format
+#| msgid "Quit %s"
+msgid "Auto %s"
+msgstr "Keluar %s"
+
+#: ../js/ui/status/network.js:845
+#, fuzzy
+#| msgid "Bluetooth"
+msgid "Auto bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr ""
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr ""
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr ""
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr ""
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr ""
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr ""
+
+#: ../js/ui/status/network.js:1479
+#, fuzzy
+#| msgid "Connection"
+msgid "VPN Connections"
+msgstr "Koneksi"
+
+#: ../js/ui/status/network.js:1488
+#, fuzzy
+#| msgid "Power Settings"
+msgid "Network Settings"
+msgstr "Pengaturan Daya"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr ""
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr ""
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr ""
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr ""
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr ""
+
+#: ../js/ui/status/network.js:1808
+#, fuzzy
+#| msgid "Connection"
+msgid "Connection established"
+msgstr "Koneksi"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr ""
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr ""
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Pengaturan Daya"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Memperkirakan..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "%d jam lagi"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "%d %s %d %s lagi"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "jam"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "menit"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "%d menit lagi"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Adaptor AC"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Baterai laptop"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Monitor"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Tetikus"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Papan Ketik"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Ponsel"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Pemutar media"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Tablet"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Komputer"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
+msgid "Unknown"
+msgstr "Tak dikenal"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Volume"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Mikrofon"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s tersedia."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s tidak tersedia."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s sedang pergi."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s sibuk."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Dikirim pada %X dari %A"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Ketik yang ingin dicari..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Cari"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s telah selesai diawali"
-#: ../js/ui/windowAttentionHandler.js:49
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "'%s' telah siap"
-#: ../js/ui/workspacesView.js:237
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u Keluaran"
+
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u Masukan"
+
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Suara Sistem"
+
+#: ../src/main.c:397
+msgid "Print version"
msgstr ""
-"Tak bisa menambah ruang kerja baru karena batas ruang kerja maksimum telah "
-"tercapai."
-#: ../js/ui/workspacesView.js:254
-msgid "Can't remove the first workspace."
-msgstr "Tak bisa menghapus ruang kerja pertama."
+#: ../src/shell-app.c:454
+#, fuzzy, c-format
+#| msgid "Failed to unmount '%s'"
+msgid "Failed to launch '%s'"
+msgstr "Gagal melepas kait '%s'"
-#: ../src/shell-global.c:1027
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Kurang dari semenit yang lalu"
-#: ../src/shell-global.c:1031
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d menit yang lalu"
-#: ../src/shell-global.c:1036
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d jam yang lalu "
-#: ../src/shell-global.c:1041
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d hari yang lalu"
-#: ../src/shell-global.c:1046
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d minggu yang lalu"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr ""
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr ""
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr ""
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Folder Rumah"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Sistem Berkas"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Cari"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+
+#~ msgid "No such application"
+#~ msgstr "Tidak ada aplikasi"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Pembaca Layar"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Papan Tik Layar"
+
+#~ msgid "PREFERENCES"
+#~ msgstr "PREFERENSI"
diff --git a/po/it.po b/po/it.po
index c2190a90a..59f9a33df 100644
--- a/po/it.po
+++ b/po/it.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-11 01:54+0100\n"
-"PO-Revision-Date: 2011-03-11 01:56+0100\n"
+"POT-Creation-Date: 2011-03-24 22:46+0100\n"
+"PO-Revision-Date: 2011-03-24 22:58+0100\n"
"Last-Translator: Luca Ferretti \n"
"Language-Team: Italian \n"
"Language: it\n"
@@ -174,47 +174,43 @@ msgstr ""
msgid "disabled OpenSearch providers"
msgstr "Fornitori OpenSearch disabilitati"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Comando non trovato"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Impossibile analizzare il comando:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Applicazione inesistente"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Esecuzione di «%s» non riuscita:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Tutte"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "APPLICAZIONI"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "IMPOSTAZIONI"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Nuova finestra"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti"
@@ -376,7 +372,7 @@ msgstr "Questa settimana"
msgid "Next week"
msgstr "Prossima settimana"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Rimuovi"
@@ -431,7 +427,7 @@ msgstr "%a %l.%M %P"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%a %e %B %Y"
@@ -444,7 +440,7 @@ msgstr "ELEMENTI RECENTI"
msgid "Log Out %s"
msgstr "Termina sessione di %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Termina sessione"
@@ -469,50 +465,45 @@ msgstr "La sessione verrà terminata automaticamente tra %d secondi."
msgid "Logging out of the system."
msgstr "Chiusura della sessione."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
-msgstr "Arresta"
-
-# usato un termine diverso, magari si capisce meglio (LF)
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr ""
-"Fare clic su «Arresta» per chiudere queste applicazioni e spegnere il "
-"sistema."
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Spegni"
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "Il sistema verrà arrestato automaticamente tra %d secondi."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Fare clic su «Spegni» per chiudere queste applicazioni e spegnere il sistema."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "Arresto del sistema."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Il sistema verrà spento automaticamente tra %d secondi."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "pegnimento del sistema."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Riavvia"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il "
"sistema."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "Il sistema verrà riavviato automaticamente tra %d secondi."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Riavvio del sistema."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Conferma"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Annulla"
@@ -528,7 +519,7 @@ msgstr "Abilitato"
# (ndt) o disabilitata?
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Disabilitato"
@@ -548,48 +539,48 @@ msgstr "Visualizza sorgente"
msgid "Web Page"
msgstr "Pagina web"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "Apri"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Informazione di sistema"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Annulla"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Finestre"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Applicazioni"
# cruscotto?!?!?!?!?!?!?
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Chiudi %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Attività"
-#: ../js/ui/panel.js:1020
-msgid "Panel"
-msgstr "Pannello"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Barra superiore"
# (ndt) libera, ma unmount non si può proprio vedere...
#: ../js/ui/placeDisplay.js:122
@@ -605,64 +596,85 @@ msgstr "Riprova"
msgid "Connect to..."
msgstr "Connetti a..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "RISORSE E DISPOSITIVI"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Richiesta autenticazione"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Amministratore"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Autentica"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr ""
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Password:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Inserire un comando:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Ricerca..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Nessun risultato corrispondente."
-#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "Spegni..."
-#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "Sospendi"
-#: ../js/ui/statusMenu.js:136
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Disponibile"
-#: ../js/ui/statusMenu.js:141
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Non disponibile"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Account personale"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Impostazioni di sistema"
-#: ../js/ui/statusMenu.js:160
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Blocca schermo"
-#: ../js/ui/statusMenu.js:164
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Cambia utente"
-#: ../js/ui/statusMenu.js:169
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Termina sessione..."
@@ -670,29 +682,27 @@ msgstr "Termina sessione..."
msgid "Zoom"
msgstr "Ingrandimento"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Lettore schermo"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Tastiera a schermo"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Allerte visive"
#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
-msgstr "Permanenza tasti"
+msgstr "Tasti singoli"
#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
-msgstr "Rallentamento tasti"
+msgstr "Tasti lenti"
#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
-msgstr "Pressione ravvicinata tasti"
+msgstr "Tasti rimbalzati"
#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
@@ -702,24 +712,24 @@ msgstr "Mouse da tastiera"
msgid "Universal Access Settings"
msgstr "Impostazioni accesso universale"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Contrasto elevato"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Caratteri grandi"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
-# as on Android :P
+# su Android è Rilevabile :P
#: ../js/ui/status/bluetooth.js:55
msgid "Visibility"
-msgstr "Rilevabile"
+msgstr "Visibile"
#: ../js/ui/status/bluetooth.js:69
msgid "Send Files to Device..."
@@ -735,94 +745,94 @@ msgstr "Impostazioni Bluetooth"
# indica lo stato del device BT, per esempio gli auricolari
# credo sia meglio l'aggettivo che il sostantivo
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Collegato"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Invia file..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Esplora file..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Errore nell'esplorare il dispositivo"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Non è possibile esplorare il dispositivo richiesto, l'errore è «%s»"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Impostazioni tastiera"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Impostazioni mouse"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Impostazioni audio"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Richesta autorizzazione da %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Il dispositivo %s vuole accedere al servizio «%s»"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
-msgstr "Consenti sempre accesso"
+msgstr "Accorda sempre l'accesso"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
-msgstr "Consenti solo stavolta"
+msgstr "Accorda solo stavolta"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Rifiuta"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Conferma associazione per %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Il dispositivo %s vuole associarsi con questo computer"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Confermare la corrispondenza del PIN «%s» con quello sul dispositivo."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Corrisponde"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Non corrisponde"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
-msgstr "Richiesta associazione per %s"
+msgstr "Richiesta di associazione per %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Inserire il PIN indicato sul dispositivo."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -834,17 +844,147 @@ msgstr "Mostra disposizione tastiera..."
msgid "Localization Settings"
msgstr "Impostazioni localizzazione"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "disabilitata"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "connessione..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "richiesta autenticazione"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cavo scollegato"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "non disponibile"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "connessione non riuscita"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Connessa (privata)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet automatica"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Banda larga automatica"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Dial-up automatica"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s automatica"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth automatica"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Wireless automatica"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Altro..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Abilita rete"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Via cavo"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Wireless"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Banda larga mobile"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Connessioni VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Impostazioni rete"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Connessi alla rete mobile «%s»"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Connessi alla rete wireless «%s»"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Connessi alla rete via cavo «%s»"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Connessi alla rete VPN «%s»"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Connessi a «%s»"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Connessione stabilita"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Rete disabilitata"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Gestore reti"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Impostazioni alimentazione"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "In stima..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -852,103 +992,103 @@ msgstr[0] "%d ora rimanente"
msgstr[1] "%d ore rimanenti"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s e %d %s rimanenti"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "ora"
msgstr[1] "ore"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minuti"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minuto rimanente"
msgstr[1] "%d minuti rimanenti"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Alimentatore di corrente"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Batteria del portatile"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Mouse"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Tastiera"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDS"
# c'era una discussione su tp...
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Cellulare"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Lettore multimediale"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablet"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Computer"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Sconosciuto"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volume"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Microfono"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s è disponibile."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s è fuori rete."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s è assente."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s non è disponibile."
@@ -956,7 +1096,7 @@ msgstr "%s non è disponibile."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Inviato alle %-H.%M di %A"
@@ -965,11 +1105,11 @@ msgstr "Inviato alle %-H.%M di %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Digitare per cercare..."
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "Cerca"
@@ -986,7 +1126,7 @@ msgstr "«%s» è pronto"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -995,58 +1135,69 @@ msgstr[1] "%u uscite"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u ingresso"
msgstr[1] "%u ingressi"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Audio di sistema"
-#: ../src/main.c:395
+#: ../src/main.c:446
msgid "Print version"
msgstr "Stampa la versione"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Avvio di «%s» non riuscito"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Meno di un minuto fa"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minuto fa"
msgstr[1] "%d minuti fa"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d ora fa"
msgstr[1] "%d ore fa"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d giorno fa"
msgstr[1] "%d giorni fa"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d settimana fa"
msgstr[1] "%d settimane fa"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Regno Unito"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Predefinito"
+
#: ../src/shell-polkit-authentication-agent.c:334
-#, fuzzy
msgid "Authentication dialog was dismissed by the user"
-msgstr ""
-"Il dialogo di autenticazione è stato scartato|respinto|rimosso dall'utente"
+msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
#: ../src/shell-util.c:89
msgid "Home Folder"
@@ -1069,6 +1220,36 @@ msgstr "File system"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "Arresta"
+
+# usato un termine diverso, magari si capisce meglio (LF)
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr ""
+#~ "Fare clic su «Arresta» per chiudere queste applicazioni e spegnere il "
+#~ "sistema."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "Il sistema verrà arrestato automaticamente tra %d secondi."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "Arresto del sistema."
+
+#~ msgid "Confirm"
+#~ msgstr "Conferma"
+
+#~ msgid "Panel"
+#~ msgstr "Pannello"
+
+#~ msgid "No such application"
+#~ msgstr "Applicazione inesistente"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Lettore schermo"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Tastiera a schermo"
+
#~ msgid "PREFERENCES"
#~ msgstr "PREFERENZE"
diff --git a/po/ko.po b/po/ko.po
index 7fbddfdd1..8b5947c3f 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -6,9 +6,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2011-03-08 05:43+0000\n"
-"PO-Revision-Date: 2011-03-14 10:40+0900\n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-24 08:03+0000\n"
+"PO-Revision-Date: 2011-03-25 21:56+0900\n"
"Last-Translator: Changwoo Ryu \n"
"Language-Team: GNOME Korea \n"
"MIME-Version: 1.0\n"
@@ -161,47 +161,43 @@ msgstr "프로그램 사용 통계를 저장할지 여부"
msgid "disabled OpenSearch providers"
msgstr "OpenSearch 서비스 사용하지 않음"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "명령이 없습니다"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "명령어를 파싱할 수 없습니다:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "그런 프로그램이 없습니다"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' 실행이 실패했습니다:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "모두"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "프로그램"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "설정"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "새 창"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "즐겨찾기에서 제거"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "즐겨찾기에 추가"
@@ -361,7 +357,7 @@ msgstr "이번주"
msgid "Next week"
msgstr "다음주"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "제거"
@@ -416,7 +412,7 @@ msgstr "(%a) %p %l:%M"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%Y년 %B %e일 %A"
@@ -429,7 +425,7 @@ msgstr "최근 항목"
msgid "Log Out %s"
msgstr "로그아웃 %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "로그아웃"
@@ -451,45 +447,43 @@ msgstr "%d초 뒤에 자동으로 로그아웃합니다."
msgid "Logging out of the system."
msgstr "시스템에서 로그아웃."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
msgstr "컴퓨터 끄기"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템을 끕니다."
-
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템의 전원을 끕니다."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "시스템을 끕니다."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "시스템 전원 끄기."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "다시 시작"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr "다시 시작을 누르면 이 프로그램을 끝내고 시스템을 다시 시작합니다."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "시스템이 %d초 뒤에 자동으로 다시 시작합니다."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "시스템을 다시 시작합니다."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "확인"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "취소"
@@ -503,7 +497,7 @@ msgstr "사용"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "사용 않음"
@@ -523,47 +517,47 @@ msgstr "소스 보기"
msgid "Web Page"
msgstr "웹페이지"
-#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "열기"
-#: ../js/ui/messageTray.js:1963
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "시스템 정보"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "실행 취소"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "창"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "프로그램"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "대시보드"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:532
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "%s 끝내기"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:893
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "현재 활동"
-#: ../js/ui/panel.js:994
-msgid "Panel"
-msgstr "패널"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "위 막대"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -578,64 +572,84 @@ msgstr "다시 시도"
msgid "Connect to..."
msgstr "연결..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "위치 및 장치"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "인증이 필요합니다"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "관리자"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "인증"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "암호:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "명령을 입력하십시오:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "검색하는 중..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "일치하는 결과가 없습니다."
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "컴퓨터 끄기..."
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "절전"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "대화 가능"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "다른 용무 중"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "내 계정"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "시스템 설정"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "화면 잠그기"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "사용자 바꾸기"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "로그아웃..."
@@ -643,14 +657,12 @@ msgstr "로그아웃..."
msgid "Zoom"
msgstr "크기 조정"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "화면 읽기"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "화면 키보드"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "화면 알림"
@@ -673,19 +685,19 @@ msgstr "마우스 키"
#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
-msgstr "보편적 접근성 설정"
+msgstr "접근성 설정"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "고대비"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "큰 글자"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "블루투스"
@@ -705,94 +717,94 @@ msgstr "새 장치 준비..."
msgid "Bluetooth Settings"
msgstr "블루투스 설정"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "연결"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "파일 보내기..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "파일 찾아보기..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "장치를 찾아보는데 오류"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "요청한 장치를 찾아볼 수 없습니다. 오류는 '%s'"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "키보드 설정"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "마우스 설정"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "소리 설정"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "%s 장치에서 권한 확인 요청"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "%s 장치에서 '%s' 서비스에 접근을 요청합니다"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "항상 접근 허용"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "이번에만 허용"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "거부"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "연결 확인 (%s)"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "%s 장치가 이 컴퓨터와 연결하려 합니다."
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "PIN '%s'이(가) 해당 장치의 PIN과 일치하는지 확인하십시오."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "일치"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "일치하지 않음"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "연결 요청 (%s)"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "해당 장치에 표시된 PIN을 입력하십시오."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "확인"
@@ -804,117 +816,247 @@ msgstr "키보드 배치 보기..."
msgid "Localization Settings"
msgstr "지역화 설정"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<알 수 없음>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "사용 않음"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "연결하는 중..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "인증이 필요합니다"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "케이블이 분리되었습니다"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "사용 불가"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "연결이 실패했습니다"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "연결됨 (개인)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "자동 이더넷"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "자동 고속 통신망"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "자동 전화접속"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "자동 %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "자동 블루투스"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "자동 무선"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "더 보기..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "네트워크 사용"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "유선"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "무선"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "휴대전화 네트워크"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN 연결"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "네트워크 설정"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "'%s' 휴대전화 네트워크에 연결되었습니다"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "'%s' 무선 네트워크에 연결되었습니다"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "'%s' 유선 네트워크에 연결되었습니다"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "'%s' VPN 네트워크에 연결되었습니다"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "이제 '%s'에 연결되었습니다"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "연결이 되었습니다"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "네트워크를 사용하지 않습니다"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "네트워크 관리"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "전원 설정"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "예상치 계산 중..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "%d시간 남음"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d%s %d%s 남음"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "시간"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "분"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d분 남음"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "AC 어댑터"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "노트북 배터리"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "모니터"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "마우스"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "키보드"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "휴대전화"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "미디어 플레이어"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "태블릿"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "컴퓨터"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "알 수 없음"
# 오디오 볼륨
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "볼륨"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "마이크"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s 연결 중."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s 연결 중지."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s 다른 용무 중."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s 부재중."
@@ -922,7 +1064,7 @@ msgstr "%s 부재중."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "보낸 때: %A %H시 %M분"
@@ -931,11 +1073,11 @@ msgstr "보낸 때: %A %H시 %M분"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "검색하려면 입력하십시오..."
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "검색"
@@ -951,7 +1093,7 @@ msgstr "'%s' 프로그램이 준비되었습니다"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -959,49 +1101,62 @@ msgstr[0] "%u개 출력"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u개 입력"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "시스템 소리"
# 커맨드라인 옵션 설명
-#: ../src/main.c:395
+#: ../src/main.c:446
msgid "Print version"
msgstr "버전을 표시합니다"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "'%s' 실행에 실패했습니다"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "1분 이내"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d분 전"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d시간 전"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d일 전"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d주 전"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "영국"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "기본값"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "인증 대화 창을 사용자가 닫았습니다"
@@ -1026,5 +1181,32 @@ msgstr "파일시스템"
msgid "%1$s: %2$s"
msgstr "%s: %s"
+#~ msgid "Shut Down"
+#~ msgstr "컴퓨터 끄기"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "컴퓨터 끄기를 누르면 이 프로그램을 끝내고 시스템을 끕니다."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "시스템이 %d초 뒤에 자동으로 꺼집니다."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "시스템을 끕니다."
+
+#~ msgid "Confirm"
+#~ msgstr "확인"
+
+#~ msgid "Panel"
+#~ msgstr "패널"
+
+#~ msgid "No such application"
+#~ msgstr "그런 프로그램이 없습니다"
+
+#~ msgid "Screen Reader"
+#~ msgstr "화면 읽기"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "화면 키보드"
+
#~ msgid "PREFERENCES"
#~ msgstr "기본 설정"
diff --git a/po/lt.po b/po/lt.po
index bcd5844ae..fbcbf8f12 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -5,18 +5,17 @@
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2010-06-24 17:17+0000\n"
-"PO-Revision-Date: 2010-06-25 20:27+0300\n"
-"Last-Translator: Žygimantas Beručka \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-21 14:25+0100\n"
+"PO-Revision-Date: 2011-03-19 14:56+0300\n"
+"Last-Translator: Aurimas Černius \n"
"Language-Team: Lithuanian \n"
"Language: lt\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%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Virtaal 0.6.1\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@@ -27,41 +26,29 @@ msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Langų valdymas ir programų paleidimas"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Laikrodis"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Derinti skydelio laikrodį"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
-"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant "
-"Alt-F2 dialogą."
+"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-"
+"F2 dialogą."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Pasirinktinis laikrodžio formatas"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus "
"programuotojams ir bandytojams "
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
msgstr "Failų plėtinys, naudojamas įrašyti ekrano vaizdo įrašą"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
@@ -69,43 +56,32 @@ msgstr ""
"GNOME Shell plėtiniai turi uuid savybę. Šiame rakte nurodyti plėtiniai, "
"kurie neturėtų būti įkelti."
-#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Komandų (Alt-F2) dialogo retrospektyva"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Didinamojo stiklo dialogo istorija"
+
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Valandų formatas"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Jei reikšmė teigiama, laikrodyje šalia laiko rodyti ir datą."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Jei reikšmė teigiama ir formatas yra „12-hour“ ar „24-hour“, laikrodyje "
-"šalia laiko rodyti ir datą."
+msgid "If true, display seconds in time."
+msgstr "Jeigu reikšmė teigiama, rodyti laike sekundes."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Jei reikšmė teigiama ir formatas yra „12-hour“ ar „24-hour“, laikrodyje "
-"rodyti ir sekundes."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "If true, display the ISO week date in the calendar."
msgstr "Jeigu reikšmė teigiama, kalendoriuje rodyti ISO savaičių datą."
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid "Overview workspace view mode"
-msgstr "Apžvalginės darbo erdvės peržiūros veiksena"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -114,7 +90,9 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
"Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-"
"launch naudojama sintaksė. Konvejeryje turėtų būti neprijungtas apjungiantis "
@@ -123,22 +101,24 @@ msgstr ""
"Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali "
"būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar "
"pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, "
-"naudojamas numatytasis konvejeris. Šiuo metu tai yra „videorate ! theoraenc "
-"! oggmux“, o įrašoma į Ogg Theora."
+"naudojamas numatytasis konvejeris. Šiuo metu tai yra „videorate ! vp8enc "
+"quality=10 speed=2 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant "
+"VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus "
+"sistemoje spėjimui."
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "Rodyti datą laikrodyje"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "Rodyti savaitės dienas kalendoriuje"
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "Rodyti laiką su sekundėmis"
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@@ -146,7 +126,7 @@ msgstr ""
"Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų "
"srityje."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@@ -156,7 +136,7 @@ msgstr ""
"atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą "
"konteinerio formatą jį reikėtų pakeisti."
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -164,19 +144,11 @@ msgstr ""
"GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis "
"kadrais per sekundę."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"The selected workspace view mode in the overview. Supported values are "
-"\"single\" and \"grid\"."
-msgstr ""
-"Apžvalgoje pasirinkta darbo erdvės peržiūros veiksena. Galimos reikšmės yra "
-"„single“ ir „grid“."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -188,295 +160,980 @@ msgstr ""
"jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad "
"tai padarius jau įrašyti duomenys jau nebus įrašyti."
-#: ../data/org.gnome.shell.gschema.xml.in.h:24
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Šis raktas nurodo skydelio laikrodžio naudojamą formatą, kuomet formato "
-"raktas nustatytas į reikšmę „custom“. Norėdami gauti konkretų formatą, "
-"galite naudoti konvertavimo simbolius, kuriuos priima funkcija strftime(). "
-"Daugiau informacijos galite rasti strftime() žinyne."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Šis raktas nurodo skydelio laikrodžio naudojamą valandų formatą. Galimos "
-"reikšmės: „12-hour“, „24-hour“, „unix“ ir „custom“. Jei nustatyta „unix“, "
-"laikrodis rodys laiką sekundėmis nuo Epochos, tai yra 1970-01-01. Jei "
-"nustatyta „custom“, laikrodis rodys laiką atsižvelgiant į custom_format "
-"rakte nurodytą formatą. Atminkite, kad nustačius „unix“ arba „custom“ yra "
-"nepaisoma show_date ir show_seconds raktų."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:26
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "Išjungtinų plėtinių UUID."
-#: ../data/org.gnome.shell.gschema.xml.in.h:27
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Ar rinkti statistinę informaciją apie programų naudojimą"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Laikrodžio formatas"
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "išjungti OpenSearch tiekėjai"
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Laikrodžio nustatymai"
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Komanda nerasta"
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Skydelio ekranas"
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Nepavyko perskaityti komandos:"
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Rodyti seku_ndes"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Nepavyko paleisti „%s“:"
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Rodyti _datą"
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Visi"
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "_12 valandų formatas"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "_24 valandų formatas"
-
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:388 ../js/ui/dash.js:767
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "PROGRAMOS"
-#: ../js/ui/appDisplay.js:420
-msgid "PREFERENCES"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
msgstr "NUSTATYMAI"
-#: ../js/ui/appDisplay.js:726
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Naujas langas"
-#: ../js/ui/appDisplay.js:730
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
-#: ../js/ui/appDisplay.js:731
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų"
-#: ../js/ui/appDisplay.js:1038
-msgid "Drag here to add favorites"
-msgstr "Vilkite čia norėdami pridėti prie mėgstamų"
-
-#: ../js/ui/appFavorites.js:88
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s buvo pridėta prie jūsų mėgstamų."
-#: ../js/ui/appFavorites.js:106
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s buvo pašalinta iš jūsų mėgstamų."
-#: ../js/ui/dash.js:146
-msgid "Find"
-msgstr "Ieškoti"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Visa diena"
-#: ../js/ui/dash.js:465
-msgid "Searching..."
-msgstr "Ieškoma..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:479
-msgid "No matching results."
-msgstr "Nerasta atitikmenų."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%H:%M"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:786 ../js/ui/placeDisplay.js:552
-msgid "PLACES & DEVICES"
-msgstr "VIETOS ir ĮRENGINIAI"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "S"
-#. **** Documents ****
-#: ../js/ui/dash.js:793 ../js/ui/docDisplay.js:497
-msgid "RECENT ITEMS"
-msgstr "PASKUTINIEJI ELEMENTAI"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "P"
-#: ../js/ui/lookingGlass.js:471
-msgid "No extensions installed"
-msgstr "Nėra įdiegtų plėtinių"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "A"
-#: ../js/ui/lookingGlass.js:508
-msgid "Enabled"
-msgstr "Įjungta"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "T"
-#: ../js/ui/lookingGlass.js:510
-msgid "Disabled"
-msgstr "Išjungta"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "K"
-#: ../js/ui/lookingGlass.js:512
-msgid "Error"
-msgstr "Klaida"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "P"
-#: ../js/ui/lookingGlass.js:514
-msgid "Out of date"
-msgstr "Pasenęs"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "Š"
-#: ../js/ui/lookingGlass.js:539
-msgid "View Source"
-msgstr "Žiūrėti šaltinį"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Sk"
-#: ../js/ui/lookingGlass.js:545
-msgid "Web Page"
-msgstr "Tinklalapis"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Pr"
-#: ../js/ui/overview.js:165
-msgid "Undo"
-msgstr "Atšaukti"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "An"
-#: ../js/ui/panel.js:519
-msgid "Preferences"
-msgstr "Nustatymai"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Tr"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Kt"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Pn"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Št"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Niekas nesuplanuota"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %Y %B %d"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Šiandien"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Rytoj"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Šią savaitę"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Kitą savaitę"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+msgid "Remove"
+msgstr "Pašalinti"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Datos ir laiko nustatymai"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Atverti kalendorių"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:605
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
-#: ../js/ui/panel.js:606
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:610
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/panel.js:611
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:618
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
-#: ../js/ui/panel.js:619
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:623
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
-#: ../js/ui/panel.js:624
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A, %Y %B %d"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "PASKUTINIEJI ELEMENTAI"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Atjungti %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Atsijungti"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Spauskite „išeiti“, jei norite užverti šias programas ir atsijungti nuo "
+"sistemos."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s bus automatiškai atjungtas po %d sekundžių."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Jūs būsite automatiškai atjungtas po %d sekundžių."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Atsijungiama nuo sistemos."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Išjungti"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr ""
+"Spauskite „išjungti“, jei norite užverti šias programas ir išjungti sistemą."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Sistema automatiškai išsijungs po %d sekundžių."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Sistemos išjungimas."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Įkelti iš naujo"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Spauskite „įkelti iš naujo“, jei norite užverti šias programas ir įkelti "
+"sistemą iš naujo."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Sistema bus įkelta iš naujo po %d sekundžių."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Sistemos įkėlimas iš naujo"
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Patvirtinti"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Atšaukti"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Nėra įdiegtų plėtinių"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Įjungta"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Išjungta"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Klaida"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Pasenęs"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Žiūrėti šaltinį"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Tinklalapis"
+
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr "Atverti"
+
+#: ../js/ui/messageTray.js:1986
+msgid "System Information"
+msgstr "Sistemos informacija"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Atšaukti"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Langai"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Programos"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr ""
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Užverti %s"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:762
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Apžvalga"
-#: ../js/ui/placeDisplay.js:109
+#: ../js/ui/panel.js:975
+msgid "Panel"
+msgstr "Skydelis"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Nepavyko atjungti „%s“"
-#: ../js/ui/placeDisplay.js:112
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Bandyti dar kartą"
-#: ../js/ui/placeDisplay.js:157
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Prisijungti prie..."
-#: ../js/ui/runDialog.js:234
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "VIETOS ir ĮRENGINIAI"
+
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-us"
+
+#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
msgstr "Įveskite komandą:"
-#: ../js/ui/runDialog.js:379
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Nepavyko paleisti „%s“:"
+#: ../js/ui/searchDisplay.js:287
+msgid "Searching..."
+msgstr "Ieškoma..."
-#: ../js/ui/statusMenu.js:91
+#: ../js/ui/searchDisplay.js:301
+msgid "No matching results."
+msgstr "Nerasta atitikmenų."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+msgid "Power Off..."
+msgstr "Išjungti..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+msgid "Suspend"
+msgstr "Užmigdyti"
+
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Esu"
-#: ../js/ui/statusMenu.js:95
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Užsiėmęs (-usi)"
-#: ../js/ui/statusMenu.js:99
-msgid "Invisible"
-msgstr "Nematomas (-a)"
+#: ../js/ui/statusMenu.js:150
+msgid "My Account"
+msgstr "Mano paskyra"
-#: ../js/ui/statusMenu.js:106
-msgid "Account Information..."
-msgstr "Paskyros informacija..."
+#: ../js/ui/statusMenu.js:154
+msgid "System Settings"
+msgstr "Sistemos nustatymai"
-#: ../js/ui/statusMenu.js:110
-msgid "System Preferences..."
-msgstr "Sistemos nustatymai..."
-
-#: ../js/ui/statusMenu.js:117
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Užrakinti ekraną"
-#: ../js/ui/statusMenu.js:121
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Keisti naudotoją"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Atsijungti ..."
-#: ../js/ui/statusMenu.js:130
-msgid "Shut Down..."
-msgstr "Išjungti..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Mastelis"
-#: ../js/ui/windowAttentionHandler.js:47
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Vaizdo įspėjimai"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Lipnūs klavišai"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Lėti klavišai"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Pasikartojantys klavišai"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Palės klavišai"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Universalios prieigos nustatymai"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Didelis kontrastas"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Didelis tekstas"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Matomumas"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Siųsti failus į įrenginį..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Nustatyti naują įrenginį..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Bluetooth nustatymai"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Ryšys"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Siūsti failus..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Naršyti failus..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Klaida naršant įrenginį"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Pageidaujamas įrenginys negali būti naršomas, klaidos pranešimas „%s“"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Klaviatūros nustatymai"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Pelės nustatymai"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Garso nustatymai"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Autorizacijos užklausa iš %s"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Įrenginys %s nori prieiti prie tarnybos „%s“"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Visada leisti prieigą"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Leisti tik šį kartą"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Atmesti"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Suporavimo patvirtinimas įrenginiui %s"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Įrenginys %s nori susiporuoti su šiuo kompiuteriu"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Patvirkinkite kad PIN „%s“ sutampa su įrenginio PIN."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Sutampa"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Nesutampa"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Suporavimo užklausa %s"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Įveskite PIN, nurodytą įrenginyje."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "Gerai"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Rodyti klaviatūros išdėstymą..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Lokalizacijos nustatymai"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "išjungta"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "jungiamasi..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "reikia patvirtinti tapatybę"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabelis neįjungtas"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "nepasiekiamas"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "nepavyko prisijungti"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Prisijungta (privatus)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Automatinis vietinis"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Automatinis plačiajuostis"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Automatinis telefoninis"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Automatinis %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Automatinis bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Automatinis belaidis"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Daugiau..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Įjungti tinklą"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Laidinis"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Belaidis"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobilus plačiajuostis"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN ryšiai"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Tinklo nustatymai"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Dabar esate prisijungęs prie mobilaus plačiajuosčio ryšio „%s“"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Dabar esate prisijungęs prie belaidžio tinklo „%s“"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Dabar esate prisijungęs prie laidinio tinklo „%s“"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Dabar esate prisijungęs prie VPN tinklo „%s“"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Dabar esate prisijungęs prie „%s“"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Ryšys užmegstas"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Tinklas išjungtas"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Tinklo valdymas"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Energijos valdymo nustatymai"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Įvertinama..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "liko %d valanda"
+msgstr[1] "liko %d valandos"
+msgstr[2] "liko %d valandų"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "liko %d %s %d %s"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "valanda"
+msgstr[1] "valandos"
+msgstr[2] "valandų"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minutė"
+msgstr[1] "minutės"
+msgstr[2] "minučių"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "liko %d minutė"
+msgstr[1] "liko %d minutės"
+msgstr[2] "liko %d minučių"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "AC adapteris"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Nešiojamo kompiuterio baterija"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Monitorius"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Pelė"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Klaviatūra"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Mobilusis telefonas"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Daugialypės terpės grotuvas"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Planšetinis kompiuteris"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Kompiuteris"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
+msgid "Unknown"
+msgstr "Nežinoma"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Garsumas"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Mikrofonas"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s yra prisijungęs"
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s yra atsijungęs"
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s yra nepasiekiamas"
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s yra užsiėmęs."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Išsiųsta %A %H:%M:%S"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Ieškoti..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Ieškoti"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s buvo paleista"
-#: ../js/ui/windowAttentionHandler.js:49
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "„%s“ yra pasirengusi"
-#: ../js/ui/workspacesView.js:237
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Negalima pridėti naujos darbo erdvės, kadangi buvo pasiektas didžiausias "
-"galimas darbo erdvių skaičius."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u išvestis"
+msgstr[1] "%u išvestys"
+msgstr[2] "%u išvestys"
-#: ../js/ui/workspacesView.js:254
-msgid "Can't remove the first workspace."
-msgstr "Nepavyko pašalinti pirmosios darbo erdvės."
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u įvestis"
+msgstr[1] "%u įvestys"
+msgstr[2] "%u įvestys"
-#: ../src/shell-global.c:1039
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Sistemos garsai"
+
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Atspausdinti versiją"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Nepavyko paleisti „%s“"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Mažiau nei prieš minutę"
-#: ../src/shell-global.c:1043
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -484,7 +1141,7 @@ msgstr[0] "prieš %d minutę"
msgstr[1] "prieš %d minutes"
msgstr[2] "prieš %d minučių"
-#: ../src/shell-global.c:1048
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -492,7 +1149,7 @@ msgstr[0] "prieš %d valandą"
msgstr[1] "prieš %d valandas"
msgstr[2] "prieš %d valandų"
-#: ../src/shell-global.c:1053
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -500,7 +1157,7 @@ msgstr[0] "prieš %d dieną"
msgstr[1] "prieš %d dienas"
msgstr[2] "prieš %d dienų"
-#: ../src/shell-global.c:1058
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -508,26 +1165,139 @@ msgstr[0] "prieš %d savaitę"
msgstr[1] "prieš %d savaites"
msgstr[2] "prieš %d savaičių"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Jungtinė Karalystė"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Numatyta"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Namų aplankas"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Failų sistema"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Ieškoti"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+
+#~ msgid "Clock"
+#~ msgstr "Laikrodis"
+
+#~ msgid "Customize the panel clock"
+#~ msgstr "Derinti skydelio laikrodį"
+
+#~ msgid "Custom format of the clock"
+#~ msgstr "Pasirinktinis laikrodžio formatas"
+
+#~ msgid "Hour format"
+#~ msgstr "Valandų formatas"
+
+#~ msgid ""
+#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
+#~ "in time."
+#~ msgstr ""
+#~ "Jei reikšmė teigiama ir formatas yra „12-hour“ ar „24-hour“, laikrodyje "
+#~ "rodyti ir sekundes."
+
+#~ msgid "Overview workspace view mode"
+#~ msgstr "Apžvalginės darbo erdvės peržiūros veiksena"
+
+#~ msgid ""
+#~ "The selected workspace view mode in the overview. Supported values are "
+#~ "\"single\" and \"grid\"."
+#~ msgstr ""
+#~ "Apžvalgoje pasirinkta darbo erdvės peržiūros veiksena. Galimos reikšmės "
+#~ "yra „single“ ir „grid“."
+
+#~ msgid ""
+#~ "This key specifies the format used by the panel clock when the format key "
+#~ "is set to \"custom\". You can use conversion specifiers understood by "
+#~ "strftime() to obtain a specific format. See the strftime() manual for "
+#~ "more information."
+#~ msgstr ""
+#~ "Šis raktas nurodo skydelio laikrodžio naudojamą formatą, kuomet formato "
+#~ "raktas nustatytas į reikšmę „custom“. Norėdami gauti konkretų formatą, "
+#~ "galite naudoti konvertavimo simbolius, kuriuos priima funkcija strftime"
+#~ "(). Daugiau informacijos galite rasti strftime() žinyne."
+
+#~ msgid ""
+#~ "This key specifies the hour format used by the panel clock. Possible "
+#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
+#~ msgstr ""
+#~ "Šis raktas nurodo skydelio laikrodžio naudojamą valandų formatą. Galimos "
+#~ "reikšmės: „12-hour“, „24-hour“, „unix“ ir „custom“. Jei nustatyta „unix“, "
+#~ "laikrodis rodys laiką sekundėmis nuo Epochos, tai yra 1970-01-01. Jei "
+#~ "nustatyta „custom“, laikrodis rodys laiką atsižvelgiant į custom_format "
+#~ "rakte nurodytą formatą. Atminkite, kad nustačius „unix“ arba „custom“ yra "
+#~ "nepaisoma show_date ir show_seconds raktų."
+
+#~ msgid "Clock Format"
+#~ msgstr "Laikrodžio formatas"
+
+#~ msgid "Clock Preferences"
+#~ msgstr "Laikrodžio nustatymai"
+
+#~ msgid "Panel Display"
+#~ msgstr "Skydelio ekranas"
+
+#~ msgid "Show seco_nds"
+#~ msgstr "Rodyti seku_ndes"
+
+#~ msgid "Show the _date"
+#~ msgstr "Rodyti _datą"
+
+#~ msgid "_12 hour format"
+#~ msgstr "_12 valandų formatas"
+
+#~ msgid "_24 hour format"
+#~ msgstr "_24 valandų formatas"
+
+#~ msgid "PREFERENCES"
+#~ msgstr "NUSTATYMAI"
+
+#~ msgid "Drag here to add favorites"
+#~ msgstr "Vilkite čia norėdami pridėti prie mėgstamų"
+
+#~ msgid "Find"
+#~ msgstr "Ieškoti"
+
+#~ msgid "Preferences"
+#~ msgstr "Nustatymai"
+
+#~ msgid "Invisible"
+#~ msgstr "Nematomas (-a)"
+
+#~ msgid "System Preferences..."
+#~ msgstr "Sistemos nustatymai..."
+
+#~ msgid ""
+#~ "Can't add a new workspace because maximum workspaces limit has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Negalima pridėti naujos darbo erdvės, kadangi buvo pasiektas didžiausias "
+#~ "galimas darbo erdvių skaičius."
+
+#~ msgid "Can't remove the first workspace."
+#~ msgstr "Nepavyko pašalinti pirmosios darbo erdvės."
diff --git a/po/lv.po b/po/lv.po
new file mode 100644
index 000000000..75f5b0264
--- /dev/null
+++ b/po/lv.po
@@ -0,0 +1,1287 @@
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+#
+# Rudolfs , 2011.
+msgid ""
+msgstr ""
+"Project-Id-Version: \n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
+"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-17 15:03+0000\n"
+"PO-Revision-Date: 2011-03-17 19:08+0200\n"
+"Last-Translator: Rudolfs \n"
+"Language-Team: Latvian \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 != 0 ? 1 : "
+"2);\n"
+"X-Generator: Lokalize 1.1\n"
+
+#: ../data/gnome-shell.desktop.in.in.h:1
+msgid "GNOME Shell"
+msgstr "GNOME Shell"
+
+#: ../data/gnome-shell.desktop.in.in.h:2
+msgid "Window management and application launching"
+msgstr "Logu pārvaldība un lietotņu palaišana"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:1
+msgid ""
+"Allows access to internal debugging and monitoring tools using the Alt-F2 "
+"dialog."
+msgstr ""
+"Ļauj piekļūt iekšējiem atkļūdošanas un pārraudzības rīkiem, izmantojot "
+"Alt-F2 dialogu."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:2
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr ""
+"Aktivē iekšējos rīkus, kas pieejami no Alt-F2; noder izstrādātājiem un "
+"testētājiem"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
+msgid "File extension used for storing the screencast"
+msgstr "Failu paplašinājumi, ko izmanto ekrānraižu saglabāšanai"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
+msgid "Framerate used for recording screencasts."
+msgstr "Kadrātrums, ko izmantot, ierakstot ekrānraides."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
+msgid ""
+"GNOME Shell extensions have a uuid property; this key lists extensions which "
+"should not be loaded."
+msgstr ""
+"GNOME Shell paplašinājumiem ir uuid īpašības; šī atslēga uzskaita "
+"paplašinājumus, kurus nevajadzētu ielādēt."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "Komandu (Alt-F2) dialoga vēsture"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Looking glass dialoga vēsture"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Ja patiess, rādīt pulkstenī arī datumu, ne tikai laiku."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
+msgid "If true, display seconds in time."
+msgstr "Ja patiess, rādīt pulkstenī arī sekundes."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
+msgid "If true, display the ISO week date in the calendar."
+msgstr "Ja patiess, kalendārā rādīt ISO nedēļas datumus."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
+msgid "List of desktop file IDs for favorite applications"
+msgstr "Uzskaitīt iecienīto lietotņu darbvirsmas failu ID"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#, no-c-format
+msgid ""
+"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
+"used for gst-launch. The pipeline should have an unconnected sink pad where "
+"the recorded video is recorded. It will normally have a unconnected source "
+"pad; output from that pad will be written into the output file. However the "
+"pipeline can also take care of its own output - this might be used to send "
+"the output to an icecast server via shout2send or similar. When unset or set "
+"to an empty value, the default pipeline will be used. This is currently "
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
+msgstr ""
+"Iestata GStreamer konveijeru, ko izmanto ierakstu iekodēšanai. Tas seko "
+"sintaksei, ko izmanto gst-launch. Konveijeram vajadzētu būt nepievienotam "
+"datu savācējam, kur tiek ierakstītais video tiek ierakstīts. Tam parasti ir "
+"nepieveinots avota savācējs-sadalītājs; izvade no šī savācēja-sadalītāja "
+"tiks ierakstīta izvades failā. bet konveijers arī pats var tikt galā ar savu "
+"izvadi - to var izmantot, lai sūtītu izvadi uz icecast serveri caur "
+"shout2send vai ko līdzīgu. Kad iestata vai atstata tukšu vērtību, tiks "
+"izmantots noklusētais konveijers. Pašlaik tas ir 'videorate ! vp8enc "
+"quality=10 speed=2 threads=%T ! queue ! webmmux' un ieraksta WEBM izmantojot "
+"VP8 kodeku. %T tiek izmantots kā vietturis, lai uzminētu optimālo pavedienu "
+"skaitu sistēmā."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "Pie pulksteņa rādīt arī datumu"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
+msgid "Show the week date in the calendar"
+msgstr "Kalendārā rādīt nedēļas datumu"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
+msgid "Show time with seconds"
+msgstr "Rādīt laiku ar sekundēm"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
+msgid ""
+"The applications corresponding to these identifiers will be displayed in the "
+"favorites area."
+msgstr ""
+"Lietotnes, kas atbilst šiem identifikatoriem, tiks rādīta izlases laukā."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
+msgid ""
+"The filename for recorded screencasts will be a unique filename based on the "
+"current date, and use this extension. It should be changed when recording to "
+"a different container format."
+msgstr ""
+"Faila nosaukums ierakstītajai ekrānraidei būs unikāls, balstīts uz "
+"pašreizējo datumu un izmantos šo paplašinājumu. To vajadzētu mainīt, kad "
+"ieraksta citā konteinera formātā."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
+msgid ""
+"The framerate of the resulting screencast recordered by GNOME Shell's "
+"screencast recorder in frames-per-second."
+msgstr ""
+"Iegūtās ekrānraides kadrātrums, ko ieraksta GNOME Shell ekrānraižu "
+"ierakstītājs. Norāda kadros sekundē."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
+msgid "The gstreamer pipeline used to encode the screencast"
+msgstr "Gstreamer konveijers, ko izmanto ekrānraides iekodēšanai"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
+msgid ""
+"The shell normally monitors active applications in order to present the most "
+"used ones (e.g. in launchers). While this data will be kept private, you may "
+"want to disable this for privacy reasons. Please note that doing so won't "
+"remove already saved data."
+msgstr ""
+"Čaula parasti uzrauga aktīvās lietotnes, lai jums rādītu visbiežāk "
+"izmantotās (piemēram, palaidējos). Lai gan dati paliek privāti, jūs varētu "
+"vēlēties to deaktivēt privātuma iemeslu dēļ. Ņemiet vērā, ka to izdarot "
+"netiks izņemti jau saglabātie dati."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "Uuid paplašinājumiem, kurus deaktivēt"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr "Vai ievākt statistiku par lietotņu izmantošanu"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "deaktivētie OpenSearch piegādātāji"
+
+#: ../js/misc/util.js:71
+#: ../js/misc/util.js:86
+msgid "Command not found"
+msgstr "Komanda nav atrasta"
+
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+#: ../js/misc/util.js:113
+msgid "Could not parse command:"
+msgstr "Neizdevās apstrādāt komandu:"
+
+#: ../js/misc/util.js:106
+#: ../js/misc/util.js:148
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "'%s' izpilde neizdevās:"
+
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Visi"
+
+#: ../js/ui/appDisplay.js:324
+msgid "APPLICATIONS"
+msgstr "LIETOTNES"
+
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
+msgstr "IESTATĪJUMI"
+
+#: ../js/ui/appDisplay.js:612
+msgid "New Window"
+msgstr "Jauns logs"
+
+#: ../js/ui/appDisplay.js:615
+msgid "Remove from Favorites"
+msgstr "Izņemt no izlases"
+
+#: ../js/ui/appDisplay.js:616
+msgid "Add to Favorites"
+msgstr "Pievienot izlasei"
+
+#: ../js/ui/appFavorites.js:91
+#, c-format
+msgid "%s has been added to your favorites."
+msgstr "%s ir pievienots izlasei."
+
+#: ../js/ui/appFavorites.js:122
+#, c-format
+msgid "%s has been removed from your favorites."
+msgstr "%s ir izņemts no izlases."
+
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Visu dienu"
+
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
+
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
+
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "Sv"
+
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "P"
+
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "O"
+
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "T"
+
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "C"
+
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "P"
+
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
+
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Sv"
+
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Pr"
+
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Ot"
+
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Tr"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Ce"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Pk"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Se"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Nekas nav ieplānots"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %d %B"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %d %B, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Šodien"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Rīt"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Šonedēļ"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Nākamnedēļ"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+#: ../js/ui/messageTray.js:931
+msgid "Remove"
+msgstr "Izņemt"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Datuma un laika iestatījumi"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Atvērt kalendāru"
+
+#. Translators: This is the time format with date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:164
+msgid "%a %b %e, %R:%S"
+msgstr "%a %e %b, %R:%S"
+
+#: ../js/ui/dateMenu.js:165
+msgid "%a %b %e, %R"
+msgstr "%a %e %b, %R"
+
+#. Translators: This is the time format without date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:169
+msgid "%a %R:%S"
+msgstr "%a %R:%S"
+
+#: ../js/ui/dateMenu.js:170
+msgid "%a %R"
+msgstr "%a %R"
+
+#. Translators: This is a time format with date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:177
+msgid "%a %b %e, %l:%M:%S %p"
+msgstr "%a %e %b, %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:178
+msgid "%a %b %e, %l:%M %p"
+msgstr "%a %e %b, %l:%M %p"
+
+#. Translators: This is a time format without date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:182
+msgid "%a %l:%M:%S %p"
+msgstr "%a %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:183
+msgid "%a %l:%M %p"
+msgstr "%a %l:%M %p"
+
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+#: ../js/ui/dateMenu.js:209
+msgid "%A %B %e, %Y"
+msgstr "%A %e %B, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "NESENIE VIENUMI"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Izrakstīt %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Izrakstīties"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Spiediet 'Izrakstīties', lai izietu no šīm lietotnēm un izrakstītos no "
+"sistēmas."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s tiks automātiski izrakstīts no sesijas pēc %d sekundēm."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Jūs tiksiet automātiski izrakstīts no sesijas pēc %d sekundēm."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Izrakstās no sistēmas."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Izslēgt"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Spiediet 'Izslēgt', lai izietu no šīm lietotnēm un izslēgtu sistēmu."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Sistēma tiks izslēgta automātiski pēc %d sekundēm."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Izslēdz sistēmu."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Pārstartēt"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Spiediet 'Pārstartēt', lai izietu no šīm lietotnēm un pārstartētu sistēmu."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Sistēma tiks pārstartēta automātiski pēc %d sekundēm."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Pārstartē sistēmu."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Apstiprināt"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:465
+#: ../js/ui/status/bluetooth.js:470
+msgid "Cancel"
+msgstr "Atcelt"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Nav instalētu paplašinājumu"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Aktivēts"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+#: ../src/gvc/gvc-mixer-control.c:1087
+msgid "Disabled"
+msgstr "Deaktivēts"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Kļūda"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Nav aktuāls"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Skatīt avotu"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Tīmekļa lapa"
+
+#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:924
+msgid "Open"
+msgstr "Atvērt"
+
+#: ../js/ui/messageTray.js:1986
+#: ../js/ui/messageTray.js:1961
+msgid "System Information"
+msgstr "Sistēmas informācija"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Atsaukt"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Logs"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Lietotnes"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr "Panelis"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:514
+#: ../js/ui/panel.js:560
+#, c-format
+msgid "Quit %s"
+msgstr "Iziet no %s"
+
+#. Button on the left side of the panel.
+#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
+#: ../js/ui/panel.js:873
+#: ../js/ui/panel.js:919
+msgid "Activities"
+msgstr "Darbības"
+
+#: ../js/ui/panel.js:974
+#: ../js/ui/panel.js:1020
+msgid "Panel"
+msgstr "Panelis"
+
+#: ../js/ui/placeDisplay.js:122
+#, c-format
+msgid "Failed to unmount '%s'"
+msgstr "Neizdevās atmontēt '%s'"
+
+#: ../js/ui/placeDisplay.js:125
+msgid "Retry"
+msgstr "Mēģināt vēlreiz"
+
+#: ../js/ui/placeDisplay.js:165
+msgid "Connect to..."
+msgstr "Savienoties ar..."
+
+#: ../js/ui/placeDisplay.js:380
+#: ../js/ui/placeDisplay.js:409
+msgid "PLACES & DEVICES"
+msgstr "VIETAS un IERĪCES"
+
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+#: ../js/ui/popupMenu.js:618
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
+
+#: ../js/ui/runDialog.js:201
+msgid "Please enter a command:"
+msgstr "Lūdzu, ievadiet komandu:"
+
+#: ../js/ui/searchDisplay.js:283
+msgid "Searching..."
+msgstr "Meklē..."
+
+#: ../js/ui/searchDisplay.js:297
+msgid "No matching results."
+msgstr "Nav rezultātu."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+#: ../js/ui/statusMenu.js:113
+#: ../js/ui/statusMenu.js:177
+msgid "Power Off..."
+msgstr "Izslēgt..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:113
+#: ../js/ui/statusMenu.js:115
+#: ../js/ui/statusMenu.js:176
+msgid "Suspend"
+msgstr "Iesnaudināt"
+
+#: ../js/ui/statusMenu.js:137
+#: ../js/ui/statusMenu.js:136
+msgid "Available"
+msgstr "Pieejams"
+
+#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:141
+msgid "Busy"
+msgstr "Aizņemts"
+
+#: ../js/ui/statusMenu.js:150
+#: ../js/ui/statusMenu.js:149
+msgid "My Account"
+msgstr "Mans konts"
+
+#: ../js/ui/statusMenu.js:154
+#: ../js/ui/statusMenu.js:153
+msgid "System Settings"
+msgstr "Sistēmas iestatījumi"
+
+#: ../js/ui/statusMenu.js:161
+#: ../js/ui/statusMenu.js:160
+msgid "Lock Screen"
+msgstr "Bloķēt ekrānu"
+
+#: ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:164
+msgid "Switch User"
+msgstr "Mainīt lietotāju"
+
+#: ../js/ui/statusMenu.js:170
+#: ../js/ui/statusMenu.js:169
+msgid "Log Out..."
+msgstr "Izrakstīties..."
+
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Mainīt tālumu"
+
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Vizuālie brīdinājumi"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Lipīgie taustiņi"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Lēnie taustiņi"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Atlecošie taustiņi"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Peles taustiņi"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Universālās piekļuves iestatījumi"
+
+#: ../js/ui/status/accessibility.js:146
+#: ../js/ui/status/accessibility.js:145
+msgid "High Contrast"
+msgstr "Augsts kontrasts"
+
+#: ../js/ui/status/accessibility.js:183
+#: ../js/ui/status/accessibility.js:182
+msgid "Large Text"
+msgstr "Liels teksts"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:236
+#: ../js/ui/status/bluetooth.js:332 ../js/ui/status/bluetooth.js:366
+#: ../js/ui/status/bluetooth.js:406 ../js/ui/status/bluetooth.js:439
+#: ../js/ui/status/bluetooth.js:241
+#: ../js/ui/status/bluetooth.js:337
+#: ../js/ui/status/bluetooth.js:371
+#: ../js/ui/status/bluetooth.js:411
+#: ../js/ui/status/bluetooth.js:444
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Redzamība"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Sūtīt failus uz ierīci..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Iestatīt jaunu ierīci..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Bluetooth iestatījumi"
+
+#: ../js/ui/status/bluetooth.js:187
+#: ../js/ui/status/bluetooth.js:192
+msgid "Connection"
+msgstr "Savienojums"
+
+#: ../js/ui/status/bluetooth.js:223
+msgid "Send Files..."
+msgstr "Sūtīt failus..."
+
+#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:233
+msgid "Browse Files..."
+msgstr "Pārlūkot failus..."
+
+#: ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:242
+msgid "Error browsing device"
+msgstr "Kļūda, pārlūkojot ierīci"
+
+#: ../js/ui/status/bluetooth.js:238
+#: ../js/ui/status/bluetooth.js:243
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Nevar pārlūkot pieprasīto ierīci, kļūda ir '%s'"
+
+#: ../js/ui/status/bluetooth.js:246
+msgid "Keyboard Settings"
+msgstr "Tastatūras iestatījumi"
+
+#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:256
+msgid "Mouse Settings"
+msgstr "Peles iestatījumi"
+
+#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/volume.js:66
+#: ../js/ui/status/bluetooth.js:263
+#: ../js/ui/status/volume.js:65
+msgid "Sound Settings"
+msgstr "Skaņas iestatījumi"
+
+#: ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:372
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Autorizācijas pieprasījums no %s"
+
+#: ../js/ui/status/bluetooth.js:373
+#: ../js/ui/status/bluetooth.js:378
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Ierīce %s prasa pieeju '%s' servisam"
+
+#: ../js/ui/status/bluetooth.js:375
+#: ../js/ui/status/bluetooth.js:380
+msgid "Always grant access"
+msgstr "Vienmēr piešķirt pieeju"
+
+#: ../js/ui/status/bluetooth.js:376
+#: ../js/ui/status/bluetooth.js:381
+msgid "Grant this time only"
+msgstr "Piešķirt tikai šoreiz"
+
+#: ../js/ui/status/bluetooth.js:377
+#: ../js/ui/status/bluetooth.js:382
+msgid "Reject"
+msgstr "Noraidīt"
+
+#: ../js/ui/status/bluetooth.js:407
+#: ../js/ui/status/bluetooth.js:412
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "%s pārošanas apstiprinājums"
+
+#: ../js/ui/status/bluetooth.js:413 ../js/ui/status/bluetooth.js:447
+#: ../js/ui/status/bluetooth.js:418
+#: ../js/ui/status/bluetooth.js:452
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Ierīce %s prasa sapārošanu ar šo datoru"
+
+#: ../js/ui/status/bluetooth.js:414
+#: ../js/ui/status/bluetooth.js:419
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Lūdzu, pārliecinieties, vai PIN '%s' sakrīt ar ierīces doto."
+
+#: ../js/ui/status/bluetooth.js:416
+#: ../js/ui/status/bluetooth.js:421
+msgid "Matches"
+msgstr "Sakrīt"
+
+#: ../js/ui/status/bluetooth.js:417
+#: ../js/ui/status/bluetooth.js:422
+msgid "Does not match"
+msgstr "Nesakrīt"
+
+#: ../js/ui/status/bluetooth.js:440
+#: ../js/ui/status/bluetooth.js:445
+#, c-format
+msgid "Pairing request for %s"
+msgstr "%s pārošanas pieprasījums"
+
+#: ../js/ui/status/bluetooth.js:448
+#: ../js/ui/status/bluetooth.js:453
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Lūdzu, ievadiet PIN ierīcei."
+
+#: ../js/ui/status/bluetooth.js:464
+#: ../js/ui/status/bluetooth.js:469
+msgid "OK"
+msgstr "Labi"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Rādīt tastatūras izkārtojumu..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Lokalizācijas iestatījumi"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "deaktivēts"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "savienojas..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "nepieciešama autentifikācija"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "vads atvienots"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "nav pieejams"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "savienojums neizdevās"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Savienots (privāts)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Auto Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Auto platjosla"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Auto iezvanlīnija"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Auto %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Auto bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Auto bezvadu"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Vairāk..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Aktivē tīklošanu"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Vadu"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Bezvadu"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobilā platjosla"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN savienojumi"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Tīkla iestatījumi"
+
+#: ../js/ui/status/network.js:1782
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Jūs esat savienojies ar mobilo platjoslas savienojumu '%s'"
+
+#: ../js/ui/status/network.js:1786
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Jūs esat savienojies ar bezvadu tīklu '%s'"
+
+#: ../js/ui/status/network.js:1790
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Jūs esat savienojies ar vadu tīklu '%s'"
+
+#: ../js/ui/status/network.js:1794
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Jūs esat savienojies ar VPN tīklu '%s'"
+
+#: ../js/ui/status/network.js:1799
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Jūs esat savienojies ar '%s'"
+
+#: ../js/ui/status/network.js:1807
+msgid "Connection estabilished"
+msgstr "Savienojums izveidots"
+
+#: ../js/ui/status/network.js:1929
+msgid "Networking is disabled"
+msgstr "Tīklošana ir deaktivēta"
+
+#: ../js/ui/status/network.js:2054
+msgid "Network Manager"
+msgstr "Tīkla pārvaldnieks"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Barošanas iestatījumi"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+#: ../js/ui/status/power.js:110
+msgid "Estimating..."
+msgstr "Novērtē..."
+
+#: ../js/ui/status/power.js:118
+#: ../js/ui/status/power.js:117
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "atlikusi %d stunda"
+msgstr[1] "atlikušas %d stundas"
+msgstr[2] "atlikušas %d stundas"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#: ../js/ui/status/power.js:120
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "atlikušas %d %s %d %s"
+
+#: ../js/ui/status/power.js:123
+#: ../js/ui/status/power.js:122
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "stunda"
+msgstr[1] "stundas"
+msgstr[2] "stundu"
+
+#: ../js/ui/status/power.js:123
+#: ../js/ui/status/power.js:122
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minūte"
+msgstr[1] "minūtes"
+msgstr[2] "minūšu"
+
+#: ../js/ui/status/power.js:126
+#: ../js/ui/status/power.js:125
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "atlikusi %d minūte"
+msgstr[1] "atlikušas %d minūtes"
+msgstr[2] "atlikušas %d minūtes"
+
+#: ../js/ui/status/power.js:228
+#: ../js/ui/status/power.js:227
+msgid "AC adapter"
+msgstr "Strāvas adapteris"
+
+#: ../js/ui/status/power.js:230
+#: ../js/ui/status/power.js:229
+msgid "Laptop battery"
+msgstr "Klēpjdatora baterija"
+
+#: ../js/ui/status/power.js:232
+#: ../js/ui/status/power.js:231
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+#: ../js/ui/status/power.js:233
+msgid "Monitor"
+msgstr "Monitors"
+
+#: ../js/ui/status/power.js:236
+#: ../js/ui/status/power.js:235
+msgid "Mouse"
+msgstr "Pele"
+
+#: ../js/ui/status/power.js:238
+#: ../js/ui/status/power.js:237
+msgid "Keyboard"
+msgstr "Tastatūra"
+
+#: ../js/ui/status/power.js:240
+#: ../js/ui/status/power.js:239
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+#: ../js/ui/status/power.js:241
+msgid "Cell phone"
+msgstr "Mobilais tālrunis"
+
+#: ../js/ui/status/power.js:244
+#: ../js/ui/status/power.js:243
+msgid "Media player"
+msgstr "Mediju atskaņotājs"
+
+#: ../js/ui/status/power.js:246
+#: ../js/ui/status/power.js:245
+msgid "Tablet"
+msgstr "Planšete"
+
+#: ../js/ui/status/power.js:248
+#: ../js/ui/status/power.js:247
+msgid "Computer"
+msgstr "Dators"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
+#: ../js/ui/status/power.js:249
+#: ../src/shell-app-system.c:1013
+msgid "Unknown"
+msgstr "Nezināms"
+
+#: ../js/ui/status/volume.js:45
+#: ../js/ui/status/volume.js:44
+msgid "Volume"
+msgstr "Sējums"
+
+#: ../js/ui/status/volume.js:58
+#: ../js/ui/status/volume.js:57
+msgid "Microphone"
+msgstr "Mikrofons"
+
+#: ../js/ui/telepathyClient.js:332
+#: ../js/ui/telepathyClient.js:239
+#, c-format
+msgid "%s is online."
+msgstr "%s ir tiešsaistē."
+
+#: ../js/ui/telepathyClient.js:337
+#: ../js/ui/telepathyClient.js:244
+#, c-format
+msgid "%s is offline."
+msgstr "%s ir nesaistē."
+
+#: ../js/ui/telepathyClient.js:340
+#: ../js/ui/telepathyClient.js:247
+#, c-format
+msgid "%s is away."
+msgstr "%s\" ir prom."
+
+#: ../js/ui/telepathyClient.js:343
+#: ../js/ui/telepathyClient.js:250
+#, c-format
+msgid "%s is busy."
+msgstr "%s\" ir aizņemts."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#: ../js/ui/telepathyClient.js:357
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Sūtīts %X %A"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:119
+#: ../js/ui/viewSelector.js:117
+msgid "Type to search..."
+msgstr "Ierakstiet, lai meklētu..."
+
+#: ../js/ui/viewSelector.js:139 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:137
+msgid "Search"
+msgstr "Meklēt"
+
+#: ../js/ui/windowAttentionHandler.js:42
+#, c-format
+msgid "%s has finished starting"
+msgstr "%s ir beidzis startēties"
+
+#: ../js/ui/windowAttentionHandler.js:44
+#, c-format
+msgid "'%s' is ready"
+msgstr "'%s' ir gatavs"
+
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#: ../src/gvc/gvc-mixer-control.c:1094
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u izvadkanāls"
+msgstr[1] "%u izvadkanāli"
+msgstr[2] "%u izvadkanāli"
+
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#: ../src/gvc/gvc-mixer-control.c:1104
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u ievadkanāls"
+msgstr[1] "%u ievadkanāli"
+msgstr[2] "%u ievadkanāli"
+
+#: ../src/gvc/gvc-mixer-control.c:1406
+#: ../src/gvc/gvc-mixer-control.c:1402
+msgid "System Sounds"
+msgstr "Sistēmas skaņas"
+
+#: ../src/main.c:397
+#: ../src/main.c:395
+msgid "Print version"
+msgstr "Drukāt versiju"
+
+#: ../src/shell-app.c:442
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Neizdevās palaist '%s'"
+
+#: ../src/shell-global.c:1340
+#: ../src/shell-global.c:1308
+msgid "Less than a minute ago"
+msgstr "Mazāk kā pirms minūtes"
+
+#: ../src/shell-global.c:1344
+#: ../src/shell-global.c:1312
+#, c-format
+msgid "%d minute ago"
+msgid_plural "%d minutes ago"
+msgstr[0] "Pirms %d minūtes"
+msgstr[1] "Pirms %d minūtēm"
+msgstr[2] "Pirms %d minūtēm"
+
+#: ../src/shell-global.c:1349
+#: ../src/shell-global.c:1317
+#, c-format
+msgid "%d hour ago"
+msgid_plural "%d hours ago"
+msgstr[0] "Pirms %d stundas"
+msgstr[1] "Pirms %d stundām"
+msgstr[2] "Pirms %d stundām"
+
+#: ../src/shell-global.c:1354
+#: ../src/shell-global.c:1322
+#, c-format
+msgid "%d day ago"
+msgid_plural "%d days ago"
+msgstr[0] "Pirms %d dienas"
+msgstr[1] "Pirms %d dienām"
+msgstr[2] "Pirms %d dienām"
+
+#: ../src/shell-global.c:1359
+#: ../src/shell-global.c:1327
+#, c-format
+msgid "%d week ago"
+msgid_plural "%d weeks ago"
+msgstr[0] "Pirms %d nedēļas"
+msgstr[1] "Pirms %d nedēļām"
+msgstr[2] "Pirms %d nedēļām"
+
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Apvienotās Karaliste"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Noklusētais"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu"
+
+#: ../src/shell-util.c:89
+msgid "Home Folder"
+msgstr "Mājas mape"
+
+#. Translators: this is the same string as the one found in
+#. * nautilus
+#: ../src/shell-util.c:104
+msgid "File System"
+msgstr "Failu sistēma"
+
+#. Translators: the first string is the name of a gvfs
+#. * method, and the second string is a path. For
+#. * example, "Trash: some-directory". It means that the
+#. * directory called "some-directory" is in the trash.
+#.
+#: ../src/shell-util.c:300
+#, c-format
+msgid "%1$s: %2$s"
+msgstr "%1$s: %2$s"
+
diff --git a/po/nb.po b/po/nb.po
index 6b4725551..387f1ead5 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -4,12 +4,13 @@
#
# Kjartan Maraas , 2009-2011.
# Torstein Adolf Winterseth , 2010.
+#: ../js/ui/polkitAuthenticationAgent.js:142
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 2.91.x\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-08 15:24+0100\n"
-"PO-Revision-Date: 2011-03-08 15:29+0100\n"
+"POT-Creation-Date: 2011-03-23 21:46+0100\n"
+"PO-Revision-Date: 2011-03-23 21:47+0100\n"
"Last-Translator: Kjartan Maraas \n"
"Language-Team: Norwegian Bokmål \n"
"Language: \n"
@@ -145,49 +146,45 @@ msgstr "Om det skal samles statistikk om bruk av programmer"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "disabled OpenSearch providers"
-msgstr ""
+msgstr "OpenSearch tilbydere slått av"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Kommando ikke funnet"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Klarte ikke å lese kommando:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Programmet finnes ikke"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Kjøring av «%s» feilet:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Alle"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "PROGRAMMER"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "INNSTILLINGER"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Nytt vindu"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Legg til i favoritter"
@@ -347,7 +344,7 @@ msgstr "Denne uken"
msgid "Next week"
msgstr "Neste uke"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Fjern"
@@ -402,7 +399,7 @@ msgstr "%a %l.%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%a %e %B, %Y"
@@ -415,7 +412,7 @@ msgstr "SISTE OPPFØRINGER"
msgid "Log Out %s"
msgstr "Logg ut %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Logg ut"
@@ -438,47 +435,46 @@ msgstr "Du vil bli logget ut automatisk om %d sekunder."
msgid "Logging out of the system."
msgstr "Logger ut av systemet"
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
-msgstr "Avslutt"
-
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "Klikk Avslutt for å avslutte disse programmene og stenge ned systemet."
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Slå av"
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "Systemet vil slås av automatisk om %d sekunder."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr ""
+"Klikk «Slå av» for å avslutte disse programmene og logge ut av systemet."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Systemet vil slås av automatisk om %d sekunder."
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
msgstr "Slår av systemet."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Start på nytt"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Klikk Start på nytt for å avslutte disse programmene og starte systemet på "
"nytt."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "Systemet vil starte på nytt automatisk om %d sekunder."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Starter systemet på nytt."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Bekreft"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Avbryt"
@@ -492,7 +488,7 @@ msgstr "Aktivert"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Deaktivert"
@@ -512,47 +508,47 @@ msgstr "Vis kildekode"
msgid "Web Page"
msgstr "Nettside"
-#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "Åpne"
-#: ../js/ui/messageTray.js:1963
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Systeminformasjon"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Angre"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Vinduer"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Programmer"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "Favoritter"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:532
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Avslutt %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:893
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Aktiviteter"
-#: ../js/ui/panel.js:994
-msgid "Panel"
-msgstr "Panel"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Topp-panel"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -567,64 +563,84 @@ msgstr "Prøv igjen"
msgid "Connect to..."
msgstr "Koble til …"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "STEDER & ENHETER"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Autentisering kreves"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administrator"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Autentiser"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Beklager, det virket ikke. Vennligst prøv igjen."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Passord:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Oppgi en kommando:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Søker …"
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Ingen treff."
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "Slå av …"
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "Hvilemodus"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Tilgjengelig"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Opptatt"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Min konto"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Systeminnstillinger"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Lås skjerm"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Bytt bruker"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Logg ut …"
@@ -632,14 +648,12 @@ msgstr "Logg ut …"
msgid "Zoom"
msgstr "Zoom"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Skjermleser"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Tastatur på skjermen"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Synlig varsling"
@@ -664,17 +678,17 @@ msgstr "Mustaster"
msgid "Universal Access Settings"
msgstr "Innstillinger for tilgjengelighet"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Høy kontrast"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Stor tekst"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -694,94 +708,94 @@ msgstr "Sett opp en ny enhet …"
msgid "Bluetooth Settings"
msgstr "Innstillinger for Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Tilkobling"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Send filer …"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Bla gjennom filer …"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Feil under lesing av enhet"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Kan ikke bla gjennom forespurt enhet. Feilen er «%s»"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Innstillinger for tastatur"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Innstillinger for mus"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Innstillinger for lyd"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Forespørsel om autorisering fra %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Enhet %s vil ha tilgang til tjenesten «%s»"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Alltid gi tilgang"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Gi tilgang kun denne ene gangen"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Avvis"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Bekreftelse for tilkobling for %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Enhet %s vil koble seg sammen med denne datamaskinen"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Vennligst bekreft om PIN «%s» er lik den som brukes på enheten."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Stemmer overens"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Stemmer ikke overens"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Forespørsel om tilkobling for %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Vennligst oppgi PIN som oppgitt på enheten."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -793,17 +807,147 @@ msgstr "Vis tastaturutforming …"
msgid "Localization Settings"
msgstr "Innstillinger for lokalisering"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "slått av"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "kobler til …"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "autentisering kreves"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabel koblet fra"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "ikke tilgjengelig"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "tilkobling feilet"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Tilkoblet (privat)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Automatisk Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Automatisk bredbånd"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Automatisk oppringt"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Automatisk %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Automatisk Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Automatisk trådløst"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Mer …"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Slå på nettverk"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Kablet"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Trådløst"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobilt bredbånd"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN-tilkoblinger"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Innstillinger for nettverk"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Du er nå koblet til mobil bredbåndstilkobling «%s»"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Du er nå koblet til trådløst nettverk «%s»"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Du er nå koblet til kablet nettverk «%s»"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Du er nå koblet til virtuelt privat nettverk «%s»"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Du er nå koblet til «%s»"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Tilkobling etablert"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Nettverk er slått av"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Nettverkshåndtering"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Innstillinger for strøm"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Estimerer …"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -811,102 +955,102 @@ msgstr[0] "%d time gjenstår"
msgstr[1] "%d timer gjenstår"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s gjenstår"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "time"
msgstr[1] "timer"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minutt"
msgstr[1] "minutter"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minutt gjenstår"
msgstr[1] "%d minutter gjenstår"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Strømadapter"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Batteri på bærbar"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Skjerm"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Mus"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Tastatur"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Mobiltelefon"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Medieavspiller"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Nettbrett"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Datamaskin"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Ukjent"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volum"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Mikrofon"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s er tilkoblet."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s er frakoblet."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "«%s» er borte."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s er opptatt."
@@ -914,7 +1058,7 @@ msgstr "%s er opptatt."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Sendt %X på %A"
@@ -923,11 +1067,11 @@ msgstr "Sendt %X på %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Skriv for å søke …"
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "Søk"
@@ -943,7 +1087,7 @@ msgstr "«%s» er klar"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -952,53 +1096,66 @@ msgstr[1] "%u utganger"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u inngang"
msgstr[1] "%u innganger"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Systemlyder"
-#: ../src/main.c:395
+#: ../src/main.c:438
msgid "Print version"
msgstr "Skriv ut versjon"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Klarte ikke å starte «%s»"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Mindre enn ett minutt siden"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minutt siden"
msgstr[1] "%d minutter siden"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d time siden"
msgstr[1] "%d timer siden"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d dag siden"
msgstr[1] "%d dager siden"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d uke siden"
msgstr[1] "%d uker siden"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr ""
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Forvalg"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen ble lukket av brukeren"
diff --git a/po/nl.po b/po/nl.po
index 9c12280cd..7a981dc52 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6,12 +6,15 @@
# Reinout van Schouwen , 2010
# Wouter Bolsterlee , 2011
#
+# Aangezien dit een erg zichtbare module is graag eerst contact opnemen met
+# Wouter Bolsterlee alvorens zaken te wijzigen!
+#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-12 23:52+0100\n"
-"PO-Revision-Date: 2011-03-12 23:52+0100\n"
+"POT-Creation-Date: 2011-03-19 01:15+0100\n"
+"PO-Revision-Date: 2011-03-19 01:14+0100\n"
"Last-Translator: Wouter Bolsterlee \n"
"Language-Team: Dutch \n"
"Language: nl\n"
@@ -44,11 +47,11 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
-msgstr "Bestandsextensie voor het opslaan van de screencast"
+msgstr "Bestandsextensie voor het opslaan van de schermopname"
#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
-msgstr "Framerate voor het opnemen van de screencasts."
+msgstr "Framerate voor het opnemen van de schermopnamen."
#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
@@ -149,7 +152,7 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr "De gstreamer-pijplijn voor het coderen van de screencast"
+msgstr "De gstreamer-pijplijn voor het coderen van de schermopname"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
@@ -175,21 +178,17 @@ msgstr "Of statistieken worden bijgehouden over gebruik van toepassingen"
msgid "disabled OpenSearch providers"
msgstr "uitgeschakelde OpenSearch-providers"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Opdracht niet gevonden"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Kon opdracht niet parsen:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Toepassing niet gevonden"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Uitvoeren van ‘%s’ mislukt:"
@@ -375,13 +374,13 @@ msgstr "Deze week"
msgid "Next week"
msgstr "Volgende week"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "Verwijderen"
#: ../js/ui/dateMenu.js:91
msgid "Date and Time Settings"
-msgstr "Datum- en tijdinstellingen"
+msgstr "Instellingen voor datum en tijd"
#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
@@ -427,13 +426,12 @@ msgstr "%a %l:%M:%S %p"
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
-# Dagnaam bewust afgekort (Wouter Bolsterlee)
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
-msgstr "%a %e %B %Y"
+msgstr "%A %e %B %Y"
#: ../js/ui/docDisplay.js:19
msgid "RECENT ITEMS"
@@ -509,7 +507,7 @@ msgstr "Computer opnieuw opstarten"
msgid "Confirm"
msgstr "Bevestigen"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Annuleren"
@@ -543,11 +541,11 @@ msgstr "Broncode weergeven"
msgid "Web Page"
msgstr "Webpagina"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:926
msgid "Open"
msgstr "Openen"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:1986
msgid "System Information"
msgstr "Systeeminformatie"
@@ -571,18 +569,18 @@ msgid "Dash"
msgstr "Zijbalk"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "%s afsluiten"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Activiteiten"
-#: ../js/ui/panel.js:1020
+#: ../js/ui/panel.js:975
msgid "Panel"
msgstr "Paneel"
@@ -599,7 +597,7 @@ msgstr "Opnieuw"
msgid "Connect to..."
msgstr "Verbinding maken met…"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "LOCATIES & APPARATEN"
@@ -608,7 +606,7 @@ msgstr "LOCATIES & APPARATEN"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -624,39 +622,39 @@ msgstr "Zoeken…"
msgid "No matching results."
msgstr "Geen overeenkomende resultaten."
-#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
msgid "Power Off..."
msgstr "Uitschakelen…"
-#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
msgid "Suspend"
msgstr "Slaapstand"
-#: ../js/ui/statusMenu.js:136
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Beschikbaar"
-#: ../js/ui/statusMenu.js:141
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Bezig"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:150
msgid "My Account"
msgstr "Mijn account"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:154
msgid "System Settings"
msgstr "Systeeminstellingen"
-#: ../js/ui/statusMenu.js:160
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Scherm vergrendelen"
-#: ../js/ui/statusMenu.js:164
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Gebruiker wisselen"
-#: ../js/ui/statusMenu.js:169
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Afmelden…"
@@ -664,14 +662,12 @@ msgstr "Afmelden…"
msgid "Zoom"
msgstr "Zoomen"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Schermlezer"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Schermtoetsenbord"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Visuele alerteringen"
@@ -696,17 +692,17 @@ msgstr "Muistoetsen"
msgid "Universal Access Settings"
msgstr "Instellingen voor toegankelijkheid"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Hoog contrast"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Grote tekst"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -726,94 +722,94 @@ msgstr "Nieuw apparaat instellen…"
msgid "Bluetooth Settings"
msgstr "Bluetooth-instellingen"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Verbinding"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Bestanden sturen…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Bestanden doorbladeren…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Fout bij doorbladeren van apparaat"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Het gekozen apparaat kon niet doorgebladerd worden. De fout is ‘%s’"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Toetsenbordvoorkeuren"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Muisvoorkeuren"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:66
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Geluidsvoorkeuren"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Autorisatie-aanvraag van %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Het apparaat ‘%s’ wil toegang tot de dienst ‘%s’"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Altijd toestaan"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Eenmalig toestaan"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Afwijzen"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Koppelbevestiging voor %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Het apparaat ‘%s’ wil aankoppelen met deze computer"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Bevestig dat de PIN-code ‘%s’ hetzelfde is als die van het apparaat."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Komt overeen"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Komt niet overeen"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Verzoek tot koppelen met %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Geef de op het apparaat aangegeven PIN-code."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -825,17 +821,149 @@ msgstr "Toetsenbordindeling tonen…"
msgid "Localization Settings"
msgstr "Regionale instellingen"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "uitgeschakeld"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "verbinden…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "authenticatie nodig"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabel niet verbonden"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "niet beschikbaar"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "verbinding mislukt"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Verbonden (persoonlijke verbinding)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Automatisch ethernetverbinding"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Automatische breedbandverbinding"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Automatisch inbellen"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s (automatisch)"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Automatische Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Automatisch draadloos netwerk"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Meer…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Netwerk inschakelen"
+
+# Expliciet "netwerk" toegevoegd (Wouter Bolsterlee)
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Bekabeld netwerk"
+
+# Expliciet "netwerk" toegevoegd (Wouter Bolsterlee)
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Draadloos netwerk"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobiel breedband"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN-verbindingen"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Netwerkinstellingen"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "U bent nu verbonden met de mobiele breedbandverbinding ‘%s’"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "U bent nu verbonden met het draadloze netwerk ‘%s’"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "U bent nu verbonden met het bekabelde netwerk ‘%s’"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "U bent nu verbonden met het VPN-netwerk ‘%s’"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "U bent nu verbonden met ‘%s’"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Verbinding gemaakt"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Netwerk is uitgeschakeld"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Netwerk-manager"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Energievoorkeuren"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Schatten…"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -843,75 +971,75 @@ msgstr[0] "%d uur resterend"
msgstr[1] "%d uur resterend"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s resterend"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "uur"
msgstr[1] "uur"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuut"
msgstr[1] "minuten"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minuut resterend"
msgstr[1] "%d minuten resterend"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Netstroom"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Laptop-accu"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Muis"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Toetsenbord"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Mobiele telefoon"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Mediaspeler"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablet"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Computer"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
msgid "Unknown"
msgstr "Onbekend"
@@ -923,22 +1051,22 @@ msgstr "Volume"
msgid "Microphone"
msgstr "Microfoon"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s is online."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s is offline."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s is afwezig."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s is bezig."
@@ -946,7 +1074,7 @@ msgstr "%s is bezig."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Verzonden om %H:%M op %A %e %B %Y"
@@ -995,42 +1123,55 @@ msgstr[1] "%u invoerkanalen"
msgid "System Sounds"
msgstr "Systeemgeluiden"
-#: ../src/main.c:395
+#: ../src/main.c:397
msgid "Print version"
msgstr "Versie weergeven"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Kon ‘%s’ niet starten"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Minder dan een minuut geleden"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minuut geleden"
msgstr[1] "%d minuten geleden"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d uur geleden"
msgstr[1] "%d uur geleden"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d dag geleden"
msgstr[1] "%d dagen geleden"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d week geleden"
msgstr[1] "%d weken geleden"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Verenigd Koninkrijk"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Standaard"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Authenticatievenster is door de gebruiker afgesloten"
@@ -1055,6 +1196,15 @@ msgstr "Bestandssysteem"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "No such application"
+#~ msgstr "Toepassing niet gevonden"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Schermlezer"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Schermtoetsenbord"
+
#~ msgid "PREFERENCES"
#~ msgstr "VOORKEUREN"
diff --git a/po/pa.po b/po/pa.po
index 43139acff..56851b50a 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -6,9 +6,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
-"cgi?product=gnome-shell&component=general\n"
-"POT-Creation-Date: 2011-03-07 16:15+0000\n"
-"PO-Revision-Date: 2011-03-08 08:27+0530\n"
+"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-24 08:03+0000\n"
+"PO-Revision-Date: 2011-03-25 08:16+0530\n"
"Last-Translator: A S Alam \n"
"Language-Team: Punjabi/Panjabi \n"
"MIME-Version: 1.0\n"
@@ -164,47 +164,43 @@ msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੋਂ ਬਾਰੇ ਅੰਕੜੇ
msgid "disabled OpenSearch providers"
msgstr "ਓਪਨਸਰਚ ਉਪਲੱਬਧ ਕਰਵਾਉਣ ਵਾਲੇ ਬੰਦ ਹਨ"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "ਕਮਾਂਡ ਨਹੀਂ ਲੱਭੀ"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "ਇੰਞ ਦੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "ਸਭ"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "ਸੈਟਿੰਗ"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "ਨਵੀਂ ਵਿੰਡੋ"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ"
@@ -364,7 +360,7 @@ msgstr "ਇਹ ਹਫ਼ਤਾ"
msgid "Next week"
msgstr "ਹਫ਼ਤਾ ਅੱਗੇ"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "ਹਟਾਓ"
@@ -419,7 +415,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A, %e %B %Y"
@@ -432,7 +428,7 @@ msgstr "ਤਾਜ਼ਾ ਆਈਟਮਾਂ"
msgid "Log Out %s"
msgstr "%s ਲਾਗਆਉਟ"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "ਲਾਗਆਉਟ"
@@ -455,46 +451,48 @@ msgstr "ਤੁਹਾਨੂੰ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਆਟੋਮ
msgid "Logging out of the system."
msgstr "ਸਿਸਟਮ ਲਾਗ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+#| msgid "Power Off..."
+msgid "Power Off"
msgstr "ਬੰਦ ਕਰੋ"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਕੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
-
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।"
+#| msgid "Click Log Out to quit these applications and log out of the system."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬੰਦ ਕਰਨ ਅਤੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
+#, c-format
+#| msgid "The system will restart automatically in %d seconds."
+msgid "The system will power off automatically in %d seconds."
+msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"
+
+#: ../js/ui/endSessionDialog.js:78
+#| msgid "Logging out of the system."
+msgid "Powering off the system."
msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "ਮੁੜ-ਚਾਲੂ ਕਰੋ"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਨ ਤੇ ਸਿਸਟਮ ਨੂੰ ਮੁੜ-ਚਾਲੂ ਕਰਨ ਲਈ ਮੁੜ-ਚਾਲੂ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਜਾਵੇਗਾ।"
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "ਸਿਸਟਮ ਮੁੜ-ਚਾਲੂ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "ਪੁਸ਼ਟੀ"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "ਰੱਦ ਕਰੋ"
@@ -508,7 +506,7 @@ msgstr "ਚਾਲੂ ਹੈ"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "ਬੰਦ ਹੈ"
@@ -528,48 +526,47 @@ msgstr "ਸਰੋਤ ਵੇਖੋ"
msgid "Web Page"
msgstr "ਵੈੱਬ ਪੇਜ਼"
-#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "ਖੋਲ੍ਹੋ"
-#: ../js/ui/messageTray.js:1963
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "ਵਾਪਸ"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "ਵਿੰਡੋ"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "ਐਪਲੀਕੇਸ਼ਨ"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "ਡੈਸ਼"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:532
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "%s ਬੰਦ ਕਰੋ"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:893
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "ਸਰਗਰਮੀਆਂ"
-#: ../js/ui/panel.js:994
-#| msgid "Cancel"
-msgid "Panel"
-msgstr "ਪੈਨਲ"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "ਉੱਤਲੀ ਪੱਟੀ"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -584,64 +581,84 @@ msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼"
msgid "Connect to..."
msgstr "...ਨਾਲ ਕੁਨੈਕਟ ਕਰੋ"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "ਪਰਸ਼ਾਸ਼ਕ"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "ਪਰਮਾਣਕਿਤਾ"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "ਅਫਸੋਸ, ਉਹ ਕੰਮ ਨਹੀਂ ਕਰਦਾ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।"
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "ਪਾਸਵਰਡ:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "ਕਮਾਂਡ ਦਿਓ ਜੀ:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "ਖੋਜ ਜਾਰੀ ਹੈ..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਿਆ।"
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "...ਬੰਦ ਕਰੋ"
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "ਸਸਪੈਂਡ"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "ਉਪਲੱਬਧ"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "ਰੁਝਿਆ"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "ਮੇਰਾ ਅਕਾਊਂਟ"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "ਯੂਜ਼ਰ ਬਦਲੋ"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "...ਲਾਗਆਉਟ"
@@ -649,14 +666,12 @@ msgstr "...ਲਾਗਆਉਟ"
msgid "Zoom"
msgstr "ਜ਼ੂਮ"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "ਸਕਰੀਨ ਰੀਡਰ"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ"
@@ -681,17 +696,17 @@ msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ"
msgid "Universal Access Settings"
msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "ਵੱਧ ਕਨਟਰਾਸਟ"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "ਵੱਡੇ ਅੱਖਰ"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "ਬਲਿਊਟੁੱਥ"
@@ -711,94 +726,94 @@ msgstr "...ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ"
msgid "Bluetooth Settings"
msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "ਕੁਨੈਕਸ਼ਨ"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "ਮਾਊਸ ਸੈਟਿੰਗ"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "ਨਾ-ਮਨਜ਼ੂਰ"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।"
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "ਮਿਲਦਾ ਹੈ"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।"
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "ਠੀਕ ਹੈ"
@@ -810,17 +825,158 @@ msgstr "...ਕੀਬੋਰਡ ਲੇਆਉਟ ਵੇਖੋ"
msgid "Localization Settings"
msgstr "ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਸੈਟਿੰਗ"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+#| msgid "Unknown"
+msgid ""
+msgstr "<ਅਣਜਾਣ>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+#| msgid "Disabled"
+msgid "disabled"
+msgstr "ਬੰਦ ਹੈ"
+
+#: ../js/ui/status/network.js:476
+#| msgid "Connection"
+msgid "connecting..."
+msgstr "ਕੁਨੈਕਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "ਪਰਮਾਣਕਿਤਾ ਚਾਹੀਦੀ ਹੈ"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "ਕੇਬਲ ਕੱਢੀ ਹੋਈ ਹੈ"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+#| msgid "Available"
+msgid "unavailable"
+msgstr "ਨਾ-ਉਪਲੱਬਧ"
+
+#: ../js/ui/status/network.js:491
+#| msgid "Connection"
+msgid "connection failed"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਫੇਲ੍ਹ ਹੈ"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "ਕੁਨੈਕਟ ਹੈ (ਪ੍ਰਾਈਵੇਟ)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "ਆਟੋ ਈਥਰਨੈੱਟ"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "ਆਟੋ ਬਰਾਡਬੈਂਡ"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "ਆਟੋ ਡਾਇਲ-ਅੱਪ"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+#| msgid "Quit %s"
+msgid "Auto %s"
+msgstr "ਆਟੋ %s"
+
+#: ../js/ui/status/network.js:845
+#| msgid "Bluetooth"
+msgid "Auto bluetooth"
+msgstr "ਆਟੋ ਬਲਿਊਟੁੱਥ"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "ਆਟੋ ਬੇਤਾਰ"
+
+#: ../js/ui/status/network.js:1413
+#| msgid "More"
+msgid "More..."
+msgstr "ਹੋਰ..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "ਨੈੱਟਵਰਕਿੰਗ ਚਾਲੂ ਹੈ"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "ਤਾਰ"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "ਬੇਤਾਰ"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ"
+
+#: ../js/ui/status/network.js:1479
+#| msgid "Connection"
+msgid "VPN Connections"
+msgstr "VPN ਕੁਨੈਕਸ਼ਨ"
+
+#: ../js/ui/status/network.js:1488
+#| msgid "Power Settings"
+msgid "Network Settings"
+msgstr "ਨੈੱਟਵਰਕ ਸੈਟਿੰਗ"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "ਹੁਣ ਤੁਸੀਂ ਮੋਬਾਇਲ ਬਰਾਡਬੈਂਡ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "ਹੁਣ ਤੁਸੀਂ ਬੇਤਾਰ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "ਹੁਣ ਤੁਸੀਂ ਤਾਰ ਵਾਲੇ ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਗਏ ਹੋ"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "ਤੁਸੀਂ ਹੁਣ VPN ਨੈੱਟਵਰਕ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ ਚੁੱਕੇ ਹੋ"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "ਤੁਸੀਂ ਹੁਣ '%s' ਨਾਲ ਕੁਨੈਕਟ ਹੋ"
+
+#: ../js/ui/status/network.js:1808
+#| msgid "Connection"
+msgid "Connection established"
+msgstr "ਕੁਨੈਕਸ਼ਨ ਬਣਾਇਆ ਗਿਆ"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "ਨੈੱਟਵਰਕਿੰਗ ਬੰਦ ਹੈ"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "ਨੈੱਟਵਰਕ ਮੈਨੇਜਰ"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "ਪਾਵਰ ਸੈਟਿੰਗ"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "...ਅਨੁਮਾਨ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -828,102 +984,102 @@ msgstr[0] "%d ਘੰਟਾ ਬਾਕੀ"
msgstr[1] "%d ਘੰਟੇ ਬਾਕੀ"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s ਬਾਕੀ"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "ਘੰਟਾ"
msgstr[1] "ਘੰਟੇ"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "ਮਿੰਟ"
msgstr[1] "ਮਿੰਟ"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ"
msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "AC ਐਡਪਟਰ"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "ਮਾਨੀਟਰ"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "ਮਾਊਸ"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "ਕੀਬੋਰਡ"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "ਸੈੱਲ ਫੋਨ"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "ਮੀਡਿਆ ਪਲੇਅਰ"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "ਟੇਬਲੇਟ"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "ਕੰਪਿਊਟਰ"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "ਅਣਜਾਣ"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "ਆਵਾਜ਼"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "ਮਾਈਕਰੋਫੋਨ"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s ਆਨਲਾਈਨ ਹੈ।"
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s ਆਫਲਾਈਨ ਹੈ।"
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s ਦੂਰ ਹੈ।"
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
@@ -931,7 +1087,7 @@ msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ"
@@ -940,11 +1096,11 @@ msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "...ਲੱਭਣ ਲਈ ਲਿਖੋ"
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "ਖੋਜ"
@@ -960,7 +1116,7 @@ msgstr "'%s' ਤਿਆਰ ਹੈ"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -969,51 +1125,68 @@ msgstr[1] "%u ਆਉਟਪੁੱਟ"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u ਇੰਪੁੱਟ"
msgstr[1] "%u ਇੰਪੁੱਟ"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "ਸਿਸਟਮ ਸਾਊਂਡ"
-#: ../src/shell-global.c:1298
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "ਵਰਜਨ ਛਾਪੋ"
+
+#: ../src/shell-app.c:454
+#, c-format
+#| msgid "Failed to unmount '%s'"
+msgid "Failed to launch '%s'"
+msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ"
-#: ../src/shell-global.c:1302
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ"
-#: ../src/shell-global.c:1307
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ"
msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ"
msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d ਹਫ਼ਤਾ ਪਹਿਲਾਂ"
msgstr[1] "%d ਹਫ਼ਤੇ ਪਹਿਲਾਂ"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "ਬਰਤਾਨੀਆ"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "ਡਿਫਾਲਟ"
+
#: ../src/shell-polkit-authentication-agent.c:334
-#| msgid "Authentation dialog was dismissed by the user"
msgid "Authentication dialog was dismissed by the user"
msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ"
@@ -1037,6 +1210,34 @@ msgstr "ਫਾਇਲ ਸਿਸਟਮ"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "No such application"
+#~ msgstr "ਇੰਞ ਦੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ"
+
+#~ msgid "Shut Down"
+#~ msgstr "ਬੰਦ ਕਰੋ"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਬੰਦ ਕਰਕੇ ਸਿਸਟਮ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਬੰਦ ਕਰੋ ਨੂੰ ਕਲਿੱਕ ਕਰੋ।"
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "ਸਿਸਟਮ ਨੂੰ ਆਟੋਮੈਟਿਕ ਹੀ %d ਸਕਿੰਟਾਂ ਵਿੱਚ ਬੰਦ ਕੀਤਾ ਜਾਵੇਗਾ।"
+
+#~ msgid "Shutting down the system."
+#~ msgstr "ਸਿਸਟਮ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।"
+
+#~ msgid "Confirm"
+#~ msgstr "ਪੁਸ਼ਟੀ"
+
+#~| msgid "Cancel"
+#~ msgid "Panel"
+#~ msgstr "ਪੈਨਲ"
+
+#~ msgid "Screen Reader"
+#~ msgstr "ਸਕਰੀਨ ਰੀਡਰ"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ"
+
#~ msgid "PREFERENCES"
#~ msgstr "ਪਸੰਦ"
@@ -1246,9 +1447,6 @@ msgstr "%1$s: %2$s"
#~ msgid "Frequent"
#~ msgstr "ਅਕਸਰ"
-#~ msgid "More"
-#~ msgstr "ਹੋਰ"
-
#~ msgid "(see all)"
#~ msgstr "(ਸਭ ਵੇਖੋ)"
diff --git a/po/pl.po b/po/pl.po
index 45929ed68..bbec458af 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-09 21:48+0100\n"
-"PO-Revision-Date: 2011-03-09 21:49+0100\n"
+"POT-Creation-Date: 2011-03-19 16:19+0100\n"
+"PO-Revision-Date: 2011-03-19 16:20+0100\n"
"Last-Translator: Piotr Drąg \n"
"Language-Team: Polish \n"
"Language: pl\n"
@@ -176,21 +176,17 @@ msgstr "Określa, czy zbierać statystyki o użyciu programów"
msgid "disabled OpenSearch providers"
msgstr "Wyłączeni dostawcy OpenSearch"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Nie odnaleziono polecenia"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Nie można przetworzyć polecenia:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Nie ma takiego programu"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Wykonanie polecenia \"%s\" się nie powiodło:"
@@ -208,15 +204,15 @@ msgstr "Programy"
msgid "SETTINGS"
msgstr "Ustawienia"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Nowe okno"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Usuń z ulubionych"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Dodaj do ulubionych"
@@ -376,7 +372,7 @@ msgstr "Ten tydzień"
msgid "Next week"
msgstr "Następny tydzień"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "Usuń"
@@ -431,7 +427,7 @@ msgstr "%a, %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@@ -507,7 +503,7 @@ msgstr "Ponowne uruchamianie systemu."
msgid "Confirm"
msgstr "Potwierdź"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Anuluj"
@@ -521,7 +517,7 @@ msgstr "Włączone"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Wyłączone"
@@ -541,11 +537,11 @@ msgstr "Wyświetl źródło"
msgid "Web Page"
msgstr "Strona WWW"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:926
msgid "Open"
msgstr "Otwórz"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:1986
msgid "System Information"
msgstr "Informacje systemowe"
@@ -568,18 +564,18 @@ msgid "Dash"
msgstr "Ulubione"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Zakończ program %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Podgląd"
-#: ../js/ui/panel.js:1020
+#: ../js/ui/panel.js:975
msgid "Panel"
msgstr "Panel"
@@ -596,7 +592,7 @@ msgstr "Ponów"
msgid "Connect to..."
msgstr "Połącz z..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "Miejsca i urządzenia"
@@ -605,7 +601,7 @@ msgstr "Miejsca i urządzenia"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -613,47 +609,47 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Proszę wprowadzić polecenie:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:287
msgid "Searching..."
msgstr "Wyszukiwanie..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:301
msgid "No matching results."
msgstr "Brak wyników."
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
msgid "Power Off..."
msgstr "Wyłącz..."
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
msgid "Suspend"
msgstr "Uśpij"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Dostępny"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Zajęty"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:150
msgid "My Account"
msgstr "Moje konto"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:154
msgid "System Settings"
msgstr "Ustawienia systemu"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Zablokuj ekran"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Przełącz użytkownika"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Wyloguj się..."
@@ -661,14 +657,12 @@ msgstr "Wyloguj się..."
msgid "Zoom"
msgstr "Powiększenie"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Czytnik ekranu"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Klawiatura ekranowa"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Ostrzeżenia wzrokowe"
@@ -693,17 +687,17 @@ msgstr "Klawisze myszy"
msgid "Universal Access Settings"
msgstr "Ustawienia uniwersalnego dostępu"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Wysoki kontrast"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Duży tekst"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -723,94 +717,94 @@ msgstr "Ustaw nowe urządzenie..."
msgid "Bluetooth Settings"
msgstr "Ustawienia Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Połączenie"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Wyślij pliki..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Przeglądaj pliki..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Błąd podczas przeglądania urządzenia"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Nie można przeglądać żądanego urządzenia. Błąd: \"%s\""
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Ustawienia klawiatury"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Ustawienia myszy"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Ustawienia dźwięku"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Żądanie upoważnienia z %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Urządzenie %s żąda dostępu do usługi \"%s\""
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Zawsze udzielaj dostęp"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Udziel dostęp tylko tym razem"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Odrzuć"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Potwierdzenie wiązania dla %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Urządzenie %s żąda powiązania z tym komputerem"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Proszę potwierdzić, czy PIN \"%s\" zgadza się z tym na urządzeniu."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Zgadza się"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Nie zgadza się"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Żądanie powiązania dla %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -822,17 +816,147 @@ msgstr "Wyświetl układ klawiatury..."
msgid "Localization Settings"
msgstr "Ustawienia lokalizacji"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "wyłączone"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "łączenie..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "wymagane jest uwierzytelnienie"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabel jest niepodłączony"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "niedostępne"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "połączenie się nie powiodło"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Połączono (prywatne)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Automatyczne Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Automatyczne komórkowe"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Automatyczne wdzwaniane"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Automatyczne %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Automatyczne Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Automatyczne bezprzewodowe"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Więcej..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Włącz sieć"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Przewodowe"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Bezprzewodowe"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Komórkowe"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Połączenia VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Ustawienia sieci"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Połączono z siecią komórkową \"%s\""
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Połączono z siecią bezprzewodową \"%s\""
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Połączono z siecią przewodową \"%s\""
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Połączono z siecią VPN \"%s\""
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Połączono z siecią \"%s\""
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Nawiązano połączenie"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Sieć jest wyłączona"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Menedżer sieci"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Ustawienia zasilania"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Obliczanie..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -841,26 +965,26 @@ msgstr[1] "Pozostały %d godziny"
msgstr[2] "Pozostało %d godzin"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "Pozostało %d %s i %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "godzina"
msgstr[1] "godziny"
msgstr[2] "godzin"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuta"
msgstr[1] "minuty"
msgstr[2] "minut"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -868,78 +992,78 @@ msgstr[0] "Pozostała %d minuta"
msgstr[1] "Pozostały %d minuty"
msgstr[2] "Pozostało %d minut"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Zasilacz sieciowy"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Akumulator laptopa"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Mysz"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Klawiatura"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "Urządzenie PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Telefon komórkowy"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Odtwarzacz multimedialny"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablet"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Komputer"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
msgid "Unknown"
msgstr "Nieznane"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Głośność"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Mikrofon"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "Użytkownik %s jest online."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "Użytkownik %s jest offline."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "Użytkownik %s jest nieobecny."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "Użytkownik %s jest zajęty."
@@ -947,7 +1071,7 @@ msgstr "Użytkownik %s jest zajęty."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Wysłano o %H:%M w dniu %e %b"
@@ -956,11 +1080,11 @@ msgstr "Wysłano o %H:%M w dniu %e %b"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Wyszukiwanie..."
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "Wyszukaj"
@@ -976,7 +1100,7 @@ msgstr "Program \"%s\" jest gotowy"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -986,7 +1110,7 @@ msgstr[2] "%u wyjść"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@@ -994,19 +1118,24 @@ msgstr[0] "%u wejście"
msgstr[1] "%u wejścia"
msgstr[2] "%u wejść"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Dźwięki systemowe"
-#: ../src/main.c:395
+#: ../src/main.c:397
msgid "Print version"
msgstr "Wyświetla wersję"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Uruchomienie \"%s\" się nie powiodło"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Mniej niż minutę temu"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1014,7 +1143,7 @@ msgstr[0] "%d minuta temu"
msgstr[1] "%d minuty temu"
msgstr[2] "%d minut temu"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1022,7 +1151,7 @@ msgstr[0] "%d godzina temu"
msgstr[1] "%d godziny temu"
msgstr[2] "%d godzin temu"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1030,7 +1159,7 @@ msgstr[0] "%d dzień temu"
msgstr[1] "%d dni temu"
msgstr[2] "%d dni temu"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1038,6 +1167,14 @@ msgstr[0] "%d tydzień temu"
msgstr[1] "%d tygodnie temu"
msgstr[2] "%d tygodni temu"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Zjednoczone Królestwo"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Domyślne"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika"
diff --git a/po/pt.po b/po/pt.po
index 6e0f34ffc..192648b5e 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,16 +1,18 @@
# gnome-shell's Portuguese translation.
-# Copyright © 2010 gnome-shell
+# Copyright © 2010, 2011 gnome-shell
# This file is distributed under the same license as the gnome-shell package.
-# Duarte Loreto , 2010.
+# Duarte Loreto , 2010, 2011.
+# Rui Gouveia , 2011.
#
msgid ""
msgstr ""
-"Project-Id-Version: 2.32\n"
+"Project-Id-Version: 3.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-09-10 21:45+0100\n"
-"PO-Revision-Date: 2010-09-09 01:18+0000\n"
+"POT-Creation-Date: 2011-03-20 23:18+0000\n"
+"PO-Revision-Date: 2011-03-20 23:45+0000\n"
"Last-Translator: Duarte Loreto \n"
"Language-Team: Portuguese \n"
+"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -24,14 +26,6 @@ msgstr "Interface GNOME"
msgid "Window management and application launching"
msgstr "Gestão de janelas e iniciação de aplicações"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Relógio"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Personalizar o relógio do painel"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
@@ -41,24 +35,20 @@ msgstr ""
"utilizando o diálogo Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Formato personalizado do relógio"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Activa, a partir do Alt-F2, ferramentas internas úteis para programadores e "
"quem realiza testes"
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
msgstr "Extensão de ficheiro utilizado para armazenar a transmissão de ecrã"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Taxa de imagens utilizada para a gravação das transmissões de ecrã."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
@@ -66,43 +56,32 @@ msgstr ""
"As extensões da Interface GNOME têm uma propriedade uuid; esta chave lista "
"as extensões que não deverão ser lidas."
-#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Histórico do diálogo de comando (Alt-F2)"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Histórico do diálogo de pesquisa"
+
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Formato de hora"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Se verdadeiro, apresentar a data no relógio, além da hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Se verdadeiro e o formato for \"12-hour\" ou \"24-hour\", apresentar a data "
-"no relógio, além da hora."
+msgid "If true, display seconds in time."
+msgstr "Se verdadeiro, apresentar os segundos na hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Se verdadeiro e o formato for \"12-hour\" ou \"24-hour\", apresentar os "
-"segundos na hora."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "If true, display the ISO week date in the calendar."
msgstr "Se verdadeiro, apresentar o número ISO da semana no calendário."
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "Lista de IDs de ficheiros desktop das aplicações favoritas"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid "Overview workspace view mode"
-msgstr "Modo de vista da visão geral da área de trabalho"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -111,31 +90,35 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
"Define o canal GStreamer utilizado para codificar as gravações. Segue a "
"sintaxe utilizada para o gst-launch. O canal deverá ter um ponto de saída "
"desligado onde o vídeo gravado é gravado. Terá normalmente um ponto de "
"entrada desligado; o resultado desse ponto será escrito no ficheiro de "
-"saída. No entanto o canal poderá tratar da sua própria saída - tal poderá "
+"saída. No entanto, o canal poderá tratar da sua própria saída - tal poderá "
"ser utilizado para enviar o resultado para um servidor icecast através do "
"shout2send ou semelhante. Quando não definido ou definido com um valor "
"vazio, será utilizado o canal por omissão. Este é actualmente 'videorate ! "
-"theoraenc ! oggmux' e grava em Ogg Theora."
+"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' e grava para WEBM "
+"utilizando co codec VP8. %T é utilizado como uma varável para se tentar "
+"inferir o número óptimo de threads no sistema."
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "Apresentar data no relógio"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "Apresentar o número da semana no calendário"
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "Apresentar hora com segundos"
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@@ -143,7 +126,7 @@ msgstr ""
"As aplicações correspondentes a estes identificadores serão apresentadas na "
"área de favoritas."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@@ -153,7 +136,7 @@ msgstr ""
"na data actual e utilizará esta extensão. Deverá ser alterada quando se "
"gravar para um formato de conteúdo diferente."
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -161,19 +144,11 @@ msgstr ""
"A taxa de imagens da transmissão de ecrã resultante gravada através do "
"gravador de transmissões de ecrã do Interface GNOME, em imagens por segundo."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "O canal gstreamer utilizado para codificar a transmissão de ecrã"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"The selected workspace view mode in the overview. Supported values are "
-"\"single\" and \"grid\"."
-msgstr ""
-"O modo de visão geral de área de trabalho seleccionado. Os valores "
-"suportados são \"single\" e \"grid\"."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -186,361 +161,1136 @@ msgstr ""
"questões de privacidade. Note que ao fazê-lo não irá remover os dados até à "
"data gravados."
-#: ../data/org.gnome.shell.gschema.xml.in.h:24
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Esta chave especifica o formato utilizado pelo relógio do painel quando a "
-"chave de formato está definida como \"custom\". Pode utilizar "
-"especificadores de conversão válidos para o strftime() para obter um formato "
-"específico. Consulte o manual do strftime() para mais informações."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Esta chave especifica o formato de hora utilizado pelo relógio do painel. "
-"Valores possíveis são \"12-hour\", \"24-hour\", \"unix\" e \"custom\". Se "
-"definido como \"unix\", o relógio irá apresentar o tempo em segundos desde a "
-"Epoch, isto é 1970/01/01. Se definido como \"custom\", o relógio apresentará "
-"as horas de acordo com o formato especificado na chave custom_format. Note "
-"que se definido como \"unix\" ou \"custom\", as chaves show_date e "
-"show_seconds são ignoradas."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:26
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "Uuids das extensões a desactivar"
-#: ../data/org.gnome.shell.gschema.xml.in.h:27
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Se recolher ou não estatísticas sobre a utilização das aplicações"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Formato do Relógio"
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "fornecedores OpenSearch desactivados"
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Preferências de Relógio"
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Comando não foi encontrado"
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Apresentação no Painel"
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Incapaz de processar o comando:"
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Apresentar os segu_ndos"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Falha ao executar '%s':"
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Apresentar a _data"
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Todas"
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "Formato de _12 horas"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "Formato de _24 horas"
-
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:778
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "APLICAÇÕES"
-#: ../js/ui/appDisplay.js:416
-msgid "PREFERENCES"
-msgstr "PREFERÊNCIAS"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
+msgstr "DEFINIÇÕES"
-#: ../js/ui/appDisplay.js:721
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Nova Janela"
-#: ../js/ui/appDisplay.js:725
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Remover dos Favoritos"
-#: ../js/ui/appDisplay.js:726
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Adicionar aos Favoritos"
-#: ../js/ui/appDisplay.js:1033
-msgid "Drag here to add favorites"
-msgstr "Arrastar para aqui para adicionar favoritos"
-
-#: ../js/ui/appFavorites.js:88
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
msgstr "%s foi adicionada aos seus favoritos."
-#: ../js/ui/appFavorites.js:107
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
msgstr "%s foi removida dos seus favoritos."
-#: ../js/ui/dash.js:142
-msgid "Find"
-msgstr "Procurar"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Dia Completo"
-#: ../js/ui/dash.js:473
-msgid "Searching..."
-msgstr "A Procurar..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:487
-msgid "No matching results."
-msgstr "Nenhum resultado coincidente."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:797 ../js/ui/placeDisplay.js:554
-msgid "PLACES & DEVICES"
-msgstr "LOCAIS & DISPOSITIVOS"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "D"
-#. **** Documents ****
-#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "ITENS RECENTES"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:552
-msgid "No extensions installed"
-msgstr "Nenhuma extensão instalada"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "T"
-#: ../js/ui/lookingGlass.js:589
-msgid "Enabled"
-msgstr "Activo"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "Q"
-#: ../js/ui/lookingGlass.js:591
-msgid "Disabled"
-msgstr "Inactivo"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "Q"
-#: ../js/ui/lookingGlass.js:593
-msgid "Error"
-msgstr "Erro"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:595
-msgid "Out of date"
-msgstr "Data inválida"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:620
-msgid "View Source"
-msgstr "Visualizar o Código Fonte"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Dom"
-#: ../js/ui/lookingGlass.js:626
-msgid "Web Page"
-msgstr "Página Web"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Seg"
-#: ../js/ui/overview.js:160
-msgid "Undo"
-msgstr "Desfazer"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Ter"
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:473
-#, c-format
-msgid "Quit %s"
-msgstr "Terminar %s"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Qua"
-#: ../js/ui/panel.js:498
-msgid "Preferences"
-msgstr "Preferências"
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Qui"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Sex"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Sáb"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Nada Agendado"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Hoje"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Amanhã"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Esta semana"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Próxima semana"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+msgid "Remove"
+msgstr "Remover"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Definições de Data e Hora"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Abrir o Calendário"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:584
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
-#: ../js/ui/panel.js:585
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:589
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/panel.js:590
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:597
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
-#: ../js/ui/panel.js:598
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %b %e, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:602
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
-#: ../js/ui/panel.js:603
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %B %e, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "ITENS RECENTES"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Terminar a Sessão de %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Terminar Sessão"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr "Clique em Terminar Sessão para fechar estas aplicações e terminar a sessão no sistema."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "A sessão de %s terminará automaticamente dentro de %d segundos."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "A sua sessão terminará automaticamente dentro de %d segundos."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "A terminar a sessão no sistema."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Desligar"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Clique em Desligar para fechar estas aplicações e desligar o sistema."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "O sistema irá desligar-se automaticamente dentro de %d segundos."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "A desligar o sistema."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Reiniciar"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr "Clique em Reiniciar para fechar estas aplicações e reiniciar o sistema."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "O sistema irá reiniciar-se automaticamente dentro de %d segundos."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "A reiniciar o sistema."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Confirmar"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Nenhuma extensão instalada"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Activo"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Inactivo"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Erro"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Data inválida"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Visualizar o Código Fonte"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Página Web"
+
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr "Abrir"
+
+#: ../js/ui/messageTray.js:1986
+msgid "System Information"
+msgstr "Informação do Sistema"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Desfazer"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Janelas"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Aplicações"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr "Atalhos"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Terminar %s"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:748
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Actividades"
-#: ../js/ui/placeDisplay.js:111
+#: ../js/ui/panel.js:975
+msgid "Panel"
+msgstr "Painel"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Falha ao desmontar '%s'"
-#: ../js/ui/placeDisplay.js:114
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Tentar Novamente"
-#: ../js/ui/placeDisplay.js:159
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Estabelecer ligação a..."
-#. Translators: the "ON" and "OFF" strings are used in the
-#. toggle switches in the status area menus, and must be SHORT.
-#. If you don't have suitable short words, consider initials,
-#. "0"/"1", "⚪"/"⚫", etc.
-#: ../js/ui/popupMenu.js:30 ../js/ui/popupMenu.js:40
-msgid "ON"
-msgstr "⚫"
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "LOCAIS & DISPOSITIVOS"
-#: ../js/ui/popupMenu.js:31 ../js/ui/popupMenu.js:45
-msgid "OFF"
-msgstr "⚪"
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
msgstr "Introduza um comando:"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Falha ao executar '%s':"
+#: ../js/ui/searchDisplay.js:287
+msgid "Searching..."
+msgstr "A Procurar..."
-#: ../js/ui/statusMenu.js:91
+#: ../js/ui/searchDisplay.js:301
+msgid "No matching results."
+msgstr "Nenhum resultado coincidente."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+msgid "Power Off..."
+msgstr "Desligar..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+msgid "Suspend"
+msgstr "Suspender"
+
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Disponível"
-#: ../js/ui/statusMenu.js:95
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Ocupado"
-#: ../js/ui/statusMenu.js:99
-msgid "Invisible"
-msgstr "Invisível"
+#: ../js/ui/statusMenu.js:150
+msgid "My Account"
+msgstr "A Minha Conta"
-#: ../js/ui/statusMenu.js:106
-msgid "Account Information..."
-msgstr "Informação de Conta..."
+#: ../js/ui/statusMenu.js:154
+msgid "System Settings"
+msgstr "Definições de Sistema"
-#: ../js/ui/statusMenu.js:110
-msgid "System Preferences..."
-msgstr "Preferências do Sistema..."
-
-#: ../js/ui/statusMenu.js:117
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Trancar o Ecrã"
-#: ../js/ui/statusMenu.js:121
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Alternar Utilizador"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Terminar Sessão..."
-#: ../js/ui/statusMenu.js:130
-msgid "Shut Down..."
-msgstr "Desligar..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Zoom"
-#: ../js/ui/windowAttentionHandler.js:43
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Alertas Visuais"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Teclas Coladas"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Teclas Lentas"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Teclas Saltantes"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Teclas de Rato"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Definições Universais de Acesso"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Alto Contraste"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Texto Grande"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Visibilidade"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Enviar Ficheiros para Dispositivo..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Configurar um Novo Dispositivo..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Definições Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Ligação"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Enviar Ficheiros..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Navegar Ficheiros..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Erro ao navegar no dispositivo"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Não é possível navegar no dispositivo, o erro é '%s'"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Definições de Teclado"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Definições de Rato"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Definições de Som"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Pedido de autorização de %s"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "O dispositivo %s deseja aceder ao serviço '%s'"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Conceder sempre o acesso"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Conceder apenas desta vez"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Rejeitar"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Confirmação de emparelhamento para %s"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "O dispositivo %s deseja emparelhar com este computador"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Confirme se o PIN '%s' coincide com o do dispositivo."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Coincide"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Não coincide"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Pedido de emparelhamento de %s"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Introduza o PIN indicado no dispositivo."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "OK"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Apresentar a Disposição de Teclado..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Definições de Localização"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "desactivado"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "a ligar..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "necessária autenticação"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cabo desligado"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "indisponível"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "falha ao ligar"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Ligado (privada)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet automática"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Banda larga automática"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Ligação telefónica automática"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s automática"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth automático"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Wireless automático"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Mais..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Activar a rede"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Com fios"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Sem fios"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Banda larga móvel"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Ligações VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Definições de Rede"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Está ligado à ligação '%s' em banda larga móvel"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Está ligado à rede sem fios '%s'"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Está ligado à rede com fios '%s'"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Está ligado à rede VPN '%s'"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Está ligado a '%s'"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Ligação estabelecida"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Os serviços de rede estão desligados"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Gestor de Rede"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Definições de Energia"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "A estimar..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "resta %d hora"
+msgstr[1] "restam %d horas"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "restam %d %s e %d %s"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "hora"
+msgstr[1] "horas"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minuto"
+msgstr[1] "minutos"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "resta %d minuto"
+msgstr[1] "restam %d minutos"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Corrente"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Bateria do portátil"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Monitor"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Rato"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Teclado"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Telemóvel"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Reprodutor de média"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Tablet"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Computador"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Volume"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Microfone"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s está ligado."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s está desligado."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s está ausente."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s está ocupado."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Enviado às %X de %A"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Escreva para procurar..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Procurar"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s concluiu o seu arranque"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "'%s' está disponível"
-#: ../js/ui/workspacesView.js:230
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Incapaz de adicionar uma nova área de trabalho por ter sido atingido o seu "
-"número limite."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u Saída"
+msgstr[1] "%u Saídas"
-#: ../js/ui/workspacesView.js:247
-msgid "Can't remove the first workspace."
-msgstr "Incapaz de remover a primeira área de trabalho."
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u Entrada"
+msgstr[1] "%u Entradas"
-#: ../src/shell-global.c:1189
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Sons de Sistema"
+
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Versão de impressão"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Falha ao iniciar '%s'"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Há menos de um minuto atrás"
-#: ../src/shell-global.c:1193
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minuto atrás"
msgstr[1] "%d minutos atrás"
-#: ../src/shell-global.c:1198
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d hora atrás"
msgstr[1] "%d horas atrás"
-#: ../src/shell-global.c:1203
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d dia atrás"
msgstr[1] "%d dias atrás"
-#: ../src/shell-global.c:1208
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d semana atrás"
msgstr[1] "%d semanas atrás"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Reino Unido"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Omissão"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "O diálogo de autenticação foi fechado pelo utilizador"
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Pasta Pessoal"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Sistema de Ficheiros"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Procurar"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+
+#~ msgid "Clock"
+#~ msgstr "Relógio"
+
+#~ msgid "Customize the panel clock"
+#~ msgstr "Personalizar o relógio do painel"
+
+#~ msgid "Custom format of the clock"
+#~ msgstr "Formato personalizado do relógio"
+
+#~ msgid "Hour format"
+#~ msgstr "Formato de hora"
+
+#~ msgid ""
+#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
+#~ "in time."
+#~ msgstr ""
+#~ "Se verdadeiro e o formato for \"12-hour\" ou \"24-hour\", apresentar os "
+#~ "segundos na hora."
+
+#~ msgid "Overview workspace view mode"
+#~ msgstr "Modo de vista da visão geral da área de trabalho"
+
+#~ msgid ""
+#~ "The selected workspace view mode in the overview. Supported values are "
+#~ "\"single\" and \"grid\"."
+#~ msgstr ""
+#~ "O modo de visão geral de área de trabalho seleccionado. Os valores "
+#~ "suportados são \"single\" e \"grid\"."
+
+#~ msgid ""
+#~ "This key specifies the format used by the panel clock when the format key "
+#~ "is set to \"custom\". You can use conversion specifiers understood by "
+#~ "strftime() to obtain a specific format. See the strftime() manual for "
+#~ "more information."
+#~ msgstr ""
+#~ "Esta chave especifica o formato utilizado pelo relógio do painel quando a "
+#~ "chave de formato está definida como \"custom\". Pode utilizar "
+#~ "especificadores de conversão válidos para o strftime() para obter um "
+#~ "formato específico. Consulte o manual do strftime() para mais informações."
+
+#~ msgid ""
+#~ "This key specifies the hour format used by the panel clock. Possible "
+#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
+#~ msgstr ""
+#~ "Esta chave especifica o formato de hora utilizado pelo relógio do painel. "
+#~ "Valores possíveis são \"12-hour\", \"24-hour\", \"unix\" e \"custom\". Se "
+#~ "definido como \"unix\", o relógio irá apresentar o tempo em segundos "
+#~ "desde a Epoch, isto é 1970/01/01. Se definido como \"custom\", o relógio "
+#~ "apresentará as horas de acordo com o formato especificado na chave "
+#~ "custom_format. Note que se definido como \"unix\" ou \"custom\", as "
+#~ "chaves show_date e show_seconds são ignoradas."
+
+#~ msgid "Clock Format"
+#~ msgstr "Formato do Relógio"
+
+#~ msgid "Clock Preferences"
+#~ msgstr "Preferências de Relógio"
+
+#~ msgid "Panel Display"
+#~ msgstr "Apresentação no Painel"
+
+#~ msgid "Show seco_nds"
+#~ msgstr "Apresentar os segu_ndos"
+
+#~ msgid "Show the _date"
+#~ msgstr "Apresentar a _data"
+
+#~ msgid "_12 hour format"
+#~ msgstr "Formato de _12 horas"
+
+#~ msgid "_24 hour format"
+#~ msgstr "Formato de _24 horas"
+
+#~ msgid "PREFERENCES"
+#~ msgstr "PREFERÊNCIAS"
+
+#~ msgid "Drag here to add favorites"
+#~ msgstr "Arrastar para aqui para adicionar favoritos"
+
+#~ msgid "Find"
+#~ msgstr "Procurar"
+
+#~ msgid "Preferences"
+#~ msgstr "Preferências"
+
+#~ msgid "ON"
+#~ msgstr "⚫"
+
+#~ msgid "OFF"
+#~ msgstr "⚪"
+
+#~ msgid "Invisible"
+#~ msgstr "Invisível"
+
+#~ msgid "System Preferences..."
+#~ msgstr "Preferências do Sistema..."
+
+#~ msgid ""
+#~ "Can't add a new workspace because maximum workspaces limit has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Incapaz de adicionar uma nova área de trabalho por ter sido atingido o "
+#~ "seu número limite."
+
+#~ msgid "Can't remove the first workspace."
+#~ msgstr "Incapaz de remover a primeira área de trabalho."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 5a0da7cf5..50e8e1a19 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -6,19 +6,21 @@
# Felipe Borges , 2010.
# Henrique P. Machado , 2010.
# Jonh Wendell , 2010.
+# Rodrigo Padula , 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-07 08:59-0200\n"
-"PO-Revision-Date: 2010-12-06 16:03+0100\n"
-"Last-Translator: Jonh Wendell \n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-24 18:16+0000\n"
+"PO-Revision-Date: 2011-03-24 14:11-0300\n"
+"Last-Translator: Rodrigo Padula de Oliveira \n"
"Language-Team: Brazilian Portuguese \n"
-"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@@ -29,14 +31,6 @@ msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Gerenciamento de janelas e lançador de aplicativos"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Relógio"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Personalizar o relógio do painel"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
@@ -46,24 +40,20 @@ msgstr ""
"diálogo Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Padrão personalizado do relógio"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Habilitar ferramentas internas úteis para desenvolvedores e testadores a "
"partir do Alt-F2"
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "File extension used for storing the screencast"
msgstr "Extensão de arquivo usada para armazenagem do screencast"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Taxa de quadros usada para gravar screencasts."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
@@ -71,40 +61,33 @@ msgstr ""
"As extensões do GNOME Shell tem uma propriedade uuid; esta chave lista as "
"extensões que não devem ser carregadas."
-#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Histórico do diálogo comandos (Alt-F2)"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Histórico do diálogo comandos"
+
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Formato de horas"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Se verdadeiro, exibe data no relógio, em adição à hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Se verdadeiro e o formato é \"12-horas\" ou \"24-horas\", mostra a data no "
-"relógio, junto com o horário."
+msgid "If true, display seconds in time."
+msgstr "Se verdadeiro, exibe segundos na hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Se verdadeiro e o formato é \"12-horas\" ou \"24-horas\", mostra os segundos "
-"junto com o horário."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "If true, display the ISO week date in the calendar."
msgstr "Se verdadeiro, exibe o número da semana no calendário."
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr ""
"Lista dos IDs de arquivo de área de trabalho para os aplicativos favoritos"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -113,17 +96,21 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
-"Configura a fila de processamento usada para codificar gravações. Ela segue "
-"a a sintaxe usada para gst-launch. A fila de processamento deve ter um sink "
-"pad onde o vídeo gravado é retido. Ele normalmente terá um source pad "
-"desconectado; saídas deste pad serão gravadas no arquivo de saída. Porém, a "
-"fila de processamento pode também tomar conta de sua própria saída - isto "
-"poderia ser usado para enviar a saída para um servidor icecast via "
-"shout2send oiu similar. Quando não definido ou definido para um valor vazio, "
-"o fluxo de processamento padrão será usado. Atualmente é 'videorate ! "
-"theoraenc ! oggmux' e gravação no formato Ogg Theora."
+"Configura a fila de processamento GStreamer usada para codificar gravações. "
+"Ela segue a sintaxe usada para gst-launch. A fila de processamento deve "
+"ter um sink pad onde o vídeo gravado é escrito. Ele normalmente terá um "
+"source pad desconectado; saídas deste pad serão gravadas no arquivo de "
+"saída. Porém, a fila de processamento pode também tomar conta de sua própria "
+"saída - isto poderia ser usado para enviar a saída para um servidor icecast "
+"via shout2send oiu similar. Quando não definido ou definido para um valor "
+"vazio, o fluxo de processamento padrão será usado. Atualmente é \"videorate ! "
+"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux\" e grave para WEBM "
+"usando o codec VP8. %T é usado como espaço reservado para um convidado na "
+"lista para uma ótima contagem de threads no sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
@@ -161,7 +148,7 @@ msgid ""
"screencast recorder in frames-per-second."
msgstr ""
"A taxa de quadros do screencast resultante gravado pelo gravador de "
-"screencastsdo GNOME Shell em quadros por segundo."
+"screencasts do GNOME Shell em quadros por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
@@ -180,213 +167,54 @@ msgstr ""
"favor, note que que ao fazer isso não removerá os dado já salvos."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Esta chave especifica o formato usado pelo relógio do painel quando a chave "
-"de formato é atribuída como \"personalizado\". Você pode usar "
-"especificadores de conversão entendidos pela função strftime() para obter um "
-"formato específico. Veja o manual da strftime() para maiores informações."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Esta chave especifica o formato de horas utilizado pelo relógio do painel. "
-"Valores possíveis são \"12-hour\", \"24-hour\", \"unix\" e \"custom\". Se "
-"definida como \"unix\", o relógio irá exibir as horas em segundos desde seu "
-"lançamento, por exemplo 01/01/1970. Se definida como \"custom\", o relógio "
-"irá exibir as horas de acordo com o formato especificado na chave "
-"custom_format. Note que se definida tanto como \"unix\" ou \"custom\", as "
-"chaves show_date e show_seconds serão igoradas."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Uuids of extensions to disable"
msgstr "Uuids das extensões a desabilitar"
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Quando coletar dados sobre uso de aplicativos"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1
-msgid "Clip the crosshairs at the center"
-msgstr ""
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "desabilitar provedores OpenSearch"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2
-msgid "Color of the crosshairs"
-msgstr ""
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Comando não encontrado"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Não foi possível analisar comando:"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr ""
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "A execução de \"%s\" falhou:"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr ""
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:230
+msgid "All"
+msgstr "Todos"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7
-#, fuzzy
-msgid "Enable lens mode"
-msgstr "Habilitado"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10
-msgid "Length of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11
-msgid "Magnification factor"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12
-msgid "Mouse Tracking Mode"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13
-msgid "Opacity of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14
-msgid "Screen position"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16
-msgid "Show or hide crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17
-msgid "Show or hide the magnifier"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22
-msgid "Thickness of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr ""
-
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Formato do relógio"
-
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Preferências do Relógio"
-
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Mostrador do painel"
-
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Mostrar segundos"
-
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Mostrar a _data"
-
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "Formato de _12 horas"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "Formato de _24 horas"
-
-#: ../js/ui/appDisplay.js:215
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "APLICATIVOS"
-#: ../js/ui/appDisplay.js:245
-msgid "PREFERENCES"
-msgstr "PREFERÊNCIAS"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "CONFIGURAÇÕES"
-#: ../js/ui/appDisplay.js:542
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Nova janela"
-#: ../js/ui/appDisplay.js:546
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Remover dos favoritos"
-#: ../js/ui/appDisplay.js:547
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Adicionar aos favoritos"
@@ -400,228 +228,757 @@ msgstr "%s foi adicionado aos seus favoritos."
msgid "%s has been removed from your favorites."
msgstr "%s foi removido dos seus favoritos."
-#: ../js/ui/dash.js:27
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Dia todo"
+
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
+
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
+
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "D"
+
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "S"
+
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "T"
+
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "Q"
+
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "Q"
+
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "S"
+
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
+
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Dom"
+
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Seg"
+
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Ter"
+
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Qua"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Qui"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Sex"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Sab"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Nada agendado"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Hoje"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Amanhã"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Esta semana"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Próxima semana"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Remover"
-#: ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "DOCUMENTOS RECENTES"
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Configurações de data e hora"
-#: ../js/ui/lookingGlass.js:552
-msgid "No extensions installed"
-msgstr "Nenhuma extensão instalada"
-
-#: ../js/ui/lookingGlass.js:589
-msgid "Enabled"
-msgstr "Habilitado"
-
-#. translators:
-#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087
-msgid "Disabled"
-msgstr "Desabilitado"
-
-#: ../js/ui/lookingGlass.js:593
-msgid "Error"
-msgstr "Erro"
-
-#: ../js/ui/lookingGlass.js:595
-msgid "Out of date"
-msgstr "Expirado"
-
-#: ../js/ui/lookingGlass.js:620
-msgid "View Source"
-msgstr "Ver fonte"
-
-#: ../js/ui/lookingGlass.js:626
-msgid "Web Page"
-msgstr "Página Web"
-
-#: ../js/ui/overview.js:112
-msgid "Undo"
-msgstr "Desfazer"
-
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:470
-#, c-format
-msgid "Quit %s"
-msgstr "Sair de %s"
-
-#: ../js/ui/panel.js:495
-msgid "Preferences"
-msgstr "Preferências"
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Abrir calendário"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:581
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
-#: ../js/ui/panel.js:582
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %b %e, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:586
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/panel.js:587
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:594
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e de %b, %H:%M:%S"
-#: ../js/ui/panel.js:595
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e de %b, %H:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:599
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %H:%M:%S"
-#: ../js/ui/panel.js:600
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %H:%M"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %B %e, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "DOCUMENTOS RECENTES"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Encerrar sessão %s"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
+msgid "Log Out"
+msgstr "Encerrar sessão"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Clique em Encerrar sessão para finalizar estes aplicativos e sair "
+"do sistema."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s encerrará a sessão automaticamente em %d segundos."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Sua sessão será encerrada automaticamente em %d segundos."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Encerrando sessão do sistema."
+
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Desligar"
+
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Clique em Desligar para fechar os aplicativos e desligar o sistema."
+
+#: ../js/ui/endSessionDialog.js:77
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "O sistema será desligado automaticamente em %d segundos."
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "Desligando o sistema."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
+msgid "Restart"
+msgstr "Reiniciar"
+
+#: ../js/ui/endSessionDialog.js:89
+msgid "Click Restart to quit these applications and restart the system."
+msgstr "Clique em Reiniciar para fechar os aplicativos e reiniciar o sistema."
+
+#: ../js/ui/endSessionDialog.js:90
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "O sistema será reiniciado automaticamente em %d segundos."
+
+#: ../js/ui/endSessionDialog.js:91
+msgid "Restarting the system."
+msgstr "Reiniciando o sistema."
+
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Nenhuma extensão instalada"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Habilitado"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Desabilitado"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Erro"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Expirado"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Ver fonte"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Página Web"
+
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "Abrir"
+
+#: ../js/ui/messageTray.js:2145
+msgid "System Information"
+msgstr "Informação do sistema"
+
+#: ../js/ui/overview.js:91
+msgid "Undo"
+msgstr "Desfazer"
+
+#: ../js/ui/overview.js:186
+msgid "Windows"
+msgstr "Janelas"
+
+#: ../js/ui/overview.js:189
+msgid "Applications"
+msgstr "Aplicativos"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "Dash"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Sair de %s"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:745
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Atividades"
-#: ../js/ui/placeDisplay.js:111
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Barra superior"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Erro ao desmontar \"%s\""
-#: ../js/ui/placeDisplay.js:114
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Tentar novamente"
-#: ../js/ui/placeDisplay.js:159
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Conectar ao..."
-#: ../js/ui/placeDisplay.js:558
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "LOCAIS & DISPOSITIVOS"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+#| msgid "authentication required"
+msgid "Authentication Required"
+msgstr "Autenticação necessária"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administrador"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+#| msgid "authentication required"
+msgid "Authenticate"
+msgstr "Autenticação"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Desculpe, isto não funcionou. Por favor, tente novamente."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Senha:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:33
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Por favor digite um comando:"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "A execução de \"%s\" falhou:"
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "Pesquisando..."
-#: ../js/ui/statusMenu.js:101
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "Nenhum resultado encontrado."
+
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "Desligar..."
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "Suspender"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Disponível"
-#: ../js/ui/statusMenu.js:106
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Ocupado"
-#: ../js/ui/statusMenu.js:114
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Minha conta"
-#: ../js/ui/statusMenu.js:118
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Configurações do sistema"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Bloquear a tela"
-#: ../js/ui/statusMenu.js:129
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Alternar usuário"
-#: ../js/ui/statusMenu.js:134
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Encerrar sessão..."
-#: ../js/ui/statusMenu.js:141
-msgid "Suspend..."
-msgstr "Suspender..."
-
-#: ../js/ui/statusMenu.js:145
-msgid "Shut Down..."
-msgstr "Desligar..."
-
-#: ../js/ui/status/accessibility.js:82
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Ampliador"
-#: ../js/ui/status/accessibility.js:88
-msgid "Screen Reader"
-msgstr "Leitor de tela"
-
-#: ../js/ui/status/accessibility.js:91
-msgid "Screen Keyboard"
-msgstr "Teclado na tela"
-
-#: ../js/ui/status/accessibility.js:94
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Alertas visuais"
-#: ../js/ui/status/accessibility.js:97
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Teclas de aderência"
-#: ../js/ui/status/accessibility.js:100
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Teclas lentas"
-#: ../js/ui/status/accessibility.js:103
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Teclas de repercussão"
-#: ../js/ui/status/accessibility.js:106
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Teclas do mouse"
-#: ../js/ui/status/accessibility.js:110
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Configurações de acesso universal"
-#: ../js/ui/status/accessibility.js:163
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Alto contraste"
-#: ../js/ui/status/accessibility.js:205
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Texto grande"
-#: ../js/ui/status/power.js:87
-msgid "What's using power..."
-msgstr "Onde a energia está sendo gasta..."
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
-#: ../js/ui/status/power.js:90
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Visibilidade"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Enviar arquivos para o dispositivo..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Configurar um novo dispositivo..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Configurações de Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Conexão"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Enviar arquivos..."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Explorar arquivos..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Erro ao navegar no dispositivo"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "O dispositivo requerido não pode ser explorado, o erro é \"%s\""
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Configurações de teclado"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Configurações do mouse"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Configurações de som"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Autorização requerida de %s"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "O dispositivo %s deseja acessar o serviço \"%s\""
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Sempre permitir acesso"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Permitir apenas desta vez"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Rejeitar"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Confirmação de emparelhamento para %s"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "O dispositivo %s deseja parear com este computador"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Por favor confirme se o PIN \"%s\"' é o mesmo do dispositivo."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Corresponde"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Não corresponde"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Requisição de pareamento para %s"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Por favor, informe o PIN mencionado no dispositivo."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "OK"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Exibir Layout de teclado..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Configurações de localização"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "desabilitado"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "conectando..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "autenticação necessária"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cabo desconectado"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "indisponível"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "conexão falhou"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Conectado (privado)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Rede cabeada - automática"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Banda larga - automática"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Conexão discada - automática"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s - automática"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth automático"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Rede sem fio automática"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Mais..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Habilitar rede"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Cabeada"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Sem fio"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Banda larga móvel"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Conexões VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Configurações de rede"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Você está agora conectado à rede banda larga móvel \"%s\""
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Você está agora conectado à rede sem fios \"%s\""
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Você está agora conectado à rede cabeada \"%s\""
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Você está agora conectado à rede VPN \"%s\""
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Você está agora conectado à \"%s\""
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Conexão estabelecida"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Rede está desabilitada"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Gerenciador de rede"
+
+#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Gerenciamento de energia..."
-#: ../js/ui/status/power.js:117
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Estimando..."
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -629,118 +986,139 @@ msgstr[0] "%d hora restante"
msgstr[1] "%d horas restantes"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s e %d %s restantes"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "hora"
msgstr[1] "horas"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minuto"
msgstr[1] "minutos"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minuto restante"
msgstr[1] "%d minutos restantes"
-#: ../js/ui/status/power.js:244
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Tomada"
-#: ../js/ui/status/power.js:246
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Bateria do laptop"
-#: ../js/ui/status/power.js:248
+#: ../js/ui/status/power.js:232
msgid "UPS"
-msgstr "UPS"
+msgstr "No-break"
-#: ../js/ui/status/power.js:250
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:252
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Mouse"
-#: ../js/ui/status/power.js:254
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Teclado"
-#: ../js/ui/status/power.js:256
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:258
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Telefone celular"
-#: ../js/ui/status/power.js:260
+#: ../js/ui/status/power.js:244
msgid "Media player"
-msgstr "Reprodutor de música"
+msgstr "Reprodutor de mídia"
-#: ../js/ui/status/power.js:262
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablet"
-#: ../js/ui/status/power.js:264
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Computador"
-#: ../js/ui/status/power.js:266 ../src/shell-app-system.c:1012
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Desconhecido"
-#: ../js/ui/status/volume.js:41
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volume"
-#: ../js/ui/status/volume.js:54
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Microfone"
-#: ../js/ui/status/volume.js:62
-msgid "Sound Settings"
-msgstr "Configurações de som"
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s está conectado."
-#: ../js/ui/viewSelector.js:26
-msgid "Search your computer"
-msgstr "Pesquise no seu computador"
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s está desconectado."
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s está ausente."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s está ocupado."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Enviado para %X em %A"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Digite para buscar..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Pesquisar"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s terminou sua inicialização"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "\"%s\" está pronto"
-#: ../js/ui/workspacesView.js:244
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Não é possível adicionar um novo espaço de trabalho porque foi atingido o "
-"limite."
-
-#: ../js/ui/workspacesView.js:260
-msgid "Can't remove the first workspace."
-msgstr "Não é possível remover o primeiro espaço de trabalho."
-
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -749,49 +1127,70 @@ msgstr[1] "%u saídas"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u entrada"
msgstr[1] "%u entradas"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Sons do sistema"
-#: ../src/shell-global.c:1163
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "Versão de impressão"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Erro ao lançar \"%s\""
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Há menos de um minuto"
-#: ../src/shell-global.c:1167
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Há %d minuto"
msgstr[1] "Há %d minutos"
-#: ../src/shell-global.c:1172
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Há %d hora"
msgstr[1] "Há %d horas"
-#: ../src/shell-global.c:1177
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "Há %d dia"
msgstr[1] "Há %d dias"
-#: ../src/shell-global.c:1182
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "Há %d semana"
msgstr[1] "Há %d semanas"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Reino unido"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Padrão"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "O diálogo de autenticação foi descartado pelo usuário"
+
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Pasta pessoal"
@@ -802,10 +1201,6 @@ msgstr "Pasta pessoal"
msgid "File System"
msgstr "Sistema de arquivos"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "Pesquisar"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -816,78 +1211,3 @@ msgstr "Pesquisar"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
-#~ msgid "Overview workspace view mode"
-#~ msgstr "Resumo do modo de visão de áreas de trabalho"
-
-#~ msgid ""
-#~ "The selected workspace view mode in the overview. Supported values are "
-#~ "\"single\" and \"grid\"."
-#~ msgstr ""
-#~ "O o modo de visão do espaço de trabalho na visão geral. Valores aceitos "
-#~ "são: \"single\" e \"grid\"."
-
-#~ msgid "Drag here to add favorites"
-#~ msgstr "Arraste até aqui para adicionar aos favoritos"
-
-#~ msgid "Find"
-#~ msgstr "Localizar"
-
-#~ msgid "Searching..."
-#~ msgstr "Pesquisando..."
-
-#~ msgid "No matching results."
-#~ msgstr "Nenhum resultado encontrado."
-
-#~ msgid "Invisible"
-#~ msgstr "Invisível"
-
-#~ msgid "ON"
-#~ msgstr "⚪"
-
-#~ msgid "OFF"
-#~ msgstr "⚫"
-
-#~ msgid "Account Information..."
-#~ msgstr "Informação da conta..."
-
-#~ msgid "Sidebar"
-#~ msgstr "Barra lateral"
-
-#~ msgid "%H:%M"
-#~ msgstr "%H:%M"
-
-#~ msgid "Applications"
-#~ msgstr "Aplicativos"
-
-#~ msgid "Recent Documents"
-#~ msgstr "Documentos recentes"
-
-#~ msgid "PLACES"
-#~ msgstr "LOCAIS"
-
-#~ msgid "SEARCH RESULTS"
-#~ msgstr "RESULTADOS DA BUSCA"
-
-#~ msgid "Can't lock screen: %s"
-#~ msgstr "Não foi possível travar a tela: %s"
-
-#~ msgid "Can't temporarily set screensaver to blank screen: %s"
-#~ msgstr "Não foi possível definir a proteção de tela para uma tela vazia: %s"
-
-#~ msgid "Can't logout: %s"
-#~ msgstr "Não foi possível encerrar a sessão: %s"
-
-#~ msgid "Browse"
-#~ msgstr "Navegar"
-
-#~ msgid "(see all)"
-#~ msgstr "(veja todos)"
-
-#~ msgid "Find apps or documents"
-#~ msgstr "Localizar aplicativos ou documentos"
-
-#~ msgid "Manager"
-#~ msgstr "Gerenciador"
-
-#~ msgid "The user manager object this user is controlled by."
-#~ msgstr "O objeto gerenciador de usuários que controla este usuário."
diff --git a/po/ro.po b/po/ro.po
index da37b0fc3..92ebf7a0a 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2011-03-13 00:31+0000\n"
-"PO-Revision-Date: 2011-03-13 01:25+0200\n"
+"POT-Creation-Date: 2011-03-17 21:07+0000\n"
+"PO-Revision-Date: 2011-03-17 11:00+0200\n"
"Last-Translator: Lucian Adrian Grijincu \n"
"Language-Team: Romanian Gnome Team \n"
"MIME-Version: 1.0\n"
@@ -177,21 +177,17 @@ msgstr "Dacă să se colecteze statistici despre utilizarea aplicațiilor"
msgid "disabled OpenSearch providers"
msgstr "furnizori OpenSearch dezactivați"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Comanda nu a fost găsită"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Nu s-a putut analiza comanda:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Nu există această aplicație"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Execuția comenzii „%s” a eșuat:"
@@ -377,7 +373,7 @@ msgstr "Această săptămână"
msgid "Next week"
msgstr "Săptămâna viitoare"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
msgid "Remove"
msgstr "Elimină"
@@ -432,7 +428,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@@ -510,7 +506,7 @@ msgstr "Repornirea sistemului."
msgid "Confirm"
msgstr "Confirm"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:465
msgid "Cancel"
msgstr "Anulează"
@@ -544,11 +540,11 @@ msgstr "Vezi sursa"
msgid "Web Page"
msgstr "Pagină web"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:926
msgid "Open"
msgstr "Deschide"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:1986
msgid "System Information"
msgstr "Informații despre sistem"
@@ -564,25 +560,26 @@ msgstr "Ferestre"
msgid "Applications"
msgstr "Aplicații"
+# LG: WTF? cum traducem asta?
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:202
msgid "Dash"
-msgstr ""
+msgstr "Dash"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Închide %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Activități"
-#: ../js/ui/panel.js:1020
+#: ../js/ui/panel.js:975
msgid "Panel"
msgstr "Panou"
@@ -599,7 +596,7 @@ msgstr "Reîncearcă"
msgid "Connect to..."
msgstr "Conectare la..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "LOCAȚII & DISPOZITIVE"
@@ -608,7 +605,7 @@ msgstr "LOCAȚII & DISPOZITIVE"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@@ -664,14 +661,12 @@ msgstr "Ieși din sesiune..."
msgid "Zoom"
msgstr "Zoom"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Cititor de ecran"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Tastatură pe ecran"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Alerte vizuale"
@@ -696,17 +691,17 @@ msgstr "Taste maus"
msgid "Universal Access Settings"
msgstr "Configurări acces universal"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Contrast puternic"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Text mare"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:236
+#: ../js/ui/status/bluetooth.js:332 ../js/ui/status/bluetooth.js:366
+#: ../js/ui/status/bluetooth.js:406 ../js/ui/status/bluetooth.js:439
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -726,94 +721,94 @@ msgstr "Configurează un dispozitiv nou..."
msgid "Bluetooth Settings"
msgstr "Configurări Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:187
msgid "Connection"
msgstr "Conexiune"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:223
msgid "Send Files..."
msgstr "Trimite fișiere..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:228
msgid "Browse Files..."
msgstr "Alege fișiere..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:237
msgid "Error browsing device"
msgstr "Eroare la navigarea dispozitivului"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:238
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Dispozitivul cerut nu poate fi navigat, eroarea este „%s”"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:246
msgid "Keyboard Settings"
msgstr "Configurări tastatură"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:251
msgid "Mouse Settings"
msgstr "Configurări maus"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:66
+#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Configurări sunet"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:367
#, c-format
msgid "Authorization request from %s"
msgstr "Cerere de autorizare de la %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:373
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Dispozitivul %s dorește acces la serviciul „%s”"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:375
msgid "Always grant access"
msgstr "Acordă acces întotdeauna"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:376
msgid "Grant this time only"
msgstr "Acordă acces doar de data aceasta"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:377
msgid "Reject"
msgstr "Respinge"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:407
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Se asociază confirmarea pentru %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:413 ../js/ui/status/bluetooth.js:447
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Dispozitivul %s dorește să se asocieze cu acest computer"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:414
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Confirmați dacă codul PIN „%s” se potrivește cu cel de pe dispozitiv."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:416
msgid "Matches"
msgstr "Se potrivește"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:417
msgid "Does not match"
msgstr "Nu se potrivește"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:440
#, c-format
msgid "Pairing request for %s"
msgstr "Cerere de asociere de la %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:448
msgid "Please enter the PIN mentioned on the device."
msgstr "Introduceți codul PIN menționat pe dispozitiv."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:464
msgid "OK"
msgstr "OK"
@@ -825,17 +820,147 @@ msgstr "Arată aranjamentu tastaturii..."
msgid "Localization Settings"
msgstr "Configurări de localizare"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "dezactivat"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "se conectează..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "necesită autentificare"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cablu deconectat"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "indisponibil"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "conexiune eșuată"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Conectat (privat)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet (automat)"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Rețea de bandă largă (automat)"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Dial-up (automat)"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "%s (automat)"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Bluetooth (automat)"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Rețea fără fir (automat)"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Mai multe..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Activează rețeaua"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Cu fir"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Fără fir"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Internet mobil de bandă largă"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Conexiuni VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Configurări de rețea"
+
+#: ../js/ui/status/network.js:1782
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "V-ați conectat la rețeaua mobilă de bandă largă „%s”"
+
+#: ../js/ui/status/network.js:1786
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "V-ați conectat la rețeaua fără fir „%s”"
+
+#: ../js/ui/status/network.js:1790
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "V-ați conectat la rețeaua cu fir „%s”"
+
+#: ../js/ui/status/network.js:1794
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "V-ați conectat la rețeaua VPN „%s”"
+
+#: ../js/ui/status/network.js:1799
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "V-ați conectat la „%s”"
+
+#: ../js/ui/status/network.js:1807
+msgid "Connection established"
+msgstr "Conexiune stabilită"
+
+#: ../js/ui/status/network.js:1929
+msgid "Networking is disabled"
+msgstr "Reţeaua este dezactivată"
+
+#: ../js/ui/status/network.js:2054
+msgid "Network Manager"
+msgstr "Administrator de rețea"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Configurări de alimentare"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Se estimează..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -844,26 +969,26 @@ msgstr[1] "Au mai rămas %d ore"
msgstr[2] "Au mai rămas %d de ore"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "Au mai rămas %d %s %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "oră"
msgstr[1] "ore"
msgstr[2] "de ore"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minut"
msgstr[1] "minute"
msgstr[2] "de minute"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -871,51 +996,51 @@ msgstr[0] "A mai rămas un minut"
msgstr[1] "Au mai rămas %d minute"
msgstr[2] "Au mai rămas %d de minute"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Adaptor conectat la rețeaua electrică"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Baterie laptop"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Monitor"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Maus"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Tastatură"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Telefon mobil"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Media player"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tabletă"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Calculator"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
msgid "Unknown"
msgstr "Necunoscut"
@@ -927,22 +1052,22 @@ msgstr "Volum"
msgid "Microphone"
msgstr "Microfon"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s este conectat."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s este deconectat."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s este absent."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s este ocupat."
@@ -950,7 +1075,7 @@ msgstr "%s este ocupat."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Trimis la %X pe data de %A"
@@ -1001,15 +1126,20 @@ msgstr[2] "%u de intrări"
msgid "System Sounds"
msgstr "Sunetele sistemului"
-#: ../src/main.c:395
+#: ../src/main.c:397
msgid "Print version"
msgstr "Tipărește versiunea"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Nu s-a putut lansa „%s”"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Cu mai puțin de un minut în urmă"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1017,7 +1147,7 @@ msgstr[0] "Acum un minut"
msgstr[1] "Acum %d minute"
msgstr[2] "Acum %d de minute"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1025,7 +1155,7 @@ msgstr[0] "Acum o oră"
msgstr[1] "Acum %d ore"
msgstr[2] "Acum %d de ore"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1033,7 +1163,7 @@ msgstr[0] "Acum o zi"
msgstr[1] "Acum %d zile"
msgstr[2] "Acum %d de zile"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1041,6 +1171,14 @@ msgstr[0] "Acum o săptămână"
msgstr[1] "Acum %d săptămâni"
msgstr[2] "Acum %d de săptămâni"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Marea Britanie"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Implicit"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialogul de autentificare a fost respins de utilizator"
@@ -1065,6 +1203,15 @@ msgstr "Sistem de fișiere"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "No such application"
+#~ msgstr "Nu există această aplicație"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Cititor de ecran"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Tastatură pe ecran"
+
#~ msgid "PREFERENCES"
#~ msgstr "PREFERINȚE"
@@ -1308,9 +1455,6 @@ msgstr "%1$s: %2$s"
#~ msgid "Frequent"
#~ msgstr "Frecvent"
-#~ msgid "More"
-#~ msgstr "Mai multe"
-
#~ msgid "(see all)"
#~ msgstr "(arată tot)"
diff --git a/po/ru.po b/po/ru.po
index abdf41d02..54d018564 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,21 +4,20 @@
#
# Andrey Korzinev , 2009.
# Sergey V. Kovylov , 2009.
-# Marina Zhurakhinskaya , 2009.
-#
+# Marina Zhurakhinskaya , 2009, 2010.
+# Sergey Davidoff , 2010.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=general\n"
-"POT-Creation-Date: 2009-10-09 00:27-0400\n"
-"PO-Revision-Date: 2009-10-09 00:27-0400\n"
-"Last-Translator: Marina Zhurakhinskaya \n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-22 01:51+0000\n"
+"PO-Revision-Date: 2011-03-22 21:17+0400\n"
+"Last-Translator: Yuri Myaseodov \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@@ -28,105 +27,1100 @@ msgstr "GNOME Shell"
msgid "Window management and application launching"
msgstr "Управление окнами и запуск приложений"
-#: ../js/ui/appDisplay.js:335
-msgid "Frequent"
-msgstr "Часто используемые"
+#: ../data/org.gnome.shell.gschema.xml.in.h:1
+msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
+msgstr "Разрешает доступ ко внутренней отладке и инструментам наблюдения, используя диалог Alt-F2."
-#: ../js/ui/appIcon.js:462
-msgid "New Window"
-msgstr "Новое окно"
+#: ../data/org.gnome.shell.gschema.xml.in.h:2
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров"
-#: ../js/ui/appIcon.js:475
-msgid "Remove from Favorites"
-msgstr "Удалить из избранного"
+#: ../data/org.gnome.shell.gschema.xml.in.h:3
+msgid "File extension used for storing the screencast"
+msgstr "Расширение файла, использующееся для хранения скринкастов"
-#: ../js/ui/appIcon.js:476
-msgid "Add to Favorites"
-msgstr "Добавить в избранное"
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
+msgid "Framerate used for recording screencasts."
+msgstr "Частота смены кадров для записи скринкастов."
-#: ../js/ui/dash.js:283
-msgid "Find..."
-msgstr "Найти…"
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
+msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should not be loaded."
+msgstr "У расширений GNOME Shell есть свойство uuid; этот ключ перечисляет раширения, которые не должны загружаться."
-#: ../js/ui/dash.js:400
-msgid "More"
-msgstr "Ещё"
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "История команд диалога (Alt-F2)"
-#: ../js/ui/dash.js:543
-#: "(увидеть все)" does not fit when it is next to "НЕДАВНИЕ ДОКУМЕНТЫ", so I'm just using "(все)"
-msgid "(see all)"
-msgstr "(все)"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "История просмотра прозрачного диалога"
-#. **** Applications ****
-#: ../js/ui/dash.js:763 ../js/ui/dash.js:825
-msgid "APPLICATIONS"
-msgstr "ПРИЛОЖЕНИЯ"
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Если установлено, то в часах будет показана дата."
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:783
-msgid "PLACES"
-msgstr "ПАПКИ И РЕСУРСЫ"
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
+msgid "If true, display seconds in time."
+msgstr "Если установлено, то время будет указано с секундами."
-#. **** Documents ****
-#: ../js/ui/dash.js:790 ../js/ui/dash.js:835
-msgid "RECENT DOCUMENTS"
-msgstr "НЕДАВНИЕ ДОКУМЕНТЫ"
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
+msgid "If true, display the ISO week date in the calendar."
+msgstr "Если установлено, календарь будет показывать неделю в формате ISO."
-#. **** Search Results ****
-#: ../js/ui/dash.js:815 ../js/ui/dash.js:955
-msgid "SEARCH RESULTS"
-msgstr "РЕЗУЛЬТАТЫ ПОИСКА"
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
+msgid "List of desktop file IDs for favorite applications"
+msgstr "Список идентификаторов desktop-файлов для избранных приложений"
-#: ../js/ui/dash.js:830
-msgid "PREFERENCES"
-msgstr "НАСТРОЙКИ"
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#, no-c-format
+msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
+msgstr "Устанавливает конвейер GStreamer для кодирования записей. Соответствует синтаксису, используемому для gst-launch. Конвейер должен иметь неподключенный входной коннектор, где происходит запись видео. Выход коннектора обычно отключён, выход с этого коннектора записывается в файл вывода. Однако конвейер также может позаботиться о своём выводе, что можно использовать для отправки вывода на сервер icecast через shout2send или нечто подобное. При сбросе или установке пустого значения будет использоваться конвейер по умолчанию. В данный момент это «videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux»; запись выполняется в WEBM с помощью кодека VP8. %T используется как заполнитель для определения оптимального количества потоков в системе."
-#. Button on the left side of the panel.
-#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:272
-#. Another word that was considered was "Обзор", but it was decided that it doesn't give a full sense of the actions
-#. possible when in the overview mode.
-msgid "Activities"
-msgstr "Действия"
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "Показывать в часах дату"
-#. Translators: This is a time format.
-#: ../js/ui/panel.js:464
-msgid "%a %l:%M %p"
-msgstr "%a, %H:%M"
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
+msgid "Show the week date in the calendar"
+msgstr "Показывать в часах дату недели"
-#: ../js/ui/places.js:178
-msgid "Connect to..."
-msgstr "Соединиться с…"
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
+msgid "Show time with seconds"
+msgstr "Показывать секунды"
-#: ../js/ui/runDialog.js:96
-msgid "Please enter a command:"
-msgstr "Введите команду:"
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
+msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
+msgstr "Приложения, соответствующие этих идентификаторам, будут показаны в области изобранных приложений."
-#: ../js/ui/runDialog.js:173
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
+msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
+msgstr "Имя файла записанного скринкаста будет уникальным именем, основанным на текущей дате, и использует это расширение. Оно должно быть изменено, если запись выполняется в другой контейнерный формат."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
+msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
+msgstr "Частота смены кадров в скринкасте, записанном с помощью GNOME Shell (кадров/сек)."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
+msgid "The gstreamer pipeline used to encode the screencast"
+msgstr "Конвейер gstreamer, используемый для кодирования скринкастов"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
+msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
+msgstr "Обычно, оболочка отслеживает активные приложения, чтобы определить наиболее используемые приложения. Хотя эти данные хранятся как личные, возможно вы захотите отключить эту возможность из соображений безопасности. Это не приведёт к удалению уже сохранённых данных."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "Выключить расширения с uuid"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr "Собирать ли статистику об использовании приложений"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "отключённые провайдеры OpenSearch"
+
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Команда не найдена"
+
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+#| msgid "Please enter a command:"
+msgid "Could not parse command:"
+msgstr "Не удалось разобрать команду:"
+
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не удалось выполнить «%s»:"
-#. Translators: This is a time format.
-#: ../js/ui/widget.js:162
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:230
+msgid "All"
+msgstr "Все"
+
+#: ../js/ui/appDisplay.js:328
+msgid "APPLICATIONS"
+msgstr "ПРИЛОЖЕНИЯ"
+
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "ПАРАМЕТРЫ"
+
+#: ../js/ui/appDisplay.js:620
+msgid "New Window"
+msgstr "Новое окно"
+
+#: ../js/ui/appDisplay.js:623
+msgid "Remove from Favorites"
+msgstr "Удалить из избранного"
+
+#: ../js/ui/appDisplay.js:624
+msgid "Add to Favorites"
+msgstr "Добавить в избранное"
+
+#: ../js/ui/appFavorites.js:91
+#, c-format
+msgid "%s has been added to your favorites."
+msgstr "%s добавлен в избранное."
+
+#: ../js/ui/appFavorites.js:122
+#, c-format
+#| msgid "Remove from Favorites"
+msgid "%s has been removed from your favorites."
+msgstr "%s удалён из избранных."
+
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Весь день"
+
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+#| msgid "%H:%M"
+msgctxt "event list time"
msgid "%H:%M"
msgstr "%H:%M"
-#: ../js/ui/widget.js:316
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+#| msgid "%a %l:%M %p"
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
+
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "Вс"
+
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "Пн"
+
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "Вт"
+
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "Ср"
+
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "Чт"
+
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "Пт"
+
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "Сб"
+
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Вс"
+
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Пн"
+
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Вт"
+
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Ср"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Чт"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Пт"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Сб"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Нет событий"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Сегодня"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Завтра"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Эта неделя"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Следующая неделя"
+
+#: ../js/ui/dash.js:174
+#: ../js/ui/messageTray.js:945
+msgid "Remove"
+msgstr "Удалить"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Параметры даты и времени"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Открыть календарь"
+
+#. Translators: This is the time format with date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:164
+msgid "%a %b %e, %R:%S"
+msgstr "%a %b %e, %R:%S"
+
+#: ../js/ui/dateMenu.js:165
+#| msgid "%a %l:%M %p"
+msgid "%a %b %e, %R"
+msgstr "%a %b %e, %R"
+
+#. Translators: This is the time format without date used
+#. in 24-hour mode.
+#: ../js/ui/dateMenu.js:169
+#| msgid "%a %l:%M %p"
+msgid "%a %R:%S"
+msgstr "%a %R:%S"
+
+#: ../js/ui/dateMenu.js:170
+msgid "%a %R"
+msgstr "%a %R"
+
+#. Translators: This is a time format with date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:177
+#| msgid "%a %l:%M %p"
+msgid "%a %b %e, %l:%M:%S %p"
+msgstr "%a %b %e, %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:178
+#| msgid "%a %l:%M %p"
+msgid "%a %b %e, %l:%M %p"
+msgstr "%a %b %e, %l:%M %p"
+
+#. Translators: This is a time format without date used
+#. for AM/PM.
+#: ../js/ui/dateMenu.js:182
+#| msgid "%a %l:%M %p"
+msgid "%a %l:%M:%S %p"
+msgstr "%a %l:%M:%S %p"
+
+#: ../js/ui/dateMenu.js:183
+msgid "%a %l:%M %p"
+msgstr "%a, %H:%M"
+
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %B %e, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "НЕДАВНИЕ ДОКУМЕНТЫ"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+#| msgid "Log Out..."
+msgid "Log Out %s"
+msgstr "Вывести из системы пользователя %s"
+
+#: ../js/ui/endSessionDialog.js:64
+#: ../js/ui/endSessionDialog.js:69
+#| msgid "Log Out..."
+msgid "Log Out"
+msgstr "Выйти из системы"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr "Нажмите «Выйти из системы», чтобы закрыть эти приложения и выйти из системы."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "Пользователь %s будет автоматически выведен из системы через %d сек."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Вы автоматически выйдете систему через %d сек."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Выход из системы."
+
+#: ../js/ui/endSessionDialog.js:74
+#: ../js/ui/endSessionDialog.js:78
+#| msgid "Shut Down..."
+msgid "Shut Down"
+msgstr "Выключить"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Нажмите «Выключить», чтобы закрыть эти приложения и выключить систему."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Система будет автоматически выключена через %d сек."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Выключение системы."
+
+#: ../js/ui/endSessionDialog.js:84
+#: ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Перезапустить"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr "Нажмите «Перезапустить», чтобы закрыть эти приложения и перезапустить систему."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Система будет автоматически перезапущена через %d сек."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Перезапуск системы."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Подтвердить"
+
+#: ../js/ui/endSessionDialog.js:400
+#: ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Отмена"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Расширения не установлены"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Включено"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627
+#: ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Выключено"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Ошибка"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Устарело"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Показать код"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Веб-страница"
+
+#: ../js/ui/messageTray.js:938
+msgid "Open"
+msgstr "Открыть"
+
+#: ../js/ui/messageTray.js:2018
+#| msgid "Account Information..."
+msgid "System Information"
+msgstr "Системная информация"
+
+#: ../js/ui/overview.js:89
+msgid "Undo"
+msgstr "Отменить"
+
+#: ../js/ui/overview.js:184
+#| msgid "New Window"
+msgid "Windows"
+msgstr "Окна"
+
+#: ../js/ui/overview.js:187
msgid "Applications"
msgstr "Приложения"
-#: ../js/ui/widget.js:341
-msgid "Recent Documents"
-msgstr "Недавние документы"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:203
+msgid "Dash"
+msgstr "Приборная панель"
-#: ../src/shell-global.c:812
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Закрыть %s"
+
+#. Button on the left side of the panel.
+#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
+#: ../js/ui/panel.js:876
+msgid "Activities"
+msgstr "Обзор"
+
+#: ../js/ui/panel.js:977
+msgid "Top Bar"
+msgstr "Верхняя панель"
+
+#: ../js/ui/placeDisplay.js:122
+#, c-format
+msgid "Failed to unmount '%s'"
+msgstr "Не удалось отмонтировать «%s»"
+
+#: ../js/ui/placeDisplay.js:125
+msgid "Retry"
+msgstr "Повторить"
+
+#: ../js/ui/placeDisplay.js:165
+msgid "Connect to..."
+msgstr "Соединиться с…"
+
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "МЕСТА И УСТРОЙСТВА"
+
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
+
+#: ../js/ui/runDialog.js:205
+msgid "Please enter a command:"
+msgstr "Введите команду:"
+
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "Поиск…"
+
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "Нет совпадений."
+
+#: ../js/ui/statusMenu.js:161
+#: ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "Выключить питание…"
+
+#: ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "Ждущий режим"
+
+#: ../js/ui/statusMenu.js:184
+msgid "Available"
+msgstr "Доступен"
+
+#: ../js/ui/statusMenu.js:189
+msgid "Busy"
+msgstr "Занят"
+
+#: ../js/ui/statusMenu.js:197
+msgid "My Account"
+msgstr "Моя учётная запись"
+
+#: ../js/ui/statusMenu.js:201
+msgid "System Settings"
+msgstr "Системные параметры"
+
+#: ../js/ui/statusMenu.js:208
+msgid "Lock Screen"
+msgstr "Заблокировать экран"
+
+#: ../js/ui/statusMenu.js:213
+msgid "Switch User"
+msgstr "Сменить пользователя"
+
+#: ../js/ui/statusMenu.js:218
+msgid "Log Out..."
+msgstr "Завершить сеанс…"
+
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Масштабирование"
+
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Визуальные предупреждения"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Залипающие клавиши"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Медленные клавиши"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Отскакивающие клавиши"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Клавиши мыши"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Параметры универсального доступа"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Высокая контрастность"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Крупный текст"
+
+#: ../js/ui/status/bluetooth.js:42
+#: ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333
+#: ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407
+#: ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Доступность"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Отправить файлы на устройство…"
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Настроить новое устройство…"
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Параметры Bluetooth"
+
+#: ../js/ui/status/bluetooth.js:188
+#| msgid "Connect to..."
+msgid "Connection"
+msgstr "Соединение"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Отправить файлы…"
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Обзор файлов…"
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Ошибка обзора устройства"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Не удалось выполнить обзор запрошенного устройства: %s"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Параметры клавиатуры"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Параметры мыши"
+
+#: ../js/ui/status/bluetooth.js:259
+#: ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Параметры звука"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Запрос авторизации от %s"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Устройство %s пытается получить доступ к службе «%s»"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Всегда предоставлять доступ"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Предоставить единовременно"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Извлечь"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Подтверждение на сопряжение с %s"
+
+#: ../js/ui/status/bluetooth.js:414
+#: ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Устройство %s пытается выполнить сопряжение с этим компьютером"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Подтвердите, совпадает ли PIN-код «%s» с кодом устройства."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Совпадает"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Не совпадает"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Запрос на сопряжение для %s"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Введите PIN-код устройства."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "OK"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Показать раскладку клавиатуры…"
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Параметры локализации"
+
+#: ../js/ui/status/network.js:102
+#: ../js/ui/status/network.js:1393
+#| msgid "Unknown"
+msgid ""
+msgstr "<неизвестно>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "выключено"
+
+#: ../js/ui/status/network.js:476
+#| msgid "Connect to..."
+msgid "connecting..."
+msgstr "соединение…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "требуется авторизация"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "кабель не подключен"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "недоступное"
+
+#: ../js/ui/status/network.js:491
+#| msgid "Execution of '%s' failed:"
+msgid "connection failed"
+msgstr "сбой подключения"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571
+#: ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Подключено (частное)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Автоматическое Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Автоматическое широкополосное"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Автоматическое коммутируемое"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843
+#: ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Автоматическое %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Автоматическое bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Автоматическое беспроводное"
+
+#: ../js/ui/status/network.js:1413
+#| msgid "More"
+msgid "More..."
+msgstr "Ещё…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Включить сеть"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Проводное"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Беспроводное"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Мобильное широкополосное"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Соединения VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Сетевые параметры"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Вы подключены по мобильному широкополосному соединению «%s»"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Вы подключены к беспроводной сети «%s»"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Вы подключены к проводной сети «%s»"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Вы подключены к сети VPN «%s»"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Вы подключены к «%s»"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Соединение установлено"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Сеть отключена"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Диспетчер сети"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Параметры питания"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Выполняется подсчёт…"
+
+#: ../js/ui/status/power.js:118
+#, c-format
+#| msgid "%d hour ago"
+#| msgid_plural "%d hours ago"
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "Остался %d час"
+msgstr[1] "Осталось %d часа"
+msgstr[2] "Осталось %d часов"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "Осталось %d %s %d %s"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "час"
+msgstr[1] "часа"
+msgstr[2] "часов"
+
+#: ../js/ui/status/power.js:123
+#| msgid "%d minute ago"
+#| msgid_plural "%d minutes ago"
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "минута"
+msgstr[1] "минуты"
+msgstr[2] "минут"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+#| msgid "%d minute ago"
+#| msgid_plural "%d minutes ago"
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "Осталась %d минута"
+msgstr[1] "Осталось %d минуты"
+msgstr[2] "Осталось %d минут"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Адаптер переменного тока"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Батарея ноутбука"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "ИБП"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Монитор"
+
+#: ../js/ui/status/power.js:236
+#| msgid "More"
+msgid "Mouse"
+msgstr "Мышь"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Клавиатура"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "КПК"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Мобильный телефон"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Медиаплеер"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Планшет"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Компьютер"
+
+#: ../js/ui/status/power.js:250
+#: ../src/shell-app-system.c:1088
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Громкость"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Микрофон"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "%s в сети."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "%s не в сети."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "%s ушёл."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "%s занят."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Отправлено %X %A"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Введите для поиска…"
+
+#: ../js/ui/viewSelector.js:142
+#: ../src/shell-util.c:250
+msgid "Search"
+msgstr "Поиск"
+
+#: ../js/ui/windowAttentionHandler.js:42
+#, c-format
+msgid "%s has finished starting"
+msgstr "Приложение %s завершило запуск"
+
+#: ../js/ui/windowAttentionHandler.js:44
+#, c-format
+msgid "'%s' is ready"
+msgstr "Приложение «%s» готово"
+
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u вывод"
+msgstr[1] "%u вывода"
+msgstr[2] "%u выводов"
+
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u вход"
+msgstr[1] "%u входа"
+msgstr[2] "%u входов"
+
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Системные звуки"
+
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Показать номер версии"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Не удалось запустить «%s»"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
-msgstr "Менее минуты назад"
+msgstr "Меньше минуты назад"
-#: ../src/shell-global.c:815
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -134,7 +1128,7 @@ msgstr[0] "%d минуту назад"
msgstr[1] "%d минуты назад"
msgstr[2] "%d минут назад"
-#: ../src/shell-global.c:818
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -142,7 +1136,7 @@ msgstr[0] "%d час назад"
msgstr[1] "%d часа назад"
msgstr[2] "%d часов назад"
-#: ../src/shell-global.c:821
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -150,7 +1144,7 @@ msgstr[0] "%d день назад"
msgstr[1] "%d дня назад"
msgstr[2] "%d дней назад"
-#: ../src/shell-global.c:824
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -158,76 +1152,35 @@ msgstr[0] "%d неделю назад"
msgstr[1] "%d недели назад"
msgstr[2] "%d недель назад"
-#: ../src/shell-status-menu.c:156
-msgid "Unknown"
-msgstr "Неизвестно"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Великобритания"
-#: ../src/shell-status-menu.c:212
-#, c-format
-msgid "Can't lock screen: %s"
-msgstr "Не удалось заблокировать экран: %s"
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "По умолчанию"
-#: ../src/shell-status-menu.c:227
-#, c-format
-msgid "Can't temporarily set screensaver to blank screen: %s"
-msgstr "Не удалось временно установить пустую экранную заставку: %s"
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Пользователь отклонил диалог аутентификации"
-#: ../src/shell-status-menu.c:351
-#, c-format
-msgid "Can't logout: %s"
-msgstr "Не удалось завершить сеанс пользователя: %s"
-
-#: ../src/shell-status-menu.c:492
-msgid "Account Information..."
-msgstr "Информация о пользователе…"
-
-#: ../src/shell-status-menu.c:502
-msgid "Sidebar"
-msgstr "Боковая панель"
-
-#: ../src/shell-status-menu.c:510
-msgid "System Preferences..."
-msgstr "Системные настройки…"
-
-#: ../src/shell-status-menu.c:525
-msgid "Lock Screen"
-msgstr "Заблокировать экран"
-
-#: ../src/shell-status-menu.c:535
-msgid "Switch User"
-msgstr "Сменить пользователя"
-
-#. Only show switch user if there are other users
-#. Log Out
-#: ../src/shell-status-menu.c:546
-msgid "Log Out..."
-msgstr "Завершить сеанс…"
-
-#. Shut down
-#: ../src/shell-status-menu.c:557
-msgid "Shut Down..."
-msgstr "Выключить…"
-
-#: ../src/shell-uri-util.c:87
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Домашняя папка"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:102
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Файловая система"
-#: ../src/shell-uri-util.c:248
-msgid "Search"
-msgstr "Поиск"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:298
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+
diff --git a/po/sl.po b/po/sl.po
index 65e028ce9..06ae7d119 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -2,20 +2,20 @@
# Copyright (C) 2006 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell package.
#
-# Matej Urbančič , 2009 - 2010.
+# Matej Urbančič , 2009 - 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=general\n"
-"POT-Creation-Date: 2011-03-09 04:06+0000\n"
-"PO-Revision-Date: 2011-03-09 13:14+0100\n"
+"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-22 20:39+0000\n"
+"PO-Revision-Date: 2011-03-22 21:52+0100\n"
"Last-Translator: Matej Urbančič \n"
"Language-Team: Slovenian GNOME Translation Team \n"
+"Language: Slovenian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: Slovenian\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
"X-Poedit-Language: Slovenian\n"
"X-Poedit-Country: SLOVENIA\n"
@@ -54,19 +54,16 @@ msgid "History for command (Alt-F2) dialog"
msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
-#, fuzzy
msgid "History for the looking glass dialog"
-msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)"
+msgstr "Zgodovina za pogovorno okno povečevalnega stekla"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-#, fuzzy
msgid "If true, display date in the clock, in addition to time."
-msgstr "Izbrana možnost omogoča ob času tudi prikaz datuma."
+msgstr "Izbrana možnost določi, da je ob času prikazan tudi datum."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-#, fuzzy
msgid "If true, display seconds in time."
-msgstr "Izbrana možnost omogoča prikaz sekund."
+msgstr "Izbrana možnost določi prikaz sekund v času."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
@@ -77,9 +74,9 @@ msgid "List of desktop file IDs for favorite applications"
msgstr "Seznam določil ID namiznih datotek priljubljenih programov"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
-msgstr "Določa cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki je uporabljena za gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'videorate ! theoraenc ! oggmux' in omogoča snemanje v zapis Ogg Theora."
+msgstr "Določa cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. %T se uporablja kot ročnik za ugibanje optimalnega števila niti na sistemu."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
@@ -122,53 +119,46 @@ msgid "Whether to collect stats about applications usage"
msgstr "Ali naj se beleži statistika uporabe programov"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
-#, fuzzy
msgid "disabled OpenSearch providers"
-msgstr "Seznam nameščenih ponudnikov"
+msgstr "ponudniki OpenSearch so bili onemogočeni"
-#: ../js/misc/util.js:86
-#, fuzzy
+#: ../js/misc/util.js:71
msgid "Command not found"
-msgstr "Ukaz ni najden."
+msgstr "Ukaz ni mogoče najti"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
-#, fuzzy
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
-msgstr "Ni mogoče razčleniti ukazne vrstice '%s': %s"
+msgstr "Ukaza ni mogoče razčleniti:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Ni takšnega programa"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Izvedba '%s' je spodletela:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Vse"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "Programi"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "NASTAVITVE"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Novo okno"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Odstrani iz priljubljenih"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Dodaj med priljubljene"
@@ -198,10 +188,9 @@ msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
#: ../js/ui/calendar.js:78
-#, fuzzy
msgctxt "event list time"
msgid "%l:%M %p"
-msgstr "%l:%M %p"
+msgstr "%H.%M"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
@@ -245,7 +234,6 @@ msgstr "P"
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:130
-#, fuzzy
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@@ -257,21 +245,18 @@ msgstr "S"
#. * both be 'T').
#.
#: ../js/ui/calendar.js:143
-#, fuzzy
msgctxt "list sunday"
msgid "Su"
-msgstr "ne"
+msgstr "Ne"
#. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:145
-#, fuzzy
msgctxt "list monday"
msgid "M"
-msgstr "M"
+msgstr "P"
#. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:147
-#, fuzzy
msgctxt "list tuesday"
msgid "T"
msgstr "T"
@@ -284,40 +269,35 @@ msgstr "S"
#. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:151
-#, fuzzy
msgctxt "list thursday"
msgid "Th"
-msgstr "če"
+msgstr "Če"
#. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:153
-#, fuzzy
msgctxt "list friday"
msgid "F"
-msgstr "F"
+msgstr "Pe"
#. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:155
-#, fuzzy
msgctxt "list saturday"
msgid "S"
msgstr "S"
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:704
-#, fuzzy
msgid "Nothing Scheduled"
-msgstr "Načrtovane naloge"
+msgstr "Nič ni razporejeno"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
-msgstr ""
+msgstr "%A, %d. %m."
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:723
-#, fuzzy
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B %Y"
@@ -339,7 +319,7 @@ msgid "Next week"
msgstr "Naslednji teden"
#: ../js/ui/dash.js:174
-#: ../js/ui/messageTray.js:933
+#: ../js/ui/messageTray.js:945
msgid "Remove"
msgstr "Odstrani"
@@ -394,8 +374,7 @@ msgstr "%a, %H:%M"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
-#, fuzzy
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%a, %e. %b., %R"
@@ -409,74 +388,67 @@ msgid "Log Out %s"
msgstr "Odjava %s"
#: ../js/ui/endSessionDialog.js:64
-#: ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Odjava"
#: ../js/ui/endSessionDialog.js:65
msgid "Click Log Out to quit these applications and log out of the system."
-msgstr ""
+msgstr "Kliknite Odjava za končanje teh programov in odjavo iz sistema."
#: ../js/ui/endSessionDialog.js:66
-#, fuzzy, c-format
+#, c-format
msgid "%s will be logged out automatically in %d seconds."
-msgstr "Samodejno boste odjavljeni čez %s sekund."
+msgstr "%s bo samodejno odjavljen čez %d sekund."
#: ../js/ui/endSessionDialog.js:67
-#, fuzzy, c-format
+#, c-format
msgid "You will be logged out automatically in %d seconds."
-msgstr "Samodejno boste odjavljeni čez %s sekund."
+msgstr "Samodejno boste odjavljeni čez %d sekund."
#: ../js/ui/endSessionDialog.js:68
-#, fuzzy
msgid "Logging out of the system."
-msgstr "Onemogoči odjavo"
-
-#: ../js/ui/endSessionDialog.js:74
-#: ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
-msgstr "Izklopi"
+msgstr "Odjavljanje iz sistema."
#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr ""
+#: ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Izklop"
#: ../js/ui/endSessionDialog.js:76
-#, fuzzy, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "Sistem se bo samodejno izklopil čez %s sekund."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Kliknite na gumb za izklop za končanje teh programov in izklop iz sistema."
#: ../js/ui/endSessionDialog.js:77
-#, fuzzy
-msgid "Shutting down the system."
-msgstr "Izklapljanje programa Evolution"
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Sistem se bo samodejno izklopil čez %d sekund."
-#: ../js/ui/endSessionDialog.js:84
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "Izklapljanje sistema"
+
+#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:88
-#, fuzzy
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
-msgstr "Ponoven zagon"
+msgstr "Zaženi znova"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
-msgstr ""
+msgstr "Kliknite Zaženi znova za končanje teh programov in ponoven zagon sistema. "
-#: ../js/ui/endSessionDialog.js:86
-#, fuzzy, c-format
+#: ../js/ui/endSessionDialog.js:90
+#, c-format
msgid "The system will restart automatically in %d seconds."
-msgstr "Sistem se bo samodejno ponovno zagnal čez %s sekund."
+msgstr "Sistem se bo samodejno ponovno zagnal čez %d sekund."
-#: ../js/ui/endSessionDialog.js:87
-#, fuzzy
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
-msgstr "Sistemski klic:"
+msgstr "Ponoven zagon sistema."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Potrdi"
-
-#: ../js/ui/endSessionDialog.js:400
-#: ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Prekliči"
@@ -491,7 +463,7 @@ msgstr "Omogočeno"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:627
-#: ../src/gvc/gvc-mixer-control.c:1087
+#: ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Onemogočeno"
@@ -511,48 +483,47 @@ msgstr "Poglej vir"
msgid "Web Page"
msgstr "Spletna stran"
-#: ../js/ui/messageTray.js:926
+#: ../js/ui/messageTray.js:938
msgid "Open"
msgstr "Odpri"
-#: ../js/ui/messageTray.js:1963
+#: ../js/ui/messageTray.js:2018
msgid "System Information"
msgstr "Podrobnosti sistema"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:89
msgid "Undo"
msgstr "Razveljavi"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:184
msgid "Windows"
msgstr "Okna"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:187
msgid "Applications"
msgstr "Programi"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:203
msgid "Dash"
-msgstr ""
+msgstr "Armaturna plošča"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Končaj %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Dejavnosti"
-#: ../js/ui/panel.js:1020
-#, fuzzy
-msgid "Panel"
-msgstr "Prekliči"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Vrhnja vrstica"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -567,7 +538,7 @@ msgstr "Poskusi znova"
msgid "Connect to..."
msgstr "Povezava z ..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "Mesta in naprave"
@@ -576,58 +547,57 @@ msgstr "Mesta in naprave"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Vnos ukaza:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Iskanje ..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Ni zadetkov iskanja"
-#: ../js/ui/statusMenu.js:102
-#: ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161
+#: ../js/ui/statusMenu.js:228
msgid "Power Off..."
-msgstr ""
+msgstr "Izklop ..."
-#: ../js/ui/statusMenu.js:104
-#: ../js/ui/statusMenu.js:165
-#, fuzzy
+#: ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:227
msgid "Suspend"
-msgstr "V pripravljenost"
+msgstr "Zaustavi"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Na voljo"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Zaposleno"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Račun"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Sistemske nastavitve"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Zakleni zaslon"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Preklopi uporabnika"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Odjava ..."
@@ -635,14 +605,12 @@ msgstr "Odjava ..."
msgid "Zoom"
msgstr "Približanje"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Zaslonski bralnik"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Zaslonska tipkovnica"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Vidna opozorila"
@@ -667,20 +635,20 @@ msgstr "Miškine tipke"
msgid "Universal Access Settings"
msgstr "Splošne nastavitve dostopa"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Visok kontrast"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Veliko besedilo"
#: ../js/ui/status/bluetooth.js:42
-#: ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337
-#: ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411
-#: ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333
+#: ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407
+#: ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -693,113 +661,103 @@ msgid "Send Files to Device..."
msgstr "Pošilji datoteke na napravo ..."
#: ../js/ui/status/bluetooth.js:70
-#, fuzzy
msgid "Setup a New Device..."
-msgstr "Namestitev nove naprave Bluetooth"
+msgstr "Namestitev nove naprave ..."
#: ../js/ui/status/bluetooth.js:95
-#, fuzzy
msgid "Bluetooth Settings"
msgstr "Nastavitve za Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Povezava"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Pošlji datoteke ..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Brskanje datotek ..."
-#: ../js/ui/status/bluetooth.js:242
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
-msgstr "Napaka med priklapljanjem naprave"
+msgstr "Napaka med brskanjem po napravi"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
-msgstr ""
+msgstr "Po zahtevani naprave ni mogoče brskati, napaka je '%s'"
-#: ../js/ui/status/bluetooth.js:251
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
-msgstr "Nastavitve računa"
+msgstr "Nastavitve tipkovnice"
-#: ../js/ui/status/bluetooth.js:256
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
-msgstr "Nastavitve računa"
+msgstr "Nastavitve miške"
-#: ../js/ui/status/bluetooth.js:263
-#: ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259
+#: ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Nastavitve zvoka"
-#: ../js/ui/status/bluetooth.js:372
-#, fuzzy, c-format
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
msgid "Authorization request from %s"
msgstr "Zahteva za pooblastitev od %s"
-#: ../js/ui/status/bluetooth.js:378
-#, fuzzy, c-format
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
msgid "Device %s wants access to the service '%s'"
-msgstr "Naprava %s čaka na dostop do storitve '%s'."
+msgstr "Naprava %s želi dostop do storitve '%s'."
-#: ../js/ui/status/bluetooth.js:380
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
-msgstr "_Vedno odobri dostop"
+msgstr "Vedno odobri dostop"
-#: ../js/ui/status/bluetooth.js:381
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
-msgstr "Pokaži le _ta okvir"
+msgstr "Odobri le tokrat"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Zavrni"
-#: ../js/ui/status/bluetooth.js:412
-#, fuzzy, c-format
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
msgid "Pairing confirmation for %s"
-msgstr "Potrditev združevanja z napravo '%s'"
+msgstr "Potrditev razčlenjevanja za %s"
+
+#: ../js/ui/status/bluetooth.js:414
+#: ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Naprava %s se skuša povezati s tem računalnikom"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Potrdite, ali se PIN '%s' ujema s tistim na napravi."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Ujemanja"
#: ../js/ui/status/bluetooth.js:418
-#: ../js/ui/status/bluetooth.js:452
-#, fuzzy, c-format
-msgid "Device %s wants to pair with this computer"
-msgstr "Naprava '%s' se skuša povezati z računalnikom"
-
-#: ../js/ui/status/bluetooth.js:419
-#, fuzzy, c-format
-msgid "Please confirm whether the PIN '%s' matches the one on the device."
-msgstr "Potrdite, ali se prehodno geslo '%s' sklada z geslom naprave %s."
-
-#: ../js/ui/status/bluetooth.js:421
-#, fuzzy
-msgid "Matches"
-msgstr "Zadetki"
-
-#: ../js/ui/status/bluetooth.js:422
-#, fuzzy
msgid "Does not match"
-msgstr "Se ne sklada"
+msgstr "Se ne ujema"
-#: ../js/ui/status/bluetooth.js:445
-#, fuzzy, c-format
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
msgid "Pairing request for %s"
-msgstr "Zahteva za združevanje z napravo '%s'"
+msgstr "Zahteva razčlenjevanja za %s"
-#: ../js/ui/status/bluetooth.js:453
-#, fuzzy
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
-msgstr "Vnesite prehodno geslo naprave %s."
+msgstr "Vnesite PIN, ki je naveden na napravi."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "V redu"
@@ -808,9 +766,141 @@ msgid "Show Keyboard Layout..."
msgstr "Pokaži razporeditev tipkovnice ..."
#: ../js/ui/status/keyboard.js:76
-#, fuzzy
msgid "Localization Settings"
-msgstr "Nastavitve računa"
+msgstr "Krajevne nastavitve"
+
+#: ../js/ui/status/network.js:102
+#: ../js/ui/status/network.js:1393
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "onemogočeno"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "povezovanje ..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "zahtevana je overitev"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabel ni priklopljen"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "ni na voljo"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "povezovanje je spodletelo"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571
+#: ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Povezano (zasebna povezava)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Samodejni eternet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Samodejni širokopasovni dostop"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Samodejni klicni dostop"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843
+#: ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Samodejna povezava z %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Samodejna povezava z Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Samodejni brezžični dostop"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Več ..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Omogoči omrežje"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Žično"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Brezžično"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobilni širokopasovni dostop"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "Povezave VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Omrežne nastavitve"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Vzpostavljena je povezava z mobilnim širokopasovnim omrežjem '%s'."
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Vzpostavljena je povezava z brezžičnim omrežjem '%s'."
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Vzpostavljena je povezava z žičnim omrežjem '%s'."
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Vzpostavljena je povezava z omrežjem VPN '%s'"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Vzpostavljena je povezava z '%s'."
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "Povezava je vzpostavljena"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Omrežje je onemogočeno"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Upravljalnik omrežij"
#: ../js/ui/status/power.js:85
msgid "Power Settings"
@@ -818,11 +908,11 @@ msgstr "Upravljanje napajanja"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
-msgstr ""
+msgstr "Ocenjevanje ...."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -832,12 +922,12 @@ msgstr[2] "preostajata še %d uri"
msgstr[3] "preostajajo še %d ure"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "Preostaja še %d %s %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "ur"
@@ -845,7 +935,7 @@ msgstr[1] "ura"
msgstr[2] "uri"
msgstr[3] "ure"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minut"
@@ -853,7 +943,7 @@ msgstr[1] "minuta"
msgstr[2] "minuti"
msgstr[3] "minute"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -862,100 +952,100 @@ msgstr[1] "preostaja še %d minuta"
msgstr[2] "preostajata še %d minuti"
msgstr[3] "preostajajo še %d minute"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Električni prilagodilnik"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Baterija prenosnika"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Zaslon"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Miška"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Tipkovnica"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "Dlančnik"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Mobilni telefon"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Predstavni predvajalnik"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Tablični računalnik"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Računalnik"
-#: ../js/ui/status/power.js:249
-#: ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250
+#: ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Neznano"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Glasnost"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Mikrofon"
-#: ../js/ui/telepathyClient.js:239
-#, fuzzy, c-format
+#: ../js/ui/telepathyClient.js:332
+#, c-format
msgid "%s is online."
-msgstr "%s je povezan"
+msgstr "%s je povezan."
-#: ../js/ui/telepathyClient.js:244
-#, fuzzy, c-format
+#: ../js/ui/telepathyClient.js:337
+#, c-format
msgid "%s is offline."
msgstr "%s ni povezan."
-#: ../js/ui/telepathyClient.js:247
-#, fuzzy, c-format
+#: ../js/ui/telepathyClient.js:340
+#, c-format
msgid "%s is away."
-msgstr "Uporabnik %s je odsoten:"
+msgstr "%s je odsoten."
-#: ../js/ui/telepathyClient.js:250
-#, fuzzy, c-format
+#: ../js/ui/telepathyClient.js:343
+#, c-format
msgid "%s is busy."
-msgstr "\"%s\" je zaposlen:"
+msgstr "%s je zaposlen."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
-#, fuzzy, no-c-format
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
msgid "Sent at %X on %A"
-msgstr "Sporočilo poslano ob odsotnosti "
+msgstr "Poslano na %X ob %A"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
-msgstr ""
+msgstr "Vtipkajte za iskanje ..."
-#: ../js/ui/viewSelector.js:137
+#: ../js/ui/viewSelector.js:142
#: ../src/shell-util.c:250
msgid "Search"
msgstr "Poišči"
@@ -972,7 +1062,7 @@ msgstr "'%s' storitev je pripravljena"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -983,7 +1073,7 @@ msgstr[3] "%u odvodi naprave"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@@ -992,19 +1082,24 @@ msgstr[1] "%u dovod naprave"
msgstr[2] "%u dovoda naprave"
msgstr[3] "%u dovodi naprave"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Sistemski zvoki"
-#: ../src/main.c:395
+#: ../src/main.c:438
msgid "Print version"
msgstr "Izpiši različico"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Zaganjanje '%s' je spodletelo"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Pred manj kot eno minuto"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1013,7 +1108,7 @@ msgstr[1] "Pred %d minuto"
msgstr[2] "Pred %d minutama"
msgstr[3] "Pred %d minutami"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1022,7 +1117,7 @@ msgstr[1] "Pred %d uro"
msgstr[2] "Pred %d urama"
msgstr[3] "Pred %d urami"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1031,7 +1126,7 @@ msgstr[1] "Pred %d dnevom"
msgstr[2] "Pred %d dnevoma"
msgstr[3] "Pred %d dnevi"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1040,9 +1135,17 @@ msgstr[1] "Pred %d tednom"
msgstr[2] "Pred %d tednoma"
msgstr[3] "Pred %d tedni"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Velika Britanija"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Privzeto"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
-msgstr ""
+msgstr "Uporabnik je zavrnil pogovorno okno overitve"
#: ../src/shell-util.c:89
msgid "Home Folder"
@@ -1064,34 +1167,46 @@ msgstr "Datotečni sistem"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "Izklopi"
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "Kliknite Izklop za končanje teh programov in izklop sistema."
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "Sistem se bo samodejno izklopil čez %d sekund."
+#~ msgid "Shutting down the system."
+#~ msgstr "Izklapljanje sistema."
+#~ msgid "Confirm"
+#~ msgstr "Potrdi"
+#~ msgid "Panel"
+#~ msgstr "Pult"
+#~ msgid "No such application"
+#~ msgstr "Ni takšnega programa"
+#~ msgid "Screen Reader"
+#~ msgstr "Zaslonski bralnik"
+#~ msgid "Screen Keyboard"
+#~ msgstr "Zaslonska tipkovnica"
+#~ msgid "%s is now known as %s"
+#~ msgstr "%s je sedaj znan kot v %s"
#~ msgid "PREFERENCES"
#~ msgstr "Možnosti"
-
#~ msgid "Shut Down..."
#~ msgstr "Izklopi ..."
-
#~ msgid "Search your computer"
#~ msgstr "Iskanje po računalniku"
-
#~ msgid "Clip the crosshairs at the center"
#~ msgstr "Ali merek prekriva kazalko miške v središču"
-
#~ msgid "Color of the crosshairs"
#~ msgstr "Barva merka"
-
#~ msgid ""
#~ "Determines the length of the vertical and horizontal lines that make up "
#~ "the crosshairs."
#~ msgstr "Določi dolžino navpične in vodoravne črte, ki določata merek."
-
#~ msgid ""
#~ "Determines the transparency of the crosshairs, from fully opaque to fully "
#~ "transparent."
#~ msgstr "Določi prosojnost merka, od prekrivne to prozorne."
-
#~ msgid "Enable lens mode"
#~ msgstr "Omogočeni način leče"
-
#~ msgid ""
#~ "For centered mouse tracking, when the system pointer is at or near the "
#~ "edge of the screen, the magnified contents continue to scroll such that "
@@ -1100,63 +1215,48 @@ msgstr "%1$s: %2$s"
#~ "Pri usredinjenem sledenju miški, ko je sistemski kazalnik ob robu "
#~ "zaslona, približanje vsebine drsi naprej tako, da je rob zaslona v "
#~ "približanem pogledu."
-
#~ msgid "Length of the crosshairs"
#~ msgstr "Dolžina merka"
-
#~ msgid "Magnification factor"
#~ msgstr "Faktor približanja"
-
#~ msgid "Mouse Tracking Mode"
#~ msgstr "Način sledenja miške"
-
#~ msgid "Opacity of the crosshairs"
#~ msgstr "Prosojnost merka"
-
#~ msgid "Screen position"
#~ msgstr "Položaj zaslona"
-
#~ msgid "Scroll magnified contents beyond the edges of the desktop"
#~ msgstr "Zdrsni približano vsebino preko robov namizja"
-
#~ msgid "Show or hide crosshairs"
#~ msgstr "Pokaži ali skrij merek"
-
#~ msgid "Show or hide the magnifier"
#~ msgstr "Pokaži ali skrij približevalnik"
-
#~ msgid "Show or hide the magnifier and all of its zoom regions."
#~ msgstr "Pokaže ali skrije povečevalo in vsa njegova območja približevanja."
-
#~ msgid ""
#~ "The color of the the vertical and horizontal lines that make up the "
#~ "crosshairs."
#~ msgstr "Barva navpične in vodoravne črte, ki določata merek."
-
#~ msgid ""
#~ "The magnified view either fills the entire screen, or occupies the top-"
#~ "half, bottom-half, left-half, or right-half of the screen."
#~ msgstr ""
#~ "Približan pogled lahko zapolni celoten zaslon, lahko pa zasede zgornjo, "
#~ "spodnjo, levo ali pa desno polovico zaslona."
-
#~ msgid ""
#~ "The power of the magnification. A value of 1.0 means no magnification. A "
#~ "value of 2.0 doubles the size."
#~ msgstr ""
#~ "Vrednost približanja. Vrednost 1.0 pomeni brez približanja, vrednost 2.0 "
#~ "pa podvoji učinek približanja."
-
#~ msgid "Thickness of the crosshairs"
#~ msgstr "Debelina merka"
-
#~ msgid ""
#~ "Whether the magnified view should be centered over the location of the "
#~ "system mouse and move with it."
#~ msgstr ""
#~ "Ali naj bo približan pogled usredinjen na mesto sistemske miške in se z "
#~ "njo premika."
-
#~ msgid ""
#~ "Width of the vertical and horizontal lines that make up the crosshairs."
#~ msgstr "Širina navpične in vodoravne čete, ki določata merek."
@@ -1164,36 +1264,28 @@ msgstr "%1$s: %2$s"
#, fuzzy
#~ msgid "Bluetooth Agent"
#~ msgstr "Agent KAOS"
-
#~ msgid ""
#~ "Can't add a new workspace because maximum workspaces limit has been "
#~ "reached."
#~ msgstr ""
#~ "Ni mogoče dodati nove delovne površine, ker je doseženo njihovo največje "
#~ "dovoljeno število."
-
#~ msgid "Can't remove the first workspace."
#~ msgstr "Ni mogoče odstraniti prve delovne površine."
-
#~ msgid "Clock"
#~ msgstr "Ura"
-
#~ msgid "Customize the panel clock"
#~ msgstr "Prilagodi uro pladnja"
-
#~ msgid "Custom format of the clock"
#~ msgstr "Zapis ure po meri"
-
#~ msgid "Hour format"
#~ msgstr "Urni zapis"
-
#~ msgid ""
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
#~ "in time."
#~ msgstr ""
#~ "Izbrana možnost določa ali \"12-urni\" ali pa \"24-urni\" zapis časa s "
#~ "prikazanimi sekundami."
-
#~ msgid ""
#~ "This key specifies the format used by the panel clock when the format key "
#~ "is set to \"custom\". You can use conversion specifiers understood by "
@@ -1204,106 +1296,77 @@ msgstr "%1$s: %2$s"
#~ "zapisa nastavljen kot \"prikrojen\". Za določitev zapisa lahko uporabite "
#~ "tudi oznake funkcije strftime(), ki so podrobneje zapisane v priročniku "
#~ "funkcije."
-
#~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
-#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
-#~ "01-01. If set to \"custom\", the clock will display time according to the "
-#~ "format specified in the custom_format key. Note that if set to either "
-#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
#~ msgstr ""
#~ "Ključ določa zapis ure. Mogoče vrednosti so \"12-urni\", \"24-urni\", "
#~ "\"unix\" in \"po meri\". Možnost \"unix\" prikazuje čas v sekundah od "
#~ "začetka ere, torej od 01.01.1970, možnost \"po meri\" pa omogoča "
#~ "prikrojen zapis. Pri izbiri zapisa \"unix\" ali \"po meri\" sta izbiri "
#~ "pokaži datum in pokaži sekunde, prezrti."
-
#~ msgid "Clock Format"
#~ msgstr "Zapis ure"
-
#~ msgid "Clock Preferences"
#~ msgstr "Možnosti ure"
-
#~ msgid "Panel Display"
#~ msgstr "Prikazovanje pladnja"
-
#~ msgid "Show seco_nds"
#~ msgstr "Pokaži _sekunde"
-
#~ msgid "Show the _date"
#~ msgstr "Pokaži _datum"
-
#~ msgid "_12 hour format"
#~ msgstr "_12-urni zapis časa"
-
#~ msgid "_24 hour format"
#~ msgstr "_24-urni zapis časa"
-
#~ msgid "Preferences"
#~ msgstr "Možnosti"
-
#~ msgid "What's using power..."
#~ msgstr "Kaj porablja napetost ..."
-
#~ msgid "Overview workspace view mode"
#~ msgstr "Način pregleda predogleda delovnih površin"
-
#~ msgid ""
#~ "The selected workspace view mode in the overview. Supported values are "
#~ "\"single\" and \"grid\"."
#~ msgstr ""
#~ "Izbrani pogled delovnih površin v predogledu. Podprte vrednosti sta "
#~ "\"enojno\" in \"mrežno\"."
-
#~ msgid "Drag here to add favorites"
#~ msgstr "S potegom na to mesto se izbor doda med priljubljene"
-
#~ msgid "Find"
#~ msgstr "Najdi"
-
#~ msgid "Invisible"
#~ msgstr "Nevidno"
-
#~ msgid "System Preferences..."
#~ msgstr "Sistemske možnosti ..."
-
#~ msgid "ON"
#~ msgstr "⚪"
-
#~ msgid "OFF"
#~ msgstr "⚫"
-
#~ msgid "Sidebar"
#~ msgstr "Stranska vrstica"
-
#~ msgid "Recent Documents"
#~ msgstr "Nedavni dokumenti"
-
#~ msgid "PLACES"
#~ msgstr "Mesta"
-
#~ msgid "SEARCH RESULTS"
#~ msgstr "Rezultati iskanja"
-
#~ msgid "Can't lock screen: %s"
#~ msgstr "Ni mogoče zakleniti zaslona: %s"
-
#~ msgid "Can't temporarily set screensaver to blank screen: %s"
#~ msgstr ""
#~ "Ni mogoče začasno nastaviti črnega zaslona za ohranjevalnik zaslona: %s"
-
#~ msgid "Can't logout: %s"
#~ msgstr "Ni se mogoče odjaviti: %s"
-
#~ msgid "Frequent"
#~ msgstr "Pogosto"
-
-#~ msgid "More"
-#~ msgstr "Več"
-
#~ msgid "(see all)"
#~ msgstr "(poglej vse)"
-
#~ msgid "Browse"
#~ msgstr "Prebrskaj"
+
diff --git a/po/sr.po b/po/sr.po
index 80d7bf3b1..6862f4b08 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,20 +1,22 @@
# Serbian translation for gnome-shell.
# Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
-# Милош Поповић , 2010.
+# Мирослав Николић , 2011.
+# Милош Поповић , 2010, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2010-07-22 13:07+0000\n"
-"PO-Revision-Date: 2010-08-23 23:03+0200\n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-19 10:16+0000\n"
+"PO-Revision-Date: 2011-03-19 12:37+0100\n"
"Last-Translator: Милош Поповић \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: Serbian(sr)\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
@@ -26,85 +28,60 @@ msgstr "Гномова шкољка"
msgid "Window management and application launching"
msgstr "Управник прозорима и покретач програма"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Сат"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Подешава сат на панелу"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
-"Дозвољава приступ систему за тражење грешака у алатима за праћење у Alt-F2 "
-"прозорчету."
+"Дозвољава приступ унутрашњем отклањању грешака и алатима за праћење "
+"коришћењем „Alt-F2“ прозорчета."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Произвољан формат часовника"
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr "Укључује алате корисне програмерима и тестерима из „Alt-F2“ прозорчета"
#: ../data/org.gnome.shell.gschema.xml.in.h:3
-msgid "Enable internal tools useful for developers and testers from Alt-F2"
-msgstr "Укључује алате корисне програмерима у Alt-F2 прозорчету"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "File extension used for storing the screencast"
msgstr "Екстензија датотеке за чување видео снимака екрана"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Учестаност кадрова за видео снимак екрана."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
msgstr ""
-"Проширења Гномове шкољке имају uuid вредност; овај кључ исписује проширења "
-"која треба учитати."
+"Проширења Гномове шкољке имају „uuid“ вредност; овај кључ исписује проширења "
+"која не треба учитавати."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "Историјат прозорчета наредби (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
-msgid "History for command (Alt-F2) dialog"
-msgstr "Историјат наредби Alt-F2 прозорчета"
+msgid "History for the looking glass dialog"
+msgstr "Историјат прозорчета огледала"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Формат часовника"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Ако је изабрано, приказује датум у часовнику, као додатак времену."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Приказује датум поред часовник, уколико је постављено на „true“ (тачно) и "
-"ако је формат постављен на „12-hour“ (12 часа) или „24-hour“ (24 часа)."
+msgid "If true, display seconds in time."
+msgstr "Ако је изабрано, приказује секунде у времену."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Приказује секунде у часовнику, уколико је постављено на „true“ (тачно) и "
-"формат постављен на „12-hour“ (12 часа) или „24-hour“ (24 часа)."
+msgid "If true, display the ISO week date in the calendar."
+msgstr "Ако је изабрано, приказује ИСО дан у недељи у календару."
#: ../data/org.gnome.shell.gschema.xml.in.h:11
-msgid "If true, display the ISO week date in the calendar."
-msgstr ""
-"Уколико је постављено на „true“ (tačno), приказује ИСО дан у недељи унутар "
-"календара."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid "List of desktop file IDs for favorite applications"
msgstr "Списак ИБ датотека радне површине са омиљеним програмима"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid "Overview workspace view mode"
-msgstr "Начин за преглед радних површина"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -113,48 +90,53 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
-"Поставља ГСтримеров цевовод за прекодирање снимака. Он дозвољава синтаксу из "
-"програма gst-launch. Цевовод мора да буде без повезаног довода за чување "
-"снимљеног видеа. Извор ће обично бити неповезан; излаз ће бити у излазну "
-"датотеку. Ипак цевовод може да ради са сопственим излазом — ово можете да "
-"употребите за слање излаза у ајскаст сервер преко shout2send или сличне "
-"наредбе. Када ова опција није постављена биће употребљен подразумевани "
-"цевовод, који подразумева „videorate ! theoraenc ! oggmux“ и чува датотеке у "
-"Огг Теора формат."
+"Поставља процесни ланац ГСтримера коришћеног за прекодирање снимака. Прати "
+"синтаксу коришћену за покретање гстримера (gst-launch). Процесни ланац мора "
+"да има један неповезани падиљон синхронизације за чување снимљеног видеа. "
+"Нормално ће имати неповезан падиљон извора; излаз са овог падиљона ће бити "
+"записиван у излазну датотеку. Ипак процесни ланац може да ради са сопственим "
+"излазом — ово може бити коришћено за слање излаза на ајскаст сервер преко d"
+"„shout2sen“ или сличне наредбе. Када ова опција није постављена или је "
+"постављена на неку празну вредност, биће коришћен подразумевани процесни "
+"ланац. А то је тренутно „videorate ! vp8enc quality=10 speed=2 threads=%T ! "
+"queue ! webmmux“ и записује у „WEBM“ користећи ВП8 кодек. „%T“ се користи "
+"као носилац за откривање при оптималном прорачуну нити на систему."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "Приказује датум у панелу"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
-msgid "Show date in clock"
-msgstr "Прикажи датум у панелу"
+msgid "Show the week date in the calendar"
+msgstr "Приказује дан у недељи у календару"
#: ../data/org.gnome.shell.gschema.xml.in.h:16
-msgid "Show the week date in the calendar"
-msgstr "Прикажи дан у недељи у календару"
+msgid "Show time with seconds"
+msgstr "Приказује време и секунде"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
-msgid "Show time with seconds"
-msgstr "Прикажи време и секунде"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
-"Програм коме одговарају ове одреднице се приказује унутар области са "
-"омиљеним програмима."
+"Програми који одговарају овим одредницама се приказују унутар области "
+"омиљених програмима."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr ""
-"Име датотеке за сачувани видео снимак екрана ће бити јединствено јер садржи "
-"датум и чува датотеке у овај формат. Треба га променити при снимању у други "
-"формат."
+"Име датотеке за снимљени видео снимак екрана ће бити јединствено засновано "
+"на текућем датуму, и користи ову екстензију. Треба га променити приликом "
+"снимања у други формат."
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -162,19 +144,11 @@ msgstr ""
"Учестаност кадрова снимка снимљених помоћу Гномове шкољке у кадровима по "
"секунди."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr "Гстримеров цевовод за кодирање видео снимка екрана"
+msgstr "Процесни ланац Гстримера коришћен за кодирање видео снимка екрана"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"The selected workspace view mode in the overview. Supported values are "
-"\"single\" and \"grid\"."
-msgstr ""
-"Изабрани начин прегледа радних површина. Подржане вредности су "
-"„single“ (појединачно) и „grid“ (у мрежи)."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -182,391 +156,1131 @@ msgid ""
"remove already saved data."
msgstr ""
"Шкољка прати покренуте програме како би открила оне који се највише користе. "
-"Иако су подаци тајни, можда желите да искључите ови опцију због веће "
-"приватности. На тај начин нећете обрисати већ прикупљене податке."
+"Иако ће подаци бити држани у тајности, можда ћете пожелети да искључите ову "
+"опцију због заштите ваше приватности. На тај начин нећете обрисати већ "
+"сачуване податке."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "„uuid“ проширења за искључивање"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr "Да ли ће бити прикупљани подаци о покретаним програмима"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Овај кључ одређује формат времена у панелу, када је „format“ (format) "
-"постављен на „custom“ (произвољно). Можете искористити формат подржан унутар "
-"функције strftime(). Погледајте упутство за strftime()."
+msgid "disabled OpenSearch providers"
+msgstr "искључени „OpenSearch“ провајдери"
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Овај кључ одређује формат часовника у панелу. Дозвољене вредности су „12-"
-"hour“ (12 часаова), „24-hour“ (24 часа), „unix“ (Јуникс) и "
-"„custom“ (произвољно). Уколико га поставите на „unix“ сат ће приказивати "
-"време на основу епохе, нпр. 1970-01-01. Уколико га поставите на „custom“ сат "
-"ће приказивати време на основу кључа „custom_format“ (произвољни формат). "
-"Уколико поставите на кључ на „unix“ или „custom“ занемарују се кључеви "
-"„show_date“ (прикажи датум) и „show_seconds“ (прикажи секунде)."
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Команда није нађена"
-#: ../data/org.gnome.shell.gschema.xml.in.h:26
-#| msgid "No extensions installed"
-msgid "Uuids of extensions to disable"
-msgstr "Занемарена uuid проширења"
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Не могу да рашчланим команду:"
-#: ../data/org.gnome.shell.gschema.xml.in.h:27
-msgid "Whether to collect stats about applications usage"
-msgstr "Да ли да прикупљам податке о покретаним програмима"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Није успело покретање „%s“:"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Формат часовника"
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Све"
-#: ../data/clock-preferences.ui.h:2
-#| msgid "System Preferences..."
-msgid "Clock Preferences"
-msgstr "Поставке часовника"
-
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Приказ на панелу"
-
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Прикажи _секунде"
-
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Прикажи _датум"
-
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "_12 часова"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "_24 часа"
-
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:773
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "ПРОГРАМИ"
-#: ../js/ui/appDisplay.js:416
-msgid "PREFERENCES"
-msgstr "ПОСТАВКЕ"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
+msgstr "ПОДЕШАВАЊА"
-#: ../js/ui/appDisplay.js:721
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Нови прозор"
-#: ../js/ui/appDisplay.js:725
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Уклони из омиљених"
-#: ../js/ui/appDisplay.js:726
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Додај у омиљене"
-#: ../js/ui/appDisplay.js:1033
-msgid "Drag here to add favorites"
-msgstr "Превуците овде како би додали у омиљене"
-
-#: ../js/ui/appFavorites.js:88
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
-msgstr "%s је додат међу омиљене"
+msgstr "„%s“ је додат међу омиљене."
-#: ../js/ui/appFavorites.js:107
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
-msgstr "%s је уклоњен из омиљених"
+msgstr "„%s“ је уклоњен из омиљених."
-#: ../js/ui/dash.js:142
-msgid "Find"
-msgstr "Нађи"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Цео дан"
-#: ../js/ui/dash.js:471
-msgid "Searching..."
-msgstr "Тражим..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:485
-msgid "No matching results."
-msgstr "Ништа није пронађено."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:792 ../js/ui/placeDisplay.js:550
-msgid "PLACES & DEVICES"
-msgstr "МЕСТА И УРЕЂАЈИ"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "Н"
-#. **** Documents ****
-#: ../js/ui/dash.js:799 ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "СКОРАШЊЕ СТАВКЕ"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "П"
-#: ../js/ui/lookingGlass.js:471
-msgid "No extensions installed"
-msgstr "Нису инсталирана проширења"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "У"
-#: ../js/ui/lookingGlass.js:508
-msgid "Enabled"
-msgstr "Омогућено"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "С"
-#: ../js/ui/lookingGlass.js:510
-msgid "Disabled"
-msgstr "Онемогућено"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "Ч"
-#: ../js/ui/lookingGlass.js:512
-msgid "Error"
-msgstr "Грешка"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "П"
-#: ../js/ui/lookingGlass.js:514
-msgid "Out of date"
-msgstr "Истекао је датум"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "С"
-#: ../js/ui/lookingGlass.js:539
-msgid "View Source"
-msgstr "Погледај извор"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Нед"
-#: ../js/ui/lookingGlass.js:545
-msgid "Web Page"
-msgstr "Интернет страница"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Пон"
-#: ../js/ui/overview.js:159
-msgid "Undo"
-msgstr "Опозови"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Уто"
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:473
-#, c-format
-msgid "Quit %s"
-msgstr "Изађи из %s"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Сре"
-#: ../js/ui/panel.js:498
-#| msgid "System Preferences..."
-msgid "Preferences"
-msgstr "Поставке"
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Чет"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Пет"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Суб"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Ништа планирано"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Данас"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Сутра"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Ове недеље"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Следеће недеље"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+msgid "Remove"
+msgstr "Уклони"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Подешавања датума и времена"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Отвори календар"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:584
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%A, %e. %b, %R:%S"
-#: ../js/ui/panel.js:585
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%A, %e. %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:589
-#| msgid "%a %R"
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%A, %R:%S"
-#: ../js/ui/panel.js:590
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%A, %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:597
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%A, %e. %b, %l:%M:S"
-#: ../js/ui/panel.js:598
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%A, %e. %b, %l:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:602
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%A, %l:%M:%S"
-#: ../js/ui/panel.js:603
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%A, %l:%M"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A, %e. %b, %R"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "СКОРАШЊЕ СТАВКЕ"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Одјави „%s“"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Одјави"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Кликните на „Одјави“ да напустите ове програме и да се одјавите са система."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "„%s“ ће бити оадјављен аутоматски за %d сек."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Бићете аутоматски одјављени за %d сек."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Одјављујем се са система."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Угаси"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Кликните на „Угаси“ да напустите ове програме и да угасите систем."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Систем ће се аутоматски искључити за %d сек."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Искључујем систем."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Поново покрени"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Кликните на „Поново покрени“ да напустите ове програме и да поново покренете "
+"систем."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Систем ће се аутоматски поново покренути за %d сек."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Поновно покрећем систем."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Потврди"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Откажи"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Нису инсталирана проширења"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Омогућено"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Онемогућено"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Грешка"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Изван датума"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Погледај извор"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Интернет страница"
+
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr "Отвори"
+
+#: ../js/ui/messageTray.js:1986
+msgid "System Information"
+msgstr "Информације о систему"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Опозови"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Прозори"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Програми"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr "Дашер"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Напусти „%s“"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:741
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Активности"
-#: ../js/ui/placeDisplay.js:107
+#: ../js/ui/panel.js:975
+msgid "Panel"
+msgstr "Панел"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Не могу да демонтирам „%s“"
-#: ../js/ui/placeDisplay.js:110
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Понови"
-#: ../js/ui/placeDisplay.js:155
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Повежи се на..."
-#. Translators: the "ON" and "OFF" strings are used in the
-#. toggle switches in the status area menus, and must be SHORT.
-#. If you don't have suitable short words, consider initials,
-#. "0"/"1", "⚪"/"⚫", etc.
-#: ../js/ui/popupMenu.js:30 ../js/ui/popupMenu.js:40
-msgid "ON"
-msgstr "⚫"
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "МЕСТА И УРЕЂАЈИ"
-#: ../js/ui/popupMenu.js:31 ../js/ui/popupMenu.js:45
-msgid "OFF"
-msgstr "⚪"
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
msgstr "Унесите наредбу:"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Није успело покретање „%s“:"
+#: ../js/ui/searchDisplay.js:287
+msgid "Searching..."
+msgstr "Тражим..."
-#: ../js/ui/statusMenu.js:91
+#: ../js/ui/searchDisplay.js:301
+msgid "No matching results."
+msgstr "Нема одговарајућих резултата."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+msgid "Power Off..."
+msgstr "Искључи..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+msgid "Suspend"
+msgstr "Обустави"
+
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Доступан"
-#: ../js/ui/statusMenu.js:95
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Заузет"
-#: ../js/ui/statusMenu.js:99
-msgid "Invisible"
-msgstr "Невидљив"
+#: ../js/ui/statusMenu.js:150
+msgid "My Account"
+msgstr "Мој налог"
-#: ../js/ui/statusMenu.js:106
-msgid "Account Information..."
-msgstr "Подаци о налогу..."
+#: ../js/ui/statusMenu.js:154
+msgid "System Settings"
+msgstr "Подешавања система"
-#: ../js/ui/statusMenu.js:110
-msgid "System Preferences..."
-msgstr "Поставке система..."
-
-#: ../js/ui/statusMenu.js:117
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Закључај екран"
-#: ../js/ui/statusMenu.js:121
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Промени корисника"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Одјави ме..."
-#: ../js/ui/statusMenu.js:130
-msgid "Shut Down..."
-msgstr "Искључи..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Зумирај"
-#: ../js/ui/windowAttentionHandler.js:45
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Визуелна упозорења"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Лепљиви тастери"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Спори тастери"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Одскочни тастери"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Тастери миша"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Подешавања универзалног приступа"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Велики контраст"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Велики текст"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Блутут"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Видљивост"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Пошаљи датотеке на уређај..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Подеси нови уређај..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Блутут подешавања"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Веза"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Пошаљи датотеке.."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Разгледај датотеке..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Грешка у претраживању уређаја"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Тражени уређај не може бити разгледан, грешка „%s“"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Подешавања тастатуре"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Подешавања миша"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Подешавања звука"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Захтев за овлашћење са „%s“"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Уређај „%s“ жели приступ услузи „%s“"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Увек одобри приступ"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Одобри само овај пут"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Одбиј"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Упарујем потврду за „%s“"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Уређај „%s“ жели да се упари са овим рачунаром"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Молим потврдите да ли се ПИН „%s“ подудара са оним на уређају."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Подудара се"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Не подудара се"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Захтев за упаривање за „%s“"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Молим унесите ПИН назначен на уређају."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "У реду"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Прикажи распоред тастатуре..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Подешавања локализације"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+#| msgid "Unknown"
+msgid ""
+msgstr "<непознато>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+#| msgid "Disabled"
+msgid "disabled"
+msgstr "онемогућено"
+
+#: ../js/ui/status/network.js:476
+#| msgid "Connection"
+msgid "connecting..."
+msgstr "повезујем се..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "потребна је пријава"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "кабли је искључен"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+#| msgid "Available"
+msgid "unavailable"
+msgstr "недоступно"
+
+#: ../js/ui/status/network.js:491
+#| msgid "Connection"
+msgid "connection failed"
+msgstr "повезивање није успело"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Повезан (приватно)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Аутоматска жичана веза"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Аутоматска широкопојасна веза"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Аутоматска дајал-ап веза"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+#| msgid "Quit %s"
+msgid "Auto %s"
+msgstr "Аутоматска %s веза"
+
+#: ../js/ui/status/network.js:845
+#| msgid "Bluetooth"
+msgid "Auto bluetooth"
+msgstr "Аутоматска блутут веза"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Аутоматска бежична веза"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Више..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Омогући мрежне услуге"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Жичана"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Бежична"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Мобилна широкопојасна"
+
+#: ../js/ui/status/network.js:1479
+#| msgid "Connection"
+msgid "VPN Connections"
+msgstr "ВПН веза"
+
+#: ../js/ui/status/network.js:1488
+#| msgid "Power Settings"
+msgid "Network Settings"
+msgstr "Подешавања мрежа"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Повезани сте на мобилну широкопојасну мрежу „%s“"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Повезани сте на мобилну бежичну мрежу „%s“"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Повезани сте на мобилну жичану мрежу „%s“"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Повезани сте на мобилну ВПН мрежу „%s“"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Повезани сте на „%s“"
+
+#: ../js/ui/status/network.js:1808
+#| msgid "Connection"
+msgid "Connection established"
+msgstr "Веза је успостављена"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Умрежавање је онемогућено"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Управник мреже"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Подешавања напајања"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Приближно..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "Преостаје %d сат"
+msgstr[1] "Преостају %d сата"
+msgstr[2] "Преостаје %d сати"
+msgstr[3] "Преостаје један сат"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "Преостало врем: %d %s %d %s"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "сат"
+msgstr[1] "сата"
+msgstr[2] "сати"
+msgstr[3] "сат"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "минут"
+msgstr[1] "минута"
+msgstr[2] "минута"
+msgstr[3] "минут"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "Преостаје %d минут"
+msgstr[1] "Преостају %d минута"
+msgstr[2] "Преостаје %d минута"
+msgstr[3] "Преостаје један минут"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Напајање са мреже"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Батерија рачунара"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "УПС"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Монитор"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Миш"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Тастатура"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "ПДА"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Мобилни телефон"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Медија плејер"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Таблет"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Рачунар"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
+msgid "Unknown"
+msgstr "Непознато"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Јачина звука"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Микрофон"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "„%s“ је на мрежи."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "„%s“ је ван мреже."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "„%s“ је одсутан."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "„%s“ је заузет."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Послато је %A у %X"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Упишите текст за претрагу..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Тражи"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
-msgstr "%s је покренут"
+msgstr "„%s“ је покренут"
-#: ../js/ui/windowAttentionHandler.js:47
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "„%s“ је спреман"
-#: ../js/ui/workspacesView.js:230
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Не могу да додам нову радну површину јер је већ достигнут највећи број."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u излаз"
+msgstr[1] "%u излаза"
+msgstr[2] "%u излаза"
+msgstr[3] "%u излаз"
-#: ../js/ui/workspacesView.js:247
-msgid "Can't remove the first workspace."
-msgstr "Не могу да уклоним прву радну површину."
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u улаз"
+msgstr[1] "%u улаза"
+msgstr[2] "%u улаза"
+msgstr[3] "%u улаз"
-#: ../src/shell-global.c:1105
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Системски звуци"
+
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Испиши вррзију"
+
+#: ../src/shell-app.c:454
+#, c-format
+#| msgid "Failed to unmount '%s'"
+msgid "Failed to launch '%s'"
+msgstr "Не могу да покренем „%s“"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Пре мање од једног минута"
-#: ../src/shell-global.c:1109
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Пре %d минут"
msgstr[1] "Пре %d минута"
msgstr[2] "Пре %d минута"
-msgstr[3] "Пре %d минута"
+msgstr[3] "Пре један минут"
-#: ../src/shell-global.c:1114
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Пре %d сат"
msgstr[1] "Пре %d сата"
-msgstr[2] "Пре %d сата"
-msgstr[3] "Пре %d сата"
+msgstr[2] "Пре %d сати"
+msgstr[3] "Пре једног сата"
-#: ../src/shell-global.c:1119
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "Пре %d дан"
msgstr[1] "Пре %d дана"
msgstr[2] "Пре %d дана"
-msgstr[3] "Пре %d дана"
+msgstr[3] "Пре један дан"
-#: ../src/shell-global.c:1124
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "Пре %d недеље"
msgstr[1] "Пре %d недеље"
-msgstr[2] "Пре %d недеље"
-msgstr[3] "Пре %d недеља"
+msgstr[2] "Пре %d недеља"
+msgstr[3] "Пре једне недеље"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Уједињено краљевство"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Подразумевано"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Лична фасцикла"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Систем датотека"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Тражи"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
-#~| msgid "Search"
-#~ msgid "Sidebar"
-#~ msgstr "Бочна трака"
+#~| msgid "Applications"
+#~ msgid "No such application"
+#~ msgstr "Нема таквог програма"
-#~ msgid "%H:%M"
-#~ msgstr "%H:%M"
+#~ msgid "Screen Reader"
+#~ msgstr "Читач екрана"
-#~ msgid "Applications"
-#~ msgstr "Програми"
+#~ msgid "Screen Keyboard"
+#~ msgstr "Тастатура на екрану"
-#~ msgid "Recent Documents"
-#~ msgstr "Скорашњи документи"
+#~ msgid "Clock"
+#~ msgstr "Сат"
+
+#~ msgid "Customize the panel clock"
+#~ msgstr "Подешава сат на панелу"
+
+#~ msgid "Custom format of the clock"
+#~ msgstr "Произвољан формат часовника"
+
+#~ msgid "Hour format"
+#~ msgstr "Формат часовника"
+
+#~ msgid ""
+#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
+#~ "in time."
+#~ msgstr ""
+#~ "Приказује секунде у часовнику, уколико је постављено на „true“ (тачно) и "
+#~ "формат постављен на „12-hour“ (12 часа) или „24-hour“ (24 часа)."
+
+#~ msgid "Overview workspace view mode"
+#~ msgstr "Начин за преглед радних површина"
+
+#~ msgid ""
+#~ "The selected workspace view mode in the overview. Supported values are "
+#~ "\"single\" and \"grid\"."
+#~ msgstr ""
+#~ "Изабрани начин прегледа радних површина. Подржане вредности су "
+#~ "„single“ (појединачно) и „grid“ (у мрежи)."
+
+#~ msgid ""
+#~ "This key specifies the format used by the panel clock when the format key "
+#~ "is set to \"custom\". You can use conversion specifiers understood by "
+#~ "strftime() to obtain a specific format. See the strftime() manual for "
+#~ "more information."
+#~ msgstr ""
+#~ "Овај кључ одређује формат времена у панелу, када је „format“ (format) "
+#~ "постављен на „custom“ (произвољно). Можете искористити формат подржан "
+#~ "унутар функције strftime(). Погледајте упутство за strftime()."
+
+#~ msgid ""
+#~ "This key specifies the hour format used by the panel clock. Possible "
+#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
+#~ msgstr ""
+#~ "Овај кључ одређује формат часовника у панелу. Дозвољене вредности су „12-"
+#~ "hour“ (12 часаова), „24-hour“ (24 часа), „unix“ (Јуникс) и "
+#~ "„custom“ (произвољно). Уколико га поставите на „unix“ сат ће приказивати "
+#~ "време на основу епохе, нпр. 1970-01-01. Уколико га поставите на „custom“ "
+#~ "сат ће приказивати време на основу кључа „custom_format“ (произвољни "
+#~ "формат). Уколико поставите на кључ на „unix“ или „custom“ занемарују се "
+#~ "кључеви „show_date“ (прикажи датум) и „show_seconds“ (прикажи секунде)."
+
+#~ msgid "Clock Format"
+#~ msgstr "Формат часовника"
diff --git a/po/sr@latin.po b/po/sr@latin.po
index a3798981b..141a504cb 100644
--- a/po/sr@latin.po
+++ b/po/sr@latin.po
@@ -1,20 +1,22 @@
# Serbian translation for gnome-shell.
# Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package.
-# Miloš Popović , 2010.
+# Miroslav Nikolić , 2011.
+# Miloš Popović , 2010, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2010-07-22 13:07+0000\n"
-"PO-Revision-Date: 2010-08-23 23:03+0200\n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-19 10:16+0000\n"
+"PO-Revision-Date: 2011-03-19 12:37+0100\n"
"Last-Translator: Miloš Popović \n"
"Language-Team: Serbian \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: Serbian(sr)\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
@@ -26,85 +28,60 @@ msgstr "Gnomova školjka"
msgid "Window management and application launching"
msgstr "Upravnik prozorima i pokretač programa"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Sat"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Podešava sat na panelu"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
-"Dozvoljava pristup sistemu za traženje grešaka u alatima za praćenje u Alt-F2 "
-"prozorčetu."
+"Dozvoljava pristup unutrašnjem otklanjanju grešaka i alatima za praćenje "
+"korišćenjem „Alt-F2“ prozorčeta."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Proizvoljan format časovnika"
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr "Uključuje alate korisne programerima i testerima iz „Alt-F2“ prozorčeta"
#: ../data/org.gnome.shell.gschema.xml.in.h:3
-msgid "Enable internal tools useful for developers and testers from Alt-F2"
-msgstr "Uključuje alate korisne programerima u Alt-F2 prozorčetu"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "File extension used for storing the screencast"
msgstr "Ekstenzija datoteke za čuvanje video snimaka ekrana"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Učestanost kadrova za video snimak ekrana."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should not be loaded."
msgstr ""
-"Proširenja Gnomove školjke imaju uuid vrednost; ovaj ključ ispisuje proširenja "
-"koja treba učitati."
+"Proširenja Gnomove školjke imaju „uuid“ vrednost; ovaj ključ ispisuje proširenja "
+"koja ne treba učitavati."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
+msgid "History for command (Alt-F2) dialog"
+msgstr "Istorijat prozorčeta naredbi (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
-msgid "History for command (Alt-F2) dialog"
-msgstr "Istorijat naredbi Alt-F2 prozorčeta"
+msgid "History for the looking glass dialog"
+msgstr "Istorijat prozorčeta ogledala"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Format časovnika"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Ako je izabrano, prikazuje datum u časovniku, kao dodatak vremenu."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Prikazuje datum pored časovnik, ukoliko je postavljeno na „true“ (tačno) i "
-"ako je format postavljen na „12-hour“ (12 časa) ili „24-hour“ (24 časa)."
+msgid "If true, display seconds in time."
+msgstr "Ako je izabrano, prikazuje sekunde u vremenu."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Prikazuje sekunde u časovniku, ukoliko je postavljeno na „true“ (tačno) i "
-"format postavljen na „12-hour“ (12 časa) ili „24-hour“ (24 časa)."
+msgid "If true, display the ISO week date in the calendar."
+msgstr "Ako je izabrano, prikazuje ISO dan u nedelji u kalendaru."
#: ../data/org.gnome.shell.gschema.xml.in.h:11
-msgid "If true, display the ISO week date in the calendar."
-msgstr ""
-"Ukoliko je postavljeno na „true“ (tačno), prikazuje ISO dan u nedelji unutar "
-"kalendara."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid "List of desktop file IDs for favorite applications"
msgstr "Spisak IB datoteka radne površine sa omiljenim programima"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid "Overview workspace view mode"
-msgstr "Način za pregled radnih površina"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
@@ -113,48 +90,53 @@ msgid ""
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
+"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
+"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
+"at the optimal thread count on the system."
msgstr ""
-"Postavlja GStrimerov cevovod za prekodiranje snimaka. On dozvoljava sintaksu iz "
-"programa gst-launch. Cevovod mora da bude bez povezanog dovoda za čuvanje "
-"snimljenog videa. Izvor će obično biti nepovezan; izlaz će biti u izlaznu "
-"datoteku. Ipak cevovod može da radi sa sopstvenim izlazom — ovo možete da "
-"upotrebite za slanje izlaza u ajskast server preko shout2send ili slične "
-"naredbe. Kada ova opcija nije postavljena biće upotrebljen podrazumevani "
-"cevovod, koji podrazumeva „videorate ! theoraenc ! oggmux“ i čuva datoteke u "
-"Ogg Teora format."
+"Postavlja procesni lanac GStrimera korišćenog za prekodiranje snimaka. Prati "
+"sintaksu korišćenu za pokretanje gstrimera (gst-launch). Procesni lanac mora "
+"da ima jedan nepovezani padiljon sinhronizacije za čuvanje snimljenog videa. "
+"Normalno će imati nepovezan padiljon izvora; izlaz sa ovog padiljona će biti "
+"zapisivan u izlaznu datoteku. Ipak procesni lanac može da radi sa sopstvenim "
+"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko d"
+"„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
+"postavljena na neku praznu vrednost, biće korišćen podrazumevani procesni "
+"lanac. A to je trenutno „videorate ! vp8enc quality=10 speed=2 threads=%T ! "
+"queue ! webmmux“ i zapisuje u „WEBM“ koristeći VP8 kodek. „%T“ se koristi "
+"kao nosilac za otkrivanje pri optimalnom proračunu niti na sistemu."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
+msgid "Show date in clock"
+msgstr "Prikazuje datum u panelu"
#: ../data/org.gnome.shell.gschema.xml.in.h:15
-msgid "Show date in clock"
-msgstr "Prikaži datum u panelu"
+msgid "Show the week date in the calendar"
+msgstr "Prikazuje dan u nedelji u kalendaru"
#: ../data/org.gnome.shell.gschema.xml.in.h:16
-msgid "Show the week date in the calendar"
-msgstr "Prikaži dan u nedelji u kalendaru"
+msgid "Show time with seconds"
+msgstr "Prikazuje vreme i sekunde"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
-msgid "Show time with seconds"
-msgstr "Prikaži vreme i sekunde"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
-"Program kome odgovaraju ove odrednice se prikazuje unutar oblasti sa "
-"omiljenim programima."
+"Programi koji odgovaraju ovim odrednicama se prikazuju unutar oblasti "
+"omiljenih programima."
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr ""
-"Ime datoteke za sačuvani video snimak ekrana će biti jedinstveno jer sadrži "
-"datum i čuva datoteke u ovaj format. Treba ga promeniti pri snimanju u drugi "
-"format."
+"Ime datoteke za snimljeni video snimak ekrana će biti jedinstveno zasnovano "
+"na tekućem datumu, i koristi ovu ekstenziju. Treba ga promeniti prilikom "
+"snimanja u drugi format."
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -162,19 +144,11 @@ msgstr ""
"Učestanost kadrova snimka snimljenih pomoću Gnomove školjke u kadrovima po "
"sekundi."
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr "Gstrimerov cevovod za kodiranje video snimka ekrana"
+msgstr "Procesni lanac Gstrimera korišćen za kodiranje video snimka ekrana"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"The selected workspace view mode in the overview. Supported values are "
-"\"single\" and \"grid\"."
-msgstr ""
-"Izabrani način pregleda radnih površina. Podržane vrednosti su "
-"„single“ (pojedinačno) i „grid“ (u mreži)."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -182,391 +156,1131 @@ msgid ""
"remove already saved data."
msgstr ""
"Školjka prati pokrenute programe kako bi otkrila one koji se najviše koriste. "
-"Iako su podaci tajni, možda želite da isključite ovi opciju zbog veće "
-"privatnosti. Na taj način nećete obrisati već prikupljene podatke."
+"Iako će podaci biti držani u tajnosti, možda ćete poželeti da isključite ovu "
+"opciju zbog zaštite vaše privatnosti. Na taj način nećete obrisati već "
+"sačuvane podatke."
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
+msgid "Uuids of extensions to disable"
+msgstr "„uuid“ proširenja za isključivanje"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
+msgid "Whether to collect stats about applications usage"
+msgstr "Da li će biti prikupljani podaci o pokretanim programima"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-"Ovaj ključ određuje format vremena u panelu, kada je „format“ (format) "
-"postavljen na „custom“ (proizvoljno). Možete iskoristiti format podržan unutar "
-"funkcije strftime(). Pogledajte uputstvo za strftime()."
+msgid "disabled OpenSearch providers"
+msgstr "isključeni „OpenSearch“ provajderi"
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-"Ovaj ključ određuje format časovnika u panelu. Dozvoljene vrednosti su „12-"
-"hour“ (12 časaova), „24-hour“ (24 časa), „unix“ (Juniks) i "
-"„custom“ (proizvoljno). Ukoliko ga postavite na „unix“ sat će prikazivati "
-"vreme na osnovu epohe, npr. 1970-01-01. Ukoliko ga postavite na „custom“ sat "
-"će prikazivati vreme na osnovu ključa „custom_format“ (proizvoljni format). "
-"Ukoliko postavite na ključ na „unix“ ili „custom“ zanemaruju se ključevi "
-"„show_date“ (prikaži datum) i „show_seconds“ (prikaži sekunde)."
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Komanda nije nađena"
-#: ../data/org.gnome.shell.gschema.xml.in.h:26
-#| msgid "No extensions installed"
-msgid "Uuids of extensions to disable"
-msgstr "Zanemarena uuid proširenja"
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Ne mogu da raščlanim komandu:"
-#: ../data/org.gnome.shell.gschema.xml.in.h:27
-msgid "Whether to collect stats about applications usage"
-msgstr "Da li da prikupljam podatke o pokretanim programima"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Nije uspelo pokretanje „%s“:"
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Format časovnika"
+#. Translators: Filter to display all applications
+#: ../js/ui/appDisplay.js:226
+msgid "All"
+msgstr "Sve"
-#: ../data/clock-preferences.ui.h:2
-#| msgid "System Preferences..."
-msgid "Clock Preferences"
-msgstr "Postavke časovnika"
-
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Prikaz na panelu"
-
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Prikaži _sekunde"
-
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Prikaži _datum"
-
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "_12 časova"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "_24 časa"
-
-#. **** Applications ****
-#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:773
+#: ../js/ui/appDisplay.js:324
msgid "APPLICATIONS"
msgstr "PROGRAMI"
-#: ../js/ui/appDisplay.js:416
-msgid "PREFERENCES"
-msgstr "POSTAVKE"
+#: ../js/ui/appDisplay.js:350
+msgid "SETTINGS"
+msgstr "PODEŠAVANJA"
-#: ../js/ui/appDisplay.js:721
+#: ../js/ui/appDisplay.js:616
msgid "New Window"
msgstr "Novi prozor"
-#: ../js/ui/appDisplay.js:725
+#: ../js/ui/appDisplay.js:619
msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih"
-#: ../js/ui/appDisplay.js:726
+#: ../js/ui/appDisplay.js:620
msgid "Add to Favorites"
msgstr "Dodaj u omiljene"
-#: ../js/ui/appDisplay.js:1033
-msgid "Drag here to add favorites"
-msgstr "Prevucite ovde kako bi dodali u omiljene"
-
-#: ../js/ui/appFavorites.js:88
+#: ../js/ui/appFavorites.js:91
#, c-format
msgid "%s has been added to your favorites."
-msgstr "%s je dodat među omiljene"
+msgstr "„%s“ je dodat među omiljene."
-#: ../js/ui/appFavorites.js:107
+#: ../js/ui/appFavorites.js:122
#, c-format
msgid "%s has been removed from your favorites."
-msgstr "%s je uklonjen iz omiljenih"
+msgstr "„%s“ je uklonjen iz omiljenih."
-#: ../js/ui/dash.js:142
-msgid "Find"
-msgstr "Nađi"
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Ceo dan"
-#: ../js/ui/dash.js:471
-msgid "Searching..."
-msgstr "Tražim..."
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H:%M"
-#: ../js/ui/dash.js:485
-msgid "No matching results."
-msgstr "Ništa nije pronađeno."
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l:%M %p"
-#. **** Places ****
-#. Translators: This is in the sense of locations for documents,
-#. network locations, etc.
-#: ../js/ui/dash.js:792 ../js/ui/placeDisplay.js:550
-msgid "PLACES & DEVICES"
-msgstr "MESTA I UREĐAJI"
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "N"
-#. **** Documents ****
-#: ../js/ui/dash.js:799 ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "SKORAŠNJE STAVKE"
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "P"
-#: ../js/ui/lookingGlass.js:471
-msgid "No extensions installed"
-msgstr "Nisu instalirana proširenja"
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "U"
-#: ../js/ui/lookingGlass.js:508
-msgid "Enabled"
-msgstr "Omogućeno"
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:510
-msgid "Disabled"
-msgstr "Onemogućeno"
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "Č"
-#: ../js/ui/lookingGlass.js:512
-msgid "Error"
-msgstr "Greška"
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "P"
-#: ../js/ui/lookingGlass.js:514
-msgid "Out of date"
-msgstr "Istekao je datum"
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "S"
-#: ../js/ui/lookingGlass.js:539
-msgid "View Source"
-msgstr "Pogledaj izvor"
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Ned"
-#: ../js/ui/lookingGlass.js:545
-msgid "Web Page"
-msgstr "Internet stranica"
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Pon"
-#: ../js/ui/overview.js:159
-msgid "Undo"
-msgstr "Opozovi"
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Uto"
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:473
-#, c-format
-msgid "Quit %s"
-msgstr "Izađi iz %s"
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "Sre"
-#: ../js/ui/panel.js:498
-#| msgid "System Preferences..."
-msgid "Preferences"
-msgstr "Postavke"
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "Čet"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Pet"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Sub"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Ništa planirano"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %B %d"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %B %d, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Danas"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Sutra"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Ove nedelje"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Sledeće nedelje"
+
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933
+msgid "Remove"
+msgstr "Ukloni"
+
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Podešavanja datuma i vremena"
+
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Otvori kalendar"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:584
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%A, %e. %b, %R:%S"
-#: ../js/ui/panel.js:585
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%A, %e. %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:589
-#| msgid "%a %R"
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%A, %R:%S"
-#: ../js/ui/panel.js:590
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%A, %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:597
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%A, %e. %b, %l:%M:S"
-#: ../js/ui/panel.js:598
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%A, %e. %b, %l:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:602
-#| msgid "%a %l:%M %p"
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%A, %l:%M:%S"
-#: ../js/ui/panel.js:603
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%A, %l:%M"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A, %e. %b, %R"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "SKORAŠNJE STAVKE"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Odjavi „%s“"
+
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+msgid "Log Out"
+msgstr "Odjavi"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr ""
+"Kliknite na „Odjavi“ da napustite ove programe i da se odjavite sa sistema."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "„%s“ će biti oadjavljen automatski za %d sek."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Bićete automatski odjavljeni za %d sek."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Odjavljujem se sa sistema."
+
+#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
+msgid "Shut Down"
+msgstr "Ugasi"
+
+#: ../js/ui/endSessionDialog.js:75
+msgid "Click Shut Down to quit these applications and shut down the system."
+msgstr "Kliknite na „Ugasi“ da napustite ove programe i da ugasite sistem."
+
+#: ../js/ui/endSessionDialog.js:76
+#, c-format
+msgid "The system will shut down automatically in %d seconds."
+msgstr "Sistem će se automatski isključiti za %d sek."
+
+#: ../js/ui/endSessionDialog.js:77
+msgid "Shutting down the system."
+msgstr "Isključujem sistem."
+
+#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+msgid "Restart"
+msgstr "Ponovo pokreni"
+
+#: ../js/ui/endSessionDialog.js:85
+msgid "Click Restart to quit these applications and restart the system."
+msgstr ""
+"Kliknite na „Ponovo pokreni“ da napustite ove programe i da ponovo pokrenete "
+"sistem."
+
+#: ../js/ui/endSessionDialog.js:86
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Sistem će se automatski ponovo pokrenuti za %d sek."
+
+#: ../js/ui/endSessionDialog.js:87
+msgid "Restarting the system."
+msgstr "Ponovno pokrećem sistem."
+
+#: ../js/ui/endSessionDialog.js:395
+msgid "Confirm"
+msgstr "Potvrdi"
+
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Otkaži"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Nisu instalirana proširenja"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Omogućeno"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Onemogućeno"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Greška"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Izvan datuma"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Pogledaj izvor"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Internet stranica"
+
+#: ../js/ui/messageTray.js:926
+msgid "Open"
+msgstr "Otvori"
+
+#: ../js/ui/messageTray.js:1986
+msgid "System Information"
+msgstr "Informacije o sistemu"
+
+#: ../js/ui/overview.js:88
+msgid "Undo"
+msgstr "Opozovi"
+
+#: ../js/ui/overview.js:183
+msgid "Windows"
+msgstr "Prozori"
+
+#: ../js/ui/overview.js:186
+msgid "Applications"
+msgstr "Programi"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:202
+msgid "Dash"
+msgstr "Dašer"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Napusti „%s“"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:741
+#: ../js/ui/panel.js:874
msgid "Activities"
msgstr "Aktivnosti"
-#: ../js/ui/placeDisplay.js:107
+#: ../js/ui/panel.js:975
+msgid "Panel"
+msgstr "Panel"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Ne mogu da demontiram „%s“"
-#: ../js/ui/placeDisplay.js:110
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Ponovi"
-#: ../js/ui/placeDisplay.js:155
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Poveži se na..."
-#. Translators: the "ON" and "OFF" strings are used in the
-#. toggle switches in the status area menus, and must be SHORT.
-#. If you don't have suitable short words, consider initials,
-#. "0"/"1", "⚪"/"⚫", etc.
-#: ../js/ui/popupMenu.js:30 ../js/ui/popupMenu.js:40
-msgid "ON"
-msgstr "⚫"
+#: ../js/ui/placeDisplay.js:380
+msgid "PLACES & DEVICES"
+msgstr "MESTA I UREĐAJI"
-#: ../js/ui/popupMenu.js:31 ../js/ui/popupMenu.js:45
-msgid "OFF"
-msgstr "⚪"
+#. Translators: this MUST be either "toggle-switch-us"
+#. (for toggle switches containing the English words
+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
+#. switches containing "◯" and "|"). Other values will
+#. simply result in invisible toggle switches.
+#: ../js/ui/popupMenu.js:636
+msgid "toggle-switch-us"
+msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:201
msgid "Please enter a command:"
msgstr "Unesite naredbu:"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Nije uspelo pokretanje „%s“:"
+#: ../js/ui/searchDisplay.js:287
+msgid "Searching..."
+msgstr "Tražim..."
-#: ../js/ui/statusMenu.js:91
+#: ../js/ui/searchDisplay.js:301
+msgid "No matching results."
+msgstr "Nema odgovarajućih rezultata."
+
+#: ../js/ui/statusMenu.js:114 ../js/ui/statusMenu.js:178
+msgid "Power Off..."
+msgstr "Isključi..."
+
+#: ../js/ui/statusMenu.js:116 ../js/ui/statusMenu.js:177
+msgid "Suspend"
+msgstr "Obustavi"
+
+#: ../js/ui/statusMenu.js:137
msgid "Available"
msgstr "Dostupan"
-#: ../js/ui/statusMenu.js:95
+#: ../js/ui/statusMenu.js:142
msgid "Busy"
msgstr "Zauzet"
-#: ../js/ui/statusMenu.js:99
-msgid "Invisible"
-msgstr "Nevidljiv"
+#: ../js/ui/statusMenu.js:150
+msgid "My Account"
+msgstr "Moj nalog"
-#: ../js/ui/statusMenu.js:106
-msgid "Account Information..."
-msgstr "Podaci o nalogu..."
+#: ../js/ui/statusMenu.js:154
+msgid "System Settings"
+msgstr "Podešavanja sistema"
-#: ../js/ui/statusMenu.js:110
-msgid "System Preferences..."
-msgstr "Postavke sistema..."
-
-#: ../js/ui/statusMenu.js:117
+#: ../js/ui/statusMenu.js:161
msgid "Lock Screen"
msgstr "Zaključaj ekran"
-#: ../js/ui/statusMenu.js:121
+#: ../js/ui/statusMenu.js:165
msgid "Switch User"
msgstr "Promeni korisnika"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:170
msgid "Log Out..."
msgstr "Odjavi me..."
-#: ../js/ui/statusMenu.js:130
-msgid "Shut Down..."
-msgstr "Isključi..."
+#: ../js/ui/status/accessibility.js:62
+msgid "Zoom"
+msgstr "Zumiraj"
-#: ../js/ui/windowAttentionHandler.js:45
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
+msgid "Visual Alerts"
+msgstr "Vizuelna upozorenja"
+
+#: ../js/ui/status/accessibility.js:80
+msgid "Sticky Keys"
+msgstr "Lepljivi tasteri"
+
+#: ../js/ui/status/accessibility.js:83
+msgid "Slow Keys"
+msgstr "Spori tasteri"
+
+#: ../js/ui/status/accessibility.js:86
+msgid "Bounce Keys"
+msgstr "Odskočni tasteri"
+
+#: ../js/ui/status/accessibility.js:89
+msgid "Mouse Keys"
+msgstr "Tasteri miša"
+
+#: ../js/ui/status/accessibility.js:93
+msgid "Universal Access Settings"
+msgstr "Podešavanja univerzalnog pristupa"
+
+#: ../js/ui/status/accessibility.js:146
+msgid "High Contrast"
+msgstr "Veliki kontrast"
+
+#: ../js/ui/status/accessibility.js:183
+msgid "Large Text"
+msgstr "Veliki tekst"
+
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
+msgid "Bluetooth"
+msgstr "Blutut"
+
+#: ../js/ui/status/bluetooth.js:55
+msgid "Visibility"
+msgstr "Vidljivost"
+
+#: ../js/ui/status/bluetooth.js:69
+msgid "Send Files to Device..."
+msgstr "Pošalji datoteke na uređaj..."
+
+#: ../js/ui/status/bluetooth.js:70
+msgid "Setup a New Device..."
+msgstr "Podesi novi uređaj..."
+
+#: ../js/ui/status/bluetooth.js:95
+msgid "Bluetooth Settings"
+msgstr "Blutut podešavanja"
+
+#: ../js/ui/status/bluetooth.js:188
+msgid "Connection"
+msgstr "Veza"
+
+#: ../js/ui/status/bluetooth.js:224
+msgid "Send Files..."
+msgstr "Pošalji datoteke.."
+
+#: ../js/ui/status/bluetooth.js:229
+msgid "Browse Files..."
+msgstr "Razgledaj datoteke..."
+
+#: ../js/ui/status/bluetooth.js:238
+msgid "Error browsing device"
+msgstr "Greška u pretraživanju uređaja"
+
+#: ../js/ui/status/bluetooth.js:239
+#, c-format
+msgid "The requested device cannot be browsed, error is '%s'"
+msgstr "Traženi uređaj ne može biti razgledan, greška „%s“"
+
+#: ../js/ui/status/bluetooth.js:247
+msgid "Keyboard Settings"
+msgstr "Podešavanja tastature"
+
+#: ../js/ui/status/bluetooth.js:252
+msgid "Mouse Settings"
+msgstr "Podešavanja miša"
+
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
+msgid "Sound Settings"
+msgstr "Podešavanja zvuka"
+
+#: ../js/ui/status/bluetooth.js:368
+#, c-format
+msgid "Authorization request from %s"
+msgstr "Zahtev za ovlašćenje sa „%s“"
+
+#: ../js/ui/status/bluetooth.js:374
+#, c-format
+msgid "Device %s wants access to the service '%s'"
+msgstr "Uređaj „%s“ želi pristup usluzi „%s“"
+
+#: ../js/ui/status/bluetooth.js:376
+msgid "Always grant access"
+msgstr "Uvek odobri pristup"
+
+#: ../js/ui/status/bluetooth.js:377
+msgid "Grant this time only"
+msgstr "Odobri samo ovaj put"
+
+#: ../js/ui/status/bluetooth.js:378
+msgid "Reject"
+msgstr "Odbij"
+
+#: ../js/ui/status/bluetooth.js:408
+#, c-format
+msgid "Pairing confirmation for %s"
+msgstr "Uparujem potvrdu za „%s“"
+
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
+#, c-format
+msgid "Device %s wants to pair with this computer"
+msgstr "Uređaj „%s“ želi da se upari sa ovim računarom"
+
+#: ../js/ui/status/bluetooth.js:415
+#, c-format
+msgid "Please confirm whether the PIN '%s' matches the one on the device."
+msgstr "Molim potvrdite da li se PIN „%s“ podudara sa onim na uređaju."
+
+#: ../js/ui/status/bluetooth.js:417
+msgid "Matches"
+msgstr "Podudara se"
+
+#: ../js/ui/status/bluetooth.js:418
+msgid "Does not match"
+msgstr "Ne podudara se"
+
+#: ../js/ui/status/bluetooth.js:441
+#, c-format
+msgid "Pairing request for %s"
+msgstr "Zahtev za uparivanje za „%s“"
+
+#: ../js/ui/status/bluetooth.js:449
+msgid "Please enter the PIN mentioned on the device."
+msgstr "Molim unesite PIN naznačen na uređaju."
+
+#: ../js/ui/status/bluetooth.js:465
+msgid "OK"
+msgstr "U redu"
+
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Prikaži raspored tastature..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Podešavanja lokalizacije"
+
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+#| msgid "Unknown"
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+#| msgid "Disabled"
+msgid "disabled"
+msgstr "onemogućeno"
+
+#: ../js/ui/status/network.js:476
+#| msgid "Connection"
+msgid "connecting..."
+msgstr "povezujem se..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "potrebna je prijava"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "kabli je isključen"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+#| msgid "Available"
+msgid "unavailable"
+msgstr "nedostupno"
+
+#: ../js/ui/status/network.js:491
+#| msgid "Connection"
+msgid "connection failed"
+msgstr "povezivanje nije uspelo"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Povezan (privatno)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Automatska žičana veza"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Automatska širokopojasna veza"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Automatska dajal-ap veza"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+#| msgid "Quit %s"
+msgid "Auto %s"
+msgstr "Automatska %s veza"
+
+#: ../js/ui/status/network.js:845
+#| msgid "Bluetooth"
+msgid "Auto bluetooth"
+msgstr "Automatska blutut veza"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Automatska bežična veza"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Više..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Omogući mrežne usluge"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Žičana"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Bežična"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mobilna širokopojasna"
+
+#: ../js/ui/status/network.js:1479
+#| msgid "Connection"
+msgid "VPN Connections"
+msgstr "VPN veza"
+
+#: ../js/ui/status/network.js:1488
+#| msgid "Power Settings"
+msgid "Network Settings"
+msgstr "Podešavanja mreža"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Povezani ste na mobilnu širokopojasnu mrežu „%s“"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Povezani ste na mobilnu bežičnu mrežu „%s“"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Povezani ste na mobilnu žičanu mrežu „%s“"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Povezani ste na mobilnu VPN mrežu „%s“"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Povezani ste na „%s“"
+
+#: ../js/ui/status/network.js:1808
+#| msgid "Connection"
+msgid "Connection established"
+msgstr "Veza je uspostavljena"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Umrežavanje je onemogućeno"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Upravnik mreže"
+
+#: ../js/ui/status/power.js:85
+msgid "Power Settings"
+msgstr "Podešavanja napajanja"
+
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Približno..."
+
+#: ../js/ui/status/power.js:118
+#, c-format
+msgid "%d hour remaining"
+msgid_plural "%d hours remaining"
+msgstr[0] "Preostaje %d sat"
+msgstr[1] "Preostaju %d sata"
+msgstr[2] "Preostaje %d sati"
+msgstr[3] "Preostaje jedan sat"
+
+#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
+#: ../js/ui/status/power.js:121
+#, c-format
+msgid "%d %s %d %s remaining"
+msgstr "Preostalo vrem: %d %s %d %s"
+
+#: ../js/ui/status/power.js:123
+msgid "hour"
+msgid_plural "hours"
+msgstr[0] "sat"
+msgstr[1] "sata"
+msgstr[2] "sati"
+msgstr[3] "sat"
+
+#: ../js/ui/status/power.js:123
+msgid "minute"
+msgid_plural "minutes"
+msgstr[0] "minut"
+msgstr[1] "minuta"
+msgstr[2] "minuta"
+msgstr[3] "minut"
+
+#: ../js/ui/status/power.js:126
+#, c-format
+msgid "%d minute remaining"
+msgid_plural "%d minutes remaining"
+msgstr[0] "Preostaje %d minut"
+msgstr[1] "Preostaju %d minuta"
+msgstr[2] "Preostaje %d minuta"
+msgstr[3] "Preostaje jedan minut"
+
+#: ../js/ui/status/power.js:228
+msgid "AC adapter"
+msgstr "Napajanje sa mreže"
+
+#: ../js/ui/status/power.js:230
+msgid "Laptop battery"
+msgstr "Baterija računara"
+
+#: ../js/ui/status/power.js:232
+msgid "UPS"
+msgstr "UPS"
+
+#: ../js/ui/status/power.js:234
+msgid "Monitor"
+msgstr "Monitor"
+
+#: ../js/ui/status/power.js:236
+msgid "Mouse"
+msgstr "Miš"
+
+#: ../js/ui/status/power.js:238
+msgid "Keyboard"
+msgstr "Tastatura"
+
+#: ../js/ui/status/power.js:240
+msgid "PDA"
+msgstr "PDA"
+
+#: ../js/ui/status/power.js:242
+msgid "Cell phone"
+msgstr "Mobilni telefon"
+
+#: ../js/ui/status/power.js:244
+msgid "Media player"
+msgstr "Medija plejer"
+
+#: ../js/ui/status/power.js:246
+msgid "Tablet"
+msgstr "Tablet"
+
+#: ../js/ui/status/power.js:248
+msgid "Computer"
+msgstr "Računar"
+
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:961
+msgid "Unknown"
+msgstr "Nepoznato"
+
+#: ../js/ui/status/volume.js:45
+msgid "Volume"
+msgstr "Jačina zvuka"
+
+#: ../js/ui/status/volume.js:58
+msgid "Microphone"
+msgstr "Mikrofon"
+
+#: ../js/ui/telepathyClient.js:332
+#, c-format
+msgid "%s is online."
+msgstr "„%s“ je na mreži."
+
+#: ../js/ui/telepathyClient.js:337
+#, c-format
+msgid "%s is offline."
+msgstr "„%s“ je van mreže."
+
+#: ../js/ui/telepathyClient.js:340
+#, c-format
+msgid "%s is away."
+msgstr "„%s“ je odsutan."
+
+#: ../js/ui/telepathyClient.js:343
+#, c-format
+msgid "%s is busy."
+msgstr "„%s“ je zauzet."
+
+#. Translators: this is a time format string followed by a date.
+#. If applicable, replace %X with a strftime format valid for your
+#. locale, without seconds.
+#: ../js/ui/telepathyClient.js:474
+#, no-c-format
+msgid "Sent at %X on %A"
+msgstr "Poslato je %A u %X"
+
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Upišite tekst za pretragu..."
+
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Traži"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
-msgstr "%s je pokrenut"
+msgstr "„%s“ je pokrenut"
-#: ../js/ui/windowAttentionHandler.js:47
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "„%s“ je spreman"
-#: ../js/ui/workspacesView.js:230
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Ne mogu da dodam novu radnu površinu jer je već dostignut najveći broj."
+#. translators:
+#. * The number of sound outputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1098
+#, c-format
+msgid "%u Output"
+msgid_plural "%u Outputs"
+msgstr[0] "%u izlaz"
+msgstr[1] "%u izlaza"
+msgstr[2] "%u izlaza"
+msgstr[3] "%u izlaz"
-#: ../js/ui/workspacesView.js:247
-msgid "Can't remove the first workspace."
-msgstr "Ne mogu da uklonim prvu radnu površinu."
+#. translators:
+#. * The number of sound inputs on a particular device
+#: ../src/gvc/gvc-mixer-control.c:1108
+#, c-format
+msgid "%u Input"
+msgid_plural "%u Inputs"
+msgstr[0] "%u ulaz"
+msgstr[1] "%u ulaza"
+msgstr[2] "%u ulaza"
+msgstr[3] "%u ulaz"
-#: ../src/shell-global.c:1105
+#: ../src/gvc/gvc-mixer-control.c:1406
+msgid "System Sounds"
+msgstr "Sistemski zvuci"
+
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "Ispiši vrrziju"
+
+#: ../src/shell-app.c:454
+#, c-format
+#| msgid "Failed to unmount '%s'"
+msgid "Failed to launch '%s'"
+msgstr "Ne mogu da pokrenem „%s“"
+
+#: ../src/shell-global.c:1340
msgid "Less than a minute ago"
msgstr "Pre manje od jednog minuta"
-#: ../src/shell-global.c:1109
+#: ../src/shell-global.c:1344
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "Pre %d minut"
msgstr[1] "Pre %d minuta"
msgstr[2] "Pre %d minuta"
-msgstr[3] "Pre %d minuta"
+msgstr[3] "Pre jedan minut"
-#: ../src/shell-global.c:1114
+#: ../src/shell-global.c:1349
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "Pre %d sat"
msgstr[1] "Pre %d sata"
-msgstr[2] "Pre %d sata"
-msgstr[3] "Pre %d sata"
+msgstr[2] "Pre %d sati"
+msgstr[3] "Pre jednog sata"
-#: ../src/shell-global.c:1119
+#: ../src/shell-global.c:1354
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "Pre %d dan"
msgstr[1] "Pre %d dana"
msgstr[2] "Pre %d dana"
-msgstr[3] "Pre %d dana"
+msgstr[3] "Pre jedan dan"
-#: ../src/shell-global.c:1124
+#: ../src/shell-global.c:1359
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "Pre %d nedelje"
msgstr[1] "Pre %d nedelje"
-msgstr[2] "Pre %d nedelje"
-msgstr[3] "Pre %d nedelja"
+msgstr[2] "Pre %d nedelja"
+msgstr[3] "Pre jedne nedelje"
-#: ../src/shell-uri-util.c:89
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Ujedinjeno kraljevstvo"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Podrazumevano"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta"
+
+#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Lična fascikla"
#. Translators: this is the same string as the one found in
#. * nautilus
-#: ../src/shell-uri-util.c:104
+#: ../src/shell-util.c:104
msgid "File System"
msgstr "Sistem datoteka"
-#: ../src/shell-uri-util.c:250
-msgid "Search"
-msgstr "Traži"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
#. * directory called "some-directory" is in the trash.
#.
-#: ../src/shell-uri-util.c:300
+#: ../src/shell-util.c:300
#, c-format
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
-#~| msgid "Search"
-#~ msgid "Sidebar"
-#~ msgstr "Bočna traka"
+#~| msgid "Applications"
+#~ msgid "No such application"
+#~ msgstr "Nema takvog programa"
-#~ msgid "%H:%M"
-#~ msgstr "%H:%M"
+#~ msgid "Screen Reader"
+#~ msgstr "Čitač ekrana"
-#~ msgid "Applications"
-#~ msgstr "Programi"
+#~ msgid "Screen Keyboard"
+#~ msgstr "Tastatura na ekranu"
-#~ msgid "Recent Documents"
-#~ msgstr "Skorašnji dokumenti"
+#~ msgid "Clock"
+#~ msgstr "Sat"
+
+#~ msgid "Customize the panel clock"
+#~ msgstr "Podešava sat na panelu"
+
+#~ msgid "Custom format of the clock"
+#~ msgstr "Proizvoljan format časovnika"
+
+#~ msgid "Hour format"
+#~ msgstr "Format časovnika"
+
+#~ msgid ""
+#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
+#~ "in time."
+#~ msgstr ""
+#~ "Prikazuje sekunde u časovniku, ukoliko je postavljeno na „true“ (tačno) i "
+#~ "format postavljen na „12-hour“ (12 časa) ili „24-hour“ (24 časa)."
+
+#~ msgid "Overview workspace view mode"
+#~ msgstr "Način za pregled radnih površina"
+
+#~ msgid ""
+#~ "The selected workspace view mode in the overview. Supported values are "
+#~ "\"single\" and \"grid\"."
+#~ msgstr ""
+#~ "Izabrani način pregleda radnih površina. Podržane vrednosti su "
+#~ "„single“ (pojedinačno) i „grid“ (u mreži)."
+
+#~ msgid ""
+#~ "This key specifies the format used by the panel clock when the format key "
+#~ "is set to \"custom\". You can use conversion specifiers understood by "
+#~ "strftime() to obtain a specific format. See the strftime() manual for "
+#~ "more information."
+#~ msgstr ""
+#~ "Ovaj ključ određuje format vremena u panelu, kada je „format“ (format) "
+#~ "postavljen na „custom“ (proizvoljno). Možete iskoristiti format podržan "
+#~ "unutar funkcije strftime(). Pogledajte uputstvo za strftime()."
+
+#~ msgid ""
+#~ "This key specifies the hour format used by the panel clock. Possible "
+#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
+#~ msgstr ""
+#~ "Ovaj ključ određuje format časovnika u panelu. Dozvoljene vrednosti su „12-"
+#~ "hour“ (12 časaova), „24-hour“ (24 časa), „unix“ (Juniks) i "
+#~ "„custom“ (proizvoljno). Ukoliko ga postavite na „unix“ sat će prikazivati "
+#~ "vreme na osnovu epohe, npr. 1970-01-01. Ukoliko ga postavite na „custom“ "
+#~ "sat će prikazivati vreme na osnovu ključa „custom_format“ (proizvoljni "
+#~ "format). Ukoliko postavite na ključ na „unix“ ili „custom“ zanemaruju se "
+#~ "ključevi „show_date“ (prikaži datum) i „show_seconds“ (prikaži sekunde)."
+
+#~ msgid "Clock Format"
+#~ msgstr "Format časovnika"
diff --git a/po/sv.po b/po/sv.po
index 32f6c410d..7ff9c7336 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,14 +1,14 @@
# Swedish translation for gnome-shell.
-# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
+# Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell package.
-# Daniel Nylander , 2009, 2010.
+# Daniel Nylander , 2009, 2010, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-12-31 12:58+0100\n"
-"PO-Revision-Date: 2010-12-31 12:57+0100\n"
+"POT-Creation-Date: 2011-03-25 22:15+0100\n"
+"PO-Revision-Date: 2011-03-25 22:15+0100\n"
"Last-Translator: Daniel Nylander \n"
"Language-Team: Swedish \n"
"Language: sv\n"
@@ -25,88 +25,54 @@ msgstr "GNOME-skal"
msgid "Window management and application launching"
msgstr "Fönsterhantering och programstarter"
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1
-msgid "Clock"
-msgstr "Klocka"
-
-#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2
-msgid "Customize the panel clock"
-msgstr "Anpassa panelklockan"
-
#: ../data/org.gnome.shell.gschema.xml.in.h:1
-msgid ""
-"Allows access to internal debugging and monitoring tools using the Alt-F2 "
-"dialog."
-msgstr ""
-"Tillåter åtkomst till interna verktyg för felsökning och övervakning med "
-"dialogen Alt-F2."
+msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
+msgstr "Tillåter åtkomst till interna verktyg för felsökning och övervakning med dialogen Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.h:2
-msgid "Custom format of the clock"
-msgstr "Anpassat format för klockan"
+msgid "Enable internal tools useful for developers and testers from Alt-F2"
+msgstr "Aktivera interna verktyg användbara för utvecklare och testare från Alt-F2"
#: ../data/org.gnome.shell.gschema.xml.in.h:3
-msgid "Enable internal tools useful for developers and testers from Alt-F2"
-msgstr ""
-"Aktivera interna verktyg användbara för utvecklare och testare från Alt-F2"
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "File extension used for storing the screencast"
msgstr "Filändelse att använda för lagring av skärminspelningen"
-#: ../data/org.gnome.shell.gschema.xml.in.h:5
+#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid "Framerate used for recording screencasts."
msgstr "Bildfrekvens för inspelade skärminspelningar."
-#: ../data/org.gnome.shell.gschema.xml.in.h:6
-msgid ""
-"GNOME Shell extensions have a uuid property; this key lists extensions which "
-"should not be loaded."
-msgstr ""
+#: ../data/org.gnome.shell.gschema.xml.in.h:5
+msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should not be loaded."
+msgstr "GNOME Shell-tillägg har en uuid-egenskap; denna nyckel listar tillägg som inte ska läsas in."
-#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid "History for command (Alt-F2) dialog"
msgstr "Historik för kommandodialog (Alt-F2)"
+#: ../data/org.gnome.shell.gschema.xml.in.h:7
+msgid "History for the looking glass dialog"
+msgstr "Historik för spegel-dialogen"
+
#: ../data/org.gnome.shell.gschema.xml.in.h:8
-msgid "Hour format"
-msgstr "Timmesformat"
+msgid "If true, display date in the clock, in addition to time."
+msgstr "Om true, visa datum i klockan, i tillägg till tiden."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display date in the "
-"clock, in addition to time."
-msgstr ""
-"Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa datum i "
-"klockan, i tillägg till tiden."
+msgid "If true, display seconds in time."
+msgstr "Om true, visa sekunder i tiden."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
-msgid ""
-"If true and format is either \"12-hour\" or \"24-hour\", display seconds in "
-"time."
-msgstr ""
-"Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa "
-"sekunder i tiden."
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "If true, display the ISO week date in the calendar."
msgstr "Om true, visa veckodatum enligt ISO i kalendern."
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "Lista över skrivbordsfil-id för favoritprogram"
#: ../data/org.gnome.shell.gschema.xml.in.h:13
-msgid ""
-"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
-"used for gst-launch. The pipeline should have an unconnected sink pad where "
-"the recorded video is recorded. It will normally have a unconnected source "
-"pad; output from that pad will be written into the output file. However the "
-"pipeline can also take care of its own output - this might be used to send "
-"the output to an icecast server via shout2send or similar. When unset or set "
-"to an empty value, the default pipeline will be used. This is currently "
-"'videorate ! theoraenc ! oggmux' and records to Ogg Theora."
-msgstr ""
+#, no-c-format
+msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
+msgstr "Ställer in GStreamer-rörledningen som används för att koda inspelningar. Den följer det syntax som används för gst-launch. Rörledningen bör ha en oansluten sink pad där den inspelade videon spelas in. Den kommer vanligtvis har en oansluten source pad; utmatning från denna pad kommer att skrivas till utmatningsfilen. Dock kan rörledningen också ta hand om sin egna utmatning - detta kan användas för att skicka utmatningen till en icecast-server via shout2send eller liknande. När den inte är inställd eller inställd till ett tomt värde så kommer standardrörledningen att användas. Detta är för närvarande \"videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux\" och inspelningar till WEBM använder kodeken VP8. %T används som en platshållare för en gissning av det optimala trådantalet på systemet."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
@@ -121,239 +87,74 @@ msgid "Show time with seconds"
msgstr "Visa tid med sekunder"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
-msgid ""
-"The applications corresponding to these identifiers will be displayed in the "
-"favorites area."
-msgstr ""
-"Programmen som motsvarar dessa identifierare kommer att visas i "
-"favoritområdet."
+msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
+msgstr "Programmen som motsvarar dessa identifierare kommer att visas i favoritområdet."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
-msgid ""
-"The filename for recorded screencasts will be a unique filename based on the "
-"current date, and use this extension. It should be changed when recording to "
-"a different container format."
-msgstr ""
+msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
+msgstr "Filnamnet för skärminspelningar kommer att vara ett unikt filnamn baserat på aktuellt datum och använder denna filändelse. Den bör ändras när inspelningar sker i andra containerformat."
#: ../data/org.gnome.shell.gschema.xml.in.h:19
-msgid ""
-"The framerate of the resulting screencast recordered by GNOME Shell's "
-"screencast recorder in frames-per-second."
-msgstr ""
+msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
+msgstr "Bildfrekvensen för skärminspelningen som spelats in av GNOME Shells skärminspelare i bilder per sekund."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr ""
+msgstr "Den gstreamer-rörledning som användes för att koda skärminspelningen"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
-msgid ""
-"The shell normally monitors active applications in order to present the most "
-"used ones (e.g. in launchers). While this data will be kept private, you may "
-"want to disable this for privacy reasons. Please note that doing so won't "
-"remove already saved data."
-msgstr ""
+msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
+msgstr "Skalet övervakar normalt sett aktiva program för att kunna visa de mest använda (t.ex. i programstartare). Då denna data kommer att hållas privat så kan du inaktivera detta av integritetsskäl. Observera att göra det kommer inte ta bort redan sparat data."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
-msgid ""
-"This key specifies the format used by the panel clock when the format key is "
-"set to \"custom\". You can use conversion specifiers understood by strftime"
-"() to obtain a specific format. See the strftime() manual for more "
-"information."
-msgstr ""
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
-msgid ""
-"This key specifies the hour format used by the panel clock. Possible values "
-"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", "
-"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set "
-"to \"custom\", the clock will display time according to the format specified "
-"in the custom_format key. Note that if set to either \"unix\" or \"custom\", "
-"the show_date and show_seconds keys are ignored."
-msgstr ""
-
-#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Uuids of extensions to disable"
msgstr "Uuid:er för tillägg att inaktivera"
-#: ../data/org.gnome.shell.gschema.xml.in.h:25
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "Huruvida statistik ska samlas in för programanvändning"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1
-msgid "Clip the crosshairs at the center"
-msgstr ""
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
+msgid "disabled OpenSearch providers"
+msgstr "inaktiverade OpenSearch-leverantörer"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2
-msgid "Color of the crosshairs"
-msgstr ""
+#: ../js/misc/util.js:71
+msgid "Command not found"
+msgstr "Kommandot hittades inte"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
+#. Replace "Error invoking GLib.shell_parse_argv: " with
+#. something nicer
+#: ../js/misc/util.js:98
+msgid "Could not parse command:"
+msgstr "Kunde inte tolka kommando:"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7
-msgid "Enable lens mode"
-msgstr "Aktivera linsläge"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10
-msgid "Length of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11
-msgid "Magnification factor"
-msgstr "Förstoringsfaktor"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12
-msgid "Mouse Tracking Mode"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13
-msgid "Opacity of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14
-msgid "Screen position"
-msgstr "Skärmposition"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16
-msgid "Show or hide crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17
-msgid "Show or hide the magnifier"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22
-msgid "Thickness of the crosshairs"
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr ""
-
-#: ../data/clock-preferences.ui.h:1
-msgid "Clock Format"
-msgstr "Klockformat"
-
-#: ../data/clock-preferences.ui.h:2
-msgid "Clock Preferences"
-msgstr "Klockinställningar"
-
-#: ../data/clock-preferences.ui.h:3
-msgid "Panel Display"
-msgstr "Panelvisning"
-
-#: ../data/clock-preferences.ui.h:4
-msgid "Show seco_nds"
-msgstr "Visa seku_nder"
-
-#: ../data/clock-preferences.ui.h:5
-msgid "Show the _date"
-msgstr "Visa _datum"
-
-#: ../data/clock-preferences.ui.h:6
-msgid "_12 hour format"
-msgstr "_12-timmarsformat"
-
-#: ../data/clock-preferences.ui.h:7
-msgid "_24 hour format"
-msgstr "_24-timmarsformat"
+#: ../js/misc/util.js:106
+#, c-format
+msgid "Execution of '%s' failed:"
+msgstr "Körning av \"%s\" misslyckades:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:155
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Alla"
-#: ../js/ui/appDisplay.js:236
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "PROGRAM"
-#: ../js/ui/appDisplay.js:266
-msgid "PREFERENCES"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
msgstr "INSTÄLLNINGAR"
-#: ../js/ui/appDisplay.js:563
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Nytt fönster"
-#: ../js/ui/appDisplay.js:567
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Ta bort från favoriter"
-#: ../js/ui/appDisplay.js:568
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Lägg till som favorit"
@@ -367,228 +168,505 @@ msgstr "%s har lagts till i dina favoriter."
msgid "%s has been removed from your favorites."
msgstr "%s har tagits bort från dina favoriter."
-#: ../js/ui/dash.js:27
+#. Translators: Shown in calendar event list for all day events
+#. * Keep it short, best if you can use less then 10 characters
+#.
+#: ../js/ui/calendar.js:66
+msgctxt "event list time"
+msgid "All Day"
+msgstr "Hela dagen"
+
+#. Translators: Shown in calendar event list, if 24h format
+#: ../js/ui/calendar.js:71
+msgctxt "event list time"
+msgid "%H:%M"
+msgstr "%H.%M"
+
+#. Transators: Shown in calendar event list, if 12h format
+#: ../js/ui/calendar.js:78
+msgctxt "event list time"
+msgid "%l:%M %p"
+msgstr "%l.%M %p"
+
+#. Translators: Calendar grid abbreviation for Sunday.
+#. *
+#. * NOTE: These grid abbreviations are always shown together
+#. * and in order, e.g. "S M T W T F S".
+#.
+#: ../js/ui/calendar.js:118
+msgctxt "grid sunday"
+msgid "S"
+msgstr "S"
+
+#. Translators: Calendar grid abbreviation for Monday
+#: ../js/ui/calendar.js:120
+msgctxt "grid monday"
+msgid "M"
+msgstr "M"
+
+#. Translators: Calendar grid abbreviation for Tuesday
+#: ../js/ui/calendar.js:122
+msgctxt "grid tuesday"
+msgid "T"
+msgstr "T"
+
+#. Translators: Calendar grid abbreviation for Wednesday
+#: ../js/ui/calendar.js:124
+msgctxt "grid wednesday"
+msgid "W"
+msgstr "O"
+
+#. Translators: Calendar grid abbreviation for Thursday
+#: ../js/ui/calendar.js:126
+msgctxt "grid thursday"
+msgid "T"
+msgstr "T"
+
+#. Translators: Calendar grid abbreviation for Friday
+#: ../js/ui/calendar.js:128
+msgctxt "grid friday"
+msgid "F"
+msgstr "F"
+
+#. Translators: Calendar grid abbreviation for Saturday
+#: ../js/ui/calendar.js:130
+msgctxt "grid saturday"
+msgid "S"
+msgstr "L"
+
+#. Translators: Event list abbreviation for Sunday.
+#. *
+#. * NOTE: These list abbreviations are normally not shown together
+#. * so they need to be unique (e.g. Tuesday and Thursday cannot
+#. * both be 'T').
+#.
+#: ../js/ui/calendar.js:143
+msgctxt "list sunday"
+msgid "Su"
+msgstr "Sö"
+
+#. Translators: Event list abbreviation for Monday
+#: ../js/ui/calendar.js:145
+msgctxt "list monday"
+msgid "M"
+msgstr "Må"
+
+#. Translators: Event list abbreviation for Tuesday
+#: ../js/ui/calendar.js:147
+msgctxt "list tuesday"
+msgid "T"
+msgstr "Ti"
+
+#. Translators: Event list abbreviation for Wednesday
+#: ../js/ui/calendar.js:149
+msgctxt "list wednesday"
+msgid "W"
+msgstr "On"
+
+#. Translators: Event list abbreviation for Thursday
+#: ../js/ui/calendar.js:151
+msgctxt "list thursday"
+msgid "Th"
+msgstr "To"
+
+#. Translators: Event list abbreviation for Friday
+#: ../js/ui/calendar.js:153
+msgctxt "list friday"
+msgid "F"
+msgstr "Fr"
+
+#. Translators: Event list abbreviation for Saturday
+#: ../js/ui/calendar.js:155
+msgctxt "list saturday"
+msgid "S"
+msgstr "Lö"
+
+#. Translators: Text to show if there are no events
+#: ../js/ui/calendar.js:704
+msgid "Nothing Scheduled"
+msgstr "Ingenting i schemat"
+
+#. Translators: Shown on calendar heading when selected day occurs on current year
+#: ../js/ui/calendar.js:720
+msgctxt "calendar heading"
+msgid "%A, %B %d"
+msgstr "%A, %d %B"
+
+#. Translators: Shown on calendar heading when selected day occurs on different year
+#: ../js/ui/calendar.js:723
+msgctxt "calendar heading"
+msgid "%A, %B %d, %Y"
+msgstr "%A, %d %B, %Y"
+
+#: ../js/ui/calendar.js:733
+msgid "Today"
+msgstr "Idag"
+
+#: ../js/ui/calendar.js:737
+msgid "Tomorrow"
+msgstr "Igår"
+
+#: ../js/ui/calendar.js:746
+msgid "This week"
+msgstr "Denna vecka"
+
+#: ../js/ui/calendar.js:754
+msgid "Next week"
+msgstr "Nästa vecka"
+
+#: ../js/ui/dash.js:174
+#: ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Ta bort"
-#: ../js/ui/docDisplay.js:494
-msgid "RECENT ITEMS"
-msgstr "TIDIGARE OBJEKT"
+#: ../js/ui/dateMenu.js:91
+msgid "Date and Time Settings"
+msgstr "Inställningar för datum och tid"
-#: ../js/ui/lookingGlass.js:552
-msgid "No extensions installed"
-msgstr "Inga tillägg installerade"
-
-#: ../js/ui/lookingGlass.js:589
-msgid "Enabled"
-msgstr "Aktiverad"
-
-#. translators:
-#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087
-msgid "Disabled"
-msgstr "Inaktiverad"
-
-#: ../js/ui/lookingGlass.js:593
-msgid "Error"
-msgstr "Fel"
-
-#: ../js/ui/lookingGlass.js:595
-msgid "Out of date"
-msgstr "Utanför datumintervallet"
-
-#: ../js/ui/lookingGlass.js:620
-msgid "View Source"
-msgstr "Visa källa"
-
-#: ../js/ui/lookingGlass.js:626
-msgid "Web Page"
-msgstr "Webbsida"
-
-#: ../js/ui/overview.js:96
-msgid "Undo"
-msgstr "Ångra"
-
-#: ../js/ui/overview.js:158
-msgid "Windows"
-msgstr "Fönster"
-
-#: ../js/ui/overview.js:161
-msgid "Applications"
-msgstr "Program"
-
-#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:474
-#, c-format
-msgid "Quit %s"
-msgstr "Avsluta %s"
-
-#: ../js/ui/panel.js:499
-msgid "Preferences"
-msgstr "Inställningar"
+#: ../js/ui/dateMenu.js:111
+msgid "Open Calendar"
+msgstr "Öppna kalender"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:585
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %R.%S"
-#: ../js/ui/panel.js:586
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%a %e %b, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/panel.js:590
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R.%S"
-#: ../js/ui/panel.js:591
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/panel.js:598
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %H.%M.%S"
-#: ../js/ui/panel.js:599
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%a %e %b, %H.%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/panel.js:603
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %H.%M.%S"
-#: ../js/ui/panel.js:604
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %H.%M"
+#. Translators: This is the date format to use when the calendar popup is
+#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
+#.
+#: ../js/ui/dateMenu.js:194
+msgid "%A %B %e, %Y"
+msgstr "%A %e %B, %Y"
+
+#: ../js/ui/docDisplay.js:19
+msgid "RECENT ITEMS"
+msgstr "TIDIGARE OBJEKT"
+
+#: ../js/ui/endSessionDialog.js:63
+#, c-format
+msgid "Log Out %s"
+msgstr "Logga ut %s"
+
+#: ../js/ui/endSessionDialog.js:64
+#: ../js/ui/endSessionDialog.js:70
+msgid "Log Out"
+msgstr "Logga ut"
+
+#: ../js/ui/endSessionDialog.js:65
+msgid "Click Log Out to quit these applications and log out of the system."
+msgstr "Klicka på Logga ut för att avsluta dessa program och logga ut från systemet."
+
+#: ../js/ui/endSessionDialog.js:66
+#, c-format
+msgid "%s will be logged out automatically in %d seconds."
+msgstr "%s kommer att loggas ut automatiskt om %d sekunder."
+
+#: ../js/ui/endSessionDialog.js:67
+#, c-format
+msgid "You will be logged out automatically in %d seconds."
+msgstr "Du kommer att loggas ut automatiskt om %d sekunder."
+
+#: ../js/ui/endSessionDialog.js:68
+msgid "Logging out of the system."
+msgstr "Loggar ut från systemet."
+
+#: ../js/ui/endSessionDialog.js:75
+#: ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
+msgstr "Stäng av"
+
+#: ../js/ui/endSessionDialog.js:76
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Klicka på Stäng av för att avsluta dessa program och stänga av systemet."
+
+#: ../js/ui/endSessionDialog.js:77
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Systemet kommer att stängas av automatiskt om %d sekunder."
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "Stänger av systemet."
+
+#: ../js/ui/endSessionDialog.js:80
+#: ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
+msgid "Restart"
+msgstr "Starta om"
+
+#: ../js/ui/endSessionDialog.js:89
+msgid "Click Restart to quit these applications and restart the system."
+msgstr "Klicka på Starta om för att avsluta dessa program och starta om systemet."
+
+#: ../js/ui/endSessionDialog.js:90
+#, c-format
+msgid "The system will restart automatically in %d seconds."
+msgstr "Systemet kommer att startas om automatiskt om %d sekunder."
+
+#: ../js/ui/endSessionDialog.js:91
+msgid "Restarting the system."
+msgstr "Starta om systemet."
+
+#: ../js/ui/endSessionDialog.js:415
+#: ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: ../js/ui/lookingGlass.js:588
+msgid "No extensions installed"
+msgstr "Inga tillägg installerade"
+
+#: ../js/ui/lookingGlass.js:625
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#. translators:
+#. * The device has been disabled
+#: ../js/ui/lookingGlass.js:627
+#: ../src/gvc/gvc-mixer-control.c:1091
+msgid "Disabled"
+msgstr "Inaktiverad"
+
+#: ../js/ui/lookingGlass.js:629
+msgid "Error"
+msgstr "Fel"
+
+#: ../js/ui/lookingGlass.js:631
+msgid "Out of date"
+msgstr "Utanför datumintervallet"
+
+#: ../js/ui/lookingGlass.js:656
+msgid "View Source"
+msgstr "Visa källa"
+
+#: ../js/ui/lookingGlass.js:662
+msgid "Web Page"
+msgstr "Webbsida"
+
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "Öppna"
+
+#: ../js/ui/messageTray.js:2145
+msgid "System Information"
+msgstr "Systeminformation"
+
+#: ../js/ui/overview.js:91
+msgid "Undo"
+msgstr "Ångra"
+
+#: ../js/ui/overview.js:186
+msgid "Windows"
+msgstr "Fönster"
+
+#: ../js/ui/overview.js:189
+msgid "Applications"
+msgstr "Program"
+
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "Favoriter"
+
+#. TODO - _quit() doesn't really work on apps in state STARTING yet
+#: ../js/ui/panel.js:515
+#, c-format
+msgid "Quit %s"
+msgstr "Avsluta %s"
+
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:749
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Aktiviteter"
-#: ../js/ui/placeDisplay.js:111
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Övre rad"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "Misslyckades med att avmontera \"%s\""
-#: ../js/ui/placeDisplay.js:114
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "Försök igen"
-#: ../js/ui/placeDisplay.js:159
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "Anslut till..."
-#: ../js/ui/placeDisplay.js:558
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "PLATSER OCH ENHETER"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Autentisering krävs"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Administratör"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Autentisera"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Tyvärr, det fungerade inte. Försök igen."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Lösenord:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:33
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
-msgstr ""
+msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:233
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Ange ett kommando:"
-#: ../js/ui/runDialog.js:378
-#, c-format
-msgid "Execution of '%s' failed:"
-msgstr "Körning av \"%s\" misslyckades:"
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "Söker..."
-#: ../js/ui/statusMenu.js:101
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "Inga sökträffar."
+
+#: ../js/ui/statusMenu.js:161
+#: ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "Stäng av..."
+
+#: ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "Vänteläge"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Tillgänglig"
-#: ../js/ui/statusMenu.js:106
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Upptagen"
-#: ../js/ui/statusMenu.js:114
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Mitt konto"
-#: ../js/ui/statusMenu.js:118
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Systeminställningar"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Lås skärmen"
-#: ../js/ui/statusMenu.js:129
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Växla användare"
-#: ../js/ui/statusMenu.js:134
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Logga ut..."
-#: ../js/ui/statusMenu.js:141
-msgid "Suspend..."
-msgstr "Vänteläge..."
-
-#: ../js/ui/statusMenu.js:145
-msgid "Shut Down..."
-msgstr "Stäng av..."
-
-#: ../js/ui/status/accessibility.js:82
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "Zooma"
-#: ../js/ui/status/accessibility.js:88
-msgid "Screen Reader"
-msgstr "Skärmläsare"
-
-#: ../js/ui/status/accessibility.js:91
-msgid "Screen Keyboard"
-msgstr "Skärmtangentbord"
-
-#: ../js/ui/status/accessibility.js:94
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Visuella larm"
-#: ../js/ui/status/accessibility.js:97
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "Klistriga tangenter"
-#: ../js/ui/status/accessibility.js:100
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "Tröga tangenter"
-#: ../js/ui/status/accessibility.js:103
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "Studsande tangenter"
-#: ../js/ui/status/accessibility.js:106
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "Mustangenter"
-#: ../js/ui/status/accessibility.js:110
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "Inställningar för allmän åtkomst"
-#: ../js/ui/status/accessibility.js:163
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Hög kontrast"
-#: ../js/ui/status/accessibility.js:205
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Stor text"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234
+#: ../js/ui/status/bluetooth.js:42
+#: ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333
+#: ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407
+#: ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -604,115 +682,261 @@ msgstr "Skicka filer till enhet..."
msgid "Setup a New Device..."
msgstr "Konfigurera en ny enhet..."
-#: ../js/ui/status/bluetooth.js:94
+#: ../js/ui/status/bluetooth.js:95
msgid "Bluetooth Settings"
msgstr "Inställningar för Bluetooth"
-#: ../js/ui/status/bluetooth.js:185
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Anslutning"
-#: ../js/ui/status/bluetooth.js:221
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Skicka filer..."
-#: ../js/ui/status/bluetooth.js:226
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Bläddra efter filer..."
-#: ../js/ui/status/bluetooth.js:235
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
-msgstr ""
+msgstr "Fel vid bläddring i enheten"
-#: ../js/ui/status/bluetooth.js:236
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
-msgstr ""
+msgstr "Den begärda enheten kan inte bläddras. Felet är \"%s\""
-#: ../js/ui/status/bluetooth.js:244
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Tangentbordsinställningar"
-#: ../js/ui/status/bluetooth.js:249
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Musinställningar"
-#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62
+#: ../js/ui/status/bluetooth.js:259
+#: ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Ljudinställningar"
-#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361
-#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434
-msgid "Bluetooth Agent"
-msgstr ""
-
-#: ../js/ui/status/bluetooth.js:362
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
-msgstr ""
+msgstr "Auktoriseringsbegäran från %s"
-#: ../js/ui/status/bluetooth.js:368
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Enheten %s vill ha åtkomst till tjänsten \"%s\""
-#: ../js/ui/status/bluetooth.js:370
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Tillåt alltid åtkomst"
-#: ../js/ui/status/bluetooth.js:371
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Tillåt för denna gång"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Neka"
-#: ../js/ui/status/bluetooth.js:402
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
-msgstr ""
+msgstr "Bekräftelse av ihopparning för %s"
-#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442
+#: ../js/ui/status/bluetooth.js:414
+#: ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
-msgstr ""
+msgstr "Enheten %s vill paras ihop med denna dator"
-#: ../js/ui/status/bluetooth.js:409
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
-msgstr ""
+msgstr "Bekräfta huruvida PIN-koden \"%s\" stämmer med den på enheten."
-#: ../js/ui/status/bluetooth.js:411
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
-msgstr ""
+msgstr "Stämmer"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
-msgstr ""
+msgstr "Stämmer inte"
-#: ../js/ui/status/bluetooth.js:435
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Ihopparningsbegäran för %s"
-#: ../js/ui/status/bluetooth.js:443
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
-msgstr ""
+msgstr "Ange PIN-koden som anges på enheten."
-#: ../js/ui/status/bluetooth.js:459
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
-#: ../js/ui/status/bluetooth.js:460
-msgid "Cancel"
-msgstr "Avbryt"
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "Visa tangentbordslayout..."
+
+#: ../js/ui/status/keyboard.js:76
+msgid "Localization Settings"
+msgstr "Språkinställningar"
+
+#: ../js/ui/status/network.js:102
+#: ../js/ui/status/network.js:1437
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "inaktiverad"
+
+#: ../js/ui/status/network.js:478
+msgid "connecting..."
+msgstr "ansluter..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:481
+msgid "authentication required"
+msgstr "autentisering krävs"
+
+#. Translators: this is for devices that require some kind of firmware or kernel
+#. module, which is missing
+#: ../js/ui/status/network.js:491
+msgid "firmware missing"
+msgstr "fast programvara saknas"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:498
+msgid "cable unplugged"
+msgstr "kabeln är inte ansluten"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:503
+msgid "unavailable"
+msgstr "inte tillgänglig"
+
+#: ../js/ui/status/network.js:505
+msgid "connection failed"
+msgstr "anslutningen misslyckades"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:585
+#: ../js/ui/status/network.js:1385
+msgid "Connected (private)"
+msgstr "Ansluten (privat)"
+
+#: ../js/ui/status/network.js:666
+msgid "Auto Ethernet"
+msgstr "Automatiskt ethernet"
+
+#: ../js/ui/status/network.js:741
+msgid "Auto broadband"
+msgstr "Automatiskt bredband"
+
+#: ../js/ui/status/network.js:744
+msgid "Auto dial-up"
+msgstr "Automatiskt uppringt nätverk"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:887
+#: ../js/ui/status/network.js:1397
+#, c-format
+msgid "Auto %s"
+msgstr "Automatiskt %s"
+
+#: ../js/ui/status/network.js:889
+msgid "Auto bluetooth"
+msgstr "Automatisk Bluetooth"
+
+#: ../js/ui/status/network.js:1399
+msgid "Auto wireless"
+msgstr "Automatiskt trådlöst nätverk"
+
+#: ../js/ui/status/network.js:1457
+msgid "More..."
+msgstr "Mer..."
+
+#: ../js/ui/status/network.js:1480
+msgid "Enable networking"
+msgstr "Aktivera nätverk"
+
+#: ../js/ui/status/network.js:1492
+msgid "Wired"
+msgstr "Trådbundet"
+
+#: ../js/ui/status/network.js:1503
+msgid "Wireless"
+msgstr "Trådlöst"
+
+#: ../js/ui/status/network.js:1513
+msgid "Mobile broadband"
+msgstr "Mobilt bredband"
+
+#: ../js/ui/status/network.js:1523
+msgid "VPN Connections"
+msgstr "VPN-anslutningar"
+
+#: ../js/ui/status/network.js:1532
+msgid "Network Settings"
+msgstr "Nätverksinställningar"
+
+#: ../js/ui/status/network.js:1827
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Du är nu ansluten till mobila bredbandsanslutningen \"%s\""
+
+#: ../js/ui/status/network.js:1831
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Du är nu ansluten till trådlösa nätverket \"%s\""
+
+#: ../js/ui/status/network.js:1835
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Du är nu ansluten till trådbundna nätverket \"%s\""
+
+#: ../js/ui/status/network.js:1839
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Du är nu ansluten till VPN-nätverket \"%s\""
+
+#: ../js/ui/status/network.js:1844
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Du är nu ansluten till \"%s\""
+
+#: ../js/ui/status/network.js:1852
+msgid "Connection established"
+msgstr "Anslutningen etablerad"
+
+#: ../js/ui/status/network.js:1974
+msgid "Networking is disabled"
+msgstr "Nätverk är inaktiverat"
+
+#: ../js/ui/status/network.js:2099
+msgid "Network Manager"
+msgstr "Nätverkshanterare"
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Ströminställningar"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "Beräknar..."
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -720,102 +944,103 @@ msgstr[0] "%d timme återstår"
msgstr[1] "%d timmar återstår"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s återstår"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "timme"
msgstr[1] "timmar"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "minut"
msgstr[1] "minuter"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d minut återstår"
msgstr[1] "%d minuter återstår"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
-msgstr ""
+msgstr "Extern ström"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
-msgstr ""
+msgstr "Batteri i bärbar dator"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS-reservström"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Skärm"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Mus"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Tangentbord"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "Handdator"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Mobiltelefon"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Mediaspelare"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Pekdator"
-#: ../js/ui/status/power.js:257
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Dator"
-#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012
+#: ../js/ui/status/power.js:250
+#: ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Okänt"
-#: ../js/ui/status/volume.js:41
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Volym"
-#: ../js/ui/status/volume.js:54
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Mikrofon"
-#: ../js/ui/telepathyClient.js:560
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s är ansluten."
-#: ../js/ui/telepathyClient.js:565
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s är frånkopplad."
-#: ../js/ui/telepathyClient.js:568
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s är frånvarande."
-#: ../js/ui/telepathyClient.js:571
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s är upptagen."
@@ -823,39 +1048,37 @@ msgstr "%s är upptagen."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:665
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Skickades klockan %X på %A"
-#: ../js/ui/viewSelector.js:26
-msgid "Search your computer"
-msgstr "Sök i din dator"
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "Skriv för att söka..."
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:142
+#: ../src/shell-util.c:250
+msgid "Search"
+msgstr "Sök"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s har startat"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "\"%s\" är redo"
-#: ../js/ui/workspacesView.js:244
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr ""
-"Kan inte lägga till en ny arbetsyta eftersom maximalt antal arbetsytor har "
-"uppnåtts."
-
-#: ../js/ui/workspacesView.js:260
-msgid "Can't remove the first workspace."
-msgstr "Kan inte ta bort första arbetsytan."
-
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -864,49 +1087,70 @@ msgstr[1] "%u utgångar"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u ingång"
msgstr[1] "%u ingångar"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Systemljud"
-#: ../src/shell-global.c:1156
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "Skriv ut version"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Misslyckades med att starta \"%s\""
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Mindre än en minut sedan"
-#: ../src/shell-global.c:1160
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d minut sedan"
msgstr[1] "%d minuter sedan"
-#: ../src/shell-global.c:1165
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d timme sedan"
msgstr[1] "%d timmar sedan"
-#: ../src/shell-global.c:1170
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d dag sedan"
msgstr[1] "%d dagar sedan"
-#: ../src/shell-global.c:1175
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d vecka sedan"
msgstr[1] "%d veckor sedan"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Storbritannien"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Standard"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "Autentiseringsdialogen stängdes av användaren"
+
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "Hemmapp"
@@ -917,10 +1161,6 @@ msgstr "Hemmapp"
msgid "File System"
msgstr "Filsystem"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "Sök"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -931,68 +1171,97 @@ msgstr "Sök"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#, fuzzy
+#~ msgid "No such application"
+#~ msgstr "Program"
+
+#, fuzzy
+#~ msgid "Shut Down"
+#~ msgstr "Stäng av..."
+#~ msgid "Screen Reader"
+#~ msgstr "Skärmläsare"
+#~ msgid "Screen Keyboard"
+#~ msgstr "Skärmtangentbord"
+#~ msgid "Clock"
+#~ msgstr "Klocka"
+#~ msgid "Customize the panel clock"
+#~ msgstr "Anpassa panelklockan"
+#~ msgid "Custom format of the clock"
+#~ msgstr "Anpassat format för klockan"
+#~ msgid "Hour format"
+#~ msgstr "Timmesformat"
+#~ msgid ""
+#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
+#~ "in time."
+#~ msgstr ""
+#~ "Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa "
+#~ "sekunder i tiden."
+#~ msgid "Enable lens mode"
+#~ msgstr "Aktivera linsläge"
+#~ msgid "Magnification factor"
+#~ msgstr "Förstoringsfaktor"
+#~ msgid "Screen position"
+#~ msgstr "Skärmposition"
+#~ msgid "Clock Format"
+#~ msgstr "Klockformat"
+#~ msgid "Clock Preferences"
+#~ msgstr "Klockinställningar"
+#~ msgid "Panel Display"
+#~ msgstr "Panelvisning"
+#~ msgid "Show seco_nds"
+#~ msgstr "Visa seku_nder"
+#~ msgid "Show the _date"
+#~ msgstr "Visa _datum"
+#~ msgid "_12 hour format"
+#~ msgstr "_12-timmarsformat"
+#~ msgid "_24 hour format"
+#~ msgstr "_24-timmarsformat"
+#~ msgid "PREFERENCES"
+#~ msgstr "INSTÄLLNINGAR"
+#~ msgid "Preferences"
+#~ msgstr "Inställningar"
+#~ msgid "Search your computer"
+#~ msgstr "Sök i din dator"
+#~ msgid ""
+#~ "Can't add a new workspace because maximum workspaces limit has been "
+#~ "reached."
+#~ msgstr ""
+#~ "Kan inte lägga till en ny arbetsyta eftersom maximalt antal arbetsytor "
+#~ "har uppnåtts."
+#~ msgid "Can't remove the first workspace."
+#~ msgstr "Kan inte ta bort första arbetsytan."
#~ msgid "Drag here to add favorites"
#~ msgstr "Dra hit för att lägga till favorit"
-
#~ msgid "Find"
#~ msgstr "Sök"
-
-#~ msgid "Searching..."
-#~ msgstr "Söker..."
-
-#~ msgid "No matching results."
-#~ msgstr "Inga sökträffar."
-
#~ msgid "ON"
#~ msgstr "PÅ"
-
#~ msgid "OFF"
#~ msgstr "AV"
-
#~ msgid "Invisible"
#~ msgstr "Osynlig"
-
-#~ msgid "Account Information..."
-#~ msgstr "Kontoinformation..."
-
#~ msgid "PLACES"
#~ msgstr "PLATSER"
-
#~ msgid "SEARCH RESULTS"
#~ msgstr "SÖKRESULTAT"
-
-#~ msgid "%H:%M"
-#~ msgstr "%H.%M"
-
#~ msgid "Recent Documents"
#~ msgstr "Senaste dokument"
-
#~ msgid "(see all)"
#~ msgstr "(se alla)"
-
#~ msgid "Can't lock screen: %s"
#~ msgstr "Kan inte låsa skärmen: %s"
-
#~ msgid "Can't temporarily set screensaver to blank screen: %s"
#~ msgstr "Kan inte temporärt ställa in skärmsläckaren till blank skärm: %s"
-
#~ msgid "Can't logout: %s"
#~ msgstr "Kan inte logga ut: %s"
-
#~ msgid "Sidebar"
#~ msgstr "Sidopanel"
-
#~ msgid "Browse"
#~ msgstr "Bläddra"
-
#~ msgid "Find apps or documents"
#~ msgstr "Hitta program eller dokument"
-
#~ msgid "DOCUMENTS"
#~ msgstr "DOKUMENT"
-
-#~ msgid "Manager"
-#~ msgstr "Hanterare"
-
#~ msgid "The user manager object this user is controlled by."
#~ msgstr "Användarhanteringsobjektet som denna användare styrs av."
+
diff --git a/po/uk.po b/po/uk.po
index a32ca198c..d0dd5a821 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-03-10 18:48+0200\n"
-"PO-Revision-Date: 2011-03-10 20:18+0300\n"
+"POT-Creation-Date: 2011-03-24 23:56+0200\n"
+"PO-Revision-Date: 2011-03-24 23:59+0300\n"
"Last-Translator: Korostil Daniel \n"
"Language-Team: translation@linux.org.ua\n"
"Language: uk\n"
@@ -173,47 +173,43 @@ msgstr "Чи потрібно збирати статистику про вжи
msgid "disabled OpenSearch providers"
msgstr "вимкнено постачальника OpenSearch"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Команди не знайдено"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Неможливо розібрати команду:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Нема такої програми"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Не вдалось виконати «%s»:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:226
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Всі"
-#: ../js/ui/appDisplay.js:324
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "ПРОГРАМИ"
-#: ../js/ui/appDisplay.js:350
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "ПАРАМЕТРИ"
-#: ../js/ui/appDisplay.js:612
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Нове вікно"
-#: ../js/ui/appDisplay.js:615
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Вилучити з улюбленого"
-#: ../js/ui/appDisplay.js:616
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Додати до улюбленого"
@@ -373,7 +369,7 @@ msgstr "Цей тиждень"
msgid "Next week"
msgstr "Наступний тиждень"
-#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Вилучити"
@@ -428,7 +424,7 @@ msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:209
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
@@ -441,7 +437,7 @@ msgstr "ОСТАННІ ПУНКТИ"
msgid "Log Out %s"
msgstr "Завершити сеанс %s…"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Завершити сеанс"
@@ -463,46 +459,44 @@ msgstr "Буде завершено сеанс автоматично через
msgid "Logging out of the system."
msgstr "Вихід із системи."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
msgstr "Вимкнути"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і вимкнути систему."
-
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "Систему буде вимкнено автоматично через %d секунд."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і системи."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "Система автоматично вимкнеться через %d секунд."
+
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
msgstr "Вимкнення системи."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Перезапустити"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Натисніть «Перезапустити», щоб вийти з усіх програм і перезапустити систему."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "Система автоматично перезапуститься через %d секунд."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Перезапуск системи."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Підтвердити"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Скасувати"
@@ -516,7 +510,7 @@ msgstr "Увімкнено"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Вимкнено"
@@ -536,47 +530,47 @@ msgstr "Переглянути джерело"
msgid "Web Page"
msgstr "Веб-сторінка"
-#: ../js/ui/messageTray.js:924
+#: ../js/ui/messageTray.js:987
msgid "Open"
msgstr "Відкрити"
-#: ../js/ui/messageTray.js:1961
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Інформація про систему"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Повернути"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Вікна"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Програми"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
-#: ../js/ui/overview.js:202
+#: ../js/ui/overview.js:205
msgid "Dash"
msgstr "Риска"
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:560
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Вийти з %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:919
+#: ../js/ui/panel.js:878
msgid "Activities"
-msgstr "Дії"
+msgstr "Діяльність"
-#: ../js/ui/panel.js:1020
-msgid "Panel"
-msgstr "Панель"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Верхня панель"
#: ../js/ui/placeDisplay.js:122
#, c-format
@@ -591,64 +585,85 @@ msgstr "Повторити"
msgid "Connect to..."
msgstr "З'єднатися з…"
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "МІСЦЯ ТА ПРИСТРОЇ"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Потрібна автентифікація"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Адміністратор"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Аутентифікація"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Вибачте, це не працює. Спробуйте ще."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Пароль:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:618
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Будь ласка, введіть команду:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Пошук…"
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Нема збігів."
-#: ../js/ui/statusMenu.js:113 ../js/ui/statusMenu.js:177
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:163
+#: ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "Вимкнення живлення…"
-#: ../js/ui/statusMenu.js:115 ../js/ui/statusMenu.js:176
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "Призупинити"
-#: ../js/ui/statusMenu.js:136
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Доступний"
-#: ../js/ui/statusMenu.js:141
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Зайнятий"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Мій обліковий запис"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Системні параметри"
-#: ../js/ui/statusMenu.js:160
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Заблокувати екран"
-#: ../js/ui/statusMenu.js:164
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Змінити користувача"
-#: ../js/ui/statusMenu.js:169
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Завершити сеанс…"
@@ -656,14 +671,12 @@ msgstr "Завершити сеанс…"
msgid "Zoom"
msgstr "Масштаб"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Читання з екрану"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Екранна клавіатура"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Візуальні тривоги"
@@ -688,17 +701,17 @@ msgstr "Клавіші миші"
msgid "Universal Access Settings"
msgstr "Параметри універсального доступу"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Висока контрастність"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Більший текст"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -718,94 +731,94 @@ msgstr "Встановити новий пристрій…"
msgid "Bluetooth Settings"
msgstr "Параметри Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "З'єднання"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Відправити файли…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Огляд файлів…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Помилка перегляду пристрою…"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Потрібний пристрій неможливо переглянути, помилка — «%s»"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Параметри клавіатури"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Параметри миші"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Параметри звуку"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Запит про авторизацію від %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Пристрій %s потребує доступ до служби «%s»"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Завжди надавати доступ"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Надати лише цього разу"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Відмовити"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Сполучення підтвердження для %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Пристрій %s потребує прив'язання до цього комп'ютера"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Будь ласка, підвердьте, чи «%s» збігається з PIN на пристрої."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Збігається"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Не збігається"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Запит на сполучення для %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Будь ласка, введіть PIN, згаданий на пристрої."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "Гаразд"
@@ -817,17 +830,147 @@ msgstr "Показувати розкладку клавіатури…"
msgid "Localization Settings"
msgstr "Параметри локалізації"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<невідомо>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "вимкнено"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "з'єднання…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "Потрібна аутентифікація"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "кабель від'єднано"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "недоступний"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "не вдалось з'єднатись"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "З'єднано (приватно)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Автоматично Ethernet"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Автоматично радіомережа"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Автоматично додзвін"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "Автоматично %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "Автоматично Bluetooth"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Автоматично бездротова мережа"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Більше…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Увімкнути мережу"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Дротова"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Бездротова"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Мобільна радіомережа"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "З'єднання VPN"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "Налаштування мережі"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Зараз ви з'єднані через мобільну радіомережу «%s»"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Зараз ви з'єднані через бездротову мережу «%s»"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Зараз ви з'єднані через дротову мережу «%s»"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Зараз ви з'єднані через мережу VPN «%s»"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Зараз ви з'єднані через «%s»"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "З'єднання встановлено"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Мережу вимкнено"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Керування мережею"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Енергетичні параметри"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Оцінювання…"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
@@ -836,26 +979,26 @@ msgstr[1] "Залишилось %d години"
msgstr[2] "Залишилось %d годин"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "Залишилось %d %s %d %s"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "година"
msgstr[1] "години"
msgstr[2] "годин"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "хвилина"
msgstr[1] "хвилини"
msgstr[2] "хвилин"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
@@ -863,78 +1006,78 @@ msgstr[0] "Залишилось %d хвилина"
msgstr[1] "Залишилось %d хвилини"
msgstr[2] "Залишилось %d хвилин"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Блок живлення"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Батарея ноутбука"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Монітор"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Миша"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Клавіатура"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "КПК"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Мобільний телефон"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Програвач"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Планшет"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Комп'ютер"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Невідомо"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Гучність"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Мікрофон"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s в мережі."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s поза мережею."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s відійшов."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s зайнятий."
@@ -942,7 +1085,7 @@ msgstr "%s зайнятий."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:357
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Відправити на %X в %A"
@@ -951,11 +1094,11 @@ msgstr "Відправити на %X в %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:117
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Введіть для пошуку…"
-#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
msgid "Search"
msgstr "Пошук"
@@ -971,7 +1114,7 @@ msgstr "«%s» готовий"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -981,7 +1124,7 @@ msgstr[2] "%u виходів"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@@ -989,19 +1132,24 @@ msgstr[0] "%u вхід"
msgstr[1] "%u входи"
msgstr[2] "%u входів"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Системні звуки"
-#: ../src/main.c:395
+#: ../src/main.c:446
msgid "Print version"
msgstr "Показати версію"
-#: ../src/shell-global.c:1308
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "Не вдалось запустити «%s»"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Менше хвилини тому"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
@@ -1009,7 +1157,7 @@ msgstr[0] "%d хвилина тому"
msgstr[1] "%d хвилини тому"
msgstr[2] "%d хвилин тому"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
@@ -1017,7 +1165,7 @@ msgstr[0] "%d година тому"
msgstr[1] "%d години тому"
msgstr[2] "%d годин тому"
-#: ../src/shell-global.c:1322
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
@@ -1025,7 +1173,7 @@ msgstr[0] "%d день тому"
msgstr[1] "%d дні тому"
msgstr[2] "%d днів тому"
-#: ../src/shell-global.c:1327
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
@@ -1033,6 +1181,14 @@ msgstr[0] "%d тиждень тому"
msgstr[1] "%d тижні тому"
msgstr[2] "%d тижнів тому"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Великобританія"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Типово"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Вікно авторизації відхилено користувачем"
@@ -1057,6 +1213,33 @@ msgstr "Файлова система"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "Вимкнути"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "Натисніть «Вимкнути», щоб вийти з усіх програм і вимкнути систему."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "Систему буде вимкнено автоматично через %d секунд."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "Вимкнення системи."
+
+#~ msgid "Confirm"
+#~ msgstr "Підтвердити"
+
+#~ msgid "Panel"
+#~ msgstr "Панель"
+
+#~ msgid "No such application"
+#~ msgstr "Нема такої програми"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Читання з екрану"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Екранна клавіатура"
+
#~ msgid "PREFERENCES"
#~ msgstr "ПАРАМЕТРИ"
diff --git a/po/vi.po b/po/vi.po
index 66df4c150..5bb6b61c1 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -7,9 +7,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2011-03-05 08:37+0000\n"
-"PO-Revision-Date: 2011-03-05 15:41+0700\n"
+"shell&keywords=I18N+L10N&component=general\n"
+"POT-Creation-Date: 2011-03-24 08:03+0000\n"
+"PO-Revision-Date: 2011-03-25 00:31+0700\n"
"Last-Translator: Duy \n"
"Language-Team: Vietnamese \n"
"MIME-Version: 1.0\n"
@@ -59,7 +59,6 @@ msgid "History for command (Alt-F2) dialog"
msgstr "Hộp thoại lịch sử lệnh (Alt-F2)"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
-#| msgid "History for command (Alt-F2) dialog"
msgid "History for the looking glass dialog"
msgstr "Lịch sử hộp thoại looking glass"
@@ -150,7 +149,10 @@ msgid ""
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
-msgstr "GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể tắt vì lý do cá nhân. Chú ý là làm vậy sẽ không xoá bỏ những dữ liệu đã có."
+msgstr ""
+"GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù "
+"hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể tắt "
+"vì lý do cá nhân. Chú ý là làm vậy sẽ không xoá bỏ những dữ liệu đã có."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
@@ -164,47 +166,43 @@ msgstr "Có thu thập thống kê sử dụng ứng dụng không"
msgid "disabled OpenSearch providers"
msgstr "Phần cung cấp OpenSearch bị tắt"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "Không tìm thấy lệnh"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "Không thể phân tích lệnh:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "Không có ứng dụng đó"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "Lỗi thực hiện '%s':"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:195
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "Tất cả"
-#: ../js/ui/appDisplay.js:285
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "ỨNG DỤNG"
-#: ../js/ui/appDisplay.js:311
+#: ../js/ui/appDisplay.js:354
msgid "SETTINGS"
msgstr "THIẾT LẬP"
-#: ../js/ui/appDisplay.js:565
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "Cửa sổ mới"
-#: ../js/ui/appDisplay.js:568
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "Bỏ đánh dấu ưa thích"
-#: ../js/ui/appDisplay.js:569
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "Đánh dấu ưa thích"
@@ -224,7 +222,7 @@ msgstr "Đã bỏ đánh dấu ưa thích cho %s"
#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
-msgstr "Nguyên ngày"
+msgstr "Cả ngày"
#. Translators: Shown in calendar event list, if 24h format
#: ../js/ui/calendar.js:71
@@ -364,7 +362,7 @@ msgstr "Tuần này"
msgid "Next week"
msgstr "Tuần tới"
-#: ../js/ui/dash.js:174
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "Loại bỏ"
@@ -372,54 +370,54 @@ msgstr "Loại bỏ"
msgid "Date and Time Settings"
msgstr "Thiết lập ngày giờ"
-#: ../js/ui/dateMenu.js:110
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "Mở lịch"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:162
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
-msgstr "%R:%S, %a %b %e"
+msgstr "%a %R:%S, %e %b"
-#: ../js/ui/dateMenu.js:163
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
-msgstr "%R, %a %b %e"
+msgstr "%a %R, %e %b"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:167
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
-msgstr "%R:%S %a"
+msgstr "%a %R:%S"
-#: ../js/ui/dateMenu.js:168
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
-msgstr "%R %a"
+msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:175
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
-msgstr "%a %b %e, %l:%M:%S %p"
+msgstr "%a %e %b, %l:%M:%S %p"
-#: ../js/ui/dateMenu.js:176
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
-msgstr "%a %b %e, %l:%M %p"
+msgstr "%a %e %b, %l:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:180
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
-#: ../js/ui/dateMenu.js:181
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %l:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:207
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@@ -432,7 +430,7 @@ msgstr "MỤC GẦN ĐÂY"
msgid "Log Out %s"
msgstr "Đăng xuất %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "Đăng xuất"
@@ -454,46 +452,48 @@ msgstr "Bạn sẽ tự động đăng xuất sau %d giây."
msgid "Logging out of the system."
msgstr "Đang xuất khỏi hệ thống."
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+#| msgid "Power Off..."
+msgid "Power Off"
msgstr "Tắt máy"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt hệ thống."
-
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "Hệ thống sẽ tự động tắt sau %d giây."
+#| msgid "Click Log Out to quit these applications and log out of the system."
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt máy."
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "Tắt hệ thống."
+#, c-format
+#| msgid "The system will restart automatically in %d seconds."
+msgid "The system will power off automatically in %d seconds."
+msgstr "Hệ thống sẽ tự động tắt sau %d giây."
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+#| msgid "Logging out of the system."
+msgid "Powering off the system."
+msgstr "Tắt máy."
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "Khởi động lại"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr ""
"Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống."
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "Hệ thống sẽ tự động khởi động lại sau %d giây."
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "Khởi động lại hệ thống."
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "Xác nhận"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "Thôi"
@@ -507,7 +507,7 @@ msgstr "Bật"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "Tắt"
@@ -527,34 +527,48 @@ msgstr "Xem mã nguồn"
msgid "Web Page"
msgstr "Trang Web"
-#: ../js/ui/messageTray.js:1907
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "Mở"
+
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "Thông tin hệ thống"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "Hoàn lại"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "Cửa sổ"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "Ứng dụng"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "Khung ứng dụng"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:531
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "Thoát %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:899
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "Hoạt động"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "Thanh đỉnh"
+
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@@ -568,65 +582,84 @@ msgstr "Thử lại"
msgid "Connect to..."
msgstr "Kết nối đến..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "ĐỊA ĐIỂM & THIẾT BỊ"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "Cần xác thực"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "Quản trị"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "Xác thực"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "Rất tiếc, không được. Vui lòng thử lại."
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "Mật khẩu:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:612
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "Vui lòng nhập lệnh:"
-#: ../js/ui/searchDisplay.js:283
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "Đang tìm..."
-#: ../js/ui/searchDisplay.js:297
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "Không tìm thấy."
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "Tắt máy..."
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
-#| msgid "Suspend..."
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "Ngưng"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "Có mặt"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "Bận"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "Tài khoản"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "Thiết lập hệ thống"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "Khoá màn hình"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "Chuyển người dùng"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "Đăng xuất..."
@@ -634,14 +667,12 @@ msgstr "Đăng xuất..."
msgid "Zoom"
msgstr "Phóng to"
-#: ../js/ui/status/accessibility.js:69
-msgid "Screen Reader"
-msgstr "Trình đọc màn hình"
-
-#: ../js/ui/status/accessibility.js:73
-msgid "Screen Keyboard"
-msgstr "Bàn phím màn hình"
-
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "Cảnh báo trực quan"
@@ -666,17 +697,17 @@ msgstr "Phím chuột"
msgid "Universal Access Settings"
msgstr "Thiết lập hỗ trợ truy cập"
-#: ../js/ui/status/accessibility.js:145
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "Tương phản cao"
-#: ../js/ui/status/accessibility.js:182
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "Chữ lớn"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "Bluetooth"
@@ -696,94 +727,94 @@ msgstr "Thiết lập thiết bị mới..."
msgid "Bluetooth Settings"
msgstr "Thiết lập Bluetooth"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "Kết nối"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "Gửi tập tin..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "Duyệt tập tin..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "Lỗi duyệt tập tin"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là '%s'"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "Thiết lập bàn phím"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "Thiết lập chuột"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "Thiết lập âm thanh"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "Yêu cầu cấp quyền từ %s"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "Thiết bị %s muốn truy cập dịch vụ '%s'"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "Luôn cho phép"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "Chỉ cho phép lần này"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "Từ chối"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "Xác nhận kết nối cho %s"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "Thiết bị %s muốn kết nối với máy tính này"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "Vui lòng xác nhận PIN '%s' khớp với số trên thiết bị."
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "Khớp"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "Không khớp"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "Yêu cầu kết nối cho %s"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "Vui lòng nhập số PIN ghi trên thiết bị."
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "OK"
@@ -795,116 +826,256 @@ msgstr "Hiện bố trí bàn phím..."
msgid "Localization Settings"
msgstr "Thiết lập bản địa hoá"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+#| msgid "Unknown"
+msgid ""
+msgstr ""
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+#| msgid "Disabled"
+msgid "disabled"
+msgstr "tắt"
+
+#: ../js/ui/status/network.js:476
+#| msgid "Connection"
+msgid "connecting..."
+msgstr "đang kết nối..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "cần xác thực"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "cáp bị tháo"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+#| msgid "Available"
+msgid "unavailable"
+msgstr "không có mặt"
+
+#: ../js/ui/status/network.js:491
+#| msgid "Connection"
+msgid "connection failed"
+msgstr "lỗi kết nối"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "Đã kết nối (riêng)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "Ethernet tự động"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "Băng thông rộng tự động"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "Quay số tự động"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+#| msgid "Quit %s"
+msgid "Auto %s"
+msgstr "%s tự động"
+
+#: ../js/ui/status/network.js:845
+#| msgid "Bluetooth"
+msgid "Auto bluetooth"
+msgstr "Bluetooth tự động"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "Mạng không dây tự động"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "Nữa..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "Bật nối mạng"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "Mạng dây"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "Mạng không dây"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "Mạng băng thông rộng"
+
+#: ../js/ui/status/network.js:1479
+#| msgid "Connection"
+msgid "VPN Connections"
+msgstr "Kết nối VPN"
+
+#: ../js/ui/status/network.js:1488
+#| msgid "Power Settings"
+msgid "Network Settings"
+msgstr "Thiết lập mạng"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "Bạn đã kết nối vào mạng băng thông rộng '%s'"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "Bạn đã kết nối vào mạng không dây '%s'"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "Bạn đã kết nối vào mạng (dây) '%s'"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "Bạn đã kết nối vào mạng VPN '%s'"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "Bạn đã kết nối vào '%s'"
+
+#: ../js/ui/status/network.js:1808
+#| msgid "Connection"
+msgid "Connection established"
+msgstr "Đã tạo kết nối"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "Mạng bị tắt"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "Trình quản lý mạng"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "Thiết lập năng lượng"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
-#: ../js/ui/status/power.js:110
+#: ../js/ui/status/power.js:111
msgid "Estimating..."
msgstr "Ước lượng..."
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "%d giờ còn lại"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "%d %s %d %s còn lại"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "giờ"
-#: ../js/ui/status/power.js:122
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "%d phút"
-#: ../js/ui/status/power.js:125
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "%d phút còn lại"
-#: ../js/ui/status/power.js:227
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "Bộ đổi điện AC"
-#: ../js/ui/status/power.js:229
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "Pin laptop"
-#: ../js/ui/status/power.js:231
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:233
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "Màn hình"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "Chuột"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "Bàn phím"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "Điện thoại cầm tay"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "Máy phát"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "Bảng"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "Máy tính"
-#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "Không biết"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "Âm lượng"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "Micrô"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s trực tuyến."
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s ngoại tuyến."
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s đi vắng."
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s bận."
@@ -912,7 +1083,7 @@ msgstr "%s bận."
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "Đã gửi %X lúc %A"
@@ -921,10 +1092,14 @@ msgstr "Đã gửi %X lúc %A"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:103
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "Nhập để tìm..."
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "Tìm"
+
#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
@@ -937,7 +1112,7 @@ msgstr "'%s' đã sẵn sàng"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -945,44 +1120,62 @@ msgstr[0] "%u đầu ra"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u đầu vào"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "Âm thanh hệ thống"
-#: ../src/shell-global.c:1298
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "In phiên bản"
+
+#: ../src/shell-app.c:454
+#, c-format
+#| msgid "Failed to unmount '%s'"
+msgid "Failed to launch '%s'"
+msgstr "Lỗi chạy '%s'"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "Chưa đến một phút"
-#: ../src/shell-global.c:1302
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d phút trước"
-#: ../src/shell-global.c:1307
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d giờ trước"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d ngày trước"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d tuần trước"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "Vương quốc Anh"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "Mặc định"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "Hộp thoại xác thực bị người dùng bỏ qua"
@@ -997,10 +1190,6 @@ msgstr "Thư mục chính"
msgid "File System"
msgstr "Hệ tập tin"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "Tìm"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -1011,6 +1200,30 @@ msgstr "Tìm"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "No such application"
+#~ msgstr "Không có ứng dụng đó"
+
+#~ msgid "Shut Down"
+#~ msgstr "Tắt máy"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt hệ thống."
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "Hệ thống sẽ tự động tắt sau %d giây."
+
+#~ msgid "Shutting down the system."
+#~ msgstr "Tắt hệ thống."
+
+#~ msgid "Confirm"
+#~ msgstr "Xác nhận"
+
+#~ msgid "Screen Reader"
+#~ msgstr "Trình đọc màn hình"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "Bàn phím màn hình"
+
#~ msgid "Clip the crosshairs at the center"
#~ msgstr "Cắt lưới chéo ở giữa"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index f4024949c..ddd80c32b 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -1,5 +1,5 @@
# Chinese (China) translation for gnome-shell.
-# Copyright (C) 2009 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2011 Free Software Foundation, Inc.
# This file is distributed under the same license as the gnome-shell package.
# jiero , 2010.
# Aron Xu , 2010.
@@ -7,23 +7,23 @@
# zhang ping , 2010.
# 指冷玉笙寒 (dhyang) , 2010
# Ray Wang , 2009, 2011.
-# Aron Xu , 2010, 2011.
# YunQiang Su , 2010, 2011.
# 李炜 , 2011.
+# chiachen , 2011.
+# Aron Xu , 2010, 2011.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
-"shell&component=general\n"
-"POT-Creation-Date: 2011-03-01 14:37+0000\n"
-"PO-Revision-Date: 2011-03-01 15:55+0000\n"
-"Last-Translator: YunQiang Su \n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-03-24 16:07+0800\n"
+"PO-Revision-Date: 2011-03-24 16:09+0800\n"
+"Last-Translator: Aron Xu \n"
"Language-Team: Chinese (simplified) \n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@@ -62,11 +62,10 @@ msgstr "GNOME Shell 扩展有一个 uuid 属性,此键列出了不应该加载
msgid "History for command (Alt-F2) dialog"
msgstr "命令对话框(Alt-F2)的历史记录"
+# http://live.gnome.org/GnomeShell/LookingGlass
#: ../data/org.gnome.shell.gschema.xml.in.h:7
-#, fuzzy
-#| msgid "History for command (Alt-F2) dialog"
msgid "History for the looking glass dialog"
-msgstr "命令对话框(Alt-F2)的历史记录"
+msgstr "Looking Glass 控制台历史"
#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
@@ -142,7 +141,7 @@ msgstr "GNOME Shell 的屏幕录像程序录制的屏幕录像的帧率,以
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
-msgstr "用于编码屏幕录像的 GStreamer 管线"
+msgstr "用于编码屏幕录像的 GStreamer 管道"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
@@ -151,7 +150,7 @@ msgid ""
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
-"Gnome shell 一般将监视活动应用程序,以便呈现最常用的(例如,在启动器中)。同"
+"Gnome Shell 一般将监视活动应用程序,以便呈现最常用的(例如,在启动器中)。同"
"时,此数据将保持私密,您可能因为隐私原因想要禁用此项。请注意,这么做,并不会"
"移除已经保存的数据。"
@@ -167,47 +166,43 @@ msgstr "是否收集应用程序的使用情况"
msgid "disabled OpenSearch providers"
msgstr "已禁用的 OpenSearch 提供商"
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "命令未找到"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "不能解析命令:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "没有此应用程序"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "运行“%s”失败:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:195
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "全部"
-#: ../js/ui/appDisplay.js:282
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "应用程序"
-#: ../js/ui/appDisplay.js:312
-msgid "PREFERENCES"
-msgstr "首选项"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "设置"
-#: ../js/ui/appDisplay.js:572
+#: ../js/ui/appDisplay.js:625
msgid "New Window"
msgstr "新窗口"
-#: ../js/ui/appDisplay.js:575
+#: ../js/ui/appDisplay.js:628
msgid "Remove from Favorites"
msgstr "从收藏夹中移除"
-#: ../js/ui/appDisplay.js:576
+#: ../js/ui/appDisplay.js:629
msgid "Add to Favorites"
msgstr "添加到收藏夹"
@@ -249,7 +244,7 @@ msgstr "%I:%M %p"
#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
-msgstr "六"
+msgstr "日"
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:120
@@ -367,7 +362,7 @@ msgstr "本周"
msgid "Next week"
msgstr "下周"
-#: ../js/ui/dash.js:174
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:994
msgid "Remove"
msgstr "移除"
@@ -375,54 +370,54 @@ msgstr "移除"
msgid "Date and Time Settings"
msgstr "日期和时间设置"
-#: ../js/ui/dateMenu.js:110
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "打开日历"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:162
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%m月%d日%R:%S%A"
-#: ../js/ui/dateMenu.js:163
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%m月%d日%R%A"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:167
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
-msgstr "%R:%S%A"
+msgstr "%A %R:%S"
-#: ../js/ui/dateMenu.js:168
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
-msgstr "%R%A"
+msgstr "%A %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:175
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%m月%d日%A %I:%M:%S %p"
-#: ../js/ui/dateMenu.js:176
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%m月%d日%A %I:%M %p"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:180
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%A %I:%M:%S %p"
-#: ../js/ui/dateMenu.js:181
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%I:%M %p"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
-#: ../js/ui/dateMenu.js:207
+#: ../js/ui/dateMenu.js:194
msgid "%A %B %e, %Y"
msgstr "%Y年%m月%d日%A"
@@ -435,7 +430,7 @@ msgstr "最近项目"
msgid "Log Out %s"
msgstr "注销 %s"
-#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69
+#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
msgid "Log Out"
msgstr "注销"
@@ -451,112 +446,124 @@ msgstr "%s 将在 %d 秒后自动注销。"
#: ../js/ui/endSessionDialog.js:67
#, c-format
msgid "You will be logged out automatically in %d seconds."
-msgstr "你将在 %d 秒后自动注销。"
+msgstr "您将在 %d 秒后自动注销。"
#: ../js/ui/endSessionDialog.js:68
msgid "Logging out of the system."
msgstr "从系统注销"
-#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78
-msgid "Shut Down"
+#: ../js/ui/endSessionDialog.js:75 ../js/ui/endSessionDialog.js:82
+msgid "Power Off"
msgstr "关机"
-#: ../js/ui/endSessionDialog.js:75
-msgid "Click Shut Down to quit these applications and shut down the system."
-msgstr "点“关机“来退出这些应用程序并关闭系统。"
-
#: ../js/ui/endSessionDialog.js:76
-#, c-format
-msgid "The system will shut down automatically in %d seconds."
-msgstr "系统将在 %d 秒后自动关机。"
+msgid "Click Power Off to quit these applications and power off the system."
+msgstr "点击关机以退出应用程序并关闭系统。"
#: ../js/ui/endSessionDialog.js:77
-msgid "Shutting down the system."
-msgstr "关闭计算机。"
+#, c-format
+msgid "The system will power off automatically in %d seconds."
+msgstr "系统将在 %d 秒后自动关机。"
-#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:78
+msgid "Powering off the system."
+msgstr "关闭系统。"
+
+#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:88
+#: ../js/ui/endSessionDialog.js:93
msgid "Restart"
msgstr "重启"
-#: ../js/ui/endSessionDialog.js:85
+#: ../js/ui/endSessionDialog.js:89
msgid "Click Restart to quit these applications and restart the system."
msgstr "点“重启“来退出这些应用程序并重启系统"
-#: ../js/ui/endSessionDialog.js:86
+#: ../js/ui/endSessionDialog.js:90
#, c-format
msgid "The system will restart automatically in %d seconds."
msgstr "系统将在 %d 秒后自动重启。"
-#: ../js/ui/endSessionDialog.js:87
+#: ../js/ui/endSessionDialog.js:91
msgid "Restarting the system."
msgstr "重启计算机。"
-#: ../js/ui/endSessionDialog.js:395
-msgid "Confirm"
-msgstr "确定"
-
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:415 ../js/ui/polkitAuthenticationAgent.js:172
+#: ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "取消"
-#: ../js/ui/lookingGlass.js:587
+#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "未安装扩展"
-#: ../js/ui/lookingGlass.js:624
+#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "已启用"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "已禁用"
-#: ../js/ui/lookingGlass.js:628
+#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "错误"
-#: ../js/ui/lookingGlass.js:630
+#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "过时"
-#: ../js/ui/lookingGlass.js:655
+#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "查看源"
-#: ../js/ui/lookingGlass.js:661
+#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "网页"
-#: ../js/ui/messageTray.js:1902
+#: ../js/ui/messageTray.js:987
+msgid "Open"
+msgstr "打开"
+
+#: ../js/ui/messageTray.js:2145
msgid "System Information"
msgstr "系统信息"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:91
msgid "Undo"
msgstr "撤销"
-#: ../js/ui/overview.js:183
+#: ../js/ui/overview.js:186
msgid "Windows"
msgstr "窗口"
-#: ../js/ui/overview.js:186
+#: ../js/ui/overview.js:189
msgid "Applications"
msgstr "应用程序"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:205
+msgid "Dash"
+msgstr "虚线"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:529
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "退出 %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:897
+#: ../js/ui/panel.js:878
msgid "Activities"
msgstr "活动"
+#: ../js/ui/panel.js:979
+msgid "Top Bar"
+msgstr "顶栏"
+
#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
@@ -570,114 +577,132 @@ msgstr "重试"
msgid "Connect to..."
msgstr "连接到..."
-#: ../js/ui/placeDisplay.js:409
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "位置和设备"
+#: ../js/ui/polkitAuthenticationAgent.js:74
+msgid "Authentication Required"
+msgstr "需要认证"
+
+#: ../js/ui/polkitAuthenticationAgent.js:108
+msgid "Administrator"
+msgstr "管理员"
+
+#: ../js/ui/polkitAuthenticationAgent.js:176
+msgid "Authenticate"
+msgstr "认证"
+
+#: ../js/ui/polkitAuthenticationAgent.js:260
+msgid "Sorry, that didn't work. Please try again."
+msgstr "抱歉,您的输入有误。请重试。"
+
+#: ../js/ui/polkitAuthenticationAgent.js:272
+msgid "Password:"
+msgstr "口令:"
+
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:612
+#: ../js/ui/popupMenu.js:679
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
-#: ../js/ui/runDialog.js:201
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "请输入一个命令:"
-#: ../js/ui/searchDisplay.js:295
+#: ../js/ui/searchDisplay.js:310
msgid "Searching..."
msgstr "正在搜索..."
-#: ../js/ui/searchDisplay.js:309
+#: ../js/ui/searchDisplay.js:324
msgid "No matching results."
msgstr "无匹配结果。"
-#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
msgid "Power Off..."
msgstr "关机..."
-#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
msgid "Suspend"
msgstr "休眠"
-#: ../js/ui/statusMenu.js:125
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "可用"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "忙碌"
-#: ../js/ui/statusMenu.js:138
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "我的帐户"
-#: ../js/ui/statusMenu.js:142
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "系统设置"
-#: ../js/ui/statusMenu.js:149
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "锁住屏幕"
-#: ../js/ui/statusMenu.js:153
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "切换用户"
-#: ../js/ui/statusMenu.js:158
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "退出..."
-#: ../js/ui/status/accessibility.js:81
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "缩放"
-#: ../js/ui/status/accessibility.js:88
-msgid "Screen Reader"
-msgstr "屏幕阅读器"
-
-#: ../js/ui/status/accessibility.js:92
-msgid "Screen Keyboard"
-msgstr "屏幕键盘"
-
-#: ../js/ui/status/accessibility.js:96
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "视觉响铃"
-#: ../js/ui/status/accessibility.js:99
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "粘滞键"
-#: ../js/ui/status/accessibility.js:102
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "慢速键"
-#: ../js/ui/status/accessibility.js:105
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "筛选键"
-#: ../js/ui/status/accessibility.js:108
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "鼠标按键"
-#: ../js/ui/status/accessibility.js:112
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "通用访问设置"
-#: ../js/ui/status/accessibility.js:164
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "高对比度"
-#: ../js/ui/status/accessibility.js:209
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "大号文本"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "蓝牙"
@@ -697,94 +722,94 @@ msgstr "安装新设备..."
msgid "Bluetooth Settings"
msgstr "蓝牙设置"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "连接"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "发送文件..."
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "浏览文件..."
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "浏览设备出错"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "无法浏览请求的设备,错误为 %s"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "键盘设置"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "鼠标设置"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "声音设置"
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "来自 %s 的认证请求"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "设备 %s 希望访问 %s 服务"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "始终允许"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "允许一次"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "拒绝"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s 的配对确认"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "设备 %s 希望与此电脑配对"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "请确认 PIN 码 %s 和要配对的设备是否相同。"
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "相同"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "不同"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "%s 的配对请求"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "请输入设备上的 PIN 码。"
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "确定"
@@ -796,110 +821,246 @@ msgstr "显示键盘布局..."
msgid "Localization Settings"
msgstr "本地化设置"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<未知>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "已禁用"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "连接中..."
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "需要认证"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "线缆被拔出"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "不可用"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "连接失败"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "已连接(私有网络)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "自动以太网"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "自动移动宽带"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "自动拨号"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "自动 %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "自动蓝牙"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "自动无线"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "更多..."
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "启用联网"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "有线"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "无线"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "移动宽带"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN 连接"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "网络设置"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "您已连接至移动宽带连接 %s"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "您已连接至无线网络 %s"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "您已连接至有线网络 %s"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "您已连接至 VPN 网络 %s"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "您已连接至 %s"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "连接已建立"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "联网已禁用"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "网络管理器"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "电源设置"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "估计中..."
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "剩余 %d 小时"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "剩余 %d %s %d %s"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "小时"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "分钟"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "剩余 %d 分钟"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "AC 适配器"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "笔记本电池"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "UPS"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "显示器"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "鼠标"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "键盘"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "手机"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "媒体播放器"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "触摸板"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "计算机"
-#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "未知"
-#: ../js/ui/status/volume.js:44
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "音量"
-#: ../js/ui/status/volume.js:57
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "麦克风"
-#: ../js/ui/telepathyClient.js:239
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s 在线。"
-#: ../js/ui/telepathyClient.js:244
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s 离线。"
-#: ../js/ui/telepathyClient.js:247
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s 离开。"
-#: ../js/ui/telepathyClient.js:250
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s 忙碌。"
@@ -907,32 +1068,36 @@ msgstr "%s 忙碌。"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:348
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
-msgstr "发送于 %X on %A"
+msgstr "发送于 %X,在 %A"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters.
-#: ../js/ui/viewSelector.js:103
+#: ../js/ui/viewSelector.js:122
msgid "Type to search..."
msgstr "搜索..."
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "搜索"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s 已启动"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "%s 已就绪"
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -940,44 +1105,61 @@ msgstr[0] "%u 个输出"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u 个输入"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "系统声音"
-#: ../src/shell-global.c:1298
+#: ../src/main.c:446
+msgid "Print version"
+msgstr "打印版本"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "启动 %s 失败"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "少于一分钟前"
-#: ../src/shell-global.c:1302
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d 分钟前"
-#: ../src/shell-global.c:1307
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d 小时前"
-#: ../src/shell-global.c:1312
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d 天前"
-#: ../src/shell-global.c:1317
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d 周前"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "英国"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "默认"
+
#: ../src/shell-polkit-authentication-agent.c:334
msgid "Authentication dialog was dismissed by the user"
msgstr "认证对话框被用户驳回"
@@ -992,10 +1174,6 @@ msgstr "主文件夹"
msgid "File System"
msgstr "文件系统"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "搜索"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -1006,6 +1184,36 @@ msgstr "搜索"
msgid "%1$s: %2$s"
msgstr "%1$s: %2$s"
+#~ msgid "Shut Down"
+#~ msgstr "关机"
+
+#~ msgid "Click Shut Down to quit these applications and shut down the system."
+#~ msgstr "点“关机“来退出这些应用程序并关闭系统。"
+
+#~ msgid "The system will shut down automatically in %d seconds."
+#~ msgstr "系统将在 %d 秒后自动关机。"
+
+#~ msgid "Shutting down the system."
+#~ msgstr "关闭计算机。"
+
+#~ msgid "Confirm"
+#~ msgstr "确定"
+
+#~ msgid "Panel"
+#~ msgstr "面板"
+
+#~ msgid "No such application"
+#~ msgstr "没有此应用程序"
+
+#~ msgid "Screen Reader"
+#~ msgstr "屏幕阅读器"
+
+#~ msgid "Screen Keyboard"
+#~ msgstr "屏幕键盘"
+
+#~ msgid "PREFERENCES"
+#~ msgstr "首选项"
+
#~ msgid "Shut Down..."
#~ msgstr "关机..."
@@ -1042,16 +1250,17 @@ msgstr "%1$s: %2$s"
#~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
-#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
-#~ "01-01. If set to \"custom\", the clock will display time according to the "
-#~ "format specified in the custom_format key. Note that if set to either "
-#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
+#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
+#~ "1970-01-01. If set to \"custom\", the clock will display time according "
+#~ "to the format specified in the custom_format key. Note that if set to "
+#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
+#~ "ignored."
#~ msgstr ""
-#~ "此键指定面板时钟使用的时间格式。可能的值为 \"12-hour\"、\"24-hour\"、"
-#~ "\"unix\" 和 \"custom\"。如果设为 unix,时钟将显示从 Epoch(也就是 1970-1-1 "
-#~ "UTC)开始的秒数。如果设为 \"custom\",时钟将根据在 custom_format 键中设定的"
-#~ "格式规则显示时间。注意,如果设置为 \"unix\" 或 \"custom\",show_date 和 "
-#~ "show_seconds 键将被忽略。"
+#~ "此键指定面板时钟使用的时间格式。可能的值为 \"12-hour\"、\"24-hour"
+#~ "\"、\"unix\" 和 \"custom\"。如果设为 unix,时钟将显示从 Epoch(也就是 "
+#~ "1970-1-1 UTC)开始的秒数。如果设为 \"custom\",时钟将根据在 custom_format "
+#~ "键中设定的格式规则显示时间。注意,如果设置为 \"unix\" 或 \"custom\","
+#~ "show_date 和 show_seconds 键将被忽略。"
#~ msgid "Clip the crosshairs at the center"
#~ msgstr "将十字夹在中间"
diff --git a/po/zh_HK.po b/po/zh_HK.po
index 325b119c7..8a05ae88a 100644
--- a/po/zh_HK.po
+++ b/po/zh_HK.po
@@ -6,10 +6,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gnome-shell 2.91.6\n"
+"Project-Id-Version: gnome-shell 2.91.91\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-04 13:12+0800\n"
-"PO-Revision-Date: 2011-02-04 13:12+0800\n"
+"POT-Creation-Date: 2011-03-22 19:42+0800\n"
+"PO-Revision-Date: 2011-03-22 19:42+0800\n"
"Last-Translator: Chao-Hsiung Liao \n"
"Language-Team: Chinese (Hong Kong) \n"
"Language: \n"
@@ -55,22 +55,27 @@ msgid "History for command (Alt-F2) dialog"
msgstr "指令 (Alt-F2) 對話盒歷史紀錄"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#, fuzzy
+msgid "History for the looking glass dialog"
+msgstr "指令 (Alt-F2) 對話盒歷史紀錄"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
msgstr "如設定為「true」,除了在時鐘內顯示日期外還顯示時刻。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:8
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display seconds in time."
msgstr "如設定為「true」,在時刻中顯示秒數。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:9
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
msgstr "如果設為 true,在日曆中顯示 ISO 週數。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:10
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "喜好的應用程式桌面檔案 ID 清單"
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@@ -85,42 +90,42 @@ msgid ""
"at the optimal thread count on the system."
msgstr "設定用來錄製的 GStreamer 管線。它根據據 gst-launch 使用的語法。管線應該要有未連接的出口(sink pad),提供錄製視像之用。它通常會有未連接的入口(source pad);從出口輸出的資訊就寫入輸出檔案。然而管線本身也會處理它本身的輸出 - 習慣上是透過 shout2send 之類將輸出傳送到 icecast 伺服器。當取消設定或設定為空值時,就會使用預設的管線。這個值目前為 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' 即使用 VP8 codec 錄製 WEBM。%T 是在系統的最佳化執行緒計數猜測時使用的佔位符。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "在時鐘內顯示日期"
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "在日曆中顯示週數"
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "在時刻中顯示秒數"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr "對應這些辨別碼的應用程式會顯示在喜好區域。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr "錄製好的畫面廣播檔案名稱會以目前的時刻作為獨特的檔名,並使用這個延伸檔名。當錄製為不同的容器格式時應該做適當更改。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr "由 GNOME Shell 的畫面廣播錄製程式所錄製成果的框架率,以 frames-per-second 計。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "用來編碼畫面廣播的 gstreamer 管線"
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -128,184 +133,55 @@ msgid ""
"remove already saved data."
msgstr "這個 shell 通常會監控使用中的應用程式以便能顯示出最常使用的(例如,在程式執行器中)。雖然這個資料會保持隱密,但是你可能會基於私隱的理由想要停用這個功能。請注意這麼做並不會移除已儲存的資料。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "要停用的延伸檔名 Uuid"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "是否收集關於應用程式使用率的狀態"
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "disabled OpenSearch providers"
msgstr "已停用 OpenSearch 提供者"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1
-msgid "Clip the crosshairs at the center"
-msgstr "點選中央的十字準星"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2
-msgid "Color of the crosshairs"
-msgstr "十字準星的顏色"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "決定組成十字準星的垂直和水平線條的長度。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr "決定放大的滑鼠圖片在放大鏡檢 視中的位置以及它如何反應系統滑鼠的移動。數值有 - none: 不追蹤滑鼠;- centered: 滑鼠圖片顯示於放大區域的中央(也代表系統滑鼠下方的點)而放大的內容也會隨系統滑鼠移動而捲動;- proportional: 放大的滑鼠在縮放區域中的位置和系統滑鼠在螢幕中的位置是成比例的;- push: 當放大的滑鼠與縮放區域邊界交錯時,內容會捲動到檢視中。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr "決定十字準星的透明度,從完全不透明到完全透明。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7
-msgid "Enable lens mode"
-msgstr "啟用鏡頭模式"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr "對於置中式的滑鼠追蹤,當系統指標位於或接近螢幕的邊緣時,放大的內容也會持續捲動,讓螢幕的邊緣移進放大的檢視範圍。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10
-msgid "Length of the crosshairs"
-msgstr "十字準星長度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11
-msgid "Magnification factor"
-msgstr "放大率"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12
-msgid "Mouse Tracking Mode"
-msgstr "滑鼠追蹤模式"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13
-msgid "Opacity of the crosshairs"
-msgstr "十字準星透明度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14
-msgid "Screen position"
-msgstr "螢幕位置"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr "在桌面邊緣時捲動放大的內容"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16
-msgid "Show or hide crosshairs"
-msgstr "顯示或隱藏十字準星"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17
-msgid "Show or hide the magnifier"
-msgstr "顯示或隱藏放大鏡"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr "顯示或隱藏放大鏡和所有被它放大的區域。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "組成十字準星的垂直和水平線條的顏色。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr "放大的檢視要佔據整個螢幕,或是只佔螢幕的上半、下半、左半或右半邊。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr "放大的倍數。數值 1.0 表示不放大。數值 2.0 為放大兩倍。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22
-msgid "Thickness of the crosshairs"
-msgstr "十字準星厚度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr "放大的檢視是否應以系統滑鼠的位置為中心點並隨滑鼠移動。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr "組成十字準星的垂直和水平線條的闊度。"
-
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "找不到指令"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "無法分析指令:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "沒有這個應用程式"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "執行「%s」失敗:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:164
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "全部"
-#: ../js/ui/appDisplay.js:245
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "程式集"
-#: ../js/ui/appDisplay.js:275
-msgid "PREFERENCES"
-msgstr "偏好設定"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "設定值"
-#: ../js/ui/appDisplay.js:572
+#: ../js/ui/appDisplay.js:620
msgid "New Window"
msgstr "新視窗"
-#: ../js/ui/appDisplay.js:576
+#: ../js/ui/appDisplay.js:623
msgid "Remove from Favorites"
msgstr "自喜好中移除"
-#: ../js/ui/appDisplay.js:577
+#: ../js/ui/appDisplay.js:624
msgid "Add to Favorites"
msgstr "加入喜好"
@@ -322,86 +198,68 @@ msgstr "%s 已經從你的喜好中移除。"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
-#: ../js/ui/calendar.js:65
-#, fuzzy
-#| msgid "All Day"
+#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "整天"
#. Translators: Shown in calendar event list, if 24h format
-#: ../js/ui/calendar.js:70
+#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
-msgstr ""
+msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
-#: ../js/ui/calendar.js:77
-#, fuzzy
-#| msgid "%a %l:%M %p"
+#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
-msgstr "%a %p %l:%M"
+msgstr "%p %l:%M"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
-#: ../js/ui/calendar.js:117
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "日"
#. Translators: Calendar grid abbreviation for Monday
-#: ../js/ui/calendar.js:119
-#, fuzzy
-#| msgid "M"
+#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "一"
#. Translators: Calendar grid abbreviation for Tuesday
-#: ../js/ui/calendar.js:121
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "二"
#. Translators: Calendar grid abbreviation for Wednesday
-#: ../js/ui/calendar.js:123
-#, fuzzy
-#| msgid "W"
+#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "三"
#. Translators: Calendar grid abbreviation for Thursday
-#: ../js/ui/calendar.js:125
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
-msgstr "二"
+msgstr "四"
#. Translators: Calendar grid abbreviation for Friday
-#: ../js/ui/calendar.js:127
-#, fuzzy
-#| msgid "F"
+#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "五"
#. Translators: Calendar grid abbreviation for Saturday
-#: ../js/ui/calendar.js:129
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
-msgstr "日"
+msgstr "六"
#. Translators: Event list abbreviation for Sunday.
#. *
@@ -409,99 +267,81 @@ msgstr "日"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
-#: ../js/ui/calendar.js:142
-#, fuzzy
-#| msgid "Su"
+#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "日"
#. Translators: Event list abbreviation for Monday
-#: ../js/ui/calendar.js:144
-#, fuzzy
-#| msgid "M"
+#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "一"
#. Translators: Event list abbreviation for Tuesday
-#: ../js/ui/calendar.js:146
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "二"
#. Translators: Event list abbreviation for Wednesday
-#: ../js/ui/calendar.js:148
-#, fuzzy
-#| msgid "W"
+#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "三"
#. Translators: Event list abbreviation for Thursday
-#: ../js/ui/calendar.js:150
-#, fuzzy
-#| msgid "Th"
+#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "四"
#. Translators: Event list abbreviation for Friday
-#: ../js/ui/calendar.js:152
-#, fuzzy
-#| msgid "F"
+#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "五"
#. Translators: Event list abbreviation for Saturday
-#: ../js/ui/calendar.js:154
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
-msgstr "日"
+msgstr "六"
#. Translators: Text to show if there are no events
-#: ../js/ui/calendar.js:701
+#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "沒有預訂行程"
#. Translators: Shown on calendar heading when selected day occurs on current year
-#: ../js/ui/calendar.js:717
-#, fuzzy
-#| msgid "%A %B %e, %Y"
+#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
-msgstr "%Y %B %e %A"
+msgstr "%B%d日%A"
#. Translators: Shown on calendar heading when selected day occurs on different year
-#: ../js/ui/calendar.js:720
-#, fuzzy
-#| msgid "%A %B %e, %Y"
+#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
-msgstr "%Y %B %e %A"
+msgstr "%Y年%B%d日%A"
-#: ../js/ui/calendar.js:730
+#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "今天"
-#: ../js/ui/calendar.js:734
+#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "明天"
-#: ../js/ui/calendar.js:743
+#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "本週"
-#: ../js/ui/calendar.js:751
+#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "下週"
-#: ../js/ui/dash.js:27
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:945
msgid "Remove"
msgstr "移除"
@@ -509,47 +349,47 @@ msgstr "移除"
msgid "Date and Time Settings"
msgstr "日期與時刻設定值"
-#: ../js/ui/dateMenu.js:110
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "開啟行事曆"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:149
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%b %e %a, %R:%S"
-#: ../js/ui/dateMenu.js:150
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%b %e %a, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:154
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/dateMenu.js:155
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:162
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%b %e %a, %p %l:%M:%S"
-#: ../js/ui/dateMenu.js:163
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%b %e %a, %p %l:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:167
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %p %l:%M:%S"
-#: ../js/ui/dateMenu.js:168
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %p %l:%M"
@@ -560,7 +400,7 @@ msgstr "%a %p %l:%M"
msgid "%A %B %e, %Y"
msgstr "%Y %B %e %A"
-#: ../js/ui/docDisplay.js:18
+#: ../js/ui/docDisplay.js:19
msgid "RECENT ITEMS"
msgstr "最近使用項目"
@@ -629,82 +469,98 @@ msgstr "重新啟動系統。"
msgid "Confirm"
msgstr "確認"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "取消"
-#: ../js/ui/lookingGlass.js:556
+#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "沒有安裝擴充功能"
-#: ../js/ui/lookingGlass.js:593
+#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "已啟用"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "已停用"
-#: ../js/ui/lookingGlass.js:597
+#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "錯誤"
-#: ../js/ui/lookingGlass.js:599
+#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "過期"
-#: ../js/ui/lookingGlass.js:624
+#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "檢示來源"
-#: ../js/ui/lookingGlass.js:630
+#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "網頁"
-#: ../js/ui/messageTray.js:1809
+#: ../js/ui/messageTray.js:938
+#, fuzzy
+msgid "Open"
+msgstr "開啟"
+
+#: ../js/ui/messageTray.js:2018
msgid "System Information"
msgstr "系統資訊"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:89
msgid "Undo"
msgstr "復原"
-#: ../js/ui/overview.js:159
+#: ../js/ui/overview.js:184
msgid "Windows"
msgstr "視窗"
-#: ../js/ui/overview.js:162
+#: ../js/ui/overview.js:187
msgid "Applications"
msgstr "應用程式"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:203
+#, fuzzy
+msgid "Dash"
+msgstr "破折號"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:480
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "結束 %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:614
+#: ../js/ui/panel.js:876
msgid "Activities"
msgstr "概覽 "
-#: ../js/ui/placeDisplay.js:106
+#: ../js/ui/panel.js:977
+msgid "Top Bar"
+msgstr "頂端列"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "無法卸載「%s」"
-#: ../js/ui/placeDisplay.js:109
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "重試"
-#: ../js/ui/placeDisplay.js:150
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "連接到…"
-#: ../js/ui/placeDisplay.js:386
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "位置 & 裝置"
@@ -713,95 +569,103 @@ msgstr "位置 & 裝置"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:33
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
-#: ../js/ui/runDialog.js:209
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "請輸入指令:"
-#: ../js/ui/statusMenu.js:102
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "搜尋中…"
+
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "沒有相符的結果。"
+
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "關閉電源…"
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "暫停"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "可用"
-#: ../js/ui/statusMenu.js:107
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "忙碌"
-#: ../js/ui/statusMenu.js:115
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "我的帳號"
-#: ../js/ui/statusMenu.js:119
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "系統設定值"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "鎖定畫面"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "切換使用者"
-#: ../js/ui/statusMenu.js:135
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "登出…"
-#: ../js/ui/statusMenu.js:142
-msgid "Suspend..."
-msgstr "暫停…"
-
-#: ../js/ui/statusMenu.js:146
-msgid "Shut Down..."
-msgstr "關機…"
-
-#: ../js/ui/status/accessibility.js:83
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "縮放"
-#: ../js/ui/status/accessibility.js:89
-msgid "Screen Reader"
-msgstr "螢幕閱讀器"
-
-#: ../js/ui/status/accessibility.js:92
-msgid "Screen Keyboard"
-msgstr "螢幕鍵盤"
-
-#: ../js/ui/status/accessibility.js:95
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "視覺警示"
-#: ../js/ui/status/accessibility.js:98
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "黏性特殊鍵"
-#: ../js/ui/status/accessibility.js:101
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "遲緩按鍵"
-#: ../js/ui/status/accessibility.js:104
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "回鍵"
-#: ../js/ui/status/accessibility.js:107
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "滑鼠按鍵"
-#: ../js/ui/status/accessibility.js:111
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "無障礙功能設定值"
-#: ../js/ui/status/accessibility.js:163
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "高反差"
-#: ../js/ui/status/accessibility.js:205
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "大型文字"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "藍牙"
@@ -821,210 +685,345 @@ msgstr "設定新的裝置…"
msgid "Bluetooth Settings"
msgstr "藍牙設定值"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "連線"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "傳送檔案…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "瀏覽檔案…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "瀏覽裝置時發生錯誤"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "要求的裝置是不能瀏覽的,錯誤為「%s」"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "鍵盤設定值"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "滑鼠設定值"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "音效設定值"
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
-msgid "Bluetooth Agent"
-msgstr "藍牙代理程式"
-
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "來自「%s」的驗證要求"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "裝置 %s 想要存取服務「%s」"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "永遠准許存取"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "只有這次准許"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "拒絕"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s 的配對確認"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "裝置 %s 想要和這個電腦配對"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "請確認 PIN「%s」是否和裝置上的相符。"
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "相符"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "不相符"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "%s 的配對請求"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "請輸入裝置所提及的 PIN。"
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "確定"
-#: ../js/ui/status/keyboard.js:78
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "顯示鍵盤配置…"
+
+#: ../js/ui/status/keyboard.js:76
msgid "Localization Settings"
msgstr "本地化設定值"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<不明>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "已停用"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "連線中…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "要求驗證"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "纜線已拔除"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "無法使用"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "連線失敗"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "已連線 (私人)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "自動使用乙太網絡"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "自動使用行動寬頻"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "自動使用撥號"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "自動使用 %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "自動使用藍牙"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "自動使用無線網絡"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "更多…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "啟用網絡"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "有線"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "無線"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "行動寬頻"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN 連線"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "網絡設定值"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "你現在已連線至行動寬頻網絡連線「%s」"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "你現在已連線到無線網絡「%s」"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "你現在已連線至有線網絡「%s」"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "你現在已連線至 VPN 網絡「%s」"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "你現在已連線至「%s」"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "連線已建立"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "網絡已停用"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "網絡管理員"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "電源定值"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "評估中…"
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "可使用 %d 小時"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "剩下 %d %s %d %s"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "小時"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "分鐘"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "剩下 %d 分鐘"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "AC 電源"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "手提電腦電池"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "不斷電系統"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "監視器"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "滑鼠"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "鍵盤"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "流動電話"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "媒體播放器"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "手寫板"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "電腦"
-#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "不明"
-#: ../js/ui/status/volume.js:42
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "音量"
-#: ../js/ui/status/volume.js:55
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "麥克風"
-#: ../js/ui/telepathyClient.js:563
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s 現在上線。"
-#: ../js/ui/telepathyClient.js:568
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s 現在離線。"
-#: ../js/ui/telepathyClient.js:571
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s 已離開。"
-#: ../js/ui/telepathyClient.js:574
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s 正忙碌。"
@@ -1032,37 +1031,36 @@ msgstr "%s 正忙碌。"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:668
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "傳送於 %X %A"
-#: ../js/ui/viewSelector.js:26
-msgid "Search your computer"
-msgstr "搜尋你的電腦"
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "輸入以搜尋…"
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "搜尋"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s 已完成啟動"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "「%s」已就緒"
-#: ../js/ui/workspacesView.js:243
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr "不能加入新的工作區,因為已達到最大工作區上限。"
-
-#: ../js/ui/workspacesView.js:259
-msgid "Can't remove the first workspace."
-msgstr "不能移除第一個工作區。"
-
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -1070,44 +1068,65 @@ msgstr[0] "%u 輸出"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u 輸入"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "系統音效"
-#: ../src/shell-global.c:1365
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "顯示版本"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "無法啟動「%s」"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "少於一分鐘之前"
-#: ../src/shell-global.c:1369
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d 分鐘前"
-#: ../src/shell-global.c:1374
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d 小時前"
-#: ../src/shell-global.c:1379
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d 天前"
-#: ../src/shell-global.c:1384
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d 週前"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "英國"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "預設值"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "驗證對話盒被使用者取消了"
+
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "家目錄"
@@ -1118,10 +1137,6 @@ msgstr "家目錄"
msgid "File System"
msgstr "檔案系統"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "搜尋"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -1132,99 +1147,5 @@ msgstr "搜尋"
msgid "%1$s: %2$s"
msgstr "%1$s:%2$s"
-#~ msgid "Clock"
-#~ msgstr "時鐘"
-
-#~ msgid "Customize the panel clock"
-#~ msgstr "自訂面板時鐘"
-
-#~ msgid "Custom format of the clock"
-#~ msgstr "自訂時鐘的格式"
-
-#~ msgid "Hour format"
-#~ msgstr "小時格式"
-
-#~ msgid ""
-#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
-#~ "in time."
-#~ msgstr "如果設為 true 且格式為「12-小時」或「24-小時」,在時刻裡顯示秒鐘。"
-
-#~ msgid ""
-#~ "This key specifies the format used by the panel clock when the format key "
-#~ "is set to \"custom\". You can use conversion specifiers understood by "
-#~ "strftime() to obtain a specific format. See the strftime() manual for "
-#~ "more information."
-#~ msgstr ""
-#~ "這個設定鍵是在面板時鐘的「format」設定鍵被設為「custom」時使用的自訂格式。"
-#~ "您可以用可被 strftime() 理解的轉換規範來取得所指定的格式。請查閱 strftime"
-#~ "() 手冊以獲取更多資訊。"
-
-#~ msgid ""
-#~ "This key specifies the hour format used by the panel clock. Possible "
-#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
-#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
-#~ "1970-01-01. If set to \"custom\", the clock will display time according "
-#~ "to the format specified in the custom_format key. Note that if set to "
-#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
-#~ "ignored."
-#~ msgstr ""
-#~ "這個設定值指定了面板時鐘使用的小時格式。可用的數值有「12-hour」、「24-"
-#~ "hour」、「unix」和「custom」。如果設定為「unix」,時鐘會顯示自 Epoch,即 "
-#~ "1970-01-01 以來的秒數。如果設定為「custom」,時鐘會根據 custom_format 設定"
-#~ "鍵顯示時刻。注意不管設為「unix」或「custom」,show_date 和 show_seconds 設"
-#~ "定鍵都會被忽略。"
-
-#~ msgid "Clock Format"
-#~ msgstr "時鐘格式"
-
-#~ msgid "Clock Preferences"
-#~ msgstr "時鐘偏好設定"
-
-#~ msgid "Panel Display"
-#~ msgstr "面板顯示"
-
-#~ msgid "Show seco_nds"
-#~ msgstr "顯示秒數(_N)"
-
-#~ msgid "Show the _date"
-#~ msgstr "顯示日期(_D)"
-
-#~ msgid "_12 hour format"
-#~ msgstr "_12 小時制"
-
-#~ msgid "_24 hour format"
-#~ msgstr "_24 小時制"
-
-#~ msgid "Preferences"
-#~ msgstr "偏好設定"
-
-#~ msgid "Overview workspace view mode"
-#~ msgstr "概覽工作區檢視模式"
-
-#~ msgid ""
-#~ "The selected workspace view mode in the overview. Supported values are "
-#~ "\"single\" and \"grid\"."
-#~ msgstr ""
-#~ "在概覽中選取的工作區檢視模式。支援的數值有「single」(單一)和「grid」(格"
-#~ "線)。"
-
-#~ msgid "Drag here to add favorites"
-#~ msgstr "拖放到這裡加入喜好"
-
-#~ msgid "Find"
-#~ msgstr "尋找"
-
-#~ msgid "Searching..."
-#~ msgstr "搜尋中…"
-
-#~ msgid "No matching results."
-#~ msgstr "沒有相符的結果。"
-
-#~ msgid "Invisible"
-#~ msgstr "隱形"
-
-#~ msgid "ON"
-#~ msgstr "開"
-
-#~ msgid "OFF"
-#~ msgstr "關"
+#~ msgid "No such application"
+#~ msgstr "沒有這個應用程式"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index d620c5444..c246084e2 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -6,10 +6,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gnome-shell 2.91.6\n"
+"Project-Id-Version: gnome-shell 2.91.91\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-02-04 13:12+0800\n"
-"PO-Revision-Date: 2011-02-04 12:41+0800\n"
+"POT-Creation-Date: 2011-03-22 19:42+0800\n"
+"PO-Revision-Date: 2011-03-22 12:30+0800\n"
"Last-Translator: Chao-Hsiung Liao \n"
"Language-Team: Chinese (Taiwan) \n"
"Language: \n"
@@ -55,22 +55,27 @@ msgid "History for command (Alt-F2) dialog"
msgstr "指令 (Alt-F2) 對話盒歷史紀錄"
#: ../data/org.gnome.shell.gschema.xml.in.h:7
+#, fuzzy
+msgid "History for the looking glass dialog"
+msgstr "指令 (Alt-F2) 對話盒歷史紀錄"
+
+#: ../data/org.gnome.shell.gschema.xml.in.h:8
msgid "If true, display date in the clock, in addition to time."
msgstr "如設定為「true」,除了在時鐘內顯示日期外還顯示時刻。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:8
+#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display seconds in time."
msgstr "如設定為「true」,在時刻中顯示秒數。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:9
+#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar."
msgstr "如果設為 true,在日曆中顯示 ISO 週數。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:10
+#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications"
msgstr "喜好的應用程式桌面檔案 ID 清單"
-#: ../data/org.gnome.shell.gschema.xml.in.h:12
+#: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@@ -92,25 +97,25 @@ msgstr ""
"%T ! queue ! webmmux' 即使用 VP8 codec 錄製 WEBM。%T 是在系統的最佳化執行緒計"
"數猜測時使用的佔位符。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:13
+#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock"
msgstr "在時鐘內顯示日期"
-#: ../data/org.gnome.shell.gschema.xml.in.h:14
+#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the week date in the calendar"
msgstr "在日曆中顯示週數"
-#: ../data/org.gnome.shell.gschema.xml.in.h:15
+#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds"
msgstr "在時刻中顯示秒數"
-#: ../data/org.gnome.shell.gschema.xml.in.h:16
+#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr "對應這些辨別碼的應用程式會顯示在喜好區域。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:17
+#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
@@ -119,7 +124,7 @@ msgstr ""
"錄製好的畫面廣播檔案名稱會以目前的時刻作為獨特的檔名,並使用這個延伸檔名。當"
"錄製為不同的容器格式時應該做適當變更。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:18
+#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@@ -127,11 +132,11 @@ msgstr ""
"由 GNOME Shell 的畫面廣播錄製程式所錄製成果的框架率,以 frames-per-second "
"計。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:19
+#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "用來編碼畫面廣播的 gstreamer 管線"
-#: ../data/org.gnome.shell.gschema.xml.in.h:20
+#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
@@ -142,191 +147,55 @@ msgstr ""
"器中)。雖然這個資料會保持隱密,但是您可能會基於隱私的理由想要停用這個功能。"
"請注意這麼做並不會移除已儲存的資料。"
-#: ../data/org.gnome.shell.gschema.xml.in.h:21
+#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Uuids of extensions to disable"
msgstr "要停用的延伸檔名 Uuid"
-#: ../data/org.gnome.shell.gschema.xml.in.h:22
+#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Whether to collect stats about applications usage"
msgstr "是否收集關於應用程式使用率的狀態"
-#: ../data/org.gnome.shell.gschema.xml.in.h:23
+#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "disabled OpenSearch providers"
msgstr "已停用 OpenSearch 提供者"
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1
-msgid "Clip the crosshairs at the center"
-msgstr "點選中央的十字準星"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2
-msgid "Color of the crosshairs"
-msgstr "十字準星的顏色"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3
-msgid ""
-"Determines the length of the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "決定組成十字準星的垂直和水平線條的長度。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4
-msgid ""
-"Determines the position of the magnified mouse image within the magnified "
-"view and how it reacts to system mouse movement. The values are - none: no "
-"mouse tracking; - centered: the mouse image is displayed at the center of "
-"the zoom region (which also represents the point under the system mouse) and "
-"the magnified contents are scrolled as the system mouse moves; - "
-"proportional: the position of the magnified mouse in the zoom region is "
-"proportionally the same as the position of the system mouse on screen; - "
-"push: when the magnified mouse intersects a boundary of the zoom region, the "
-"contents are scrolled into view."
-msgstr ""
-"決定放大的滑鼠圖片在放大鏡檢 視中的位置以及它如何反應系統滑鼠的移動。數值有 "
-"- none: 不追蹤滑鼠;- centered: 滑鼠圖片顯示於放大區域的中央(也代表系統滑鼠"
-"下方的點)而放大的內容也會隨系統滑鼠移動而捲動;- proportional: 放大的滑鼠在"
-"縮放區域中的位置和系統滑鼠在螢幕中的位置是成比例的;- push: 當放大的滑鼠與縮"
-"放區域邊界交錯時,內容會捲動到檢視中。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5
-msgid ""
-"Determines the transparency of the crosshairs, from fully opaque to fully "
-"transparent."
-msgstr "決定十字準星的透明度,從完全不透明到完全透明。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6
-msgid ""
-"Determines whether the crosshairs intersect the magnified mouse sprite, or "
-"are clipped such that the ends of the horizontal and vertical lines surround "
-"the mouse image."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7
-msgid "Enable lens mode"
-msgstr "啟用鏡頭模式"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8
-msgid ""
-"Enables/disables display of crosshairs centered on the magnified mouse "
-"sprite."
-msgstr ""
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9
-msgid ""
-"For centered mouse tracking, when the system pointer is at or near the edge "
-"of the screen, the magnified contents continue to scroll such that the "
-"screen edge moves into the magnified view."
-msgstr ""
-"對於置中式的滑鼠追蹤,當系統指標位於或接近螢幕的邊緣時,放大的內容也會持續捲"
-"動,讓螢幕的邊緣移進放大的檢視範圍。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10
-msgid "Length of the crosshairs"
-msgstr "十字準星長度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11
-msgid "Magnification factor"
-msgstr "放大率"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12
-msgid "Mouse Tracking Mode"
-msgstr "滑鼠追蹤模式"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13
-msgid "Opacity of the crosshairs"
-msgstr "十字準星透明度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14
-msgid "Screen position"
-msgstr "螢幕位置"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15
-msgid "Scroll magnified contents beyond the edges of the desktop"
-msgstr "在桌面邊緣時捲動放大的內容"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16
-msgid "Show or hide crosshairs"
-msgstr "顯示或隱藏十字準星"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17
-msgid "Show or hide the magnifier"
-msgstr "顯示或隱藏放大鏡"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18
-msgid "Show or hide the magnifier and all of its zoom regions."
-msgstr "顯示或隱藏放大鏡和所有被它放大的區域。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19
-msgid ""
-"The color of the the vertical and horizontal lines that make up the "
-"crosshairs."
-msgstr "組成十字準星的垂直和水平線條的顏色。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20
-msgid ""
-"The magnified view either fills the entire screen, or occupies the top-half, "
-"bottom-half, left-half, or right-half of the screen."
-msgstr "放大的檢視要佔據整個螢幕,或是只佔螢幕的上半、下半、左半或右半邊。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21
-msgid ""
-"The power of the magnification. A value of 1.0 means no magnification. A "
-"value of 2.0 doubles the size."
-msgstr "放大的倍數。數值 1.0 表示不放大。數值 2.0 為放大兩倍。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22
-msgid "Thickness of the crosshairs"
-msgstr "十字準星厚度"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23
-msgid ""
-"Whether the magnified view should be centered over the location of the "
-"system mouse and move with it."
-msgstr "放大的檢視是否應以系統滑鼠的位置為中心點並隨滑鼠移動。"
-
-#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24
-msgid "Width of the vertical and horizontal lines that make up the crosshairs."
-msgstr "組成十字準星的垂直和水平線條的寬度。"
-
-#: ../js/misc/util.js:86
+#: ../js/misc/util.js:71
msgid "Command not found"
msgstr "找不到指令"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
-#: ../js/misc/util.js:113
+#: ../js/misc/util.js:98
msgid "Could not parse command:"
msgstr "無法分析指令:"
-#: ../js/misc/util.js:135
-msgid "No such application"
-msgstr "沒有這個應用程式"
-
-#: ../js/misc/util.js:148
+#: ../js/misc/util.js:106
#, c-format
msgid "Execution of '%s' failed:"
msgstr "執行「%s」失敗:"
#. Translators: Filter to display all applications
-#: ../js/ui/appDisplay.js:164
+#: ../js/ui/appDisplay.js:230
msgid "All"
msgstr "全部"
-#: ../js/ui/appDisplay.js:245
+#: ../js/ui/appDisplay.js:328
msgid "APPLICATIONS"
msgstr "程式集"
-#: ../js/ui/appDisplay.js:275
-msgid "PREFERENCES"
-msgstr "偏好設定"
+#: ../js/ui/appDisplay.js:354
+msgid "SETTINGS"
+msgstr "設定值"
-#: ../js/ui/appDisplay.js:572
+#: ../js/ui/appDisplay.js:620
msgid "New Window"
msgstr "新視窗"
-#: ../js/ui/appDisplay.js:576
+#: ../js/ui/appDisplay.js:623
msgid "Remove from Favorites"
msgstr "自喜好中移除"
-#: ../js/ui/appDisplay.js:577
+#: ../js/ui/appDisplay.js:624
msgid "Add to Favorites"
msgstr "加入喜好"
@@ -343,86 +212,68 @@ msgstr "%s 已經從您的喜好中移除。"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
-#: ../js/ui/calendar.js:65
-#, fuzzy
-#| msgid "All Day"
+#: ../js/ui/calendar.js:66
msgctxt "event list time"
msgid "All Day"
msgstr "整天"
#. Translators: Shown in calendar event list, if 24h format
-#: ../js/ui/calendar.js:70
+#: ../js/ui/calendar.js:71
msgctxt "event list time"
msgid "%H:%M"
-msgstr ""
+msgstr "%H:%M"
#. Transators: Shown in calendar event list, if 12h format
-#: ../js/ui/calendar.js:77
-#, fuzzy
-#| msgid "%a %l:%M %p"
+#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "%l:%M %p"
-msgstr "%a %p %l:%M"
+msgstr "%p %l:%M"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
-#: ../js/ui/calendar.js:117
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:118
msgctxt "grid sunday"
msgid "S"
msgstr "日"
#. Translators: Calendar grid abbreviation for Monday
-#: ../js/ui/calendar.js:119
-#, fuzzy
-#| msgid "M"
+#: ../js/ui/calendar.js:120
msgctxt "grid monday"
msgid "M"
msgstr "一"
#. Translators: Calendar grid abbreviation for Tuesday
-#: ../js/ui/calendar.js:121
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:122
msgctxt "grid tuesday"
msgid "T"
msgstr "二"
#. Translators: Calendar grid abbreviation for Wednesday
-#: ../js/ui/calendar.js:123
-#, fuzzy
-#| msgid "W"
+#: ../js/ui/calendar.js:124
msgctxt "grid wednesday"
msgid "W"
msgstr "三"
#. Translators: Calendar grid abbreviation for Thursday
-#: ../js/ui/calendar.js:125
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:126
msgctxt "grid thursday"
msgid "T"
-msgstr "二"
+msgstr "四"
#. Translators: Calendar grid abbreviation for Friday
-#: ../js/ui/calendar.js:127
-#, fuzzy
-#| msgid "F"
+#: ../js/ui/calendar.js:128
msgctxt "grid friday"
msgid "F"
msgstr "五"
#. Translators: Calendar grid abbreviation for Saturday
-#: ../js/ui/calendar.js:129
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:130
msgctxt "grid saturday"
msgid "S"
-msgstr "日"
+msgstr "六"
#. Translators: Event list abbreviation for Sunday.
#. *
@@ -430,99 +281,81 @@ msgstr "日"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
-#: ../js/ui/calendar.js:142
-#, fuzzy
-#| msgid "Su"
+#: ../js/ui/calendar.js:143
msgctxt "list sunday"
msgid "Su"
msgstr "日"
#. Translators: Event list abbreviation for Monday
-#: ../js/ui/calendar.js:144
-#, fuzzy
-#| msgid "M"
+#: ../js/ui/calendar.js:145
msgctxt "list monday"
msgid "M"
msgstr "一"
#. Translators: Event list abbreviation for Tuesday
-#: ../js/ui/calendar.js:146
-#, fuzzy
-#| msgid "T"
+#: ../js/ui/calendar.js:147
msgctxt "list tuesday"
msgid "T"
msgstr "二"
#. Translators: Event list abbreviation for Wednesday
-#: ../js/ui/calendar.js:148
-#, fuzzy
-#| msgid "W"
+#: ../js/ui/calendar.js:149
msgctxt "list wednesday"
msgid "W"
msgstr "三"
#. Translators: Event list abbreviation for Thursday
-#: ../js/ui/calendar.js:150
-#, fuzzy
-#| msgid "Th"
+#: ../js/ui/calendar.js:151
msgctxt "list thursday"
msgid "Th"
msgstr "四"
#. Translators: Event list abbreviation for Friday
-#: ../js/ui/calendar.js:152
-#, fuzzy
-#| msgid "F"
+#: ../js/ui/calendar.js:153
msgctxt "list friday"
msgid "F"
msgstr "五"
#. Translators: Event list abbreviation for Saturday
-#: ../js/ui/calendar.js:154
-#, fuzzy
-#| msgid "S"
+#: ../js/ui/calendar.js:155
msgctxt "list saturday"
msgid "S"
-msgstr "日"
+msgstr "六"
#. Translators: Text to show if there are no events
-#: ../js/ui/calendar.js:701
+#: ../js/ui/calendar.js:704
msgid "Nothing Scheduled"
msgstr "沒有預訂行程"
#. Translators: Shown on calendar heading when selected day occurs on current year
-#: ../js/ui/calendar.js:717
-#, fuzzy
-#| msgid "%A %B %e, %Y"
+#: ../js/ui/calendar.js:720
msgctxt "calendar heading"
msgid "%A, %B %d"
-msgstr "%Y %B %e %A"
+msgstr "%B%d日%A"
#. Translators: Shown on calendar heading when selected day occurs on different year
-#: ../js/ui/calendar.js:720
-#, fuzzy
-#| msgid "%A %B %e, %Y"
+#: ../js/ui/calendar.js:723
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
-msgstr "%Y %B %e %A"
+msgstr "%Y年%B%d日%A"
-#: ../js/ui/calendar.js:730
+#: ../js/ui/calendar.js:733
msgid "Today"
msgstr "今天"
-#: ../js/ui/calendar.js:734
+#: ../js/ui/calendar.js:737
msgid "Tomorrow"
msgstr "明天"
-#: ../js/ui/calendar.js:743
+#: ../js/ui/calendar.js:746
msgid "This week"
msgstr "本週"
-#: ../js/ui/calendar.js:751
+#: ../js/ui/calendar.js:754
msgid "Next week"
msgstr "下週"
-#: ../js/ui/dash.js:27
+#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:945
msgid "Remove"
msgstr "移除"
@@ -530,47 +363,47 @@ msgstr "移除"
msgid "Date and Time Settings"
msgstr "日期與時刻設定值"
-#: ../js/ui/dateMenu.js:110
+#: ../js/ui/dateMenu.js:111
msgid "Open Calendar"
msgstr "開啟行事曆"
#. Translators: This is the time format with date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:149
+#: ../js/ui/dateMenu.js:164
msgid "%a %b %e, %R:%S"
msgstr "%b %e %a, %R:%S"
-#: ../js/ui/dateMenu.js:150
+#: ../js/ui/dateMenu.js:165
msgid "%a %b %e, %R"
msgstr "%b %e %a, %R"
#. Translators: This is the time format without date used
#. in 24-hour mode.
-#: ../js/ui/dateMenu.js:154
+#: ../js/ui/dateMenu.js:169
msgid "%a %R:%S"
msgstr "%a %R:%S"
-#: ../js/ui/dateMenu.js:155
+#: ../js/ui/dateMenu.js:170
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:162
+#: ../js/ui/dateMenu.js:177
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%b %e %a, %p %l:%M:%S"
-#: ../js/ui/dateMenu.js:163
+#: ../js/ui/dateMenu.js:178
msgid "%a %b %e, %l:%M %p"
msgstr "%b %e %a, %p %l:%M"
#. Translators: This is a time format without date used
#. for AM/PM.
-#: ../js/ui/dateMenu.js:167
+#: ../js/ui/dateMenu.js:182
msgid "%a %l:%M:%S %p"
msgstr "%a %p %l:%M:%S"
-#: ../js/ui/dateMenu.js:168
+#: ../js/ui/dateMenu.js:183
msgid "%a %l:%M %p"
msgstr "%a %p %l:%M"
@@ -581,7 +414,7 @@ msgstr "%a %p %l:%M"
msgid "%A %B %e, %Y"
msgstr "%Y %B %e %A"
-#: ../js/ui/docDisplay.js:18
+#: ../js/ui/docDisplay.js:19
msgid "RECENT ITEMS"
msgstr "最近使用項目"
@@ -650,82 +483,98 @@ msgstr "重新啟動系統。"
msgid "Confirm"
msgstr "確認"
-#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470
+#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:466
msgid "Cancel"
msgstr "取消"
-#: ../js/ui/lookingGlass.js:556
+#: ../js/ui/lookingGlass.js:588
msgid "No extensions installed"
msgstr "沒有安裝擴充功能"
-#: ../js/ui/lookingGlass.js:593
+#: ../js/ui/lookingGlass.js:625
msgid "Enabled"
msgstr "已啟用"
#. translators:
#. * The device has been disabled
-#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087
+#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1091
msgid "Disabled"
msgstr "已停用"
-#: ../js/ui/lookingGlass.js:597
+#: ../js/ui/lookingGlass.js:629
msgid "Error"
msgstr "錯誤"
-#: ../js/ui/lookingGlass.js:599
+#: ../js/ui/lookingGlass.js:631
msgid "Out of date"
msgstr "過期"
-#: ../js/ui/lookingGlass.js:624
+#: ../js/ui/lookingGlass.js:656
msgid "View Source"
msgstr "檢示來源"
-#: ../js/ui/lookingGlass.js:630
+#: ../js/ui/lookingGlass.js:662
msgid "Web Page"
msgstr "網頁"
-#: ../js/ui/messageTray.js:1809
+#: ../js/ui/messageTray.js:938
+#, fuzzy
+msgid "Open"
+msgstr "開啟"
+
+#: ../js/ui/messageTray.js:2018
msgid "System Information"
msgstr "系統資訊"
-#: ../js/ui/overview.js:88
+#: ../js/ui/overview.js:89
msgid "Undo"
msgstr "復原"
-#: ../js/ui/overview.js:159
+#: ../js/ui/overview.js:184
msgid "Windows"
msgstr "視窗"
-#: ../js/ui/overview.js:162
+#: ../js/ui/overview.js:187
msgid "Applications"
msgstr "應用程式"
+#. Translators: this is the name of the dock/favorites area on
+#. the left of the overview
+#: ../js/ui/overview.js:203
+#, fuzzy
+msgid "Dash"
+msgstr "破折號"
+
#. TODO - _quit() doesn't really work on apps in state STARTING yet
-#: ../js/ui/panel.js:480
+#: ../js/ui/panel.js:515
#, c-format
msgid "Quit %s"
msgstr "結束 %s"
#. Button on the left side of the panel.
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
-#: ../js/ui/panel.js:614
+#: ../js/ui/panel.js:876
msgid "Activities"
msgstr "概覽 "
-#: ../js/ui/placeDisplay.js:106
+#: ../js/ui/panel.js:977
+msgid "Top Bar"
+msgstr "頂端列"
+
+#: ../js/ui/placeDisplay.js:122
#, c-format
msgid "Failed to unmount '%s'"
msgstr "無法卸載「%s」"
-#: ../js/ui/placeDisplay.js:109
+#: ../js/ui/placeDisplay.js:125
msgid "Retry"
msgstr "重試"
-#: ../js/ui/placeDisplay.js:150
+#: ../js/ui/placeDisplay.js:165
msgid "Connect to..."
msgstr "連接到…"
-#: ../js/ui/placeDisplay.js:386
+#: ../js/ui/placeDisplay.js:380
msgid "PLACES & DEVICES"
msgstr "位置 & 裝置"
@@ -734,95 +583,103 @@ msgstr "位置 & 裝置"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
-#: ../js/ui/popupMenu.js:33
+#: ../js/ui/popupMenu.js:636
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
-#: ../js/ui/runDialog.js:209
+#: ../js/ui/runDialog.js:205
msgid "Please enter a command:"
msgstr "請輸入指令:"
-#: ../js/ui/statusMenu.js:102
+#: ../js/ui/searchDisplay.js:310
+msgid "Searching..."
+msgstr "搜尋中…"
+
+#: ../js/ui/searchDisplay.js:324
+msgid "No matching results."
+msgstr "沒有相符的結果。"
+
+#: ../js/ui/statusMenu.js:161 ../js/ui/statusMenu.js:228
+msgid "Power Off..."
+msgstr "關閉電源…"
+
+#: ../js/ui/statusMenu.js:163 ../js/ui/statusMenu.js:227
+msgid "Suspend"
+msgstr "暫停"
+
+#: ../js/ui/statusMenu.js:184
msgid "Available"
msgstr "可用"
-#: ../js/ui/statusMenu.js:107
+#: ../js/ui/statusMenu.js:189
msgid "Busy"
msgstr "忙碌"
-#: ../js/ui/statusMenu.js:115
+#: ../js/ui/statusMenu.js:197
msgid "My Account"
msgstr "我的帳號"
-#: ../js/ui/statusMenu.js:119
+#: ../js/ui/statusMenu.js:201
msgid "System Settings"
msgstr "系統設定值"
-#: ../js/ui/statusMenu.js:126
+#: ../js/ui/statusMenu.js:208
msgid "Lock Screen"
msgstr "鎖定畫面"
-#: ../js/ui/statusMenu.js:130
+#: ../js/ui/statusMenu.js:213
msgid "Switch User"
msgstr "切換使用者"
-#: ../js/ui/statusMenu.js:135
+#: ../js/ui/statusMenu.js:218
msgid "Log Out..."
msgstr "登出…"
-#: ../js/ui/statusMenu.js:142
-msgid "Suspend..."
-msgstr "暫停…"
-
-#: ../js/ui/statusMenu.js:146
-msgid "Shut Down..."
-msgstr "關機…"
-
-#: ../js/ui/status/accessibility.js:83
+#: ../js/ui/status/accessibility.js:62
msgid "Zoom"
msgstr "縮放"
-#: ../js/ui/status/accessibility.js:89
-msgid "Screen Reader"
-msgstr "螢幕閱讀器"
-
-#: ../js/ui/status/accessibility.js:92
-msgid "Screen Keyboard"
-msgstr "螢幕鍵盤"
-
-#: ../js/ui/status/accessibility.js:95
+#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
+#. 'screen-reader-enabled');
+#. this.menu.addMenuItem(screenReader);
+#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA,
+#. 'screen-keyboard-enabled');
+#. this.menu.addMenuItem(screenKeyboard);
+#: ../js/ui/status/accessibility.js:77
msgid "Visual Alerts"
msgstr "視覺警示"
-#: ../js/ui/status/accessibility.js:98
+#: ../js/ui/status/accessibility.js:80
msgid "Sticky Keys"
msgstr "黏性特殊鍵"
-#: ../js/ui/status/accessibility.js:101
+#: ../js/ui/status/accessibility.js:83
msgid "Slow Keys"
msgstr "遲緩按鍵"
-#: ../js/ui/status/accessibility.js:104
+#: ../js/ui/status/accessibility.js:86
msgid "Bounce Keys"
msgstr "回鍵"
-#: ../js/ui/status/accessibility.js:107
+#: ../js/ui/status/accessibility.js:89
msgid "Mouse Keys"
msgstr "滑鼠按鍵"
-#: ../js/ui/status/accessibility.js:111
+#: ../js/ui/status/accessibility.js:93
msgid "Universal Access Settings"
msgstr "無障礙功能設定值"
-#: ../js/ui/status/accessibility.js:163
+#: ../js/ui/status/accessibility.js:146
msgid "High Contrast"
msgstr "高反差"
-#: ../js/ui/status/accessibility.js:205
+#: ../js/ui/status/accessibility.js:183
msgid "Large Text"
msgstr "大型文字"
-#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241
+#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:237
+#: ../js/ui/status/bluetooth.js:333 ../js/ui/status/bluetooth.js:367
+#: ../js/ui/status/bluetooth.js:407 ../js/ui/status/bluetooth.js:440
msgid "Bluetooth"
msgstr "藍牙"
@@ -842,210 +699,345 @@ msgstr "設定新的裝置…"
msgid "Bluetooth Settings"
msgstr "藍牙設定值"
-#: ../js/ui/status/bluetooth.js:192
+#: ../js/ui/status/bluetooth.js:188
msgid "Connection"
msgstr "連線"
-#: ../js/ui/status/bluetooth.js:228
+#: ../js/ui/status/bluetooth.js:224
msgid "Send Files..."
msgstr "傳送檔案…"
-#: ../js/ui/status/bluetooth.js:233
+#: ../js/ui/status/bluetooth.js:229
msgid "Browse Files..."
msgstr "瀏覽檔案…"
-#: ../js/ui/status/bluetooth.js:242
+#: ../js/ui/status/bluetooth.js:238
msgid "Error browsing device"
msgstr "瀏覽裝置時發生錯誤"
-#: ../js/ui/status/bluetooth.js:243
+#: ../js/ui/status/bluetooth.js:239
#, c-format
msgid "The requested device cannot be browsed, error is '%s'"
msgstr "要求的裝置是不能瀏覽的,錯誤為「%s」"
-#: ../js/ui/status/bluetooth.js:251
+#: ../js/ui/status/bluetooth.js:247
msgid "Keyboard Settings"
msgstr "鍵盤設定值"
-#: ../js/ui/status/bluetooth.js:256
+#: ../js/ui/status/bluetooth.js:252
msgid "Mouse Settings"
msgstr "滑鼠設定值"
-#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63
+#: ../js/ui/status/bluetooth.js:259 ../js/ui/status/volume.js:66
msgid "Sound Settings"
msgstr "音效設定值"
-#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371
-#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444
-msgid "Bluetooth Agent"
-msgstr "藍牙代理程式"
-
-#: ../js/ui/status/bluetooth.js:372
+#: ../js/ui/status/bluetooth.js:368
#, c-format
msgid "Authorization request from %s"
msgstr "來自「%s」的驗證要求"
-#: ../js/ui/status/bluetooth.js:378
+#: ../js/ui/status/bluetooth.js:374
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "裝置 %s 想要存取服務「%s」"
-#: ../js/ui/status/bluetooth.js:380
+#: ../js/ui/status/bluetooth.js:376
msgid "Always grant access"
msgstr "永遠准許存取"
-#: ../js/ui/status/bluetooth.js:381
+#: ../js/ui/status/bluetooth.js:377
msgid "Grant this time only"
msgstr "只有這次准許"
-#: ../js/ui/status/bluetooth.js:382
+#: ../js/ui/status/bluetooth.js:378
msgid "Reject"
msgstr "拒絕"
-#: ../js/ui/status/bluetooth.js:412
+#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s 的配對確認"
-#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452
+#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "裝置 %s 想要和這個電腦配對"
-#: ../js/ui/status/bluetooth.js:419
+#: ../js/ui/status/bluetooth.js:415
#, c-format
msgid "Please confirm whether the PIN '%s' matches the one on the device."
msgstr "請確認 PIN「%s」是否和裝置上的相符。"
-#: ../js/ui/status/bluetooth.js:421
+#: ../js/ui/status/bluetooth.js:417
msgid "Matches"
msgstr "相符"
-#: ../js/ui/status/bluetooth.js:422
+#: ../js/ui/status/bluetooth.js:418
msgid "Does not match"
msgstr "不相符"
-#: ../js/ui/status/bluetooth.js:445
+#: ../js/ui/status/bluetooth.js:441
#, c-format
msgid "Pairing request for %s"
msgstr "%s 的配對請求"
-#: ../js/ui/status/bluetooth.js:453
+#: ../js/ui/status/bluetooth.js:449
msgid "Please enter the PIN mentioned on the device."
msgstr "請輸入裝置所提及的 PIN。"
-#: ../js/ui/status/bluetooth.js:469
+#: ../js/ui/status/bluetooth.js:465
msgid "OK"
msgstr "確定"
-#: ../js/ui/status/keyboard.js:78
+#: ../js/ui/status/keyboard.js:73
+msgid "Show Keyboard Layout..."
+msgstr "顯示鍵盤配置…"
+
+#: ../js/ui/status/keyboard.js:76
msgid "Localization Settings"
msgstr "本地化設定值"
+#: ../js/ui/status/network.js:102 ../js/ui/status/network.js:1393
+msgid ""
+msgstr "<不明>"
+
+#. Translators: this indicates that wireless or wwan is disabled by hardware killswitch
+#: ../js/ui/status/network.js:295
+msgid "disabled"
+msgstr "已停用"
+
+#: ../js/ui/status/network.js:476
+msgid "connecting..."
+msgstr "連線中…"
+
+#. Translators: this is for network connections that require some kind of key or password
+#: ../js/ui/status/network.js:479
+msgid "authentication required"
+msgstr "要求驗證"
+
+#. Translators: this is for wired network devices that are physically disconnected
+#: ../js/ui/status/network.js:485
+msgid "cable unplugged"
+msgstr "纜線已拔除"
+
+#. Translators: this is for a network device that cannot be activated (for example it
+#. is disabled by rfkill, or it has no coverage
+#: ../js/ui/status/network.js:489
+msgid "unavailable"
+msgstr "無法使用"
+
+#: ../js/ui/status/network.js:491
+msgid "connection failed"
+msgstr "連線失敗"
+
+#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
+#. and we cannot access its settings (including the name)
+#: ../js/ui/status/network.js:571 ../js/ui/status/network.js:1341
+msgid "Connected (private)"
+msgstr "已連線 (私人)"
+
+#: ../js/ui/status/network.js:636
+msgid "Auto Ethernet"
+msgstr "自動使用乙太網路"
+
+#: ../js/ui/status/network.js:697
+msgid "Auto broadband"
+msgstr "自動使用行動寬頻"
+
+#: ../js/ui/status/network.js:700
+msgid "Auto dial-up"
+msgstr "自動使用撥接"
+
+#. TRANSLATORS: this the automatic wireless connection name (including the network name)
+#: ../js/ui/status/network.js:843 ../js/ui/status/network.js:1353
+#, c-format
+msgid "Auto %s"
+msgstr "自動使用 %s"
+
+#: ../js/ui/status/network.js:845
+msgid "Auto bluetooth"
+msgstr "自動使用藍牙"
+
+#: ../js/ui/status/network.js:1355
+msgid "Auto wireless"
+msgstr "自動使用無線網路"
+
+#: ../js/ui/status/network.js:1413
+msgid "More..."
+msgstr "更多…"
+
+#: ../js/ui/status/network.js:1436
+msgid "Enable networking"
+msgstr "啟用網路"
+
+#: ../js/ui/status/network.js:1448
+msgid "Wired"
+msgstr "有線"
+
+#: ../js/ui/status/network.js:1459
+msgid "Wireless"
+msgstr "無線"
+
+#: ../js/ui/status/network.js:1469
+msgid "Mobile broadband"
+msgstr "行動寬頻"
+
+#: ../js/ui/status/network.js:1479
+msgid "VPN Connections"
+msgstr "VPN 連線"
+
+#: ../js/ui/status/network.js:1488
+msgid "Network Settings"
+msgstr "網路設定值"
+
+#: ../js/ui/status/network.js:1783
+#, c-format
+msgid "You're now connected to mobile broadband connection '%s'"
+msgstr "您現在已連線至行動寬頻網路連線「%s」"
+
+#: ../js/ui/status/network.js:1787
+#, c-format
+msgid "You're now connected to wireless network '%s'"
+msgstr "您現在已連線到無線網路「%s」"
+
+#: ../js/ui/status/network.js:1791
+#, c-format
+msgid "You're now connected to wired network '%s'"
+msgstr "您現在已連線至有線網路「%s」"
+
+#: ../js/ui/status/network.js:1795
+#, c-format
+msgid "You're now connected to VPN network '%s'"
+msgstr "您現在已連線至 VPN 網路「%s」"
+
+#: ../js/ui/status/network.js:1800
+#, c-format
+msgid "You're now connected to '%s'"
+msgstr "您現在已連線至「%s」"
+
+#: ../js/ui/status/network.js:1808
+msgid "Connection established"
+msgstr "連線已建立"
+
+#: ../js/ui/status/network.js:1930
+msgid "Networking is disabled"
+msgstr "網路已停用"
+
+#: ../js/ui/status/network.js:2055
+msgid "Network Manager"
+msgstr "網路管理員"
+
#: ../js/ui/status/power.js:85
msgid "Power Settings"
msgstr "電源定值"
-#: ../js/ui/status/power.js:112
+#. 0 is reported when UPower does not have enough data
+#. to estimate battery life
+#: ../js/ui/status/power.js:111
+msgid "Estimating..."
+msgstr "評估中…"
+
+#: ../js/ui/status/power.js:118
#, c-format
msgid "%d hour remaining"
msgid_plural "%d hours remaining"
msgstr[0] "可使用 %d 小時"
#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining"
-#: ../js/ui/status/power.js:115
+#: ../js/ui/status/power.js:121
#, c-format
msgid "%d %s %d %s remaining"
msgstr "剩下 %d %s %d %s"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "hour"
msgid_plural "hours"
msgstr[0] "小時"
-#: ../js/ui/status/power.js:117
+#: ../js/ui/status/power.js:123
msgid "minute"
msgid_plural "minutes"
msgstr[0] "分鐘"
-#: ../js/ui/status/power.js:120
+#: ../js/ui/status/power.js:126
#, c-format
msgid "%d minute remaining"
msgid_plural "%d minutes remaining"
msgstr[0] "剩下 %d 分鐘"
-#: ../js/ui/status/power.js:235
+#: ../js/ui/status/power.js:228
msgid "AC adapter"
msgstr "AC 電源"
-#: ../js/ui/status/power.js:237
+#: ../js/ui/status/power.js:230
msgid "Laptop battery"
msgstr "筆記型電腦電池"
-#: ../js/ui/status/power.js:239
+#: ../js/ui/status/power.js:232
msgid "UPS"
msgstr "不斷電系統"
-#: ../js/ui/status/power.js:241
+#: ../js/ui/status/power.js:234
msgid "Monitor"
msgstr "監視器"
-#: ../js/ui/status/power.js:243
+#: ../js/ui/status/power.js:236
msgid "Mouse"
msgstr "滑鼠"
-#: ../js/ui/status/power.js:245
+#: ../js/ui/status/power.js:238
msgid "Keyboard"
msgstr "鍵盤"
-#: ../js/ui/status/power.js:247
+#: ../js/ui/status/power.js:240
msgid "PDA"
msgstr "PDA"
-#: ../js/ui/status/power.js:249
+#: ../js/ui/status/power.js:242
msgid "Cell phone"
msgstr "行動電話"
-#: ../js/ui/status/power.js:251
+#: ../js/ui/status/power.js:244
msgid "Media player"
msgstr "媒體播放器"
-#: ../js/ui/status/power.js:253
+#: ../js/ui/status/power.js:246
msgid "Tablet"
msgstr "手寫板"
-#: ../js/ui/status/power.js:255
+#: ../js/ui/status/power.js:248
msgid "Computer"
msgstr "電腦"
-#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012
+#: ../js/ui/status/power.js:250 ../src/shell-app-system.c:1088
msgid "Unknown"
msgstr "不明"
-#: ../js/ui/status/volume.js:42
+#: ../js/ui/status/volume.js:45
msgid "Volume"
msgstr "音量"
-#: ../js/ui/status/volume.js:55
+#: ../js/ui/status/volume.js:58
msgid "Microphone"
msgstr "麥克風"
-#: ../js/ui/telepathyClient.js:563
+#: ../js/ui/telepathyClient.js:332
#, c-format
msgid "%s is online."
msgstr "%s 現在上線。"
-#: ../js/ui/telepathyClient.js:568
+#: ../js/ui/telepathyClient.js:337
#, c-format
msgid "%s is offline."
msgstr "%s 現在離線。"
-#: ../js/ui/telepathyClient.js:571
+#: ../js/ui/telepathyClient.js:340
#, c-format
msgid "%s is away."
msgstr "%s 已離開。"
-#: ../js/ui/telepathyClient.js:574
+#: ../js/ui/telepathyClient.js:343
#, c-format
msgid "%s is busy."
msgstr "%s 正忙碌。"
@@ -1053,37 +1045,36 @@ msgstr "%s 正忙碌。"
#. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds.
-#: ../js/ui/telepathyClient.js:668
+#: ../js/ui/telepathyClient.js:474
#, no-c-format
msgid "Sent at %X on %A"
msgstr "傳送於 %X %A"
-#: ../js/ui/viewSelector.js:26
-msgid "Search your computer"
-msgstr "搜尋您的電腦"
+#. Translators: this is the text displayed
+#. in the search entry when no search is
+#. active; it should not exceed ~30
+#. characters.
+#: ../js/ui/viewSelector.js:122
+msgid "Type to search..."
+msgstr "輸入以搜尋…"
-#: ../js/ui/windowAttentionHandler.js:43
+#: ../js/ui/viewSelector.js:142 ../src/shell-util.c:250
+msgid "Search"
+msgstr "搜尋"
+
+#: ../js/ui/windowAttentionHandler.js:42
#, c-format
msgid "%s has finished starting"
msgstr "%s 已完成啟動"
-#: ../js/ui/windowAttentionHandler.js:45
+#: ../js/ui/windowAttentionHandler.js:44
#, c-format
msgid "'%s' is ready"
msgstr "「%s」已就緒"
-#: ../js/ui/workspacesView.js:243
-msgid ""
-"Can't add a new workspace because maximum workspaces limit has been reached."
-msgstr "不能加入新的工作區,因為已達到最大工作區上限。"
-
-#: ../js/ui/workspacesView.js:259
-msgid "Can't remove the first workspace."
-msgstr "不能移除第一個工作區。"
-
#. translators:
#. * The number of sound outputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1094
+#: ../src/gvc/gvc-mixer-control.c:1098
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@@ -1091,44 +1082,65 @@ msgstr[0] "%u 輸出"
#. translators:
#. * The number of sound inputs on a particular device
-#: ../src/gvc/gvc-mixer-control.c:1104
+#: ../src/gvc/gvc-mixer-control.c:1108
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u 輸入"
-#: ../src/gvc/gvc-mixer-control.c:1402
+#: ../src/gvc/gvc-mixer-control.c:1406
msgid "System Sounds"
msgstr "系統音效"
-#: ../src/shell-global.c:1365
+#: ../src/main.c:397
+msgid "Print version"
+msgstr "顯示版本"
+
+#: ../src/shell-app.c:454
+#, c-format
+msgid "Failed to launch '%s'"
+msgstr "無法啟動「%s」"
+
+#: ../src/shell-global.c:1395
msgid "Less than a minute ago"
msgstr "少於一分鐘之前"
-#: ../src/shell-global.c:1369
+#: ../src/shell-global.c:1399
#, c-format
msgid "%d minute ago"
msgid_plural "%d minutes ago"
msgstr[0] "%d 分鐘前"
-#: ../src/shell-global.c:1374
+#: ../src/shell-global.c:1404
#, c-format
msgid "%d hour ago"
msgid_plural "%d hours ago"
msgstr[0] "%d 小時前"
-#: ../src/shell-global.c:1379
+#: ../src/shell-global.c:1409
#, c-format
msgid "%d day ago"
msgid_plural "%d days ago"
msgstr[0] "%d 天前"
-#: ../src/shell-global.c:1384
+#: ../src/shell-global.c:1414
#, c-format
msgid "%d week ago"
msgid_plural "%d weeks ago"
msgstr[0] "%d 週前"
+#: ../src/shell-mobile-providers.c:80
+msgid "United Kingdom"
+msgstr "英國"
+
+#: ../src/shell-mobile-providers.c:526
+msgid "Default"
+msgstr "預設值"
+
+#: ../src/shell-polkit-authentication-agent.c:334
+msgid "Authentication dialog was dismissed by the user"
+msgstr "驗證對話盒被使用者取消了"
+
#: ../src/shell-util.c:89
msgid "Home Folder"
msgstr "家目錄"
@@ -1139,10 +1151,6 @@ msgstr "家目錄"
msgid "File System"
msgstr "檔案系統"
-#: ../src/shell-util.c:250
-msgid "Search"
-msgstr "搜尋"
-
#. Translators: the first string is the name of a gvfs
#. * method, and the second string is a path. For
#. * example, "Trash: some-directory". It means that the
@@ -1153,99 +1161,5 @@ msgstr "搜尋"
msgid "%1$s: %2$s"
msgstr "%1$s:%2$s"
-#~ msgid "Clock"
-#~ msgstr "時鐘"
-
-#~ msgid "Customize the panel clock"
-#~ msgstr "自訂面板時鐘"
-
-#~ msgid "Custom format of the clock"
-#~ msgstr "自訂時鐘的格式"
-
-#~ msgid "Hour format"
-#~ msgstr "小時格式"
-
-#~ msgid ""
-#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
-#~ "in time."
-#~ msgstr "如果設為 true 且格式為「12-小時」或「24-小時」,在時刻裡顯示秒鐘。"
-
-#~ msgid ""
-#~ "This key specifies the format used by the panel clock when the format key "
-#~ "is set to \"custom\". You can use conversion specifiers understood by "
-#~ "strftime() to obtain a specific format. See the strftime() manual for "
-#~ "more information."
-#~ msgstr ""
-#~ "這個設定鍵是在面板時鐘的「format」設定鍵被設為「custom」時使用的自訂格式。"
-#~ "您可以用可被 strftime() 理解的轉換規範來取得所指定的格式。請查閱 strftime"
-#~ "() 手冊以獲取更多資訊。"
-
-#~ msgid ""
-#~ "This key specifies the hour format used by the panel clock. Possible "
-#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
-#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
-#~ "1970-01-01. If set to \"custom\", the clock will display time according "
-#~ "to the format specified in the custom_format key. Note that if set to "
-#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
-#~ "ignored."
-#~ msgstr ""
-#~ "這個設定值指定了面板時鐘使用的小時格式。可用的數值有「12-hour」、「24-"
-#~ "hour」、「unix」和「custom」。如果設定為「unix」,時鐘會顯示自 Epoch,即 "
-#~ "1970-01-01 以來的秒數。如果設定為「custom」,時鐘會根據 custom_format 設定"
-#~ "鍵顯示時刻。注意不管設為「unix」或「custom」,show_date 和 show_seconds 設"
-#~ "定鍵都會被忽略。"
-
-#~ msgid "Clock Format"
-#~ msgstr "時鐘格式"
-
-#~ msgid "Clock Preferences"
-#~ msgstr "時鐘偏好設定"
-
-#~ msgid "Panel Display"
-#~ msgstr "面板顯示"
-
-#~ msgid "Show seco_nds"
-#~ msgstr "顯示秒數(_N)"
-
-#~ msgid "Show the _date"
-#~ msgstr "顯示日期(_D)"
-
-#~ msgid "_12 hour format"
-#~ msgstr "_12 小時制"
-
-#~ msgid "_24 hour format"
-#~ msgstr "_24 小時制"
-
-#~ msgid "Preferences"
-#~ msgstr "偏好設定"
-
-#~ msgid "Overview workspace view mode"
-#~ msgstr "概覽工作區檢視模式"
-
-#~ msgid ""
-#~ "The selected workspace view mode in the overview. Supported values are "
-#~ "\"single\" and \"grid\"."
-#~ msgstr ""
-#~ "在概覽中選取的工作區檢視模式。支援的數值有「single」(單一)和「grid」(格"
-#~ "線)。"
-
-#~ msgid "Drag here to add favorites"
-#~ msgstr "拖放到這裡加入喜好"
-
-#~ msgid "Find"
-#~ msgstr "尋找"
-
-#~ msgid "Searching..."
-#~ msgstr "搜尋中…"
-
-#~ msgid "No matching results."
-#~ msgstr "沒有相符的結果。"
-
-#~ msgid "Invisible"
-#~ msgstr "隱形"
-
-#~ msgid "ON"
-#~ msgstr "開"
-
-#~ msgid "OFF"
-#~ msgstr "關"
+#~ msgid "No such application"
+#~ msgstr "沒有這個應用程式"
diff --git a/src/Makefile.am b/src/Makefile.am
index 7c251de0a..fa79fccbe 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,13 +38,16 @@ generated_script_substitutions = \
-e "s|@datadir[@]|$(datadir)|" \
-e "s|@libexecdir[@]|$(libexecdir)|" \
-e "s|@libdir[@]|$(libdir)|" \
+ -e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|" \
-e "s|@pkgdatadir[@]|$(pkgdatadir)|" \
-e "s|@PYTHON[@]|$(PYTHON)|" \
-e "s|@VERSION[@]|$(VERSION)|" \
-e "s|@sysconfdir[@]|$(sysconfdir)|"
-gnome-shell-jhbuild: gnome-shell-jhbuild.in Makefile
+gnome-shell-jhbuild: gnome-shell-jhbuild.in gnome-shell-real Makefile
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
+ @# Regenerate libtool wrapper so Alt+F2 restart will work
+ @$(LIBTOOL) --mode=execute test -f gnome-shell-real
gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
@@ -62,7 +65,8 @@ gnome_shell_cflags = \
$(GNOME_SHELL_CFLAGS) \
-I$(srcdir)/tray \
-DVERSION=\"$(VERSION)\" \
- -DLOCALEDIR=\"$(datadir)/locale\" \
+ -DLOCALEDIR=\"$(datadir)/locale\" \
+ -DDATADIR=\"$(datadir)\" \
-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \
-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
@@ -90,6 +94,7 @@ shell_public_headers_h = \
shell-generic-container.h \
shell-gtk-embed.h \
shell-global.h \
+ shell-mobile-providers.h \
shell-perf-log.h \
shell-slicer.h \
shell-stack.h \
@@ -121,6 +126,7 @@ libgnome_shell_la_SOURCES = \
shell-generic-container.c \
shell-gtk-embed.c \
shell-global.c \
+ shell-mobile-providers.c \
shell-perf-log.c \
shell-polkit-authentication-agent.h \
shell-polkit-authentication-agent.c \
@@ -262,7 +268,7 @@ libgnome_shell_la_LIBADD = \
libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags)
Shell-0.1.gir: libgnome-shell.la St-1.0.gir
-Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-2.91 TelepathyGLib-0.12
+Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-2.91 TelepathyGLib-0.12 TelepathyLogger-0.2
Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir)
Shell_0_1_gir_LIBS = libgnome-shell.la
Shell_0_1_gir_FILES = $(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources))
diff --git a/src/gdmuser/gdm-user.c b/src/gdmuser/gdm-user.c
index 735c2cb74..0a592cc6a 100644
--- a/src/gdmuser/gdm-user.c
+++ b/src/gdmuser/gdm-user.c
@@ -407,7 +407,9 @@ gdm_user_get_uid (GdmUser *user)
* gdm_user_get_real_name:
* @user: the user object to examine.
*
- * Retrieves the display name of @user.
+ * Retrieves a displayable name for @user. By default this is the real name
+ * of the user, but will fall back to the user name if there is no real name
+ * defined.
*
* Returns: (transfer none): a pointer to an array of characters which must not be modified or
* freed, or %NULL.
@@ -417,7 +419,12 @@ gdm_user_get_real_name (GdmUser *user)
{
g_return_val_if_fail (GDM_IS_USER (user), NULL);
- return (user->real_name ? user->real_name : user->user_name);
+ if (user->real_name == NULL ||
+ user->real_name[0] == '\0') {
+ return user->user_name;
+ }
+
+ return user->real_name;
}
/**
diff --git a/src/gnome-shell-jhbuild.in b/src/gnome-shell-jhbuild.in
index 1cc4ef4d3..924e9b386 100755
--- a/src/gnome-shell-jhbuild.in
+++ b/src/gnome-shell-jhbuild.in
@@ -197,12 +197,16 @@ def start_shell(perf_output=None):
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
running_from_source_tree = True
top_dir = os.path.dirname(self_dir)
- typelib_dir = os.path.join(top_dir, "src")
+ typelib_dir = '@JHBUILD_TYPELIBDIR@:' + os.path.join(top_dir, "src")
js_dir = os.path.join(top_dir, "js")
data_dir = os.path.join(top_dir, "data")
else:
running_from_source_tree = False
js_dir = os.path.join('@pkgdatadir@', 'js')
+ typelib_dir = '@JHBUILD_TYPELIBDIR@'
+
+ if os.environ.has_key('GI_TYPELIB_PATH'):
+ typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH')
# Set up environment
env = dict(os.environ)
@@ -215,14 +219,12 @@ def start_shell(perf_output=None):
# run". See bug #642084
env.update({'GNOME_SHELL_JS' : js_dir,
'PATH' : '@bindir@:' + os.environ.get('PATH', ''),
+ 'GI_TYPELIB_PATH' : typelib_dir,
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
'XDG_DATA_DIRS' : '@datadir@:' + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share')})
if running_from_source_tree:
- if os.environ.has_key('GI_TYPELIB_PATH'):
- typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH')
env.update({'GNOME_SHELL_BINDIR' : self_dir,
'GNOME_SHELL_DATADIR' : data_dir,
- 'GI_TYPELIB_PATH' : typelib_dir,
'GSETTINGS_SCHEMA_DIR' : data_dir })
else:
# This is just broken to set in the installed case; see bug #642084
diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c
index 8bf7441be..b922ca39c 100644
--- a/src/gnome-shell-plugin.c
+++ b/src/gnome-shell-plugin.c
@@ -321,20 +321,28 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin,
}
#endif
- /* When the pointer leaves the stage to enter a child of the stage
- * (like a notification icon), we don't want to produce Clutter leave
- * events. But Clutter treats all leave events identically, so we
- * need hide the detail = NotifyInferior events from it.
- *
- * Since Clutter doesn't see any event at all, this does mean that
- * it won't produce an enter event on a Clutter actor that surrounds
- * the child (unless it gets a MotionNotify before the Enter event).
- * Other weirdness is likely also possible.
- */
if ((xev->xany.type == EnterNotify || xev->xany.type == LeaveNotify)
- && xev->xcrossing.detail == NotifyInferior
&& xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (clutter_stage_get_default ())))
- return TRUE;
+ {
+ /* If the pointer enters a child of the stage window (eg, a
+ * trayicon), we want to consider it to still be in the stage,
+ * so don't let Clutter see the event.
+ */
+ if (xev->xcrossing.detail == NotifyInferior)
+ return TRUE;
+
+ /* If the pointer is grabbed by a window it is not currently in,
+ * filter that out as well. In particular, if a trayicon grabs
+ * the pointer after a click on its label, we don't want to hide
+ * the message tray. Filtering out this event will leave Clutter
+ * out of sync, but that happens fairly often with grabs, and we
+ * can work around it. (Eg, shell_global_sync_pointer().)
+ */
+ if (xev->xcrossing.mode == NotifyGrab &&
+ (xev->xcrossing.detail == NotifyNonlinear ||
+ xev->xcrossing.detail == NotifyNonlinearVirtual))
+ return TRUE;
+ }
/*
* Pass the event to shell-global
diff --git a/src/main.c b/src/main.c
index ba53a73ac..589b27f1a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -31,11 +31,12 @@ extern GType gnome_shell_plugin_get_type (void);
#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier"
static void
-shell_dbus_init (void)
+shell_dbus_init (gboolean replace)
{
GError *error = NULL;
DBusGConnection *session;
DBusGProxy *bus;
+ guint32 request_name_flags;
guint32 request_name_result;
/** TODO:
@@ -51,18 +52,25 @@ shell_dbus_init (void)
DBUS_PATH_DBUS,
DBUS_INTERFACE_DBUS);
+ request_name_flags = DBUS_NAME_FLAG_DO_NOT_QUEUE | DBUS_NAME_FLAG_ALLOW_REPLACEMENT;
+ if (replace)
+ request_name_flags |= DBUS_NAME_FLAG_REPLACE_EXISTING;
if (!dbus_g_proxy_call (bus, "RequestName", &error,
G_TYPE_STRING, SHELL_DBUS_SERVICE,
- G_TYPE_UINT, 0,
+ G_TYPE_UINT, request_name_flags,
G_TYPE_INVALID,
G_TYPE_UINT, &request_name_result,
G_TYPE_INVALID))
{
- g_print ("failed to acquire org.gnome.Shell: %s\n", error->message);
- /* If we somehow got started again, it's not an error to be running
- * already. So just exit 0.
- */
- exit (0);
+ g_printerr ("failed to acquire org.gnome.Shell: %s\n", error->message);
+ exit (1);
+ }
+ if (!(request_name_result == DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER
+ || request_name_result == DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER))
+ {
+ g_printerr ("%s already exists on bus and --replace not specified\n",
+ SHELL_DBUS_SERVICE);
+ exit (1);
}
/* Also grab org.gnome.Panel to replace any existing panel process,
@@ -108,6 +116,45 @@ shell_dbus_init (void)
g_object_unref (bus);
}
+static void
+constrain_tooltip (StTooltip *tooltip,
+ const ClutterGeometry *geometry,
+ ClutterGeometry *adjusted_geometry,
+ gpointer data)
+{
+ const ClutterGeometry *tip_area = st_tooltip_get_tip_area (tooltip);
+ ShellGlobal *global = shell_global_get ();
+ MetaScreen *screen = shell_global_get_screen (global);
+ int n_monitors = meta_screen_get_n_monitors (screen);
+ int i;
+
+ *adjusted_geometry = *geometry;
+
+ /* A point that determines what screen we'll constrain to */
+ int x = tip_area->x + tip_area->width / 2;
+ int y = tip_area->y + tip_area->height / 2;
+
+ for (i = 0; i < n_monitors; i++)
+ {
+ MetaRectangle rect;
+ meta_screen_get_monitor_geometry (screen, i, &rect);
+ if (x >= rect.x && x < rect.x + rect.width &&
+ y >= rect.y && y < rect.y + rect.height)
+ {
+ if (adjusted_geometry->x + adjusted_geometry->width > rect.x + rect.width)
+ adjusted_geometry->x = rect.x + rect.width - adjusted_geometry->width;
+ if (adjusted_geometry->x < rect.x)
+ adjusted_geometry->x = rect.x;
+
+ if (adjusted_geometry->y + adjusted_geometry->height > rect.y + rect.height)
+ adjusted_geometry->y = rect.y + rect.height - adjusted_geometry->height;
+ if (adjusted_geometry->y < rect.y)
+ adjusted_geometry->y = rect.y;
+
+ return;
+ }
+ }
+}
static void
update_font_options (GtkSettings *settings)
@@ -139,6 +186,8 @@ update_font_options (GtkSettings *settings)
else
st_theme_context_set_default_resolution (context);
+ st_tooltip_set_constrain_func (stage, constrain_tooltip, NULL, NULL);
+
/* Clutter (as of 0.9) passes comprehensively wrong font options
* override whatever set_font_flags() did above.
*
@@ -221,6 +270,8 @@ shell_prefs_init (void)
{
meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs",
"/desktop/gnome/shell/windows/attach_modal_dialogs");
+ meta_prefs_override_preference_location ("/apps/mutter/general/workspaces_only_on_primary",
+ "/desktop/gnome/shell/windows/workspaces_only_on_primary");
meta_prefs_override_preference_location ("/apps/metacity/general/button_layout",
"/desktop/gnome/shell/windows/button_layout");
meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling",
@@ -432,7 +483,7 @@ main (int argc, char **argv)
g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE);
g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE);
- shell_dbus_init ();
+ shell_dbus_init (meta_get_replace_current_wm ());
shell_a11y_init ();
shell_fonts_init ();
shell_perf_log_init ();
diff --git a/src/shell-app-system.c b/src/shell-app-system.c
index 519a83010..b52625a0a 100644
--- a/src/shell-app-system.c
+++ b/src/shell-app-system.c
@@ -23,10 +23,10 @@
/* Vendor prefixes are something that can be preprended to a .desktop
* file name. Undo this.
*/
-static const char*const known_vendor_prefixes[] = { "gnome",
- "fedora",
- "mozilla",
- NULL };
+static const char*const vendor_prefixes[] = { "gnome-",
+ "fedora-",
+ "mozilla-",
+ NULL };
enum {
PROP_0,
@@ -49,12 +49,14 @@ struct _ShellAppSystemPrivate {
GSList *cached_flattened_apps; /* ShellAppInfo */
GSList *cached_settings; /* ShellAppInfo */
+ GSList *known_vendor_prefixes;
gint app_monitor_id;
guint app_change_timeout_id;
};
+static char *shell_app_info_get_prefix (ShellAppInfo *info);
static void shell_app_system_finalize (GObject *object);
static gboolean on_tree_changed (gpointer user_data);
static void on_tree_changed_cb (GMenuTree *tree, gpointer user_data);
@@ -159,20 +161,6 @@ shell_app_info_new_from_window (MetaWindow *window)
return info;
}
-static ShellAppInfo *
-shell_app_info_new_from_keyfile_take_ownership (GKeyFile *keyfile,
- const char *path)
-{
- ShellAppInfo *info;
-
- info = g_slice_alloc0 (sizeof (ShellAppInfo));
- info->type = SHELL_APP_INFO_TYPE_DESKTOP_FILE;
- info->refcount = 1;
- info->keyfile = keyfile;
- info->keyfile_path = g_strdup (path);
- return info;
-}
-
static void shell_app_system_class_init(ShellAppSystemClass *klass)
{
GObjectClass *gobject_class = (GObjectClass *)klass;
@@ -212,7 +200,7 @@ shell_app_system_init (ShellAppSystem *self)
* case by case.
*/
priv->apps_tree = gmenu_tree_lookup ("applications.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
- priv->settings_tree = gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE);
+ priv->settings_tree = gmenu_tree_lookup ("gnomecc.menu", GMENU_TREE_FLAGS_INCLUDE_NODISPLAY);
priv->app_change_timeout_id = 0;
@@ -240,6 +228,11 @@ shell_app_system_finalize (GObject *object)
g_slist_foreach (priv->cached_flattened_apps, (GFunc)shell_app_info_unref, NULL);
g_slist_free (priv->cached_flattened_apps);
priv->cached_flattened_apps = NULL;
+
+ g_slist_foreach (priv->known_vendor_prefixes, (GFunc)g_free, NULL);
+ g_slist_free (priv->known_vendor_prefixes);
+ priv->known_vendor_prefixes = NULL;
+
g_slist_foreach (priv->cached_settings, (GFunc)shell_app_info_unref, NULL);
g_slist_free (priv->cached_settings);
priv->cached_settings = NULL;
@@ -323,10 +316,20 @@ cache_by_id (ShellAppSystem *self, GSList *apps)
for (iter = apps; iter; iter = iter->next)
{
ShellAppInfo *info = iter->data;
+ const char *id = shell_app_info_get_id (info);
+ char *prefix = shell_app_info_get_prefix (info);
+
shell_app_info_ref (info);
/* the name is owned by the info itself */
- g_hash_table_replace (self->priv->app_id_to_info, (char*)shell_app_info_get_id (info),
- info);
+
+ if (prefix
+ && !g_slist_find_custom (self->priv->known_vendor_prefixes, prefix,
+ (GCompareFunc)g_strcmp0))
+ self->priv->known_vendor_prefixes = g_slist_append (self->priv->known_vendor_prefixes,
+ prefix);
+ else
+ g_free (prefix);
+ g_hash_table_replace (self->priv->app_id_to_info, (char*)id, info);
}
}
@@ -335,6 +338,10 @@ reread_menus (ShellAppSystem *self)
{
GHashTable *unique = g_hash_table_new (g_str_hash, g_str_equal);
+ g_slist_foreach (self->priv->known_vendor_prefixes, (GFunc)g_free, NULL);
+ g_slist_free (self->priv->known_vendor_prefixes);
+ self->priv->known_vendor_prefixes = NULL;
+
reread_entries (self, &(self->priv->cached_flattened_apps), unique, self->priv->apps_tree);
g_hash_table_remove_all (unique);
reread_entries (self, &(self->priv->cached_settings), unique, self->priv->settings_tree);
@@ -576,44 +583,6 @@ _shell_app_system_register_app (ShellAppSystem *self,
g_object_weak_ref (G_OBJECT (app), shell_app_system_on_app_weakref, ref);
}
-ShellAppInfo *
-shell_app_system_load_from_desktop_file (ShellAppSystem *system,
- const char *filename,
- GError **error)
-{
- ShellAppInfo *appinfo;
- GKeyFile *keyfile;
- char *full_path = NULL;
- gboolean success;
-
- keyfile = g_key_file_new ();
-
- if (strchr (filename, '/') != NULL)
- {
- success = g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, error);
- full_path = g_strdup (filename);
- }
- else
- {
- char *app_path = g_build_filename ("applications", filename, NULL);
- success = g_key_file_load_from_data_dirs (keyfile, app_path, &full_path,
- G_KEY_FILE_NONE, error);
- g_free (app_path);
- }
-
- if (!success)
- {
- g_key_file_free (keyfile);
- g_free (full_path);
- return NULL;
- }
-
- appinfo = shell_app_info_new_from_keyfile_take_ownership (keyfile, full_path);
- g_free (full_path);
-
- return appinfo;
-}
-
/**
* shell_app_system_create_from_window:
*
@@ -645,16 +614,13 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *name)
{
ShellApp *result;
- char **vendor_prefixes;
-
+ GSList *prefix;
result = shell_app_system_get_app (system, name);
if (result != NULL)
return result;
-
- for (vendor_prefixes = (char**)known_vendor_prefixes;
- *vendor_prefixes; vendor_prefixes++)
+ for (prefix = system->priv->known_vendor_prefixes; prefix; prefix = g_slist_next (prefix))
{
- char *tmpid = g_strjoin (NULL, *vendor_prefixes, "-", name, NULL);
+ char *tmpid = g_strconcat ((char*)prefix->data, name, NULL);
result = shell_app_system_get_app (system, tmpid);
g_free (tmpid);
if (result != NULL)
@@ -993,6 +959,115 @@ shell_app_info_get_id (ShellAppInfo *info)
return NULL;
}
+static char *
+shell_app_info_get_prefix (ShellAppInfo *info)
+{
+ char *prefix = NULL, *file_prefix = NULL;
+ const char *id;
+ GFile *file;
+ char *name;
+ int i = 0;
+
+ if (info->type != SHELL_APP_INFO_TYPE_ENTRY)
+ return NULL;
+
+ id = gmenu_tree_entry_get_desktop_file_id ((GMenuTreeEntry*)info->entry);
+ file = g_file_new_for_path (gmenu_tree_entry_get_desktop_file_path ((GMenuTreeEntry*)info->entry));
+ name = g_file_get_basename (file);
+
+ if (!name)
+ {
+ g_object_unref (file);
+ return NULL;
+ }
+ for (i = 0; vendor_prefixes[i]; i++)
+ {
+ if (g_str_has_prefix (name, vendor_prefixes[i]))
+ {
+ file_prefix = g_strdup (vendor_prefixes[i]);
+ break;
+ }
+ }
+
+ while (strcmp (name, id) != 0)
+ {
+ char *t;
+ char *pname;
+ GFile *parent = g_file_get_parent (file);
+
+ if (!parent)
+ {
+ g_warn_if_reached ();
+ break;
+ }
+
+ pname = g_file_get_basename (parent);
+ if (!pname)
+ {
+ g_object_unref (parent);
+ break;
+ }
+ if (!g_strstr_len (id, -1, pname))
+ {
+ /* handle */
+ char *t;
+ size_t name_len = strlen (name);
+ size_t id_len = strlen (id);
+ char *t_id = g_strdup (id);
+
+ t_id[id_len - name_len] = '\0';
+ t = g_strdup(t_id);
+ g_free (prefix);
+ g_free (t_id);
+ g_free (name);
+ name = g_strdup (id);
+ prefix = t;
+
+ g_object_unref (file);
+ file = parent;
+ g_free (pname);
+ g_free (file_prefix);
+ file_prefix = NULL;
+ break;
+ }
+
+ t = g_strconcat (pname, "-", name, NULL);
+ g_free (name);
+ name = t;
+
+ t = g_strconcat (pname, "-", prefix, NULL);
+ g_free (prefix);
+ prefix = t;
+
+ g_object_unref (file);
+ file = parent;
+ g_free (pname);
+ }
+
+ if (file)
+ g_object_unref (file);
+
+ if (strcmp (name, id) == 0)
+ {
+ g_free (name);
+ if (file_prefix && !prefix)
+ return file_prefix;
+ if (file_prefix)
+ {
+ char *t = g_strconcat (prefix, "-", file_prefix, NULL);
+ g_free (prefix);
+ g_free (file_prefix);
+ prefix = t;
+ }
+ return prefix;
+ }
+
+ g_free (name);
+ g_free (prefix);
+ g_free (file_prefix);
+ g_return_val_if_reached (NULL);
+}
+
#define DESKTOP_ENTRY_GROUP "Desktop Entry"
char *
@@ -1260,21 +1335,27 @@ shell_app_info_create_icon_texture (ShellAppInfo *info, float size)
GIcon *icon;
ClutterActor *ret;
+ ret = NULL;
+
if (info->type == SHELL_APP_INFO_TYPE_WINDOW)
{
- return st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (),
- G_OBJECT (info->window),
- "icon");
- }
-
- icon = shell_app_info_get_icon (info);
- if (icon == NULL)
- {
- ret = clutter_texture_new ();
- g_object_set (ret, "opacity", 0, "width", size, "height", size, NULL);
+ ret = st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (),
+ G_OBJECT (info->window),
+ "icon");
}
else
{
+ icon = shell_app_info_get_icon (info);
+ if (icon != NULL)
+ {
+ ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, (int)size);
+ g_object_unref (icon);
+ }
+ }
+
+ if (ret == NULL)
+ {
+ icon = g_themed_icon_new ("application-x-executable");
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, (int)size);
g_object_unref (icon);
}
@@ -1386,12 +1467,23 @@ shell_app_info_launch_full (ShellAppInfo *info,
shell_app = shell_app_system_get_app (shell_app_system_get_default (),
shell_app_info_get_id (info));
- ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
- G_APP_LAUNCH_CONTEXT (context),
- G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
- NULL, NULL,
- _gather_pid_callback, shell_app,
- error);
+ /* In the case where we know an app, we handle reaping the child internally,
+ * in the window tracker.
+ */
+ if (shell_app != NULL)
+ ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
+ G_APP_LAUNCH_CONTEXT (context),
+ G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD,
+ NULL, NULL,
+ _gather_pid_callback, shell_app,
+ error);
+ else
+ ret = g_desktop_app_info_launch_uris_as_manager (gapp, uris,
+ G_APP_LAUNCH_CONTEXT (context),
+ G_SPAWN_SEARCH_PATH,
+ NULL, NULL,
+ NULL, NULL,
+ error);
g_object_unref (G_OBJECT (gapp));
diff --git a/src/shell-app-system.h b/src/shell-app-system.h
index 3b615cecb..b53c78d6d 100644
--- a/src/shell-app-system.h
+++ b/src/shell-app-system.h
@@ -81,9 +81,6 @@ ShellApp *shell_app_system_get_app_for_window (ShellAppSystem *sel
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
const char *id);
-ShellAppInfo *shell_app_system_load_from_desktop_file (ShellAppSystem *system,
- const char *filename,
- GError **error);
ShellAppInfo *shell_app_system_create_from_window (ShellAppSystem *system,
MetaWindow *window);
diff --git a/src/shell-app.c b/src/shell-app.c
index 9ffe85654..7dff44106 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -4,6 +4,8 @@
#include
+#include
+
#include
#include "shell-app-private.h"
@@ -139,14 +141,26 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
app = data->app;
size = data->size;
- icon = shell_app_info_get_icon (app->info);
- if (icon == NULL)
- return COGL_INVALID_HANDLE;
+ info = NULL;
+
+ icon = shell_app_info_get_icon (app->info);
+ if (icon != NULL)
+ {
+ info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
+ icon, (int) (size + 0.5),
+ GTK_ICON_LOOKUP_FORCE_SIZE);
+ g_object_unref (icon);
+ }
+
+ if (info == NULL)
+ {
+ icon = g_themed_icon_new ("application-x-executable");
+ info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
+ icon, (int) (size + 0.5),
+ GTK_ICON_LOOKUP_FORCE_SIZE);
+ g_object_unref (icon);
+ }
- info = gtk_icon_theme_lookup_by_gicon (gtk_icon_theme_get_default (),
- icon, (int) (size + 0.5),
- GTK_ICON_LOOKUP_FORCE_SIZE);
- g_object_unref (icon);
if (info == NULL)
return COGL_INVALID_HANDLE;
@@ -427,13 +441,24 @@ shell_app_activate (ShellApp *app,
switch (app->state)
{
case SHELL_APP_STATE_STOPPED:
- /* TODO sensibly handle this error */
- shell_app_info_launch_full (app->info,
- 0,
- NULL,
- workspace,
- NULL,
- NULL);
+ {
+ GError *error = NULL;
+ if (!shell_app_info_launch_full (app->info,
+ 0,
+ NULL,
+ workspace,
+ NULL,
+ &error))
+ {
+ char *msg;
+ msg = g_strdup_printf (_("Failed to launch '%s'"), shell_app_get_name (app));
+ shell_global_notify_error (shell_global_get (),
+ msg,
+ error->message);
+ g_free (msg);
+ g_clear_error (&error);
+ }
+ }
break;
case SHELL_APP_STATE_STARTING:
break;
@@ -755,9 +780,6 @@ _shell_app_add_window (ShellApp *app,
g_object_freeze_notify (G_OBJECT (app));
- if (app->state != SHELL_APP_STATE_STARTING)
- shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
-
if (!app->running_state)
create_running_state (app);
@@ -770,6 +792,9 @@ _shell_app_add_window (ShellApp *app,
if (user_time > app->running_state->last_user_time)
app->running_state->last_user_time = user_time;
+ if (app->state != SHELL_APP_STATE_STARTING)
+ shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
+
g_object_thaw_notify (G_OBJECT (app));
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
diff --git a/src/shell-global.c b/src/shell-global.c
index b16758ff5..dcedf43f2 100644
--- a/src/shell-global.c
+++ b/src/shell-global.c
@@ -21,6 +21,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -102,6 +103,7 @@ enum
XDND_POSITION_CHANGED,
XDND_LEAVE,
XDND_ENTER,
+ NOTIFY_ERROR,
LAST_SIGNAL
};
@@ -293,6 +295,17 @@ shell_global_class_init (ShellGlobalClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ shell_global_signals[NOTIFY_ERROR] =
+ g_signal_new ("notify-error",
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ gi_cclosure_marshal_generic,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+
g_object_class_install_property (gobject_class,
PROP_OVERLAY_GROUP,
g_param_spec_object ("overlay-group",
@@ -871,6 +884,61 @@ shell_global_display_is_grabbed (ShellGlobal *global)
return meta_display_get_grab_op (display) != META_GRAB_OP_NONE;
}
+/**
+ * shell_global_create_pointer_barrier
+ * @global: a #ShellGlobal
+ * @x1: left X coordinate
+ * @y1: top Y coordinate
+ * @x2: right X coordinate
+ * @y2: bottom Y coordinate
+ * @directions: The directions we're allowed to pass through
+ *
+ * If supported by X creates a pointer barrier.
+ *
+ * Return value: value you can pass to shell_global_destroy_pointer_barrier()
+ */
+guint32
+shell_global_create_pointer_barrier (ShellGlobal *global,
+ int x1, int y1, int x2, int y2,
+ int directions)
+{
+#if XFIXES_MAJOR >= 5
+ Display *xdpy;
+
+ xdpy = meta_plugin_get_xdisplay (global->plugin);
+
+ return (guint32)
+ XFixesCreatePointerBarrier (xdpy, DefaultRootWindow(xdpy),
+ x1, y1,
+ x2, y2,
+ directions,
+ 0, NULL);
+#else
+ return 0;
+#endif
+}
+
+/**
+ * shell_global_destroy_pointer_barrier
+ * @global: a #ShellGlobal
+ * @barrier: a pointer barrier
+ *
+ * Destroys the @barrier created by shell_global_create_pointer_barrier().
+ */
+void
+shell_global_destroy_pointer_barrier (ShellGlobal *global, guint32 barrier)
+{
+#if XFIXES_MAJOR >= 5
+ Display *xdpy;
+
+ g_return_if_fail (barrier > 0);
+
+ xdpy = meta_plugin_get_xdisplay (global->plugin);
+ XFixesDestroyPointerBarrier (xdpy, (PointerBarrier)barrier);
+#endif
+}
+
+
/**
* shell_global_add_extension_importer:
* @target_object_script: JavaScript code evaluating to a target object
@@ -1238,6 +1306,25 @@ shell_global_maybe_gc (ShellGlobal *global)
gjs_context_maybe_gc (global->js_context);
}
+/**
+ * shell_global_notify_error:
+ * @global: a #ShellGlobal
+ * @msg: Error message
+ * @details: Error details
+ *
+ * Show a system error notification. Use this function
+ * when a user-initiated action results in a non-fatal problem
+ * from causes that may not be under system control. For
+ * example, an application crash.
+ */
+void
+shell_global_notify_error (ShellGlobal *global,
+ const char *msg,
+ const char *details)
+{
+ g_signal_emit_by_name (global, "notify-error", msg, details);
+}
+
static void
grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data)
{
@@ -1368,48 +1455,33 @@ shell_global_get_monitors (ShellGlobal *global)
MetaRectangle *
shell_global_get_primary_monitor (ShellGlobal *global)
{
- GdkScreen *screen = shell_global_get_gdk_screen (global);
- GdkRectangle gdk_rect;
+ MetaScreen *screen = shell_global_get_screen (global);
MetaRectangle rect;
gint primary = 0;
- /* gdk_screen_get_primary_monitor is only present in gtk-2.20+
- * and is in a useable state (supports heuristics and fallback modes)
- * starting with 2.20.1
- */
-#if !GTK_CHECK_VERSION (2, 20, 1)
- gint i;
- gchar *output_name = NULL;
- gint num_monitors = gdk_screen_get_n_monitors (screen);
-
- for (i = 0; i < num_monitors; i++)
- {
- /* Prefer the laptop's internal screen if present */
- output_name = gdk_screen_get_monitor_plug_name (screen, i);
- if (output_name)
- {
- gboolean is_lvds = g_ascii_strncasecmp (output_name, "LVDS", 4) == 0;
- g_free (output_name);
- if (is_lvds)
- {
- primary = i;
- break;
- }
- }
- }
-#else
- primary = gdk_screen_get_primary_monitor (screen);
-#endif
-
- gdk_screen_get_monitor_geometry (screen, primary, &gdk_rect);
- rect.x = gdk_rect.x;
- rect.y = gdk_rect.y;
- rect.width = gdk_rect.width;
- rect.height = gdk_rect.height;
+ primary = meta_screen_get_primary_monitor (screen);
+ meta_screen_get_monitor_geometry (screen, primary, &rect);
return meta_rectangle_copy (&rect);
}
+/**
+ * shell_global_get_primary_monitor_index:
+ * @global: the #ShellGlobal
+ *
+ * Gets the index of the primary monitor (the one that the
+ * panel is on).
+ *
+ * Return value: the index of the primary monitor
+ */
+int
+shell_global_get_primary_monitor_index (ShellGlobal *global)
+{
+ MetaScreen *screen = shell_global_get_screen (global);
+
+ return meta_screen_get_primary_monitor (screen);
+}
+
/**
* shell_global_get_focus_monitor:
* @global: the #ShellGlobal
@@ -1473,6 +1545,48 @@ shell_global_get_pointer (ShellGlobal *global,
*mods = raw_mods & GDK_MODIFIER_MASK;
}
+/**
+ * shell_global_sync_pointer:
+ * @global: the #ShellGlobal
+ *
+ * Ensures that clutter is aware of the current pointer position,
+ * causing enter and leave events to be emitted if the pointer moved
+ * behind our back (ie, during a pointer grab).
+ */
+void
+shell_global_sync_pointer (ShellGlobal *global)
+{
+ int x, y;
+ GdkModifierType mods;
+ ClutterMotionEvent event;
+
+ gdk_display_get_pointer (gdk_display_get_default (), NULL, &x, &y, &mods);
+
+ event.type = CLUTTER_MOTION;
+ event.time = shell_global_get_current_time (global);
+ event.flags = 0;
+ /* This is wrong: we should be setting event.stage to NULL if the
+ * pointer is not inside the bounds of the stage given the current
+ * stage_input_mode. For our current purposes however, this works.
+ */
+ event.stage = CLUTTER_STAGE (meta_plugin_get_stage (global->plugin));
+ event.x = x;
+ event.y = y;
+ event.modifier_state = mods;
+ event.axes = NULL;
+ event.device = clutter_device_manager_get_core_device (clutter_device_manager_get_default (),
+ CLUTTER_POINTER_DEVICE);
+
+ /* Leaving event.source NULL will force clutter to look it up, which
+ * will generate enter/leave events as a side effect, if they are
+ * needed. We need a better way to do this though... see
+ * http://bugzilla.clutter-project.org/show_bug.cgi?id=2615.
+ */
+ event.source = NULL;
+
+ clutter_event_put ((ClutterEvent *)&event);
+}
+
/**
* shell_get_event_state:
* @event: a #ClutterEvent
@@ -2048,3 +2162,70 @@ shell_global_launch_calendar_server (ShellGlobal *global)
g_free (calendar_server_exe);
}
+
+static void
+shell_global_get_self_contact_features_cb (TpConnection *connection,
+ guint n_contacts,
+ TpContact * const *contacts,
+ const GError *error,
+ gpointer user_data,
+ GObject *weak_object)
+{
+ if (error != NULL) {
+ g_print ("Failed to upgrade self contact: %s", error->message);
+ return;
+ }
+ ((ShellGetSelfContactFeaturesCb)user_data)(connection, *contacts);
+}
+
+/**
+ * shell_get_self_contact_features:
+ * @self: A connection, which must be ready
+ * @n_features: Number of features in features
+ * @features: (array length=n_features) (allow-none) (element-type uint):
+ * Array of features
+ * @callback: (scope async): User callback to run when the contact is ready
+ *
+ * Wrap tp_connection_upgrade_contacts due to the lack of support for
+ * proper arrays arguments in GJS.
+ */
+void
+shell_get_self_contact_features (TpConnection *self,
+ guint n_features,
+ const TpContactFeature *features,
+ ShellGetSelfContactFeaturesCb callback)
+{
+ TpContact *self_contact = tp_connection_get_self_contact (self);
+
+ tp_connection_upgrade_contacts (self, 1, &self_contact,
+ n_features, features,
+ shell_global_get_self_contact_features_cb,
+ callback, NULL, NULL);
+}
+
+/**
+ * shell_get_contact_events:
+ * @log_manager: A #TplLogManager
+ * @account: A #TpAccount
+ * @entity: A #TplEntity
+ * @num_events: The number of events to retrieve
+ * @callback: (scope async): User callback to run when the contact is ready
+ *
+ * Wrap tpl_log_manager_get_filtered_events_async because gjs cannot support
+ * multiple callbacks in the same function call.
+ */
+void
+shell_get_contact_events (TplLogManager *log_manager,
+ TpAccount *account,
+ TplEntity *entity,
+ guint num_events,
+ GAsyncReadyCallback callback)
+{
+ tpl_log_manager_get_filtered_events_async (log_manager,
+ account,
+ entity,
+ TPL_EVENT_MASK_TEXT,
+ num_events,
+ NULL, NULL,
+ callback, NULL);
+}
diff --git a/src/shell-global.h b/src/shell-global.h
index 42909801c..6e16abee9 100644
--- a/src/shell-global.h
+++ b/src/shell-global.h
@@ -8,6 +8,7 @@
#include
#include
#include
+#include
G_BEGIN_DECLS
@@ -99,12 +100,20 @@ void shell_global_format_time_relative_pretty (ShellGlobal *global, guint delta,
GSList *shell_global_get_monitors (ShellGlobal *global);
MetaRectangle *shell_global_get_primary_monitor (ShellGlobal *global);
+int shell_global_get_primary_monitor_index (ShellGlobal *global);
MetaRectangle *shell_global_get_focus_monitor (ShellGlobal *global);
-void shell_global_get_pointer (ShellGlobal *global,
- int *x,
- int *y,
- ClutterModifierType *mods);
+guint32 shell_global_create_pointer_barrier (ShellGlobal *global,
+ int x1, int y1, int x2, int y2,
+ int directions);
+void shell_global_destroy_pointer_barrier (ShellGlobal *global,
+ guint32 barrier);
+
+void shell_global_get_pointer (ShellGlobal *global,
+ int *x,
+ int *y,
+ ClutterModifierType *mods);
+void shell_global_sync_pointer (ShellGlobal *global);
GSettings *shell_global_get_settings (ShellGlobal *global);
@@ -142,6 +151,11 @@ void shell_global_play_theme_sound (ShellGlobal *global,
void shell_global_cancel_theme_sound (ShellGlobal *global,
guint id);
+
+void shell_global_notify_error (ShellGlobal *global,
+ const char *msg,
+ const char *details);
+
void shell_global_init_xdnd (ShellGlobal *global);
typedef void (*ShellGetTpContactCb) (TpConnection *connection,
@@ -157,6 +171,20 @@ void shell_get_tp_contacts (TpConnection *self,
void shell_global_launch_calendar_server (ShellGlobal *global);
+typedef void (*ShellGetSelfContactFeaturesCb) (TpConnection *connection,
+ TpContact *contact);
+
+void shell_get_self_contact_features (TpConnection *self,
+ guint n_features,
+ const TpContactFeature *features,
+ ShellGetSelfContactFeaturesCb callback);
+
+void shell_get_contact_events (TplLogManager *log_manager,
+ TpAccount *account,
+ TplEntity *entity,
+ guint num_events,
+ GAsyncReadyCallback callback);
+
G_END_DECLS
#endif /* __SHELL_GLOBAL_H__ */
diff --git a/src/shell-mobile-providers.c b/src/shell-mobile-providers.c
new file mode 100644
index 000000000..5d985ed09
--- /dev/null
+++ b/src/shell-mobile-providers.c
@@ -0,0 +1,816 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2009 Novell, Inc.
+ * Author: Tambet Ingo (tambet@gmail.com).
+ *
+ * Copyright (C) 2009 - 2010 Red Hat, Inc.
+ */
+
+#include "config.h"
+
+#include
+#include
+#include
+
+#include
+
+#include "shell-mobile-providers.h"
+
+#ifndef MOBILE_BROADBAND_PROVIDER_INFO
+#define MOBILE_BROADBAND_PROVIDER_INFO DATADIR "/mobile-broadband-provider-info/serviceproviders.xml"
+#endif
+
+#define ISO_3166_COUNTRY_CODES DATADIR "/zoneinfo/iso3166.tab"
+
+
+
+static GHashTable *
+read_country_codes (void)
+{
+ GHashTable *table;
+ GIOChannel *channel;
+ GString *buffer;
+ GError *error = NULL;
+ GIOStatus status;
+
+ channel = g_io_channel_new_file (ISO_3166_COUNTRY_CODES, "r", &error);
+ if (!channel) {
+ if (error) {
+ g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": %s", error->message);
+ g_error_free (error);
+ } else
+ g_warning ("Could not read " ISO_3166_COUNTRY_CODES ": Unknown error");
+
+ return NULL;
+ }
+
+ table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ buffer = g_string_sized_new (32);
+
+ status = G_IO_STATUS_NORMAL;
+ while (status == G_IO_STATUS_NORMAL) {
+ status = g_io_channel_read_line_string (channel, buffer, NULL, &error);
+
+ switch (status) {
+ case G_IO_STATUS_NORMAL:
+ if (buffer->str[0] != '#') {
+ char **pieces;
+
+ pieces = g_strsplit (buffer->str, "\t", 2);
+
+ /* Hack for rh#556292; iso3166.tab is just wrong */
+ pieces[1] = pieces[1] ? g_strchomp (pieces[1]) : NULL;
+ if (pieces[1] && !strcmp (pieces[1], "Britain (UK)")) {
+ g_free (pieces[1]);
+ pieces[1] = g_strdup (_("United Kingdom"));
+ }
+
+ g_hash_table_insert (table, pieces[0], pieces[1]);
+ g_free (pieces);
+ }
+
+ g_string_truncate (buffer, 0);
+ break;
+ case G_IO_STATUS_EOF:
+ break;
+ case G_IO_STATUS_ERROR:
+ g_warning ("Error while reading: %s", error->message);
+ g_error_free (error);
+ break;
+ case G_IO_STATUS_AGAIN:
+ /* FIXME: Try again a few times, but really, it never happes, right? */
+ break;
+ }
+ }
+
+ g_string_free (buffer, TRUE);
+ g_io_channel_unref (channel);
+
+ return table;
+}
+
+/* XML Parser */
+
+typedef enum {
+ PARSER_TOPLEVEL = 0,
+ PARSER_COUNTRY,
+ PARSER_PROVIDER,
+ PARSER_METHOD_GSM,
+ PARSER_METHOD_GSM_APN,
+ PARSER_METHOD_CDMA,
+ PARSER_ERROR
+} MobileContextState;
+
+typedef struct {
+ GHashTable *country_codes;
+ GHashTable *table;
+
+ char *current_country;
+ GSList *current_providers;
+ ShellMobileProvider *current_provider;
+ ShellMobileAccessMethod *current_method;
+
+ char *text_buffer;
+ MobileContextState state;
+} MobileParser;
+
+static ShellGsmMccMnc *
+mcc_mnc_new (const char *mcc, const char *mnc)
+{
+ ShellGsmMccMnc *m;
+
+ m = g_slice_new (ShellGsmMccMnc);
+ m->mcc = g_strstrip (g_strdup (mcc));
+ m->mnc = g_strstrip (g_strdup (mnc));
+ return m;
+}
+
+/* added in porting */
+static ShellGsmMccMnc *
+mcc_mnc_copy (const ShellGsmMccMnc *other) {
+ ShellGsmMccMnc *ret;
+
+ ret = g_slice_new (ShellGsmMccMnc);
+ ret->mcc = g_strdup (other->mcc);
+ ret->mnc = g_strdup (other->mnc);
+ return ret;
+}
+
+static void
+mcc_mnc_free (ShellGsmMccMnc *m)
+{
+ g_return_if_fail (m != NULL);
+ g_free (m->mcc);
+ g_free (m->mnc);
+ g_slice_free (ShellGsmMccMnc, m);
+}
+
+/* added in porting */
+G_DEFINE_BOXED_TYPE (ShellGsmMccMnc, shell_gsm_mcc_mnc, mcc_mnc_copy, mcc_mnc_free)
+
+static ShellMobileAccessMethod *
+access_method_new (void)
+{
+ ShellMobileAccessMethod *method;
+
+ method = g_slice_new0 (ShellMobileAccessMethod);
+ method->refs = 1;
+ method->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) g_free);
+
+ return method;
+}
+
+ShellMobileAccessMethod *
+shell_mobile_access_method_ref (ShellMobileAccessMethod *method)
+{
+ g_return_val_if_fail (method != NULL, NULL);
+ g_return_val_if_fail (method->refs > 0, NULL);
+
+ method->refs++;
+
+ return method;
+}
+
+void
+shell_mobile_access_method_unref (ShellMobileAccessMethod *method)
+{
+ g_return_if_fail (method != NULL);
+ g_return_if_fail (method->refs > 0);
+
+ if (--method->refs == 0) {
+ g_free (method->name);
+ g_hash_table_destroy (method->lcl_names);
+ g_free (method->username);
+ g_free (method->password);
+ g_free (method->gateway);
+ g_free (method->gsm_apn);
+ g_slist_foreach (method->dns, (GFunc) g_free, NULL);
+ g_slist_free (method->dns);
+
+ g_slice_free (ShellMobileAccessMethod, method);
+ }
+}
+
+GType
+shell_mobile_access_method_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ type = g_boxed_type_register_static ("ShellMobileAccessMethod",
+ (GBoxedCopyFunc) shell_mobile_access_method_ref,
+ (GBoxedFreeFunc) shell_mobile_access_method_unref);
+ }
+ return type;
+}
+
+
+static ShellMobileProvider *
+provider_new (void)
+{
+ ShellMobileProvider *provider;
+
+ provider = g_slice_new0 (ShellMobileProvider);
+ provider->refs = 1;
+ provider->lcl_names = g_hash_table_new_full (g_str_hash, g_str_equal,
+ (GDestroyNotify) g_free,
+ (GDestroyNotify) g_free);
+
+ return provider;
+}
+
+ShellMobileProvider *
+shell_mobile_provider_ref (ShellMobileProvider *provider)
+{
+ provider->refs++;
+
+ return provider;
+}
+
+void
+shell_mobile_provider_unref (ShellMobileProvider *provider)
+{
+ if (--provider->refs == 0) {
+ g_free (provider->name);
+ g_hash_table_destroy (provider->lcl_names);
+
+ g_slist_foreach (provider->methods, (GFunc) shell_mobile_access_method_unref, NULL);
+ g_slist_free (provider->methods);
+
+ g_slist_foreach (provider->gsm_mcc_mnc, (GFunc) mcc_mnc_free, NULL);
+ g_slist_free (provider->gsm_mcc_mnc);
+
+ g_slist_free (provider->cdma_sid);
+
+ g_slice_free (ShellMobileProvider, provider);
+ }
+}
+
+GType
+shell_mobile_provider_get_type (void)
+{
+ static GType type = 0;
+
+ if (G_UNLIKELY (type == 0)) {
+ type = g_boxed_type_register_static ("ShellMobileProvider",
+ (GBoxedCopyFunc) shell_mobile_provider_ref,
+ (GBoxedFreeFunc) shell_mobile_provider_unref);
+ }
+ return type;
+}
+
+static void
+provider_list_free (gpointer data)
+{
+ GSList *list = (GSList *) data;
+
+ while (list) {
+ shell_mobile_provider_unref ((ShellMobileProvider *) list->data);
+ list = g_slist_delete_link (list, list);
+ }
+}
+
+static void
+parser_toplevel_start (MobileParser *parser,
+ const char *name,
+ const char **attribute_names,
+ const char **attribute_values)
+{
+ int i;
+
+ if (!strcmp (name, "serviceproviders")) {
+ for (i = 0; attribute_names && attribute_names[i]; i++) {
+ if (!strcmp (attribute_names[i], "format")) {
+ if (strcmp (attribute_values[i], "2.0")) {
+ g_warning ("%s: mobile broadband provider database format '%s'"
+ " not supported.", __func__, attribute_values[i]);
+ parser->state = PARSER_ERROR;
+ break;
+ }
+ }
+ }
+ } else if (!strcmp (name, "country")) {
+ for (i = 0; attribute_names && attribute_names[i]; i++) {
+ if (!strcmp (attribute_names[i], "code")) {
+ char *country_code;
+ char *country;
+
+ country_code = g_ascii_strup (attribute_values[i], -1);
+ country = g_hash_table_lookup (parser->country_codes, country_code);
+ if (country) {
+ parser->current_country = g_strdup (country);
+ g_free (country_code);
+ } else
+ parser->current_country = country_code;
+
+ parser->state = PARSER_COUNTRY;
+ break;
+ }
+ }
+ }
+}
+
+static void
+parser_country_start (MobileParser *parser,
+ const char *name,
+ const char **attribute_names,
+ const char **attribute_values)
+{
+ if (!strcmp (name, "provider")) {
+ parser->state = PARSER_PROVIDER;
+ parser->current_provider = provider_new ();
+ }
+}
+
+static void
+parser_provider_start (MobileParser *parser,
+ const char *name,
+ const char **attribute_names,
+ const char **attribute_values)
+{
+ if (!strcmp (name, "gsm"))
+ parser->state = PARSER_METHOD_GSM;
+ else if (!strcmp (name, "cdma")) {
+ parser->state = PARSER_METHOD_CDMA;
+ parser->current_method = access_method_new ();
+ }
+}
+
+static void
+parser_gsm_start (MobileParser *parser,
+ const char *name,
+ const char **attribute_names,
+ const char **attribute_values)
+{
+ if (!strcmp (name, "network-id")) {
+ const char *mcc = NULL, *mnc = NULL;
+ int i;
+
+ for (i = 0; attribute_names && attribute_names[i]; i++) {
+ if (!strcmp (attribute_names[i], "mcc"))
+ mcc = attribute_values[i];
+ else if (!strcmp (attribute_names[i], "mnc"))
+ mnc = attribute_values[i];
+
+ if (mcc && strlen (mcc) && mnc && strlen (mnc)) {
+ parser->current_provider->gsm_mcc_mnc = g_slist_prepend (parser->current_provider->gsm_mcc_mnc,
+ mcc_mnc_new (mcc, mnc));
+ break;
+ }
+ }
+ } else if (!strcmp (name, "apn")) {
+ int i;
+
+ for (i = 0; attribute_names && attribute_names[i]; i++) {
+ if (!strcmp (attribute_names[i], "value")) {
+
+ parser->state = PARSER_METHOD_GSM_APN;
+ parser->current_method = access_method_new ();
+ parser->current_method->gsm_apn = g_strstrip (g_strdup (attribute_values[i]));
+ break;
+ }
+ }
+ }
+}
+
+static void
+parser_cdma_start (MobileParser *parser,
+ const char *name,
+ const char **attribute_names,
+ const char **attribute_values)
+{
+ if (!strcmp (name, "sid")) {
+ int i;
+
+ for (i = 0; attribute_names && attribute_names[i]; i++) {
+ if (!strcmp (attribute_names[i], "value")) {
+ unsigned long tmp;
+
+ errno = 0;
+ tmp = strtoul (attribute_values[i], NULL, 10);
+ if (errno == 0 && tmp > 0)
+ parser->current_provider->cdma_sid = g_slist_prepend (parser->current_provider->cdma_sid,
+ GUINT_TO_POINTER ((guint32) tmp));
+ break;
+ }
+ }
+ }
+}
+
+static void
+mobile_parser_start_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer data,
+ GError **error)
+{
+ MobileParser *parser = (MobileParser *) data;
+
+ if (parser->text_buffer) {
+ g_free (parser->text_buffer);
+ parser->text_buffer = NULL;
+ }
+
+ switch (parser->state) {
+ case PARSER_TOPLEVEL:
+ parser_toplevel_start (parser, element_name, attribute_names, attribute_values);
+ break;
+ case PARSER_COUNTRY:
+ parser_country_start (parser, element_name, attribute_names, attribute_values);
+ break;
+ case PARSER_PROVIDER:
+ parser_provider_start (parser, element_name, attribute_names, attribute_values);
+ break;
+ case PARSER_METHOD_GSM:
+ parser_gsm_start (parser, element_name, attribute_names, attribute_values);
+ break;
+ case PARSER_METHOD_CDMA:
+ parser_cdma_start (parser, element_name, attribute_names, attribute_values);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+parser_country_end (MobileParser *parser,
+ const char *name)
+{
+ if (!strcmp (name, "country")) {
+ g_hash_table_insert (parser->table, parser->current_country, parser->current_providers);
+ parser->current_country = NULL;
+ parser->current_providers = NULL;
+ parser->text_buffer = NULL;
+ parser->state = PARSER_TOPLEVEL;
+ }
+}
+
+static void
+parser_provider_end (MobileParser *parser,
+ const char *name)
+{
+ if (!strcmp (name, "name")) {
+ if (!parser->current_provider->name) {
+ /* Use the first one. */
+ parser->current_provider->name = parser->text_buffer;
+ parser->text_buffer = NULL;
+ }
+ } else if (!strcmp (name, "provider")) {
+ parser->current_provider->methods = g_slist_reverse (parser->current_provider->methods);
+
+ parser->current_provider->gsm_mcc_mnc = g_slist_reverse (parser->current_provider->gsm_mcc_mnc);
+ parser->current_provider->cdma_sid = g_slist_reverse (parser->current_provider->cdma_sid);
+
+ parser->current_providers = g_slist_prepend (parser->current_providers, parser->current_provider);
+ parser->current_provider = NULL;
+ parser->text_buffer = NULL;
+ parser->state = PARSER_COUNTRY;
+ }
+}
+
+static void
+parser_gsm_end (MobileParser *parser,
+ const char *name)
+{
+ if (!strcmp (name, "gsm")) {
+ parser->text_buffer = NULL;
+ parser->state = PARSER_PROVIDER;
+ }
+}
+
+static void
+parser_gsm_apn_end (MobileParser *parser,
+ const char *name)
+{
+ if (!strcmp (name, "name")) {
+ if (!parser->current_method->name) {
+ /* Use the first one. */
+ parser->current_method->name = parser->text_buffer;
+ parser->text_buffer = NULL;
+ }
+ } else if (!strcmp (name, "username")) {
+ parser->current_method->username = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "password")) {
+ parser->current_method->password = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "dns")) {
+ parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "gateway")) {
+ parser->current_method->gateway = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "apn")) {
+ parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM;
+ parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
+
+ if (!parser->current_method->name)
+ parser->current_method->name = g_strdup (_("Default"));
+
+ parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
+ parser->current_method);
+ parser->current_method = NULL;
+ parser->text_buffer = NULL;
+ parser->state = PARSER_METHOD_GSM;
+ }
+}
+
+static void
+parser_cdma_end (MobileParser *parser,
+ const char *name)
+{
+ if (!strcmp (name, "username")) {
+ parser->current_method->username = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "password")) {
+ parser->current_method->password = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "dns")) {
+ parser->current_method->dns = g_slist_prepend (parser->current_method->dns, parser->text_buffer);
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "gateway")) {
+ parser->current_method->gateway = parser->text_buffer;
+ parser->text_buffer = NULL;
+ } else if (!strcmp (name, "cdma")) {
+ parser->current_method->type = SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA;
+ parser->current_method->dns = g_slist_reverse (parser->current_method->dns);
+
+ if (!parser->current_method->name)
+ parser->current_method->name = g_strdup (parser->current_provider->name);
+
+ parser->current_provider->methods = g_slist_prepend (parser->current_provider->methods,
+ parser->current_method);
+ parser->current_method = NULL;
+ parser->text_buffer = NULL;
+ parser->state = PARSER_PROVIDER;
+ }
+}
+
+static void
+mobile_parser_end_element (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer data,
+ GError **error)
+{
+ MobileParser *parser = (MobileParser *) data;
+
+ switch (parser->state) {
+ case PARSER_COUNTRY:
+ parser_country_end (parser, element_name);
+ break;
+ case PARSER_PROVIDER:
+ parser_provider_end (parser, element_name);
+ break;
+ case PARSER_METHOD_GSM:
+ parser_gsm_end (parser, element_name);
+ break;
+ case PARSER_METHOD_GSM_APN:
+ parser_gsm_apn_end (parser, element_name);
+ break;
+ case PARSER_METHOD_CDMA:
+ parser_cdma_end (parser, element_name);
+ break;
+ default:
+ break;
+ }
+}
+
+static void
+mobile_parser_characters (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer data,
+ GError **error)
+{
+ MobileParser *parser = (MobileParser *) data;
+
+ g_free (parser->text_buffer);
+ parser->text_buffer = g_strdup (text);
+}
+
+static const GMarkupParser mobile_parser = {
+ mobile_parser_start_element,
+ mobile_parser_end_element,
+ mobile_parser_characters,
+ NULL, /* passthrough */
+ NULL /* error */
+};
+
+/**
+ * shell_mobile_providers_parse:
+ * @out_ccs: (out) (allow-none): (element-type utf8 utf8): a #GHashTable containing
+ * country codes
+ *
+ * Returns: (element-type utf8 GList) (transfer container): a
+ * hash table where keys are country names 'char *', values are a 'GSList *'
+ * of 'ShellMobileProvider *'. Everything is destroyed with g_hash_table_destroy ().
+*/
+GHashTable *
+shell_mobile_providers_parse (GHashTable **out_ccs)
+{
+ GMarkupParseContext *ctx;
+ GIOChannel *channel;
+ MobileParser parser;
+ GError *error = NULL;
+ char buffer[4096];
+ GIOStatus status;
+ gsize len = 0;
+
+ memset (&parser, 0, sizeof (MobileParser));
+
+ parser.country_codes = read_country_codes ();
+ if (!parser.country_codes)
+ goto out;
+
+ channel = g_io_channel_new_file (MOBILE_BROADBAND_PROVIDER_INFO, "r", &error);
+ if (!channel) {
+ if (error) {
+ g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": %s", error->message);
+ g_error_free (error);
+ } else
+ g_warning ("Could not read " MOBILE_BROADBAND_PROVIDER_INFO ": Unknown error");
+
+ goto out;
+ }
+
+ parser.table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, provider_list_free);
+ parser.state = PARSER_TOPLEVEL;
+
+ ctx = g_markup_parse_context_new (&mobile_parser, 0, &parser, NULL);
+
+ status = G_IO_STATUS_NORMAL;
+ while (status == G_IO_STATUS_NORMAL) {
+ status = g_io_channel_read_chars (channel, buffer, sizeof (buffer), &len, &error);
+
+ switch (status) {
+ case G_IO_STATUS_NORMAL:
+ if (!g_markup_parse_context_parse (ctx, buffer, len, &error)) {
+ status = G_IO_STATUS_ERROR;
+ g_warning ("Error while parsing XML: %s", error->message);
+ g_error_free (error);;
+ }
+ break;
+ case G_IO_STATUS_EOF:
+ break;
+ case G_IO_STATUS_ERROR:
+ g_warning ("Error while reading: %s", error->message);
+ g_error_free (error);
+ break;
+ case G_IO_STATUS_AGAIN:
+ /* FIXME: Try again a few times, but really, it never happes, right? */
+ break;
+ }
+ }
+
+ g_io_channel_unref (channel);
+ g_markup_parse_context_free (ctx);
+
+ if (parser.current_provider) {
+ g_warning ("pending current provider");
+ shell_mobile_provider_unref (parser.current_provider);
+ }
+
+ if (parser.current_providers) {
+ g_warning ("pending current providers");
+ provider_list_free (parser.current_providers);
+ }
+
+ g_free (parser.current_country);
+ g_free (parser.text_buffer);
+
+ out:
+ if (parser.country_codes) {
+ if (out_ccs)
+ *out_ccs = parser.country_codes;
+ else
+ g_hash_table_destroy (parser.country_codes);
+ }
+
+ return parser.table;
+}
+
+static void
+dump_generic (ShellMobileAccessMethod *method)
+{
+ GSList *iter;
+ GString *dns;
+
+ g_print (" username: %s\n", method->username ? method->username : "");
+ g_print (" password: %s\n", method->password ? method->password : "");
+
+ dns = g_string_new (NULL);
+ for (iter = method->dns; iter; iter = g_slist_next (iter))
+ g_string_append_printf (dns, "%s%s", dns->len ? ", " : "", (char *) iter->data);
+ g_print (" dns : %s\n", dns->str);
+ g_string_free (dns, TRUE);
+
+ g_print (" gateway : %s\n", method->gateway ? method->gateway : "");
+}
+
+static void
+dump_cdma (ShellMobileAccessMethod *method)
+{
+ g_print (" CDMA: %s\n", method->name);
+
+ dump_generic (method);
+}
+
+static void
+dump_gsm (ShellMobileAccessMethod *method)
+{
+ g_print (" APN: %s (%s)\n", method->name, method->gsm_apn);
+
+ dump_generic (method);
+}
+
+static void
+dump_country (gpointer key, gpointer value, gpointer user_data)
+{
+ GSList *citer, *miter;
+
+ for (citer = value; citer; citer = g_slist_next (citer)) {
+ ShellMobileProvider *provider = citer->data;
+
+ g_print ("Provider: %s (%s)\n", provider->name, (const char *) key);
+ for (miter = provider->methods; miter; miter = g_slist_next (miter)) {
+ ShellMobileAccessMethod *method = miter->data;
+ GSList *liter;
+
+
+ for (liter = provider->gsm_mcc_mnc; liter; liter = g_slist_next (liter)) {
+ ShellGsmMccMnc *m = liter->data;
+ g_print (" MCC/MNC: %s-%s\n", m->mcc, m->mnc);
+ }
+
+ for (liter = provider->cdma_sid; liter; liter = g_slist_next (liter))
+ g_print (" SID: %d\n", GPOINTER_TO_UINT (liter->data));
+
+ switch (method->type) {
+ case SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA:
+ dump_cdma (method);
+ break;
+ case SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM:
+ dump_gsm (method);
+ break;
+ default:
+ break;
+ }
+ g_print ("\n");
+ }
+ }
+}
+
+void
+shell_mobile_providers_dump (GHashTable *providers)
+{
+ g_return_if_fail (providers != NULL);
+ g_hash_table_foreach (providers, dump_country, NULL);
+}
+
+/* All the following don't exist in nm-applet, because C doesn't need
+ those. They're only needed for the introspection annotations
+*/
+
+/**
+ * shell_mobile_provider_get_gsm_mcc_mnc:
+ * @provider: a #ShellMobileProvider
+ *
+ * Returns: (element-type Shell.GsmMccMnc) (transfer none): the
+ * list of #ShellGsmMccMnc this provider exposes
+ */
+GSList *
+shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider)
+{
+ return provider->gsm_mcc_mnc;
+}
+
+/**
+ * shell_mobile_provider_get_cdma_sid:
+ * @provider: a #ShellMobileProvider
+ *
+ * Returns: (element-type guint32) (transfer none): the
+ * list of CDMA sids this provider exposes
+ */
+GSList *
+shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider)
+{
+ return provider->cdma_sid;
+}
diff --git a/src/shell-mobile-providers.h b/src/shell-mobile-providers.h
new file mode 100644
index 000000000..d70b8e2f0
--- /dev/null
+++ b/src/shell-mobile-providers.h
@@ -0,0 +1,96 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright (C) 2009 Novell, Inc.
+ * Author: Tambet Ingo (tambet@gmail.com).
+ *
+ * Copyright (C) 2009 - 2010 Red Hat, Inc.
+ *
+ * Ported to GNOME Shell by Giovanni Campagna
+ * Porting consisted only in replacing nmn with shell, to be compatible with
+ * GObject Introspection namespacing
+ */
+
+#ifndef SHELL_MOBILE_PROVIDERS_H
+#define SHELL_MOBILE_PROVIDERS_H
+
+#include
+#include
+
+#define SHELL_TYPE_MOBILE_PROVIDER (shell_mobile_provider_get_type ())
+#define SHELL_TYPE_MOBILE_ACCESS_METHOD (shell_mobile_access_method_get_type ())
+
+typedef enum {
+ SHELL_MOBILE_ACCESS_METHOD_TYPE_UNKNOWN = 0,
+ SHELL_MOBILE_ACCESS_METHOD_TYPE_GSM,
+ SHELL_MOBILE_ACCESS_METHOD_TYPE_CDMA
+} ShellMobileAccessMethodType;
+
+typedef struct {
+ char *mcc;
+ char *mnc;
+} ShellGsmMccMnc;
+
+typedef struct {
+ char *name;
+ /* maps lang (char *) -> name (char *) */
+ GHashTable *lcl_names;
+
+ char *username;
+ char *password;
+ char *gateway;
+ GSList *dns; /* GSList of 'char *' */
+
+ /* Only used with SHELL_PROVIDER_TYPE_GSM */
+ char *gsm_apn;
+
+ ShellMobileAccessMethodType type;
+
+ gint refs;
+} ShellMobileAccessMethod;
+
+typedef struct {
+ char *name;
+ /* maps lang (char *) -> name (char *) */
+ GHashTable *lcl_names;
+
+ GSList *methods; /* GSList of ShellMobileAccessMethod */
+
+ GSList *gsm_mcc_mnc; /* GSList of ShellGsmMccMnc */
+ GSList *cdma_sid; /* GSList of guint32 */
+
+ gint refs;
+} ShellMobileProvider;
+
+
+GType shell_gsm_mcc_mnc_get_type (void); /* added in porting */
+GType shell_mobile_provider_get_type (void);
+GType shell_mobile_access_method_get_type (void);
+
+ShellMobileProvider *shell_mobile_provider_ref (ShellMobileProvider *provider);
+void shell_mobile_provider_unref (ShellMobileProvider *provider);
+GSList * shell_mobile_provider_get_gsm_mcc_mnc (ShellMobileProvider *provider);
+GSList * shell_mobile_provider_get_cdma_sid (ShellMobileProvider *provider);
+
+ShellMobileAccessMethod *shell_mobile_access_method_ref (ShellMobileAccessMethod *method);
+void shell_mobile_access_method_unref (ShellMobileAccessMethod *method);
+
+GHashTable *shell_mobile_providers_parse (GHashTable **out_ccs);
+
+void shell_mobile_providers_dump (GHashTable *providers);
+
+#endif /* SHELL_MOBILE_PROVIDERS_H */
diff --git a/src/shell-tray-icon.c b/src/shell-tray-icon.c
index 079a48e51..08bffa8b7 100644
--- a/src/shell-tray-icon.c
+++ b/src/shell-tray-icon.c
@@ -165,3 +165,76 @@ shell_tray_icon_new (ShellEmbeddedWindow *window)
"window", window,
NULL);
}
+
+/**
+ * shell_tray_icon_click:
+ * @icon: a #ShellTrayIcon
+ * @event: the #ClutterEvent triggering the fake click
+ *
+ * Fakes a press and release on @icon. @event must be a
+ * %CLUTTER_BUTTON_RELEASE event. Its relevant details will be passed
+ * on to the icon, but its coordinates will be ignored; the click is
+ * always made on the center of @icon.
+ */
+void
+shell_tray_icon_click (ShellTrayIcon *icon,
+ ClutterEvent *event)
+{
+ XButtonEvent xbevent;
+ XCrossingEvent xcevent;
+ GdkWindow *remote_window;
+ GdkScreen *screen;
+ int x_root, y_root;
+ Display *xdisplay;
+ Window xwindow, xrootwindow;
+
+ g_return_if_fail (clutter_event_type (event) == CLUTTER_BUTTON_RELEASE);
+
+ gdk_error_trap_push ();
+
+ remote_window = gtk_socket_get_plug_window (GTK_SOCKET (icon->priv->socket));
+ xwindow = GDK_WINDOW_XID (remote_window);
+ xdisplay = GDK_WINDOW_XDISPLAY (remote_window);
+ screen = gdk_window_get_screen (remote_window);
+ xrootwindow = GDK_WINDOW_XID (gdk_screen_get_root_window (screen));
+ gdk_window_get_origin (remote_window, &x_root, &y_root);
+
+ /* First make the icon believe the pointer is inside it */
+ xcevent.type = EnterNotify;
+ xcevent.window = xwindow;
+ xcevent.root = xrootwindow;
+ xcevent.subwindow = None;
+ xcevent.time = clutter_event_get_time (event);
+ xcevent.x = gdk_window_get_width (remote_window) / 2;
+ xcevent.y = gdk_window_get_height (remote_window) / 2;
+ xcevent.x_root = x_root + xcevent.x;
+ xcevent.y_root = y_root + xcevent.y;
+ xcevent.mode = NotifyNormal;
+ xcevent.detail = NotifyNonlinear;
+ xcevent.same_screen = True;
+ XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xcevent);
+
+ /* Now do the click */
+ xbevent.type = ButtonPress;
+ xbevent.window = xwindow;
+ xbevent.root = xrootwindow;
+ xbevent.subwindow = None;
+ xbevent.time = xcevent.time;
+ xbevent.x = xcevent.x;
+ xbevent.y = xcevent.y;
+ xbevent.x_root = xcevent.x_root;
+ xbevent.y_root = xcevent.y_root;
+ xbevent.state = clutter_event_get_state (event);
+ xbevent.button = clutter_event_get_button (event);
+ xbevent.same_screen = True;
+ XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xbevent);
+
+ xbevent.type = ButtonRelease;
+ XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xbevent);
+
+ /* And move the pointer back out */
+ xcevent.type = LeaveNotify;
+ XSendEvent (xdisplay, xwindow, False, 0, (XEvent *)&xcevent);
+
+ gdk_error_trap_pop_ignored ();
+}
diff --git a/src/shell-tray-icon.h b/src/shell-tray-icon.h
index 88e2a1406..565b3060a 100644
--- a/src/shell-tray-icon.h
+++ b/src/shell-tray-icon.h
@@ -31,4 +31,7 @@ struct _ShellTrayIconClass
GType shell_tray_icon_get_type (void) G_GNUC_CONST;
ClutterActor *shell_tray_icon_new (ShellEmbeddedWindow *window);
+void shell_tray_icon_click (ShellTrayIcon *icon,
+ ClutterEvent *event);
+
#endif /* __SHELL_TRAY_ICON_H__ */
diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c
index d2889236f..44a4a48e3 100644
--- a/src/shell-window-tracker.c
+++ b/src/shell-window-tracker.c
@@ -225,23 +225,6 @@ get_appid_from_window (MetaWindow *window)
return appid_guess;
}
-/**
- * window_is_tracked:
- *
- * We don't attempt to associate override-redirect windows with applications
- * at all, since there's no reason to do so yet.
- *
- * Returns: %TRUE iff we want to scan this window for application association
- */
-static gboolean
-window_is_tracked (MetaWindow *window)
-{
- if (meta_window_is_override_redirect (window))
- return FALSE;
-
- return TRUE;
-}
-
/**
* shell_window_tracker_is_window_interesting:
*
@@ -529,7 +512,7 @@ track_window (ShellWindowTracker *self,
{
ShellApp *app;
- if (!window_is_tracked (window))
+ if (!shell_window_tracker_is_window_interesting (window))
return;
app = get_app_for_window (self, window);
@@ -539,10 +522,6 @@ track_window (ShellWindowTracker *self,
/* At this point we've stored the association from window -> application */
g_hash_table_insert (self->window_to_app, window, app);
- /* However, only put interesting windows in the window list for an app. */
- if (!shell_window_tracker_is_window_interesting (window))
- return;
-
if (shell_app_is_transient (app))
{
/* For a transient application, it's possible one of our title regexps
diff --git a/src/st/st-button.c b/src/st/st-button.c
index 56842679e..47647cfb5 100644
--- a/src/st/st-button.c
+++ b/src/st/st-button.c
@@ -232,7 +232,10 @@ st_button_key_release (ClutterActor *actor,
if (event->keyval == CLUTTER_KEY_space ||
event->keyval == CLUTTER_KEY_Return)
{
- st_button_release (button, ST_BUTTON_ONE, 1);
+ gboolean is_click;
+
+ is_click = (button->priv->pressed & ST_BUTTON_ONE);
+ st_button_release (button, ST_BUTTON_ONE, is_click ? 1 : 0);
return TRUE;
}
}
diff --git a/src/st/st-container.c b/src/st/st-container.c
index 24430d040..403da5573 100644
--- a/src/st/st-container.c
+++ b/src/st/st-container.c
@@ -445,33 +445,35 @@ filter_by_position (GList *children,
clutter_actor_get_allocation_box (child, &cbox);
/* Filter out children if they are in the wrong direction from
- * @rbox, or if they don't overlap it.
+ * @rbox, or if they don't overlap it. To account for floating-
+ * point imprecision, an actor is "down" (etc.) from an another
+ * actor even if it overlaps it by up to 0.1 pixels.
*/
switch (direction)
{
case GTK_DIR_UP:
- if (cbox.y2 > rbox->y1)
+ if (cbox.y2 > rbox->y1 + 0.1)
continue;
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
continue;
break;
case GTK_DIR_DOWN:
- if (cbox.y1 < rbox->y2)
+ if (cbox.y1 < rbox->y2 - 0.1)
continue;
if (cbox.x1 >= rbox->x2 || cbox.x2 <= rbox->x1)
continue;
break;
case GTK_DIR_LEFT:
- if (cbox.x2 > rbox->x1)
+ if (cbox.x2 > rbox->x1 + 0.1)
continue;
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
continue;
break;
case GTK_DIR_RIGHT:
- if (cbox.x1 < rbox->x2)
+ if (cbox.x1 < rbox->x2 - 0.1)
continue;
if (cbox.y1 >= rbox->y2 || cbox.y2 <= rbox->y1)
continue;
diff --git a/src/st/st-label.c b/src/st/st-label.c
index 53fd844b3..1d9b13d0e 100644
--- a/src/st/st-label.c
+++ b/src/st/st-label.c
@@ -243,10 +243,11 @@ st_label_paint (ClutterActor *actor)
priv->text_shadow_material = material;
}
- _st_paint_shadow_with_opacity (shadow_spec,
- priv->text_shadow_material,
- &allocation,
- clutter_actor_get_paint_opacity (priv->label));
+ if (priv->text_shadow_material != COGL_INVALID_HANDLE)
+ _st_paint_shadow_with_opacity (shadow_spec,
+ priv->text_shadow_material,
+ &allocation,
+ clutter_actor_get_paint_opacity (priv->label));
}
clutter_actor_paint (priv->label);
diff --git a/src/st/st-private.c b/src/st/st-private.c
index e265789ae..d0aa89bae 100644
--- a/src/st/st-private.c
+++ b/src/st/st-private.c
@@ -435,11 +435,12 @@ blur_pixels (guchar *pixels_in,
guchar *pixels_out;
float sigma;
- /* we use an approximation of the sigma - blur radius relationship used
- in Firefox for doing SVG blurs; see
- http://mxr.mozilla.org/mozilla-central/source/gfx/thebes/src/gfxBlur.cpp#280
- */
- sigma = blur / 1.9;
+ /* The CSS specification defines (or will define) the blur radius as twice
+ * the Gaussian standard deviation. See:
+ *
+ * http://lists.w3.org/Archives/Public/www-style/2010Sep/0002.html
+ */
+ sigma = blur / 2.;
if ((guint) blur == 0)
{
@@ -604,32 +605,41 @@ _st_create_shadow_material_from_actor (StShadow *shadow_spec,
{
CoglHandle buffer, offscreen;
ClutterActorBox box;
+ CoglColor clear_color;
float width, height;
clutter_actor_get_allocation_box (actor, &box);
clutter_actor_box_get_size (&box, &width, &height);
+ if (width == 0 || height == 0)
+ return COGL_INVALID_HANDLE;
+
buffer = cogl_texture_new_with_size (width,
height,
COGL_TEXTURE_NO_SLICING,
COGL_PIXEL_FORMAT_ANY);
+
+ if (buffer == COGL_INVALID_HANDLE)
+ return COGL_INVALID_HANDLE;
+
offscreen = cogl_offscreen_new_to_texture (buffer);
- if (offscreen != COGL_INVALID_HANDLE)
+ if (offscreen == COGL_INVALID_HANDLE)
{
- CoglColor clear_color;
-
- cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
- cogl_push_framebuffer (offscreen);
- cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
- cogl_ortho (0, width, height, 0, 0, 1.0);
- clutter_actor_paint (actor);
- cogl_pop_framebuffer ();
- cogl_handle_unref (offscreen);
-
- shadow_material = _st_create_shadow_material (shadow_spec, buffer);
+ cogl_handle_unref (buffer);
+ return COGL_INVALID_HANDLE;
}
+ cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
+ cogl_push_framebuffer (offscreen);
+ cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
+ cogl_ortho (0, width, height, 0, 0, 1.0);
+ clutter_actor_paint (actor);
+ cogl_pop_framebuffer ();
+ cogl_handle_unref (offscreen);
+
+ shadow_material = _st_create_shadow_material (shadow_spec, buffer);
+
cogl_handle_unref (buffer);
}
diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c
index 198ddf273..182851bad 100644
--- a/src/st/st-texture-cache.c
+++ b/src/st/st-texture-cache.c
@@ -143,7 +143,7 @@ st_texture_cache_init (StTextureCache *self)
g_free, cogl_handle_unref);
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, NULL);
- self->priv->thumbnails = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_NORMAL);
+ self->priv->thumbnails = gnome_desktop_thumbnail_factory_new (GNOME_DESKTOP_THUMBNAIL_SIZE_LARGE);
}
static void
@@ -777,6 +777,7 @@ typedef struct {
char *key;
char *uri;
gboolean thumbnail;
+ gboolean enforced_square;
char *mimetype;
GtkRecentInfo *recent_info;
char *checksum;
@@ -788,15 +789,47 @@ typedef struct {
} AsyncTextureLoadData;
static CoglHandle
-pixbuf_to_cogl_handle (GdkPixbuf *pixbuf)
+pixbuf_to_cogl_handle (GdkPixbuf *pixbuf,
+ gboolean add_padding)
{
- return cogl_texture_new_from_data (gdk_pixbuf_get_width (pixbuf),
- gdk_pixbuf_get_height (pixbuf),
- COGL_TEXTURE_NONE,
- gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
- COGL_PIXEL_FORMAT_ANY,
- gdk_pixbuf_get_rowstride (pixbuf),
- gdk_pixbuf_get_pixels (pixbuf));
+ CoglHandle texture, offscreen;
+ CoglColor clear_color;
+ int width, height;
+ guint size;
+
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+ size = MAX (width, height);
+
+ if (!add_padding || width == height)
+ return cogl_texture_new_from_data (width,
+ height,
+ COGL_TEXTURE_NONE,
+ gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
+ COGL_PIXEL_FORMAT_ANY,
+ gdk_pixbuf_get_rowstride (pixbuf),
+ gdk_pixbuf_get_pixels (pixbuf));
+
+ texture = cogl_texture_new_with_size (size, size,
+ COGL_TEXTURE_NO_SLICING,
+ COGL_PIXEL_FORMAT_ANY);
+
+ offscreen = cogl_offscreen_new_to_texture (texture);
+ cogl_color_set_from_4ub (&clear_color, 0, 0, 0, 0);
+ cogl_push_framebuffer (offscreen);
+ cogl_clear (&clear_color, COGL_BUFFER_BIT_COLOR);
+ cogl_pop_framebuffer ();
+ cogl_handle_unref (offscreen);
+
+ cogl_texture_set_region (texture,
+ 0, 0,
+ (size - width) / 2, (size - height) / 2,
+ width, height,
+ width, height,
+ gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888,
+ gdk_pixbuf_get_rowstride (pixbuf),
+ gdk_pixbuf_get_pixels (pixbuf));
+ return texture;
}
static cairo_surface_t *
@@ -882,7 +915,7 @@ on_pixbuf_loaded (GObject *source,
if (pixbuf == NULL)
goto out;
- texdata = pixbuf_to_cogl_handle (pixbuf);
+ texdata = pixbuf_to_cogl_handle (pixbuf, data->enforced_square);
g_object_unref (pixbuf);
@@ -956,7 +989,7 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind,
if (pixbuf != NULL)
{
- texdata = pixbuf_to_cogl_handle (pixbuf);
+ texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
g_object_unref (pixbuf);
clutter_texture_set_cogl_texture (bind->texture, texdata);
@@ -1183,6 +1216,7 @@ load_gicon_with_colors (StTextureCache *cache,
request->icon = g_object_ref (icon);
request->icon_info = info;
request->width = request->height = size;
+ request->enforced_square = TRUE;
load_icon_pixbuf_async (cache, icon, info, size, colors, NULL, on_pixbuf_loaded, request);
}
@@ -1195,6 +1229,8 @@ load_gicon_with_colors (StTextureCache *cache,
g_slist_free (request->textures);
g_free (request);
g_hash_table_remove (cache->priv->outstanding_requests, key);
+ g_object_unref (texture);
+ texture = NULL;
}
g_free (key);
@@ -1216,7 +1252,7 @@ load_gicon_with_colors (StTextureCache *cache,
* This will load @icon as a full-color icon; if you want a symbolic
* icon, you must use st_texture_cache_load_icon_name().
*
- * Return Value: (transfer none): A new #ClutterActor for the icon
+ * Return Value: (transfer none): A new #ClutterActor for the icon, or %NULL if not found
*/
ClutterActor *
st_texture_cache_load_gicon (StTextureCache *cache,
@@ -1245,7 +1281,7 @@ load_from_pixbuf (GdkPixbuf *pixbuf)
clutter_actor_set_size (CLUTTER_ACTOR (texture), width, height);
- texdata = pixbuf_to_cogl_handle (pixbuf);
+ texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
set_texture_cogl_texture (texture, texdata);
@@ -1461,10 +1497,27 @@ st_texture_cache_load_icon_name (StTextureCache *cache,
switch (icon_type)
{
case ST_ICON_APPLICATION:
+ themed = g_themed_icon_new (name);
+ texture = load_gicon_with_colors (cache, themed, size, NULL);
+ g_object_unref (themed);
+ if (texture == NULL)
+ {
+ themed = g_themed_icon_new ("application-x-executable");
+ texture = load_gicon_with_colors (cache, themed, size, NULL);
+ g_object_unref (themed);
+ }
+ return CLUTTER_ACTOR (texture);
+ break;
case ST_ICON_DOCUMENT:
themed = g_themed_icon_new (name);
texture = load_gicon_with_colors (cache, themed, size, NULL);
g_object_unref (themed);
+ if (texture == NULL)
+ {
+ themed = g_themed_icon_new ("x-office-document");
+ texture = load_gicon_with_colors (cache, themed, size, NULL);
+ g_object_unref (themed);
+ }
return CLUTTER_ACTOR (texture);
break;
@@ -1482,6 +1535,12 @@ st_texture_cache_load_icon_name (StTextureCache *cache,
themed = g_themed_icon_new_with_default_fallbacks (name);
texture = load_gicon_with_colors (cache, themed, size, NULL);
g_object_unref (themed);
+ if (texture == NULL)
+ {
+ themed = g_themed_icon_new ("image-missing");
+ texture = load_gicon_with_colors (cache, themed, size, NULL);
+ g_object_unref (themed);
+ }
return CLUTTER_ACTOR (texture);
break;
@@ -1549,7 +1608,7 @@ st_texture_cache_load_uri_sync_to_cogl_texture (StTextureCache *cache,
if (!pixbuf)
goto out;
- texdata = pixbuf_to_cogl_handle (pixbuf);
+ texdata = pixbuf_to_cogl_handle (pixbuf, FALSE);
g_object_unref (pixbuf);
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
@@ -1800,7 +1859,7 @@ st_texture_cache_load_from_data (StTextureCache *cache,
return NULL;
}
- texdata = pixbuf_to_cogl_handle (pixbuf);
+ texdata = pixbuf_to_cogl_handle (pixbuf, TRUE);
g_object_unref (pixbuf);
set_texture_cogl_texture (texture, texdata);
@@ -1924,6 +1983,7 @@ st_texture_cache_load_thumbnail (StTextureCache *cache,
data->thumbnail = TRUE;
data->width = size;
data->height = size;
+ data->enforced_square = TRUE;
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
load_thumbnail_async (cache, uri, mimetype, size, NULL, on_pixbuf_loaded, data);
}
@@ -2000,6 +2060,7 @@ st_texture_cache_load_recent_thumbnail (StTextureCache *cache,
data->recent_info = gtk_recent_info_ref (info);
data->width = size;
data->height = size;
+ data->enforced_square = TRUE;
data->textures = g_slist_prepend (data->textures, g_object_ref (texture));
load_recent_thumbnail_async (cache, info, size, NULL, on_pixbuf_loaded, data);
}
diff --git a/src/st/st-theme-node.c b/src/st/st-theme-node.c
index 2a857ab58..7adfd1342 100644
--- a/src/st/st-theme-node.c
+++ b/src/st/st-theme-node.c
@@ -2518,6 +2518,15 @@ st_theme_node_get_border_image (StThemeNode *node)
char *filename;
+ /* Support border-image: none; to suppress a previously specified border image */
+ if (term_is_none (term))
+ {
+ if (term->next == NULL)
+ return NULL;
+ else
+ goto next_property;
+ }
+
/* First term must be the URL to the image */
if (term->type != TERM_URI)
goto next_property;
diff --git a/src/st/st-tooltip.c b/src/st/st-tooltip.c
index 09e7aa765..70bc1a441 100644
--- a/src/st/st-tooltip.c
+++ b/src/st/st-tooltip.c
@@ -31,6 +31,7 @@
#include "config.h"
#endif
+#include
#include
#include
@@ -59,9 +60,6 @@ struct _StTooltipPrivate
{
StLabel *label;
- gfloat arrow_offset;
- gboolean actor_below;
-
ClutterGeometry *tip_area;
};
@@ -73,6 +71,10 @@ static void st_tooltip_show (ClutterActor *self);
static void st_tooltip_show_all (ClutterActor *self);
static void st_tooltip_hide_all (ClutterActor *self);
+static void st_tooltip_constrain (StTooltip *tooltip,
+ const ClutterGeometry *geometry,
+ ClutterGeometry *adjusted_geometry);
+
static void
st_tooltip_set_property (GObject *gobject,
guint prop_id,
@@ -208,26 +210,6 @@ st_tooltip_paint (ClutterActor *self)
clutter_actor_paint (CLUTTER_ACTOR (priv->label));
}
-static void
-st_tooltip_map (ClutterActor *self)
-{
- StTooltipPrivate *priv = ST_TOOLTIP (self)->priv;
-
- CLUTTER_ACTOR_CLASS (st_tooltip_parent_class)->map (self);
-
- clutter_actor_map (CLUTTER_ACTOR (priv->label));
-}
-
-static void
-st_tooltip_unmap (ClutterActor *self)
-{
- StTooltipPrivate *priv = ST_TOOLTIP (self)->priv;
-
- CLUTTER_ACTOR_CLASS (st_tooltip_parent_class)->unmap (self);
-
- clutter_actor_unmap (CLUTTER_ACTOR (priv->label));
-}
-
static void
st_tooltip_dispose (GObject *self)
{
@@ -259,8 +241,6 @@ st_tooltip_class_init (StTooltipClass *klass)
actor_class->get_preferred_height = st_tooltip_get_preferred_height;
actor_class->allocate = st_tooltip_allocate;
actor_class->paint = st_tooltip_paint;
- actor_class->map = st_tooltip_map;
- actor_class->unmap = st_tooltip_unmap;
actor_class->show = st_tooltip_show;
actor_class->show_all = st_tooltip_show_all;
actor_class->hide_all = st_tooltip_hide_all;
@@ -301,17 +281,14 @@ st_tooltip_update_position (StTooltip *tooltip)
{
StTooltipPrivate *priv = tooltip->priv;
ClutterGeometry *tip_area = tooltip->priv->tip_area;
+ ClutterGeometry geometry;
+ ClutterGeometry adjusted_geometry;
gfloat tooltip_w, tooltip_h, tooltip_x, tooltip_y;
- gfloat stage_w, stage_h;
- ClutterActor *stage;
-
- /* ensure the tooltip with is not fixed size */
- clutter_actor_set_size ((ClutterActor*) tooltip, -1, -1);
/* if no area set, just position ourselves top left */
if (!priv->tip_area)
{
- clutter_actor_set_position ((ClutterActor*) tooltip, 0, 0);
+ clutter_actor_set_anchor_point ((ClutterActor*) tooltip, 0, 0);
return;
}
@@ -326,47 +303,22 @@ st_tooltip_update_position (StTooltip *tooltip)
tooltip_x = (int)(tip_area->x + (tip_area->width / 2) - (tooltip_w / 2));
tooltip_y = (int)(tip_area->y + tip_area->height);
- stage = clutter_actor_get_stage ((ClutterActor *) tooltip);
- if (!stage)
- {
- return;
- }
- clutter_actor_get_size (stage, &stage_w, &stage_h);
+ geometry.x = tooltip_x;
+ geometry.y = tooltip_y;
+ geometry.width = ceil (tooltip_w);
+ geometry.height = ceil (tooltip_h);
- /* make sure the tooltip is not off screen vertically */
- if (tooltip_w > stage_w)
- {
- tooltip_x = 0;
- clutter_actor_set_width ((ClutterActor*) tooltip, stage_w);
- }
- else if (tooltip_x < 0)
- {
- tooltip_x = 0;
- }
- else if (tooltip_x + tooltip_w > stage_w)
- {
- tooltip_x = (int)(stage_w) - tooltip_w;
- }
+ st_tooltip_constrain (tooltip, &geometry, &adjusted_geometry);
- /* make sure the tooltip is not off screen horizontally */
- if (tooltip_y + tooltip_h > stage_h)
- {
- priv->actor_below = TRUE;
+ tooltip_x = adjusted_geometry.x;
+ tooltip_y = adjusted_geometry.y;
- /* re-query size as may have changed */
- clutter_actor_get_preferred_height ((ClutterActor*) tooltip,
- -1, NULL, &tooltip_h);
- tooltip_y = tip_area->y - tooltip_h;
- }
- else
- {
- priv->actor_below = FALSE;
- }
-
- /* calculate the arrow offset */
- priv->arrow_offset = tip_area->x + tip_area->width / 2 - tooltip_x;
-
- clutter_actor_set_position ((ClutterActor*) tooltip, tooltip_x, tooltip_y);
+ /* Since we are updating the position out of st_widget_allocate(), we can't
+ * call clutter_actor_set_position(), since that would trigger another
+ * allocation cycle. Instead, we adjust the anchor position which moves
+ * the tooltip actor on the screen without changing its allocation
+ */
+ clutter_actor_set_anchor_point ((ClutterActor*) tooltip, -tooltip_x, -tooltip_y);
}
/**
@@ -411,32 +363,6 @@ static void
st_tooltip_show (ClutterActor *self)
{
StTooltip *tooltip = ST_TOOLTIP (self);
- ClutterActor *parent;
- ClutterActor *stage;
-
- parent = clutter_actor_get_parent (self);
- stage = clutter_actor_get_stage (self);
-
- if (!stage)
- {
- g_warning ("StTooltip is not on any stage.");
- return;
- }
-
- /* make sure we're parented on the stage */
- if (G_UNLIKELY (parent != stage))
- {
- g_object_ref (self);
- clutter_actor_unparent (self);
- clutter_actor_set_parent (self, stage);
- g_object_unref (self);
- parent = stage;
- }
-
- /* raise the tooltip to the top */
- clutter_container_raise_child (CLUTTER_CONTAINER (stage),
- CLUTTER_ACTOR (tooltip),
- NULL);
st_tooltip_update_position (tooltip);
@@ -477,7 +403,8 @@ st_tooltip_set_tip_area (StTooltip *tooltip,
g_boxed_free (CLUTTER_TYPE_GEOMETRY, tooltip->priv->tip_area);
tooltip->priv->tip_area = g_boxed_copy (CLUTTER_TYPE_GEOMETRY, area);
- st_tooltip_update_position (tooltip);
+ if (clutter_actor_get_stage (CLUTTER_ACTOR (tooltip)))
+ st_tooltip_update_position (tooltip);
}
/**
@@ -496,3 +423,102 @@ st_tooltip_get_tip_area (StTooltip *tooltip)
return tooltip->priv->tip_area;
}
+
+typedef struct {
+ StTooltipConstrainFunc func;
+ gpointer data;
+ GDestroyNotify notify;
+} ConstrainFuncClosure;
+
+static void
+constrain_func_closure_free (gpointer data)
+{
+ ConstrainFuncClosure *closure = data;
+ if (closure->notify)
+ closure->notify (closure->data);
+ g_slice_free (ConstrainFuncClosure, data);
+}
+
+static GQuark
+st_tooltip_constrain_func_quark (void)
+{
+ static GQuark value = 0;
+ if (G_UNLIKELY (value == 0))
+ value = g_quark_from_static_string ("st-tooltip-constrain-func");
+ return value;
+}
+
+/**
+ * st_tooltip_set_constrain_func:
+ * @stage: a #ClutterStage
+ * @func: (allow-none): function to be called to constrain tooltip position
+ * @data: (allow-none): user data to pass to @func
+ * @notify: (allow-none): function to be called when @data is no longer needed
+ *
+ * Sets a callback function that will be used to constrain the position
+ * of tooltips within @stage. This can be used, for example, if the stage
+ * spans multiple monitors and tooltips should be positioned not to cross
+ * monitors.
+ */
+void
+st_tooltip_set_constrain_func (ClutterStage *stage,
+ StTooltipConstrainFunc func,
+ gpointer data,
+ GDestroyNotify notify)
+{
+ ConstrainFuncClosure *closure;
+
+ g_return_if_fail (CLUTTER_IS_STAGE (stage));
+
+ if (func)
+ {
+ closure = g_slice_new (ConstrainFuncClosure);
+ closure->func = func;
+ closure->data = data;
+ closure->notify = notify;
+ }
+ else
+ closure = NULL;
+
+ g_object_set_qdata_full (G_OBJECT (stage), st_tooltip_constrain_func_quark (),
+ closure, constrain_func_closure_free);
+}
+
+static void
+st_tooltip_constrain (StTooltip *tooltip,
+ const ClutterGeometry *geometry,
+ ClutterGeometry *adjusted_geometry)
+{
+ ConstrainFuncClosure *closure;
+
+ ClutterActor *stage = clutter_actor_get_stage (CLUTTER_ACTOR (tooltip));
+
+ *adjusted_geometry = *geometry;
+
+ if (stage == NULL)
+ return;
+
+ closure = g_object_get_qdata (G_OBJECT (stage), st_tooltip_constrain_func_quark ());
+ if (closure)
+ {
+ closure->func (tooltip, geometry, adjusted_geometry, closure->data);
+ }
+ else
+ {
+ ClutterActor *parent;
+ gfloat parent_w, parent_h;
+
+ parent = clutter_actor_get_parent ((ClutterActor *) tooltip);
+ clutter_actor_get_size (parent, &parent_w, &parent_h);
+
+ /* make sure the tooltip is not off parent horizontally */
+ if (adjusted_geometry->x < 0)
+ adjusted_geometry->x = 0;
+ else if (adjusted_geometry->x + adjusted_geometry->width > parent_w)
+ adjusted_geometry->x = (int)(parent_w) - adjusted_geometry->width;
+
+ /* make sure the tooltip is not off parent vertically */
+ if (adjusted_geometry->y + adjusted_geometry->height > parent_h)
+ adjusted_geometry->y = parent_h - adjusted_geometry->height;
+ }
+}
diff --git a/src/st/st-tooltip.h b/src/st/st-tooltip.h
index 5f6f02a6e..9dd15760c 100644
--- a/src/st/st-tooltip.h
+++ b/src/st/st-tooltip.h
@@ -68,6 +68,24 @@ void st_tooltip_set_tip_area (StTooltip *tooltip,
const ClutterGeometry *area);
const ClutterGeometry* st_tooltip_get_tip_area (StTooltip *tooltip);
+/**
+ * StTooltipConstrainFunc:
+ * @tooltip: the #StTooltip that is being positioned
+ * @geometry: size and position of the tooltip without any constraints
+ * @adjusted_geometry: (out): new position of the tooltip.
+ * The width and height fields will be ignored.
+ * @data: (closure): user data passed to st_tooltip_set_constrain_func()
+ */
+typedef void (*StTooltipConstrainFunc) (StTooltip *tooltip,
+ const ClutterGeometry *geometry,
+ ClutterGeometry *adjusted_geometry,
+ gpointer data);
+
+void st_tooltip_set_constrain_func (ClutterStage *stage,
+ StTooltipConstrainFunc func,
+ gpointer data,
+ GDestroyNotify notify);
+
G_END_DECLS
#endif /* __ST_TOOLTIP_H__ */
diff --git a/src/st/st-widget.c b/src/st/st-widget.c
index 45b3f8db9..f8e6074e2 100644
--- a/src/st/st-widget.c
+++ b/src/st/st-widget.c
@@ -44,6 +44,8 @@
#include "st-widget-accessible.h"
+#include
+
/*
* Forward declaration for sake of StWidgetChild
*/
@@ -56,9 +58,11 @@ struct _StWidgetPrivate
gchar *inline_style;
StThemeNodeTransition *transition_animation;
+ guint tooltip_timeout_id;
gboolean is_stylable : 1;
gboolean has_tooltip : 1;
+ gboolean show_tooltip : 1;
gboolean is_style_dirty : 1;
gboolean draw_bg_color : 1;
gboolean draw_border_internal : 1;
@@ -124,6 +128,10 @@ static gboolean st_widget_real_navigate_focus (StWidget *widget,
static AtkObject * st_widget_get_accessible (ClutterActor *actor);
+static void st_widget_start_tooltip_timeout (StWidget *widget);
+static void st_widget_do_show_tooltip (StWidget *widget);
+static void st_widget_do_hide_tooltip (StWidget *widget);
+
static void
st_widget_set_property (GObject *gobject,
guint prop_id,
@@ -273,18 +281,16 @@ st_widget_dispose (GObject *gobject)
st_widget_remove_transition (actor);
+ if (priv->tooltip_timeout_id)
+ {
+ g_source_remove (priv->tooltip_timeout_id);
+ priv->tooltip_timeout_id = 0;
+ }
+
if (priv->tooltip)
{
- ClutterContainer *parent;
- ClutterActor *tooltip = CLUTTER_ACTOR (priv->tooltip);
-
- /* this is just a little bit awkward because the tooltip is parented
- * on the stage, but we still want to "own" it */
- parent = CLUTTER_CONTAINER (clutter_actor_get_parent (tooltip));
-
- if (parent)
- clutter_container_remove_actor (parent, tooltip);
-
+ clutter_actor_destroy (CLUTTER_ACTOR (priv->tooltip));
+ g_object_unref (priv->tooltip);
priv->tooltip = NULL;
}
@@ -426,28 +432,28 @@ st_widget_parent_set (ClutterActor *widget,
static void
st_widget_map (ClutterActor *actor)
{
- StWidgetPrivate *priv = ST_WIDGET (actor)->priv;
+ StWidget *self = ST_WIDGET (actor);
CLUTTER_ACTOR_CLASS (st_widget_parent_class)->map (actor);
- st_widget_ensure_style ((StWidget*) actor);
+ st_widget_ensure_style (self);
- if (priv->tooltip)
- clutter_actor_map ((ClutterActor *) priv->tooltip);
+ if (self->priv->show_tooltip)
+ st_widget_do_show_tooltip (self);
}
static void
st_widget_unmap (ClutterActor *actor)
{
- StWidgetPrivate *priv = ST_WIDGET (actor)->priv;
+ StWidget *self = ST_WIDGET (actor);
+ StWidgetPrivate *priv = self->priv;
CLUTTER_ACTOR_CLASS (st_widget_parent_class)->unmap (actor);
- if (priv->tooltip)
- clutter_actor_unmap ((ClutterActor *) priv->tooltip);
-
if (priv->track_hover && priv->hover)
- st_widget_set_hover (ST_WIDGET (actor), FALSE);
+ st_widget_set_hover (self, FALSE);
+
+ st_widget_do_hide_tooltip (self);
}
static void notify_children_of_style_change (ClutterContainer *container);
@@ -674,6 +680,19 @@ st_widget_leave (ClutterActor *actor,
return FALSE;
}
+static gboolean
+st_widget_motion (ClutterActor *actor,
+ ClutterMotionEvent *motion)
+{
+ StWidget *widget = ST_WIDGET (actor);
+ StWidgetPrivate *priv = widget->priv;
+
+ if (priv->has_tooltip)
+ st_widget_start_tooltip_timeout (widget);
+
+ return FALSE;
+}
+
static void
st_widget_key_focus_in (ClutterActor *actor)
{
@@ -777,6 +796,7 @@ st_widget_class_init (StWidgetClass *klass)
actor_class->enter_event = st_widget_enter;
actor_class->leave_event = st_widget_leave;
+ actor_class->motion_event = st_widget_motion;
actor_class->key_focus_in = st_widget_key_focus_in;
actor_class->key_focus_out = st_widget_key_focus_out;
actor_class->key_press_event = st_widget_key_press_event;
@@ -1502,6 +1522,29 @@ st_widget_set_direction (StWidget *self, StTextDirection dir)
st_widget_style_changed (self);
}
+static void
+st_widget_ensure_tooltip_parented (StWidget *widget, ClutterStage *stage)
+{
+ StWidgetPrivate *priv;
+ ClutterContainer *ui_root;
+ ClutterActor *tooltip, *parent;
+
+ priv = widget->priv;
+
+ ui_root = st_get_ui_root (stage);
+
+ tooltip = CLUTTER_ACTOR (priv->tooltip);
+ parent = clutter_actor_get_parent (tooltip);
+
+ if (G_UNLIKELY (parent != CLUTTER_ACTOR (ui_root)))
+ {
+ if (parent)
+ clutter_container_remove_actor (CLUTTER_CONTAINER (parent), tooltip);
+
+ clutter_container_add_actor (ui_root, tooltip);
+ }
+}
+
/**
* st_widget_set_has_tooltip:
* @widget: A #StWidget
@@ -1519,6 +1562,7 @@ st_widget_set_has_tooltip (StWidget *widget,
gboolean has_tooltip)
{
StWidgetPrivate *priv;
+ ClutterActor *stage;
g_return_if_fail (ST_IS_WIDGET (widget));
@@ -1534,15 +1578,25 @@ st_widget_set_has_tooltip (StWidget *widget,
if (!priv->tooltip)
{
priv->tooltip = g_object_new (ST_TYPE_TOOLTIP, NULL);
- clutter_actor_set_parent ((ClutterActor *) priv->tooltip,
- (ClutterActor *) widget);
+ g_object_ref_sink (priv->tooltip);
+
+ stage = clutter_actor_get_stage (CLUTTER_ACTOR (widget));
+ if (stage != NULL)
+ st_widget_ensure_tooltip_parented (widget, CLUTTER_STAGE (stage));
}
}
else
{
+ if (priv->tooltip_timeout_id)
+ {
+ g_source_remove (priv->tooltip_timeout_id);
+ priv->tooltip_timeout_id = 0;
+ }
+
if (priv->tooltip)
{
- clutter_actor_unparent (CLUTTER_ACTOR (priv->tooltip));
+ clutter_actor_destroy (CLUTTER_ACTOR (priv->tooltip));
+ g_object_unref (priv->tooltip);
priv->tooltip = NULL;
}
}
@@ -1587,9 +1641,10 @@ st_widget_set_tooltip_text (StWidget *widget,
if (text == NULL)
st_widget_set_has_tooltip (widget, FALSE);
else
- st_widget_set_has_tooltip (widget, TRUE);
-
- st_tooltip_set_label (priv->tooltip, text);
+ {
+ st_widget_set_has_tooltip (widget, TRUE);
+ st_tooltip_set_label (priv->tooltip, text);
+ }
}
/**
@@ -1618,34 +1673,33 @@ st_widget_get_tooltip_text (StWidget *widget)
* st_widget_show_tooltip:
* @widget: A #StWidget
*
- * Show the tooltip for @widget
+ * Force the tooltip for @widget to be shown
*
*/
void
st_widget_show_tooltip (StWidget *widget)
{
- gfloat x, y, width, height;
- ClutterGeometry area;
-
g_return_if_fail (ST_IS_WIDGET (widget));
- /* XXX not necceary, but first allocate transform is wrong */
+ widget->priv->show_tooltip = TRUE;
+ if (CLUTTER_ACTOR_IS_MAPPED (widget))
+ st_widget_do_show_tooltip (widget);
+}
- clutter_actor_get_transformed_position ((ClutterActor*) widget,
- &x, &y);
-
- clutter_actor_get_size ((ClutterActor*) widget, &width, &height);
-
- area.x = x;
- area.y = y;
- area.width = width;
- area.height = height;
+static void
+st_widget_do_show_tooltip (StWidget *widget)
+{
+ ClutterActor *stage, *tooltip;
+ stage = clutter_actor_get_stage (CLUTTER_ACTOR (widget));
+ g_return_if_fail (stage != NULL);
if (widget->priv->tooltip)
{
- st_tooltip_set_tip_area (widget->priv->tooltip, &area);
- clutter_actor_show_all (CLUTTER_ACTOR (widget->priv->tooltip));
+ tooltip = CLUTTER_ACTOR (widget->priv->tooltip);
+ st_widget_ensure_tooltip_parented (widget, CLUTTER_STAGE (stage));
+ clutter_actor_raise (tooltip, NULL);
+ clutter_actor_show_all (tooltip);
}
}
@@ -1661,6 +1715,14 @@ st_widget_hide_tooltip (StWidget *widget)
{
g_return_if_fail (ST_IS_WIDGET (widget));
+ widget->priv->show_tooltip = FALSE;
+ if (CLUTTER_ACTOR_IS_MAPPED (widget))
+ st_widget_do_hide_tooltip (widget);
+}
+
+static void
+st_widget_do_hide_tooltip (StWidget *widget)
+{
if (widget->priv->tooltip)
clutter_actor_hide (CLUTTER_ACTOR (widget->priv->tooltip));
}
@@ -1720,6 +1782,28 @@ st_widget_get_track_hover (StWidget *widget)
return widget->priv->track_hover;
}
+static gboolean
+tooltip_timeout (gpointer data)
+{
+ st_widget_show_tooltip (data);
+
+ return FALSE;
+}
+
+static void
+st_widget_start_tooltip_timeout (StWidget *widget)
+{
+ StWidgetPrivate *priv = widget->priv;
+ GtkSettings *settings = gtk_settings_get_default ();
+ guint timeout;
+
+ if (priv->tooltip_timeout_id)
+ g_source_remove (priv->tooltip_timeout_id);
+
+ g_object_get (settings, "gtk-tooltip-timeout", &timeout, NULL);
+ priv->tooltip_timeout_id = g_timeout_add (timeout, tooltip_timeout, widget);
+}
+
/**
* st_widget_set_hover:
* @widget: A #StWidget
@@ -1750,13 +1834,21 @@ st_widget_set_hover (StWidget *widget,
{
st_widget_add_style_pseudo_class (widget, "hover");
if (priv->has_tooltip)
- st_widget_show_tooltip (widget);
+ st_widget_start_tooltip_timeout (widget);
}
else
{
st_widget_remove_style_pseudo_class (widget, "hover");
if (priv->has_tooltip)
- st_widget_hide_tooltip (widget);
+ {
+ if (priv->tooltip_timeout_id)
+ {
+ g_source_remove (priv->tooltip_timeout_id);
+ priv->tooltip_timeout_id = 0;
+ }
+
+ st_widget_hide_tooltip (widget);
+ }
}
g_object_notify (G_OBJECT (widget), "hover");
}
@@ -2222,3 +2314,71 @@ on_can_focus_notify (GObject *gobject,
atk_object_notify_state_change (ATK_OBJECT (data),
ATK_STATE_FOCUSABLE, can_focus);
}
+
+static GQuark
+st_ui_root_quark (void)
+{
+ static GQuark value = 0;
+ if (G_UNLIKELY (value == 0))
+ value = g_quark_from_static_string ("st-ui-root");
+ return value;
+}
+
+static void
+st_ui_root_destroyed (ClutterActor *actor,
+ ClutterStage *stage)
+{
+ st_set_ui_root (stage, NULL);
+ g_signal_handlers_disconnect_by_func (actor, st_ui_root_destroyed, stage);
+}
+
+/**
+ * st_get_ui_root:
+ * @stage: a #ClutterStage
+ * @container: (allow-none): the new UI root
+ *
+ * Sets a #ClutterContainer to be the parent of all UI in the program.
+ * This container is used when St needs to add new content outside the
+ * widget hierarchy, for example, when it shows a tooltip over a widget.
+ */
+void
+st_set_ui_root (ClutterStage *stage,
+ ClutterContainer *container)
+{
+ ClutterContainer *previous;
+
+ g_return_if_fail (CLUTTER_IS_STAGE (stage));
+ g_return_if_fail (CLUTTER_IS_CONTAINER (container));
+
+ previous = st_get_ui_root (stage);
+ if (previous)
+ g_signal_handlers_disconnect_by_func (container, st_ui_root_destroyed, stage);
+
+ if (container)
+ {
+ g_signal_connect (container, "destroy", G_CALLBACK (st_ui_root_destroyed), stage);
+ g_object_set_qdata_full (G_OBJECT (stage), st_ui_root_quark (), g_object_ref (container), g_object_unref);
+ }
+}
+
+/**
+ * st_get_ui_root:
+ * @stage: a #ClutterStage
+ *
+ * Returns: (transfer none): the container which should be the parent of all user interface,
+ * which can be set with st_set_ui_root(). If not set, returns @stage
+ */
+ClutterContainer *
+st_get_ui_root (ClutterStage *stage)
+{
+ ClutterContainer *root;
+
+ g_return_val_if_fail (CLUTTER_IS_STAGE (stage), NULL);
+
+ root = g_object_get_qdata (G_OBJECT (stage), st_ui_root_quark ());
+
+ if (root != NULL)
+ return root;
+ else
+ return CLUTTER_CONTAINER (stage);
+}
diff --git a/src/st/st-widget.h b/src/st/st-widget.h
index 7f5efec7a..d38eb6893 100644
--- a/src/st/st-widget.h
+++ b/src/st/st-widget.h
@@ -162,6 +162,10 @@ char *st_describe_actor (ClutterActor *actor);
void st_set_slow_down_factor (gfloat factor);
gfloat st_get_slow_down_factor (void);
+void st_set_ui_root (ClutterStage *stage,
+ ClutterContainer *container);
+ClutterContainer *st_get_ui_root (ClutterStage *stage);
+
G_END_DECLS
#endif /* __ST_WIDGET_H__ */
diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules
index 6c8db0982..8836624d1 100644
--- a/tools/build/gnome-shell.modules
+++ b/tools/build/gnome-shell.modules
@@ -4,7 +4,7 @@
+ href="http://git.clutter-project.org/"/>
-
-
+
+
@@ -227,6 +227,7 @@
+
@@ -259,6 +260,13 @@
+
+
+
+
+
+
+
@@ -274,9 +282,10 @@
-
-
+
+
+