Compare commits

..

3 Commits

Author SHA1 Message Date
a8b2c13417 Change from St.Group to St.Widget 2012-03-26 17:10:29 -04:00
bd9fe20bd1 lightbox: make sure this.shown set to false when start showing 2012-03-26 17:10:28 -04:00
478e546a77 screenShield: add initial functionality
We are replacing the gnome-screensaver module with with a screen shield
that is part of gnome-shell.

This patch fades out the screen on idle and shows a shield with a background
image when there is activity again. The shield can be removed with a key or
button press.
2012-03-26 17:10:28 -04:00
148 changed files with 7987 additions and 10546 deletions

3
.gitignore vendored
View File

@ -23,8 +23,6 @@ data/gnome-shell-extension-prefs.desktop.in
data/gschemas.compiled
data/org.gnome.shell.gschema.xml
data/org.gnome.shell.gschema.valid
data/org.gnome.shell.evolution.calendar.gschema.xml
data/org.gnome.shell.evolution.calendar.gschema.valid
docs/reference/*/*.args
docs/reference/*/*.bak
docs/reference/*/*.hierarchy
@ -70,7 +68,6 @@ src/gnome-shell-extension-prefs
src/gnome-shell-hotplug-sniffer
src/gnome-shell-jhbuild
src/gnome-shell-perf-helper
src/gnome-shell-perf-tool
src/gnome-shell-real
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/run-js-test

123
NEWS
View File

@ -1,114 +1,3 @@
3.5.2
=====
* main: Move 'toggle-recording' binding into the shell [Florian; #674377]
* popupMenu: make sure to break the grab when the slider is not visible
[Stefano; #672713]
* st-theme-node-drawing: Don't use GL types [Neil; #672711]
* Mirror Evolution calendar settings into our own schema [Owen; #674424]
* shell-network-agent: don't crash if a request isn't found [Dan; #674961]
* notificationDaemon: Match app based on WM_CLASS [Jasper; #673761]
* NetworkMenu: use network-offline while loading [Giovanni; #674426]
* lookingGlass: Remove the Errors tab [Jasper; #675104]
* searchDisplay: Reset keyboard focus after displaying async results
[Rui; #675078]
* gdm: don't fail if fprintd is unavailable [Ray; #675006]
* messageTray: Fix scrolling up [Jasper; #661615]
* main: Close the recorder instead of pausing it [Rui; #675128]
* Accessibility [Alejandro]
- Use the proper label_actor for date menu on top panel [#675307]
- Set the proper role/label_actor for SearchResult.content [#672242]
- do not expose a label text if 'hidden' style class is used [#675341]
* Magnifier: Add brightness and contrast functionality [Joseph; #639851]
* theme: use a smaller border-radius for top bar [Jakub; #672430]
* placeDisplay: use new bookmark file location [Matthias; #675443]
* port all synchronous search providers to the async API [Jasper, Rui; #675328]
* NetworkAgent: disallow multiple requests for the same connection/setting
[Giovanni; #674961]
* userMenu: Update to latest mockups [Florian; #675802]
* util: Don't double-fork when spawning from Alt-F2 [Colin; #675789]
* messageTray: Make Source usable without subclassing [Jasper; #661236]
* panel: Check for appMenu button's reactivity before opening [Florian; #676316]
* Fix formatting of bluetooth passkey [Florian; #651251]
* notificationDaemon: Filter out file-transfer notifications [Jasper; #676175]
* Don't use global.log() [Jasper; #675790]
* Fix broken extension loading in some distributions [Owen, Alexandre; #670477]
* shell-app: Raise windows in reverse order to preserve the stacking
[Rui; #676371]
* Generalize gdm-mode [Florian; #676156]
* Switch string formatting to the one inside gjs [Jasper; #675479]
* extensionUtils: Support subdirectories in getCurrentExtension
[Jasper; #677001]
* panel: Refuse to add (legacy) status icons not part of the session mode
[Florian; #677058]
* Add an initial-setup mode [Matthias; #676697]
* status/keyboard: Port to the new input sources settings [Rui; #641531]
* NetworkMenu: show notifications for failed VPN connections [Giovanni; #676330]
* userMenu: Indicate progress on status changes [Florian; #659067]
* recorder: Honor "disable-save-to-disk" lockdown key [Rūdolfs; #673630]
* searchDisplay: Use the rowLimit we pass to the IconGrid [Christian; #675527]
* endSessionDialog: Factor out _updateDescription from _updateContent
[Alejandro; #674210]
* Fix empathy's appMenu freezing the shell [Alban; #676447]
* Code cleanups [Florian, Giovanni, Jasper; #672807, #672413, #676837, #676850,
#672272]
* Misc bug fixes [Alban, Florian, Giovanni, Guillaume, Jasper, Piotr, Rico,
Ron, Rui, Stefano; #659968, #672192, #673177, #673198, #674323, #675301,
#675370, #676347, #676806, #677097]
Contributors:
Alban Browaeys, Giovanni Campagna, Matthias Clasen, Guillaume Desmottes,
Piotr Drąg, Stefano Facchini, Rui Matos, Rūdolfs Mazurs, Florian Müllner,
Alejandro Piñeiro, Neil Roberts, Alexandre Rostovtsev, Joseph Scheuhammer,
Jakub Steiner, Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz,
Colin Walters, Dan Winship, Ron Yorston
Translations:
OKANO Takayoshi [ja], Daniel Mustieles [es], Changwoo Ryu [ko],
Yaron Shahrabani [he], Fran Diéguez [gl], Jonh Wendell [pt_BR],
Kjartan Maraas [nb], Luca Ferretti [it], Tom Tryfonidis [el],
Sandeep Sheshrao Shedmake [mr], Takanori MATSUURA [ja], Dirgita [id],
Mantas Kriaučiūnas [lt], Matej Urbančič [sl], Jiro Matsuzawa [ja]
3.4.1
=====
* Fix crash that occurred when an icon theme change caused unexpected
reentrancy in the icon loading code [Jasper; #673512]
* Don't show system and other disabled users in the GDM user list
[Adel; #673784]
* Make gnome-shell-calendar-server initialize GTK+ so it can display
password prompts if needed [#673608; Owen, Rico]
* Adapt to Mutter API change for keybinding addition [Florian; #673014]
* Fix crash when an extension was installed as both a user extension
and a system extension [#673613; Jasper]
* Fix bug where chat entry could end up partially offscreen [Joost, 661944]
* Fix problem where icons weren't updating when theme was changed
[#672941; Florian]
* Look for Evolution calendar settings in GSettings, not GConf [#673610; Owen]
* Add <super>F10 for the application menu [#672909; Florian]
* Fix %Id format characters to work in translations [#673106; Cosimo]
(were already used in fa translation)
* Fix error when NetworkManager restarts [#673043; Giovanni]
* Improve efficiency of overview redraws by working around Clutter issue
[Stefano; #670636]
* Misc bug fixes [Florian, Giovanni, Jasper, Rui, Stefano;
#672592, #672641, #672719, #673187, #673233, #673656]
Contributors:
Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos,
Florian Müllner, Jasper St. Pierre, Owen Taylor, Rico Tzschichholz,
Joost Verdoorn
Translations:
Khaled Hosny [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Gil Forcada,
Jordi Serratosa [ca], Petr Kovar [cs], Bruce Cowan [en_GB],
Carles Ferrando [ca@valencia], Wolfgang Stöggl [de], Daniel Mustieles [es],
Arash Mousavi [fa], Bruno Brouard [fr], Fran Diéguez [gl],
Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu],
Shankar Prasad [kn], Žygimantas Beručka [lt], Rudolfs Mazurs [lv],
Sandeep Sheshrao Shedmake [mr], Kjartan Maraas [nb], Piotr Drąg [pl],
Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl],
Miroslav Nikolić [sr], Sasi Bhushan, Praveen Illa [te], Yinghua Wang [zh_CN]
3.4.0
=====
* Don't crash when taking screenshots [Jasper; #672775]
@ -119,10 +8,10 @@ Contributors:
Translations:
Khaled Hosny, Abderrahim Kitouni [ar], Ihar Hrachyshka [be],
Alexander Shopov [bg], Marek Černocký [cs], Jiri Grönroos, Timo Jyrinki [fi],
Alexander Shopov [bg], Marek Černocký [cz], Jiri Grönroos, Timo Jyrinki [fi],
Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he],
Gabor Kelemen [hu], Jiro Matsuzawa [ja], Kenneth Nielsen [dk],
Mattias Põldaru [et], Changwoo Ryu [ko], Rudolfs Mazurs [lv],
Mattias Põldaru [et], Changwoo Ryu [kr], Rudolfs Mazurs [lv],
Jonh Wendell [pt_BR], Yuri Myasoedov[ru], Daniel Korostil [uk],
Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW]
@ -191,7 +80,7 @@ Contributors:
Translations:
Nilamdyuti Goswami [as], Ihar Hrachyshka, Kasia Bondarava [be],
Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cs],
Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cz],
Mario Blättermann [de], Kris Thomsen [dk], Bruce Cowan [en_GB],
Kristjan Schmidt [eo], Daniel Mustieles [es], Mattias Põldaru [et],
Inaki Larranaga Murgoitio [eu], Arash Mousavi [fa], Timo Jyrinki [fi],
@ -240,7 +129,7 @@ Contributors:
Will Thompson, Stef Walter
Translations:
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cs],
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cz],
Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et],
Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it],
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb],
@ -371,7 +260,7 @@ Contributors:
Marina Zhurakhinskaya
Translations:
Petr Kovar [cs], Kris Thomsen [dk], Daniel Mustieles [es],
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
@ -534,7 +423,7 @@ Contributors:
Translations:
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
Petr Kovar [cs], Mario Blättermann [de], Kris Thomsen [dk],
Petr Kovar [cz], Mario Blättermann [de], Kris Thomsen [dk],
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],

View File

@ -41,7 +41,7 @@
"It can be used only by extensions.gnome.org"
#define PLUGIN_MIME_STRING "application/x-gnome-shell-integration::Gnome Shell Integration Dummy Content-Type";
#define PLUGIN_API_VERSION 4
#define PLUGIN_API_VERSION 3
typedef struct {
GDBusProxy *proxy;
@ -163,7 +163,6 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
plugin->newp = NPP_New;
plugin->destroy = NPP_Destroy;
plugin->getvalue = NPP_GetValue;
plugin->setwindow = NPP_SetWindow;
return NPERR_NO_ERROR;
}
@ -268,7 +267,6 @@ typedef struct {
NPObject parent;
NPP instance;
GDBusProxy *proxy;
GSettings *settings;
NPObject *listener;
NPObject *restart_listener;
gint signal_id;
@ -325,9 +323,6 @@ on_shell_appeared (GDBusConnection *connection,
}
}
#define SHELL_SCHEMA "org.gnome.shell"
#define ENABLED_EXTENSIONS_KEY "enabled-extensions"
static NPObject *
plugin_object_allocate (NPP instance,
NPClass *klass)
@ -337,7 +332,6 @@ plugin_object_allocate (NPP instance,
obj->instance = instance;
obj->proxy = g_object_ref (data->proxy);
obj->settings = g_settings_new (SHELL_SCHEMA);
obj->signal_id = g_signal_connect (obj->proxy, "g-signal",
G_CALLBACK (on_shell_signal), obj);
@ -498,61 +492,7 @@ plugin_enable_extension (PluginObject *obj,
NPString uuid,
gboolean enabled)
{
gboolean ret;
gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
gsize length;
gchar **uuids;
const gchar **new_uuids;
if (!uuid_is_valid (uuid_str))
{
g_free (uuid_str);
return FALSE;
}
uuids = g_settings_get_strv (obj->settings, ENABLED_EXTENSIONS_KEY);
length = g_strv_length (uuids);
if (enabled)
{
new_uuids = g_new (const gchar *, length + 2); /* New key, NULL */
memcpy (new_uuids, uuids, length * sizeof (*new_uuids));
new_uuids[length] = uuid_str;
new_uuids[length + 1] = NULL;
}
else
{
gsize i = 0, j = 0;
new_uuids = g_new (const gchar *, length);
for (i = 0; i < length; i ++)
{
if (g_str_equal (uuids[i], uuid_str))
continue;
new_uuids[j] = uuids[i];
j++;
}
new_uuids[j] = NULL;
}
ret = g_settings_set_strv (obj->settings,
ENABLED_EXTENSIONS_KEY,
new_uuids);
g_strfreev (uuids);
g_free (new_uuids);
g_free (uuid_str);
return ret;
}
static gboolean
plugin_install_extension (PluginObject *obj,
NPString uuid)
{
gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
if (!uuid_is_valid (uuid_str))
{
g_free (uuid_str);
@ -560,7 +500,7 @@ plugin_install_extension (PluginObject *obj,
}
g_dbus_proxy_call (obj->proxy,
"InstallRemoteExtension",
(enabled ? "EnableExtension" : "DisableExtension"),
g_variant_new ("(s)", uuid_str),
G_DBUS_CALL_FLAGS_NONE,
-1, /* timeout */
@ -573,6 +513,40 @@ plugin_install_extension (PluginObject *obj,
return TRUE;
}
static gboolean
plugin_install_extension (PluginObject *obj,
NPString uuid,
NPString version_tag)
{
gchar *uuid_str = g_strndup (uuid.UTF8Characters, uuid.UTF8Length);
gchar *version_tag_str;
if (!uuid_is_valid (uuid_str))
{
g_free (uuid_str);
return FALSE;
}
version_tag_str = g_strndup (version_tag.UTF8Characters,
version_tag.UTF8Length);
g_dbus_proxy_call (obj->proxy,
"InstallRemoteExtension",
g_variant_new ("(ss)",
uuid_str,
version_tag_str),
G_DBUS_CALL_FLAGS_NONE,
-1, /* timeout */
NULL, /* cancellable */
NULL, /* callback */
NULL /* user_data */);
g_free (uuid_str);
g_free (version_tag_str);
return TRUE;
}
static gboolean
plugin_uninstall_extension (PluginObject *obj,
NPString uuid,
@ -797,9 +771,11 @@ plugin_object_invoke (NPObject *npobj,
else if (name == install_extension_id)
{
if (!NPVARIANT_IS_STRING(args[0])) return FALSE;
if (!NPVARIANT_IS_STRING(args[1])) return FALSE;
return plugin_install_extension (obj,
NPVARIANT_TO_STRING(args[0]));
NPVARIANT_TO_STRING(args[0]),
NPVARIANT_TO_STRING(args[1]));
}
else if (name == uninstall_extension_id)
{
@ -970,12 +946,3 @@ NPP_GetValue(NPP instance,
return NPERR_NO_ERROR;
}
/* Opera tries to call NPP_SetWindow without checking the
* NULL pointer beforehand. */
NPError
NPP_SetWindow(NPP instance,
NPWindow *window)
{
return NPERR_NO_ERROR;
}

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.5.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.4.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@ -63,7 +63,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.9.16
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.29.18
MUTTER_MIN_VERSION=3.5.2
MUTTER_MIN_VERSION=3.3.92
FOLKS_MIN_VERSION=0.5.2
GTK_MIN_VERSION=3.3.9
GIO_MIN_VERSION=2.31.6
@ -75,7 +75,6 @@ TELEPATHY_LOGGER_MIN_VERSION=0.2.4
POLKIT_MIN_VERSION=0.100
STARTUP_NOTIFICATION_MIN_VERSION=0.11
GCR_MIN_VERSION=3.3.90
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
# Collect more than 20 libraries for a prize!
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
@ -96,8 +95,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
libnm-glib libnm-util gnome-keyring-1
gcr-3 >= $GCR_MIN_VERSION
gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
gcr-3 >= $GCR_MIN_VERSION)
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
@ -110,6 +108,8 @@ 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"
AC_SUBST(JHBUILD_TYPELIBDIR)
saved_CFLAGS=$CFLAGS
saved_LIBS=$LIBS
@ -123,7 +123,7 @@ PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 x11)
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.1)
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 0.1.7)
AC_MSG_CHECKING([for bluetooth support])
PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
@ -239,6 +239,31 @@ AC_ARG_ENABLE(jhbuild-wrapper-script,
AS_HELP_STRING([--enable-jhbuild-wrapper-script],[Make "gnome-shell" script work for jhbuild]),,enable_jhbuild_wrapper_script=no)
AM_CONDITIONAL(USE_JHBUILD_WRAPPER_SCRIPT, test "x$enable_jhbuild_wrapper_script" = xyes)
AC_MSG_CHECKING([location of system Certificate Authority list])
AC_ARG_WITH(ca-certificates,
[AC_HELP_STRING([--with-ca-certificates=@<:@path@:>@],
[path to system Certificate Authority list])])
if test "$with_ca_certificates" = "no"; then
AC_MSG_RESULT([disabled])
else
if test -z "$with_ca_certificates"; then
for f in /etc/pki/tls/certs/ca-bundle.crt \
/etc/ssl/certs/ca-certificates.crt; do
if test -f "$f"; then
with_ca_certificates="$f"
fi
done
if test -z "$with_ca_certificates"; then
AC_MSG_ERROR([could not find. Use --with-ca-certificates=path to set, or --without-ca-certificates to disable])
fi
fi
AC_MSG_RESULT($with_ca_certificates)
AC_DEFINE_UNQUOTED(SHELL_SYSTEM_CA_FILE, ["$with_ca_certificates"], [The system TLS CA list])
fi
AC_SUBST(SHELL_SYSTEM_CA_FILE,["$with_ca_certificates"])
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])

View File

@ -53,7 +53,7 @@ dist_theme_DATA = \
theme/ws-switch-arrow-up.svg \
theme/ws-switch-arrow-down.svg
gsettings_SCHEMAS = org.gnome.shell.gschema.xml org.gnome.shell.evolution.calendar.gschema.xml
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
@INTLTOOL_XML_NOMERGE_RULE@
@GSETTINGS_RULES@
@ -80,7 +80,6 @@ EXTRA_DIST = \
$(menu_DATA) \
$(shaders_DATA) \
$(convert_DATA) \
org.gnome.shell.evolution.calendar.gschema.xml.in \
org.gnome.shell.gschema.xml.in
CLEANFILES = \

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- NOTE: This schema is a GNOME 3.4 workaround - it uses the same path
as org.gnome.evolution.calendar, but avoids us requiring Evolution
be installed. In GNOME 3.6 the selected state will become a flag
on the calendar. Because the translations are in Evolution,
this is untranslated and in POTFILES.skip.
-->
<schemalist>
<schema path="/org/gnome/evolution/calendar/" id="org.gnome.shell.evolution.calendar" gettext-domain="evolution">
<key type="as" name="selected-calendars">
<default>[]</default>
<summary>List of selected calendars</summary>
<description>List of calendars to load</description>
</key>
<key type="as" name="selected-tasks">
<default>[]</default>
<summary>List of selected task lists</summary>
<description>List of task lists to load</description>
</key>
</schema>
</schemalist>

View File

@ -64,7 +64,6 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
<child name="clock" schema="org.gnome.shell.clock"/>
<child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="recorder" schema="org.gnome.shell.recorder"/>
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
</schema>
@ -79,24 +78,6 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
</key>
</schema>
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="open-application-menu" type="as">
<default>["&lt;Super&gt;F10"]</default>
<_summary>Keybinding to open the application menu</_summary>
<_description>
Keybinding to open the application menu.
</_description>
</key>
<key name="toggle-recording" type="as">
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
<_summary>Keybinding to toggle the screen recorder</_summary>
<_description>
Keybinding to start/stop the builtin screen recorder.
</_description>
</key>
</schema>
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
gettext-domain="@GETTEXT_PACKAGE@">
<key name="keyboard-type" type="s">

View File

@ -328,11 +328,6 @@ StScrollBar StButton#vhandle:hover
background-gradient-end: rgba(255, 255, 255, 0.2);
}
.notification-icon-button:insensitive,
.notification-button:insensitive {
color: #9f9f9f;
}
/* Panel */
#panel {
@ -362,7 +357,7 @@ StScrollBar StButton#vhandle:hover
}
.panel-corner {
-panel-corner-radius: 6px;
-panel-corner-radius: 10px;
-panel-corner-background-color: black;
-panel-corner-border-width: 2px;
-panel-corner-border-color: transparent;
@ -414,7 +409,7 @@ StScrollBar StButton#vhandle:hover
.panel-button:active,
.panel-button:overview,
.panel-button:focus {
border-image: url("panel-button-border.svg") 6 10 0 2;
border-image: url("panel-button-border.svg") 10 10 0 2;
background-image: url("panel-button-highlight-wide.svg");
color: white;
text-shadow: black 0px 2px 2px;
@ -1208,8 +1203,7 @@ StScrollBar StButton#vhandle:hover
height: 36px;
}
.notification {
font-size: 11pt;
#notification {
border-radius: 10px 10px 0px 0px;
background: rgba(0,0,0,0.8);
padding: 8px 8px 4px 8px;
@ -1218,7 +1212,7 @@ StScrollBar StButton#vhandle:hover
width: 34em;
}
.notification.multi-line-notification {
#notification.multi-line-notification {
padding-bottom: 8px;
}
@ -1240,7 +1234,7 @@ StScrollBar StButton#vhandle:hover
color: white;
}
.summary-boxpointer .notification {
.summary-boxpointer #notification {
border-radius: 9px;
background: rgba(0,0,0,0) !important;
padding-bottom: 12px;
@ -1257,6 +1251,10 @@ StScrollBar StButton#vhandle:hover
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;
}
@ -1265,24 +1263,28 @@ StScrollBar StButton#vhandle:hover
padding-left: 8px;
}
.notification-scrollview {
#notification-scrollview {
max-height: 10em;
-st-vfade-offset: 24px;
}
.notification-scrollview:ltr > StScrollBar {
#notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
height: 1em;
}
#notification-scrollview:ltr > StScrollBar {
padding-left: 6px;
}
.notification-scrollview:rtl > StScrollBar {
#notification-scrollview:rtl > StScrollBar {
padding-right: 6px;
}
.notification-body {
#notification-body {
spacing: 5px;
}
.notification-actions {
#notification-actions {
spacing: 10px;
}
@ -1409,7 +1411,7 @@ StScrollBar StButton#vhandle:hover
font-style: italic;
}
.notification StEntry {
#notification StEntry {
padding: 4px;
border-radius: 4px;
color: #a8a8a8;
@ -1425,7 +1427,7 @@ StScrollBar StButton#vhandle:hover
caret-size: 1px;
}
.notification StEntry:focus {
#notification StEntry:focus {
border: 1px solid #8b8b8b;
color: #333333;
background-gradient-direction: vertical;
@ -1715,7 +1717,7 @@ StScrollBar StButton#vhandle:hover
}
.lightbox {
background-color: rgba(0, 0, 0, 0.4);
background-color: black;
}
.flashspot {
@ -1948,12 +1950,10 @@ StScrollBar StButton#vhandle:hover
padding-bottom: 8px;
}
.hidden {
color: rgba(0,0,0,0);
}
/* intentionally left transparent to avoid dialog changing size */
.prompt-dialog-null-label {
font-size: 10pt;
color: rgba(0,0,0,0);
padding-bottom: 8px;
}

View File

@ -9,7 +9,7 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="17"
width="21"
height="10"
id="svg2"
version="1.1"
@ -66,9 +66,9 @@
<rect
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
id="rect3796"
width="7"
width="3"
height="2"
x="5"
x="9"
y="8" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -9,7 +9,7 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="65"
width="64"
height="22"
id="svg3273"
version="1.1"

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -9,7 +9,7 @@
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="65"
width="64"
height="22"
id="svg3012"
version="1.1"

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -66,11 +66,4 @@ its dependencies to build from tarballs.</description>
<gnome:userid>marinaz</gnome:userid>
</foaf:Person>
</maintainer>
<maintainer>
<foaf:Person>
<foaf:name>Florian Müllner</foaf:name>
<foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" />
<gnome:userid>fmuellner</gnome:userid>
</foaf:Person>
</maintainer>
</Project>

View File

@ -28,6 +28,7 @@ nobase_dist_js_DATA = \
misc/config.js \
misc/extensionUtils.js \
misc/fileUtils.js \
misc/format.js \
misc/gnomeSession.js \
misc/history.js \
misc/jsParse.js \
@ -66,7 +67,6 @@ nobase_dist_js_DATA = \
ui/messageTray.js \
ui/modalDialog.js \
ui/networkAgent.js \
ui/sessionMode.js \
ui/shellEntry.js \
ui/shellMountOperation.js \
ui/notificationDaemon.js \
@ -78,6 +78,7 @@ nobase_dist_js_DATA = \
ui/popupMenu.js \
ui/remoteSearch.js \
ui/runDialog.js \
ui/screenShield.js \
ui/scripting.js \
ui/search.js \
ui/searchDisplay.js \

View File

@ -6,11 +6,11 @@ const GObject = imports.gi.GObject;
const Gio = imports.gi.Gio;
const Gtk = imports.gi.Gtk;
const Pango = imports.gi.Pango;
const Format = imports.format;
const _ = Gettext.gettext;
const Config = imports.misc.config;
const Format = imports.misc.format;
const ExtensionUtils = imports.misc.extensionUtils;
@ -210,7 +210,7 @@ const Application = new Lang.Class({
try {
extension = ExtensionUtils.createExtensionObject(uuid, dir, type);
} catch(e) {
logError(e, 'Could not create extensions object');
global.logError('' + e);
return;
}
@ -257,7 +257,7 @@ function initEnvironment() {
},
logError: function(s) {
log('ERROR: ' + s);
global.log('ERROR: ' + s);
},
userdatadir: GLib.build_filenamev([GLib.get_user_data_dir(), 'gnome-shell'])

View File

@ -11,17 +11,10 @@ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
</method>
</interface>;
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
function FprintManager() {
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
g_interface_name: FprintManagerInfo.name,
g_interface_info: FprintManagerInfo,
g_name: 'net.reactivated.Fprint',
g_object_path: '/net/reactivated/Fprint/Manager',
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
self.init(null);
return self;
}
return new FprintManagerProxy(Gio.DBus.system,
'net.reactivated.Fprint',
'/net/reactivated/Fprint/Manager');
};

View File

@ -488,9 +488,6 @@ const UserList = new Lang.Class({
if (user.is_system_account())
return;
if (user.locked)
return;
let userName = user.get_user_name();
if (!userName)

View File

@ -60,8 +60,10 @@ const PowerMenuButton = new Lang.Class({
},
_updateVisibility: function() {
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
this.actor.visible = shouldBeVisible;
if (!this._haveSuspend && !this._haveShutdown && !this._haveRestart)
this.actor.hide();
else
this.actor.show();
},
_updateHaveShutdown: function() {
@ -74,7 +76,11 @@ const PowerMenuButton = new Lang.Class({
else
this._haveShutdown = false;
this._powerOffItem.actor.visible = this._haveShutdown;
if (this._haveShutdown)
this._powerOffItem.actor.show();
else
this._powerOffItem.actor.hide();
this._updateVisibility();
}));
} else {
@ -85,7 +91,12 @@ const PowerMenuButton = new Lang.Class({
else
this._haveShutdown = false;
this._powerOffItem.actor.visible = this._haveShutdown;
if (this._haveShutdown) {
this._powerOffItem.actor.show();
} else {
this._powerOffItem.actor.hide();
}
this._updateVisibility();
}));
}
@ -101,7 +112,11 @@ const PowerMenuButton = new Lang.Class({
else
this._haveRestart = false;
this._restartItem.actor.visible = this._haveRestart;
if (this._haveRestart)
this._restartItem.actor.show();
else
this._restartItem.actor.hide();
this._updateVisibility();
}));
} else {
@ -112,7 +127,12 @@ const PowerMenuButton = new Lang.Class({
else
this._haveRestart = false;
this._restartItem.actor.visible = this._haveRestart;
if (this._haveRestart) {
this._restartItem.actor.show();
} else {
this._restartItem.actor.hide();
}
this._updateVisibility();
}));
}
@ -120,7 +140,12 @@ const PowerMenuButton = new Lang.Class({
_updateHaveSuspend: function() {
this._haveSuspend = this._upClient.get_can_suspend();
this._suspendItem.actor.visible = this._haveSuspend;
if (this._haveSuspend)
this._suspendItem.actor.show();
else
this._suspendItem.actor.hide();
this._updateVisibility();
},

View File

@ -8,6 +8,8 @@ const PACKAGE_VERSION = '@PACKAGE_VERSION@';
const GJS_VERSION = '@GJS_VERSION@';
/* 1 if gnome-bluetooth is available, 0 otherwise */
const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@;
/* The system TLS CA list */
const SHELL_SYSTEM_CA_FILE = '@SHELL_SYSTEM_CA_FILE@';
/* gettext package */
const GETTEXT_PACKAGE = '@GETTEXT_PACKAGE@';
/* locale dir */

View File

@ -40,18 +40,13 @@ function getCurrentExtension() {
throw new Error('Could not find current extension');
let path = match[1];
let file = Gio.File.new_for_path(path);
let uuid = GLib.path_get_basename(GLib.path_get_dirname(path));
// Walk up the directory tree, looking for an extesion with
// the same UUID as a directory name.
while (file != null) {
let extension = extensions[file.get_basename()];
if (extension !== undefined)
return extension;
file = file.get_parent();
}
let extension = extensions[uuid];
if (extension === undefined)
throw new Error('Could not find current extension');
throw new Error('Could not find current extension');
return extension;
}
/**
@ -125,7 +120,7 @@ function createExtensionObject(uuid, dir, type) {
// Encourage people to add this
if (!meta.url) {
log('Warning: Missing "url" property in %s/metadata.json'.format(uuid));
global.log('Warning: Missing "url" property in metadata.json');
}
if (uuid != meta.uuid) {
@ -162,7 +157,7 @@ function init() {
if (!userExtensionsDir.query_exists(null))
userExtensionsDir.make_directory_with_parents(null);
} catch (e) {
logError(e, 'Could not create extensions directory');
global.logError('' + e);
}
}
@ -172,7 +167,7 @@ function scanExtensionsInDirectory(callback, dir, type) {
try {
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
} catch(e) {
logError(e, 'Could not enumerate extensions directory');
global.logError('' + e);
return;
}
@ -189,11 +184,11 @@ function scanExtensionsInDirectory(callback, dir, type) {
function scanExtensions(callback) {
let systemDataDirs = GLib.get_system_data_dirs();
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
for (let i = 0; i < systemDataDirs.length; i++) {
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
let dir = Gio.file_new_for_path(dirPath);
if (dir.query_exists(null))
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
}
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
}

60
js/misc/format.js Normal file
View File

@ -0,0 +1,60 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/*
* This function is intended to extend the String object and provide
* an String.format API for string formatting.
* It has to be set up using String.prototype.format = Format.format;
* Usage:
* "somestring %s %d".format('hello', 5);
* It supports %s, %d, %x and %f, for %f it also support precisions like
* "%.2f".format(1.526). All specifiers can be prefixed with a minimum
* field width, e.g. "%5s".format("foo"). Unless the width is prefixed
* with '0', the formatted string will be padded with spaces.
*/
function format() {
let str = this;
let i = 0;
let args = arguments;
return str.replace(/%([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, widthGroup, precisionGroup, genericGroup) {
if (precisionGroup != '' && genericGroup != 'f')
throw new Error("Precision can only be specified for 'f'");
let fillChar = (widthGroup[0] == '0') ? '0' : ' ';
let width = parseInt(widthGroup, 10) || 0;
function fillWidth(s, c, w) {
let fill = '';
for (let i = 0; i < w; i++)
fill += c;
return fill.substr(s.length) + s;
}
let s = '';
switch (genericGroup) {
case '%':
return '%';
break;
case 's':
s = args[i++].toString();
break;
case 'd':
s = parseInt(args[i++]).toString();
break;
case 'x':
s = parseInt(args[i++]).toString(16);
break;
case 'f':
if (precisionGroup == '')
s = parseFloat(args[i++]).toString();
else
s = parseFloat(args[i++]).toFixed(parseInt(precisionGroup));
break;
default:
throw new Error('Unsupported conversion character %' + genericGroup);
}
return fillWidth(s, fillChar, width);
});
}

View File

@ -83,11 +83,10 @@ function spawnCommandLine(command_line) {
// this will throw an error.
function trySpawn(argv)
{
var success, pid;
try {
[success, pid] = GLib.spawn_async(null, argv, null,
GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
null, null);
GLib.spawn_async(null, argv, null,
GLib.SpawnFlags.SEARCH_PATH,
null, null);
} catch (err) {
if (err.code == GLib.SpawnError.G_SPAWN_ERROR_NOENT) {
err.message = _("Command not found");
@ -102,10 +101,6 @@ function trySpawn(argv)
throw err;
}
// Dummy child watch; we don't want to double-fork internally
// because then we lose the parent-child relationship, which
// can break polkit. See https://bugzilla.redhat.com//show_bug.cgi?id=819275
GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null);
}
// trySpawnCommandLine:

View File

@ -312,10 +312,11 @@ const AppSearchProvider = new Lang.Class({
_init: function() {
this.parent(_("APPLICATIONS"));
this._appSys = Shell.AppSystem.get_default();
},
getResultMetas: function(apps, callback) {
getResultMetas: function(apps) {
let metas = [];
for (let i = 0; i < apps.length; i++) {
let app = apps[i];
@ -326,15 +327,15 @@ const AppSearchProvider = new Lang.Class({
}
});
}
callback(metas);
return metas;
},
getInitialResultSet: function(terms) {
this.searchSystem.pushResults(this, this._appSys.initial_search(terms));
return this._appSys.initial_search(terms);
},
getSubsearchResultSet: function(previousResults, terms) {
this.searchSystem.pushResults(this, this._appSys.subsearch(previousResults, terms));
return this._appSys.subsearch(previousResults, terms);
},
activateResult: function(app, params) {
@ -377,7 +378,7 @@ const SettingsSearchProvider = new Lang.Class({
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
},
getResultMetas: function(prefs, callback) {
getResultMetas: function(prefs) {
let metas = [];
for (let i = 0; i < prefs.length; i++) {
let pref = prefs[i];
@ -388,15 +389,15 @@ const SettingsSearchProvider = new Lang.Class({
}
});
}
callback(metas);
return metas;
},
getInitialResultSet: function(terms) {
this.searchSystem.pushResults(this, this._appSys.search_settings(terms));
return this._appSys.search_settings(terms);
},
getSubsearchResultSet: function(previousResults, terms) {
this.searchSystem.pushResults(this, this._appSys.search_settings(terms));
return this._appSys.search_settings(terms);
},
activateResult: function(pref, params) {

View File

@ -262,11 +262,12 @@ const AutorunResidentSource = new Lang.Class({
Extends: MessageTray.Source,
_init: function() {
this.parent(_("Removable Devices"), 'media-removable', St.IconType.FULLCOLOR);
this.parent(_("Removable Devices"));
this._mounts = [];
this._notification = new AutorunResidentNotification(this);
this._setSummaryIcon(this.createNotificationIcon());
},
addMount: function(mount, apps) {
@ -309,6 +310,12 @@ const AutorunResidentSource = new Lang.Class({
Main.messageTray.add(this);
this.pushNotification(this._notification);
}
},
createNotificationIcon: function() {
return new St.Icon ({ icon_name: 'media-removable',
icon_type: St.IconType.FULLCOLOR,
icon_size: this.ICON_SIZE });
}
});
@ -493,11 +500,11 @@ const AutorunTransientSource = new Lang.Class({
Extends: MessageTray.Source,
_init: function(mount, apps) {
this.parent(mount.get_name());
this.mount = mount;
this.apps = apps;
this.parent(mount.get_name());
this._notification = new AutorunTransientNotification(this);
this._setSummaryIcon(this.createNotificationIcon());

View File

@ -63,7 +63,7 @@ const Contact = new Lang.Class({
this.individual.full_name ||
this.individual.nickname ||
email ||
C_("contact", "Unknown");
_("Unknown");
let aliasLabel = new St.Label({ text: aliasText,
style_class: 'contact-details-alias' });
details.add(aliasLabel, { x_fill: true,
@ -154,7 +154,7 @@ const ContactSearchProvider = new Lang.Class({
this._contactSys = Shell.ContactSystem.get_default();
},
getResultMetas: function(ids, callback) {
getResultMetas: function(ids) {
let metas = [];
for (let i = 0; i < ids.length; i++) {
let contact = new Contact(ids[i]);
@ -165,15 +165,15 @@ const ContactSearchProvider = new Lang.Class({
}
});
}
callback(metas);
return metas;
},
getInitialResultSet: function(terms) {
this.searchSystem.pushResults(this, this._contactSys.initial_search(terms));
return this._contactSys.initial_search(terms);
},
getSubsearchResultSet: function(previousResults, terms) {
this.searchSystem.pushResults(this, this._contactSys.subsearch(previousResults, terms));
return this._contactSys.subsearch(previousResults, terms);
},
createResultActor: function(resultMeta, terms) {

View File

@ -168,17 +168,7 @@ const DashItemContainer = new Lang.Class({
});
},
destroy: function() {
if (this.label)
this.label.destroy();
this.actor.destroy();
},
animateOutAndDestroy: function() {
if (this.label)
this.label.destroy();
if (this.child == null) {
this.actor.destroy();
return;
@ -701,7 +691,7 @@ const Dash = new Lang.Class({
if (Main.overview.visible)
item.animateOutAndDestroy();
else
item.destroy();
item.actor.destroy();
}
this._adjustIconSize();

View File

@ -45,7 +45,9 @@ const DateMenuButton = new Lang.Class({
Name: 'DateMenuButton',
Extends: PanelMenu.Button,
_init: function() {
_init: function(params) {
params = Params.parse(params, { showEvents: true });
let item;
let hbox;
let vbox;
@ -73,11 +75,11 @@ const DateMenuButton = new Lang.Class({
// Date
this._date = new St.Label();
this.actor.label_actor = this._clock;
this.actor.label_actor = this._date;
this._date.style_class = 'datemenu-date-label';
vbox.add(this._date);
if (Main.sessionMode.showCalendarEvents) {
if (params.showEvents) {
this._eventSource = new Calendar.DBusEventSource();
this._eventList = new Calendar.EventsList(this._eventSource);
} else {
@ -108,7 +110,7 @@ const DateMenuButton = new Lang.Class({
item.actor.reparent(vbox);
}
if (Main.sessionMode.showCalendarEvents) {
if (params.showEvents) {
// Add vertical separator
item = new St.DrawingArea({ style_class: 'calendar-vertical-separator',

View File

@ -342,7 +342,7 @@ const EndSessionDialog = new Lang.Class({
}
},
_updateDescription: function() {
_updateContent: function() {
if (this.state != ModalDialog.State.OPENING &&
this.state != ModalDialog.State.OPENED)
return;
@ -352,6 +352,17 @@ const EndSessionDialog = new Lang.Class({
let subject = dialogContent.subject;
let description;
if (this._user.is_loaded && !dialogContent.iconName) {
let iconFile = this._user.get_icon_file();
if (GLib.file_test(iconFile, GLib.FileTest.EXISTS))
this._setIconFromFile(iconFile, dialogContent.iconStyleClass);
else
this._setIconFromName('avatar-default', dialogContent.iconStyleClass);
} else if (dialogContent.iconName) {
this._setIconFromName(dialogContent.iconName,
dialogContent.iconStyleClass);
}
if (this._inhibitors.length > 0) {
this._stopTimer();
description = dialogContent.inhibitedDescription;
@ -384,27 +395,6 @@ const EndSessionDialog = new Lang.Class({
_setLabelText(this._descriptionLabel, description);
},
_updateContent: function() {
if (this.state != ModalDialog.State.OPENING &&
this.state != ModalDialog.State.OPENED)
return;
let dialogContent = DialogContent[this._type];
if (this._user.is_loaded && !dialogContent.iconName) {
let iconFile = this._user.get_icon_file();
if (GLib.file_test(iconFile, GLib.FileTest.EXISTS))
this._setIconFromFile(iconFile, dialogContent.iconStyleClass);
else
this._setIconFromName('avatar-default', dialogContent.iconStyleClass);
} else if (dialogContent.iconName) {
this._setIconFromName(dialogContent.iconName,
dialogContent.iconStyleClass);
}
this._updateDescription();
},
_updateButtons: function() {
let dialogContent = DialogContent[this._type];
let buttons = [{ action: Lang.bind(this, this.cancel),
@ -451,7 +441,7 @@ const EndSessionDialog = new Lang.Class({
{ _secondsLeft: 0,
time: this._secondsLeft,
transition: 'linear',
onUpdate: Lang.bind(this, this._updateDescription),
onUpdate: Lang.bind(this, this._updateContent),
onComplete: Lang.bind(this, function() {
let dialogContent = DialogContent[this._type];
let button = dialogContent.confirmButtons[dialogContent.confirmButtons.length - 1];

View File

@ -39,19 +39,11 @@ function _patchContainerClass(containerClass) {
};
}
function _makeLoggingFunc(func) {
return function() {
return func([].join.call(arguments, ', '));
};
}
function init() {
// Add some bindings to the global JS namespace; (gjs keeps the web
// browser convention of having that namespace be called 'window'.)
window.global = Shell.Global.get();
window.log = _makeLoggingFunc(window.log);
window._ = Gettext.gettext;
window.C_ = Gettext.pgettext;
window.ngettext = Gettext.ngettext;
@ -90,7 +82,7 @@ function init() {
}
// OK, now things are initialized enough that we can import shell JS
const Format = imports.format;
const Format = imports.misc.format;
const Tweener = imports.ui.tweener;
Tweener.init();

View File

@ -34,11 +34,24 @@ const REPOSITORY_URL_BASE = 'https://extensions.gnome.org';
const REPOSITORY_URL_DOWNLOAD = REPOSITORY_URL_BASE + '/download-extension/%s.shell-extension.zip';
const REPOSITORY_URL_INFO = REPOSITORY_URL_BASE + '/extension-info/';
const _httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
const _httpSession = new Soup.SessionAsync();
// The unfortunate state of gjs, gobject-introspection and libsoup
// means that I have to do a hack to add a feature.
// See: https://bugzilla.gnome.org/show_bug.cgi?id=655189 for context.
// _httpSession.add_feature(new Soup.ProxyResolverDefault());
Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());
if (Soup.Session.prototype.add_feature != null)
Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());
function _getCertFile() {
let localCert = GLib.build_filenamev([global.userdatadir, 'extensions.gnome.org.crt']);
if (GLib.file_test(localCert, GLib.FileTest.EXISTS))
return localCert;
else
return Config.SHELL_SYSTEM_CA_FILE;
}
_httpSession.ssl_ca_file = _getCertFile();
// Arrays of uuids
var enabledExtensions;
@ -56,16 +69,18 @@ const disconnect = Lang.bind(_signals, _signals.disconnect);
const ENABLED_EXTENSIONS_KEY = 'enabled-extensions';
function installExtensionFromUUID(uuid) {
function installExtensionFromUUID(uuid, version_tag) {
let params = { uuid: uuid,
shell_version: Config.PACKAGE_VERSION };
version_tag: version_tag,
shell_version: Config.PACKAGE_VERSION,
api_version: API_VERSION.toString() };
let message = Soup.form_request_new_from_hash('GET', REPOSITORY_URL_INFO, params);
_httpSession.queue_message(message,
function(session, message) {
let info = JSON.parse(message.response_body.data);
let dialog = new InstallExtensionDialog(uuid, info);
let dialog = new InstallExtensionDialog(uuid, version_tag, info.name);
dialog.open(global.get_current_time());
});
}
@ -100,13 +115,21 @@ function gotExtensionZipFile(session, message, uuid) {
return;
}
let [file, stream] = Gio.File.new_tmp('XXXXXX.shell-extension.zip');
// FIXME: use a GFile mkstemp-type method once one exists
let fd, tmpzip;
try {
[fd, tmpzip] = GLib.file_open_tmp('XXXXXX.shell-extension.zip');
} catch (e) {
logExtensionError(uuid, 'tempfile: ' + e.toString());
return;
}
let stream = new Gio.UnixOutputStream({ fd: fd });
let dir = ExtensionUtils.userExtensionsDir.get_child(uuid);
let contents = message.response_body.flatten().as_bytes();
stream.output_stream.write_bytes(contents, null);
Shell.write_soup_message_to_stream(stream, message);
stream.close(null);
let [success, pid] = GLib.spawn_async(null,
['unzip', '-uod', dir.get_path(), '--', file.get_path()],
['unzip', '-uod', dir.get_path(), '--', tmpzip],
null,
GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
null);
@ -214,7 +237,7 @@ function logExtensionError(uuid, message, state) {
extension.errors = [];
extension.errors.push(message);
log('Extension "%s" had error: %s'.format(uuid, message));
global.logError('Extension "%s" had error: %s'.format(uuid, message));
state = state || ExtensionState.ERROR;
_signals.emit('extension-state-changed', { uuid: uuid,
error: message,
@ -226,8 +249,7 @@ function loadExtension(dir, type, enabled) {
let extension;
if (ExtensionUtils.extensions[uuid] != undefined) {
log('Extension "%s" is already loaded'.format(uuid));
return;
throw new Error('extension already loaded');
}
try {
@ -255,6 +277,7 @@ function loadExtension(dir, type, enabled) {
}
_signals.emit('extension-state-changed', extension);
global.log('Loaded extension ' + uuid);
}
function initExtension(uuid) {
@ -366,11 +389,12 @@ const InstallExtensionDialog = new Lang.Class({
Name: 'InstallExtensionDialog',
Extends: ModalDialog.ModalDialog,
_init: function(uuid, info) {
_init: function(uuid, version_tag, name) {
this.parent({ styleClass: 'extension-dialog' });
this._uuid = uuid;
this._info = info;
this._version_tag = version_tag;
this._name = name;
this.setButtons([{ label: _("Cancel"),
action: Lang.bind(this, this._onCancelButtonPressed),
@ -380,17 +404,13 @@ const InstallExtensionDialog = new Lang.Class({
action: Lang.bind(this, this._onInstallButtonPressed)
}]);
let message = _("Download and install '%s' from extensions.gnome.org?").format(info.name);
let message = _("Download and install '%s' from extensions.gnome.org?").format(name);
let box = new St.BoxLayout();
this.contentLayout.add(box);
this._descriptionLabel = new St.Label({ text: message });
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_uri(REPOSITORY_URL_BASE + info.icon) })
let icon = new St.Icon({ gicon: gicon });
box.add(icon);
let label = new St.Label({ text: message });
box.add(label);
this.contentLayout.add(this._descriptionLabel,
{ y_fill: true,
y_align: St.Align.START });
},
_onCancelButtonPressed: function(button, event) {
@ -414,7 +434,9 @@ const InstallExtensionDialog = new Lang.Class({
_signals.emit('extension-state-changed', state);
let params = { shell_version: Config.PACKAGE_VERSION };
let params = { version_tag: this._version_tag,
shell_version: Config.PACKAGE_VERSION,
api_version: API_VERSION.toString() };
let url = REPOSITORY_URL_DOWNLOAD.format(this._uuid);
let message = Soup.form_request_new_from_hash('GET', url, params);

View File

@ -146,6 +146,11 @@ const BaseIcon = new Lang.Class({
size = found ? len : ICON_SIZE;
}
// don't create icons unnecessarily
if (size == this.iconSize &&
this._iconBin.child)
return;
this._createIconTexture(size);
}
});
@ -282,10 +287,6 @@ const IconGrid = new Lang.Class({
return this._computeLayout(rowWidth)[0];
},
getRowLimit: function() {
return this._rowLimit;
},
_computeLayout: function (forWidth) {
let nColumns = 0;
let usedWidth = 0;

View File

@ -541,8 +541,16 @@ const KeyboardSource = new Lang.Class({
Extends: MessageTray.Source,
_init: function(keyboard) {
this.parent(_("Keyboard"));
this._keyboard = keyboard;
this.parent(_("Keyboard"), 'input-keyboard', St.IconType.SYMBOLIC);
this._setSummaryIcon(this.createNotificationIcon());
},
createNotificationIcon: function() {
return new St.Icon({ icon_name: 'input-keyboard',
icon_type: St.IconType.SYMBOLIC,
icon_size: this.ICON_SIZE });
},
handleSummaryClick: function() {

View File

@ -8,6 +8,8 @@ const St = imports.gi.St;
const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
const DEFAULT_FADE_FACTOR = 0.4;
/**
* Lightbox:
* @container: parent Clutter.Container
@ -15,7 +17,8 @@ const Tweener = imports.ui.tweener;
* - inhibitEvents: whether to inhibit events for @container
* - width: shade actor width
* - height: shade actor height
* - fadeTime: seconds used to fade in/out
* - fadeInTime: seconds used to fade in
* - fadeOutTime: seconds used to fade out
*
* Lightbox creates a dark translucent "shade" actor to hide the
* contents of @container, and allows you to specify particular actors
@ -38,12 +41,16 @@ const Lightbox = new Lang.Class({
params = Params.parse(params, { inhibitEvents: false,
width: null,
height: null,
fadeTime: null
fadeInTime: null,
fadeOutTime: null,
fadeFactor: DEFAULT_FADE_FACTOR
});
this._container = container;
this._children = container.get_children();
this._fadeTime = params.fadeTime;
this._fadeInTime = params.fadeInTime;
this._fadeOutTime = params.fadeOutTime;
this._fadeFactor = params.fadeFactor;
this.actor = new St.Bin({ x: 0,
y: 0,
style_class: 'lightbox',
@ -52,6 +59,7 @@ const Lightbox = new Lang.Class({
container.add_actor(this.actor);
this.actor.raise_top();
this.actor.hide();
this.shown = false;
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
@ -93,24 +101,30 @@ const Lightbox = new Lang.Class({
},
show: function() {
if (this._fadeTime) {
if (this._fadeInTime) {
this.shown = false;
this.actor.opacity = 0;
Tweener.addTween(this.actor,
{ opacity: 255,
time: this._fadeTime,
transition: 'easeOutQuad'
{ opacity: 255 * this._fadeFactor,
time: this._fadeInTime,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this.shown = true;
})
});
} else {
this.actor.opacity = 255;
this.actor.opacity = 255 * this._fadeFactor;
this.shown = true;
}
this.actor.show();
},
hide: function() {
if (this._fadeTime) {
this.shown = false;
if (this._fadeOutTime) {
Tweener.addTween(this.actor,
{ opacity: 0,
time: this._fadeTime,
time: this._fadeOutTime,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this.actor.hide();

View File

@ -400,14 +400,7 @@ const ObjInspector = new Lang.Class({
button.connect('clicked', Lang.bind(this, this.close));
hbox.add(button);
if (typeof(obj) == typeof({})) {
let properties = [];
for (let propName in obj) {
properties.push(propName);
}
properties.sort();
for (let i = 0; i < properties.length; i++) {
let propName = properties[i];
let valueStr;
let link;
try {
@ -634,6 +627,45 @@ const Inspector = new Lang.Class({
Signals.addSignalMethods(Inspector.prototype);
const ErrorLog = new Lang.Class({
Name: 'ErrorLog',
_init: function() {
this.actor = new St.BoxLayout();
this.text = new St.Label();
this.actor.add(this.text);
// We need to override StLabel's default ellipsization when
// using line_wrap; otherwise ClutterText's layout is going
// to constrain both the width and height, which prevents
// scrolling.
this.text.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this.text.clutter_text.line_wrap = true;
this.actor.connect('notify::mapped', Lang.bind(this, this._renderText));
},
_formatTime: function(d){
function pad(n) { return n < 10 ? '0' + n : n; }
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z';
},
_renderText: function() {
if (!this.actor.mapped)
return;
let text = this.text.text;
let stack = Main._getAndClearErrorStack();
for (let i = 0; i < stack.length; i++) {
let logItem = stack[i];
text += logItem.category + ' t=' + this._formatTime(new Date(logItem.timestamp)) + ' ' + logItem.message + '\n';
}
this.text.text = text;
}
});
const Memory = new Lang.Class({
Name: 'Memory',
@ -908,6 +940,9 @@ const LookingGlass = new Lang.Class({
}));
notebook.appendPage('Windows', this._windowList.actor);
this._errorLog = new ErrorLog();
notebook.appendPage('Errors', this._errorLog.actor);
this._memory = new Memory();
notebook.appendPage('Memory', this._memory.actor);

View File

@ -16,7 +16,6 @@ const Params = imports.misc.params;
const MOUSE_POLL_FREQUENCY = 50;
const CROSSHAIRS_CLIP_SIZE = [100, 100];
const NO_CHANGE = 0.0;
// Settings
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
@ -25,13 +24,6 @@ const SHOW_KEY = 'screen-magnifier-enabled';
const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier';
const SCREEN_POSITION_KEY = 'screen-position';
const MAG_FACTOR_KEY = 'mag-factor';
const INVERT_LIGHTNESS_KEY = 'invert-lightness';
const BRIGHT_RED_KEY = 'brightness-red';
const BRIGHT_GREEN_KEY = 'brightness-green';
const BRIGHT_BLUE_KEY = 'brightness-blue';
const CONTRAST_RED_KEY = 'contrast-red';
const CONTRAST_GREEN_KEY = 'contrast-green';
const CONTRAST_BLUE_KEY = 'contrast-blue';
const LENS_MODE_KEY = 'lens-mode';
const CLAMP_MODE_KEY = 'scroll-at-edges';
const MOUSE_TRACKING_KEY = 'mouse-tracking';
@ -451,21 +443,6 @@ const Magnifier = new Lang.Class({
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
if (aPref)
zoomRegion.setMouseTrackingMode(aPref);
aPref = this._settings.get_boolean(INVERT_LIGHTNESS_KEY);
if (aPref)
zoomRegion.setInvertLightness(aPref);
let bc = {};
bc.r = this._settings.get_double(BRIGHT_RED_KEY);
bc.g = this._settings.get_double(BRIGHT_GREEN_KEY);
bc.b = this._settings.get_double(BRIGHT_BLUE_KEY);
zoomRegion.setBrightness(bc);
bc.r = this._settings.get_double(CONTRAST_RED_KEY);
bc.g = this._settings.get_double(CONTRAST_GREEN_KEY);
bc.b = this._settings.get_double(CONTRAST_BLUE_KEY);
zoomRegion.setContrast(bc);
}
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
@ -488,23 +465,6 @@ const Magnifier = new Lang.Class({
this._settings.connect('changed::' + MOUSE_TRACKING_KEY,
Lang.bind(this, this._updateMouseTrackingMode));
this._settings.connect('changed::' + INVERT_LIGHTNESS_KEY,
Lang.bind(this, this._updateInvertLightness));
this._settings.connect('changed::' + BRIGHT_RED_KEY,
Lang.bind(this, this._updateBrightness));
this._settings.connect('changed::' + BRIGHT_GREEN_KEY,
Lang.bind(this, this._updateBrightness));
this._settings.connect('changed::' + BRIGHT_BLUE_KEY,
Lang.bind(this, this._updateBrightness));
this._settings.connect('changed::' + CONTRAST_RED_KEY,
Lang.bind(this, this._updateContrast));
this._settings.connect('changed::' + CONTRAST_GREEN_KEY,
Lang.bind(this, this._updateContrast));
this._settings.connect('changed::' + CONTRAST_BLUE_KEY,
Lang.bind(this, this._updateContrast));
this._settings.connect('changed::' + SHOW_CROSS_HAIRS_KEY,
Lang.bind(this, function() {
this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY));
@ -580,38 +540,7 @@ const Magnifier = new Lang.Class({
this._settings.get_enum(MOUSE_TRACKING_KEY)
);
}
},
_updateInvertLightness: function() {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setInvertLightness(
this._settings.get_boolean(INVERT_LIGHTNESS_KEY)
);
}
},
_updateBrightness: function() {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
let brightness = {};
brightness.r = this._settings.get_double(BRIGHT_RED_KEY);
brightness.g = this._settings.get_double(BRIGHT_GREEN_KEY);
brightness.b = this._settings.get_double(BRIGHT_BLUE_KEY);
this._zoomRegions[0].setBrightness(brightness);
}
},
_updateContrast: function() {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
let contrast = {};
contrast.r = this._settings.get_double(CONTRAST_RED_KEY);
contrast.g = this._settings.get_double(CONTRAST_GREEN_KEY);
contrast.b = this._settings.get_double(CONTRAST_BLUE_KEY);
this._zoomRegions[0].setContrast(contrast);
}
},
}
});
Signals.addSignalMethods(Magnifier.prototype);
@ -625,9 +554,6 @@ const ZoomRegion = new Lang.Class({
this._clampScrollingAtEdges = false;
this._lensMode = false;
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
this._invertLightness = false;
this._brightness = { r: NO_CHANGE, g: NO_CHANGE, b: NO_CHANGE };
this._contrast = { r: NO_CHANGE, g: NO_CHANGE, b: NO_CHANGE };
this._magView = null;
this._background = null;
@ -953,86 +879,6 @@ const ZoomRegion = new Lang.Class({
}
},
/**
* setInvertLightness:
* Set whether to invert the lightness of the magnified view.
* @flag Boolean to either invert brightness (true), or not (false).
*/
setInvertLightness: function(flag) {
this._invertLightness = flag;
if (this._magShaderEffects)
this._magShaderEffects.setInvertLightness(this._invertLightness);
},
/**
* getInvertLightness:
* Retrieve whether the lightness is inverted.
* @return Boolean indicating inversion (true), or not (false).
*/
getInvertLightness: function() {
return this._invertLightness;
},
/**
* setBrightness:
* Alter the brightness of the magnified view.
* @brightness Object containing the contrast for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* brightness (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed brightness, respectively.
*/
setBrightness: function(brightness) {
this._brightness.r = brightness.r;
this._brightness.g = brightness.g;
this._brightness.b = brightness.b;
if (this._magShaderEffects)
this._magShaderEffects.setBrightness(this._brightness);
},
/**
* getBrightness:
* Retrive the current brightness of the Zoom Region.
* @return Object containing the brightness change for the red, green,
* and blue channels.
*/
getBrightness: function() {
let brightness = {};
brightness.r = this._brightness.r;
brightness.g = this._brightness.g;
brightness.b = this._brightness.b;
return brightness;
},
/**
* setContrast:
* Alter the contrast of the magnified view.
* @contrast Object containing the contrast for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* contrast (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed contrast, respectively.
*/
setContrast: function(contrast) {
this._contrast.r = contrast.r;
this._contrast.g = contrast.g;
this._contrast.b = contrast.b;
if (this._magShaderEffects)
this._magShaderEffects.setContrast(this._contrast);
},
/**
* getContrast:
* Retreive the contrast of the magnified view.
* @return Object containing the contrast for the red, green,
* and blue channels.
*/
getContrast: function() {
let contrast = {};
contrast.r = this._contrast.r;
contrast.g = this._contrast.g;
contrast.b = this._contrast.b;
return contrast;
},
//// Private methods ////
_createActors: function() {
@ -1071,12 +917,6 @@ const ZoomRegion = new Lang.Class({
this._crossHairsActor = this._crossHairs.addToZoomRegion(this, this._mouseActor);
else
this._crossHairsActor = null;
// Contrast and brightness effects.
this._magShaderEffects = new MagShaderEffects(this._uiGroupClone);
this._magShaderEffects.setInvertLightness(this._invertLightness);
this._magShaderEffects.setBrightness(this._brightness);
this._magShaderEffects.setContrast(this._contrast);
},
_destroyActors: function() {
@ -1085,8 +925,6 @@ const ZoomRegion = new Lang.Class({
if (this._crossHairs)
this._crossHairs.removeFromParent(this._crossHairsActor);
this._magShaderEffects.destroyEffects();
this._magShaderEffects = null;
this._magView.destroy();
this._magView = null;
this._background = null;
@ -1390,7 +1228,10 @@ const Crosshairs = new Lang.Class({
crosshairsActor = new Clutter.Clone({ source: this._actor });
this._clones.push(crosshairsActor);
}
crosshairsActor.visible = this._actor.visible;
if (this._actor.visible)
crosshairsActor.show();
else
crosshairsActor.hide();
container.add_actor(crosshairsActor);
container.raise_child(magnifiedMouse, crosshairsActor);
@ -1595,133 +1436,3 @@ const Crosshairs = new Lang.Class({
this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom);
}
});
const MagShaderEffects = new Lang.Class({
Name: 'MagShaderEffects',
_init: function(uiGroupClone) {
this._inverse = new Shell.InvertLightnessEffect();
this._brightnessContrast = new Clutter.BrightnessContrastEffect();
this._inverse.set_enabled(false);
this._brightnessContrast.set_enabled(false);
this._magView = uiGroupClone;
this._magView.add_effect(this._inverse);
this._magView.add_effect(this._brightnessContrast);
},
/**
* destroyEffects:
* Remove contrast and brightness effects from the magnified view, and
* lose the reference to the actor they were applied to. Don't use this
* object after calling this.
*/
destroyEffects: function() {
this._magView.clear_effects();
this._brightnessContrast = null;
this._inverse = null;
this._magView = null;
},
/**
* setInvertLightness:
* Enable/disable invert lightness effect.
* @invertFlag: Enabled flag.
*/
setInvertLightness: function(invertFlag) {
this._inverse.set_enabled(invertFlag);
},
/**
* getInvertLightness:
* Report whether the inversion effect is enabled.
* @return: Boolean.
*/
getInvertLightness: function() {
return this._inverse.get_enabled();
},
/**
* setBrightness:
* Set the brightness of the magnified view.
* @brightness: Object containing the brightness for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* brightness (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed brightness,
* respectively.
*/
setBrightness: function(brightness) {
let bRed = brightness.r;
let bGreen = brightness.g;
let bBlue = brightness.b;
this._brightnessContrast.set_brightness_full(bRed, bGreen, bBlue);
// Enable the effect if the brightness OR contrast change are such that
// it modifies the brightness and/or contrast.
let [cRed, cGreen, cBlue] = this._brightnessContrast.get_contrast();
this._brightnessContrast.set_enabled(
(bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE ||
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE)
);
},
/**
* getBrightness:
* Retrieve current brightness of the magnified view.
* @return: Object containing the brightness for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* brightness (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed brightness, respectively.
*/
getBrightness: function() {
let result = {};
let [bRed, bGreen, bBlue] = this._brightnessContrast.get_brightness();
result.r = bRed;
result.g = bGreen;
result.b = bBlue;
return result;
},
/**
* Set the contrast of the magnified view.
* @contrast: Object containing the contrast for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* contrast (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed contrast, respectively.
*/
setContrast: function(contrast) {
let cRed = contrast.r;
let cGreen = contrast.g;
let cBlue = contrast.b;
this._brightnessContrast.set_contrast_full(cRed, cGreen, cBlue);
// Enable the effect if the contrast OR brightness change are such that
// it modifies the brightness and/or contrast.
// should be able to use Clutter.color_equal(), but that complains of
// a null first argument.
let [bRed, bGreen, bBlue] = this._brightnessContrast.get_brightness();
this._brightnessContrast.set_enabled(
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE ||
bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE
);
},
/**
* Retrieve current contrast of the magnified view.
* @return: Object containing the contrast for the red, green,
* and blue channels. Values of 0.0 represent "standard"
* contrast (no change), whereas values less or greater than
* 0.0 indicate decreased or incresaed contrast, respectively.
*/
getContrast: function() {
let resutl = {};
let [cRed, cGreen, cBlue] = this._brightnessContrast.get_contrast();
result.r = cRed;
result.g = cGreen;
result.b = cBlue;
return result;
}
});

View File

@ -29,8 +29,8 @@ const LookingGlass = imports.ui.lookingGlass;
const NetworkAgent = imports.ui.networkAgent;
const NotificationDaemon = imports.ui.notificationDaemon;
const WindowAttentionHandler = imports.ui.windowAttentionHandler;
const ScreenShield = imports.ui.screenShield;
const Scripting = imports.ui.scripting;
const SessionMode = imports.ui.sessionMode;
const ShellDBus = imports.ui.shellDBus;
const TelepathyClient = imports.ui.telepathyClient;
const WindowManager = imports.ui.windowManager;
@ -47,17 +47,18 @@ let automountManager = null;
let autorunManager = null;
let panel = null;
let hotCorners = [];
let placesManager = null;
let overview = null;
let runDialog = null;
let lookingGlass = null;
let wm = null;
let messageTray = null;
let screenShield = null;
let notificationDaemon = null;
let windowAttentionHandler = null;
let telepathyClient = null;
let ctrlAltTabManager = null;
let recorder = null;
let sessionMode = null;
let shellDBusService = null;
let modalCount = 0;
let modalActorFocusStack = [];
@ -68,27 +69,28 @@ let statusIconDispatcher = null;
let keyboard = null;
let layoutManager = null;
let networkAgent = null;
let _errorLogStack = [];
let _startDate;
let _defaultCssStylesheet = null;
let _cssStylesheet = null;
let _gdmCssStylesheet = null;
let _overridesSettings = null;
let background = null;
function createUserSession() {
function _createUserSession() {
// Load the calendar server. Note that we are careful about
// not loading any events until the user presses the clock
global.launch_calendar_server();
placesManager = new PlaceDisplay.PlacesManager();
telepathyClient = new TelepathyClient.Client();
automountManager = new AutomountManager.AutomountManager();
autorunManager = new AutorunManager.AutorunManager();
networkAgent = new NetworkAgent.NetworkAgent();
_initRecorder();
}
function createGDMSession() {
function _createGDMSession() {
// We do this this here instead of at the top to prevent GDM
// related code from getting loaded in normal user sessions
const LoginDialog = imports.gdm.loginDialog;
@ -99,26 +101,18 @@ function createGDMSession() {
});
}
function createInitialSetupSession() {
networkAgent = new NetworkAgent.NetworkAgent();
}
function _initRecorder() {
let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
let desktopLockdownSettings = new Gio.Settings({ schema: 'org.gnome.desktop.lockdown' });
let bindingSettings = new Gio.Settings({ schema: 'org.gnome.shell.keybindings' });
global.display.add_keybinding('toggle-recording',
bindingSettings,
Meta.KeyBindingFlags.NONE, function() {
global.screen.connect('toggle-recording', function() {
if (recorder == null) {
recorder = new Shell.Recorder({ stage: global.stage });
}
if (recorder.is_recording()) {
recorder.close();
recorder.pause();
Meta.enable_unredirect_for_screen(global.screen);
} else if (!desktopLockdownSettings.get_boolean('disable-save-to-disk')) {
} else {
// read the parameters from GSettings always in case they have changed
recorder.set_framerate(recorderSettings.get_int('framerate'));
/* Translators: this is a filename used for screencast recording */
@ -137,17 +131,38 @@ function _initRecorder() {
});
}
function _initUserSession() {
_initRecorder();
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1);
ExtensionSystem.init();
ExtensionSystem.loadExtensions();
Meta.keybindings_set_custom_handler('panel-run-dialog', function() {
getRunDialog().open();
});
Meta.keybindings_set_custom_handler('panel-main-menu', function () {
overview.toggle();
});
global.display.connect('overlay-key', Lang.bind(overview, overview.toggle));
}
function start() {
// These are here so we don't break compatibility.
global.logError = window.log;
global.log = window.log;
// Monkey patch utility functions into the global proxy;
// This is easier and faster than indirecting down into global
// if we want to call back up into JS.
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');
sessionMode = new SessionMode.SessionMode();
shellDBusService = new ShellDBus.GnomeShell();
// Ensure ShellWindowTracker and ShellAppUsage are initialized; this will
@ -170,6 +185,7 @@ function start() {
global.stage.no_clear_hint = true;
_defaultCssStylesheet = global.datadir + '/theme/gnome-shell.css';
_gdmCssStylesheet = global.datadir + '/theme/gdm.css';
loadTheme();
// Set up stage hierarchy to group all UI actors under one container.
@ -180,16 +196,9 @@ function start() {
for (let i = 0; i < children.length; i++)
children[i].allocate_preferred_size(flags);
});
uiGroup.connect('get-preferred-width',
function(actor, forHeight, alloc) {
let width = global.stage.width;
[alloc.min_size, alloc.natural_size] = [width, width];
});
uiGroup.connect('get-preferred-height',
function(actor, forWidth, alloc) {
let height = global.stage.height;
[alloc.min_size, alloc.natural_size] = [height, height];
});
let constraint = new Clutter.BindConstraint({ source: global.stage,
coordinate: Clutter.BindCoordinate.SIZE });
uiGroup.add_constraint(constraint);
global.window_group.reparent(uiGroup);
global.overlay_group.reparent(uiGroup);
global.stage.add_actor(uiGroup);
@ -197,17 +206,22 @@ function start() {
layoutManager = new Layout.LayoutManager();
xdndHandler = new XdndHandler.XdndHandler();
ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager();
overview = new Overview.Overview();
// This overview object is just a stub for non-user sessions
overview = new Overview.Overview({ isDummy: global.session_type != Shell.SessionType.USER });
magnifier = new Magnifier.Magnifier();
statusIconDispatcher = new StatusIconDispatcher.StatusIconDispatcher();
panel = new Panel.Panel();
wm = new WindowManager.WindowManager();
messageTray = new MessageTray.MessageTray();
screenShield = new ScreenShield.ScreenShield();
keyboard = new Keyboard.Keyboard();
notificationDaemon = new NotificationDaemon.NotificationDaemon();
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
sessionMode.createSession();
if (global.session_type == Shell.SessionType.USER)
_createUserSession();
else if (global.session_type == Shell.SessionType.GDM)
_createGDMSession();
panel.startStatusArea();
@ -215,30 +229,8 @@ function start() {
keyboard.init();
overview.init();
if (sessionMode.hasWorkspaces)
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
false, -1, 1);
if (sessionMode.allowExtensions) {
ExtensionSystem.init();
ExtensionSystem.loadExtensions();
}
if (sessionMode.hasRunDialog) {
Meta.keybindings_set_custom_handler('panel-run-dialog', function() {
getRunDialog().open();
});
}
if (sessionMode.hasOverview) {
Meta.keybindings_set_custom_handler('panel-main-menu', function () {
overview.toggle();
});
global.display.connect('overlay-key',
Lang.bind(overview, overview.toggle));
}
if (global.session_type == Shell.SessionType.USER)
_initUserSession();
statusIconDispatcher.start(messageTray.actor);
// Provide the bus object for gnome-session to
@ -255,6 +247,7 @@ function start() {
global.stage.connect('captured-event', _globalKeyPressHandler);
_log('info', 'loaded at ' + _startDate);
log('GNOME Shell started at ' + _startDate);
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
@ -497,8 +490,8 @@ function loadTheme() {
let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
if (sessionMode.extraStylesheet)
theme.load_stylesheet(sessionMode.extraStylesheet);
if (global.session_type == Shell.SessionType.GDM)
theme.load_stylesheet(_gdmCssStylesheet);
if (previousTheme) {
let customStylesheets = previousTheme.get_custom_stylesheets();
@ -540,6 +533,59 @@ function notifyError(msg, details) {
notify(msg, details);
}
/**
* _log:
* @category: string message type ('info', 'error')
* @msg: A message string
* ...: Any further arguments are converted into JSON notation,
* and appended to the log message, separated by spaces.
*
* Log a message into the LookingGlass error
* stream. This is primarily intended for use by the
* extension system as well as debugging.
*/
function _log(category, msg) {
let text = msg;
if (arguments.length > 2) {
text += ': ';
for (let i = 2; i < arguments.length; i++) {
text += JSON.stringify(arguments[i]);
if (i < arguments.length - 1)
text += ' ';
}
}
_errorLogStack.push({timestamp: new Date().getTime(),
category: category,
message: text });
}
function _logError(msg) {
return _log('error', msg);
}
function _logDebug(msg) {
return _log('debug', msg);
}
// Used by the error display in lookingGlass.js
function _getAndClearErrorStack() {
let errors = _errorLogStack;
_errorLogStack = [];
return errors;
}
function logStackTrace(msg) {
try {
throw new Error();
} catch (e) {
// e.stack must have at least two lines, with the first being
// logStackTrace() (which we strip off), and the second being
// our caller.
let trace = e.stack.substr(e.stack.indexOf('\n') + 1);
log(msg ? (msg + '\n' + trace) : trace);
}
}
function isWindowActorDisplayedOnWorkspace(win, workspaceIndex) {
return win.get_workspace() == workspaceIndex ||
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
@ -562,11 +608,6 @@ function _globalKeyPressHandler(actor, event) {
if (event.type() != Clutter.EventType.KEY_PRESS)
return false;
if (!sessionMode.allowKeybindingsWhenModal) {
if (modalCount > (overview.visible ? 1 : 0))
return false;
}
let symbol = event.get_key_symbol();
let keyCode = event.get_key_code();
let ignoredModifiers = global.display.get_ignored_modifier_mask();
@ -575,6 +616,11 @@ function _globalKeyPressHandler(actor, event) {
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
let action = global.display.get_keybinding_action(keyCode, modifierState);
// Other bindings are only available to the user session when the overview is up and
// no modal dialog is present.
if (global.session_type == Shell.SessionType.USER && (!overview.visible || modalCount > 1))
return false;
// This isn't a Meta.KeyBindingAction yet
if (symbol == Clutter.Super_L || symbol == Clutter.Super_R) {
overview.hide();
@ -587,39 +633,28 @@ function _globalKeyPressHandler(actor, event) {
return true;
}
// None of the other bindings are relevant outside of the user's session
if (global.session_type != Shell.SessionType.USER)
return false;
switch (action) {
// left/right would effectively act as synonyms for up/down if we enabled them;
// but that could be considered confusing; we also disable them in the main view.
//
// case Meta.KeyBindingAction.WORKSPACE_LEFT:
// if (!sessionMode.hasWorkspaces)
// return false;
//
// wm.actionMoveWorkspaceLeft();
// return true;
// case Meta.KeyBindingAction.WORKSPACE_RIGHT:
// if (!sessionMode.hasWorkspaces)
// return false;
//
// wm.actionMoveWorkspaceRight();
// return true;
case Meta.KeyBindingAction.WORKSPACE_UP:
if (!sessionMode.hasWorkspaces)
return false;
wm.actionMoveWorkspaceUp();
return true;
case Meta.KeyBindingAction.WORKSPACE_DOWN:
if (!sessionMode.hasWorkspaces)
return false;
wm.actionMoveWorkspaceDown();
return true;
case Meta.KeyBindingAction.PANEL_RUN_DIALOG:
case Meta.KeyBindingAction.COMMAND_2:
if (!sessionMode.hasRunDialog)
return false;
getRunDialog().open();
return true;
case Meta.KeyBindingAction.PANEL_MAIN_MENU:
@ -638,6 +673,10 @@ function _findModal(actor) {
return -1;
}
function isInModalStack(actor) {
return _findModal(actor) != -1;
}
/**
* pushModal:
* @actor: #ClutterActor which will be given keyboard focus
@ -892,8 +931,7 @@ function initializeDeferredWork(actor, callback, props) {
function queueDeferredWork(workId) {
let data = _deferredWorkData[workId];
if (!data) {
let message = 'Invalid work id %d'.format(workId);
logError(new Error(message), message);
global.logError('invalid work id ', workId);
return;
}
if (_deferredWorkQueue.indexOf(workId) < 0)

View File

@ -441,7 +441,7 @@ const Notification = new Lang.Class({
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._table = new St.Table({ style_class: 'notification',
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);
@ -577,7 +577,7 @@ const Notification = new Lang.Class({
if (params.body)
this.addBody(params.body, params.bodyMarkup);
this.updated();
this._updated();
},
setIconVisible: function(visible) {
@ -586,21 +586,19 @@ const Notification = new Lang.Class({
enableScrolling: function(enableScrolling) {
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
if (this._scrollArea) {
if (this._scrollArea)
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
this._scrollArea.enable_mouse_scrolling = enableScrolling;
}
},
_createScrollArea: function() {
this._table.add_style_class_name('multi-line-notification');
this._scrollArea = new St.ScrollView({ style_class: 'notification-scrollview',
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
vscrollbar_policy: this._scrollPolicy,
hscrollbar_policy: Gtk.PolicyType.NEVER });
this._table.add(this._scrollArea, { row: 1,
col: 2 });
this._updateLastColumnSettings();
this._contentArea = new St.BoxLayout({ style_class: 'notification-body',
this._contentArea = new St.BoxLayout({ name: 'notification-body',
vertical: true });
this._scrollArea.add_actor(this._contentArea);
// If we know the notification will be expandable, we need to add
@ -618,7 +616,7 @@ const Notification = new Lang.Class({
}
this._contentArea.add(actor, style ? style : {});
this.updated();
this._updated();
},
// addBody:
@ -681,7 +679,7 @@ const Notification = new Lang.Class({
this._table.add_style_class_name('multi-line-notification');
this._table.add(this._actionArea, props);
this._updateLastColumnSettings();
this.updated();
this._updated();
},
_updateLastColumnSettings: function() {
@ -736,7 +734,7 @@ const Notification = new Lang.Class({
addButton: function(id, label) {
if (!this._buttonBox) {
let box = new St.BoxLayout({ style_class: 'notification-actions' });
let box = new St.BoxLayout({ name: 'notification-actions' });
this.setActionArea(box, { x_expand: false,
y_expand: false,
x_fill: false,
@ -746,7 +744,6 @@ const Notification = new Lang.Class({
}
let button = new St.Button({ can_focus: true });
button._actionId = id;
if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(id)) {
button.add_style_class_name('notification-icon-button');
@ -763,32 +760,7 @@ const Notification = new Lang.Class({
this._buttonFocusManager.add_group(this._buttonBox);
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
this.updated();
},
// setButtonSensitive:
// @id: the action ID
// @sensitive: whether the button should be sensitive
//
// If the notification contains a button with action ID @id,
// its sensitivity will be set to @sensitive. Insensitive
// buttons cannot be clicked.
setButtonSensitive: function(id, sensitive) {
if (!this._buttonBox)
return;
let button = this._buttonBox.get_children().filter(function(b) {
return b._actionId == id;
})[0];
if (!button || button.reactive == sensitive)
return;
button.reactive = sensitive;
if (sensitive)
button.remove_style_pseudo_class('insensitive');
else
button.add_style_pseudo_class('insensitive');
this._updated();
},
setUrgency: function(urgency) {
@ -884,7 +856,7 @@ const Notification = new Lang.Class({
if (this._canExpandContent()) {
this._addBannerBody();
this._table.add_style_class_name('multi-line-notification');
this.updated();
this._updated();
}
return false;
}));
@ -895,7 +867,7 @@ const Notification = new Lang.Class({
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
},
updated: function() {
_updated: function() {
if (this.expanded)
this.expand(false);
},
@ -986,10 +958,8 @@ const Source = new Lang.Class({
ICON_SIZE: 24,
_init: function(title, iconName, iconType) {
_init: function(title) {
this.title = title;
this.iconName = iconName;
this.iconType = iconType;
this.actor = new Shell.GenericContainer();
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
@ -1019,8 +989,6 @@ const Source = new Lang.Class({
this.isMuted = false;
this.notifications = [];
this._setSummaryIcon(this.createNotificationIcon());
},
_getPreferredWidth: function (actor, forHeight, alloc) {
@ -1091,12 +1059,10 @@ const Source = new Lang.Class({
},
// Called to create a new icon actor (of size this.ICON_SIZE).
// Provides a sane default implementation, override if you need
// something more fancy.
// Must be overridden by the subclass if you do not pass icons
// explicitly to the Notification() constructor.
createNotificationIcon: function() {
return new St.Icon({ icon_name: this.iconName,
icon_type: this.iconType,
icon_size: this.ICON_SIZE });
throw new Error('no implementation of createNotificationIcon in ' + this);
},
// Unlike createNotificationIcon, this always returns the same actor;
@ -1147,14 +1113,16 @@ const Source = new Lang.Class({
},
//// Protected methods ////
// The subclass must call this at least once to set the summary icon.
_setSummaryIcon: function(icon) {
if (this._iconBin.child)
this._iconBin.child.destroy();
this._iconBin.child = icon;
},
// Default implementation is to do nothing, but subclasses can override
open: function(notification) {
this.emit('opened', notification);
},
destroyNonResidentNotifications: function() {
@ -2519,7 +2487,15 @@ const SystemNotificationSource = new Lang.Class({
Extends: Source,
_init: function() {
this.parent(_("System Information"), 'dialog-information', St.IconType.SYMBOLIC);
this.parent(_("System Information"));
this._setSummaryIcon(this.createNotificationIcon());
},
createNotificationIcon: function() {
return new St.Icon({ icon_name: 'dialog-information',
icon_type: St.IconType.SYMBOLIC,
icon_size: this.ICON_SIZE });
},
open: function() {

View File

@ -221,19 +221,12 @@ const NotificationDaemon = new Lang.Class({
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
let id;
for (let hint in hints) {
// unpack the variants
hints[hint] = hints[hint].deep_unpack();
}
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
// Filter out chat, presence, calls and invitation notifications from
// Empathy, since we handle that information from telepathyClient.js
if (appName == 'Empathy' && (hints['category'] == 'im.received' ||
hints['category'] == 'x-empathy.im.room-invitation' ||
hints['category'] == 'x-empathy.call.incoming' ||
hints['category'] == 'x-empathy.transfer.incoming' ||
hints['category'] == 'x-empathy.call.incoming"' ||
hints['category'] == 'x-empathy.im.subscription-request' ||
hints['category'] == 'presence.online' ||
hints['category'] == 'presence.offline')) {
@ -256,6 +249,13 @@ const NotificationDaemon = new Lang.Class({
}
}
for (let hint in hints) {
// unpack the variants
hints[hint] = hints[hint].deep_unpack();
}
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
// Be compatible with the various hints for image data and image path
// 'image-data' and 'image-path' are the latest name of these hints, introduced in 1.2
@ -483,7 +483,7 @@ const NotificationDaemon = new Lang.Class({
},
_onTrayIconAdded: function(o, icon) {
let source = this._getSource(icon.title || icon.wm_class || C_("program", "Unknown"), icon.pid, null, null, icon);
let source = this._getSource(icon.title || icon.wm_class || _("Unknown"), icon.pid, null, null, icon);
},
_onTrayIconRemoved: function(o, icon) {
@ -578,27 +578,11 @@ const Source = new Lang.Class({
return true;
},
_getApp: function() {
let app;
app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
if (app != null)
return app;
if (this.trayIcon) {
app = Shell.AppSystem.get_default().lookup_wmclass(this.trayIcon.wmclass);
if (app != null)
return app;
}
return null;
},
_setApp: function() {
if (this.app)
return;
this.app = this._getApp();
this.app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
if (!this.app)
return;
@ -638,10 +622,5 @@ const Source = new Lang.Class({
}
this.parent();
},
createNotificationIcon: function() {
// We set the summary icon ourselves.
return null;
}
});

View File

@ -99,8 +99,10 @@ const ShellInfo = new Lang.Class({
const Overview = new Lang.Class({
Name: 'Overview',
_init : function() {
this.isDummy = !Main.sessionMode.hasOverview;
_init : function(params) {
params = Params.parse(params, { isDummy: false });
this.isDummy = params.isDummy;
// We only have an overview in user sessions, so
// create a dummy overview in other cases

View File

@ -4,7 +4,6 @@ const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@ -14,6 +13,7 @@ const St = imports.gi.St;
const Signals = imports.signals;
const Atk = imports.gi.Atk;
const Config = imports.misc.config;
const CtrlAltTab = imports.ui.ctrlAltTab;
const DND = imports.ui.dnd;
const Layout = imports.ui.layout;
@ -31,6 +31,33 @@ const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
const SPINNER_ANIMATION_TIME = 0.2;
const STANDARD_STATUS_AREA_ORDER = ['a11y', 'keyboard', 'volume', 'bluetooth', 'network', 'battery', 'userMenu'];
const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator,
'userMenu': imports.ui.userMenu.UserMenuButton
};
if (Config.HAVE_BLUETOOTH)
STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
try {
STANDARD_STATUS_AREA_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');
}
const GDM_STATUS_AREA_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'battery', 'powerMenu'];
const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = {
'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator,
'powerMenu': imports.gdm.powerMenu.PowerMenuButton
};
// 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
@ -934,7 +961,7 @@ const Panel = new Lang.Class({
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
/* Button on the left side of the panel. */
if (Main.sessionMode.hasOverview) {
if (global.session_type == Shell.SessionType.USER) {
this._activitiesButton = new ActivitiesButton();
this._activities = this._activitiesButton.actor;
this._leftBox.add(this._activities);
@ -942,19 +969,28 @@ const Panel = new Lang.Class({
// The activities button has a pretend menu, so as to integrate
// more cleanly with the rest of the panel
this._menus.addMenu(this._activitiesButton.menu);
}
if (Main.sessionMode.hasAppMenu) {
this._appMenu = new AppMenuButton(this._menus);
this._leftBox.add(this._appMenu.actor);
}
/* center */
this._dateMenu = new DateMenu.DateMenuButton();
if (global.session_type == Shell.SessionType.USER)
this._dateMenu = new DateMenu.DateMenuButton({ showEvents: true });
else
this._dateMenu = new DateMenu.DateMenuButton({ showEvents: false });
this._centerBox.add(this._dateMenu.actor, { y_fill: true });
this._menus.addMenu(this._dateMenu.menu);
/* right */
if (global.session_type == Shell.SessionType.GDM) {
this._status_area_order = GDM_STATUS_AREA_ORDER;
this._status_area_shell_implementation = GDM_STATUS_AREA_SHELL_IMPLEMENTATION;
} else {
this._status_area_order = STANDARD_STATUS_AREA_ORDER;
this._status_area_shell_implementation = STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION;
}
Main.statusIconDispatcher.connect('status-icon-added', Lang.bind(this, this._onTrayIconAdded));
Main.statusIconDispatcher.connect('status-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
@ -1076,19 +1112,10 @@ const Panel = new Lang.Class({
return true;
},
openAppMenu: function() {
let menu = this._appMenu.menu;
if (!this._appMenu.actor.reactive || menu.isOpen)
return;
menu.open();
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
},
startStatusArea: function() {
for (let i = 0; i < Main.sessionMode.statusArea.order.length; i++) {
let role = Main.sessionMode.statusArea.order[i];
let constructor = Main.sessionMode.statusArea.implementation[role];
for (let i = 0; i < this._status_area_order.length; i++) {
let role = this._status_area_order[i];
let constructor = this._status_area_shell_implementation[role];
if (!constructor) {
// This icon is not implemented (this is a bug)
continue;
@ -1138,21 +1165,18 @@ const Panel = new Lang.Class({
},
_onTrayIconAdded: function(o, icon, role) {
if (Main.sessionMode.statusArea.implementation[role]) {
if (this._status_area_shell_implementation[role]) {
// This icon is legacy, and replaced by a Shell version
// Hide it
return;
}
if (Main.sessionMode.statusArea.order.indexOf(role) == -1)
return;
icon.height = PANEL_ICON_SIZE;
let buttonBox = new PanelMenu.ButtonBox();
let box = buttonBox.actor;
box.add_actor(icon);
this._insertStatusItem(box, Main.sessionMode.statusArea.order.indexOf(role));
this._insertStatusItem(box, this._status_area_order.indexOf(role));
},
_onTrayIconRemoved: function(o, icon) {

View File

@ -189,7 +189,7 @@ const PlacesManager = new Lang.Class({
this._volumeMonitor.connect('drive-changed', Lang.bind(this, this._updateDevices));
this._updateDevices();
this._bookmarksPath = GLib.build_filenamev([GLib.get_user_config_dir(), 'gtk-3.0', 'bookmarks']);
this._bookmarksPath = GLib.build_filenamev([GLib.get_home_dir(), '.gtk-bookmarks']);
this._bookmarksFile = Gio.file_new_for_path(this._bookmarksPath);
this._monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
this._bookmarkTimeoutId = 0;
@ -365,13 +365,12 @@ const PlaceSearchProvider = new Lang.Class({
_init: function() {
this.parent(_("PLACES & DEVICES"));
this.placesManager = new PlacesManager();
},
getResultMetas: function(resultIds, callback) {
getResultMetas: function(resultIds) {
let metas = [];
for (let i = 0; i < resultIds.length; i++) {
let placeInfo = this.placesManager.lookupPlaceById(resultIds[i]);
let placeInfo = Main.placesManager.lookupPlaceById(resultIds[i]);
if (!placeInfo)
metas.push(null);
else
@ -382,22 +381,24 @@ const PlaceSearchProvider = new Lang.Class({
}
});
}
callback(metas);
return metas;
},
activateResult: function(id, params) {
let placeInfo = this.placesManager.lookupPlaceById(id);
let placeInfo = Main.placesManager.lookupPlaceById(id);
placeInfo.launch(params);
},
_compareResultMeta: function (idA, idB) {
let infoA = this.placesManager.lookupPlaceById(idA);
let infoB = this.placesManager.lookupPlaceById(idB);
let infoA = Main.placesManager.lookupPlaceById(idA);
let infoB = Main.placesManager.lookupPlaceById(idB);
return infoA.name.localeCompare(infoB.name);
},
_searchPlaces: function(places, terms) {
let multiplePrefixResults = [];
let prefixResults = [];
let multipleSubstringResults = [];
let substringResults = [];
terms = terms.map(String.toLowerCase);
@ -405,26 +406,29 @@ const PlaceSearchProvider = new Lang.Class({
for (let i = 0; i < places.length; i++) {
let place = places[i];
let mtype = place.matchTerms(terms);
if (mtype == Search.MatchType.PREFIX)
if (mtype == Search.MatchType.MULTIPLE_PREFIX)
multiplePrefixResults.push(place.id);
else if (mtype == Search.MatchType.PREFIX)
prefixResults.push(place.id);
else if (mtype == Search.MatchType.MULTIPLE_SUBSTRING)
multipleSubstringResults.push(place.id);
else if (mtype == Search.MatchType.SUBSTRING)
substringResults.push(place.id);
}
prefixResults.sort(Lang.bind(this, this._compareResultMeta));
substringResults.sort(Lang.bind(this, this._compareResultMeta));
this.searchSystem.pushResults(this, prefixResults.concat(substringResults));
multiplePrefixResults.sort(this._compareResultMeta);
prefixResults.sort(this._compareResultMeta);
multipleSubstringResults.sort(this._compareResultMeta);
substringResults.sort(this._compareResultMeta);
return multiplePrefixResults.concat(prefixResults.concat(multipleSubstringResults.concat(substringResults)));
},
getInitialResultSet: function(terms) {
let places = this.placesManager.getAllPlaces();
this._searchPlaces(places, terms);
let places = Main.placesManager.getAllPlaces();
return this._searchPlaces(places, terms);
},
getSubsearchResultSet: function(previousResults, terms) {
let places = previousResults.map(Lang.bind(this, function(id) {
return this.placesManager.lookupPlaceById(id);
}));
this._searchPlaces(places, terms);
let places = previousResults.map(function (id) { return Main.placesManager.lookupPlaceById(id); });
return this._searchPlaces(places, terms);
}
});

View File

@ -167,7 +167,6 @@ const AuthenticationDialog = new Lang.Class({
*/
this._nullMessageLabel = new St.Label({ style_class: 'prompt-dialog-null-label',
text: 'abc'});
this._nullMessageLabel.add_style_class_name('hidden');
this._nullMessageLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._nullMessageLabel.clutter_text.line_wrap = true;
messageBox.add(this._nullMessageLabel);

View File

@ -546,10 +546,6 @@ const PopupSliderMenuItem = new Lang.Class({
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
this.actor.connect('notify::mapped', Lang.bind(this, function() {
if (!this.actor.mapped)
this._endDragging();
}));
this._releaseId = this._motionId = 0;
this._dragging = false;
@ -888,7 +884,8 @@ const PopupMenuBase = new Lang.Class({
},
addSettingsAction: function(title, desktopFile) {
if (!Main.sessionMode.allowSettings)
// Don't allow user settings to get edited unless we're in a user session
if (global.session_type != Shell.SessionType.USER)
return null;
let menuItem = this.addAction(title, function() {
@ -1920,7 +1917,7 @@ const RemoteMenu = new Lang.Class({
while (k0 < currentItems.length && currentItems[k0]._ignored)
k0++;
// find the right menu item matching the model item
for (j0 = 0; k0 < currentItems.length && j0 < position; j0++, k0++) {
for (j0 = 0; j0 < position; j0++, k0++) {
if (currentItems[k0]._ignored)
k0++;
}
@ -1930,7 +1927,7 @@ const RemoteMenu = new Lang.Class({
for (k = k0; k < currentItems.length; k++)
currentItems[k].destroy();
} else {
for (j = j0, k = k0; k < currentItems.length && j < j0 + removed; j++, k++) {
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
currentItems[k].destroy();
if (currentItems[k]._ignored)
@ -1961,9 +1958,8 @@ const RemoteMenu = new Lang.Class({
k++;
}
} else if (changeSignal) {
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function(actionGroup, actionName) {
actionGroup.disconnect(signalId);
if (this._actions[actionName]) return;
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function() {
this.actionGroup.disconnect(signalId);
// force a full update
this._modelChanged(model, 0, -1, model.get_n_items(), target);

View File

@ -91,6 +91,7 @@ const RemoteSearchProvider = new Lang.Class({
dbusName, dbusPath);
this.parent(title.toUpperCase());
this.async = true;
this._cancellable = new Gio.Cancellable();
},
@ -119,7 +120,7 @@ const RemoteSearchProvider = new Lang.Class({
this.searchSystem.pushResults(this, results[0]);
},
getInitialResultSet: function(terms) {
getInitialResultSetAsync: function(terms) {
this._cancellable.cancel();
this._cancellable.reset();
try {
@ -132,7 +133,7 @@ const RemoteSearchProvider = new Lang.Class({
}
},
getSubsearchResultSet: function(previousResults, newTerms) {
getSubsearchResultSetAsync: function(previousResults, newTerms) {
this._cancellable.cancel();
this._cancellable.reset();
try {
@ -163,7 +164,7 @@ const RemoteSearchProvider = new Lang.Class({
callback(resultMetas);
},
getResultMetas: function(ids, callback) {
getResultMetasAsync: function(ids, callback) {
this._cancellable.cancel();
this._cancellable.reset();
try {

91
js/ui/screenShield.js Normal file
View File

@ -0,0 +1,91 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const GnomeSession = imports.misc.gnomeSession;
const Lightbox = imports.ui.lightbox;
const LoginDialog = imports.gdm.loginDialog;
const Main = imports.ui.main;
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
const LOCK_ENABLED_KEY = 'lock-enabled';
/**
* To test screen shield, make sure to kill gnome-screensaver.
*
* If you are setting org.gnome.desktop.session.idle-delay directly in dconf,
* rather than through System Settings, you also need to set
* org.gnome.settings-daemon.plugins.power.sleep-display-ac and
* org.gnome.settings-daemon.plugins.power.sleep-display-battery to the same value.
* This will ensure that the screen blanks at the right time when it fades out.
* https://bugzilla.gnome.org/show_bug.cgi?id=668703 explains the dependance.
*/
const ScreenShield = new Lang.Class({
Name: 'ScreenShield',
_init: function() {
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
this._onStatusChanged(proxy.status);
}));
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
this._onStatusChanged(status);
}));
this._settings = new Gio.Settings({ schema: SCREENSAVER_SCHEMA });
this._group = new St.Widget({ 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);
this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent));
this._group.connect('button-press-event', Lang.bind(this, this._onButtonPressEvent));
this._lightbox = new Lightbox.Lightbox(this._group,
{ inhibitEvents: true, fadeInTime: 10, fadeFactor: 1 });
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
this._background.hide();
Main.uiGroup.add_actor(this._background);
},
_onStatusChanged: function(status) {
log ("in _onStatusChanged");
if (status == GnomeSession.PresenceStatus.IDLE) {
log("session gone idle");
this._group.reactive = true;
Main.pushModal(this._group);
this._lightbox.show();
} else {
let lightboxWasShown = this._lightbox.shown;
log("this._lightbox.shown " + this._lightbox.shown);
this._lightbox.hide();
if (lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY)) {
this._background.show();
this._background.raise_top();
} else {
this._popModal();
}
}
},
_popModal: function() {
this._group.reactive = false;
if (Main.isInModalStack(this._group))
Main.popModal(this._group);
this._background.hide();
},
_onKeyPressEvent: function(object, keyPressEvent) {
log("in _onKeyPressEvent - lock is enabled: " + this._settings.get_boolean(LOCK_ENABLED_KEY));
this._popModal();
},
_onButtonPressEvent: function(object, buttonPressEvent) {
log("in _onButtonPressEvent - lock is enabled: " + this._settings.get_boolean(LOCK_ENABLED_KEY));
this._popModal();
},
});

View File

@ -18,7 +18,9 @@ const DISABLED_OPEN_SEARCH_PROVIDERS_KEY = 'disabled-open-search-providers';
const MatchType = {
NONE: 0,
SUBSTRING: 1,
PREFIX: 2
MULTIPLE_SUBSTRING: 2,
PREFIX: 3,
MULTIPLE_PREFIX: 4
};
const SearchResultDisplay = new Lang.Class({
@ -70,8 +72,11 @@ const SearchResultDisplay = new Lang.Class({
* Subclass this object to add a new result type
* to the search system, then call registerProvider()
* in SearchSystem with an instance.
* Search is asynchronous and uses the
* By default, search is synchronous and uses the
* getInitialResultSet()/getSubsearchResultSet() methods.
* For asynchronous search, set the async property to true
* and implement getInitialResultSetAsync()/getSubsearchResultSetAsync()
* instead.
*/
const SearchProvider = new Lang.Class({
Name: 'SearchProvider',
@ -79,6 +84,7 @@ const SearchProvider = new Lang.Class({
_init: function(title) {
this.title = title;
this.searchSystem = null;
this.async = false;
},
/**
@ -89,7 +95,7 @@ const SearchProvider = new Lang.Class({
* therefore a single term of length one or two), or when
* a new term is added.
*
* Should "return" an array of result identifier strings representing
* Should return an array of result identifier strings representing
* items which match the given search terms. This
* is expected to be a substring match on the metadata for a given
* item. Ordering of returned results is up to the discretion of the provider,
@ -99,9 +105,6 @@ const SearchProvider = new Lang.Class({
* description) before single matches
* * Put items which match on a prefix before non-prefix substring matches
*
* We say "return" above, but in order to make the query asynchronous, use
* this.searchSystem.pushResults();. The return value should be ignored.
*
* This function should be fast; do not perform unindexed full-text searches
* or network queries.
*/
@ -109,6 +112,18 @@ const SearchProvider = new Lang.Class({
throw new Error('Not implemented');
},
/**
* getInitialResultSetAsync:
* @terms: Array of search terms, treated as logical AND
*
* Like getInitialResultSet(), but the method should return immediately
* without a return value - use SearchSystem.pushResults() when the
* corresponding results are ready.
*/
getInitialResultSetAsync: function(terms) {
throw new Error('Not implemented');
},
/**
* getSubsearchResultSet:
* @previousResults: Array of item identifiers
@ -121,23 +136,46 @@ const SearchProvider = new Lang.Class({
*
* This allows search providers to only search through the previous
* result set, rather than possibly performing a full re-query.
*
* Similar to getInitialResultSet, the return value for this will
* be ignored; use this.searchSystem.pushResults();.
*/
getSubsearchResultSet: function(previousResults, newTerms) {
throw new Error('Not implemented');
},
/**
* getSubsearchResultSetAsync:
* @previousResults: Array of item identifiers
* @newTerms: Updated search terms
*
* Like getSubsearchResultSet(), but the method should return immediately
* without a return value - use SearchSystem.pushResults() when the
* corresponding results are ready.
*/
getSubsearchResultSetAsync: function(previousResults, newTerms) {
throw new Error('Not implemented');
},
/**
* getResultMetas:
* @ids: Result identifier strings
*
* Call callback with array of objects with 'id', 'name', (both strings) and
* Return an array of objects with 'id', 'name', (both strings) and
* 'createIcon' (function(size) returning a Clutter.Texture) properties
* with the same number of members as @ids
*/
getResultMetas: function(ids, callback) {
getResultMetas: function(ids) {
throw new Error('Not implemented');
},
/**
* getResultMetasAsync:
* @ids: Result identifier strings
* @callback: callback to pass the results to when ready
*
* Like getResultMetas(), but the method should return immediately
* without a return value - pass the results to the provided @callback
* when ready.
*/
getResultMetasAsync: function(ids, callback) {
throw new Error('Not implemented');
},
@ -341,33 +379,42 @@ const SearchSystem = new Lang.Class({
}
}
let previousResultsArr = this._previousResults;
let results = [];
this._previousTerms = terms;
this._previousResults = results;
if (isSubSearch) {
for (let i = 0; i < this._providers.length; i++) {
let [provider, previousResults] = previousResultsArr[i];
let [provider, previousResults] = this._previousResults[i];
try {
results.push([provider, []]);
provider.getSubsearchResultSet(previousResults, terms);
if (provider.async) {
provider.getSubsearchResultSetAsync(previousResults, terms);
results.push([provider, []]);
} else {
let providerResults = provider.getSubsearchResultSet(previousResults, terms);
results.push([provider, providerResults]);
}
} catch (error) {
log('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
}
}
} else {
for (let i = 0; i < this._providers.length; i++) {
let provider = this._providers[i];
try {
results.push([provider, []]);
provider.getInitialResultSet(terms);
if (provider.async) {
provider.getInitialResultSetAsync(terms);
results.push([provider, []]);
} else {
let providerResults = provider.getInitialResultSet(terms);
results.push([provider, providerResults]);
}
} catch (error) {
log('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
}
}
}
this._previousTerms = terms;
this._previousResults = results;
this.emit('search-completed', results);
},
});
Signals.addSignalMethods(SearchSystem.prototype);

View File

@ -5,7 +5,6 @@ const Lang = imports.lang;
const Gtk = imports.gi.Gtk;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
const Atk = imports.gi.Atk;
const DND = imports.ui.dnd;
const IconGrid = imports.ui.iconGrid;
@ -34,13 +33,12 @@ const SearchResult = new Lang.Class({
content = new St.Bin({ style_class: 'search-result-content',
reactive: true,
can_focus: true,
track_hover: true,
accessible_role: Atk.Role.PUSH_BUTTON });
track_hover: true });
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
{ createIcon: this.metaInfo['createIcon'] });
content.set_child(icon.actor);
this._dragActorSource = icon.icon;
content.label_actor = icon.label;
this.actor.label_actor = icon.label;
} else {
if (content._delegate && content._delegate.getDragActorSource)
this._dragActorSource = content._delegate.getDragActorSource();
@ -121,7 +119,13 @@ const GridSearchResults = new Lang.Class({
if (results.length == 0)
return;
provider.getResultMetas(results, Lang.bind(this, this.renderResults));
if (provider.async) {
provider.getResultMetasAsync(results,
Lang.bind(this, this.renderResults));
} else {
let metas = provider.getResultMetas(results);
this.renderResults(metas);
}
}));
}));
this._notDisplayedResult = [];
@ -131,7 +135,7 @@ const GridSearchResults = new Lang.Class({
getResultsForDisplay: function() {
let alreadyVisible = this._pendingClear ? 0 : this._grid.visibleItemsCount();
let canDisplay = this._grid.childrenInRow(this._width) * this._grid.getRowLimit()
let canDisplay = this._grid.childrenInRow(this._width) * MAX_SEARCH_RESULTS_ROWS
- alreadyVisible;
let numResults = Math.min(this._notDisplayedResult.length, canDisplay);
@ -175,7 +179,8 @@ const SearchResults = new Lang.Class({
_init: function(searchSystem, openSearchSystem) {
this._searchSystem = searchSystem;
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateCurrentResults));
this._searchSystem.connect('search-completed', Lang.bind(this, this._updateResults));
this._openSearchSystem = openSearchSystem;
this.actor = new St.BoxLayout({ name: 'searchResults',
@ -209,8 +214,10 @@ const SearchResults = new Lang.Class({
this._content.add(this._statusText);
this._providers = this._searchSystem.getProviders();
this._providerMeta = [];
this._providerMetaResults = {};
for (let i = 0; i < this._providers.length; i++) {
this.createProviderMeta(this._providers[i]);
this._providerMetaResults[this.providers[i].title] = [];
}
this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' });
this.actor.add(this._searchProvidersBox);
@ -283,7 +290,8 @@ const SearchResults = new Lang.Class({
this._providerMeta.push({ provider: provider,
actor: providerBox,
resultDisplay: resultDisplay });
resultDisplay: resultDisplay,
hasPendingResults: false });
this._content.add(providerBox);
},
@ -299,6 +307,7 @@ const SearchResults = new Lang.Class({
},
_clearDisplay: function() {
this._visibleResultsCount = 0;
for (let i = 0; i < this._providerMeta.length; i++) {
let meta = this._providerMeta[i];
meta.resultDisplay.clear();
@ -326,8 +335,6 @@ const SearchResults = new Lang.Class({
doSearch: function (searchString) {
this._searchSystem.updateSearch(searchString);
let terms = this._searchSystem.getTerms();
this._openSearchSystem.setSearchTerms(terms);
},
_metaForProvider: function(provider) {
@ -339,6 +346,8 @@ const SearchResults = new Lang.Class({
for (let i = 0; i < this._providerMeta.length; i++) {
let meta = this._providerMeta[i];
if (meta.hasPendingResults)
return;
if (!meta.actor.visible)
continue;
@ -363,57 +372,71 @@ const SearchResults = new Lang.Class({
}
},
_updateStatusText: function () {
let haveResults = false;
_updateCurrentResults: function(searchSystem, results) {
let terms = searchSystem.getTerms();
let [provider, providerResults] = results;
let meta = this._metaForProvider(provider);
meta.hasPendingResults = false;
this._updateProviderResults(provider, providerResults, terms);
},
for (let i = 0; i < this._providerMeta.length; ++i)
if (this._providerMeta[i].resultDisplay.getFirstResult()) {
haveResults = true;
break;
_updateProviderResults: function(provider, providerResults, terms) {
let meta = this._metaForProvider(provider);
if (providerResults.length == 0) {
this._clearDisplayForProvider(provider);
meta.resultDisplay.setResults([], []);
} else {
this._providerMetaResults[provider.title] = providerResults;
meta.resultDisplay.setResults(providerResults, terms);
let results = meta.resultDisplay.getResultsForDisplay();
if (provider.async) {
provider.getResultMetasAsync(results, Lang.bind(this,
function(metas) {
this._clearDisplayForProvider(provider);
meta.actor.show();
this._content.hide();
meta.resultDisplay.renderResults(metas);
this._maybeSetInitialSelection();
this._content.show();
}));
} else {
let metas = provider.getResultMetas(results);
this._clearDisplayForProvider(provider);
meta.actor.show();
meta.resultDisplay.renderResults(metas);
}
}
},
if (!haveResults) {
_updateResults: function(searchSystem, results) {
if (results.length == 0) {
this._statusText.set_text(_("No matching results."));
this._statusText.show();
} else {
this._statusText.hide();
}
},
_updateResults: function(searchSystem, results) {
let terms = searchSystem.getTerms();
let [provider, providerResults] = results;
let meta = this._metaForProvider(provider);
this._openSearchSystem.setSearchTerms(terms);
if (providerResults.length == 0) {
this._clearDisplayForProvider(provider);
meta.resultDisplay.setResults([], []);
this._maybeSetInitialSelection();
this._updateStatusText();
} else {
meta.resultDisplay.setResults(providerResults, terms);
let results = meta.resultDisplay.getResultsForDisplay();
// To avoid CSS transitions causing flickering when the first search
// result stays the same, we hide the content while filling in the
// results.
this._content.hide();
provider.getResultMetas(results, Lang.bind(this, function(metas) {
this._clearDisplayForProvider(provider);
meta.actor.show();
// Hiding drops the key focus if we have it
let focus = global.stage.get_key_focus();
// To avoid CSS transitions causing flickering when
// the first search result stays the same, we hide the
// content while filling in the results.
this._content.hide();
meta.resultDisplay.renderResults(metas);
this._maybeSetInitialSelection();
this._updateStatusText();
this._content.show();
if (this._content.contains(focus))
global.stage.set_key_focus(focus);
}));
for (let i = 0; i < results.length; i++) {
let [provider, providerResults] = results[i];
let meta = this._metaForProvider(provider);
meta.hasPendingResults = provider.async;
if (!meta.hasPendingResults)
this._updateProviderResults(provider, providerResults, terms);
}
this._maybeSetInitialSelection();
this._content.show();
return true;
},
activateDefault: function() {

View File

@ -1,124 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang;
const Config = imports.misc.config;
const Main = imports.ui.main;
const Params = imports.misc.params;
const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
'userMenu': imports.ui.userMenu.UserMenuButton
};
if (Config.HAVE_BLUETOOTH)
STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] =
imports.ui.status.bluetooth.Indicator;
try {
STANDARD_STATUS_AREA_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');
}
const DEFAULT_MODE = 'user';
const _modes = {
'gdm': { hasOverview: false,
hasAppMenu: false,
showCalendarEvents: false,
allowSettings: false,
allowExtensions: false,
allowKeybindingsWhenModal: true,
hasRunDialog: false,
hasWorkspaces: false,
createSession: Main.createGDMSession,
extraStylesheet: global.datadir + '/theme/gdm.css',
statusArea: {
order: [
'a11y', 'display', 'keyboard',
'volume', 'battery', 'powerMenu'
],
implementation: {
'a11y': imports.ui.status.accessibility.ATIndicator,
'volume': imports.ui.status.volume.Indicator,
'battery': imports.ui.status.power.Indicator,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
'powerMenu': imports.gdm.powerMenu.PowerMenuButton
}
}
},
'initial-setup': { hasOverview: false,
hasAppMenu: false,
showCalendarEvents: false,
allowSettings: false,
allowExtensions: false,
allowKeybindingsWhenModal: false,
hasRunDialog: false,
hasWorkspaces: false,
createSession: Main.createInitialSetupSession,
extraStylesheet: null,
statusArea: {
order: [
'a11y', 'keyboard', 'volume'
],
implementation: {
'a11y': imports.ui.status.accessibility.ATIndicator,
'keyboard': imports.ui.status.keyboard.XKBIndicator,
'volume': imports.ui.status.volume.Indicator
}
}
},
'user': { hasOverview: true,
hasAppMenu: true,
showCalendarEvents: true,
allowSettings: true,
allowExtensions: true,
allowKeybindingsWhenModal: false,
hasRunDialog: true,
hasWorkspaces: true,
createSession: Main.createUserSession,
extraStylesheet: null,
statusArea: {
order: [
'input-method', 'a11y', 'keyboard', 'volume', 'bluetooth',
'network', 'battery', 'userMenu'
],
implementation: STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION
}
}
};
function listModes() {
let modes = Object.getOwnPropertyNames(_modes);
for (let i = 0; i < modes.length; i++)
print(modes[i]);
}
const SessionMode = new Lang.Class({
Name: 'SessionMode',
_init: function() {
let params = _modes[global.session_mode];
params = Params.parse(params, _modes[DEFAULT_MODE]);
this._createSession = params.createSession;
delete params.createSession;
Lang.copyProperties(params, this);
},
createSession: function() {
if (this._createSession)
this._createSession();
}
});

View File

@ -56,8 +56,15 @@ const GnomeShellIface = <interface name="org.gnome.Shell">
<arg type="i" direction="in" name="width"/>
<arg type="i" direction="in" name="height"/>
</method>
<method name="EnableExtension">
<arg type="s" direction="in" name="uuid"/>
</method>
<method name="DisableExtension">
<arg type="s" direction="in" name="uuid"/>
</method>
<method name="InstallRemoteExtension">
<arg type="s" direction="in" name="uuid"/>
<arg type="s" direction="in" name="version"/>
</method>
<method name="UninstallExtension">
<arg type="s" direction="in" name="uuid"/>
@ -253,8 +260,22 @@ const GnomeShell = new Lang.Class({
return extension.errors;
},
InstallRemoteExtension: function(uuid) {
ExtensionSystem.installExtensionFromUUID(uuid);
EnableExtension: function(uuid) {
let enabledExtensions = global.settings.get_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY);
if (enabledExtensions.indexOf(uuid) == -1)
enabledExtensions.push(uuid);
global.settings.set_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY, enabledExtensions);
},
DisableExtension: function(uuid) {
let enabledExtensions = global.settings.get_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY);
while (enabledExtensions.indexOf(uuid) != -1)
enabledExtensions.splice(enabledExtensions.indexOf(uuid), 1);
global.settings.set_strv(ExtensionSystem.ENABLED_EXTENSIONS_KEY, enabledExtensions);
},
InstallRemoteExtension: function(uuid, version_tag) {
ExtensionSystem.installExtensionFromUUID(uuid, version_tag);
},
UninstallExtension: function(uuid) {

View File

@ -243,7 +243,6 @@ const ShellMountPasswordSource = new Lang.Class({
this.parent(strings[0]);
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
this._setSummaryIcon(icon);
// add ourselves as a source, and popup the notification
Main.messageTray.add(this);

View File

@ -106,7 +106,10 @@ const Indicator = new Lang.Class({
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
this._killswitch.setStatus(_("hardware disabled"));
this.actor.visible = has_adapter;
if (has_adapter)
this.actor.show();
else
this.actor.hide();
if (on) {
this._discoverable.actor.show();
@ -305,7 +308,7 @@ const Indicator = new Lang.Class({
_ensureSource: function() {
if (!this._source) {
this._source = new MessageTray.Source(_("Bluetooth"), 'bluetooth-active', St.IconType.SYMBOLIC);
this._source = new Source();
Main.messageTray.add(this._source);
}
},
@ -330,6 +333,35 @@ const Indicator = new Lang.Class({
}
});
const Source = new Lang.Class({
Name: 'BluetoothSource',
Extends: MessageTray.Source,
_init: function() {
this.parent(_("Bluetooth"));
this._setSummaryIcon(this.createNotificationIcon());
},
notify: function(notification) {
this._private_destroyId = notification.connect('destroy', Lang.bind(this, function(notification) {
if (this.notification == notification) {
// the destroyed notification is the last for this source
this.notification.disconnect(this._private_destroyId);
this.destroy();
}
}));
this.parent(notification);
},
createNotificationIcon: function() {
return new St.Icon({ icon_name: 'bluetooth-active',
icon_type: St.IconType.SYMBOLIC,
icon_size: this.ICON_SIZE });
}
});
const AuthNotification = new Lang.Class({
Name: 'AuthNotification',
Extends: MessageTray.Notification,
@ -380,7 +412,7 @@ const ConfirmNotification = new Lang.Class({
this._applet = applet;
this._devicePath = device_path;
this.addBody(_("Device %s wants to pair with this computer").format(long_name));
this.addBody(_("Please confirm whether the PIN '%06d' matches the one on the device.").format(pin));
this.addBody(_("Please confirm whether the PIN '%s' matches the one on the device.").format(pin));
this.addButton('matches', _("Matches"));
this.addButton('does-not-match', _("Does not match"));
@ -416,8 +448,7 @@ const PinNotification = new Lang.Class({
this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) {
let key = event.get_key_symbol();
if (key == Clutter.KEY_Return) {
if (this._canActivateOkButton())
this.emit('action-invoked', 'ok');
this.emit('action-invoked', 'ok');
return true;
} else if (key == Clutter.KEY_Escape) {
this.emit('action-invoked', 'cancel');
@ -430,12 +461,6 @@ const PinNotification = new Lang.Class({
this.addButton('ok', _("OK"));
this.addButton('cancel', _("Cancel"));
this.setButtonSensitive('ok', this._canActivateOkButton());
this._entry.clutter_text.connect('text-changed', Lang.bind(this,
function() {
this.setButtonSensitive('ok', this._canActivateOkButton());
}));
this.connect('action-invoked', Lang.bind(this, function(self, action) {
if (action == 'ok') {
if (this._numeric) {
@ -458,11 +483,6 @@ const PinNotification = new Lang.Class({
}));
},
_canActivateOkButton: function() {
// PINs have a fixed length of 6
return this._entry.clutter_text.text.length == 6;
},
grabFocus: function(lockTray) {
this.parent(lockTray);
global.stage.set_key_focus(this._entry);

View File

@ -2,9 +2,9 @@
const Clutter = imports.gi.Clutter;
const GdkPixbuf = imports.gi.GdkPixbuf;
const Gkbd = imports.gi.Gkbd;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GnomeDesktop = imports.gi.GnomeDesktop;
const Lang = imports.lang;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
@ -14,32 +14,34 @@ const PopupMenu = imports.ui.popupMenu;
const PanelMenu = imports.ui.panelMenu;
const Util = imports.misc.util;
const DESKTOP_INPUT_SOURCES_SCHEMA = 'org.gnome.desktop.input-sources';
const KEY_CURRENT_INPUT_SOURCE = 'current';
const KEY_INPUT_SOURCES = 'sources';
const INPUT_SOURCE_TYPE_XKB = 'xkb';
const LayoutMenuItem = new Lang.Class({
Name: 'LayoutMenuItem',
Extends: PopupMenu.PopupBaseMenuItem,
_init: function(displayName, shortName) {
_init: function(config, id, indicator, long_name) {
this.parent();
this.label = new St.Label({ text: displayName });
this.indicator = new St.Label({ text: shortName });
this._config = config;
this._id = id;
this.label = new St.Label({ text: long_name });
this.indicator = indicator;
this.addActor(this.label);
this.addActor(this.indicator);
},
activate: function(event) {
this.parent(event);
this._config.lock_group(this._id);
}
});
const InputSourceIndicator = new Lang.Class({
Name: 'InputSourceIndicator',
const XKBIndicator = new Lang.Class({
Name: 'XKBIndicator',
Extends: PanelMenu.Button,
_init: function() {
this.parent(0.0, _("Keyboard"));
this.parent(0.0);
this._container = new Shell.GenericContainer();
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
@ -48,144 +50,122 @@ const InputSourceIndicator = new Lang.Class({
this.actor.add_actor(this._container);
this.actor.add_style_class_name('panel-status-button');
this._labelActors = {};
this._layoutItems = {};
this._iconActor = new St.Icon({ icon_name: 'keyboard', icon_type: St.IconType.SYMBOLIC, style_class: 'system-status-icon' });
this._container.add_actor(this._iconActor);
this._labelActors = [ ];
this._layoutItems = [ ];
this._settings = new Gio.Settings({ schema: DESKTOP_INPUT_SOURCES_SCHEMA });
this._settings.connect('changed::' + KEY_CURRENT_INPUT_SOURCE, Lang.bind(this, this._currentInputSourceChanged));
this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged));
this._showFlags = false;
this._config = Gkbd.Configuration.get();
this._config.connect('changed', Lang.bind(this, this._syncConfig));
this._config.connect('group-changed', Lang.bind(this, this._syncGroup));
this._config.start_listen();
this._currentSourceIndex = this._settings.get_uint(KEY_CURRENT_INPUT_SOURCE);
this._xkbInfo = new GnomeDesktop.XkbInfo();
this._syncConfig();
this._inputSourcesChanged();
// re-using "allowSettings" for the keyboard layout is a bit shady,
// but at least for now it is used as "allow popping up windows
// from shell menus"; we can always add a separate sessionMode
// option if need arises.
if (Main.sessionMode.allowSettings) {
if (global.session_type == Shell.SessionType.USER) {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, this._showLayout));
this.menu.addAction(_("Show Keyboard Layout"), Lang.bind(this, function() {
Main.overview.hide();
Util.spawn(['gkbd-keyboard-display', '-g', String(this._config.get_current_group() + 1)]);
}));
}
this.menu.addSettingsAction(_("Region and Language Settings"), 'gnome-region-panel.desktop');
},
_currentInputSourceChanged: function() {
let nVisibleSources = Object.keys(this._layoutItems).length;
if (nVisibleSources < 2)
return;
_adjustGroupNames: function(names) {
// Disambiguate duplicate names with a subscript
// This is O(N^2) to avoid sorting names
// but N <= 4 so who cares?
let nSources = this._settings.get_value(KEY_INPUT_SOURCES).n_children();
let newCurrentSourceIndex = this._settings.get_uint(KEY_CURRENT_INPUT_SOURCE);
if (newCurrentSourceIndex >= nSources)
return;
if (!this._layoutItems[newCurrentSourceIndex]) {
// This source index is invalid as we weren't able to
// build a menu item for it, so we hide ourselves since we
// can't fix it here. *shrug*
this.menu.close();
this.actor.hide();
return;
} else {
this.actor.show();
for (let i = 0; i < names.length; i++) {
let name = names[i];
let cnt = 0;
for (let j = i + 1; j < names.length; j++) {
if (names[j] == name) {
cnt++;
// U+2081 SUBSCRIPT ONE
names[j] = name + String.fromCharCode(0x2081 + cnt);
}
}
if (cnt != 0)
names[i] = name + '\u2081';
}
if (this._layoutItems[this._currentSourceIndex]) {
this._layoutItems[this._currentSourceIndex].setShowDot(false);
this._container.set_skip_paint(this._labelActors[this._currentSourceIndex], true);
}
this._layoutItems[newCurrentSourceIndex].setShowDot(true);
this._container.set_skip_paint(this._labelActors[newCurrentSourceIndex], false);
this._currentSourceIndex = newCurrentSourceIndex;
return names;
},
_inputSourcesChanged: function() {
let sources = this._settings.get_value(KEY_INPUT_SOURCES);
let nSources = sources.n_children();
for (let i in this._layoutItems)
this._layoutItems[i].destroy();
for (let i in this._labelActors)
this._labelActors[i].destroy();
this._layoutItems = {};
this._labelActors = {};
let infos = [];
let infosByShortName = {};
for (let i = 0; i < nSources; i++) {
let [type, id] = sources.get_child_value(i).deep_unpack();
if (type != INPUT_SOURCE_TYPE_XKB)
continue;
let info = {};
[info.exists, info.displayName, info.shortName, , ] =
this._xkbInfo.get_layout_info(id);
if (!info.exists)
continue;
info.sourceIndex = i;
if (!(info.shortName in infosByShortName))
infosByShortName[info.shortName] = [];
infosByShortName[info.shortName].push(info);
infos.push(info);
_syncConfig: function() {
this._showFlags = this._config.if_flags_shown();
if (this._showFlags) {
this._container.set_skip_paint(this._iconActor, false);
} else {
this._container.set_skip_paint(this._iconActor, true);
}
if (infos.length > 1) {
let groups = this._config.get_group_names();
if (groups.length > 1) {
this.actor.show();
} else {
this.menu.close();
this.actor.hide();
}
for (let i = 0; i < infos.length; i++) {
let info = infos[i];
if (infosByShortName[info.shortName].length > 1) {
let sub = infosByShortName[info.shortName].indexOf(info) + 1;
info.shortName += String.fromCharCode(0x2080 + sub);
}
for (let i = 0; i < this._layoutItems.length; i++)
this._layoutItems[i].destroy();
let item = new LayoutMenuItem(info.displayName, info.shortName);
this._layoutItems[info.sourceIndex] = item;
for (let i = 0; i < this._labelActors.length; i++)
this._labelActors[i].destroy();
let short_names = this._adjustGroupNames(this._config.get_short_group_names());
this._selectedLayout = null;
this._layoutItems = [ ];
this._selectedLabel = null;
this._labelActors = [ ];
for (let i = 0; i < groups.length; i++) {
let icon_name = this._config.get_group_name(i);
let actor;
if (this._showFlags)
actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.SYMBOLIC, style_class: 'popup-menu-icon' });
else
actor = new St.Label({ text: short_names[i] });
let item = new LayoutMenuItem(this._config, i, actor, groups[i]);
item._short_group_name = short_names[i];
item._icon_name = icon_name;
this._layoutItems.push(item);
this.menu.addMenuItem(item, i);
item.connect('activate', Lang.bind(this, function() {
this._settings.set_value(KEY_CURRENT_INPUT_SOURCE,
GLib.Variant.new_uint32(info.sourceIndex));
}));
let shortLabel = new St.Label({ text: info.shortName });
this._labelActors[info.sourceIndex] = shortLabel;
let shortLabel = new St.Label({ text: short_names[i] });
this._labelActors.push(shortLabel);
this._container.add_actor(shortLabel);
this._container.set_skip_paint(shortLabel, true);
}
this._currentInputSourceChanged();
this._syncGroup();
},
_showLayout: function() {
Main.overview.hide();
_syncGroup: function() {
let selected = this._config.get_current_group();
let sources = this._settings.get_value(KEY_INPUT_SOURCES);
let current = this._settings.get_uint(KEY_CURRENT_INPUT_SOURCE);
let id = sources.get_child_value(current).deep_unpack()[1];
let [, , , xkbLayout, xkbVariant] = this._xkbInfo.get_layout_info(id);
if (this._selectedLayout) {
this._selectedLayout.setShowDot(false);
this._selectedLayout = null;
}
if (!xkbLayout || xkbLayout.length == 0)
return;
if (this._selectedLabel) {
this._container.set_skip_paint(this._selectedLabel, true);
this._selectedLabel = null;
}
let description = xkbLayout;
if (xkbVariant.length > 0)
description = description + '\t' + xkbVariant;
let item = this._layoutItems[selected];
item.setShowDot(true);
Util.spawn(['gkbd-keyboard-display', '-l', description]);
this._iconActor.icon_name = item._icon_name;
this._selectedLabel = this._labelActors[selected];
this._container.set_skip_paint(this._selectedLabel, this._showFlags);
this._selectedLayout = item;
},
_containerGetPreferredWidth: function(container, for_height, alloc) {
@ -193,11 +173,15 @@ const InputSourceIndicator = new Lang.Class({
// for the height of all children, but we ignore the results
// for those we don't actually display.
let max_min_width = 0, max_natural_width = 0;
if (this._showFlags)
[max_min_width, max_natural_width] = this._iconActor.get_preferred_width(for_height);
for (let i in this._labelActors) {
for (let i = 0; i < this._labelActors.length; i++) {
let [min_width, natural_width] = this._labelActors[i].get_preferred_width(for_height);
max_min_width = Math.max(max_min_width, min_width);
max_natural_width = Math.max(max_natural_width, natural_width);
if (!this._showFlags) {
max_min_width = Math.max(max_min_width, min_width);
max_natural_width = Math.max(max_natural_width, natural_width);
}
}
alloc.min_size = max_min_width;
@ -206,11 +190,15 @@ const InputSourceIndicator = new Lang.Class({
_containerGetPreferredHeight: function(container, for_width, alloc) {
let max_min_height = 0, max_natural_height = 0;
for (let i in this._labelActors) {
if (this._showFlags)
[max_min_height, max_natural_height] = this._iconActor.get_preferred_height(for_width);
for (let i = 0; i < this._labelActors.length; i++) {
let [min_height, natural_height] = this._labelActors[i].get_preferred_height(for_width);
max_min_height = Math.max(max_min_height, min_height);
max_natural_height = Math.max(max_natural_height, natural_height);
if (!this._showFlags) {
max_min_height = Math.max(max_min_height, min_height);
max_natural_height = Math.max(max_natural_height, natural_height);
}
}
alloc.min_size = max_min_height;
@ -224,7 +212,8 @@ const InputSourceIndicator = new Lang.Class({
box.y2 -= box.y1;
box.y1 = 0;
for (let i in this._labelActors)
this._iconActor.allocate_align_fill(box, 0.5, 0, false, false, flags);
for (let i = 0; i < this._labelActors.length; i++)
this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags);
}
});

View File

@ -304,10 +304,9 @@ const NMDevice = new Lang.Class({
// record the connection
let obj = {
connection: connections[i],
name: connections[i].get_id(),
uuid: connections[i].get_uuid(),
name: connections[i]._name,
uuid: connections[i]._uuid,
timestamp: connections[i]._timestamp,
item: null,
};
this._connections.push(obj);
}
@ -402,46 +401,48 @@ const NMDevice = new Lang.Class({
},
checkConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
let pos = this._findConnection(connection._uuid);
let exists = pos != -1;
let valid = this.connectionValid(connection);
let similar = false;
if (exists) {
let existing = this._connections[pos];
// Check if connection changed name or id
similar = existing.name == connection.get_id() &&
existing.timestamp == connection._timestamp;
}
if (exists && valid && similar) {
// Nothing to do
return;
}
if (exists)
if (exists && !valid)
this.removeConnection(connection);
if (valid)
else if (!exists && valid)
this.addConnection(connection);
else if (exists && valid) {
// propagate changes and update the UI
if (this._connections[pos].timestamp != connection._timestamp) {
this._connections[pos].timestamp = connection._timestamp;
this._connections.sort(this._connectionSortFunction);
this._clearSection();
this._queueCreateSection();
}
}
},
addConnection: function(connection) {
// record the connection
let obj = {
connection: connection,
name: connection.get_id(),
uuid: connection.get_uuid(),
name: connection._name,
uuid: connection._uuid,
timestamp: connection._timestamp,
item: null,
};
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
this._connections.push(obj);
this._connections.sort(this._connectionSortFunction);
this._clearSection();
this._queueCreateSection();
},
removeConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
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;
@ -706,15 +707,18 @@ const NMDeviceWired = new Lang.Class({
// the device
// we can do it here because addConnection and removeConnection
// both call _createSection at some point
this.section.actor.visible = this._connections.length > 1;
if (this._connections.length <= 1)
this.section.actor.hide();
else
this.section.actor.show();
},
_createAutomaticConnection: function() {
let connection = new NetworkManager.Connection();
let uuid = NetworkManager.utils_uuid_generate();
connection._uuid = NetworkManager.utils_uuid_generate();
connection.add_setting(new NetworkManager.SettingWired());
connection.add_setting(new NetworkManager.SettingConnection({
uuid: uuid,
uuid: connection._uuid,
id: this._autoConnectionName,
type: NetworkManager.SETTING_WIRED_SETTING_NAME,
autoconnect: true
@ -858,10 +862,10 @@ const NMDeviceBluetooth = new Lang.Class({
_createAutomaticConnection: function() {
let connection = new NetworkManager.Connection;
let uuid = NetworkManager.utils_uuid_generate();
connection._uuid = NetworkManager.utils_uuid_generate();
connection.add_setting(new NetworkManager.SettingBluetooth);
connection.add_setting(new NetworkManager.SettingConnection({
uuid: uuid,
uuid: connection._uuid,
id: this._autoConnectionName,
type: NetworkManager.SETTING_BLUETOOTH_SETTING_NAME,
autoconnect: false
@ -896,12 +900,12 @@ const NMDeviceVPN = new Lang.Class({
Name: 'NMDeviceVPN',
Extends: NMDevice,
_init: function(client, device, connections) {
_init: function(client) {
// Disable autoconnections
this._autoConnectionName = null;
this.category = NMConnectionCategory.VPN;
this.parent(client, null, connections);
this.parent(client, null, [ ]);
},
connectionValid: function(connection) {
@ -913,24 +917,13 @@ const NMDeviceVPN = new Lang.Class({
},
get connected() {
if (!this._activeConnection)
return false;
return this._activeConnection.vpn_state == NetworkManager.VPNConnectionState.ACTIVATED;
return !!this._activeConnection;
},
setActiveConnection: function(activeConnection) {
if (this._stateChangeId)
this._activeConnection.disconnect(this._stateChangeId);
this._stateChangeId = 0;
this.parent(activeConnection);
if (this._activeConnection)
this._stateChangeId = this._activeConnection.connect('vpn-state-changed',
Lang.bind(this, this._connectionStateChanged));
this.emit('state-changed');
this.emit('active-connection-changed');
},
_shouldShowConnectionList: function() {
@ -943,39 +936,7 @@ const NMDeviceVPN = new Lang.Class({
},
getStatusLabel: function() {
if (!this._activeConnection) // Same as DISCONNECTED
return null;
switch(this._activeConnection.vpn_state) {
case NetworkManager.VPNConnectionState.DISCONNECTED:
case NetworkManager.VPNConnectionState.ACTIVATED:
return null;
case NetworkManager.VPNConnectionState.PREPARE:
case NetworkManager.VPNConnectionState.CONNECT:
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
return _("connecting...");
case NetworkManager.VPNConnectionState.NEED_AUTH:
/* Translators: this is for network connections that require some kind of key or password */
return _("authentication required");
case NetworkManager.VPNConnectionState.FAILED:
return _("connection failed");
default:
log('VPN connection state invalid, is %d'.format(this.device.state));
return 'invalid';
}
},
_connectionStateChanged: function(connection, newstate, reason) {
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
// FIXME: if we ever want to show something based on reason,
// we need to convert from NetworkManager.VPNConnectionStateReason
// to NetworkManager.DeviceStateReason
this.emit('activation-failed', reason);
}
// Differently from real NMDevices, there is no need to queue
// an update of the menu section, contents wouldn't change anyway
this.emit('state-changed');
return null;
}
});
@ -1077,8 +1038,13 @@ const NMDeviceWireless = new Lang.Class({
},
setEnabled: function(enabled) {
this.statusItem.actor.visible = enabled;
this.section.actor.visible = enabled;
if (enabled) {
this.statusItem.actor.show();
this.section.actor.show();
} else {
this.statusItem.actor.hide();
this.section.actor.hide();
}
},
activate: function() {
@ -1365,7 +1331,9 @@ const NMDeviceWireless = new Lang.Class({
},
removeConnection: function(connection) {
let pos = this._findConnection(connection.get_uuid());
if (!connection._uuid)
return;
let pos = this._findConnection(connection._uuid);
if (pos == -1) {
// removing connection that was never added
return;
@ -1379,7 +1347,7 @@ const NMDeviceWireless = new Lang.Class({
let apObj = this._networks[i];
let connections = apObj.connections;
for (let k = 0; k < connections.length; k++) {
if (connections[k].get_uuid() == connection.get_uuid()) {
if (connections[k]._uuid == connection._uuid) {
// remove the connection from the access point group
connections.splice(k);
forceupdate = forceupdate || connections.length == 0;
@ -1395,7 +1363,7 @@ const NMDeviceWireless = new Lang.Class({
forceupdate = true;
} else {
for (let j = 0; j < items.length; j++) {
if (items[j]._connection.get_uuid() == connection.get_uuid()) {
if (items[j]._connection._uuid == connection._uuid) {
items[j].destroy();
break;
}
@ -1422,8 +1390,8 @@ const NMDeviceWireless = new Lang.Class({
// record the connection
let obj = {
connection: connection,
name: connection.get_id(),
uuid: connection.get_uuid(),
name: connection._name,
uuid: connection._uuid,
};
this._connections.push(obj);
@ -1570,7 +1538,7 @@ const NMApplet = new Lang.Class({
Extends: PanelMenu.SystemStatusButton,
_init: function() {
this.parent('network-offline', _("Network"));
this.parent('network-error', _("Network"));
this._client = NMClient.Client.new();
@ -1584,15 +1552,6 @@ const NMApplet = new Lang.Class({
this.menu.addMenuItem(this._statusSection);
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._activeConnections = [ ];
this._connections = [ ];
this._mainConnection = null;
this._activeAccessPointUpdateId = 0;
this._activeAccessPoint = null;
this._mobileUpdateId = 0;
this._mobileUpdateDevice = null;
this._devices = { };
this._devices.wired = {
@ -1628,9 +1587,13 @@ const NMApplet = new Lang.Class({
this._devices.vpn = {
section: new PopupMenu.PopupMenuSection(),
device: this._makeWrapperDevice(NMDeviceVPN, null),
device: new NMDeviceVPN(this._client),
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
};
this._devices.vpn.device.connect('active-connection-changed', Lang.bind(this, function() {
this._devices.vpn.item.updateForDevice(this._devices.vpn.device);
}));
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.actor.hide();
@ -1638,6 +1601,15 @@ const NMApplet = new Lang.Class({
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
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;
@ -1680,10 +1652,7 @@ const NMApplet = new Lang.Class({
_ensureSource: function() {
if (!this._source) {
this._source = new MessageTray.Source(_("Network Manager"),
'network-transmit-receive',
St.IconType.SYMBOLIC);
this._source = new NMMessageTraySource();
this._source.connect('destroy', Lang.bind(this, function() {
this._source = null;
}));
@ -1704,18 +1673,6 @@ const NMApplet = new Lang.Class({
},
_syncSectionTitle: function(category) {
if (category == NMConnectionCategory.VPN) {
// Special case VPN: it's only one device (and a fake one
// actually), and we don't show it if empty
let device = this._devices.vpn.device;
let section = this._devices.vpn.section;
let item = this._devices.vpn.item;
section.actor.visible = !device.empty;
item.updateForDevice(device);
return;
}
let devices = this._devices[category].devices;
let item = this._devices[category].item;
let section = this._devices[category].section;
@ -1766,29 +1723,6 @@ const NMApplet = new Lang.Class({
this._source.notify(device._notification);
},
_makeWrapperDevice: function(wrapperClass, device) {
let wrapper = new wrapperClass(this._client, device, this._connections);
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
// XXX: nm-applet has no special text depending on reason
// but I'm not sure of this generic message
this._notifyForDevice(device, 'network-error',
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
}));
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
this._syncSectionTitle(dev.category);
}));
wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
wrapper.disconnect(wrapper._activationFailedId);
wrapper.disconnect(wrapper._deviceStateChangedId);
wrapper.disconnect(wrapper._destroyId);
});
return wrapper;
},
_deviceAdded: function(client, device) {
if (device._delegate) {
// already seen, not adding again
@ -1796,8 +1730,24 @@ const NMApplet = new Lang.Class({
}
let wrapperClass = this._dtypes[device.get_device_type()];
if (wrapperClass) {
let wrapper = this._makeWrapperDevice(wrapperClass, device);
let wrapper = new wrapperClass(this._client, device, this._connections);
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
// XXX: nm-applet has no special text depending on reason
// but I'm not sure of this generic message
this._notifyForDevice(device, 'network-error',
_("Connection failed"),
_("Activation of network connection failed"),
MessageTray.Urgency.HIGH);
}));
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
this._syncSectionTitle(dev.category);
}));
wrapper._destroyId = wrapper.connect('destroy', function(wrapper) {
wrapper.disconnect(wrapper._activationFailedId);
wrapper.disconnect(wrapper._deviceStateChangedId);
wrapper.disconnect(wrapper._destroyId);
});
let section = this._devices[wrapper.category].section;
let devices = this._devices[wrapper.category].devices;
@ -1894,7 +1844,7 @@ const NMApplet = new Lang.Class({
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
// find a good device to be considered primary
a._primaryDevice = null;
let devices = a.get_devices() || [];
let devices = a.get_devices();
for (let j = 0; j < devices.length; j++) {
let d = devices[j];
if (d._delegate) {
@ -1933,7 +1883,7 @@ const NMApplet = new Lang.Class({
let connections = this._settings.list_connections();
for (let i = 0; i < connections.length; i++) {
let connection = connections[i];
if (connection._updatedId) {
if (connection._uuid) {
// connection was already seen (for example because NetworkManager was restarted)
continue;
}
@ -1946,7 +1896,7 @@ const NMApplet = new Lang.Class({
},
_newConnection: function(settings, connection) {
if (connection._updatedId) {
if (connection._uuid) {
// connection was already seen
return;
}
@ -1969,31 +1919,35 @@ const NMApplet = new Lang.Class({
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.removeConnection(connection);
this._syncSectionTitle(section);
if (this._devices.vpn.device.empty)
this._devices.vpn.section.actor.hide();
} else if (section != NMConnectionCategory.INVALID) {
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);
connection._removedId = connection._updatedId = 0;
},
_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] || NMConnectionCategory.INVALID;
connection._name = connectionSettings.id;
connection._uuid = connectionSettings.uuid;
connection._timestamp = connectionSettings.timestamp;
let section = connection._section;
if (section == NMConnectionCategory.INVALID)
if (connection._section == NMConnectionCategory.INVALID)
return;
if (section == NMConnectionCategory.VPN) {
this._devices.vpn.device.checkConnection(connection);
this._syncSectionTitle(section);
this._devices.vpn.section.actor.show();
} else {
let devices = this._devices[section].devices;
for (let i = 0; i < devices.length; i++) {
@ -2016,10 +1970,12 @@ const NMApplet = new Lang.Class({
this._statusSection.actor.hide();
this._syncSectionTitle(NMConnectionCategory.WIRED);
this._syncSectionTitle(NMConnectionCategory.WIRELESS);
this._syncSectionTitle(NMConnectionCategory.WWAN);
this._syncSectionTitle(NMConnectionCategory.VPN);
this._syncSectionTitle('wired');
this._syncSectionTitle('wireless');
this._syncSectionTitle('wwan');
if (!this._devices.vpn.device.empty)
this._devices.vpn.section.actor.show();
},
_syncNMState: function() {
@ -2152,3 +2108,18 @@ const NMApplet = new Lang.Class({
}
}
});
const NMMessageTraySource = new Lang.Class({
Name: 'NMMessageTraySource',
Extends: MessageTray.Source,
_init: function() {
this.parent(_("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);
}
});

View File

@ -212,7 +212,7 @@ const DeviceItem = new Lang.Class({
case UPDeviceType.COMPUTER:
return _("Computer");
default:
return C_("device", "Unknown");
return _("Unknown");
}
}
});

View File

@ -149,9 +149,13 @@ const Indicator = new Lang.Class({
}
}
}
this._inputTitle.actor.visible = showInput;
this._inputSlider.actor.visible = showInput;
if (showInput) {
this._inputTitle.actor.show();
this._inputSlider.actor.show();
} else {
this._inputTitle.actor.hide();
this._inputSlider.actor.hide();
}
},
_volumeToIcon: function(volume) {

View File

@ -365,9 +365,8 @@ const Client = new Lang.Class({
_ensureSubscriptionSource: function() {
if (this._subscriptionSource == null) {
this._subscriptionSource = new MessageTray.Source(_("Subscription request"),
'gtk-dialog-question',
St.IconType.FULLCOLOR);
this._subscriptionSource = new MultiNotificationSource(
_("Subscription request"), 'gtk-dialog-question');
Main.messageTray.add(this._subscriptionSource);
this._subscriptionSource.connect('destroy', Lang.bind(this, function () {
this._subscriptionSource = null;
@ -402,9 +401,8 @@ const Client = new Lang.Class({
_ensureAccountSource: function() {
if (this._accountSource == null) {
this._accountSource = new MessageTray.Source(_("Connection error"),
'gtk-dialog-error',
St.IconType.FULLCOLOR);
this._accountSource = new MultiNotificationSource(
_("Connection error"), 'gtk-dialog-error');
Main.messageTray.add(this._accountSource);
this._accountSource.connect('destroy', Lang.bind(this, function () {
this._accountSource = null;
@ -420,13 +418,14 @@ const ChatSource = new Lang.Class({
Extends: MessageTray.Source,
_init: function(account, conn, channel, contact, client) {
this.parent(contact.get_alias());
this.isChat = true;
this._account = account;
this._contact = contact;
this._client = client;
this.parent(contact.get_alias());
this.isChat = true;
this._pendingMessages = [];
this._conn = conn;
@ -447,6 +446,8 @@ const ChatSource = new Lang.Class({
this._receivedId = this._channel.connect('message-received', Lang.bind(this, this._messageReceived));
this._pendingId = this._channel.connect('pending-message-removed', Lang.bind(this, this._pendingRemoved));
this._setSummaryIcon(this.createNotificationIcon());
this._notifyAliasId = this._contact.connect('notify::alias', Lang.bind(this, this._updateAlias));
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));
@ -509,10 +510,10 @@ const ChatSource = new Lang.Class({
_getLogMessages: function() {
let logManager = Tpl.LogManager.dup_singleton();
let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
logManager.get_filtered_events_async(this._account, entity,
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
null, Lang.bind(this, this._displayPendingMessages));
Shell.get_contact_events(logManager,
this._account, entity,
SCROLLBACK_HISTORY_LINES,
Lang.bind(this, this._displayPendingMessages));
},
_displayPendingMessages: function(logManager, result) {
@ -852,8 +853,6 @@ const ChatNotification = new Lang.Class({
this._lastGroupActor.add(body, props.childProps);
this.updated();
let timestamp = props.timestamp;
this._history.unshift({ actor: body, time: timestamp,
realMessage: group != 'meta' });
@ -1001,10 +1000,11 @@ const ApproverSource = new Lang.Class({
Extends: MessageTray.Source,
_init: function(dispatchOp, text, gicon) {
this._gicon = gicon;
this.parent(text);
this._gicon = gicon;
this._setSummaryIcon(this.createNotificationIcon());
this._dispatchOp = dispatchOp;
// Destroy the source if the channel dispatch operation is invalidated
@ -1026,6 +1026,7 @@ const ApproverSource = new Lang.Class({
createNotificationIcon: function() {
return new St.Icon({ gicon: this._gicon,
icon_type: St.IconType.FULLCOLOR,
icon_size: this.ICON_SIZE });
}
});
@ -1148,6 +1149,40 @@ const FileTransferNotification = new Lang.Class({
}
});
// A notification source that can embed multiple notifications
const MultiNotificationSource = new Lang.Class({
Name: 'MultiNotificationSource',
Extends: MessageTray.Source,
_init: function(title, icon) {
this.parent(title);
this._icon = icon;
this._setSummaryIcon(this.createNotificationIcon());
this._nbNotifications = 0;
},
notify: function(notification) {
this.parent(notification);
this._nbNotifications += 1;
// Display the source while there is at least one notification
notification.connect('destroy', Lang.bind(this, function () {
this._nbNotifications -= 1;
if (this._nbNotifications == 0)
this.destroy();
}));
},
createNotificationIcon: function() {
return new St.Icon({ gicon: Gio.icon_new_for_string(this._icon),
icon_type: St.IconType.FULLCOLOR,
icon_size: this.ICON_SIZE });
}
});
// Subscription request
const SubscriptionRequestNotification = new Lang.Class({
Name: 'SubscriptionRequestNotification',

View File

@ -1,7 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const AccountsService = imports.gi.AccountsService;
const GdmGreeter = imports.gi.GdmGreeter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
@ -474,22 +473,13 @@ const UserMenuButton = new Lang.Class({
style_class: 'popup-menu-icon' });
this._idleIcon = new St.Icon({ icon_name: 'user-idle',
style_class: 'popup-menu-icon' });
this._pendingIcon = new St.Icon({ icon_name: 'user-status-pending',
style_class: 'popup-menu-icon' });
this._accountMgr.connect('most-available-presence-changed',
Lang.bind(this, this._updatePresenceIcon));
this._accountMgr.connect('account-enabled',
Lang.bind(this, this._onAccountEnabled));
this._accountMgr.connect('account-disabled',
Lang.bind(this, this._onAccountDisabled));
this._accountMgr.connect('account-removed',
Lang.bind(this, this._onAccountDisabled));
this._accountMgr.prepare_async(null, Lang.bind(this,
function(mgr) {
let [presence, s, msg] = mgr.get_most_available_presence();
this._updatePresenceIcon(mgr, presence, s, msg);
this._setupAccounts();
}));
this._name = new St.Label();
@ -507,13 +497,13 @@ const UserMenuButton = new Lang.Class({
}));
this._userManager.connect('notify::is-loaded',
Lang.bind(this, this._updateMultiUser));
Lang.bind(this, this._updateSwitchUser));
this._userManager.connect('notify::has-multiple-users',
Lang.bind(this, this._updateMultiUser));
Lang.bind(this, this._updateSwitchUser));
this._userManager.connect('user-added',
Lang.bind(this, this._updateMultiUser));
Lang.bind(this, this._updateSwitchUser));
this._userManager.connect('user-removed',
Lang.bind(this, this._updateMultiUser));
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,
@ -552,32 +542,30 @@ const UserMenuButton = new Lang.Class({
this._name.set_text("");
},
_updateMultiUser: function() {
this._updateSwitchUser();
this._updateLogout();
},
_updateSwitchUser: function() {
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
let multiSession = GdmGreeter.get_session_ids().length > 1;
this._loginScreenItem.label.set_text(multiUser ? _("Switch User")
: _("Switch Session"));
this._loginScreenItem.actor.visible = allowSwitch && (multiUser || multiSession);
if (allowSwitch &&
this._userManager.can_switch() &&
this._userManager.has_multiple_users)
this._loginScreenItem.actor.show();
else
this._loginScreenItem.actor.hide();
},
_updateLogout: function() {
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
let multiUser = this._userManager.has_multiple_users;
let multiSession = GdmGreeter.get_session_ids().length > 1;
this._logoutItem.actor.visible = allowLogout && (multiUser || multiSession);
if (allowLogout)
this._logoutItem.actor.show();
else
this._logoutItem.actor.hide();
},
_updateLockScreen: function() {
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
this._lockScreenItem.actor.visible = allowLockScreen;
if (allowLockScreen)
this._lockScreenItem.actor.show();
else
this._lockScreenItem.actor.hide();
},
_updateHaveShutdown: function() {
@ -596,16 +584,19 @@ const UserMenuButton = new Lang.Class({
if (!this._suspendOrPowerOffItem)
return;
this._suspendOrPowerOffItem.actor.visible = this._haveShutdown || this._haveSuspend;
if (!this._haveShutdown && !this._haveSuspend)
this._suspendOrPowerOffItem.actor.hide();
else
this._suspendOrPowerOffItem.actor.show();
// If we can't power off show Suspend instead
// If we can't suspend show Power Off... instead
// and disable the alt key
if (!this._haveShutdown) {
if (!this._haveSuspend) {
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
} else if (!this._haveShutdown) {
this._suspendOrPowerOffItem.updateText(_("Suspend"), null);
} else if (!this._haveSuspend) {
this._suspendOrPowerOffItem.updateText(_("Power Off"), null);
} else {
this._suspendOrPowerOffItem.updateText(_("Power Off"), _("Suspend"));
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
}
},
@ -629,52 +620,11 @@ const UserMenuButton = new Lang.Class({
this._iconBox.child = this._offlineIcon;
},
_setupAccounts: function() {
let accounts = this._accountMgr.get_valid_accounts();
for (let i = 0; i < accounts.length; i++) {
accounts[i]._changingId = accounts[i].connect('notify::connection-status',
Lang.bind(this, this._updateChangingPresence));
}
this._updateChangingPresence();
},
_onAccountEnabled: function(accountMgr, account) {
if (!account._changingId)
account._changingId = account.connect('notify::connection-status',
Lang.bind(this, this._updateChangingPresence));
this._updateChangingPresence();
},
_onAccountDisabled: function(accountMgr, account) {
account.disconnect(account._changingId);
account._changingId = 0;
this._updateChangingPresence();
},
_updateChangingPresence: function() {
let accounts = this._accountMgr.get_valid_accounts();
let changing = false;
for (let i = 0; i < accounts.length; i++) {
if (accounts[i].connection_status == Tp.ConnectionStatus.CONNECTING) {
changing = true;
break;
}
}
if (changing) {
this._iconBox.child = this._pendingIcon;
} else {
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
this._updatePresenceIcon(this._accountMgr, presence, s, msg);
}
},
_createSubMenu: function() {
let item;
item = new IMStatusChooserItem();
if (Main.sessionMode.allowSettings)
item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
item.connect('activate', Lang.bind(this, this._onMyAccountActivate));
this.menu.addMenuItem(item);
this._statusChooser = item;
@ -686,28 +636,28 @@ const UserMenuButton = new Lang.Class({
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
if (Main.sessionMode.allowSettings) {
item = new PopupMenu.PopupMenuItem(_("System Settings"));
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
this.menu.addMenuItem(item);
}
item = new PopupMenu.PopupAlternatingMenuItem(_("Power Off"),
_("Suspend"));
item = new PopupMenu.PopupMenuItem(_("Online Accounts"));
item.connect('activate', Lang.bind(this, this._onOnlineAccountsActivate));
this.menu.addMenuItem(item);
item = new PopupMenu.PopupMenuItem(_("System Settings"));
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
this.menu.addMenuItem(item);
item.connect('activate', Lang.bind(this, this._onSuspendOrPowerOffActivate));
this._suspendOrPowerOffItem = item;
this._updateSuspendOrPowerOff();
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
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));
this.menu.addMenuItem(item);
this._loginScreenItem = item;
item = new PopupMenu.PopupMenuItem(_("Log Out"));
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
this.menu.addMenuItem(item);
this._logoutItem = item;
@ -715,10 +665,12 @@ const UserMenuButton = new Lang.Class({
item = new PopupMenu.PopupSeparatorMenuItem();
this.menu.addMenuItem(item);
item = new PopupMenu.PopupMenuItem(_("Lock"));
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
_("Power Off..."));
this.menu.addMenuItem(item);
this._lockScreenItem = item;
this._suspendOrPowerOffItem = item;
item.connect('activate', Lang.bind(this, this._onSuspendOrPowerOffActivate));
this._updateSuspendOrPowerOff();
},
_updatePresenceStatus: function(item, event) {
@ -746,6 +698,12 @@ const UserMenuButton = new Lang.Class({
app.activate();
},
_onOnlineAccountsActivate: function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().lookup_setting('gnome-online-accounts-panel.desktop');
app.activate(-1);
},
_onPreferencesActivate: function() {
Main.overview.hide();
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
@ -774,14 +732,14 @@ const UserMenuButton = new Lang.Class({
_onSuspendOrPowerOffActivate: function() {
Main.overview.hide();
if (this._haveShutdown &&
if (this._haveSuspend &&
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
this._session.ShutdownRemote();
} else {
// Ensure we only suspend after locking the screen
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
this._upClient.suspend_sync(null);
}));
} else {
this._session.ShutdownRemote();
}
}
});

View File

@ -168,35 +168,34 @@ const WandaSearchProvider = new Lang.Class({
this.parent(_("Your favorite Easter Egg"));
},
getResultMetas: function(fish, callback) {
callback([{ 'id': fish[0], // there may be many fish in the sea, but
// only one which speaks the truth!
'name': capitalize(fish[0]),
'createIcon': function(iconSize) {
// for DND only (maybe could be improved)
// DON'T use St.Icon here, it crashes the shell
// (dnd.js code assumes it can query the actor size
// without parenting it, while StWidget accesses
// StThemeNode in get_preferred_width/height, which
// triggers an assertion failure)
return St.TextureCache.get_default().load_icon_name(null,
'face-smile',
St.IconType.FULLCOLOR,
iconSize);
}
}]);
getResultMetas: function(fish) {
return [{ 'id': fish[0], // there may be many fish in the sea, but
// only one which speaks the truth!
'name': capitalize(fish[0]),
'createIcon': function(iconSize) {
// for DND only (maybe could be improved)
// DON'T use St.Icon here, it crashes the shell
// (dnd.js code assumes it can query the actor size
// without parenting it, while StWidget accesses
// StThemeNode in get_preferred_width/height, which
// triggers an assertion failure)
return St.TextureCache.get_default().load_icon_name(null,
'face-smile',
St.IconType.FULLCOLOR,
iconSize);
}
}];
},
getInitialResultSet: function(terms) {
if (terms.join(' ') == MAGIC_FISH_KEY) {
this.searchSystem.pushResults(this, [ FISH_NAME ]);
} else {
this.searchSystem.pushResults(this, []);
return [ FISH_NAME ];
}
return [];
},
getSubsearchResultSet: function(previousResults, terms) {
this.getInitialResultSet(terms);
return this.getInitialResultSet(terms);
},
activateResult: function(fish, params) {

View File

@ -53,10 +53,10 @@ const Source = new Lang.Class({
Extends: MessageTray.Source,
_init: function(app, window) {
this.parent(app.get_name());
this._window = window;
this._app = app;
this.parent(app.get_name());
this._setSummaryIcon(this.createNotificationIcon());
this.signalIDs = [];
this.signalIDs.push(this._window.connect('notify::demands-attention', Lang.bind(this, function() { this.destroy(); })));

View File

@ -13,7 +13,6 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
const WINDOW_ANIMATION_TIME = 0.25;
const DIM_TIME = 0.500;
const UNDIM_TIME = 0.250;
@ -135,10 +134,6 @@ const WindowManager = new Lang.Class({
Lang.bind(this, this._startAppSwitcher));
Meta.keybindings_set_custom_handler('switch-panels',
Lang.bind(this, this._startA11ySwitcher));
global.display.add_keybinding('open-application-menu',
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Lang.bind(this, this._openAppMenu));
Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++)
@ -552,10 +547,6 @@ const WindowManager = new Lang.Class({
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
},
_openAppMenu : function(display, screen, window, event, binding) {
Main.panel.openAppMenu();
},
_showWorkspaceSwitcher : function(display, screen, window, binding) {
if (screen.n_workspaces == 1)
return;

View File

@ -301,7 +301,8 @@ const WindowClone = new Lang.Class({
if (!this._zoomLightbox)
this._zoomLightbox = new Lightbox.Lightbox(Main.uiGroup,
{ fadeTime: LIGHTBOX_FADE_TIME });
{ fadeInTime: LIGHTBOX_FADE_TIME,
fadeOutTime: LIGHTBOX_FADE_TIME });
this._zoomLightbox.show();
this._zoomLocalOrig = new ScaledPoint(this.actor.x, this.actor.y, this.actor.scale_x, this.actor.scale_y);
@ -1134,6 +1135,7 @@ const Workspace = new Lang.Class({
_hideAllOverlays: function() {
for (let i = 0; i < this._windows.length; i++) {
let clone = this._windows[i];
Tweener.removeTweens(clone.actor);
let overlay = this._windowOverlays[i];
if (overlay)
overlay.hide();
@ -1251,7 +1253,7 @@ const Workspace = new Lang.Class({
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
return;
let [clone, overlay] = this._addWindowClone(win);
let clone = this._addWindowClone(win);
if (win._overviewHint) {
let x = win._overviewHint.x - this.actor.x;
@ -1261,7 +1263,6 @@ const Workspace = new Lang.Class({
clone.actor.set_position (x, y);
clone.actor.set_scale (scale, scale);
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
} else {
// Position new windows at the top corner of the workspace rather
// than where they were placed for real to avoid the window
@ -1321,10 +1322,7 @@ const Workspace = new Lang.Class({
this.leavingOverview = true;
for (let i = 0; i < this._windows.length; i++) {
let clone = this._windows[i];
Tweener.removeTweens(clone.actor);
}
this._hideAllOverlays();
if (this._repositionWindowsId > 0) {
Mainloop.source_remove(this._repositionWindowsId);
@ -1364,7 +1362,6 @@ const Workspace = new Lang.Class({
}
}
this._hideAllOverlays();
},
destroy : function() {
@ -1455,7 +1452,7 @@ const Workspace = new Lang.Class({
this._windows.push(clone);
this._windowOverlays.push(overlay);
return [clone, overlay];
return clone;
},
_onShowOverlayClose: function (windowOverlay) {

View File

@ -667,7 +667,7 @@ const ThumbnailsBox = new Lang.Class({
if (this._dropWorkspace != -1)
return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, time);
else if (this._dropPlaceholderPos != -1)
return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
return DND.DragMotionResult.MOVE_DROP;
else
return DND.DragMotionResult.CONTINUE;
},

View File

@ -529,11 +529,9 @@ const WorkspacesDisplay = new Lang.Class({
this._updateAlwaysZoom();
}));
global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
this._switchWorkspaceNotifyId = 0;
this._nWorkspacesChangedId = 0;
this._itemDragBeginId = 0;
this._itemDragCancelledId = 0;
this._itemDragEndId = 0;
@ -572,6 +570,9 @@ const WorkspacesDisplay = new Lang.Class({
global.screen.connect('restacked',
Lang.bind(this, this._onRestacked));
if (this._nWorkspacesChangedId == 0)
this._nWorkspacesChangedId = global.screen.connect('notify::n-workspaces',
Lang.bind(this, this._workspacesChanged));
if (this._itemDragBeginId == 0)
this._itemDragBeginId = Main.overview.connect('item-drag-begin',
Lang.bind(this, this._dragBegin));
@ -843,7 +844,10 @@ const WorkspacesDisplay = new Lang.Class({
if (!primaryView)
return;
primaryView.actor.opacity = opacity;
primaryView.actor.visible = opacity != 0;
if (opacity == 0)
primaryView.actor.hide();
else
primaryView.actor.show();
}));
}));
},
@ -924,16 +928,19 @@ const WorkspacesDisplay = new Lang.Class({
},
_workspacesChanged: function() {
let oldNumWorkspaces = this._workspaces[0].length;
let newNumWorkspaces = global.screen.n_workspaces;
let active = global.screen.get_active_workspace_index();
if (oldNumWorkspaces == newNumWorkspaces)
return;
this._updateAlwaysZoom();
this._updateZoom();
if (this._workspacesViews == null)
return;
let oldNumWorkspaces = this._workspaces[0].length;
let newNumWorkspaces = global.screen.n_workspaces;
let active = global.screen.get_active_workspace_index();
let lostWorkspaces = [];
if (newNumWorkspaces > oldNumWorkspaces) {
let monitors = Main.layoutManager.monitors;

View File

@ -1,3 +1,2 @@
data/gnome-shell.desktop.in
data/gnome-shell-extension-prefs.desktop.in
data/org.gnome.shell.evolution.calendar.gschema.xml.in

139
po/ar.po
View File

@ -6,9 +6,10 @@
msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-14 19:54+0200\n"
"PO-Revision-Date: 2012-04-14 19:54+0200\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-20 17:23+0000\n"
"PO-Revision-Date: 2012-03-24 04:30+0200\n"
"Last-Translator: Khaled Hosny <khaledhosny@eglug.org>\n"
"Language-Team: Arabic <doc@arabeyes.org>\n"
"Language: ar\n"
@ -32,11 +33,11 @@ msgstr "إدارة النوافذ وإطلاق التطبيقات"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extension Preferences"
msgstr "تفضيلات امتدادات صدفة جنوم"
msgstr ""
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "اضبط امتدادات صدفة جنوم"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -49,8 +50,10 @@ msgid ""
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:3
#, fuzzy
#| msgid "No extensions installed"
msgid "Uuids of extensions to enable"
msgstr "معرّفات الامتدادات التي ستُفعّل"
msgstr "لم تثبّت أية امتدادات"
#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid ""
@ -115,52 +118,46 @@ msgid "If true, display the ISO week date in the calendar."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#, fuzzy
#| msgid "Show seco_nds"
msgid "Show time with seconds"
msgstr "اعرض الوقت بالثواني"
msgstr "أظهر ال_ثواني"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display seconds in time."
msgstr "إذا كان صحيحًا، ستعرض الثواني في الوقت."
msgid "If true, display date in the clock, in addition to time."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Show date in clock"
msgstr "اعرض التاريخ في الساعة"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "If true, display date in the clock, in addition to time."
msgstr "إذا كان صحيحًا، سيعرض في الساعة التاريخ بالإضافة إلى الوقت."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Framerate used for recording screencasts."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -175,11 +172,11 @@ msgid ""
"thread count on the system."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -189,50 +186,50 @@ msgstr ""
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "حدث خطأ أثناء تشغيل حوار تفضيلات %s:"
msgstr ""
#: ../js/extensionPrefs/main.js:165
msgid "<b>Extension</b>"
msgstr "<b>الامتداد</b>"
msgstr ""
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr "اختر امتدادا لضبطه من القائمة أعلاه."
msgstr ""
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "الجلسة..."
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "ادخل"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(أو مرر إصبع)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "غير مدرج؟"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "ألغِ"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "ادخل"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "نافذة الولوج"
@ -646,11 +643,11 @@ msgstr[5] "سيُعاد تشغيل النظام تلقائيا بعد %d ثان
msgid "Restarting the system."
msgstr "يُعاد تشغيل النظام."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "ثبت"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "هل تريد تنزيل وتثبيت '%s' من extensions.gnome.org؟"
@ -659,8 +656,7 @@ msgstr "هل تريد تنزيل وتثبيت '%s' من extensions.gnome.org؟"
msgid "tray"
msgstr "لوحة النظام"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "لوحة المفاتيح"
@ -672,51 +668,51 @@ msgstr "كلمة السرّ:"
msgid "Type again:"
msgstr "أدخلها ثانية:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "لا امتدادات مثبّتة"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "لم يصدر %s أي خطأ."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "أخفِ الأخطاء"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "اظهر الأخطاء"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "مفعّل"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "معطّل"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "خطأ"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "قديم"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "ينزّل"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "اعرض المصدر"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "صفحة الوب"
@ -784,8 +780,8 @@ msgstr "تتطلب الشبكة اللاسلكية الاستيثاق"
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
msgstr "كلمات السر أو مفاتيح التعمية مطلوبة للوصول إلى الشبكة اللاسلكية '%s'."
#: ../js/ui/networkAgent.js:334
@ -843,17 +839,17 @@ msgstr "التطبيقات"
msgid "Dash"
msgstr "الشريط"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "أنْهِ"
msgstr "انْهِ"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "الأنشطة"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "الشريط العلوي"
@ -911,7 +907,7 @@ msgstr "من فضلك أدخل أمرًا:"
msgid "Searching..."
msgstr "يبحث..."
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:414
msgid "No matching results."
msgstr "لا نتائج مطابقة."
@ -936,6 +932,7 @@ msgid "Wrong password, please try again"
msgstr "كلمة السرّ خاطئة، من فضلك أعد المحاولة"
#: ../js/ui/status/accessibility.js:47
#| msgid "Visibility"
msgid "Accessibility"
msgstr "الإتاحة"
@ -1195,6 +1192,7 @@ msgid "Auto wireless"
msgstr "لاسلكي تلقائي"
#: ../js/ui/status/network.js:1541
#| msgid "Network error"
msgid "Network"
msgstr "الشّبكة"
@ -1419,7 +1417,7 @@ msgstr "أُرْسِلت يوم <b>%A %d %B</b>"
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "أُرْسِلت يوم <b>%A</b>، <b>%d %B</b>، %Y"
msgstr "أُرْسِلت يوم <b>%A</b>، <b>%B %d</b>، %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
@ -1551,6 +1549,7 @@ msgid "Connection has been lost"
msgstr "فُقد الاتصال"
#: ../js/ui/telepathyClient.js:1319
#| msgid "This resource is already connected to the server"
msgid "This account is already connected to the server"
msgstr "هذا الحساب متصل بالخادوم بالفعل"
@ -1585,6 +1584,7 @@ msgstr ""
"مكتبة التعمية"
#: ../js/ui/telepathyClient.js:1333
#| msgid "Connection error"
msgid "Internal error"
msgstr "خطأ داخلي"
@ -1696,7 +1696,7 @@ msgstr "'%s' جاهز"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1709,7 +1709,7 @@ msgstr[5] "%u مخرج"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@ -1720,7 +1720,7 @@ msgstr[3] "%u مداخل"
msgstr[4] "%u مدخلا"
msgstr[5] "%u مدخل"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "أصوات النظام"
@ -1738,6 +1738,7 @@ msgid "Failed to launch '%s'"
msgstr "فشل تشغيل '%s'"
#: ../src/shell-keyring-prompt.c:708
#| msgid "Does not match"
msgid "Passwords do not match."
msgstr "لا تتطابق كلمتا السر."

View File

@ -5,8 +5,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: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-05 15:36+0300\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-24 20:44+0300\n"
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@ -132,42 +132,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Калі ўключана, паказваць тыдзень у календары ў ISO-фармаце."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Ужываная клавіятура"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Від ужыванай клавіятуры."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Паказваць час з секундамі"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Калі ўключана, паказваць час з секундамі."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Паказваць дату на гадзінніку"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Калі ўключана, паказваць на гадзінніку дату разам з часам."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Частата змены кадраў для запісу скрынкасту."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -175,11 +167,11 @@ msgstr ""
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
"GNOME (кадраў на секунду)."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -204,11 +196,11 @@ msgstr ""
"speed=6 threads=%T ! queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка "
"VP8. %T ўжываецца ў якасці замены аптымальнай для сістэмы колькасці ніцяў."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Пашырэнне файла для захавання скрынкасту"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -699,51 +691,51 @@ msgstr "Пароль:"
msgid "Type again:"
msgstr "Паўтарыце пароль:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Няма ўсталяваных пашырэнняў"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s не зрабіў ніякіх памылак."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Хаваць памылкі"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Паказваць памылкі"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Уключана"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Выключана"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Памылка"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Састарэла"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Сцягванне"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Паглядзець выточны код"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Сеціўная старонка"
@ -874,17 +866,17 @@ msgstr "Праграмы"
msgid "Dash"
msgstr "Прыборная дошка"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Выйсці"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Заняткі"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Верхняя панэль"
@ -938,11 +930,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Увядзіце загад:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Пошук..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Нічога адпаведнага не знойдзена."

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-01 17:44+0300\n"
"PO-Revision-Date: 2012-04-01 17:44+0300\n"
"POT-Creation-Date: 2012-03-21 06:49+0200\n"
"PO-Revision-Date: 2012-03-21 06:49+0200\n"
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@ -134,42 +134,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Показване на деня от седмицата по ISO, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Клавишна комбинация за менюто за програми"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Клавишна комбинация за отваряне на менюто за програми."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Коя клавиатура да се ползва"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Видът на клавиатурата, която да се ползва."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Показване на секунди към времето"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Показване на секундите в допълнение към времето, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Показване на дата в часовника"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Показване на дата в допълнение към времето, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Честота на кадрите за създаваните записи"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -177,11 +169,11 @@ msgstr ""
"Честота на кадрите за записа на екрана създаден от записващата програма на "
"Обвивката на GNOME в кадри за секунда."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Конвейерът на gstreamer за кодиране на записа на екрана"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -207,11 +199,11 @@ msgstr ""
"използва кодера VP8. Стойността в „%T“ указва предполагаемия оптимален брой "
"нишки за системата."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Разширение на файла за съхранение на записите"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -699,51 +691,51 @@ msgstr "Парола:"
msgid "Type again:"
msgstr "Въведете отново:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Няма инсталирани разширения"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "Разширението %s не е обозначило никакви грешки."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Скриване на грешките"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Показване на грешките"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Включено"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Изключено"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Грешка"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Остаряло"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Изтегляне"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Преглед на изходния код"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Домашна страница"
@ -872,17 +864,17 @@ msgstr "Програми"
msgid "Dash"
msgstr "Най-ползвани"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Спиране на програмата"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Дейности"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Горна лента"

132
po/ca.po
View File

@ -3,21 +3,19 @@
# This file is distributed under the same license as the gnome-shell package.
# Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>, 2009.
# Gil Forcada <gilforcada@guifi.net>, 2010, 2011, 2012.
# Jordi Serratosa <jordis@softcatala.cat>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-04-01 22:09+0000\n"
"PO-Revision-Date: 2012-04-02 00:08+0200\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-03-19 22:35+0100\n"
"PO-Revision-Date: 2012-03-19 22:35+0100\n"
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
"Language-Team: català; valencià <tradgnome@softcatala.org>\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bits\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@ -136,43 +134,35 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Si és «true» (cert) es mostra el número de la setmana en el calendari."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Vinculació per obrir el menú d'aplicació"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "La vinculació per obrir el menú d'aplicació."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Quin tipus de teclat s'ha d'utilitzar"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "El tipus de teclat que s'utilitzarà."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Mostra l'hora amb segons"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Si és «true» (cert) es mostren els segons."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Mostra la data en el rellotge"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr ""
"Si és «true» (cert) es mostra la data en el rellotge a més a més de l'hora."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Imatges per segon per enregistrar els screencasts."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -180,11 +170,11 @@ msgstr ""
"Les imatges per segon, en fotogrames per segon, de l'screencast enregistrat "
"per l'eina d'enregistrament del GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "El conducte GStreamer per enregistrar els screencasts"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -210,11 +200,11 @@ msgstr ""
"enregistra amb el format WEBM i utilitza el còdec VP8. El %T és una variable "
"per estimar el nombre de fils d'execució paral·lels òptims del sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Extensió de fitxer per desar l'screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -515,7 +505,7 @@ msgstr "Ocupat"
#: ../js/ui/contactDisplay.js:102
msgid "Offline"
msgstr "Fora de línia"
msgstr "Fora de lnia"
#: ../js/ui/contactDisplay.js:153
msgid "CONTACTS"
@ -694,51 +684,51 @@ msgstr "Contrasenya:"
msgid "Type again:"
msgstr "Torneu a escriure-la:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "No hi ha cap extensió instal·lada"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s no ha emès cap error."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Amaga els errors"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Mostra els errors"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Habilitat"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Inhabilitat"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Error"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Fora d'hora"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "S'està baixant"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Mostra el codi font"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Pàgina web"
@ -806,15 +796,15 @@ msgstr "La xarxa sense fil requereix autenticació"
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr ""
"Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus "
"d'encriptació."
#: ../js/ui/networkAgent.js:334
msgid "Wired 802.1X authentication"
msgstr "Autenticació 802.1X amb fil"
msgstr "Autenticaci 802.1X amb fil"
#: ../js/ui/networkAgent.js:336
msgid "Network name: "
@ -822,15 +812,15 @@ msgstr "Nom de la xarxa: "
#: ../js/ui/networkAgent.js:341
msgid "DSL authentication"
msgstr "Autenticació DSL"
msgstr "Autenticaci DSL"
#: ../js/ui/networkAgent.js:348
msgid "PIN code required"
msgstr "Cal que introduïu el codi PIN"
msgstr "Cal que introduu el codi PIN"
#: ../js/ui/networkAgent.js:349
msgid "PIN code is needed for the mobile broadband device"
msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
msgstr "Cal que introduu el codi PIN del dispositiu de banda ampla mbil"
#: ../js/ui/networkAgent.js:350
msgid "PIN: "
@ -838,12 +828,12 @@ msgstr "PIN: "
#: ../js/ui/networkAgent.js:356
msgid "Mobile broadband network password"
msgstr "Contrasenya de la xarxa de banda ampla mòbil"
msgstr "Contrasenya de la xarxa de banda ampla mbil"
#: ../js/ui/networkAgent.js:357
#, c-format
msgid "A password is required to connect to '%s'."
msgstr "Cal que introduïu una contrasenya per connectar-vos a «%s»."
msgstr "Cal que introduu una contrasenya per connectar-vos a «%s»."
#: ../js/ui/overview.js:90
msgid "Undo"
@ -867,17 +857,17 @@ msgstr "Aplicacions"
msgid "Dash"
msgstr "Quadre d'aplicacions"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Surt"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Activitats"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Barra superior"
@ -931,11 +921,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Introduïu una ordre:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "S'està cercant..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "No s'ha trobat cap coincidència."
@ -1078,7 +1068,7 @@ msgstr "Paràmetres de so"
#: ../js/ui/status/bluetooth.js:372
#, c-format
msgid "Authorization request from %s"
msgstr "Hi ha una sol·licitud d'autorització des de %s"
msgstr "Hi ha una petició d'autorització des de %s"
#: ../js/ui/status/bluetooth.js:378
#, c-format
@ -1248,7 +1238,7 @@ msgstr "Paràmetres de xarxa"
#: ../js/ui/status/network.js:1739
msgid "Connection failed"
msgstr "Ha fallat la connexió"
msgstr "Ha fallat la connexi"
#: ../js/ui/status/network.js:1740
msgid "Activation of network connection failed"
@ -1377,11 +1367,11 @@ msgstr "Trucada"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Transferència de fitxers"
msgstr "Transferncia de fitxers"
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
msgstr "Teniu una sol·licitud de subscripció"
msgstr "Teniu una petició de subscripció"
#: ../js/ui/telepathyClient.js:405
msgid "Connection error"
@ -1492,7 +1482,7 @@ msgstr "En/na %s us envia %s"
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s vol poder saber quan esteu en línia"
msgstr "%s vol poder saber quan esteu en lnia"
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
@ -1500,7 +1490,7 @@ msgstr "Error de la xarxa"
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Ha fallat l'autenticació"
msgstr "Ha fallat l'autenticaci"
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
@ -1512,19 +1502,19 @@ msgstr "No s'ha proporcionat el certificat"
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "El certificat no és de confiança"
msgstr "El certificat no s de confiana"
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "El certificat ha vençut"
msgstr "El certificat ha venut"
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "El certificat no està activat"
msgstr "El certificat no est activat"
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "No coincideix el nom de la màquina del certificat"
msgstr "No coincideix el nom de la mquina del certificat"
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
@ -1540,33 +1530,33 @@ msgstr "S'ha establert l'estat a fora de línia"
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "L'encriptació no està disponible"
msgstr "L'encriptaci no est disponible"
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "El certificat no és vàlid"
msgstr "El certificat no s vlid"
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "S'ha rebutjat la connexió"
msgstr "S'ha rebutjat la connexi"
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "No es pot establir la connexió"
msgstr "No es pot establir la connexi"
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "S'ha perdut la connexió"
msgstr "S'ha perdut la connexi"
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Aquest compte ja està connectat al servidor"
msgstr "Aquest compte ja est connectat al servidor"
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"S'ha reemplaçat la connexió per una altra de nova fent servir el mateix "
"S'ha reemplaat la connexi per una altra de nova fent servir el mateix "
"recurs"
#: ../js/ui/telepathyClient.js:1323
@ -1575,7 +1565,7 @@ msgstr "Ja existeix aquest compte al servidor"
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "El servidor està massa ocupat per gestionar la connexió"
msgstr "El servidor est massa ocupat per gestionar la connexi"
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
@ -1585,8 +1575,8 @@ msgstr "S'ha revocat el certificat"
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"El certificat utilitza un algorisme criptògraf no segur o la seva fortalesa "
"criptogràfica és feble"
"El certificat utilitza un algorisme criptgraf no segur o la seva fortalesa "
"criptogrfica s feble"
#: ../js/ui/telepathyClient.js:1331
msgid ""
@ -1594,7 +1584,7 @@ msgid ""
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"La llargada del certificat del servidor o la profunditat de la cadena de "
"certificació excedeix els límits de la biblioteca criptogràfica"
"certificaci excedeix els lmits de la biblioteca criptogrfica"
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,27 @@
# Czech translation of gnome-shell.
# Copyright (C) 2009, 2010, 2011 the author(s) of gnome-shell.
# This file is distributed under the same license as the gnome-shell package.
#
# Andre Klapper <ak-47@gmx.net>, 2009.
# Petr Kovar <pknbe@volny.cz>, 2009, 2010, 2011, 2012.
# Adam Matoušek <adydas95@gmail.com>, 2012
# Petr Kovar <pknbe@volny.cz>, 2009, 2010, 2011.
# Adam Matoušek <adydas95@gmail.com>, 2012
# Marek Černocký <marek@manet.cz>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-16 15:34+0200\n"
"Last-Translator: Petr Kovar <pknbe@volny.cz>\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-22 11:28+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Project-Style: gnome\n"
"X-Generator: Lokalize 1.2\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -133,42 +134,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Je-li zapnuto, zobrazovat v kalendáři čísla týdnů dle ISO."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Klávesová zkratka na otevření nabídky aplikace"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Klávesová zkratka na otevření nabídky aplikace."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Která klávesnice se má používat"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Typ klávesnice, který se má používat."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Zobrazovat čas včetně sekund"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Je-li zapnuto, zobrazovat čas včetně sekund."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Zobrazovat v hodinách datum"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Je-li zapnuto, zobrazovat v hodinách kromě času i datum."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Frekvence snímků při nahrávání dění na obrazovce."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -176,11 +169,11 @@ msgstr ""
"Frekvence snímků za sekundu výsledné nahrávky dění na obrazovce, která byla "
"nahrána záznamovým programem GNOME Shell."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Roura systému gstreamer určená ke kódování nahrávky dění na obrazovce"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -204,11 +197,11 @@ msgstr ""
"%T ! queue ! webmmux“ s nahráváním do WEBM s kodekem VP8. %T je použito jako "
"zástupný symbol odhadu nejvhodnějšího počtu vláken na systému."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Přípona souboru s nahrávkou dění na obrazovce"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -704,51 +697,51 @@ msgstr "Heslo:"
msgid "Type again:"
msgstr "Napište znovu:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nejsou nainstalována žádná rozšíření"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "Rozšíření %s nevyvolalo žádné chyby."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Skrývat chyby"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Zobrazovat chyby"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Povoleno"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Zakázáno"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Chyba"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Neaktuální"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Stahování"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Zobrazit zdroj"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Webová stránka"
@ -816,8 +809,8 @@ msgstr "K bezdrátové síti je vyžadováno ověření"
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
msgstr ""
"Pro přístup k bezdrátové síti „%s“ jsou vyžadována hesla nebo šifrovací "
"klíče."
@ -877,17 +870,17 @@ msgstr "Aplikace"
msgid "Dash"
msgstr "Oblíbené"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Činnosti"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Horní lišta"
@ -941,11 +934,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Zadejte prosím příkaz:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Hledá se…"
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Neodpovídá ani jeden z výsledků."

116
po/de.po
View File

@ -11,16 +11,15 @@
# Jakob Kramer <jakob.kramer@gmx.de>, 2010.
# Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>, 2010, 2011.
# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2009, 2010, 2011, 2012.
# Wolfgang Stöggl <c72578@yahoo.de>, 2012.
#
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: 2012-04-13 19:40+0000\n"
"PO-Revision-Date: 2012-04-14 16:04+0200\n"
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
"POT-Creation-Date: 2012-03-18 00:40+0000\n"
"PO-Revision-Date: 2012-03-18 01:04+0100\n"
"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -143,42 +142,34 @@ msgstr ""
"Wenn dieser Wert gesetzt ist, wird der ISO-Wochentag im Kalender angezeigt."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Zu verwendende Tastatur"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Der Typ der zu verwendenden Tastatur"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Zeit sekundengenau anzeigen"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Legt fest, ob in der Uhrzeit Sekunden angezeigt werden."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Datum in der Uhr anzeigen"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Legt fest, ob das Datum zusätzlich zur Uhrzeit angezeigt wird."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Bildwiederholungsrate zur Aufnahme von Screencasts"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -187,12 +178,12 @@ msgstr ""
"der GNOME-Shell aufgezeichnet werden soll, in Einzelbildern pro Sekunde."
# hmm Enkodieren oder Kodieren?
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Die GStreamer-Weiterleitung zur Enkodierung des Screencasts"
# Hier blicke ich überhaupt nicht durch.
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -219,11 +210,11 @@ msgstr ""
"mittels des VP8-Codecs aufzeichnet. %T wird als Platzhalter für die "
"vermutete optimale Thread-Anzahl auf dem System verwendet."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Die Dateiendung zum Speichern des Screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -247,53 +238,53 @@ msgstr "<b>Erweiterung</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "Sitzung …"
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "Anmelden"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(oder benutzen Sie den Fingerabdruckleser)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "Nicht aufgeführt?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Abbrechen"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "Anmelden"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "Anmeldefenster"
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
msgid "Suspend"
msgstr "Bereitschaft"
#: ../js/gdm/powerMenu.js:160
#: ../js/gdm/powerMenu.js:157
msgid "Restart"
msgstr "Neu starten"
#: ../js/gdm/powerMenu.js:165
#: ../js/gdm/powerMenu.js:162
msgid "Power Off"
msgstr "Ausschalten"
@ -688,11 +679,11 @@ msgstr[1] "Das System wird automatisch in %d Sekunden neu gestartet."
msgid "Restarting the system."
msgstr "Neustart des Systems."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Installieren"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
@ -701,8 +692,7 @@ msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
msgid "tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Tastatur"
@ -714,51 +704,51 @@ msgstr "Passwort:"
msgid "Type again:"
msgstr "Erneut eingeben:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Keine Erweiterungen installiert"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s hat keine Fehler ausgegeben."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Fehler verbergen"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Fehler anzeigen"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Aktiviert"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Deaktiviert"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Fehler"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Veraltet"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Herunterladen"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Quelle zeigen"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Webseite"
@ -869,36 +859,32 @@ msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
msgid "Undo"
msgstr "Rückgängig"
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Übersicht"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:199
msgid "Windows"
msgstr "Fenster"
#: ../js/ui/overview.js:205
#: ../js/ui/overview.js:202
msgid "Applications"
msgstr "Anwendungen"
# Würde ich so übernehmen, oder evtl. »Dock«.
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:231
#: ../js/ui/overview.js:228
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Beenden"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Aktivitäten"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Obere Leiste"
@ -952,11 +938,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Bitte geben Sie einen Befehl ein:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Suche läuft …"
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Keine passenden Ergebnisse."
@ -1207,7 +1193,7 @@ msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
msgid "More..."
msgstr "Mehr "
msgstr "Mehr ..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name)
@ -1734,7 +1720,7 @@ msgstr "»%s« ist bereit"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1743,14 +1729,14 @@ msgstr[1] "%u Ausgänge"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u Eingang"
msgstr[1] "%u Eingänge"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "Systemklänge"

746
po/el.po

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-13 13:20+0100\n"
"PO-Revision-Date: 2012-04-13 13:20+0100\n"
"POT-Creation-Date: 2012-03-13 14:03+0000\n"
"PO-Revision-Date: 2012-03-13 14:06+0100\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: British English <en@li.org>\n"
"Language: en_GB\n"
@ -129,42 +129,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "If true, display the ISO week date in the calendar."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Keybinding to open the application menu"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Keybinding to open the application menu."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Which keyboard to use"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "The type of keyboard to use."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Show time with seconds"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "If true, display seconds in time."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Show date in clock"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "If true, display date in the clock, in addition to time."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Framerate used for recording screencasts."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -172,11 +164,11 @@ msgstr ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames per second."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "The GStreamer pipeline used to encode the screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -201,11 +193,11 @@ msgstr ""
"using the VP8 codec. %T is used as a placeholder for a guess at the optimal "
"thread count on the system."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "File extension used for storing the screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -228,53 +220,53 @@ msgstr "<b>Extension</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "Select an extension to configure using the combobox above."
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "Session…"
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "Sign In"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(or swipe finger)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "Not listed?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Cancel"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "Sign In"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "Login Window"
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:591
#: ../js/ui/userMenu.js:593 ../js/ui/userMenu.js:662
msgid "Suspend"
msgstr "Suspend"
#: ../js/gdm/powerMenu.js:160
#: ../js/gdm/powerMenu.js:157
msgid "Restart"
msgstr "Restart"
#: ../js/gdm/powerMenu.js:165
#: ../js/gdm/powerMenu.js:162
msgid "Power Off"
msgstr "Power Off"
@ -294,27 +286,27 @@ msgid "Execution of '%s' failed:"
msgstr "Execution of '%s' failed:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:255
#: ../js/ui/appDisplay.js:251
msgid "All"
msgstr "All"
#: ../js/ui/appDisplay.js:314
#: ../js/ui/appDisplay.js:310
msgid "APPLICATIONS"
msgstr "APPLICATIONS"
#: ../js/ui/appDisplay.js:375
#: ../js/ui/appDisplay.js:371
msgid "SETTINGS"
msgstr "SETTINGS"
#: ../js/ui/appDisplay.js:680
#: ../js/ui/appDisplay.js:676
msgid "New Window"
msgstr "New Window"
#: ../js/ui/appDisplay.js:683
#: ../js/ui/appDisplay.js:679
msgid "Remove from Favorites"
msgstr "Remove from Favourites"
#: ../js/ui/appDisplay.js:684
#: ../js/ui/appDisplay.js:680
msgid "Add to Favorites"
msgstr "Add to Favourites"
@ -487,28 +479,28 @@ msgstr "This week"
msgid "Next week"
msgstr "Next week"
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
#: ../js/ui/contactDisplay.js:64 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
msgid "Unknown"
msgstr "Unknown"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:127
msgid "Available"
msgstr "Available"
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
#: ../js/ui/contactDisplay.js:90 ../js/ui/userMenu.js:136
msgid "Away"
msgstr "Away"
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:130
msgid "Busy"
msgstr "Busy"
#: ../js/ui/contactDisplay.js:102
#: ../js/ui/contactDisplay.js:98
msgid "Offline"
msgstr "Offline"
#: ../js/ui/contactDisplay.js:153
#: ../js/ui/contactDisplay.js:149
msgid "CONTACTS"
msgstr "CONTACTS"
@ -516,58 +508,58 @@ msgstr "CONTACTS"
msgid "Remove"
msgstr "Remove"
#: ../js/ui/dateMenu.js:103
#: ../js/ui/dateMenu.js:97
msgid "Date and Time Settings"
msgstr "Date and Time Settings"
#: ../js/ui/dateMenu.js:129
#: ../js/ui/dateMenu.js:123
msgid "Open Calendar"
msgstr "Open Calendar"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:181
msgid "%a %b %e, %R:%S"
msgstr "%a %e %b, %R:%S"
#: ../js/ui/dateMenu.js:188
#: ../js/ui/dateMenu.js:182
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:192
#: ../js/ui/dateMenu.js:186
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:193
#: ../js/ui/dateMenu.js:187
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:194
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %e %b, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:201
#: ../js/ui/dateMenu.js:195
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:205
#: ../js/ui/dateMenu.js:199
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:206
#: ../js/ui/dateMenu.js:200
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:217
#: ../js/ui/dateMenu.js:211
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@ -659,21 +651,20 @@ msgstr[1] "The system will restart automatically in %d seconds."
msgid "Restarting the system."
msgstr "Restarting the system."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Install"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Download and install '%s' from extensions.gnome.org?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:322
msgid "tray"
msgstr "tray"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Keyboard"
@ -685,51 +676,51 @@ msgstr "Password:"
msgid "Type again:"
msgstr "Type again:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "No extensions installed"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s has not emitted any errors."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Hide Errors"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Show Errors"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Enabled"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Disabled"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Error"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Out of date"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Downloading"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "View Source"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Web Page"
@ -751,7 +742,7 @@ msgstr "Unmute"
msgid "Mute"
msgstr "Mute"
#: ../js/ui/messageTray.js:2490
#: ../js/ui/messageTray.js:2450
msgid "System Information"
msgstr "System Information"
@ -840,35 +831,31 @@ msgstr "A password is required to connect to '%s'."
msgid "Undo"
msgstr "Undo"
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "Overview"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:199
msgid "Windows"
msgstr "Windows"
#: ../js/ui/overview.js:205
#: ../js/ui/overview.js:202
msgid "Applications"
msgstr "Applications"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:231
#: ../js/ui/overview.js:228
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:583
msgid "Quit"
msgstr "Quit"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:614
msgid "Activities"
msgstr "Activities"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:987
msgid "Top Bar"
msgstr "Top Bar"
@ -914,7 +901,7 @@ msgstr "Sorry, that didn't work. Please try again."
#. "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:724
#: ../js/ui/popupMenu.js:720
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -922,11 +909,11 @@ msgstr "toggle-switch-us"
msgid "Please enter a command:"
msgstr "Please enter a command:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Searching…"
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "No matching results."
@ -1608,51 +1595,51 @@ msgstr "Edit account"
msgid "Unknown reason"
msgstr "Unknown reason"
#: ../js/ui/userMenu.js:135
#: ../js/ui/userMenu.js:133
msgid "Hidden"
msgstr "Hidden"
#: ../js/ui/userMenu.js:141
#: ../js/ui/userMenu.js:139
msgid "Idle"
msgstr "Idle"
#: ../js/ui/userMenu.js:144
#: ../js/ui/userMenu.js:142
msgid "Unavailable"
msgstr "Unavailable"
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
#: ../js/ui/userMenu.js:589 ../js/ui/userMenu.js:593 ../js/ui/userMenu.js:663
msgid "Power Off..."
msgstr "Power Off…"
#: ../js/ui/userMenu.js:631
#: ../js/ui/userMenu.js:625
msgid "Notifications"
msgstr "Notifications"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:633
msgid "Online Accounts"
msgstr "Online Accounts"
#: ../js/ui/userMenu.js:643
#: ../js/ui/userMenu.js:637
msgid "System Settings"
msgstr "System Settings"
#: ../js/ui/userMenu.js:650
#: ../js/ui/userMenu.js:644
msgid "Lock Screen"
msgstr "Lock Screen"
#: ../js/ui/userMenu.js:655
#: ../js/ui/userMenu.js:649
msgid "Switch User"
msgstr "Switch User"
#: ../js/ui/userMenu.js:660
#: ../js/ui/userMenu.js:654
msgid "Log Out..."
msgstr "Log Out…"
#: ../js/ui/userMenu.js:688
#: ../js/ui/userMenu.js:682
msgid "Your chat status will be set to busy"
msgstr "Your chat status will be set to busy"
#: ../js/ui/userMenu.js:689
#: ../js/ui/userMenu.js:683
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1697,7 +1684,7 @@ msgstr "'%s' is ready"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1706,14 +1693,14 @@ msgstr[1] "%u Outputs"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u Input"
msgstr[1] "%u Inputs"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "System Sounds"
@ -1725,7 +1712,7 @@ msgstr "Print version"
msgid "Mode used by GDM for login screen"
msgstr "Mode used by GDM for login screen"
#: ../src/shell-app.c:619
#: ../src/shell-app.c:617
#, c-format
msgid "Failed to launch '%s'"
msgstr "Failed to launch '%s'"

490
po/es.po

File diff suppressed because it is too large Load Diff

221
po/fa.po
View File

@ -8,8 +8,8 @@ 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: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-03-31 01:45+0330\n"
"POT-Creation-Date: 2012-02-29 22:27+0000\n"
"PO-Revision-Date: 2012-03-04 20:00+0330\n"
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
"Language-Team: Persian\n"
"MIME-Version: 1.0\n"
@ -99,59 +99,63 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "کلید مقید برای باز کردن منو برنامه"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "کلید مقید برای باز کردن منو برنامه."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "استفاده از کدام صفحه‌کلید"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "نوع صفحه‌کلید جهت استفاده"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "نمایش ساعت همراه با ثانیه"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "در صورت تنظیم بر روی «درست»، ثانیه‌ها را در ساعت نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "نمایش تاریخ در ساعت"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "اگر روی «درست» تنظیم شود، تاریخ را در کنار ساعت نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحه‌نمایش."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, 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."
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 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 "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 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."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "پسوند پرونده‌ی قابل استفاده برای ذخیره تصویربرداری از صفحه‌نمایش"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "نام پرونده‌ی ضبط شده برای تصویربرداری از صفحه‌نمایش یکتا و براساس تاریخ جاری خواهد بود و از این افزونه استفاده خواهد کرد. اگر در زمان ضبط از قالب دیگری استفاده کنید باید تغییر کند."
@ -191,8 +195,8 @@ msgid "Not listed?"
msgstr "فهرست نشده؟"
#: ../js/gdm/loginDialog.js:1020
#: ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399
#: ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401
#: ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175
#: ../js/ui/status/bluetooth.js:462
@ -208,18 +212,18 @@ msgstr "ورود"
msgid "Login Window"
msgstr "پنجره‌ی ورود به سیستم"
#: ../js/gdm/powerMenu.js:155
#: ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599
#: ../js/ui/userMenu.js:668
#: ../js/gdm/powerMenu.js:152
#: ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:652
msgid "Suspend"
msgstr "تعلیق"
#: ../js/gdm/powerMenu.js:160
#: ../js/gdm/powerMenu.js:157
msgid "Restart"
msgstr "راه‌اندازی مجدد"
#: ../js/gdm/powerMenu.js:165
#: ../js/gdm/powerMenu.js:162
msgid "Power Off"
msgstr "خاموش کردن"
@ -239,27 +243,27 @@ msgid "Execution of '%s' failed:"
msgstr "اجرای «%s» شکست خورد:"
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:255
#: ../js/ui/appDisplay.js:251
msgid "All"
msgstr "همه"
#: ../js/ui/appDisplay.js:314
#: ../js/ui/appDisplay.js:310
msgid "APPLICATIONS"
msgstr "برنامه‌ها"
#: ../js/ui/appDisplay.js:375
#: ../js/ui/appDisplay.js:371
msgid "SETTINGS"
msgstr "تنظیمات"
#: ../js/ui/appDisplay.js:680
#: ../js/ui/appDisplay.js:676
msgid "New Window"
msgstr "پنجره‌ی جدید"
#: ../js/ui/appDisplay.js:683
#: ../js/ui/appDisplay.js:679
msgid "Remove from Favorites"
msgstr "حذف از مورد پسندها"
#: ../js/ui/appDisplay.js:684
#: ../js/ui/appDisplay.js:680
msgid "Add to Favorites"
msgstr "اضافه کردن به مورد پسندها"
@ -432,93 +436,93 @@ msgstr "این هفته"
msgid "Next week"
msgstr "هفته آینده"
#: ../js/ui/contactDisplay.js:66
#: ../js/ui/contactDisplay.js:63
#: ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215
#: ../src/shell-app.c:374
#: ../src/shell-app.c:372
msgid "Unknown"
msgstr "ناشناخته"
#: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:129
#: ../js/ui/contactDisplay.js:84
#: ../js/ui/userMenu.js:127
msgid "Available"
msgstr "در دسترس"
#: ../js/ui/contactDisplay.js:94
#: ../js/ui/userMenu.js:138
#: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:136
msgid "Away"
msgstr "غائب"
#: ../js/ui/contactDisplay.js:98
#: ../js/ui/userMenu.js:132
#: ../js/ui/contactDisplay.js:93
#: ../js/ui/userMenu.js:130
msgid "Busy"
msgstr "مشغول"
#: ../js/ui/contactDisplay.js:102
#: ../js/ui/contactDisplay.js:97
msgid "Offline"
msgstr "برون‌خط"
#: ../js/ui/contactDisplay.js:153
#: ../js/ui/contactDisplay.js:148
msgid "CONTACTS"
msgstr "CONTACTS"
#: ../js/ui/dash.js:229
#: ../js/ui/messageTray.js:1207
#: ../js/ui/messageTray.js:1204
msgid "Remove"
msgstr "حذف"
#: ../js/ui/dateMenu.js:103
#: ../js/ui/dateMenu.js:97
msgid "Date and Time Settings"
msgstr "تنظیمات تاریخ و ساعت"
#: ../js/ui/dateMenu.js:129
#: ../js/ui/dateMenu.js:123
msgid "Open Calendar"
msgstr "بازکردن تقویم"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:181
msgid "%a %b %e, %R:%S"
msgstr "%a %Od %b %OH:%OM:%OS"
#: ../js/ui/dateMenu.js:188
#: ../js/ui/dateMenu.js:182
msgid "%a %b %e, %R"
msgstr "%a %Od %b %OH:%OM"
#. Translators: This is the time format without date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:192
#: ../js/ui/dateMenu.js:186
msgid "%a %R:%S"
msgstr "%a %OH:%OM:%OS"
#: ../js/ui/dateMenu.js:193
#: ../js/ui/dateMenu.js:187
msgid "%a %R"
msgstr "%a %OH:%OM"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:194
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a Od% %b %OH:%OM:%OS"
#: ../js/ui/dateMenu.js:201
#: ../js/ui/dateMenu.js:195
msgid "%a %b %e, %l:%M %p"
msgstr "%a %Od %b %OH:%OM"
#. Translators: This is a time format without date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:205
#: ../js/ui/dateMenu.js:199
msgid "%a %l:%M:%S %p"
msgstr "%a %OH:%OM:%OS"
#: ../js/ui/dateMenu.js:206
#: ../js/ui/dateMenu.js:200
msgid "%a %l:%M %p"
msgstr "%a %OH:%OM"
#. 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:217
#: ../js/ui/dateMenu.js:211
msgid "%A %B %e, %Y"
msgstr "%A %Od %B"
@ -611,20 +615,20 @@ msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار مجدد
msgid "Restarting the system."
msgstr "درحال راه‌اندازی مجدد سیستم."
#: ../js/ui/extensionSystem.js:403
#: ../js/ui/extensionSystem.js:405
msgid "Install"
msgstr "نصب"
#: ../js/ui/extensionSystem.js:407
#: ../js/ui/extensionSystem.js:409
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:322
msgid "tray"
msgstr "سینی"
#: ../js/ui/keyboard.js:544
#: ../js/ui/keyboard.js:539
#: ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "صفحه‌کلید"
@ -638,75 +642,75 @@ msgstr "گذرواژه"
msgid "Type again:"
msgstr "تلاش مجدد:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "هیچ افزونه‌ای نصب نشده است"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "مخفی کردن خطاها"
#: ../js/ui/lookingGlass.js:796
#: ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789
#: ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "نمایش خطاها"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "به کار انداختن"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808
#: ../js/ui/lookingGlass.js:801
#: ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "از کار انداختن"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "خطا"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "قدیمی"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "در حال بارگیری"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "نمایش منبع"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "صفحه‌ی وب"
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#: ../js/ui/main.js:116
#, no-c-format
msgid "Screencast from %d %t"
msgstr "ویدئو صفحه‌نمایش %Id %t"
#: ../js/ui/messageTray.js:1200
#: ../js/ui/messageTray.js:1197
msgid "Open"
msgstr "بازکردن"
#: ../js/ui/messageTray.js:1217
#: ../js/ui/messageTray.js:1214
msgid "Unmute"
msgstr "باصدا"
#: ../js/ui/messageTray.js:1217
#: ../js/ui/messageTray.js:1214
msgid "Mute"
msgstr "بی‌صدا"
#: ../js/ui/messageTray.js:2490
#: ../js/ui/messageTray.js:2447
msgid "System Information"
msgstr "اطلاعات سیستم"
@ -794,35 +798,31 @@ msgstr "برای اتصال به «%s» گذرواژه لازم است."
msgid "Undo"
msgstr "برگردان"
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "نمای‌کلی"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:199
msgid "Windows"
msgstr "پنجره‌‌ها"
#: ../js/ui/overview.js:205
#: ../js/ui/overview.js:202
msgid "Applications"
msgstr "برنامه‌ها"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:231
#: ../js/ui/overview.js:228
msgid "Dash"
msgstr "دَش"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:583
msgid "Quit"
msgstr "خروج"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:614
msgid "Activities"
msgstr "فعالیت‌ها"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:987
msgid "Top Bar"
msgstr "نوار بالا"
@ -868,7 +868,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:724
#: ../js/ui/popupMenu.js:720
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -876,11 +876,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "لطفا یک فرمان وارد کنید:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:349
msgid "Searching..."
msgstr "درحال حستجو..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:417
msgid "No matching results."
msgstr "نتیجه‌ی منطبقی پیدا نشد."
@ -905,6 +905,7 @@ msgid "Wrong password, please try again"
msgstr "گذرواژه‌ی نادرست، لطفا دوباره تلاش کنید"
#: ../js/ui/status/accessibility.js:47
#| msgid "Visibility"
msgid "Accessibility"
msgstr "دسترسی‌پذیری"
@ -1177,6 +1178,7 @@ msgid "Auto wireless"
msgstr "بیسیم خودکار"
#: ../js/ui/status/network.js:1541
#| msgid "Network error"
msgid "Network"
msgstr "شبکه"
@ -1521,6 +1523,7 @@ msgid "Connection has been lost"
msgstr "اتصال از دست رفته است"
#: ../js/ui/telepathyClient.js:1319
#| msgid "This resource is already connected to the server"
msgid "This account is already connected to the server"
msgstr "این حساب قبلا به کارگزار متصل شده است"
@ -1549,6 +1552,7 @@ msgid "The length of the server certificate, or the depth of the server certific
msgstr "اندازه گواهینامه کارگزار، یا عمق حلقه‌ی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد"
#: ../js/ui/telepathyClient.js:1333
#| msgid "Connection error"
msgid "Internal error"
msgstr "خطای داخلی"
@ -1571,53 +1575,53 @@ msgstr "ویرایش حساب"
msgid "Unknown reason"
msgstr "دلیل ناشناخته"
#: ../js/ui/userMenu.js:135
#: ../js/ui/userMenu.js:133
msgid "Hidden"
msgstr "نامرئی"
#: ../js/ui/userMenu.js:141
#: ../js/ui/userMenu.js:139
msgid "Idle"
msgstr "بی‌کار"
#: ../js/ui/userMenu.js:144
#: ../js/ui/userMenu.js:142
msgid "Unavailable"
msgstr "خارج از دسترس"
#: ../js/ui/userMenu.js:595
#: ../js/ui/userMenu.js:599
#: ../js/ui/userMenu.js:669
#: ../js/ui/userMenu.js:579
#: ../js/ui/userMenu.js:583
#: ../js/ui/userMenu.js:653
msgid "Power Off..."
msgstr "خاموش کردن..."
#: ../js/ui/userMenu.js:631
#: ../js/ui/userMenu.js:615
msgid "Notifications"
msgstr "اعلان‌ها"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:623
msgid "Online Accounts"
msgstr "حساب‌های برخط"
#: ../js/ui/userMenu.js:643
#: ../js/ui/userMenu.js:627
msgid "System Settings"
msgstr "تنظیمات سیستم"
#: ../js/ui/userMenu.js:650
#: ../js/ui/userMenu.js:634
msgid "Lock Screen"
msgstr "قفل کردن صفحه"
#: ../js/ui/userMenu.js:655
#: ../js/ui/userMenu.js:639
msgid "Switch User"
msgstr "تعویض کاربر"
#: ../js/ui/userMenu.js:660
#: ../js/ui/userMenu.js:644
msgid "Log Out..."
msgstr "خروج از سیستم..."
#: ../js/ui/userMenu.js:688
#: ../js/ui/userMenu.js:672
msgid "Your chat status will be set to busy"
msgstr "وضعیت گپ شما «مشغول» تنظیم می‌شود"
#: ../js/ui/userMenu.js:689
#: ../js/ui/userMenu.js:673
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "هم‌اکنون اعلان‌ها، از جمله پیام‌های گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونه‌ای تنظیم شده است که به دیگران نشان دهد ممکن است شما پیام‌هایشان را نبینید."
@ -1679,20 +1683,21 @@ msgstr[1] "%Iu ورودی"
msgid "System Sounds"
msgstr "صداهای سیستم"
#: ../src/main.c:255
#: ../src/main.c:262
msgid "Print version"
msgstr "چاپ نسخه"
#: ../src/main.c:261
#: ../src/main.c:268
msgid "Mode used by GDM for login screen"
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
#: ../src/shell-app.c:619
#: ../src/shell-app.c:617
#, c-format
msgid "Failed to launch '%s'"
msgstr "راه‌اندازی «%s» شکست خورد"
#: ../src/shell-keyring-prompt.c:708
#| msgid "Does not match"
msgid "Passwords do not match."
msgstr "گذرواژه‌های منطبق نیستند."

View File

@ -15,8 +15,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-04-03 18:35+0000\n"
"PO-Revision-Date: 2012-03-31 15:56+0300\n"
"POT-Creation-Date: 2012-03-20 17:23+0000\n"
"PO-Revision-Date: 2012-03-05 20:54+0100\n"
"Last-Translator: Bruno Brouard <annoa.b@gmail.com>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"MIME-Version: 1.0\n"
@ -141,43 +141,35 @@ 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:16
msgid "Keybinding to open the application menu"
msgstr "Combinaison de touches pour ouvrir le menu de l'application"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Combinaison de touches pour ouvrir le menu de l'application."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Le clavier utilisé"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Le type de clavier utilisé."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Afficher l'heure avec les secondes"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Si vrai, afficher les secondes dans l'horloge."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Afficher la date dans l'horloge"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
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:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
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:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -185,11 +177,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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
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:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -216,11 +208,11 @@ msgstr ""
"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:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
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:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -738,51 +730,51 @@ msgstr "Mot de passe :"
msgid "Type again:"
msgstr "Saisissez à nouveau :"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Aucune extension installée"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s n'a émis aucune erreur."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Masquer les erreurs"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Afficher les erreurs"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Activé"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Désactivé"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Erreur"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Périmé"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Téléchargement"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Afficher la source"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Page Web"
@ -790,7 +782,7 @@ msgstr "Page Web"
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "Vidéo d'écran %d %t"
msgstr "Animation d'écran %d %t"
#: ../js/ui/messageTray.js:1200
msgid "Open"
@ -911,17 +903,17 @@ msgstr "Applications"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Quitter"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Activités"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Barre supérieure"

486
po/gl.po

File diff suppressed because it is too large Load Diff

312
po/gu.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gu\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-03 11:24+0530\n"
"POT-Creation-Date: 2012-02-29 22:27+0000\n"
"PO-Revision-Date: 2012-03-15 14:01+0530\n"
"Last-Translator: \n"
"Language-Team: gu_IN <kde-i18n-doc@kde.org>\n"
"MIME-Version: 1.0\n"
@ -25,20 +25,20 @@ msgstr "GNOME શેલ"
#: ../data/gnome-shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "વિન્ડો સંચાલન અને કાર્યક્રમ શરૂઆત"
msgstr ""
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extension Preferences"
msgstr "GNOME Shell ઍક્સટેન્શન પસંદગીઓ"
msgstr ""
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell ઍક્સટેન્શનને રૂપરેખાંકિત કરો"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Alt-F2 માંથી ડેવલપર અને ટેસ્ટર માટે ઉપયોગી આંતરિક સાધનોને સક્રિય કરો"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:2
msgid ""
@ -47,6 +47,7 @@ msgid ""
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:3
#| msgid "No extensions installed"
msgid "Uuids of extensions to enable"
msgstr "સક્રિય કરવા માટે એક્સટેન્શનનું Uuids"
@ -82,13 +83,14 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "disabled OpenSearch providers"
msgstr "નિષ્ક્રિય થયેલ OpenSearch પ્રબંધક"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "History for command (Alt-F2) dialog"
msgstr "આદેશ (Alt-F2) સંવાદ માટે ઇતિહાસ"
#: ../data/org.gnome.shell.gschema.xml.in.h:11
#| msgid "History for command (Alt-F2) dialog"
msgid "History for the looking glass dialog"
msgstr "ગ્લાસ સંવાદને જોવા માટે ઇતિહાસ"
@ -110,55 +112,47 @@ msgstr "કૅલેન્ડરમાં અઠવાડિયા તારી
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "If true, display the ISO week date in the calendar."
msgstr "જો true હોય તો, કૅલેન્ડરમાં ISO અઠવાડિયાની તારીખને દર્શાવો."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ"
msgid "Which keyboard to use"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "કાર્યક્રમ મેનુને ખોલવા માટે કિબાઇન્ડીંગ."
msgid "The type of keyboard to use."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "ક્યુ કિબોર્ડ વાપરવુ છે"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "The type of keyboard to use."
msgstr "વાપરવા માટે કિબોર્ડનો પ્રકાર."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show time with seconds"
msgstr "સેકંડોમાં સમયને બતાવો"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "જો true હોય તો, સમયમાં સેકંડ બતાવો."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "ઘડિયાળમાં તારીખને બતાવો"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "જો true હોય તો, ઘડિયાળમાં તારીખ બતાવો, સમય સાથે વધુમાં."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "રેકોર્ડીંગ સ્ક્રીનકાસ્ટ માટે વાપરેલ ફ્રેમરેટ."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "સ્ક્રીનકાસ્ટને એનકોડ કરવા માટે વાપરેલ gstreamer પાઇપલાઇન"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -173,11 +167,11 @@ msgid ""
"thread count on the system."
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "સ્ક્રીનકાસ્ટને સંગ્રહ કરવા માટે વાપરેલ ફાઇલ ઍક્સટેન્શન"
msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -187,15 +181,15 @@ msgstr ""
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "ત્યાં %s માટે પસંદગી સંવાદને લાવવામાં ભૂલ હતી:"
msgstr ""
#: ../js/extensionPrefs/main.js:165
msgid "<b>Extension</b>"
msgstr "<b>ઍક્સટેન્શન</b>"
msgstr ""
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr "ઉપર કોમ્બોબોક્સની મદદથી રૂપરેખાંકિત કરવા માટે ઍક્સટેન્શનને પસંદ કરો."
msgstr ""
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
@ -204,23 +198,23 @@ msgstr "સત્ર..."
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "પ્રવેશો"
msgstr ""
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(અથવા સ્વાઇપ આંગળી)"
msgstr ""
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "શું યાદી થયેલ નથી?"
msgstr ""
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "રદ કરો"
@ -228,22 +222,23 @@ msgstr "રદ કરો"
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "પ્રવેશો"
msgstr ""
#: ../js/gdm/loginDialog.js:1377
#| msgid "New Window"
msgid "Login Window"
msgstr "પ્રવેશ વિન્ડો"
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
msgid "Suspend"
msgstr "અટકાવો"
#: ../js/gdm/powerMenu.js:160
#: ../js/gdm/powerMenu.js:157
msgid "Restart"
msgstr "પુન:શરૂ કરો"
#: ../js/gdm/powerMenu.js:165
#: ../js/gdm/powerMenu.js:162
msgid "Power Off"
msgstr "પાવર બંધ"
@ -260,30 +255,30 @@ msgstr "આદેશનું પદચ્છેદન કરી શક્યા
#: ../js/misc/util.js:127
#, c-format
msgid "Execution of '%s' failed:"
msgstr "'%s' ને અમલમાં મૂકવાનુ નિષ્ફળ:"
msgstr ""
#. Translators: Filter to display all applications
#: ../js/ui/appDisplay.js:255
#: ../js/ui/appDisplay.js:251
msgid "All"
msgstr "બધા"
#: ../js/ui/appDisplay.js:314
#: ../js/ui/appDisplay.js:310
msgid "APPLICATIONS"
msgstr "APPLICATIONS"
#: ../js/ui/appDisplay.js:375
#: ../js/ui/appDisplay.js:371
msgid "SETTINGS"
msgstr "SETTINGS"
#: ../js/ui/appDisplay.js:680
#: ../js/ui/appDisplay.js:676
msgid "New Window"
msgstr "નવી વિન્ડો"
#: ../js/ui/appDisplay.js:683
#: ../js/ui/appDisplay.js:679
msgid "Remove from Favorites"
msgstr "પસંદીદાઓ માંથી દૂર કરો"
#: ../js/ui/appDisplay.js:684
#: ../js/ui/appDisplay.js:680
msgid "Add to Favorites"
msgstr "પસંદીદાને ઉમેરો"
@ -299,14 +294,15 @@ msgstr "%s ને તમારી પસંદીદામાંથી દૂર
#: ../js/ui/autorunManager.js:265
msgid "Removable Devices"
msgstr "દૂર કરી શકાય તેવા ઉપકરણો"
msgstr ""
#: ../js/ui/autorunManager.js:560
#, c-format
msgid "Open with %s"
msgstr "%s સાથે ખોલો"
msgstr ""
#: ../js/ui/autorunManager.js:586
#| msgid "Reject"
msgid "Eject"
msgstr "રદ કરો"
@ -426,7 +422,7 @@ msgstr "S"
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:681
msgid "Nothing Scheduled"
msgstr "અનુસૂચિત કંઇ નથી"
msgstr ""
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:697
@ -456,97 +452,99 @@ msgstr "આ અઠવાડિયે"
msgid "Next week"
msgstr "આગળનું અઠવાડિયું"
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
msgid "Unknown"
msgstr "અજ્ઞાત"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
msgid "Available"
msgstr "ઉપલબ્ધ"
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
msgid "Away"
msgstr "દૂર"
msgstr ""
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
msgid "Busy"
msgstr "વ્યસ્ત"
#: ../js/ui/contactDisplay.js:102
#: ../js/ui/contactDisplay.js:97
msgid "Offline"
msgstr "ઓફલાઇન"
#: ../js/ui/contactDisplay.js:153
#: ../js/ui/contactDisplay.js:148
msgid "CONTACTS"
msgstr "સંપર્કો"
msgstr ""
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
msgid "Remove"
msgstr "દૂર કરો"
#: ../js/ui/dateMenu.js:103
#: ../js/ui/dateMenu.js:97
msgid "Date and Time Settings"
msgstr "તારીખ અને સમય સુયોજનો"
#: ../js/ui/dateMenu.js:129
#: ../js/ui/dateMenu.js:123
msgid "Open Calendar"
msgstr "કૅલેન્ડરને ખોલો"
#. Translators: This is the time format with date used
#. in 24-hour mode.
#: ../js/ui/dateMenu.js:187
#: ../js/ui/dateMenu.js:181
msgid "%a %b %e, %R:%S"
msgstr "%a %b %e, %R:%S"
#: ../js/ui/dateMenu.js:188
#: ../js/ui/dateMenu.js:182
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:192
#: ../js/ui/dateMenu.js:186
msgid "%a %R:%S"
msgstr "%a %R:%S"
#: ../js/ui/dateMenu.js:193
#: ../js/ui/dateMenu.js:187
msgid "%a %R"
msgstr "%a %R"
#. Translators: This is a time format with date used
#. for AM/PM.
#: ../js/ui/dateMenu.js:200
#: ../js/ui/dateMenu.js:194
msgid "%a %b %e, %l:%M:%S %p"
msgstr "%a %b %e, %l:%M:%S %p"
#: ../js/ui/dateMenu.js:201
#: ../js/ui/dateMenu.js:195
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:205
#: ../js/ui/dateMenu.js:199
msgid "%a %l:%M:%S %p"
msgstr "%a %l:%M:%S %p"
#: ../js/ui/dateMenu.js:206
#: ../js/ui/dateMenu.js:200
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:217
#: ../js/ui/dateMenu.js:211
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
#: ../js/ui/endSessionDialog.js:61
#, c-format
#| msgid "Log Out %s"
msgctxt "title"
msgid "Log Out %s"
msgstr "%s માંથી બહાર નીકળો"
#: ../js/ui/endSessionDialog.js:62
#| msgid "Log Out"
msgctxt "title"
msgid "Log Out"
msgstr "બહાર નીકળો"
@ -558,6 +556,7 @@ msgstr ""
#: ../js/ui/endSessionDialog.js:65
#, c-format
#| msgid "The system will power off automatically in %d seconds."
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s એ %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
@ -565,6 +564,7 @@ msgstr[1] "%s એ %d સેકંડોમાં આપમેળે બહાર
#: ../js/ui/endSessionDialog.js:70
#, c-format
#| msgid "The system will power off automatically in %d seconds."
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "તમે %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
@ -575,11 +575,13 @@ msgid "Logging out of the system."
msgstr "સિસ્ટમની બહાર નીકળી રહ્યા છે."
#: ../js/ui/endSessionDialog.js:76
#| msgid "Log Out"
msgctxt "button"
msgid "Log Out"
msgstr "બહાર નીકળો"
#: ../js/ui/endSessionDialog.js:81
#| msgid "Power Off"
msgctxt "title"
msgid "Power Off"
msgstr "પાવર બંધ"
@ -591,6 +593,7 @@ msgstr ""
#: ../js/ui/endSessionDialog.js:84
#, c-format
#| msgid "The system will power off automatically in %d seconds."
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
@ -601,16 +604,19 @@ msgid "Powering off the system."
msgstr "સિસ્ટમનો પાવર બંધ કરી રહ્યા છે."
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
#| msgid "Restart"
msgctxt "button"
msgid "Restart"
msgstr "પુન:શરૂ કરો"
#: ../js/ui/endSessionDialog.js:92
#| msgid "Power Off"
msgctxt "button"
msgid "Power Off"
msgstr "પાવર બંધ"
#: ../js/ui/endSessionDialog.js:98
#| msgid "Restart"
msgctxt "title"
msgid "Restart"
msgstr "પુન:શરૂ કરો"
@ -622,6 +628,7 @@ msgstr ""
#: ../js/ui/endSessionDialog.js:101
#, c-format
#| msgid "The system will restart automatically in %d seconds."
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે."
@ -631,20 +638,21 @@ msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે
msgid "Restarting the system."
msgstr "સિસ્ટમને પુન:શરૂ કરી રહ્યા છે."
#: ../js/ui/extensionSystem.js:403
#: ../js/ui/extensionSystem.js:405
msgid "Install"
msgstr "સ્થાપિત કરો"
#: ../js/ui/extensionSystem.js:407
#: ../js/ui/extensionSystem.js:409
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "extensions.gnome.org માંથી '%s' ને સ્થાપિત અને ડાઉનલોડ કરો?"
#: ../js/ui/keyboard.js:327
#: ../js/ui/keyboard.js:322
#| msgid "Retry"
msgid "tray"
msgstr "ટ્રે"
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "કિબોર્ડ"
@ -656,73 +664,78 @@ msgstr "પાસવર્ડ:"
msgid "Type again:"
msgstr "ફરીથી પ્રયત્ન કરો:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "એક્સટેન્શનો સ્થાપિત થયેલ નથી"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s એ કોઇપણ ભૂલોને બહાર કાઢતા નથી."
msgstr ""
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
#| msgid "Error"
msgid "Hide Errors"
msgstr "ભૂલો છુપાડો"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
#| msgid "Error"
msgid "Show Errors"
msgstr "ભૂલો બતાવો"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "સક્રિય"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "નિષ્ક્રિય"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "ભૂલ"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "અપ્રચલિત"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "ડાઉનલોડ કરી રહ્યા છે"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "સ્ત્રોત દર્શાવો"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "વેબ પાનું"
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#: ../js/ui/main.js:116
#, no-c-format
msgid "Screencast from %d %t"
msgstr "%d %t માંથી સ્ક્રીનકાસ્ટ"
#: ../js/ui/messageTray.js:1200
#: ../js/ui/messageTray.js:1197
msgid "Open"
msgstr "ખોલો"
#: ../js/ui/messageTray.js:1217
#: ../js/ui/messageTray.js:1214
#| msgid "minute"
#| msgid_plural "minutes"
msgid "Unmute"
msgstr "અવાજ ચાલુ રાખો"
#: ../js/ui/messageTray.js:1217
#: ../js/ui/messageTray.js:1214
#| msgid "Mouse"
msgid "Mute"
msgstr "મૂંગુ"
#: ../js/ui/messageTray.js:2490
#: ../js/ui/messageTray.js:2447
msgid "System Information"
msgstr "સિસ્ટમ જાણકારી"
@ -802,42 +815,40 @@ msgstr "મોબાઇલ બ્રોડબેન્ડ નેટવર્ક
#: ../js/ui/networkAgent.js:357
#, c-format
#| msgid "You're now connected to '%s'"
msgid "A password is required to connect to '%s'."
msgstr "પાસવર્ડ '%s' સાથે જોડાવા માટે જરૂરી છે."
#: ../js/ui/overview.js:90
msgid "Undo"
msgstr "રદ કરો"
msgstr ""
#: ../js/ui/overview.js:132
msgid "Overview"
msgstr "ઝાંખી"
#: ../js/ui/overview.js:202
#: ../js/ui/overview.js:199
msgid "Windows"
msgstr "વિન્ડો"
#: ../js/ui/overview.js:205
#: ../js/ui/overview.js:202
msgid "Applications"
msgstr "કાર્યક્રમો"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/overview.js:231
#: ../js/ui/overview.js:228
msgid "Dash"
msgstr "ડૅશ"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:583
#| msgid "Quit %s"
msgid "Quit"
msgstr "બહાર નીકળો"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:614
msgid "Activities"
msgstr "પ્રવૃત્તિઓ"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:987
msgid "Top Bar"
msgstr "ટોચની પટ્ટી"
@ -856,7 +867,7 @@ msgstr "ની સાથે જોડાવો..."
#: ../js/ui/placeDisplay.js:367
msgid "PLACES & DEVICES"
msgstr "સ્થાનો અને ઉપકરણો"
msgstr ""
#: ../js/ui/polkitAuthenticationAgent.js:71
msgid "Authentication Required"
@ -883,7 +894,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:724
#: ../js/ui/popupMenu.js:720
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -891,11 +902,11 @@ msgstr "toggle-switch-us"
msgid "Please enter a command:"
msgstr "મહેરબાની કરીને આદેશને દાખલ કરો:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:349
msgid "Searching..."
msgstr "શોધી રહ્યા છે..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:417
msgid "No matching results."
msgstr "પરિણામો બંધબેસતાનથી."
@ -912,6 +923,7 @@ msgid "Show Text"
msgstr "લખાણ બતાવો"
#: ../js/ui/shellEntry.js:79
#| msgid "Large Text"
msgid "Hide Text"
msgstr "લખાણ છુપાડો"
@ -920,6 +932,7 @@ msgid "Wrong password, please try again"
msgstr "ખોટો પાસવર્ડ, મહેરબાની કરીને ફરીથી પ્રયત્ન કરો"
#: ../js/ui/status/accessibility.js:47
#| msgid "Visibility"
msgid "Accessibility"
msgstr "ઉપલબ્ધતા"
@ -931,12 +944,13 @@ msgstr "નાનુ મોટુ કરો"
#. 'screen-reader-enabled');
#. this.menu.addMenuItem(screenReader);
#: ../js/ui/status/accessibility.js:63
#| msgid "Keyboard"
msgid "Screen Keyboard"
msgstr "સ્ક્રીન કિબોર્ડ"
#: ../js/ui/status/accessibility.js:67
msgid "Visual Alerts"
msgstr "દેખાતી ચેતવણીઓ"
msgstr ""
#: ../js/ui/status/accessibility.js:70
msgid "Sticky Keys"
@ -999,6 +1013,7 @@ msgid "Connection"
msgstr "જોડાણ"
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
#| msgid "connecting..."
msgid "disconnecting..."
msgstr "જોડાઇ તૂટી રહ્યુ છે..."
@ -1043,7 +1058,7 @@ msgstr "%s માંથી સત્તાધિકરણ માંગણી"
#: ../js/ui/status/bluetooth.js:378
#, c-format
msgid "Device %s wants access to the service '%s'"
msgstr "ઉપકરણ %s એ સેવા %s' માટે પ્રવેશ ઇચ્છે છે"
msgstr ""
#: ../js/ui/status/bluetooth.js:380
msgid "Always grant access"
@ -1060,12 +1075,12 @@ msgstr "રદ કરો"
#: ../js/ui/status/bluetooth.js:408
#, c-format
msgid "Pairing confirmation for %s"
msgstr "%s માટો જોડીની ખાતરી"
msgstr ""
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
#, c-format
msgid "Device %s wants to pair with this computer"
msgstr "ઉપકરણ %s આ કમ્પ્યૂટર સાથે જોડી કરવા માંગે છે"
msgstr ""
#: ../js/ui/status/bluetooth.js:415
#, c-format
@ -1083,7 +1098,7 @@ msgstr "બંધબેસતુ નથી"
#: ../js/ui/status/bluetooth.js:437
#, c-format
msgid "Pairing request for %s"
msgstr "%s માટે જોડી માંગણી"
msgstr ""
#: ../js/ui/status/bluetooth.js:445
msgid "Please enter the PIN mentioned on the device."
@ -1167,10 +1182,12 @@ msgstr ""
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
#, c-format
#| msgid "Quit %s"
msgid "Auto %s"
msgstr "આપમેળે %s"
#: ../js/ui/status/network.js:881
#| msgid "Bluetooth"
msgid "Auto bluetooth"
msgstr "આપમેળે બ્લુટુથ"
@ -1179,6 +1196,7 @@ msgid "Auto wireless"
msgstr ""
#: ../js/ui/status/network.js:1541
#| msgid "Network error"
msgid "Network"
msgstr "નેટવર્ક"
@ -1409,7 +1427,7 @@ msgstr "%s માં આમંત્રણ"
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s એ તમને %s માં જોડાવા માટે આમંત્રણ આપી રહ્યા છે"
msgstr ""
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
@ -1446,13 +1464,13 @@ msgstr "જવાબ"
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s એ %s માં મોકલી રહ્યા છે"
msgstr ""
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s ને જોવા માટે પરવાનગી આપવાનું ગમે થે જ્યારે તમે ઓનલાઇન હોય"
msgstr ""
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
@ -1484,11 +1502,11 @@ msgstr "પ્રમાણપત્ર સક્રિય થયેલ નથી
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "પ્રમાણપત્ર યજમાનનામ બંધબેસતુ નથી"
msgstr ""
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "પ્રમાણપજ્ઞ ફિંગરપ્રિન્ટ બંધબેસતુ નથી"
msgstr ""
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
@ -1507,6 +1525,7 @@ msgid "Certificate is invalid"
msgstr "પ્રમાણપત્ર અમાન્ય છે"
#: ../js/ui/telepathyClient.js:1313
#| msgid "Connection established"
msgid "Connection has been refused"
msgstr "જોડાણને નામંજૂર કરી દેવામાં આવ્યુ છે"
@ -1519,6 +1538,7 @@ msgid "Connection has been lost"
msgstr "જોડાણ ખોવાઈ ગયેલ છે"
#: ../js/ui/telepathyClient.js:1319
#| msgid "This resource is already connected to the server"
msgid "This account is already connected to the server"
msgstr "આ ખાતુ પહેલેથી જ સર્વર સાથે જોડાયેલ છે"
@ -1536,7 +1556,7 @@ msgstr "સર્વર એ જોડાણને સંચાલિત કર
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "પ્રમાણપત્રને રદ કરી દેવામાં આવ્યુ છે"
msgstr ""
#: ../js/ui/telepathyClient.js:1329
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
@ -1549,6 +1569,7 @@ msgid ""
msgstr ""
#: ../js/ui/telepathyClient.js:1333
#| msgid "Connection error"
msgid "Internal error"
msgstr "આંતરિક ભૂલ"
@ -1571,51 +1592,51 @@ msgstr "ખાતામાં ફેરફાર કરો"
msgid "Unknown reason"
msgstr "અજ્ઞાત કારણ"
#: ../js/ui/userMenu.js:135
#: ../js/ui/userMenu.js:133
msgid "Hidden"
msgstr "છુપાયેલ"
#: ../js/ui/userMenu.js:141
#: ../js/ui/userMenu.js:139
msgid "Idle"
msgstr "નિષ્ક્રિય"
msgstr ""
#: ../js/ui/userMenu.js:144
#: ../js/ui/userMenu.js:142
msgid "Unavailable"
msgstr "બિનઉપલબ્ધ"
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
msgid "Power Off..."
msgstr "પાવર બંધ..."
#: ../js/ui/userMenu.js:631
#: ../js/ui/userMenu.js:615
msgid "Notifications"
msgstr "સૂચનાઓ"
#: ../js/ui/userMenu.js:639
#: ../js/ui/userMenu.js:623
msgid "Online Accounts"
msgstr "ઓનલાઇન ખાતુ"
#: ../js/ui/userMenu.js:643
#: ../js/ui/userMenu.js:627
msgid "System Settings"
msgstr "સિસ્ટમ સુયોજનો"
#: ../js/ui/userMenu.js:650
#: ../js/ui/userMenu.js:634
msgid "Lock Screen"
msgstr "સ્ક્રીનને તાળુ મારો"
#: ../js/ui/userMenu.js:655
#: ../js/ui/userMenu.js:639
msgid "Switch User"
msgstr "વપરાશકર્તાને બદલો"
#: ../js/ui/userMenu.js:660
#: ../js/ui/userMenu.js:644
msgid "Log Out..."
msgstr "બહાર નીકળો..."
#: ../js/ui/userMenu.js:688
#: ../js/ui/userMenu.js:672
msgid "Your chat status will be set to busy"
msgstr "તમારી વાર્તાલાપ પરિસ્થિતિ વ્યસ્ત તરીકે સુયોજિત હશે"
msgstr ""
#: ../js/ui/userMenu.js:689
#: ../js/ui/userMenu.js:673
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
@ -1647,7 +1668,7 @@ msgstr ""
#: ../js/ui/wanda.js:168
msgid "Your favorite Easter Egg"
msgstr "તમારા મનગમતા ઇસ્ટર ઇંડા"
msgstr ""
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
@ -1676,26 +1697,28 @@ msgstr[1] "%u ઇનપુટો"
msgid "System Sounds"
msgstr "સિસ્ટમ અવાજો"
#: ../src/main.c:255
#: ../src/main.c:262
msgid "Print version"
msgstr "ા"
#: ../src/main.c:261
#: ../src/main.c:268
msgid "Mode used by GDM for login screen"
msgstr "લૉગિન સ્ક્રીન માટે GDM દ્દારા વાપરેલ સ્થિતિ"
#: ../src/shell-app.c:619
#: ../src/shell-app.c:617
#, c-format
#| msgid "Failed to unmount '%s'"
msgid "Failed to launch '%s'"
msgstr "'%s' ને શરૂ કરવામાં નિષ્ફળતા"
#: ../src/shell-keyring-prompt.c:708
#| msgid "Does not match"
msgid "Passwords do not match."
msgstr "પાસવર્ડ બંધબેસતો નથી"
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "પાસવર્ડને ખાલી રાખી શકાતો નથી"
msgstr ""
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
@ -1712,6 +1735,7 @@ msgstr ""
#. Translators: this is the same string as the one found in
#. * nautilus
#: ../src/shell-util.c:97
#| msgid "Volume"
msgid "Home"
msgstr "ઘર"

687
po/he.po

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-04 15:45+0200\n"
"PO-Revision-Date: 2012-04-04 15:45+0200\n"
"POT-Creation-Date: 2012-03-22 08:22+0100\n"
"PO-Revision-Date: 2012-03-22 08:23+0100\n"
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: \n"
@ -107,18 +107,10 @@ msgstr ""
"állapot. Az itteni érték a GsmPresenceStatus felsorolásból származik."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid "Keybinding to open the application menu"
msgstr "Billentyűtársítás az alkalmazásmenü megnyitásához"
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Keybinding to open the application menu."
msgstr "Billentyűtársítás az alkalmazásmenü megnyitásához."
#: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "List of desktop file IDs for favorite applications"
msgstr "A kedvenc alkalmazások asztalifájl-azonosítóinak listája"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -145,19 +137,19 @@ msgstr ""
"használatával. A %T egy helykitöltő, a rendszeren optimális szálmennyiség "
"megtippelésére."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show date in clock"
msgstr "Dátum megjelenítése az órában"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Show the week date in the calendar"
msgstr "Hetek számának megjelenítése a naptárban"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Másodpercek megjelenítése"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@ -165,7 +157,7 @@ msgstr ""
"Az itt felsorolt azonosítóknak megfelelő alkalmazások jelennek meg a "
"kedvencek területen."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
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 "
@ -175,7 +167,7 @@ msgstr ""
"névvel, és ezzel a kiterjesztéssel fog rendelkezni. Más tárolóformátumba "
"való rögzítéskor módosítani kell."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -183,11 +175,11 @@ msgstr ""
"A GNOME Shell képernyőfelvevője által felvett eredményül kapott "
"képernyővideó képkockasebessége képkocka/másodpercben."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "A képernyővideó kódolására használt GStreamer adatcsatorna"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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 "
@ -199,23 +191,23 @@ msgstr ""
"titkosak maradnak, magánszférájának védelme érdekében letilthatja ezek "
"gyűjtését. Ne feledje, hogy ez nem fogja a már mentett adatokat törölni."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The type of keyboard to use."
msgstr "Használandó billentyűzet típusa."
#: ../data/org.gnome.shell.gschema.xml.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "Uuids of extensions to enable"
msgstr "Engedélyezendő kiterjesztések uuid-jei"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "Whether to collect stats about applications usage"
msgstr "Statisztikák gyűjtése alkalmazások használatáról"
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "Which keyboard to use"
msgstr "A használandó billentyűzet"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid "disabled OpenSearch providers"
msgstr "kikapcsolt OpenSearch szolgáltatók"
@ -694,51 +686,51 @@ msgstr "Jelszó:"
msgid "Type again:"
msgstr "Írja be újra:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nincsenek kiterjesztések telepítve"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s nem adott hibát."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Hibák elrejtése"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Hibák megjelenítése"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Engedélyezve"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Tiltva"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Hiba"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Elavult"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Letöltés"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Forrás megtekintése"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Weblap"
@ -868,17 +860,17 @@ msgstr "Alkalmazások"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Kilépés"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Tevékenységek"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Felső sáv"
@ -1693,7 +1685,7 @@ msgstr ""
#: ../js/ui/wanda.js:128
#, c-format
msgid "%s the Oracle says"
msgstr "%s az orákulum ezt mondja"
msgstr "Az orákulum ezt mondja: %s"
#: ../js/ui/wanda.js:168
msgid "Your favorite Easter Egg"

1167
po/id.po

File diff suppressed because it is too large Load Diff

454
po/it.po

File diff suppressed because it is too large Load Diff

598
po/ja.po

File diff suppressed because it is too large Load Diff

1618
po/kn.po

File diff suppressed because it is too large Load Diff

301
po/ko.po
View File

@ -1,19 +1,14 @@
# This file is distributed under the same license as the gnome-shell package.
# Young-Ho Cha <ganadist@gmail.com>, 2009.
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
# Changwoo Ryu <cwryu@debian.org>, 2011-2012.
#
#
# 주의 사항:
# - 이 프로그램의 이름인 shell은 "셸"이라고 쓰고, "쉘"이라고 하지 않음.
# - instance messanger 또는 IM은 메신저라고 번역
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-04-19 21:14+0000\n"
"PO-Revision-Date: 2012-05-19 22:57+0900\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-27 01:36+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@ -28,30 +23,31 @@ msgstr "그놈 셸"
#: ../data/gnome-shell.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "창 관리 프로그램 실행"
msgstr "창 관리 프로그램 시작"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extension Preferences"
msgstr "그놈 확장 기본 설정"
msgstr "그놈 확장 기본 설정"
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
msgstr "그놈 확장을 설정합니다"
msgstr "그놈 확장을 설정합니다"
#: ../data/org.gnome.shell.gschema.xml.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Alt-F2에서 개발 및 테스트용 내부 기능 사용 가능"
msgstr "Alt-F2를 이용해 개발 및 테스트용 내부 프로그램 사용 가능"
#: ../data/org.gnome.shell.gschema.xml.in.h:2
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr "Alt-F2 대화 상자에서 내부 디버깅 및 감시 기능에 접근을 허용합니다."
msgstr ""
"Alt-F2 대화 상자를 사용할 때 내부 디버깅 및 감시 도구에 접근을 허용합니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:3
msgid "Uuids of extensions to enable"
msgstr "사용할 확장의 UUID 목록"
msgstr "사용할 확장 기능의 UUID"
#: ../data/org.gnome.shell.gschema.xml.in.h:4
msgid ""
@ -59,11 +55,14 @@ msgid ""
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension DBus methods on org.gnome.Shell."
msgstr "그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 읽어들일 확장의 UUID를 나열합니다. 읽어들이려는 확장은 모두 이 목록에 들어 있어야 합니다. EnableExtension 및 DisableExtension D-버스 메소드를 이용해 이 목록을 조작할 수도 있습니다."
msgstr ""
"그놈 셸 확장에 UUID 속성이 있으며 이 키는 불러올 확장을 나열합니다. 불러오려"
"는 확장은 이 목록에 있을 필요가 있습니다. 또한 이 목록을 org.gnome.Shell에 있"
"는 EnableExtension과 DisableExtension DBus 메서드로 조작할 수 있습니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:5
msgid "Whether to collect stats about applications usage"
msgstr "프로그램 사용 통계를 수집할지 여부"
msgstr "프로그램 사용 통계를 저장할지 여부"
#: ../data/org.gnome.shell.gschema.xml.in.h:6
msgid ""
@ -71,7 +70,11 @@ 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 "셸에서는 최근에 사용한 프로그램을(실행 메뉴 등에서) 표시하는 목적으로, 현재 사용 중인 프로그램을 감시합니다. 이 데이터는 비공개 데이터이지만 사생활 문제가 걱정된다면 이 기능을 끌 수도 있습니다. 단 이 기능을 사용하지 않더라도 이미 저장된 데이터를 제거하지는 않습니다."
msgstr ""
"셸에서는 최근에 사용한 프로그램을 (실행 메뉴 등에서) 표시하는 목적으로, 현재 "
"사용 중인 프로그램을 감시합니다. 이 데이터는 비공개 데이터이지만 사생활 문제"
"가 걱정된다면 이 기능을 끌 수도 있습니다. 단 이 기능을 사용하지 않더라도 이"
"미 저장된 데이터를 제거하지는 않습니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:7
msgid "List of desktop file IDs for favorite applications"
@ -81,31 +84,35 @@ msgstr "즐겨찾기 프로그램의 데스크톱 파일 ID 목록"
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr "여기 들어 있는 ID에 해당하는 프로그램은 즐겨찾기 영역에 표시됩니다."
msgstr " ID에 해당하는 프로그램은 즐겨찾기 영역에 표시됩니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "disabled OpenSearch providers"
msgstr "사용하지 않는 OpenSearch 서비스"
msgstr "OpenSearch 서비스 사용하지 않음"
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "History for command (Alt-F2) dialog"
msgstr "명령어 대화 상자에(Alt-F2) 기록 기능"
msgstr "명령어 (Alt-F2) 대화 상자에 명령어 기록 기능"
#: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "History for the looking glass dialog"
msgstr "돋보기 대화 상자에 기록 기능"
msgstr "돋보기 대화 창의 기록"
#: ../data/org.gnome.shell.gschema.xml.in.h:12
msgid ""
"Internally used to store the last IM presence explicitly set by the user. "
"The value here is from the TpConnectionPresenceType enumeration."
msgstr "사용자가 직접 설정한 메신저 상태를 저장하는데 내부적으로 사용. 여기에 사용하는 값은 TpConnectionPresenceType 열거 상수 값입니다."
msgstr ""
"사용자가 명시적으로 설정한 최근 IM 존재를 저장하기 위해 내부적으로 사용했습니"
"다. 이 값은 TpConnectionPresenceType 열거상수로부터 왔습니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid ""
"Internally used to store the last session presence status for the user. The "
"value here is from the GsmPresenceStatus enumeration."
msgstr "사용자의 최근 세션 상태를 저장하는데 내부적으로 사용. 여기에 사용하는 값은 GsmPresenceStatus 열거 상수 값입니다."
msgstr ""
"사용자를 위한 최근 세션 존재 상태를 저장하기 위해 내부적으로 사용합니다. 이 "
"값은 GsmPresenceStatus 열거상수로부터 왔습니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show the week date in the calendar"
@ -116,52 +123,45 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "참이면 달력에 ISO 요일을 표시합니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "프로그램 메뉴를 여는 키 바인딩"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "프로그램 메뉴를 여는 키 바인딩."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "사용할 키보드"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "사용할 키보드의 종류."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "시각에 초 표시"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "참이면 시각에 초를 표시합니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "시계에 날짜 표시"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "참이면 시계에 날짜를 시각과 같이 표시합니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "스크린 방송 녹화에 사용할 프레임수."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr "그놈 셸의 스크린 방송의 녹화 결과물에 사용할 프레임수, 초당 프레임수 단위."
msgstr ""
"그놈 셸의 스크린 방송의 녹화 결과물에 사용할 프레임수, 초당 프레임 수 단위."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "스크린 방송 인코딩에 사용할 gstreamer 파이프라인"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -174,18 +174,29 @@ msgid ""
"'vp8enc quality=8 speed=6 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 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, 기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux'이고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으로 생각되는 스레드 수로 대체됩니다."
msgstr ""
"녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch에 사용하"
"는 문법을 따릅니다. 파이프라인은 녹화한 영상이 있는 싱크 패드를 연결하지 않"
"은 상태여야 합니다. 보통 소스 패드와 연결하지 않았을 것입니다. 이 패드의 출력"
"은 출력 파일에 기록할 것입니다. 그러나 파이프라인은 이 출력을 다룰 수 있기도 "
"합니다 - 아마 shout2send와 같은 것을 통해 icecast 서버로 출력을 보내는데 사용"
"할지도 모릅니다. 만약 설정을 취소하거나 빈 값으로 설정한다면, 기본 파이프라인"
"을 사용할 것입니다. 이것은 현재 'vp8enc quality=8 speed=6 threads=%T ! "
"queue ! webmmux' 이며 VP8 코덱을 사용하여 WEBM으로 녹화합니다. %T는 시스템 상"
"의 최적의 스레드 수를 추측하기 위해 대체기호로 사용합니다."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "스크린 방송 저장할 때 사용할 파일 확장자"
msgstr "스크린 방송 저장 사용할 파일 확장자"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "녹화한 스크린 방송 영상 파일은, 현재 날짜와 여기서 설정하는 확장자를 붙여 파일 이름을 만듭니다. 다른 컨테이너 형식으로 녹화하려면 이 값을 바꿔야 합니다."
msgstr ""
"스크린 방송 녹화 파일 이름은 현재 날짜와 이 확장자를 사용해서 결정됩니다. 녹"
"화할 때 다른 형식으로 바꿀 수도 있습니다."
#: ../js/extensionPrefs/main.js:125
#, c-format
@ -198,42 +209,42 @@ msgstr "<b>확장</b>"
#: ../js/extensionPrefs/main.js:189
msgid "Select an extension to configure using the combobox above."
msgstr "위의 콤보상자를 사용 설정할 확장을 선택하십시오."
msgstr "위의 콤보상자를 사용하여 설정할 확장을 선택하십시오."
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "세션..."
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "로그인"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(또는 지문을 문지르십시오)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "목록에 없습니까?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "취소"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "로그인"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "로그인 창"
@ -627,11 +638,11 @@ msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작합니다."
msgid "Restarting the system."
msgstr "시스템을 다시 시작합니다."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "설치"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr ""
@ -641,8 +652,7 @@ msgstr ""
msgid "tray"
msgstr "트레이"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "키보드"
@ -654,60 +664,59 @@ msgstr "암호:"
msgid "Type again:"
msgstr "다시 입력하십시오:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "확장을 설치하지 않았습니다"
msgstr "확장 기능을 설치하지 않았습니다"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s에서 발생한 에러가 없습니다."
msgstr "%s이(가) 발생한 에러가 없습니다."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "오류 숨기기"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "오류 보이기"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "사용"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "사용 않음"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "오류"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "오래 된 버전"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "다운로드 중"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "소스 보기"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "웹페이지"
# 주의: 파일이름, %d %t는 날짜와 시각, 이상하게 번역하지 말 것
#. Translators: this is a filename used for screencast recording
#: ../js/ui/main.js:118
#, no-c-format
msgid "Screencast from %d %t"
msgstr "스크린 방송, %d %t"
msgstr "%d %t의 스크린캐스트"
#: ../js/ui/messageTray.js:1200
msgid "Open"
@ -826,17 +835,17 @@ msgstr "프로그램"
msgid "Dash"
msgstr "대시보드"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "끝내기"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "현재 활동"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "위 막대"
@ -890,11 +899,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "명령을 입력하십시오:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "검색하는 중..."
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "일치하는 결과가 없습니다."
@ -912,7 +921,7 @@ msgstr "텍스트 보이기"
#: ../js/ui/shellEntry.js:79
msgid "Hide Text"
msgstr "텍스트 숨기기"
msgstr "글자 숨기기"
#: ../js/ui/shellMountOperation.js:271
msgid "Wrong password, please try again"
@ -1052,7 +1061,7 @@ msgstr "항상 접근 허용"
msgid "Grant this time only"
msgstr "이번에만 허용"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "거부"
@ -1118,7 +1127,7 @@ msgstr "관리되지 않음"
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:500
msgid "authentication required"
msgstr "인증 필요"
msgstr "인증 필요합니다"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing
@ -1129,7 +1138,7 @@ msgstr "펌웨어 없음"
#. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:517
msgid "cable unplugged"
msgstr "케이블 분리"
msgstr "케이블 분리되었습니다"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage
@ -1139,7 +1148,7 @@ msgstr "사용 불가"
#: ../js/ui/status/network.js:524
msgid "connection failed"
msgstr "연결 실패"
msgstr "연결 실패했습니다"
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
msgid "More..."
@ -1149,7 +1158,7 @@ msgstr "더 보기..."
#. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
msgid "Connected (private)"
msgstr "연결됨(개인)"
msgstr "연결됨 (개인)"
#: ../js/ui/status/network.js:696
msgid "Auto Ethernet"
@ -1366,35 +1375,35 @@ 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:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "보낸 때: <b>%A</b> <b>%H시 %M분</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "보낸 때: <b>%B %d일</b> <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "보낸 때: %Y년 <b>%B %d일</b> <b>%A</b>"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "%s의 대화명이 이제 %s입니다"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "%s에 초대"
@ -1402,35 +1411,35 @@ msgstr "%s에 초대"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s 님이 %s에 입장하도록 초대합니다"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "거부"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "허용"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "%s에서 영상 호출"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "%s에서 호출"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "응답"
@ -1439,108 +1448,108 @@ msgstr "응답"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s님이 %s 파일을 보냅니다"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "네트워크 오류"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "인증이 실패했습니다"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "암호화 오류"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "인증서가 없습니다"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "인증서를 신뢰할 수 없습니다"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "인증서가 만료되었습니다"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "인증서를 활성화하지 않았습니다"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "인증서 호스트 이름이 맞지 않습니다"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "인증서 핑거프린트가 맞지 않습니다"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "인증서가 자기 서명한 인증서입니다"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "상태를 오프라인으로 설정"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "암호화를 사용할 수 없습니다"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "인증서가 올바르지 않습니다"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "연결이 거부되었습니다"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "연결할 수 없습니다"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "연결이 끊어졌습니다"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "이 계정은 이미 서버에 연결했습니다"
msgstr "이미 서버에 이 계정을 연결했습니다"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "같은 자원을 사용하는 새로운 연결로 바꾸었습니다"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "계정이 이미 서버에 있습니다"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "인증서를 철회했습니다"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1548,26 +1557,26 @@ msgstr ""
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
"을 넘어갑니다."
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "내부 오류"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "%s에 연결이 실패했습니다"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "다시 연결"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "계정 편집"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "알 수 없는 이유"
@ -1641,7 +1650,7 @@ msgid ""
"Sorry, no wisdom for you today:\n"
"%s"
msgstr ""
"죄송합니다. 오늘 조언할 내용이 없습니다:\n"
"죄송하지만, 오늘 조언해 줄 것이 없습니다:\n"
"%s"
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
@ -1661,7 +1670,7 @@ msgstr "'%s' 프로그램이 준비되었습니다"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1669,13 +1678,13 @@ msgstr[0] "%u개 출력"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u개 입력"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "시스템 소리"
@ -1699,7 +1708,7 @@ msgstr "암호가 일치하지 않습니다."
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "빈 암호를 쓸 수 없습니다"
msgstr "암호는 비울 수 없습니다"
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"
@ -1735,3 +1744,27 @@ msgstr "파일 시스템"
#, c-format
msgid "%1$s: %2$s"
msgstr "%s: %s"
#~ msgid "RECENT ITEMS"
#~ msgstr "최근 항목"
#~ msgid "Show password"
#~ msgstr "암호 표시"
#~ msgid "Home Folder"
#~ msgstr "내 폴더"
#~ msgid "%s has finished starting"
#~ msgstr "%s 프로그램이 시작했습니다"
#~ msgid "If true, display onscreen keyboard."
#~ msgstr "참이면 화면 키보드를 표시합니다."
#~ msgid "Show the onscreen keyboard"
#~ msgstr "화면 키보드 표시"
#~ msgid "Connectivity lost"
#~ msgstr "연결 끊어짐"
#~ msgid "You're no longer connected to the network"
#~ msgstr "이제 네트워크에 연결되어 있지 않습니다"

220
po/lt.po
View File

@ -3,20 +3,19 @@
# This file is distributed under the same license as the gnome-shell package.
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
# Algimantas Margevičius <gymka@mail.ru>, 2011.
# Mantas Kriaučiūnas <mantas@akl.lt>, 2012.
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: 2012-05-19 13:58+0000\n"
"PO-Revision-Date: 2012-04-05 15:14+0300\n"
"Last-Translator: Mantas Kriaučiūnas <mantas@akl.lt>\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-20 14:09+0300\n"
"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\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"
"Language: lt\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.7.0\n"
@ -24,7 +23,7 @@ msgstr ""
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
msgstr "GNOME Shell aplinka"
msgstr "GNOME Shell"
#: ../data/gnome-shell.desktop.in.in.h:2
msgid "Window management and application launching"
@ -80,11 +79,10 @@ msgid ""
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti "
"dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys "
"konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją "
"išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys "
"nebus pašalinti."
"Apvalkalas paprastai stebi aktyvias programas siekiant pateikti dažniausiai "
"naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, "
"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:7
msgid "List of desktop file IDs for favorite applications"
@ -135,42 +133,34 @@ 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:16
msgid "Keybinding to open the application menu"
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Klavišų susiejimas, kuriuo atveriamas programų meniu."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Kurią klaviatūrą naudoti"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Naudotinas klaviatūros tipas."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Rodyti laiką su sekundėmis"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Jeigu reikšmė teigiama, rodyti laike sekundes."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Rodyti datą laikrodyje"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
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:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
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:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -178,11 +168,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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
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:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -207,11 +197,11 @@ msgstr ""
"speed=6 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:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
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:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -224,7 +214,7 @@ msgstr ""
#: ../js/extensionPrefs/main.js:125
#, c-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Įvyko klaida įkeliant %s nustatymų dialogą:"
msgstr "Kilo klaida įkeliant %s nustatymų dialogą:"
#: ../js/extensionPrefs/main.js:165
msgid "<b>Extension</b>"
@ -234,40 +224,40 @@ msgstr "<b>Plėtinys</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "Seansas..."
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "Prisijungti"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "Nėra sąraše?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Atsisakyti"
msgstr "Atšaukti"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "Prisijungti"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "Prisijungimo langas"
@ -675,11 +665,11 @@ msgstr[2] "Sistema bus paleista iš naujo po %d sekundžių."
msgid "Restarting the system."
msgstr "Sistema paleidžiama iš naujo."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Įdiegti"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
@ -688,8 +678,7 @@ msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
msgid "tray"
msgstr "dėklas"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Klaviatūra"
@ -701,51 +690,51 @@ msgstr "Slaptažodis:"
msgid "Type again:"
msgstr "Įveskite dar kartą:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nėra įdiegtų plėtinių"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s nepranešė apie jokias klaidas."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Slėpti klaidas"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Rodyti klaidas"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Įjungta"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Išjungta"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Klaida"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Pasenęs"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Atsiunčiama"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Žiūrėti šaltinį"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Tinklalapis"
@ -874,17 +863,17 @@ msgstr "Programos"
msgid "Dash"
msgstr "Paleidimo sritis"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Užverti"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Apžvalga"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Viršutinė juosta"
@ -938,11 +927,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Įveskite komandą:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Ieškoma..."
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Nerasta atitikmenų."
@ -1100,7 +1089,7 @@ msgstr "Visada leisti prieigą"
msgid "Grant this time only"
msgstr "Leisti tik šį kartą"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Atmesti"
@ -1177,7 +1166,7 @@ msgstr "Trūksta integruotos programinės įrangos (firmware)"
#. Translators: this is for wired network devices that are physically disconnected
#: ../js/ui/status/network.js:517
msgid "cable unplugged"
msgstr "atjungtas laidas"
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
@ -1191,7 +1180,7 @@ msgstr "nepavyko prisijungti"
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
msgid "More..."
msgstr "Rodyti daugiau tinklų..."
msgstr "Daugiau..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name)
@ -1388,7 +1377,7 @@ msgstr "Skambutis"
#. We got the TpContact
#: ../js/ui/telepathyClient.js:287
msgid "File Transfer"
msgstr "Failo persiuntimas"
msgstr "Failo perdavimas"
#: ../js/ui/telepathyClient.js:369
msgid "Subscription request"
@ -1421,35 +1410,35 @@ msgstr "%s yra užsiėmęs (-usi)."
#. 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:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Išsiųsta <b>%X</b> <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Išsiųsta <b>%B %d</b>, <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Išsiųsta %Y <b>%B %d</b>, <b>%A</b>"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "%s nuo šiol vadinasi %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "Kvietimas į %s"
@ -1457,35 +1446,35 @@ msgstr "Kvietimas į %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s jus kviečia prisijungti prie %s"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Atmesti"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Priimti"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Vaizdo skambutis nuo %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Skambutis nuo %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Atsiliepti"
@ -1494,110 +1483,110 @@ msgstr "Atsiliepti"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s jums siunčia %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s pageidauja matyti, kai esate prisijungę prie interneto"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Tinklo klaida"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Nepavyko patvirtinti tapatybės"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Šifravimo klaida"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Liudijimas nepateiktas"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "Liudijimas nepatikimas"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Liudijimo galiojimas pasibaigęs"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Liudijimas neaktyvuotas"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "Liudijimo serverio vardo nesutapimas"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "Liudijimo piršto atspaudo nesutapimas"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Liudijimas pačių pasirašytas"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "Nustatyta atsijungimo būsena"
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "Šifravimas negalimas"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "Liudijimas netinkamas"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "Ryšys atmestas"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "Nepavyko užmegzti ryšio"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Ryšys nutrūko"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Ši paskyra jau prijungta prie serverio"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "Tokia paskyra serveryje jau yra"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "Šiuo metu serveris per daug užimtas šiai užklausai apdoroti"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "Liudijimas atšauktas"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
"silpnas"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1605,26 +1594,26 @@ msgstr ""
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
"bibliotekos apribojimus"
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "Vidinė klaida"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "Nepavyko prisijungti prie %s"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Prisijungti iš naujo"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Taisyti paskyrą"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Nežinoma priežastis"
@ -1650,7 +1639,7 @@ msgstr "Pranešimai"
#: ../js/ui/userMenu.js:639
msgid "Online Accounts"
msgstr "Interneto paskyros"
msgstr "Tinklo paskyros"
#: ../js/ui/userMenu.js:643
msgid "System Settings"
@ -1709,7 +1698,7 @@ msgstr "Orakulė sako %s"
#: ../js/ui/wanda.js:168
msgid "Your favorite Easter Egg"
msgstr "Jūsų mėgstamiausias Velykinis kiaušinis"
msgstr "Jūsų mėgstamiausias lykinis kiaušinis"
#: ../js/ui/windowAttentionHandler.js:19
#, c-format
@ -1718,7 +1707,7 @@ msgstr "„%s“ yra pasirengusi"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1728,7 +1717,7 @@ msgstr[2] "%u išvestys"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
@ -1736,15 +1725,15 @@ msgstr[0] "%u įvestis"
msgstr[1] "%u įvestys"
msgstr[2] "%u įvestys"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "Sistemos garsai"
#: ../src/main.c:256
#: ../src/main.c:255
msgid "Print version"
msgstr "Išvesti versijos numerį"
#: ../src/main.c:262
#: ../src/main.c:261
msgid "Mode used by GDM for login screen"
msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
@ -1754,6 +1743,7 @@ msgid "Failed to launch '%s'"
msgstr "Nepavyko paleisti „%s“"
#: ../src/shell-keyring-prompt.c:708
#| msgid "Does not match"
msgid "Passwords do not match."
msgstr "Slaptažodžiai nesutampa."
@ -1777,7 +1767,7 @@ msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
#. * nautilus
#: ../src/shell-util.c:97
msgid "Home"
msgstr "Namų aplankas"
msgstr "Namai"
#. Translators: this is the same string as the one found in
#. * nautilus

View File

@ -9,17 +9,17 @@ 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: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-13 19:12+0300\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-24 18:43+0200\n"
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
"Language-Team: Latvian <lata-l18n@googlegroups.com>\n"
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: lv\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
"2);\n"
"X-Generator: Lokalize 1.4\n"
"X-Generator: Lokalize 1.2\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -132,42 +132,34 @@ 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:16
msgid "Keybinding to open the application menu"
msgstr "Taustiņu sasaiste, lai atvērtu lietotnes izvēlni"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Taustiņu sasaiste, lai atvērtu lietotnes izvēlni."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Kuru tastatūru izmantot"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Izmantojamās tastatūras tips."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Rādīt laiku ar sekundēm"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Ja patiess, rādīt pulkstenī arī sekundes."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Pie pulksteņa rādīt arī datumu"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
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:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Kadrātrums, ko izmantot, ierakstot ekrānraides."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -175,11 +167,11 @@ 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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
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:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -204,11 +196,11 @@ msgstr ""
"threads=%T ! queue ! webmmux' un ieraksta WEBM ar VP8 kodeku. %T tiek "
"izmantots kā vietturis, lai uzminētu optimālo pavedienu skaitu sistēmā."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
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:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -694,51 +686,51 @@ msgstr "Parole:"
msgid "Type again:"
msgstr "Ierakstiet vēlreiz:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nav instalētu paplašinājumu"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s nav izdevis nevienu kļūdu."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Slēpt kļūdas"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Rādīt kļūdas"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Aktivēta"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Deaktivēta"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Kļūda"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Nav aktuāls"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Lejupielādē"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Skatīt avotu"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Tīmekļa lapa"
@ -867,17 +859,17 @@ msgstr "Lietotnes"
msgid "Dash"
msgstr "Panelis"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Iziet"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Aktivitātes"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Augšējā josla"
@ -931,11 +923,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Lūdzu, ievadiet komandu:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Meklē..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Nav rezultātu."

1510
po/mr.po

File diff suppressed because it is too large Load Diff

458
po/nb.po

File diff suppressed because it is too large Load Diff

View File

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-03-31 04:10+0200\n"
"PO-Revision-Date: 2012-03-31 04:11+0200\n"
"POT-Creation-Date: 2012-03-19 18:59+0100\n"
"PO-Revision-Date: 2012-03-19 19:00+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <gnomepl@aviary.pl>\n"
"Language: pl\n"
@ -137,54 +137,46 @@ msgstr ""
"w kalendarzu."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Skrót do otwarcia menu programu"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Skrót do otwarcia menu programu."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Której klawiatury używać"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Typ używanej klawiatury."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Wyświetlanie czasu z sekundami"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Jeśli jest ustawione na \"true\", to wyświetla sekundy w zegarze."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Wyświetlanie daty w zegarze"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr ""
"Jeśli jest ustawione na \"true\", to wyświetla datę w zegarze, dodatkowo do "
"czasu."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Liczba klatek na sekundę do nagrywania pulpitu."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr "Liczba klatek na sekundę wynikowego nagrania pulpitu."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Potok biblioteki GStreamer używany do zakodowania nagrania pulpitu"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -208,11 +200,11 @@ msgstr ""
"threads=%T ! queue ! webmmux\" i nagrywa do formatu WebM używając kodeka "
"VP8. %T jest zamieniane na odgadniętą optymalną liczbę wątków dla komputera."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Rozszerzenie pliku używane do przechowywania nagrań pulpitu"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -700,51 +692,51 @@ msgstr "Hasło:"
msgid "Type again:"
msgstr "Proszę wpisać ponownie:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nie zainstalowano rozszerzeń"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "Rozszerzenie %s nie wysłało żadnych błędów."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Ukryj błędy"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Wyświetl błędy"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Włączone"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Wyłączone"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Błąd"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Nieaktualne"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Pobieranie"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Wyświetl źródło"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Strona WWW"
@ -873,17 +865,17 @@ msgstr "Programy"
msgid "Dash"
msgstr "Ulubione"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Zakończ"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Podgląd"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Górny pasek"
@ -937,11 +929,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Proszę wprowadzić polecenie:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Wyszukiwanie..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Brak wyników."

View File

@ -14,15 +14,15 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-04-28 10:45-0300\n"
"PO-Revision-Date: 2012-04-28 10:45-0300\n"
"POT-Creation-Date: 2012-03-21 21:00-0300\n"
"PO-Revision-Date: 2012-03-13 11:54-0300\n"
"Last-Translator: Jonh Wendell <jwendell@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell"
@ -114,19 +114,11 @@ msgstr ""
"valor usado aqui vem da enumeração GsmPresenceStatus."
#: ../data/org.gnome.shell.gschema.xml.in.h:13
msgid "Keybinding to open the application menu"
msgstr "Atalho de teclado para abrir o menu aplicativo"
#: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Keybinding to open the application menu."
msgstr "Atalho de teclado para abrir o menu aplicativo."
#: ../data/org.gnome.shell.gschema.xml.in.h:15
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:17
#: ../data/org.gnome.shell.gschema.xml.in.h:15
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -152,19 +144,19 @@ msgstr ""
"usando o codec VP8. %T é usado como uma tentativa de descobrir a melhor "
"quantidade de threads a serem usadas."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show date in clock"
msgstr "Mostrar data no relógio"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Show the week date in the calendar"
msgstr "Mostrar o número da semana no calendário"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Mostrar horário com segundos"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
@ -172,7 +164,7 @@ msgstr ""
"Os aplicativos correspondentes a estes identificadores serão exibidos na "
"área de favoritos."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
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 "
@ -182,7 +174,7 @@ msgstr ""
"baseado na data atual e usará esta extensão. Ele deve ser alterado ao gravar "
"para um contêiner de formato diferente."
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -190,11 +182,11 @@ msgstr ""
"A taxa de quadros do screencast resultante do gravador de screencasts do "
"GNOME Shell em quadros por segundo."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "A fila de processamento gstreamer usada para codificar o screencast"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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 "
@ -206,23 +198,23 @@ msgstr ""
"segurança, você pode querer desabilitá-los por razões de privacidade. Por "
"favor, note que ao fazer isso não removerá os dados já salvos."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The type of keyboard to use."
msgstr "O tipo do teclado para usar."
#: ../data/org.gnome.shell.gschema.xml.in.h:27
#: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "Uuids of extensions to enable"
msgstr "Uuids das extensões para habilitar"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "Whether to collect stats about applications usage"
msgstr "Quando coletar dados sobre uso de aplicativos"
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "Which keyboard to use"
msgstr "Qual teclado usar"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
msgid "disabled OpenSearch providers"
msgstr "Provedores OpenSearch desabilitados"
@ -239,40 +231,40 @@ msgstr "<b>Extensão</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "Escolha uma extensão para configurar usando a caixa acima."
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "Sessão..."
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "Iniciar sessão"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(ou deslize o dedo)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "Não listado?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "Cancelar"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "Entrar"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "Janela de sessão"
@ -671,11 +663,11 @@ msgstr[1] "O sistema será reiniciado automaticamente em %d segundos."
msgid "Restarting the system."
msgstr "Reiniciando o sistema."
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "Instalar"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
@ -684,8 +676,7 @@ msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
msgid "tray"
msgstr "bandeja"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "Teclado"
@ -697,51 +688,51 @@ msgstr "Senha:"
msgid "Type again:"
msgstr "Digite novamente:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nenhuma extensão instalada"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s não produziu nenhum erro."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Mostrar erros"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Esconder erros"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Habilitada"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Desabilitada"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Erro"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Obsoleta"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Baixando"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Ver fonte"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Página web"
@ -870,17 +861,17 @@ msgstr "Aplicativos"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Sair"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Atividades"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Barra superior"
@ -938,7 +929,7 @@ msgstr "Por favor, digite um comando:"
msgid "Searching..."
msgstr "Pesquisando..."
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:414
msgid "No matching results."
msgstr "Nenhum resultado encontrado."
@ -1096,7 +1087,7 @@ msgstr "Sempre permitir acesso"
msgid "Grant this time only"
msgstr "Permitir apenas desta vez"
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
msgid "Reject"
msgstr "Rejeitar"
@ -1413,35 +1404,35 @@ 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:889
#: ../js/ui/telepathyClient.js:887
#, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Enviado <b>%A</b>, <b>%X</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:895
#: ../js/ui/telepathyClient.js:893
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Enviado <b>%A</b>, <b>%d de %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:900
#: ../js/ui/telepathyClient.js:898
#, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Enviado <b>%A</b>, <b>%d de %B</b> de %Y"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/telepathyClient.js:942
#: ../js/ui/telepathyClient.js:940
#, c-format
msgid "%s is now known as %s"
msgstr "%s agora é conhecido como %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1044
#: ../js/ui/telepathyClient.js:1042
#, c-format
msgid "Invitation to %s"
msgstr "Convite para %s"
@ -1449,35 +1440,35 @@ msgstr "Convite para %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/telepathyClient.js:1052
#: ../js/ui/telepathyClient.js:1050
#, c-format
msgid "%s is inviting you to join %s"
msgstr "%s está convidando você para entrar em %s"
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
#: ../js/ui/telepathyClient.js:1231
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
#: ../js/ui/telepathyClient.js:1229
msgid "Decline"
msgstr "Recusar"
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
#: ../js/ui/telepathyClient.js:1232
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
#: ../js/ui/telepathyClient.js:1230
msgid "Accept"
msgstr "Aceitar"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1085
#: ../js/ui/telepathyClient.js:1083
#, c-format
msgid "Video call from %s"
msgstr "Vídeo-chamada de %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1088
#: ../js/ui/telepathyClient.js:1086
#, c-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1095
#: ../js/ui/telepathyClient.js:1093
msgid "Answer"
msgstr "Atender"
@ -1486,110 +1477,110 @@ msgstr "Atender"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/telepathyClient.js:1127
#: ../js/ui/telepathyClient.js:1125
#, c-format
msgid "%s is sending you %s"
msgstr "%s está enviando %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1196
#: ../js/ui/telepathyClient.js:1194
#, c-format
msgid "%s would like permission to see when you are online"
msgstr "%s quer permissão para vê-lo quando conectado"
#: ../js/ui/telepathyClient.js:1289
#: ../js/ui/telepathyClient.js:1287
msgid "Network error"
msgstr "Erro de rede"
#: ../js/ui/telepathyClient.js:1291
#: ../js/ui/telepathyClient.js:1289
msgid "Authentication failed"
msgstr "Falha de autenticação"
#: ../js/ui/telepathyClient.js:1293
#: ../js/ui/telepathyClient.js:1291
msgid "Encryption error"
msgstr "Erro de criptografia"
#: ../js/ui/telepathyClient.js:1295
#: ../js/ui/telepathyClient.js:1293
msgid "Certificate not provided"
msgstr "Certificado não fornecido"
#: ../js/ui/telepathyClient.js:1297
#: ../js/ui/telepathyClient.js:1295
msgid "Certificate untrusted"
msgstr "Certificado não confiável"
#: ../js/ui/telepathyClient.js:1299
#: ../js/ui/telepathyClient.js:1297
msgid "Certificate expired"
msgstr "Certificado expirado"
#: ../js/ui/telepathyClient.js:1301
#: ../js/ui/telepathyClient.js:1299
msgid "Certificate not activated"
msgstr "Certificado não ativado"
#: ../js/ui/telepathyClient.js:1303
#: ../js/ui/telepathyClient.js:1301
msgid "Certificate hostname mismatch"
msgstr "Máquina do certificado não confere"
#: ../js/ui/telepathyClient.js:1305
#: ../js/ui/telepathyClient.js:1303
msgid "Certificate fingerprint mismatch"
msgstr "Impressão digital do certificado não confere"
#: ../js/ui/telepathyClient.js:1307
#: ../js/ui/telepathyClient.js:1305
msgid "Certificate self-signed"
msgstr "Certificado auto-assinado"
#: ../js/ui/telepathyClient.js:1309
#: ../js/ui/telepathyClient.js:1307
msgid "Status is set to offline"
msgstr "O status está definido como desconectado."
#: ../js/ui/telepathyClient.js:1311
#: ../js/ui/telepathyClient.js:1309
msgid "Encryption is not available"
msgstr "Criptografia não disponível"
#: ../js/ui/telepathyClient.js:1313
#: ../js/ui/telepathyClient.js:1311
msgid "Certificate is invalid"
msgstr "O certificado é inválido"
#: ../js/ui/telepathyClient.js:1315
#: ../js/ui/telepathyClient.js:1313
msgid "Connection has been refused"
msgstr "A conexão foi recusada"
#: ../js/ui/telepathyClient.js:1317
#: ../js/ui/telepathyClient.js:1315
msgid "Connection can't be established"
msgstr "A conexão não pode ser estabelecida"
#: ../js/ui/telepathyClient.js:1319
#: ../js/ui/telepathyClient.js:1317
msgid "Connection has been lost"
msgstr "Conexão perdida"
#: ../js/ui/telepathyClient.js:1321
#: ../js/ui/telepathyClient.js:1319
msgid "This account is already connected to the server"
msgstr "Esta conta já está conectada ao servidor"
#: ../js/ui/telepathyClient.js:1323
#: ../js/ui/telepathyClient.js:1321
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "A conexão foi substituída por uma nova conexão usando o mesmo recurso"
#: ../js/ui/telepathyClient.js:1325
#: ../js/ui/telepathyClient.js:1323
msgid "The account already exists on the server"
msgstr "A conta já existe no servidor"
#: ../js/ui/telepathyClient.js:1327
#: ../js/ui/telepathyClient.js:1325
msgid "Server is currently too busy to handle the connection"
msgstr "O servidor está atualmente muito ocupado para controlar a conexão"
#: ../js/ui/telepathyClient.js:1329
#: ../js/ui/telepathyClient.js:1327
msgid "Certificate has been revoked"
msgstr "O certificado foi revogado"
#: ../js/ui/telepathyClient.js:1331
#: ../js/ui/telepathyClient.js:1329
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"O certificado usa um algoritmo de cifragem inseguro ou é criptograficamente "
"fraco"
#: ../js/ui/telepathyClient.js:1333
#: ../js/ui/telepathyClient.js:1331
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -1597,26 +1588,26 @@ msgstr ""
"O comprimento do certificado do servidor, ou a profundidade da cadeia do "
"certificado excedeu os limites impostos pela biblioteca de criptografia"
#: ../js/ui/telepathyClient.js:1335
#: ../js/ui/telepathyClient.js:1333
msgid "Internal error"
msgstr "Erro interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1345
#: ../js/ui/telepathyClient.js:1343
#, c-format
msgid "Connection to %s failed"
msgstr "A conexão com %s falhou"
#: ../js/ui/telepathyClient.js:1354
#: ../js/ui/telepathyClient.js:1352
msgid "Reconnect"
msgstr "Reconectar"
#: ../js/ui/telepathyClient.js:1355
#: ../js/ui/telepathyClient.js:1353
msgid "Edit account"
msgstr "Editar conta"
#: ../js/ui/telepathyClient.js:1401
#: ../js/ui/telepathyClient.js:1399
msgid "Unknown reason"
msgstr "Razão desconhecida"
@ -1710,7 +1701,7 @@ msgstr "\"%s\" está pronto"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1719,14 +1710,14 @@ msgstr[1] "%u saídas"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u entrada"
msgstr[1] "%u entradas"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "Sons do sistema"

View File

@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-01 14:01+0300\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-25 21:29+0300\n"
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
"Language-Team: Russian <gnome-cyr@gnome.org>\n"
"MIME-Version: 1.0\n"
@ -100,59 +100,51 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Если установлено, календарь будет показывать неделю в формате ISO."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Комбинация клавиш для открытия меню приложения"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Комбинация клавиш для открытия меню приложения."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Какую клавиатуру использовать"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Тип используемой клавиатуры."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Показывать секунды"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Если установлено, время будет указано с секундами."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Показывать в часах дату"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Если установлено, в часах будет показана дата."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Частота смены кадров для записи скринкастов."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Конвейер gstreamer, используемый для кодирования скринкастов"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, 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 'vp8enc quality=8 speed=6 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 или нечто подобное. При сбросе или установке пустого значения будет использоваться конвейер по умолчанию. В данный момент это «vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux»; запись выполняется в WEBM с помощью кодека VP8. %T используется как заполнитель для определения оптимального количества потоков в системе."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Расширение файла, использующееся для хранения скринкастов"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "Имя файла записанного скринкаста будет уникальным именем, основанным на текущей дате, и использует это расширение. Оно должно быть изменено, если запись выполняется в другой контейнерный формат."
@ -643,53 +635,53 @@ msgstr "Пароль:"
msgid "Type again:"
msgstr "Введите ещё раз:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Расширения не установлены"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s не сообщал о каких-либо ошибках."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Скрыть ошибки"
#: ../js/ui/lookingGlass.js:796
#: ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789
#: ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Показать ошибки"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Включено"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808
#: ../js/ui/lookingGlass.js:801
#: ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Выключено"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Ошибка"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Устарело"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Загрузка"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Показать код"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Веб-страница"
@ -817,17 +809,17 @@ msgstr "Приложения"
msgid "Dash"
msgstr "Приборная панель"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Закрыть"
msgstr "Закончить"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Обзор"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Верхняя панель"
@ -881,11 +873,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Введите команду:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Поиск…"
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Нет совпадений."

481
po/sl.po

File diff suppressed because it is too large Load Diff

View File

@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-03-31 10:20+0200\n"
"POT-Creation-Date: 2012-03-20 09:50+0000\n"
"PO-Revision-Date: 2012-02-29 11:26+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
"Language: 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"
"X-Project-Style: gnome\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@ -130,42 +130,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "Ако је изабрано, приказује ИСО дан у недељи у календару."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "Свеза тастера за отварање изборника програма"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Свеза тастера за отварање изборника програма."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Која ће тастатура бити коришћена"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Врста тастатуре за употребу."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Приказује време и секунде"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Ако је изабрано, приказује секунде у времену."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Приказује датум у панелу"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "Ако је изабрано, приказује датум у часовнику, као додатак времену."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Учестаност кадрова за видео снимак екрана."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -173,11 +165,11 @@ msgstr ""
"Учестаност кадрова снимка снимљених помоћу Гномове шкољке у кадровима по "
"секунди."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Процесни ланац Гстримера коришћен за кодирање видео снимка екрана"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -203,11 +195,11 @@ msgstr ""
"webmmux“ и записује у „WEBM“ користећи ВП8 кодек. „%T“ се користи као "
"носилац за откривање при оптималном прорачуну нити на систему."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Проширење датотеке за чување видео снимака екрана"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -698,51 +690,51 @@ msgstr "Лозинка:"
msgid "Type again:"
msgstr "Упишите поново:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Нису инсталирана проширења"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s није објавио никакве грешке."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Сакриј грешке"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Сакриј грешке"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Омогућено"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Онемогућено"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Грешка"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Изван датума"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Преузимање"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Погледај извор"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Интернет страница"
@ -870,17 +862,17 @@ msgstr "Програми"
msgid "Dash"
msgstr "Полет"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Изађи"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Активности"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Горња трака"
@ -934,11 +926,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Унесите наредбу:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Тражим..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Нема одговарајућих резултата."
@ -960,7 +952,7 @@ msgstr "Сакриј текст"
#: ../js/ui/shellMountOperation.js:271
msgid "Wrong password, please try again"
msgstr "Погрешна лозинка, покушајте поново"
msgstr "Погрешна лозинка, покушајте поново:"
#: ../js/ui/status/accessibility.js:47
msgid "Accessibility"
@ -1051,7 +1043,7 @@ msgstr "повезујем се..."
#: ../js/ui/status/bluetooth.js:245
msgid "Send Files..."
msgstr "Пошаљи датотеке..."
msgstr "Пошаљи датотеке.."
#: ../js/ui/status/bluetooth.js:250
msgid "Browse Files..."

View File

@ -8,16 +8,16 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-03-31 10:20+0200\n"
"POT-Creation-Date: 2012-03-20 09:50+0000\n"
"PO-Revision-Date: 2012-02-29 11:26+0200\n"
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <gnom@prevod.org>\n"
"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
"Language: 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"
"X-Project-Style: gnome\n"
#: ../data/gnome-shell.desktop.in.in.h:1
@ -130,42 +130,34 @@ 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:16
msgid "Keybinding to open the application menu"
msgstr "Sveza tastera za otvaranje izbornika programa"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "Sveza tastera za otvaranje izbornika programa."
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "Koja će tastatura biti korišćena"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "Vrsta tastature za upotrebu."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "Prikazuje vreme i sekunde"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "Ako je izabrano, prikazuje sekunde u vremenu."
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "Prikazuje datum u panelu"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
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:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "Učestanost kadrova za video snimak ekrana."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -173,11 +165,11 @@ msgstr ""
"Učestanost kadrova snimka snimljenih pomoću Gnomove školjke u kadrovima po "
"sekundi."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Procesni lanac Gstrimera korišćen za kodiranje video snimka ekrana"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -203,11 +195,11 @@ msgstr ""
"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:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "Proširenje datoteke za čuvanje video snimaka ekrana"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -698,51 +690,51 @@ msgstr "Lozinka:"
msgid "Type again:"
msgstr "Upišite ponovo:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "Nisu instalirana proširenja"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s nije objavio nikakve greške."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "Sakrij greške"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "Sakrij greške"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "Omogućeno"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "Onemogućeno"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "Greška"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "Izvan datuma"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "Preuzimanje"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "Pogledaj izvor"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "Internet stranica"
@ -870,17 +862,17 @@ msgstr "Programi"
msgid "Dash"
msgstr "Polet"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "Izađi"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "Aktivnosti"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "Gornja traka"
@ -934,11 +926,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "Unesite naredbu:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "Tražim..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "Nema odgovarajućih rezultata."
@ -960,7 +952,7 @@ msgstr "Sakrij tekst"
#: ../js/ui/shellMountOperation.js:271
msgid "Wrong password, please try again"
msgstr "Pogrešna lozinka, pokušajte ponovo"
msgstr "Pogrešna lozinka, pokušajte ponovo:"
#: ../js/ui/status/accessibility.js:47
msgid "Accessibility"
@ -1051,7 +1043,7 @@ msgstr "povezujem se..."
#: ../js/ui/status/bluetooth.js:245
msgid "Send Files..."
msgstr "Pošalji datoteke..."
msgstr "Pošalji datoteke.."
#: ../js/ui/status/bluetooth.js:250
msgid "Browse Files..."

1017
po/sv.po

File diff suppressed because it is too large Load Diff

101
po/te.po
View File

@ -1,20 +1,19 @@
# Telugu translation for gnome-shell.
# Copyright (C) 2011, 2012 Swecha telugu translations team <localization@swecha.net>
# Copyright (C) 2011, 2012 Swecha telugu translations team
# This file is distributed under the same license as the gnome-shell package.
#
# Krishnababu Krothapalli <kkrothap@redhat.com>, 2011, 2012.
# Hari Krishna <hari@swecha.net>, 2011.
# Sasi Bhushan Boddepalli <sasi@swecha.net>, 2012.
# Praveen Illa <mail2ipn@gmail.com>, 2011, 2012.
#
# Sasi Bhushan Boddepalli <sasi@swecha.net>, 2012.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell gnome-3-0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
"PO-Revision-Date: 2012-04-05 09:17+0530\n"
"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-15 12:45+0530\n"
"Last-Translator: Sasi Bhushan Boddepalli <sasi@swecha.net>\n"
"Language-Team: Telugu <indlinux-telugu@lists.sourceforge.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -34,7 +33,7 @@ msgstr "విండో నిర్వాహణ మరియు అనువర
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
#: ../js/extensionPrefs/main.js:153
msgid "GNOME Shell Extension Preferences"
msgstr "గ్నోమ్ షెల్ పొడిగింతల ప్రాధాన్యతలు"
msgstr "గ్నోమ్ షెల్ పొడిగింతల అభీష్టాలు "
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
msgid "Configure GNOME Shell Extensions"
@ -128,42 +127,34 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "ఒకవేళ నిజమైతే, క్యాలెండరులో ISO వారము తేదీని ప్రదర్శిస్తుంది."
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "అనువర్తనం మెనూ తెరవడానికి కీ బైండింగ్ "
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "అనువర్తనం మెనూ తెరవడానికి కీ బైండింగ్ "
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "ఏ కీబోర్డ్ ఉపయోగించాలి"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "ఉపయోగించుటకు కీబోర్డ్ రకము."
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "సమయమును సెకన్లతో సహా చూపించు"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "ఒకవేళ నిజమైతే, సమయము నందు సెకన్లను ప్రదర్శించు"
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "గడియారములో తేదీని చూపించు"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "ఒకవేళ నిజమైతే, సమయానికి అదనంగా గడియారము నందు తేదీని ప్రదర్శించు."
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "ఫ్రేమ్‌రేట్ అను దానిని తెరప్రసారాలను రికార్డు చేయుటకు వాడతారు."
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
@ -171,11 +162,11 @@ msgstr ""
"ఫలితముగా వచ్చు తెర ప్రసారము యొక్క ఫ్రేమ్ రేటు GNOME షెల్ తెరప్రసార రికార్డర్ ఫ్రేమ్ పర్ సెకనులలో "
"రికార్డుచేయబడుతుంది."
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "తెరప్రసారాన్ని ఎన్‌కోడ్ చేయడానికి జి స్ట్రీమర్ పైప్‌లైన్ వాడబడుతుంది"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -198,11 +189,11 @@ msgstr ""
"quality=8 speed=6 threads=%T ! queue ! webmmux' మరియు VP8 కొడెక్ వాడి WEBMకి "
"రికార్డుచేస్తుంది. %T అనేది వ్యవస్థ పై ఒక ప్లేస్‌హోల్డర్ వలె గ్వెస్ కొరకు ఆప్టిమల్ త్రెడ్ కౌంట్ వాడబడుతుంది."
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "ఫైల్ పొడిగింతను తెరప్రసారాన్ని భద్రపరుచుటకు వాడతారు"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -259,7 +250,7 @@ msgstr "ప్రవేశించండి"
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "ప్రవేశ కిటికీ"
msgstr "ప్రవేశ విండో"
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
@ -680,51 +671,51 @@ msgstr "సంకేతపదం:"
msgid "Type again:"
msgstr "మళ్ళీ టైపు చేయు:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "ఏ పొడిగింతలు స్థాపించబడిలేవు"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s ఎటువంటి దోషాలను ఉద్గారించలేదు."
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "దోషాలను దాయి"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "దోషాలను చూపించు"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "చేతనమైనది"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "చేతనమైనది"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "దోషం"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "కాలం చెల్లినది"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "దింపుకుంటున్నది"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "మూలాన్ని చూడు"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "వెబ్ పేజీ"
@ -792,8 +783,8 @@ msgstr "వైర్‌లెస్ నెట్‌వర్క్ చేత ధ
#: ../js/ui/networkAgent.js:330
#, c-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"'%s'."
"Passwords or encryption keys are required to access the wireless network '%"
"s'."
msgstr "వైర్‌లెస్ నెట్‌వర్కు '%s' యాక్సెస్ చేయుటకు సంకేతపదాలు లేదా ఎన్క్రిప్షన్ కీలు అవసరం."
#: ../js/ui/networkAgent.js:334
@ -851,17 +842,17 @@ msgstr "అనువర్తనాలు"
msgid "Dash"
msgstr "డాష్"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "నిష్క్రమించు"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "కార్యకలాపాలు"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "పైన పట్టీ"
@ -915,11 +906,11 @@ msgstr "టోగిల్-స్విచ్-అజ్"
msgid "Please enter a command:"
msgstr "దయచేసి ఒక ఆదేశమును ప్రవేశపెట్టండి:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "వెతుకుతోంది..."
msgstr "అన్వేషిస్తోంది..."
#: ../js/ui/searchDisplay.js:414
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "సరిపోలిన ఫలితాలు లేవు."
@ -1036,7 +1027,7 @@ msgstr "ఫైళ్ళను పంపు..."
#: ../js/ui/status/bluetooth.js:250
msgid "Browse Files..."
msgstr "ఫైళ్ళను విహరించు..."
msgstr "ఫైళ్ళను అన్వేషించు..."
#: ../js/ui/status/bluetooth.js:259
msgid "Error browsing device"
@ -1642,14 +1633,14 @@ msgstr "నిష్క్రమించు..."
#: ../js/ui/userMenu.js:688
msgid "Your chat status will be set to busy"
msgstr "మీ చాట్ స్థితి రద్దీగా ఉన్నారని అమర్చును"
msgstr "మీ చాట్ అమరిక వత్తిడిలో వున్నారని వుంచబడును"
#: ../js/ui/userMenu.js:689
msgid ""
"Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages."
msgstr ""
"ప్రకటలను ప్పుడు అచేతనం చేయబడెను, చాట్ సందేశములతో సహా. మీరు తరుల సందేశాలను "
"ప్రకటలను యిప్పుడు అచేతనం చేయబడెను, చాట్ సందేశములతో సహా. మీరు యితరుల సందేశాలను "
"చూసివుండకపోవుచ్చునని వారికి తెలియునట్లు మీ ఆన్‌లైన్ స్థితి అమర్చబడెను."
#. Translators: this is the text displayed
@ -1658,11 +1649,11 @@ msgstr ""
#. characters.
#: ../js/ui/viewSelector.js:113
msgid "Type to search..."
msgstr "వెతకుటకు టైపు చేయండి..."
msgstr "అన్వేషించుటకు టైపు చేయండి..."
#: ../js/ui/viewSelector.js:131 ../src/shell-util.c:252
msgid "Search"
msgstr "వెతుకు"
msgstr "అన్వేషించు"
#: ../js/ui/wanda.js:124
#, c-format
@ -1694,7 +1685,7 @@ msgstr "'%s' సిద్ధంగా ఉంది"
msgid "%u Output"
msgid_plural "%u Outputs"
msgstr[0] "%u అవుట్‌పుట్"
msgstr[1] "%u అవుట్‌పుట్లు"
msgstr[1] "%u అవుట్‌పుట్లు"
#. translators:
#. * The number of sound inputs on a particular device
@ -1703,7 +1694,7 @@ msgstr[1] "%u అవుట్‌పుట్‌లు"
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u ఇన్‌పుట్"
msgstr[1] "%u ఇన్‌పుట్లు"
msgstr[1] "%u ఇన్‌పుట్లు"
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
@ -1724,11 +1715,11 @@ msgstr "'%s' ప్రారంభించుటలో విఫలమైంద
#: ../src/shell-keyring-prompt.c:708
msgid "Passwords do not match."
msgstr "సంకేతపదాలు సరిపోలడంలేదు."
msgstr "రహస్య పదములు సరిపోలడం లేదు"
#: ../src/shell-keyring-prompt.c:716
msgid "Password cannot be blank"
msgstr "సంకేతపదము ఖాళీగా ఉండకూడదు"
msgstr "రహస్య పదము ఖాళీగా ఉండకూడదు."
#: ../src/shell-mobile-providers.c:80
msgid "United Kingdom"

View File

@ -17,8 +17,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: 2012-04-13 19:40+0000\n"
"PO-Revision-Date: 2012-04-14 21:00+0800\n"
"POT-Creation-Date: 2012-03-19 14:09+0000\n"
"PO-Revision-Date: 2012-03-20 17:20+0000\n"
"Last-Translator: Aron Xu <happyaron.xu@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@ -131,52 +131,44 @@ msgid "If true, display the ISO week date in the calendar."
msgstr "如果为真,在日历中显示 ISO 周日期。"
#: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Keybinding to open the application menu"
msgstr "用于打开应用程序菜单的按键组合"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Keybinding to open the application menu."
msgstr "用于打开应用程序菜单的按键组合。"
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Which keyboard to use"
msgstr "使用哪个键盘"
#: ../data/org.gnome.shell.gschema.xml.in.h:19
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The type of keyboard to use."
msgstr "要使用的键盘类型。"
#: ../data/org.gnome.shell.gschema.xml.in.h:20
#: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "Show time with seconds"
msgstr "显示秒"
#: ../data/org.gnome.shell.gschema.xml.in.h:21
#: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "If true, display seconds in time."
msgstr "如果为真,在时间上显示秒数。"
#: ../data/org.gnome.shell.gschema.xml.in.h:22
#: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "Show date in clock"
msgstr "显示日期"
#: ../data/org.gnome.shell.gschema.xml.in.h:23
#: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "If true, display date in the clock, in addition to time."
msgstr "如果为真,在时钟中显示日期以及时间。"
#: ../data/org.gnome.shell.gschema.xml.in.h:24
#: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "Framerate used for recording screencasts."
msgstr "屏幕录像的帧率。"
#: ../data/org.gnome.shell.gschema.xml.in.h:25
#: ../data/org.gnome.shell.gschema.xml.in.h:23
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:26
#: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "用于编码屏幕录像的 GStreamer 管道"
#: ../data/org.gnome.shell.gschema.xml.in.h:28
#: ../data/org.gnome.shell.gschema.xml.in.h:26
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -198,11 +190,11 @@ msgstr ""
"quality=8 speed=6 threads=%T ! queue ! webmmux”并输出为 VP8 编码的 WebM 格"
"式。这里的 %T 是一个占位符,其实际值是根据您系统的情况估计的线程数。"
#: ../data/org.gnome.shell.gschema.xml.in.h:29
#: ../data/org.gnome.shell.gschema.xml.in.h:27
msgid "File extension used for storing the screencast"
msgstr "存储屏幕录像的文件扩展名"
#: ../data/org.gnome.shell.gschema.xml.in.h:30
#: ../data/org.gnome.shell.gschema.xml.in.h:28
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 "
@ -224,40 +216,40 @@ msgstr "<b>扩展</b>"
msgid "Select an extension to configure using the combobox above."
msgstr "使用上面的下拉框选择一个要配置的扩展。"
#: ../js/gdm/loginDialog.js:627
#: ../js/gdm/loginDialog.js:624
msgid "Session..."
msgstr "会话..."
#: ../js/gdm/loginDialog.js:789
#: ../js/gdm/loginDialog.js:786
msgctxt "title"
msgid "Sign In"
msgstr "登录"
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:834
#: ../js/gdm/loginDialog.js:831
msgid "(or swipe finger)"
msgstr "(或滑动手指)"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:855
#: ../js/gdm/loginDialog.js:852
msgid "Not listed?"
msgstr "未列出?"
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
msgid "Cancel"
msgstr "取消"
#: ../js/gdm/loginDialog.js:1028
#: ../js/gdm/loginDialog.js:1025
msgctxt "button"
msgid "Sign In"
msgstr "登录"
#: ../js/gdm/loginDialog.js:1380
#: ../js/gdm/loginDialog.js:1377
msgid "Login Window"
msgstr "登录窗口"
@ -651,11 +643,11 @@ msgstr[0] "系统将在 %d 秒后自动重启。"
msgid "Restarting the system."
msgstr "重启系统。"
#: ../js/ui/extensionSystem.js:404
#: ../js/ui/extensionSystem.js:403
msgid "Install"
msgstr "安装"
#: ../js/ui/extensionSystem.js:408
#: ../js/ui/extensionSystem.js:407
#, c-format
msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "从 extensions.gnome.org 下载并安装 %s"
@ -664,8 +656,7 @@ msgstr "从 extensions.gnome.org 下载并安装 %s"
msgid "tray"
msgstr "托盘"
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
#: ../js/ui/status/power.js:203
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
msgid "Keyboard"
msgstr "键盘"
@ -677,51 +668,51 @@ msgstr "密码:"
msgid "Type again:"
msgstr "再输一次:"
#: ../js/ui/lookingGlass.js:732
#: ../js/ui/lookingGlass.js:725
msgid "No extensions installed"
msgstr "未安装扩展"
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:786
#: ../js/ui/lookingGlass.js:779
#, c-format
msgid "%s has not emitted any errors."
msgstr "%s 没有传出任何错误信息。"
#: ../js/ui/lookingGlass.js:792
#: ../js/ui/lookingGlass.js:785
msgid "Hide Errors"
msgstr "隐藏错误"
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
msgid "Show Errors"
msgstr "显示错误"
#: ../js/ui/lookingGlass.js:805
#: ../js/ui/lookingGlass.js:798
msgid "Enabled"
msgstr "已启用"
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled"
msgstr "已禁用"
#: ../js/ui/lookingGlass.js:810
#: ../js/ui/lookingGlass.js:803
msgid "Error"
msgstr "错误"
#: ../js/ui/lookingGlass.js:812
#: ../js/ui/lookingGlass.js:805
msgid "Out of date"
msgstr "过时"
#: ../js/ui/lookingGlass.js:814
#: ../js/ui/lookingGlass.js:807
msgid "Downloading"
msgstr "正在下载"
#: ../js/ui/lookingGlass.js:835
#: ../js/ui/lookingGlass.js:828
msgid "View Source"
msgstr "查看源"
#: ../js/ui/lookingGlass.js:841
#: ../js/ui/lookingGlass.js:834
msgid "Web Page"
msgstr "网页"
@ -848,17 +839,17 @@ msgstr "应用程序"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/panel.js:592
#: ../js/ui/panel.js:591
msgid "Quit"
msgstr "退出"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:624
#: ../js/ui/panel.js:623
msgid "Activities"
msgstr "活动"
#: ../js/ui/panel.js:999
#: ../js/ui/panel.js:998
msgid "Top Bar"
msgstr "顶栏"
@ -912,11 +903,11 @@ msgstr "toggle-switch-intl"
msgid "Please enter a command:"
msgstr "请输入一个命令:"
#: ../js/ui/searchDisplay.js:332
#: ../js/ui/searchDisplay.js:331
msgid "Searching..."
msgstr "正在搜索..."
#: ../js/ui/searchDisplay.js:415
#: ../js/ui/searchDisplay.js:413
msgid "No matching results."
msgstr "无匹配结果。"
@ -1679,7 +1670,7 @@ msgstr "%s 已就绪"
#. translators:
#. * The number of sound outputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1089
#: ../src/gvc/gvc-mixer-control.c:1100
#, c-format
msgid "%u Output"
msgid_plural "%u Outputs"
@ -1687,13 +1678,13 @@ msgstr[0] "%u 个输出"
#. translators:
#. * The number of sound inputs on a particular device
#: ../src/gvc/gvc-mixer-control.c:1099
#: ../src/gvc/gvc-mixer-control.c:1110
#, c-format
msgid "%u Input"
msgid_plural "%u Inputs"
msgstr[0] "%u 个输入"
#: ../src/gvc/gvc-mixer-control.c:1397
#: ../src/gvc/gvc-mixer-control.c:1408
msgid "System Sounds"
msgstr "系统声音"

View File

@ -27,10 +27,8 @@ CLEANFILES += $(service_DATA)
CLEANFILES += $(gir_DATA) $(typelib_DATA)
bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-extension-prefs \
gnome-shell-perf-tool
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-extension-prefs.in \
gnome-shell-perf-tool.in
bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-extension-prefs
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-extension-prefs.in
bin_PROGRAMS = gnome-shell-real
if USE_JHBUILD_WRAPPER_SCRIPT
@ -55,6 +53,7 @@ generated_script_substitutions = \
-e "s|@libexecdir[@]|$(libexecdir)|g" \
-e "s|@libdir[@]|$(libdir)|g" \
-e "s|@pkglibdir[@]|$(pkglibdir)|g" \
-e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|g" \
-e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \
-e "s|@PYTHON[@]|$(PYTHON)|g" \
-e "s|@VERSION[@]|$(VERSION)|g" \
@ -72,9 +71,6 @@ gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
gnome-shell-extension-prefs: gnome-shell-extension-prefs.in Makefile
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
gnome-shell-perf-tool: gnome-shell-perf-tool.in Makefile
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
CLEANFILES += gnome-shell $(bin_SCRIPTS)
include Makefile-st.am
@ -93,8 +89,7 @@ gnome_shell_cflags = \
-DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \
-DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \
-DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \
-DJSDIR=\"$(pkgdatadir)/js\" \
-DMUTTER_TYPELIB_DIR=\"$(MUTTER_TYPELIB_DIR)\"
-DJSDIR=\"$(pkgdatadir)/js\"
privlibdir = $(pkglibdir)
privlib_LTLIBRARIES = libgnome-shell.la libgnome-shell-js.la
@ -115,7 +110,6 @@ shell_public_headers_h = \
shell-gtk-embed.h \
shell-global.h \
shell-idle-monitor.h \
shell-invert-lightness-effect.h \
shell-mobile-providers.h \
shell-mount-operation.h \
shell-network-agent.h \
@ -163,7 +157,6 @@ libgnome_shell_la_SOURCES = \
shell-gtk-embed.c \
shell-global.c \
shell-idle-monitor.c \
shell-invert-lightness-effect.c \
shell-keyring-prompt.h \
shell-keyring-prompt.c \
shell-mobile-providers.c \
@ -194,7 +187,7 @@ libgnome_shell_la_gir_sources = \
gnome_shell_real_SOURCES = \
main.c
gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags)
gnome_shell_real_LDADD = libgnome-shell.la libgnome-shell-js.la $(libgnome_shell_la_LIBADD)
gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD)
gnome_shell_real_DEPENDENCIES = libgnome-shell.la
EXTRA_DIST += test-gapplication.js

View File

@ -50,14 +50,11 @@
#define CALENDAR_SOURCES_EVO_DIR "/apps/evolution"
#define CALENDAR_SOURCES_APPOINTMENT_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/calendar/sources"
#define CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_DIR CALENDAR_SOURCES_EVO_DIR "/calendar/display"
#define CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_KEY CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_DIR "/selected_calendars"
#define CALENDAR_SOURCES_TASK_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/tasks/sources"
/* org.gnome.shell.evolution.calendar has the same data behind it
* as org.gnome.evolution.calendar, but is a small schema we install
* ourselves */
#define CALENDAR_SELECTED_SOURCES_SCHEMA "org.gnome.shell.evolution.calendar"
#define CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_KEY "selected-calendars"
#define CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY "selected-tasks"
#define CALENDAR_SOURCES_SELECTED_TASK_SOURCES_DIR CALENDAR_SOURCES_EVO_DIR "/calendar/tasks"
#define CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY CALENDAR_SOURCES_SELECTED_TASK_SOURCES_DIR "/selected_tasks"
typedef struct _CalendarSourceData CalendarSourceData;
@ -68,10 +65,11 @@ struct _CalendarSourceData
guint changed_signal;
GSList *clients;
char **selected_sources;
GSList *selected_sources;
ESourceList *esource_list;
guint selected_sources_handler_id;
guint selected_sources_listener;
char *selected_sources_dir;
guint timeout_id;
@ -84,7 +82,6 @@ struct _CalendarSourcesPrivate
CalendarSourceData task_sources;
GConfClient *gconf_client;
GSettings *settings;
};
static void calendar_sources_class_init (CalendarSourcesClass *klass);
@ -186,7 +183,6 @@ calendar_sources_init (CalendarSources *sources)
sources->priv->task_sources.timeout_id = 0;
sources->priv->gconf_client = gconf_client_get_default ();
sources->priv->settings = g_settings_new (CALENDAR_SELECTED_SOURCES_SCHEMA);
}
static void
@ -197,11 +193,21 @@ calendar_sources_finalize_source_data (CalendarSources *sources,
{
GSList *l;
if (source_data->selected_sources_handler_id)
if (source_data->selected_sources_dir)
{
g_signal_handler_disconnect (sources->priv->settings,
source_data->selected_sources_handler_id);
source_data->selected_sources_handler_id = 0;
gconf_client_remove_dir (sources->priv->gconf_client,
source_data->selected_sources_dir,
NULL);
g_free (source_data->selected_sources_dir);
source_data->selected_sources_dir = NULL;
}
if (source_data->selected_sources_listener)
{
gconf_client_notify_remove (sources->priv->gconf_client,
source_data->selected_sources_listener);
source_data->selected_sources_listener = 0;
}
for (l = source_data->clients; l; l = l->next)
@ -223,7 +229,9 @@ calendar_sources_finalize_source_data (CalendarSources *sources,
}
source_data->esource_list = NULL;
g_strfreev (source_data->selected_sources);
for (l = source_data->selected_sources; l; l = l->next)
g_free (l->data);
g_slist_free (source_data->selected_sources);
source_data->selected_sources = NULL;
if (source_data->timeout_id != 0)
@ -248,10 +256,6 @@ calendar_sources_finalize (GObject *object)
g_object_unref (sources->priv->gconf_client);
sources->priv->gconf_client = NULL;
if (sources->priv->settings)
g_object_unref (sources->priv->settings);
sources->priv->settings = NULL;
if (G_OBJECT_CLASS (parent_class)->finalize)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@ -273,16 +277,18 @@ calendar_sources_get (void)
static gboolean
is_source_selected (ESource *esource,
char **selected_sources)
GSList *selected_sources)
{
const char *uid;
char **source;
GSList *l;
uid = e_source_peek_uid (esource);
for (source = selected_sources; *source; source++)
for (l = selected_sources; l; l = l->next)
{
if (!strcmp (*source, uid))
const char *source = l->data;
if (!strcmp (source, uid))
return TRUE;
}
@ -355,15 +361,17 @@ compare_ecal_lists (GSList *a,
}
static inline void
debug_dump_selected_sources (char **selected_sources)
debug_dump_selected_sources (GSList *selected_sources)
{
#ifdef CALENDAR_ENABLE_DEBUG
char **source;
GSList *l;
dprintf ("Selected sources:\n");
for (source = selected_sources; *source; source++)
for (l = selected_sources; l; l = l->next)
{
dprintf (" %s\n", *source);
char *source = l->data;
dprintf (" %s\n", source);
}
dprintf ("\n");
#endif
@ -455,7 +463,7 @@ calendar_sources_load_esource_list (CalendarSourceData *source_data)
ECalClient *client;
dprintf (" type = '%s' uid = '%s', name = '%s', relative uri = '%s': \n",
source_data->source_type == E_CAL_CLIENT_SOURCE_TYPE_EVENTS ? "appointment" : "task",
source_data->source_type == E_CAL_SOURCE_TYPE_EVENT ? "appointment" : "task",
e_source_peek_uid (esource),
e_source_peek_name (esource),
e_source_peek_relative_uri (esource));
@ -496,7 +504,7 @@ calendar_sources_load_esource_list (CalendarSourceData *source_data)
if (emit_signal)
{
dprintf ("Emitting %s-sources-changed signal\n",
source_data->source_type == E_CAL_CLIENT_SOURCE_TYPE_EVENTS ? "appointment" : "task");
source_data->source_type == E_CAL_SOURCE_TYPE_EVENT ? "appointment" : "task");
g_signal_emit (source_data->sources, source_data->changed_signal, 0);
}
@ -514,14 +522,34 @@ calendar_sources_esource_list_changed (ESourceList *source_list,
}
static void
calendar_sources_selected_sources_notify (GSettings *settings,
const gchar *key,
calendar_sources_selected_sources_notify (GConfClient *client,
guint cnx_id,
GConfEntry *entry,
CalendarSourceData *source_data)
{
dprintf ("Selected sources key (%s) changed, reloading\n", key);
GSList *l;
g_strfreev (source_data->selected_sources);
source_data->selected_sources = g_settings_get_strv (settings, key);
if (!entry->value ||
entry->value->type != GCONF_VALUE_LIST ||
gconf_value_get_list_type (entry->value) != GCONF_VALUE_STRING)
return;
dprintf ("Selected sources key (%s) changed, reloading\n", entry->key);
for (l = source_data->selected_sources; l; l = l->next)
g_free (l->data);
source_data->selected_sources = NULL;
for (l = gconf_value_get_list (entry->value); l; l = l->next)
{
const char *source = gconf_value_get_string (l->data);
source_data->selected_sources =
g_slist_prepend (source_data->selected_sources,
g_strdup (source));
}
source_data->selected_sources =
g_slist_reverse (source_data->selected_sources);
calendar_sources_load_esource_list (source_data);
}
@ -530,27 +558,45 @@ static void
calendar_sources_load_sources (CalendarSources *sources,
CalendarSourceData *source_data,
const char *sources_key,
const char *selected_sources_key)
const char *selected_sources_key,
const char *selected_sources_dir)
{
GConfClient *gconf_client;
GSettings *settings;
char *signal_name;
GError *error;
dprintf ("---------------------------\n");
dprintf ("Loading sources:\n");
dprintf (" sources_key: %s\n", sources_key);
dprintf (" selected_sources_key: %s\n", selected_sources_key);
dprintf (" selected_sources_dir: %s\n", selected_sources_dir);
gconf_client = sources->priv->gconf_client;
settings = sources->priv->settings;
source_data->selected_sources = g_settings_get_strv (settings, selected_sources_key);
error = NULL;
source_data->selected_sources = gconf_client_get_list (gconf_client,
selected_sources_key,
GCONF_VALUE_STRING,
&error);
if (error)
{
g_warning ("Failed to get selected sources from '%s': %s\n",
selected_sources_key,
error->message);
g_error_free (error);
return;
}
signal_name = g_strconcat ("changed::", selected_sources_key, NULL);
source_data->selected_sources_handler_id =
g_signal_connect (settings, signal_name,
G_CALLBACK (calendar_sources_selected_sources_notify), source_data);
g_free (signal_name);
gconf_client_add_dir (gconf_client,
selected_sources_dir,
GCONF_CLIENT_PRELOAD_NONE,
NULL);
source_data->selected_sources_dir = g_strdup (selected_sources_dir);
source_data->selected_sources_listener =
gconf_client_notify_add (gconf_client,
selected_sources_dir,
(GConfClientNotifyFunc) calendar_sources_selected_sources_notify,
source_data, NULL, NULL);
source_data->esource_list = e_source_list_new_for_gconf (gconf_client, sources_key);
g_signal_connect (source_data->esource_list, "changed",
@ -574,7 +620,8 @@ calendar_sources_get_appointment_sources (CalendarSources *sources)
calendar_sources_load_sources (sources,
&sources->priv->appointment_sources,
CALENDAR_SOURCES_APPOINTMENT_SOURCES_KEY,
CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_KEY);
CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_KEY,
CALENDAR_SOURCES_SELECTED_APPOINTMENT_SOURCES_DIR);
}
return sources->priv->appointment_sources.clients;
@ -590,7 +637,8 @@ calendar_sources_get_task_sources (CalendarSources *sources)
calendar_sources_load_sources (sources,
&sources->priv->task_sources,
CALENDAR_SOURCES_TASK_SOURCES_KEY,
CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY);
CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY,
CALENDAR_SOURCES_SELECTED_TASK_SOURCES_DIR);
}
return sources->priv->task_sources.clients;

View File

@ -34,7 +34,6 @@
#include <unistd.h>
#include <gio/gio.h>
#include <gtk/gtk.h>
#define HANDLE_LIBICAL_MEMORY
#include <libecal/e-cal-client.h>
@ -71,6 +70,7 @@ static GDBusNodeInfo *introspection_data = NULL;
struct _App;
typedef struct _App App;
static GMainLoop *loop = NULL;
static gboolean opt_replace = FALSE;
static GOptionEntry opt_entries[] = {
{"replace", 0, 0, G_OPTION_ARG_NONE, &opt_replace, "Replace existing daemon", NULL},
@ -970,7 +970,7 @@ on_name_lost (GDBusConnection *connection,
{
g_print ("gnome-shell-calendar-server[%d]: Lost (or failed to acquire) the name " BUS_NAME " - exiting\n",
(gint) getpid ());
gtk_main_quit ();
g_main_loop_quit (loop);
}
static void
@ -990,7 +990,7 @@ stdin_channel_io_func (GIOChannel *source,
{
g_debug ("gnome-shell-calendar-server[%d]: Got HUP on stdin - exiting\n",
(gint) getpid ());
gtk_main_quit ();
g_main_loop_quit (loop);
}
else
{
@ -1010,13 +1010,12 @@ main (int argc,
GIOChannel *stdin_channel;
ret = 1;
loop = NULL;
opt_context = NULL;
name_owner_id = 0;
stdin_channel = NULL;
/* We need to initialize GTK+ since evolution-data-server may decide to use
* GTK+ to pop up a dialog box */
gtk_init (&argc, &argv);
g_type_init ();
introspection_data = g_dbus_node_info_new_for_xml (introspection_xml, NULL);
g_assert (introspection_data != NULL);
@ -1037,6 +1036,8 @@ main (int argc,
stdin_channel_io_func,
NULL);
loop = g_main_loop_new (NULL, FALSE);
name_owner_id = g_bus_own_name (G_BUS_TYPE_SESSION,
BUS_NAME,
G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT |
@ -1047,7 +1048,7 @@ main (int argc,
NULL,
NULL);
gtk_main ();
g_main_loop_run (loop);
ret = 0;
@ -1058,6 +1059,8 @@ main (int argc,
app_free (_global_app);
if (name_owner_id != 0)
g_bus_unown_name (name_owner_id);
if (loop != NULL)
g_main_loop_unref (loop);
if (opt_context != NULL)
g_option_context_free (opt_context);
return ret;

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