Compare commits
82 Commits
3.4.2
...
wip/screen
Author | SHA1 | Date | |
---|---|---|---|
352ad8f558 | |||
d5dc886748 | |||
17044adf96 | |||
9dfd805be2 | |||
bbbb6b685f | |||
71c0d5f82d | |||
48d6eb168f | |||
6190d6c962 | |||
76616dc98c | |||
82c2f5221d | |||
a3bbb7be14 | |||
9e1a2cfeac | |||
c6fabe504a | |||
61a17d7fab | |||
865cfa5211 | |||
e2b857adae | |||
f3924ccd91 | |||
86e3e59530 | |||
02e4726ba6 | |||
66e470e073 | |||
afaa5c24d6 | |||
518282e169 | |||
d955adbbad | |||
83d3225e57 | |||
6fa45975bf | |||
e6087efb40 | |||
4ce2f80a2f | |||
0862d1c804 | |||
333e380340 | |||
58f77a19ed | |||
f2d883dab2 | |||
7ba8c7c2b5 | |||
0bf6c93faa | |||
b9f0158278 | |||
25ee41f344 | |||
5436634829 | |||
915524e1ab | |||
d579cd1605 | |||
cb5941ec55 | |||
a5ac183d86 | |||
a36de92bb9 | |||
01f9d551f1 | |||
399df66b18 | |||
723a1c843a | |||
e333263fd6 | |||
507df9eea1 | |||
a9a3687ea0 | |||
f05c649c61 | |||
a2dfba1842 | |||
c199da4dfa | |||
ee9033e12f | |||
54788d750e | |||
78e894c6f2 | |||
32107ba8b5 | |||
6122f65e7a | |||
43fd29f9bf | |||
54c624b356 | |||
8c33adfd29 | |||
2e8881b77c | |||
64aa729edd | |||
ccf95b738d | |||
b2847fedd3 | |||
8befcb9bba | |||
988fc52303 | |||
7293ddb22c | |||
f23c118e81 | |||
f68b3be35a | |||
3d95e7bb11 | |||
337c484f01 | |||
5d98e2bf04 | |||
6f300d0cc6 | |||
3422e1dca7 | |||
963c6ae567 | |||
6304169926 | |||
221afde55e | |||
0ae87270ad | |||
9d33baec70 | |||
0f37b22cdb | |||
47afd87e84 | |||
700c06023e | |||
4fea5b5ca3 | |||
521bddc1cc |
3
.gitignore
vendored
3
.gitignore
vendored
@ -23,6 +23,8 @@ data/gnome-shell-extension-prefs.desktop.in
|
|||||||
data/gschemas.compiled
|
data/gschemas.compiled
|
||||||
data/org.gnome.shell.gschema.xml
|
data/org.gnome.shell.gschema.xml
|
||||||
data/org.gnome.shell.gschema.valid
|
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/*/*.args
|
||||||
docs/reference/*/*.bak
|
docs/reference/*/*.bak
|
||||||
docs/reference/*/*.hierarchy
|
docs/reference/*/*.hierarchy
|
||||||
@ -68,6 +70,7 @@ src/gnome-shell-extension-prefs
|
|||||||
src/gnome-shell-hotplug-sniffer
|
src/gnome-shell-hotplug-sniffer
|
||||||
src/gnome-shell-jhbuild
|
src/gnome-shell-jhbuild
|
||||||
src/gnome-shell-perf-helper
|
src/gnome-shell-perf-helper
|
||||||
|
src/gnome-shell-perf-tool
|
||||||
src/gnome-shell-real
|
src/gnome-shell-real
|
||||||
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
|
||||||
src/run-js-test
|
src/run-js-test
|
||||||
|
@ -108,8 +108,6 @@ AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're li
|
|||||||
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
AC_SUBST([GJS_VERSION], ["$GJS_VERSION"])
|
||||||
|
|
||||||
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION])
|
||||||
JHBUILD_TYPELIBDIR="$INTROSPECTION_TYPELIBDIR"
|
|
||||||
AC_SUBST(JHBUILD_TYPELIBDIR)
|
|
||||||
|
|
||||||
saved_CFLAGS=$CFLAGS
|
saved_CFLAGS=$CFLAGS
|
||||||
saved_LIBS=$LIBS
|
saved_LIBS=$LIBS
|
||||||
|
@ -53,7 +53,7 @@ dist_theme_DATA = \
|
|||||||
theme/ws-switch-arrow-up.svg \
|
theme/ws-switch-arrow-up.svg \
|
||||||
theme/ws-switch-arrow-down.svg
|
theme/ws-switch-arrow-down.svg
|
||||||
|
|
||||||
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
|
gsettings_SCHEMAS = org.gnome.shell.gschema.xml org.gnome.shell.evolution.calendar.gschema.xml
|
||||||
|
|
||||||
@INTLTOOL_XML_NOMERGE_RULE@
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
@GSETTINGS_RULES@
|
@GSETTINGS_RULES@
|
||||||
@ -80,6 +80,7 @@ EXTRA_DIST = \
|
|||||||
$(menu_DATA) \
|
$(menu_DATA) \
|
||||||
$(shaders_DATA) \
|
$(shaders_DATA) \
|
||||||
$(convert_DATA) \
|
$(convert_DATA) \
|
||||||
|
org.gnome.shell.evolution.calendar.gschema.xml.in \
|
||||||
org.gnome.shell.gschema.xml.in
|
org.gnome.shell.gschema.xml.in
|
||||||
|
|
||||||
CLEANFILES = \
|
CLEANFILES = \
|
||||||
|
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?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>
|
@ -88,6 +88,13 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
|||||||
Keybinding to open the application menu.
|
Keybinding to open the application menu.
|
||||||
</_description>
|
</_description>
|
||||||
</key>
|
</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>
|
||||||
|
|
||||||
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
||||||
|
@ -328,6 +328,11 @@ StScrollBar StButton#vhandle:hover
|
|||||||
background-gradient-end: rgba(255, 255, 255, 0.2);
|
background-gradient-end: rgba(255, 255, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.notification-icon-button:insensitive,
|
||||||
|
.notification-button:insensitive {
|
||||||
|
color: #9f9f9f;
|
||||||
|
}
|
||||||
|
|
||||||
/* Panel */
|
/* Panel */
|
||||||
|
|
||||||
#panel {
|
#panel {
|
||||||
@ -357,7 +362,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.panel-corner {
|
.panel-corner {
|
||||||
-panel-corner-radius: 10px;
|
-panel-corner-radius: 6px;
|
||||||
-panel-corner-background-color: black;
|
-panel-corner-background-color: black;
|
||||||
-panel-corner-border-width: 2px;
|
-panel-corner-border-width: 2px;
|
||||||
-panel-corner-border-color: transparent;
|
-panel-corner-border-color: transparent;
|
||||||
@ -409,7 +414,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
.panel-button:active,
|
.panel-button:active,
|
||||||
.panel-button:overview,
|
.panel-button:overview,
|
||||||
.panel-button:focus {
|
.panel-button:focus {
|
||||||
border-image: url("panel-button-border.svg") 10 10 0 2;
|
border-image: url("panel-button-border.svg") 6 10 0 2;
|
||||||
background-image: url("panel-button-highlight-wide.svg");
|
background-image: url("panel-button-highlight-wide.svg");
|
||||||
color: white;
|
color: white;
|
||||||
text-shadow: black 0px 2px 2px;
|
text-shadow: black 0px 2px 2px;
|
||||||
@ -1203,7 +1208,8 @@ StScrollBar StButton#vhandle:hover
|
|||||||
height: 36px;
|
height: 36px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification {
|
.notification {
|
||||||
|
font-size: 11pt;
|
||||||
border-radius: 10px 10px 0px 0px;
|
border-radius: 10px 10px 0px 0px;
|
||||||
background: rgba(0,0,0,0.8);
|
background: rgba(0,0,0,0.8);
|
||||||
padding: 8px 8px 4px 8px;
|
padding: 8px 8px 4px 8px;
|
||||||
@ -1212,7 +1218,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
width: 34em;
|
width: 34em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification.multi-line-notification {
|
.notification.multi-line-notification {
|
||||||
padding-bottom: 8px;
|
padding-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1234,7 +1240,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.summary-boxpointer #notification {
|
.summary-boxpointer .notification {
|
||||||
border-radius: 9px;
|
border-radius: 9px;
|
||||||
background: rgba(0,0,0,0) !important;
|
background: rgba(0,0,0,0) !important;
|
||||||
padding-bottom: 12px;
|
padding-bottom: 12px;
|
||||||
@ -1251,10 +1257,6 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-bottom: 6px;
|
padding-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#summary-notification-stack-scrollview > .top-shadow, #summary-notification-stack-scrollview > .bottom-shadow {
|
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#summary-notification-stack-scrollview:ltr {
|
#summary-notification-stack-scrollview:ltr {
|
||||||
padding-right: 8px;
|
padding-right: 8px;
|
||||||
}
|
}
|
||||||
@ -1263,28 +1265,24 @@ StScrollBar StButton#vhandle:hover
|
|||||||
padding-left: 8px;
|
padding-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview {
|
.notification-scrollview {
|
||||||
max-height: 10em;
|
max-height: 10em;
|
||||||
-st-vfade-offset: 24px;
|
-st-vfade-offset: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview > .top-shadow, #notification-scrollview > .bottom-shadow {
|
.notification-scrollview:ltr > StScrollBar {
|
||||||
height: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#notification-scrollview:ltr > StScrollBar {
|
|
||||||
padding-left: 6px;
|
padding-left: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-scrollview:rtl > StScrollBar {
|
.notification-scrollview:rtl > StScrollBar {
|
||||||
padding-right: 6px;
|
padding-right: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-body {
|
.notification-body {
|
||||||
spacing: 5px;
|
spacing: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification-actions {
|
.notification-actions {
|
||||||
spacing: 10px;
|
spacing: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1411,7 +1409,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
font-style: italic;
|
font-style: italic;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification StEntry {
|
.notification StEntry {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
color: #a8a8a8;
|
color: #a8a8a8;
|
||||||
@ -1427,7 +1425,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
caret-size: 1px;
|
caret-size: 1px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#notification StEntry:focus {
|
.notification StEntry:focus {
|
||||||
border: 1px solid #8b8b8b;
|
border: 1px solid #8b8b8b;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
background-gradient-direction: vertical;
|
background-gradient-direction: vertical;
|
||||||
@ -1717,7 +1715,7 @@ StScrollBar StButton#vhandle:hover
|
|||||||
}
|
}
|
||||||
|
|
||||||
.lightbox {
|
.lightbox {
|
||||||
background-color: rgba(0, 0, 0, 0.4);
|
background-color: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.flashspot {
|
.flashspot {
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
width="21"
|
width="17"
|
||||||
height="10"
|
height="10"
|
||||||
id="svg2"
|
id="svg2"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
@ -66,9 +66,9 @@
|
|||||||
<rect
|
<rect
|
||||||
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
|
style="opacity:0.8;fill:#ffffff;fill-opacity:1;stroke-width:0.43599999;stroke-miterlimit:4;stroke-dasharray:none"
|
||||||
id="rect3796"
|
id="rect3796"
|
||||||
width="3"
|
width="7"
|
||||||
height="2"
|
height="2"
|
||||||
x="9"
|
x="5"
|
||||||
y="8" />
|
y="8" />
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@ -78,6 +78,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/popupMenu.js \
|
ui/popupMenu.js \
|
||||||
ui/remoteSearch.js \
|
ui/remoteSearch.js \
|
||||||
ui/runDialog.js \
|
ui/runDialog.js \
|
||||||
|
ui/screenShield.js \
|
||||||
ui/scripting.js \
|
ui/scripting.js \
|
||||||
ui/search.js \
|
ui/search.js \
|
||||||
ui/searchDisplay.js \
|
ui/searchDisplay.js \
|
||||||
@ -91,6 +92,7 @@ nobase_dist_js_DATA = \
|
|||||||
ui/status/bluetooth.js \
|
ui/status/bluetooth.js \
|
||||||
ui/telepathyClient.js \
|
ui/telepathyClient.js \
|
||||||
ui/tweener.js \
|
ui/tweener.js \
|
||||||
|
ui/unlockDialog.js \
|
||||||
ui/userMenu.js \
|
ui/userMenu.js \
|
||||||
ui/viewSelector.js \
|
ui/viewSelector.js \
|
||||||
ui/wanda.js \
|
ui/wanda.js \
|
||||||
|
@ -11,10 +11,17 @@ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
|
|||||||
</method>
|
</method>
|
||||||
</interface>;
|
</interface>;
|
||||||
|
|
||||||
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
|
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
|
||||||
|
|
||||||
function FprintManager() {
|
function FprintManager() {
|
||||||
return new FprintManagerProxy(Gio.DBus.system,
|
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
|
||||||
'net.reactivated.Fprint',
|
g_interface_name: FprintManagerInfo.name,
|
||||||
'/net/reactivated/Fprint/Manager');
|
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;
|
||||||
|
}
|
||||||
|
@ -39,8 +39,8 @@ const Main = imports.ui.main;
|
|||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const _PASSWORD_SERVICE_NAME = 'gdm-password';
|
const PASSWORD_SERVICE_NAME = 'gdm-password';
|
||||||
const _FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
|
const FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
|
||||||
const _FADE_ANIMATION_TIME = 0.16;
|
const _FADE_ANIMATION_TIME = 0.16;
|
||||||
const _RESIZE_ANIMATION_TIME = 0.25;
|
const _RESIZE_ANIMATION_TIME = 0.25;
|
||||||
const _SCROLL_ANIMATION_TIME = 2.0;
|
const _SCROLL_ANIMATION_TIME = 2.0;
|
||||||
@ -747,15 +747,13 @@ const LoginDialog = new Lang.Class({
|
|||||||
Lang.bind(this, this._onOpened));
|
Lang.bind(this, this._onOpened));
|
||||||
|
|
||||||
this._userManager = AccountsService.UserManager.get_default()
|
this._userManager = AccountsService.UserManager.get_default()
|
||||||
this._greeterClient = new GdmGreeter.Client();
|
this._greeterClient = GdmGreeter.Server.new_for_greeter_sync(null);
|
||||||
|
|
||||||
this._greeterClient.open_connection();
|
this._greeterClient.call_start_conversation_sync(PASSWORD_SERVICE_NAME, null);
|
||||||
|
|
||||||
this._greeterClient.call_start_conversation(_PASSWORD_SERVICE_NAME);
|
|
||||||
|
|
||||||
this._greeterClient.connect('reset',
|
this._greeterClient.connect('reset',
|
||||||
Lang.bind(this, this._onReset));
|
Lang.bind(this, this._onReset));
|
||||||
this._greeterClient.connect('default-session-changed',
|
this._greeterClient.connect('default-session-name-changed',
|
||||||
Lang.bind(this, this._onDefaultSessionChanged));
|
Lang.bind(this, this._onDefaultSessionChanged));
|
||||||
this._greeterClient.connect('info',
|
this._greeterClient.connect('info',
|
||||||
Lang.bind(this, this._onInfo));
|
Lang.bind(this, this._onInfo));
|
||||||
@ -769,8 +767,6 @@ const LoginDialog = new Lang.Class({
|
|||||||
Lang.bind(this, this._onSessionOpened));
|
Lang.bind(this, this._onSessionOpened));
|
||||||
this._greeterClient.connect('timed-login-requested',
|
this._greeterClient.connect('timed-login-requested',
|
||||||
Lang.bind(this, this._onTimedLoginRequested));
|
Lang.bind(this, this._onTimedLoginRequested));
|
||||||
this._greeterClient.connect('authentication-failed',
|
|
||||||
Lang.bind(this, this._onAuthenticationFailed));
|
|
||||||
this._greeterClient.connect('conversation-stopped',
|
this._greeterClient.connect('conversation-stopped',
|
||||||
Lang.bind(this, this._onConversationStopped));
|
Lang.bind(this, this._onConversationStopped));
|
||||||
|
|
||||||
@ -899,7 +895,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._haveFingerprintReader = true;
|
this._haveFingerprintReader = true;
|
||||||
|
|
||||||
if (this._haveFingerprintReader)
|
if (this._haveFingerprintReader)
|
||||||
this._greeterClient.call_start_conversation(_FINGERPRINT_SERVICE_NAME);
|
this._greeterClient.call_start_conversation_sync(FINGERPRINT_SERVICE_NAME, null);
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -918,7 +914,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onReset: function(client, serviceName) {
|
_onReset: function(client, serviceName) {
|
||||||
this._greeterClient.call_start_conversation(_PASSWORD_SERVICE_NAME);
|
this._greeterClient.call_start_conversation_sync(PASSWORD_SERVICE_NAME, null);
|
||||||
this._startFingerprintConversationIfNeeded();
|
this._startFingerprintConversationIfNeeded();
|
||||||
|
|
||||||
let tasks = [this._hidePrompt,
|
let tasks = [this._hidePrompt,
|
||||||
@ -954,7 +950,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
// We don't display fingerprint messages, because they
|
// We don't display fingerprint messages, because they
|
||||||
// have words like UPEK in them. Instead we use the messages
|
// have words like UPEK in them. Instead we use the messages
|
||||||
// as a cue to display our own message.
|
// as a cue to display our own message.
|
||||||
if (serviceName == _FINGERPRINT_SERVICE_NAME &&
|
if (serviceName == FINGERPRINT_SERVICE_NAME &&
|
||||||
this._haveFingerprintReader &&
|
this._haveFingerprintReader &&
|
||||||
(!this._promptFingerprintMessage.visible ||
|
(!this._promptFingerprintMessage.visible ||
|
||||||
this._promptFingerprintMessage.opacity != 255)) {
|
this._promptFingerprintMessage.opacity != 255)) {
|
||||||
@ -963,7 +959,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (serviceName != _PASSWORD_SERVICE_NAME)
|
if (serviceName != PASSWORD_SERVICE_NAME)
|
||||||
return;
|
return;
|
||||||
Main.notifyError(info);
|
Main.notifyError(info);
|
||||||
},
|
},
|
||||||
@ -971,13 +967,13 @@ const LoginDialog = new Lang.Class({
|
|||||||
_onProblem: function(client, serviceName, problem) {
|
_onProblem: function(client, serviceName, problem) {
|
||||||
// we don't want to show auth failed messages to
|
// we don't want to show auth failed messages to
|
||||||
// users who haven't enrolled their fingerprint.
|
// users who haven't enrolled their fingerprint.
|
||||||
if (serviceName != _PASSWORD_SERVICE_NAME)
|
if (serviceName != PASSWORD_SERVICE_NAME)
|
||||||
return;
|
return;
|
||||||
Main.notifyError(problem);
|
Main.notifyError(problem);
|
||||||
},
|
},
|
||||||
|
|
||||||
_onCancel: function(client) {
|
_onCancel: function(client) {
|
||||||
this._greeterClient.call_cancel();
|
this._greeterClient.call_cancel_sync(null);
|
||||||
},
|
},
|
||||||
|
|
||||||
_fadeInPrompt: function() {
|
_fadeInPrompt: function() {
|
||||||
@ -1084,7 +1080,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
let _text = this._promptEntry.get_text();
|
let _text = this._promptEntry.get_text();
|
||||||
this._promptEntry.reactive = false;
|
this._promptEntry.reactive = false;
|
||||||
this._promptEntry.add_style_pseudo_class('insensitive');
|
this._promptEntry.add_style_pseudo_class('insensitive');
|
||||||
this._greeterClient.call_answer_query(serviceName, _text);
|
this._greeterClient.call_answer_query_sync(serviceName, _text, null);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
@ -1092,7 +1088,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
_onInfoQuery: function(client, serviceName, question) {
|
_onInfoQuery: function(client, serviceName, question) {
|
||||||
// We only expect questions to come from the main auth service
|
// We only expect questions to come from the main auth service
|
||||||
if (serviceName != _PASSWORD_SERVICE_NAME)
|
if (serviceName != PASSWORD_SERVICE_NAME)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._promptEntry.set_text('');
|
this._promptEntry.set_text('');
|
||||||
@ -1102,7 +1098,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
_onSecretInfoQuery: function(client, serviceName, secretQuestion) {
|
_onSecretInfoQuery: function(client, serviceName, secretQuestion) {
|
||||||
// We only expect secret requests to come from the main auth service
|
// We only expect secret requests to come from the main auth service
|
||||||
if (serviceName != _PASSWORD_SERVICE_NAME)
|
if (serviceName != PASSWORD_SERVICE_NAME)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._promptEntry.set_text('');
|
this._promptEntry.set_text('');
|
||||||
@ -1111,7 +1107,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_onSessionOpened: function(client, serviceName) {
|
_onSessionOpened: function(client, serviceName) {
|
||||||
this._greeterClient.call_start_session_when_ready(serviceName, true);
|
this._greeterClient.call_start_session_when_ready_sync(serviceName, true, null);
|
||||||
},
|
},
|
||||||
|
|
||||||
_waitForItemForUser: function(userName) {
|
_waitForItemForUser: function(userName) {
|
||||||
@ -1193,7 +1189,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
function() {
|
function() {
|
||||||
this._timedLoginBatch = null;
|
this._timedLoginBatch = null;
|
||||||
this._greeterClient.call_begin_auto_login(userName);
|
this._greeterClient.call_begin_auto_login_sync(userName, null);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
this._timedLoginBatch = new Batch.ConsecutiveBatch(this, tasks);
|
this._timedLoginBatch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
@ -1236,17 +1232,13 @@ const LoginDialog = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_onAuthenticationFailed: function(client) {
|
|
||||||
this._greeterClient.call_cancel();
|
|
||||||
},
|
|
||||||
|
|
||||||
_onConversationStopped: function(client, serviceName) {
|
_onConversationStopped: function(client, serviceName) {
|
||||||
// if the password service fails, then cancel everything.
|
// if the password service fails, then cancel everything.
|
||||||
// But if, e.g., fingerprint fails, still give
|
// But if, e.g., fingerprint fails, still give
|
||||||
// password authentication a chance to succeed
|
// password authentication a chance to succeed
|
||||||
if (serviceName == _PASSWORD_SERVICE_NAME) {
|
if (serviceName == PASSWORD_SERVICE_NAME) {
|
||||||
this._greeterClient.call_cancel();
|
this._greeterClient.call_cancel_sync(null);
|
||||||
} else if (serviceName == _FINGERPRINT_SERVICE_NAME) {
|
} else if (serviceName == FINGERPRINT_SERVICE_NAME) {
|
||||||
_fadeOutActor(this._promptFingerprintMessage);
|
_fadeOutActor(this._promptFingerprintMessage);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -1269,7 +1261,7 @@ const LoginDialog = new Lang.Class({
|
|||||||
this._fadeOutLogo]),
|
this._fadeOutLogo]),
|
||||||
|
|
||||||
function() {
|
function() {
|
||||||
this._greeterClient.call_begin_verification(_PASSWORD_SERVICE_NAME);
|
this._greeterClient.call_begin_verification_sync(PASSWORD_SERVICE_NAME, null);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||||
@ -1328,11 +1320,11 @@ const LoginDialog = new Lang.Class({
|
|||||||
|
|
||||||
function() {
|
function() {
|
||||||
let userName = activatedItem.user.get_user_name();
|
let userName = activatedItem.user.get_user_name();
|
||||||
this._greeterClient.call_begin_verification_for_user(_PASSWORD_SERVICE_NAME,
|
this._greeterClient.call_begin_verification_for_user_sync(PASSWORD_SERVICE_NAME,
|
||||||
userName);
|
userName, null);
|
||||||
|
|
||||||
if (this._haveFingerprintReader)
|
if (this._haveFingerprintReader)
|
||||||
this._greeterClient.call_begin_verification_for_user(_FINGERPRINT_SERVICE_NAME, userName);
|
this._greeterClient.call_begin_verification_for_user_sync(_FINGERPRINT_SERVICE_NAME, userName, null);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
this._user = activatedItem.user;
|
this._user = activatedItem.user;
|
||||||
|
@ -60,10 +60,8 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_updateVisibility: function() {
|
_updateVisibility: function() {
|
||||||
if (!this._haveSuspend && !this._haveShutdown && !this._haveRestart)
|
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
||||||
this.actor.hide();
|
this.actor.visible = shouldBeVisible;
|
||||||
else
|
|
||||||
this.actor.show();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveShutdown: function() {
|
_updateHaveShutdown: function() {
|
||||||
@ -76,11 +74,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveShutdown = false;
|
this._haveShutdown = false;
|
||||||
|
|
||||||
if (this._haveShutdown)
|
this._powerOffItem.actor.visible = this._haveShutdown;
|
||||||
this._powerOffItem.actor.show();
|
|
||||||
else
|
|
||||||
this._powerOffItem.actor.hide();
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
@ -91,12 +85,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveShutdown = false;
|
this._haveShutdown = false;
|
||||||
|
|
||||||
if (this._haveShutdown) {
|
this._powerOffItem.actor.visible = this._haveShutdown;
|
||||||
this._powerOffItem.actor.show();
|
|
||||||
} else {
|
|
||||||
this._powerOffItem.actor.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -112,11 +101,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveRestart = false;
|
this._haveRestart = false;
|
||||||
|
|
||||||
if (this._haveRestart)
|
this._restartItem.actor.visible = this._haveRestart;
|
||||||
this._restartItem.actor.show();
|
|
||||||
else
|
|
||||||
this._restartItem.actor.hide();
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
@ -127,12 +112,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
else
|
else
|
||||||
this._haveRestart = false;
|
this._haveRestart = false;
|
||||||
|
|
||||||
if (this._haveRestart) {
|
this._restartItem.actor.visible = this._haveRestart;
|
||||||
this._restartItem.actor.show();
|
|
||||||
} else {
|
|
||||||
this._restartItem.actor.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._updateVisibility();
|
this._updateVisibility();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
@ -140,12 +120,7 @@ const PowerMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
_updateHaveSuspend: function() {
|
_updateHaveSuspend: function() {
|
||||||
this._haveSuspend = this._upClient.get_can_suspend();
|
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();
|
this._updateVisibility();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -83,9 +83,10 @@ function spawnCommandLine(command_line) {
|
|||||||
// this will throw an error.
|
// this will throw an error.
|
||||||
function trySpawn(argv)
|
function trySpawn(argv)
|
||||||
{
|
{
|
||||||
|
var success, pid;
|
||||||
try {
|
try {
|
||||||
GLib.spawn_async(null, argv, null,
|
[success, pid] = GLib.spawn_async(null, argv, null,
|
||||||
GLib.SpawnFlags.SEARCH_PATH,
|
GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
|
||||||
null, null);
|
null, null);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
if (err.code == GLib.SpawnError.G_SPAWN_ERROR_NOENT) {
|
if (err.code == GLib.SpawnError.G_SPAWN_ERROR_NOENT) {
|
||||||
@ -101,6 +102,10 @@ function trySpawn(argv)
|
|||||||
|
|
||||||
throw err;
|
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:
|
// trySpawnCommandLine:
|
||||||
|
@ -312,11 +312,10 @@ const AppSearchProvider = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(_("APPLICATIONS"));
|
this.parent(_("APPLICATIONS"));
|
||||||
|
|
||||||
this._appSys = Shell.AppSystem.get_default();
|
this._appSys = Shell.AppSystem.get_default();
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetas: function(apps) {
|
getResultMetas: function(apps, callback) {
|
||||||
let metas = [];
|
let metas = [];
|
||||||
for (let i = 0; i < apps.length; i++) {
|
for (let i = 0; i < apps.length; i++) {
|
||||||
let app = apps[i];
|
let app = apps[i];
|
||||||
@ -327,15 +326,15 @@ const AppSearchProvider = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return metas;
|
callback(metas);
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSet: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
return this._appSys.initial_search(terms);
|
this.searchSystem.pushResults(this, this._appSys.initial_search(terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
return this._appSys.subsearch(previousResults, terms);
|
this.searchSystem.pushResults(this, this._appSys.subsearch(previousResults, terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
activateResult: function(app, params) {
|
activateResult: function(app, params) {
|
||||||
@ -378,7 +377,7 @@ const SettingsSearchProvider = new Lang.Class({
|
|||||||
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
|
this._gnomecc = this._appSys.lookup_app('gnome-control-center.desktop');
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetas: function(prefs) {
|
getResultMetas: function(prefs, callback) {
|
||||||
let metas = [];
|
let metas = [];
|
||||||
for (let i = 0; i < prefs.length; i++) {
|
for (let i = 0; i < prefs.length; i++) {
|
||||||
let pref = prefs[i];
|
let pref = prefs[i];
|
||||||
@ -389,15 +388,15 @@ const SettingsSearchProvider = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return metas;
|
callback(metas);
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSet: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
return this._appSys.search_settings(terms);
|
this.searchSystem.pushResults(this, this._appSys.search_settings(terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
return this._appSys.search_settings(terms);
|
this.searchSystem.pushResults(this, this._appSys.search_settings(terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
activateResult: function(pref, params) {
|
activateResult: function(pref, params) {
|
||||||
|
@ -262,12 +262,11 @@ const AutorunResidentSource = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(_("Removable Devices"));
|
this.parent(_("Removable Devices"), 'media-removable', St.IconType.FULLCOLOR);
|
||||||
|
|
||||||
this._mounts = [];
|
this._mounts = [];
|
||||||
|
|
||||||
this._notification = new AutorunResidentNotification(this);
|
this._notification = new AutorunResidentNotification(this);
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
|
||||||
},
|
},
|
||||||
|
|
||||||
addMount: function(mount, apps) {
|
addMount: function(mount, apps) {
|
||||||
@ -310,12 +309,6 @@ const AutorunResidentSource = new Lang.Class({
|
|||||||
Main.messageTray.add(this);
|
Main.messageTray.add(this);
|
||||||
this.pushNotification(this._notification);
|
this.pushNotification(this._notification);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
createNotificationIcon: function() {
|
|
||||||
return new St.Icon ({ icon_name: 'media-removable',
|
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
|
||||||
icon_size: this.ICON_SIZE });
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -500,11 +493,11 @@ const AutorunTransientSource = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function(mount, apps) {
|
_init: function(mount, apps) {
|
||||||
this.parent(mount.get_name());
|
|
||||||
|
|
||||||
this.mount = mount;
|
this.mount = mount;
|
||||||
this.apps = apps;
|
this.apps = apps;
|
||||||
|
|
||||||
|
this.parent(mount.get_name());
|
||||||
|
|
||||||
this._notification = new AutorunTransientNotification(this);
|
this._notification = new AutorunTransientNotification(this);
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
|
|
||||||
|
@ -154,7 +154,7 @@ const ContactSearchProvider = new Lang.Class({
|
|||||||
this._contactSys = Shell.ContactSystem.get_default();
|
this._contactSys = Shell.ContactSystem.get_default();
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetas: function(ids) {
|
getResultMetas: function(ids, callback) {
|
||||||
let metas = [];
|
let metas = [];
|
||||||
for (let i = 0; i < ids.length; i++) {
|
for (let i = 0; i < ids.length; i++) {
|
||||||
let contact = new Contact(ids[i]);
|
let contact = new Contact(ids[i]);
|
||||||
@ -165,15 +165,15 @@ const ContactSearchProvider = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return metas;
|
callback(metas);
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSet: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
return this._contactSys.initial_search(terms);
|
this.searchSystem.pushResults(this, this._contactSys.initial_search(terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
return this._contactSys.subsearch(previousResults, terms);
|
this.searchSystem.pushResults(this, this._contactSys.subsearch(previousResults, terms));
|
||||||
},
|
},
|
||||||
|
|
||||||
createResultActor: function(resultMeta, terms) {
|
createResultActor: function(resultMeta, terms) {
|
||||||
|
@ -168,7 +168,17 @@ const DashItemContainer = new Lang.Class({
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
if (this.label)
|
||||||
|
this.label.destroy();
|
||||||
|
|
||||||
|
this.actor.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
animateOutAndDestroy: function() {
|
animateOutAndDestroy: function() {
|
||||||
|
if (this.label)
|
||||||
|
this.label.destroy();
|
||||||
|
|
||||||
if (this.child == null) {
|
if (this.child == null) {
|
||||||
this.actor.destroy();
|
this.actor.destroy();
|
||||||
return;
|
return;
|
||||||
@ -691,7 +701,7 @@ const Dash = new Lang.Class({
|
|||||||
if (Main.overview.visible)
|
if (Main.overview.visible)
|
||||||
item.animateOutAndDestroy();
|
item.animateOutAndDestroy();
|
||||||
else
|
else
|
||||||
item.actor.destroy();
|
item.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
this._adjustIconSize();
|
this._adjustIconSize();
|
||||||
|
@ -75,7 +75,7 @@ const DateMenuButton = new Lang.Class({
|
|||||||
|
|
||||||
// Date
|
// Date
|
||||||
this._date = new St.Label();
|
this._date = new St.Label();
|
||||||
this.actor.label_actor = this._date;
|
this.actor.label_actor = this._clock;
|
||||||
this._date.style_class = 'datemenu-date-label';
|
this._date.style_class = 'datemenu-date-label';
|
||||||
vbox.add(this._date);
|
vbox.add(this._date);
|
||||||
|
|
||||||
|
@ -39,11 +39,19 @@ function _patchContainerClass(containerClass) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function _makeLoggingFunc(func) {
|
||||||
|
return function() {
|
||||||
|
return func([].join.call(arguments, ', '));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
// Add some bindings to the global JS namespace; (gjs keeps the web
|
// Add some bindings to the global JS namespace; (gjs keeps the web
|
||||||
// browser convention of having that namespace be called 'window'.)
|
// browser convention of having that namespace be called 'window'.)
|
||||||
window.global = Shell.Global.get();
|
window.global = Shell.Global.get();
|
||||||
|
|
||||||
|
window.log = _makeLoggingFunc(window.log);
|
||||||
|
|
||||||
window._ = Gettext.gettext;
|
window._ = Gettext.gettext;
|
||||||
window.C_ = Gettext.pgettext;
|
window.C_ = Gettext.pgettext;
|
||||||
window.ngettext = Gettext.ngettext;
|
window.ngettext = Gettext.ngettext;
|
||||||
|
@ -541,16 +541,8 @@ const KeyboardSource = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function(keyboard) {
|
_init: function(keyboard) {
|
||||||
this.parent(_("Keyboard"));
|
|
||||||
this._keyboard = 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() {
|
handleSummaryClick: function() {
|
||||||
|
@ -8,6 +8,8 @@ const St = imports.gi.St;
|
|||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
|
const DEFAULT_FADE_FACTOR = 0.4;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lightbox:
|
* Lightbox:
|
||||||
* @container: parent Clutter.Container
|
* @container: parent Clutter.Container
|
||||||
@ -15,7 +17,8 @@ const Tweener = imports.ui.tweener;
|
|||||||
* - inhibitEvents: whether to inhibit events for @container
|
* - inhibitEvents: whether to inhibit events for @container
|
||||||
* - width: shade actor width
|
* - width: shade actor width
|
||||||
* - height: shade actor height
|
* - 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
|
* Lightbox creates a dark translucent "shade" actor to hide the
|
||||||
* contents of @container, and allows you to specify particular actors
|
* 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,
|
params = Params.parse(params, { inhibitEvents: false,
|
||||||
width: null,
|
width: null,
|
||||||
height: null,
|
height: null,
|
||||||
fadeTime: null
|
fadeInTime: null,
|
||||||
|
fadeOutTime: null,
|
||||||
|
fadeFactor: DEFAULT_FADE_FACTOR
|
||||||
});
|
});
|
||||||
|
|
||||||
this._container = container;
|
this._container = container;
|
||||||
this._children = container.get_children();
|
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,
|
this.actor = new St.Bin({ x: 0,
|
||||||
y: 0,
|
y: 0,
|
||||||
style_class: 'lightbox',
|
style_class: 'lightbox',
|
||||||
@ -52,6 +59,7 @@ const Lightbox = new Lang.Class({
|
|||||||
container.add_actor(this.actor);
|
container.add_actor(this.actor);
|
||||||
this.actor.raise_top();
|
this.actor.raise_top();
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
|
this.shown = false;
|
||||||
|
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
@ -93,24 +101,30 @@ const Lightbox = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
if (this._fadeTime) {
|
if (this._fadeInTime) {
|
||||||
|
this.shown = false;
|
||||||
this.actor.opacity = 0;
|
this.actor.opacity = 0;
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ opacity: 255,
|
{ opacity: 255 * this._fadeFactor,
|
||||||
time: this._fadeTime,
|
time: this._fadeInTime,
|
||||||
transition: 'easeOutQuad'
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this.shown = true;
|
||||||
|
})
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.actor.opacity = 255;
|
this.actor.opacity = 255 * this._fadeFactor;
|
||||||
|
this.shown = true;
|
||||||
}
|
}
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
},
|
},
|
||||||
|
|
||||||
hide: function() {
|
hide: function() {
|
||||||
if (this._fadeTime) {
|
this.shown = false;
|
||||||
|
if (this._fadeOutTime) {
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
{ opacity: 0,
|
{ opacity: 0,
|
||||||
time: this._fadeTime,
|
time: this._fadeOutTime,
|
||||||
transition: 'easeOutQuad',
|
transition: 'easeOutQuad',
|
||||||
onComplete: Lang.bind(this, function() {
|
onComplete: Lang.bind(this, function() {
|
||||||
this.actor.hide();
|
this.actor.hide();
|
||||||
|
@ -634,45 +634,6 @@ const Inspector = new Lang.Class({
|
|||||||
|
|
||||||
Signals.addSignalMethods(Inspector.prototype);
|
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({
|
const Memory = new Lang.Class({
|
||||||
Name: 'Memory',
|
Name: 'Memory',
|
||||||
|
|
||||||
@ -947,9 +908,6 @@ const LookingGlass = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
notebook.appendPage('Windows', this._windowList.actor);
|
notebook.appendPage('Windows', this._windowList.actor);
|
||||||
|
|
||||||
this._errorLog = new ErrorLog();
|
|
||||||
notebook.appendPage('Errors', this._errorLog.actor);
|
|
||||||
|
|
||||||
this._memory = new Memory();
|
this._memory = new Memory();
|
||||||
notebook.appendPage('Memory', this._memory.actor);
|
notebook.appendPage('Memory', this._memory.actor);
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ const Params = imports.misc.params;
|
|||||||
|
|
||||||
const MOUSE_POLL_FREQUENCY = 50;
|
const MOUSE_POLL_FREQUENCY = 50;
|
||||||
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
const CROSSHAIRS_CLIP_SIZE = [100, 100];
|
||||||
|
const NO_CHANGE = 0.0;
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
const APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||||
@ -24,6 +25,13 @@ const SHOW_KEY = 'screen-magnifier-enabled';
|
|||||||
const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier';
|
const MAGNIFIER_SCHEMA = 'org.gnome.desktop.a11y.magnifier';
|
||||||
const SCREEN_POSITION_KEY = 'screen-position';
|
const SCREEN_POSITION_KEY = 'screen-position';
|
||||||
const MAG_FACTOR_KEY = 'mag-factor';
|
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 LENS_MODE_KEY = 'lens-mode';
|
||||||
const CLAMP_MODE_KEY = 'scroll-at-edges';
|
const CLAMP_MODE_KEY = 'scroll-at-edges';
|
||||||
const MOUSE_TRACKING_KEY = 'mouse-tracking';
|
const MOUSE_TRACKING_KEY = 'mouse-tracking';
|
||||||
@ -443,6 +451,21 @@ const Magnifier = new Lang.Class({
|
|||||||
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
aPref = this._settings.get_enum(MOUSE_TRACKING_KEY);
|
||||||
if (aPref)
|
if (aPref)
|
||||||
zoomRegion.setMouseTrackingMode(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);
|
let showCrosshairs = this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY);
|
||||||
@ -465,6 +488,23 @@ const Magnifier = new Lang.Class({
|
|||||||
this._settings.connect('changed::' + MOUSE_TRACKING_KEY,
|
this._settings.connect('changed::' + MOUSE_TRACKING_KEY,
|
||||||
Lang.bind(this, this._updateMouseTrackingMode));
|
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,
|
this._settings.connect('changed::' + SHOW_CROSS_HAIRS_KEY,
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY));
|
this.setCrosshairsVisible(this._settings.get_boolean(SHOW_CROSS_HAIRS_KEY));
|
||||||
@ -540,7 +580,38 @@ const Magnifier = new Lang.Class({
|
|||||||
this._settings.get_enum(MOUSE_TRACKING_KEY)
|
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);
|
Signals.addSignalMethods(Magnifier.prototype);
|
||||||
|
|
||||||
@ -554,6 +625,9 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._clampScrollingAtEdges = false;
|
this._clampScrollingAtEdges = false;
|
||||||
this._lensMode = false;
|
this._lensMode = false;
|
||||||
this._screenPosition = GDesktopEnums.MagnifierScreenPosition.FULL_SCREEN;
|
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._magView = null;
|
||||||
this._background = null;
|
this._background = null;
|
||||||
@ -879,6 +953,86 @@ 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 ////
|
//// Private methods ////
|
||||||
|
|
||||||
_createActors: function() {
|
_createActors: function() {
|
||||||
@ -917,6 +1071,12 @@ const ZoomRegion = new Lang.Class({
|
|||||||
this._crossHairsActor = this._crossHairs.addToZoomRegion(this, this._mouseActor);
|
this._crossHairsActor = this._crossHairs.addToZoomRegion(this, this._mouseActor);
|
||||||
else
|
else
|
||||||
this._crossHairsActor = null;
|
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() {
|
_destroyActors: function() {
|
||||||
@ -925,6 +1085,8 @@ const ZoomRegion = new Lang.Class({
|
|||||||
if (this._crossHairs)
|
if (this._crossHairs)
|
||||||
this._crossHairs.removeFromParent(this._crossHairsActor);
|
this._crossHairs.removeFromParent(this._crossHairsActor);
|
||||||
|
|
||||||
|
this._magShaderEffects.destroyEffects();
|
||||||
|
this._magShaderEffects = null;
|
||||||
this._magView.destroy();
|
this._magView.destroy();
|
||||||
this._magView = null;
|
this._magView = null;
|
||||||
this._background = null;
|
this._background = null;
|
||||||
@ -1228,10 +1390,7 @@ const Crosshairs = new Lang.Class({
|
|||||||
crosshairsActor = new Clutter.Clone({ source: this._actor });
|
crosshairsActor = new Clutter.Clone({ source: this._actor });
|
||||||
this._clones.push(crosshairsActor);
|
this._clones.push(crosshairsActor);
|
||||||
}
|
}
|
||||||
if (this._actor.visible)
|
crosshairsActor.visible = this._actor.visible;
|
||||||
crosshairsActor.show();
|
|
||||||
else
|
|
||||||
crosshairsActor.hide();
|
|
||||||
|
|
||||||
container.add_actor(crosshairsActor);
|
container.add_actor(crosshairsActor);
|
||||||
container.raise_child(magnifiedMouse, crosshairsActor);
|
container.raise_child(magnifiedMouse, crosshairsActor);
|
||||||
@ -1436,3 +1595,133 @@ const Crosshairs = new Lang.Class({
|
|||||||
this._vertBottomHair.set_position((groupWidth - thickness) / 2, bottom);
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
@ -29,6 +29,7 @@ const LookingGlass = imports.ui.lookingGlass;
|
|||||||
const NetworkAgent = imports.ui.networkAgent;
|
const NetworkAgent = imports.ui.networkAgent;
|
||||||
const NotificationDaemon = imports.ui.notificationDaemon;
|
const NotificationDaemon = imports.ui.notificationDaemon;
|
||||||
const WindowAttentionHandler = imports.ui.windowAttentionHandler;
|
const WindowAttentionHandler = imports.ui.windowAttentionHandler;
|
||||||
|
const ScreenShield = imports.ui.screenShield;
|
||||||
const Scripting = imports.ui.scripting;
|
const Scripting = imports.ui.scripting;
|
||||||
const ShellDBus = imports.ui.shellDBus;
|
const ShellDBus = imports.ui.shellDBus;
|
||||||
const TelepathyClient = imports.ui.telepathyClient;
|
const TelepathyClient = imports.ui.telepathyClient;
|
||||||
@ -46,12 +47,12 @@ let automountManager = null;
|
|||||||
let autorunManager = null;
|
let autorunManager = null;
|
||||||
let panel = null;
|
let panel = null;
|
||||||
let hotCorners = [];
|
let hotCorners = [];
|
||||||
let placesManager = null;
|
|
||||||
let overview = null;
|
let overview = null;
|
||||||
let runDialog = null;
|
let runDialog = null;
|
||||||
let lookingGlass = null;
|
let lookingGlass = null;
|
||||||
let wm = null;
|
let wm = null;
|
||||||
let messageTray = null;
|
let messageTray = null;
|
||||||
|
let screenShield = null;
|
||||||
let notificationDaemon = null;
|
let notificationDaemon = null;
|
||||||
let windowAttentionHandler = null;
|
let windowAttentionHandler = null;
|
||||||
let telepathyClient = null;
|
let telepathyClient = null;
|
||||||
@ -67,7 +68,6 @@ let statusIconDispatcher = null;
|
|||||||
let keyboard = null;
|
let keyboard = null;
|
||||||
let layoutManager = null;
|
let layoutManager = null;
|
||||||
let networkAgent = null;
|
let networkAgent = null;
|
||||||
let _errorLogStack = [];
|
|
||||||
let _startDate;
|
let _startDate;
|
||||||
let _defaultCssStylesheet = null;
|
let _defaultCssStylesheet = null;
|
||||||
let _cssStylesheet = null;
|
let _cssStylesheet = null;
|
||||||
@ -81,7 +81,6 @@ function _createUserSession() {
|
|||||||
// not loading any events until the user presses the clock
|
// not loading any events until the user presses the clock
|
||||||
global.launch_calendar_server();
|
global.launch_calendar_server();
|
||||||
|
|
||||||
placesManager = new PlaceDisplay.PlacesManager();
|
|
||||||
telepathyClient = new TelepathyClient.Client();
|
telepathyClient = new TelepathyClient.Client();
|
||||||
automountManager = new AutomountManager.AutomountManager();
|
automountManager = new AutomountManager.AutomountManager();
|
||||||
autorunManager = new AutorunManager.AutorunManager();
|
autorunManager = new AutorunManager.AutorunManager();
|
||||||
@ -101,14 +100,17 @@ function _createGDMSession() {
|
|||||||
|
|
||||||
function _initRecorder() {
|
function _initRecorder() {
|
||||||
let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
|
let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' });
|
||||||
|
let bindingSettings = new Gio.Settings({ schema: 'org.gnome.shell.keybindings' });
|
||||||
|
|
||||||
global.screen.connect('toggle-recording', function() {
|
global.display.add_keybinding('toggle-recording',
|
||||||
|
bindingSettings,
|
||||||
|
Meta.KeyBindingFlags.NONE, function() {
|
||||||
if (recorder == null) {
|
if (recorder == null) {
|
||||||
recorder = new Shell.Recorder({ stage: global.stage });
|
recorder = new Shell.Recorder({ stage: global.stage });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (recorder.is_recording()) {
|
if (recorder.is_recording()) {
|
||||||
recorder.pause();
|
recorder.close();
|
||||||
Meta.enable_unredirect_for_screen(global.screen);
|
Meta.enable_unredirect_for_screen(global.screen);
|
||||||
} else {
|
} else {
|
||||||
// read the parameters from GSettings always in case they have changed
|
// read the parameters from GSettings always in case they have changed
|
||||||
@ -150,11 +152,9 @@ function _initUserSession() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function start() {
|
function start() {
|
||||||
// Monkey patch utility functions into the global proxy;
|
// These are here so we don't break compatibility.
|
||||||
// This is easier and faster than indirecting down into global
|
global.logError = window.log;
|
||||||
// if we want to call back up into JS.
|
global.log = window.log;
|
||||||
global.logError = _logError;
|
|
||||||
global.log = _logDebug;
|
|
||||||
|
|
||||||
// Chain up async errors reported from C
|
// Chain up async errors reported from C
|
||||||
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
global.connect('notify-error', function (global, msg, detail) { notifyError(msg, detail); });
|
||||||
@ -218,6 +218,7 @@ function start() {
|
|||||||
panel = new Panel.Panel();
|
panel = new Panel.Panel();
|
||||||
wm = new WindowManager.WindowManager();
|
wm = new WindowManager.WindowManager();
|
||||||
messageTray = new MessageTray.MessageTray();
|
messageTray = new MessageTray.MessageTray();
|
||||||
|
screenShield = new ScreenShield.ScreenShield();
|
||||||
keyboard = new Keyboard.Keyboard();
|
keyboard = new Keyboard.Keyboard();
|
||||||
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
notificationDaemon = new NotificationDaemon.NotificationDaemon();
|
||||||
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
|
windowAttentionHandler = new WindowAttentionHandler.WindowAttentionHandler();
|
||||||
@ -251,7 +252,6 @@ function start() {
|
|||||||
|
|
||||||
global.stage.connect('captured-event', _globalKeyPressHandler);
|
global.stage.connect('captured-event', _globalKeyPressHandler);
|
||||||
|
|
||||||
_log('info', 'loaded at ' + _startDate);
|
|
||||||
log('GNOME Shell started at ' + _startDate);
|
log('GNOME Shell started at ' + _startDate);
|
||||||
|
|
||||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||||
@ -494,7 +494,7 @@ function loadTheme() {
|
|||||||
|
|
||||||
let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
|
let theme = new St.Theme ({ application_stylesheet: cssStylesheet });
|
||||||
|
|
||||||
if (global.session_type == Shell.SessionType.GDM)
|
// FIXME: merge back into main stylesheet
|
||||||
theme.load_stylesheet(_gdmCssStylesheet);
|
theme.load_stylesheet(_gdmCssStylesheet);
|
||||||
|
|
||||||
if (previousTheme) {
|
if (previousTheme) {
|
||||||
@ -537,59 +537,6 @@ function notifyError(msg, details) {
|
|||||||
notify(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) {
|
function isWindowActorDisplayedOnWorkspace(win, workspaceIndex) {
|
||||||
return win.get_workspace() == workspaceIndex ||
|
return win.get_workspace() == workspaceIndex ||
|
||||||
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
|
(win.get_meta_window() && win.get_meta_window().is_on_all_workspaces());
|
||||||
@ -677,6 +624,10 @@ function _findModal(actor) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isInModalStack(actor) {
|
||||||
|
return _findModal(actor) != -1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* pushModal:
|
* pushModal:
|
||||||
* @actor: #ClutterActor which will be given keyboard focus
|
* @actor: #ClutterActor which will be given keyboard focus
|
||||||
@ -717,7 +668,7 @@ function pushModal(actor, timestamp, options) {
|
|||||||
let actorDestroyId = actor.connect('destroy', function() {
|
let actorDestroyId = actor.connect('destroy', function() {
|
||||||
let index = _findModal(actor);
|
let index = _findModal(actor);
|
||||||
if (index >= 0)
|
if (index >= 0)
|
||||||
modalActorFocusStack.splice(index, 1);
|
popModal(actor);
|
||||||
});
|
});
|
||||||
let curFocus = global.stage.get_key_focus();
|
let curFocus = global.stage.get_key_focus();
|
||||||
let curFocusDestroyId;
|
let curFocusDestroyId;
|
||||||
|
@ -441,7 +441,7 @@ const Notification = new Lang.Class({
|
|||||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._table = new St.Table({ name: 'notification',
|
this._table = new St.Table({ style_class: 'notification',
|
||||||
reactive: true });
|
reactive: true });
|
||||||
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
|
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
|
||||||
this.actor.set_child(this._table);
|
this.actor.set_child(this._table);
|
||||||
@ -586,19 +586,21 @@ const Notification = new Lang.Class({
|
|||||||
|
|
||||||
enableScrolling: function(enableScrolling) {
|
enableScrolling: function(enableScrolling) {
|
||||||
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
|
||||||
if (this._scrollArea)
|
if (this._scrollArea) {
|
||||||
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
|
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
|
||||||
|
this._scrollArea.enable_mouse_scrolling = enableScrolling;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_createScrollArea: function() {
|
_createScrollArea: function() {
|
||||||
this._table.add_style_class_name('multi-line-notification');
|
this._table.add_style_class_name('multi-line-notification');
|
||||||
this._scrollArea = new St.ScrollView({ name: 'notification-scrollview',
|
this._scrollArea = new St.ScrollView({ style_class: 'notification-scrollview',
|
||||||
vscrollbar_policy: this._scrollPolicy,
|
vscrollbar_policy: this._scrollPolicy,
|
||||||
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||||
this._table.add(this._scrollArea, { row: 1,
|
this._table.add(this._scrollArea, { row: 1,
|
||||||
col: 2 });
|
col: 2 });
|
||||||
this._updateLastColumnSettings();
|
this._updateLastColumnSettings();
|
||||||
this._contentArea = new St.BoxLayout({ name: 'notification-body',
|
this._contentArea = new St.BoxLayout({ style_class: 'notification-body',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
this._scrollArea.add_actor(this._contentArea);
|
this._scrollArea.add_actor(this._contentArea);
|
||||||
// If we know the notification will be expandable, we need to add
|
// If we know the notification will be expandable, we need to add
|
||||||
@ -734,7 +736,7 @@ const Notification = new Lang.Class({
|
|||||||
addButton: function(id, label) {
|
addButton: function(id, label) {
|
||||||
if (!this._buttonBox) {
|
if (!this._buttonBox) {
|
||||||
|
|
||||||
let box = new St.BoxLayout({ name: 'notification-actions' });
|
let box = new St.BoxLayout({ style_class: 'notification-actions' });
|
||||||
this.setActionArea(box, { x_expand: false,
|
this.setActionArea(box, { x_expand: false,
|
||||||
y_expand: false,
|
y_expand: false,
|
||||||
x_fill: false,
|
x_fill: false,
|
||||||
@ -744,6 +746,7 @@ const Notification = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
let button = new St.Button({ can_focus: true });
|
let button = new St.Button({ can_focus: true });
|
||||||
|
button._actionId = id;
|
||||||
|
|
||||||
if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(id)) {
|
if (this._useActionIcons && Gtk.IconTheme.get_default().has_icon(id)) {
|
||||||
button.add_style_class_name('notification-icon-button');
|
button.add_style_class_name('notification-icon-button');
|
||||||
@ -763,6 +766,31 @@ const Notification = new Lang.Class({
|
|||||||
this.updated();
|
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');
|
||||||
|
},
|
||||||
|
|
||||||
setUrgency: function(urgency) {
|
setUrgency: function(urgency) {
|
||||||
this.urgency = urgency;
|
this.urgency = urgency;
|
||||||
},
|
},
|
||||||
@ -958,8 +986,10 @@ const Source = new Lang.Class({
|
|||||||
|
|
||||||
ICON_SIZE: 24,
|
ICON_SIZE: 24,
|
||||||
|
|
||||||
_init: function(title) {
|
_init: function(title, iconName, iconType) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
|
this.iconName = iconName;
|
||||||
|
this.iconType = iconType;
|
||||||
|
|
||||||
this.actor = new Shell.GenericContainer();
|
this.actor = new Shell.GenericContainer();
|
||||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||||
@ -989,6 +1019,8 @@ const Source = new Lang.Class({
|
|||||||
this.isMuted = false;
|
this.isMuted = false;
|
||||||
|
|
||||||
this.notifications = [];
|
this.notifications = [];
|
||||||
|
|
||||||
|
this._setSummaryIcon(this.createNotificationIcon());
|
||||||
},
|
},
|
||||||
|
|
||||||
_getPreferredWidth: function (actor, forHeight, alloc) {
|
_getPreferredWidth: function (actor, forHeight, alloc) {
|
||||||
@ -1059,10 +1091,12 @@ const Source = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Called to create a new icon actor (of size this.ICON_SIZE).
|
// Called to create a new icon actor (of size this.ICON_SIZE).
|
||||||
// Must be overridden by the subclass if you do not pass icons
|
// Provides a sane default implementation, override if you need
|
||||||
// explicitly to the Notification() constructor.
|
// something more fancy.
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
throw new Error('no implementation of createNotificationIcon in ' + this);
|
return new St.Icon({ icon_name: this.iconName,
|
||||||
|
icon_type: this.iconType,
|
||||||
|
icon_size: this.ICON_SIZE });
|
||||||
},
|
},
|
||||||
|
|
||||||
// Unlike createNotificationIcon, this always returns the same actor;
|
// Unlike createNotificationIcon, this always returns the same actor;
|
||||||
@ -1113,16 +1147,14 @@ const Source = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
//// Protected methods ////
|
//// Protected methods ////
|
||||||
|
|
||||||
// The subclass must call this at least once to set the summary icon.
|
|
||||||
_setSummaryIcon: function(icon) {
|
_setSummaryIcon: function(icon) {
|
||||||
if (this._iconBin.child)
|
if (this._iconBin.child)
|
||||||
this._iconBin.child.destroy();
|
this._iconBin.child.destroy();
|
||||||
this._iconBin.child = icon;
|
this._iconBin.child = icon;
|
||||||
},
|
},
|
||||||
|
|
||||||
// Default implementation is to do nothing, but subclasses can override
|
|
||||||
open: function(notification) {
|
open: function(notification) {
|
||||||
|
this.emit('opened', notification);
|
||||||
},
|
},
|
||||||
|
|
||||||
destroyNonResidentNotifications: function() {
|
destroyNonResidentNotifications: function() {
|
||||||
@ -2487,15 +2519,7 @@ const SystemNotificationSource = new Lang.Class({
|
|||||||
Extends: Source,
|
Extends: Source,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(_("System Information"));
|
this.parent(_("System Information"), 'dialog-information', St.IconType.SYMBOLIC);
|
||||||
|
|
||||||
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() {
|
open: function() {
|
||||||
|
@ -578,11 +578,27 @@ const Source = new Lang.Class({
|
|||||||
return true;
|
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() {
|
_setApp: function() {
|
||||||
if (this.app)
|
if (this.app)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this.app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
|
this.app = this._getApp();
|
||||||
if (!this.app)
|
if (!this.app)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -622,5 +638,10 @@ const Source = new Lang.Class({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.parent();
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
createNotificationIcon: function() {
|
||||||
|
// We set the summary icon ourselves.
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -1115,7 +1115,7 @@ const Panel = new Lang.Class({
|
|||||||
|
|
||||||
openAppMenu: function() {
|
openAppMenu: function() {
|
||||||
let menu = this._appMenu.menu;
|
let menu = this._appMenu.menu;
|
||||||
if (Main.overview.visible || menu.isOpen)
|
if (!this._appMenu.actor.reactive || menu.isOpen)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
menu.open();
|
menu.open();
|
||||||
|
@ -189,7 +189,7 @@ const PlacesManager = new Lang.Class({
|
|||||||
this._volumeMonitor.connect('drive-changed', Lang.bind(this, this._updateDevices));
|
this._volumeMonitor.connect('drive-changed', Lang.bind(this, this._updateDevices));
|
||||||
this._updateDevices();
|
this._updateDevices();
|
||||||
|
|
||||||
this._bookmarksPath = GLib.build_filenamev([GLib.get_home_dir(), '.gtk-bookmarks']);
|
this._bookmarksPath = GLib.build_filenamev([GLib.get_user_config_dir(), 'gtk-3.0', 'bookmarks']);
|
||||||
this._bookmarksFile = Gio.file_new_for_path(this._bookmarksPath);
|
this._bookmarksFile = Gio.file_new_for_path(this._bookmarksPath);
|
||||||
this._monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
this._monitor = this._bookmarksFile.monitor_file(Gio.FileMonitorFlags.NONE, null);
|
||||||
this._bookmarkTimeoutId = 0;
|
this._bookmarkTimeoutId = 0;
|
||||||
@ -365,12 +365,13 @@ const PlaceSearchProvider = new Lang.Class({
|
|||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent(_("PLACES & DEVICES"));
|
this.parent(_("PLACES & DEVICES"));
|
||||||
|
this.placesManager = new PlacesManager();
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetas: function(resultIds) {
|
getResultMetas: function(resultIds, callback) {
|
||||||
let metas = [];
|
let metas = [];
|
||||||
for (let i = 0; i < resultIds.length; i++) {
|
for (let i = 0; i < resultIds.length; i++) {
|
||||||
let placeInfo = Main.placesManager.lookupPlaceById(resultIds[i]);
|
let placeInfo = this.placesManager.lookupPlaceById(resultIds[i]);
|
||||||
if (!placeInfo)
|
if (!placeInfo)
|
||||||
metas.push(null);
|
metas.push(null);
|
||||||
else
|
else
|
||||||
@ -381,24 +382,22 @@ const PlaceSearchProvider = new Lang.Class({
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return metas;
|
callback(metas);
|
||||||
},
|
},
|
||||||
|
|
||||||
activateResult: function(id, params) {
|
activateResult: function(id, params) {
|
||||||
let placeInfo = Main.placesManager.lookupPlaceById(id);
|
let placeInfo = this.placesManager.lookupPlaceById(id);
|
||||||
placeInfo.launch(params);
|
placeInfo.launch(params);
|
||||||
},
|
},
|
||||||
|
|
||||||
_compareResultMeta: function (idA, idB) {
|
_compareResultMeta: function (idA, idB) {
|
||||||
let infoA = Main.placesManager.lookupPlaceById(idA);
|
let infoA = this.placesManager.lookupPlaceById(idA);
|
||||||
let infoB = Main.placesManager.lookupPlaceById(idB);
|
let infoB = this.placesManager.lookupPlaceById(idB);
|
||||||
return infoA.name.localeCompare(infoB.name);
|
return infoA.name.localeCompare(infoB.name);
|
||||||
},
|
},
|
||||||
|
|
||||||
_searchPlaces: function(places, terms) {
|
_searchPlaces: function(places, terms) {
|
||||||
let multiplePrefixResults = [];
|
|
||||||
let prefixResults = [];
|
let prefixResults = [];
|
||||||
let multipleSubstringResults = [];
|
|
||||||
let substringResults = [];
|
let substringResults = [];
|
||||||
|
|
||||||
terms = terms.map(String.toLowerCase);
|
terms = terms.map(String.toLowerCase);
|
||||||
@ -406,29 +405,26 @@ const PlaceSearchProvider = new Lang.Class({
|
|||||||
for (let i = 0; i < places.length; i++) {
|
for (let i = 0; i < places.length; i++) {
|
||||||
let place = places[i];
|
let place = places[i];
|
||||||
let mtype = place.matchTerms(terms);
|
let mtype = place.matchTerms(terms);
|
||||||
if (mtype == Search.MatchType.MULTIPLE_PREFIX)
|
if (mtype == Search.MatchType.PREFIX)
|
||||||
multiplePrefixResults.push(place.id);
|
|
||||||
else if (mtype == Search.MatchType.PREFIX)
|
|
||||||
prefixResults.push(place.id);
|
prefixResults.push(place.id);
|
||||||
else if (mtype == Search.MatchType.MULTIPLE_SUBSTRING)
|
|
||||||
multipleSubstringResults.push(place.id);
|
|
||||||
else if (mtype == Search.MatchType.SUBSTRING)
|
else if (mtype == Search.MatchType.SUBSTRING)
|
||||||
substringResults.push(place.id);
|
substringResults.push(place.id);
|
||||||
}
|
}
|
||||||
multiplePrefixResults.sort(this._compareResultMeta);
|
prefixResults.sort(Lang.bind(this, this._compareResultMeta));
|
||||||
prefixResults.sort(this._compareResultMeta);
|
substringResults.sort(Lang.bind(this, this._compareResultMeta));
|
||||||
multipleSubstringResults.sort(this._compareResultMeta);
|
|
||||||
substringResults.sort(this._compareResultMeta);
|
this.searchSystem.pushResults(this, prefixResults.concat(substringResults));
|
||||||
return multiplePrefixResults.concat(prefixResults.concat(multipleSubstringResults.concat(substringResults)));
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSet: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
let places = Main.placesManager.getAllPlaces();
|
let places = this.placesManager.getAllPlaces();
|
||||||
return this._searchPlaces(places, terms);
|
this._searchPlaces(places, terms);
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
let places = previousResults.map(function (id) { return Main.placesManager.lookupPlaceById(id); });
|
let places = previousResults.map(Lang.bind(this, function(id) {
|
||||||
return this._searchPlaces(places, terms);
|
return this.placesManager.lookupPlaceById(id);
|
||||||
|
}));
|
||||||
|
this._searchPlaces(places, terms);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -546,6 +546,10 @@ const PopupSliderMenuItem = new Lang.Class({
|
|||||||
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
|
this._slider.connect('repaint', Lang.bind(this, this._sliderRepaint));
|
||||||
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
|
this.actor.connect('button-press-event', Lang.bind(this, this._startDragging));
|
||||||
this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent));
|
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._releaseId = this._motionId = 0;
|
||||||
this._dragging = false;
|
this._dragging = false;
|
||||||
|
@ -91,7 +91,6 @@ const RemoteSearchProvider = new Lang.Class({
|
|||||||
dbusName, dbusPath);
|
dbusName, dbusPath);
|
||||||
|
|
||||||
this.parent(title.toUpperCase());
|
this.parent(title.toUpperCase());
|
||||||
this.async = true;
|
|
||||||
this._cancellable = new Gio.Cancellable();
|
this._cancellable = new Gio.Cancellable();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -120,7 +119,7 @@ const RemoteSearchProvider = new Lang.Class({
|
|||||||
this.searchSystem.pushResults(this, results[0]);
|
this.searchSystem.pushResults(this, results[0]);
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSetAsync: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._cancellable.reset();
|
this._cancellable.reset();
|
||||||
try {
|
try {
|
||||||
@ -133,7 +132,7 @@ const RemoteSearchProvider = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSetAsync: function(previousResults, newTerms) {
|
getSubsearchResultSet: function(previousResults, newTerms) {
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._cancellable.reset();
|
this._cancellable.reset();
|
||||||
try {
|
try {
|
||||||
@ -164,7 +163,7 @@ const RemoteSearchProvider = new Lang.Class({
|
|||||||
callback(resultMetas);
|
callback(resultMetas);
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetasAsync: function(ids, callback) {
|
getResultMetas: function(ids, callback) {
|
||||||
this._cancellable.cancel();
|
this._cancellable.cancel();
|
||||||
this._cancellable.reset();
|
this._cancellable.reset();
|
||||||
try {
|
try {
|
||||||
|
142
js/ui/screenShield.js
Normal file
142
js/ui/screenShield.js
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
// -*- 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 UnlockDialog = imports.ui.unlockDialog;
|
||||||
|
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._isModal = false;
|
||||||
|
this._isLocked = false;
|
||||||
|
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._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");
|
||||||
|
|
||||||
|
if (this._dialog) {
|
||||||
|
log('canceling existing dialog');
|
||||||
|
this._dialog.cancel();
|
||||||
|
this._dialog = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._group.reactive = true;
|
||||||
|
if (!this._isModal) {
|
||||||
|
Main.pushModal(this._group);
|
||||||
|
this._isModal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._group.raise_top();
|
||||||
|
this._lightbox.show();
|
||||||
|
} else {
|
||||||
|
log('status is now ' + status);
|
||||||
|
|
||||||
|
let lightboxWasShown = this._lightbox.shown;
|
||||||
|
log("this._lightbox.shown " + this._lightbox.shown);
|
||||||
|
this._lightbox.hide();
|
||||||
|
|
||||||
|
let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||||
|
if (shouldLock || this._isLocked) {
|
||||||
|
this._isLocked = true;
|
||||||
|
this._background.show();
|
||||||
|
this._background.raise_top();
|
||||||
|
|
||||||
|
this._showUnlockDialog();
|
||||||
|
} else if (this._isModal) {
|
||||||
|
this._popModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_popModal: function() {
|
||||||
|
this._group.reactive = false;
|
||||||
|
Main.popModal(this._group);
|
||||||
|
|
||||||
|
this._background.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
_showUnlockDialog: function() {
|
||||||
|
if (this._dialog) {
|
||||||
|
log ('_showUnlockDialog called again when the dialog was already there');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
this._dialog = new UnlockDialog.UnlockDialog();
|
||||||
|
this._dialog.connect('failed', Lang.bind(this, this._onUnlockFailed));
|
||||||
|
this._dialog.connect('unlocked', Lang.bind(this, this._onUnlockSucceded));
|
||||||
|
|
||||||
|
if (!this._dialog.open(global.get_current_time()))
|
||||||
|
throw new Error('open failed!')
|
||||||
|
|
||||||
|
this._dialog._group.raise_top();
|
||||||
|
} catch(e) {
|
||||||
|
// FIXME: this is for debugging purposes
|
||||||
|
logError(e, 'error while creating unlock dialog');
|
||||||
|
|
||||||
|
this._popModal();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onUnlockFailed: function() {
|
||||||
|
// FIXME: for now, on failure we just destroy the dialog and create a new
|
||||||
|
// one (this is what gnome-screensaver does)
|
||||||
|
// in the future, we may want to go back to the lock screen instead
|
||||||
|
|
||||||
|
this._dialog.destroy();
|
||||||
|
this._dialog = null;
|
||||||
|
|
||||||
|
this._showUnlockDialog();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onUnlockSucceded: function() {
|
||||||
|
this._dialog.destroy();
|
||||||
|
this._dialog = null;
|
||||||
|
|
||||||
|
this._popModal();
|
||||||
|
},
|
||||||
|
});
|
@ -18,9 +18,7 @@ const DISABLED_OPEN_SEARCH_PROVIDERS_KEY = 'disabled-open-search-providers';
|
|||||||
const MatchType = {
|
const MatchType = {
|
||||||
NONE: 0,
|
NONE: 0,
|
||||||
SUBSTRING: 1,
|
SUBSTRING: 1,
|
||||||
MULTIPLE_SUBSTRING: 2,
|
PREFIX: 2
|
||||||
PREFIX: 3,
|
|
||||||
MULTIPLE_PREFIX: 4
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const SearchResultDisplay = new Lang.Class({
|
const SearchResultDisplay = new Lang.Class({
|
||||||
@ -72,11 +70,8 @@ const SearchResultDisplay = new Lang.Class({
|
|||||||
* Subclass this object to add a new result type
|
* Subclass this object to add a new result type
|
||||||
* to the search system, then call registerProvider()
|
* to the search system, then call registerProvider()
|
||||||
* in SearchSystem with an instance.
|
* in SearchSystem with an instance.
|
||||||
* By default, search is synchronous and uses the
|
* Search is asynchronous and uses the
|
||||||
* getInitialResultSet()/getSubsearchResultSet() methods.
|
* getInitialResultSet()/getSubsearchResultSet() methods.
|
||||||
* For asynchronous search, set the async property to true
|
|
||||||
* and implement getInitialResultSetAsync()/getSubsearchResultSetAsync()
|
|
||||||
* instead.
|
|
||||||
*/
|
*/
|
||||||
const SearchProvider = new Lang.Class({
|
const SearchProvider = new Lang.Class({
|
||||||
Name: 'SearchProvider',
|
Name: 'SearchProvider',
|
||||||
@ -84,7 +79,6 @@ const SearchProvider = new Lang.Class({
|
|||||||
_init: function(title) {
|
_init: function(title) {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.searchSystem = null;
|
this.searchSystem = null;
|
||||||
this.async = false;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -95,7 +89,7 @@ const SearchProvider = new Lang.Class({
|
|||||||
* therefore a single term of length one or two), or when
|
* therefore a single term of length one or two), or when
|
||||||
* a new term is added.
|
* 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
|
* items which match the given search terms. This
|
||||||
* is expected to be a substring match on the metadata for a given
|
* 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,
|
* item. Ordering of returned results is up to the discretion of the provider,
|
||||||
@ -105,6 +99,9 @@ const SearchProvider = new Lang.Class({
|
|||||||
* description) before single matches
|
* description) before single matches
|
||||||
* * Put items which match on a prefix before non-prefix substring 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
|
* This function should be fast; do not perform unindexed full-text searches
|
||||||
* or network queries.
|
* or network queries.
|
||||||
*/
|
*/
|
||||||
@ -112,18 +109,6 @@ const SearchProvider = new Lang.Class({
|
|||||||
throw new Error('Not implemented');
|
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:
|
* getSubsearchResultSet:
|
||||||
* @previousResults: Array of item identifiers
|
* @previousResults: Array of item identifiers
|
||||||
@ -136,46 +121,23 @@ const SearchProvider = new Lang.Class({
|
|||||||
*
|
*
|
||||||
* This allows search providers to only search through the previous
|
* This allows search providers to only search through the previous
|
||||||
* result set, rather than possibly performing a full re-query.
|
* 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) {
|
getSubsearchResultSet: function(previousResults, newTerms) {
|
||||||
throw new Error('Not implemented');
|
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:
|
* getResultMetas:
|
||||||
* @ids: Result identifier strings
|
* @ids: Result identifier strings
|
||||||
*
|
*
|
||||||
* Return an array of objects with 'id', 'name', (both strings) and
|
* Call callback with array of objects with 'id', 'name', (both strings) and
|
||||||
* 'createIcon' (function(size) returning a Clutter.Texture) properties
|
* 'createIcon' (function(size) returning a Clutter.Texture) properties
|
||||||
* with the same number of members as @ids
|
* with the same number of members as @ids
|
||||||
*/
|
*/
|
||||||
getResultMetas: function(ids) {
|
getResultMetas: function(ids, callback) {
|
||||||
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');
|
throw new Error('Not implemented');
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -379,18 +341,18 @@ const SearchSystem = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let previousResultsArr = this._previousResults;
|
||||||
|
|
||||||
let results = [];
|
let results = [];
|
||||||
|
this._previousTerms = terms;
|
||||||
|
this._previousResults = results;
|
||||||
|
|
||||||
if (isSubSearch) {
|
if (isSubSearch) {
|
||||||
for (let i = 0; i < this._providers.length; i++) {
|
for (let i = 0; i < this._providers.length; i++) {
|
||||||
let [provider, previousResults] = this._previousResults[i];
|
let [provider, previousResults] = previousResultsArr[i];
|
||||||
try {
|
try {
|
||||||
if (provider.async) {
|
|
||||||
provider.getSubsearchResultSetAsync(previousResults, terms);
|
|
||||||
results.push([provider, []]);
|
results.push([provider, []]);
|
||||||
} else {
|
provider.getSubsearchResultSet(previousResults, terms);
|
||||||
let providerResults = provider.getSubsearchResultSet(previousResults, terms);
|
|
||||||
results.push([provider, providerResults]);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
|
global.log ('A ' + error.name + ' has occured in ' + provider.title + ': ' + error.message);
|
||||||
}
|
}
|
||||||
@ -399,22 +361,13 @@ const SearchSystem = new Lang.Class({
|
|||||||
for (let i = 0; i < this._providers.length; i++) {
|
for (let i = 0; i < this._providers.length; i++) {
|
||||||
let provider = this._providers[i];
|
let provider = this._providers[i];
|
||||||
try {
|
try {
|
||||||
if (provider.async) {
|
|
||||||
provider.getInitialResultSetAsync(terms);
|
|
||||||
results.push([provider, []]);
|
results.push([provider, []]);
|
||||||
} else {
|
provider.getInitialResultSet(terms);
|
||||||
let providerResults = provider.getInitialResultSet(terms);
|
|
||||||
results.push([provider, providerResults]);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
global.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);
|
Signals.addSignalMethods(SearchSystem.prototype);
|
||||||
|
@ -119,13 +119,7 @@ const GridSearchResults = new Lang.Class({
|
|||||||
if (results.length == 0)
|
if (results.length == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (provider.async) {
|
provider.getResultMetas(results, Lang.bind(this, this.renderResults));
|
||||||
provider.getResultMetasAsync(results,
|
|
||||||
Lang.bind(this, this.renderResults));
|
|
||||||
} else {
|
|
||||||
let metas = provider.getResultMetas(results);
|
|
||||||
this.renderResults(metas);
|
|
||||||
}
|
|
||||||
}));
|
}));
|
||||||
}));
|
}));
|
||||||
this._notDisplayedResult = [];
|
this._notDisplayedResult = [];
|
||||||
@ -179,8 +173,7 @@ const SearchResults = new Lang.Class({
|
|||||||
|
|
||||||
_init: function(searchSystem, openSearchSystem) {
|
_init: function(searchSystem, openSearchSystem) {
|
||||||
this._searchSystem = searchSystem;
|
this._searchSystem = searchSystem;
|
||||||
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateCurrentResults));
|
this._searchSystem.connect('search-updated', Lang.bind(this, this._updateResults));
|
||||||
this._searchSystem.connect('search-completed', Lang.bind(this, this._updateResults));
|
|
||||||
this._openSearchSystem = openSearchSystem;
|
this._openSearchSystem = openSearchSystem;
|
||||||
|
|
||||||
this.actor = new St.BoxLayout({ name: 'searchResults',
|
this.actor = new St.BoxLayout({ name: 'searchResults',
|
||||||
@ -214,10 +207,8 @@ const SearchResults = new Lang.Class({
|
|||||||
this._content.add(this._statusText);
|
this._content.add(this._statusText);
|
||||||
this._providers = this._searchSystem.getProviders();
|
this._providers = this._searchSystem.getProviders();
|
||||||
this._providerMeta = [];
|
this._providerMeta = [];
|
||||||
this._providerMetaResults = {};
|
|
||||||
for (let i = 0; i < this._providers.length; i++) {
|
for (let i = 0; i < this._providers.length; i++) {
|
||||||
this.createProviderMeta(this._providers[i]);
|
this.createProviderMeta(this._providers[i]);
|
||||||
this._providerMetaResults[this.providers[i].title] = [];
|
|
||||||
}
|
}
|
||||||
this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' });
|
this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' });
|
||||||
this.actor.add(this._searchProvidersBox);
|
this.actor.add(this._searchProvidersBox);
|
||||||
@ -290,8 +281,7 @@ const SearchResults = new Lang.Class({
|
|||||||
|
|
||||||
this._providerMeta.push({ provider: provider,
|
this._providerMeta.push({ provider: provider,
|
||||||
actor: providerBox,
|
actor: providerBox,
|
||||||
resultDisplay: resultDisplay,
|
resultDisplay: resultDisplay });
|
||||||
hasPendingResults: false });
|
|
||||||
this._content.add(providerBox);
|
this._content.add(providerBox);
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -307,7 +297,6 @@ const SearchResults = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
_clearDisplay: function() {
|
_clearDisplay: function() {
|
||||||
this._visibleResultsCount = 0;
|
|
||||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||||
let meta = this._providerMeta[i];
|
let meta = this._providerMeta[i];
|
||||||
meta.resultDisplay.clear();
|
meta.resultDisplay.clear();
|
||||||
@ -335,6 +324,8 @@ const SearchResults = new Lang.Class({
|
|||||||
|
|
||||||
doSearch: function (searchString) {
|
doSearch: function (searchString) {
|
||||||
this._searchSystem.updateSearch(searchString);
|
this._searchSystem.updateSearch(searchString);
|
||||||
|
let terms = this._searchSystem.getTerms();
|
||||||
|
this._openSearchSystem.setSearchTerms(terms);
|
||||||
},
|
},
|
||||||
|
|
||||||
_metaForProvider: function(provider) {
|
_metaForProvider: function(provider) {
|
||||||
@ -346,8 +337,6 @@ const SearchResults = new Lang.Class({
|
|||||||
|
|
||||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||||
let meta = this._providerMeta[i];
|
let meta = this._providerMeta[i];
|
||||||
if (meta.hasPendingResults)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!meta.actor.visible)
|
if (!meta.actor.visible)
|
||||||
continue;
|
continue;
|
||||||
@ -372,71 +361,57 @@ const SearchResults = new Lang.Class({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateCurrentResults: function(searchSystem, results) {
|
_updateStatusText: function () {
|
||||||
let terms = searchSystem.getTerms();
|
let haveResults = false;
|
||||||
let [provider, providerResults] = results;
|
|
||||||
let meta = this._metaForProvider(provider);
|
|
||||||
meta.hasPendingResults = false;
|
|
||||||
this._updateProviderResults(provider, providerResults, terms);
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateProviderResults: function(provider, providerResults, terms) {
|
for (let i = 0; i < this._providerMeta.length; ++i)
|
||||||
let meta = this._metaForProvider(provider);
|
if (this._providerMeta[i].resultDisplay.getFirstResult()) {
|
||||||
if (providerResults.length == 0) {
|
haveResults = true;
|
||||||
this._clearDisplayForProvider(provider);
|
break;
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
this._maybeSetInitialSelection();
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateResults: function(searchSystem, results) {
|
if (!haveResults) {
|
||||||
if (results.length == 0) {
|
|
||||||
this._statusText.set_text(_("No matching results."));
|
this._statusText.set_text(_("No matching results."));
|
||||||
this._statusText.show();
|
this._statusText.show();
|
||||||
} else {
|
} else {
|
||||||
this._statusText.hide();
|
this._statusText.hide();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateResults: function(searchSystem, results) {
|
||||||
let terms = searchSystem.getTerms();
|
let terms = searchSystem.getTerms();
|
||||||
this._openSearchSystem.setSearchTerms(terms);
|
let [provider, providerResults] = results;
|
||||||
|
let meta = this._metaForProvider(provider);
|
||||||
|
|
||||||
// To avoid CSS transitions causing flickering when the first search
|
if (providerResults.length == 0) {
|
||||||
// result stays the same, we hide the content while filling in the
|
this._clearDisplayForProvider(provider);
|
||||||
// results.
|
meta.resultDisplay.setResults([], []);
|
||||||
|
this._maybeSetInitialSelection();
|
||||||
|
this._updateStatusText();
|
||||||
|
} else {
|
||||||
|
meta.resultDisplay.setResults(providerResults, terms);
|
||||||
|
let results = meta.resultDisplay.getResultsForDisplay();
|
||||||
|
|
||||||
|
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();
|
this._content.hide();
|
||||||
|
|
||||||
for (let i = 0; i < results.length; i++) {
|
meta.resultDisplay.renderResults(metas);
|
||||||
let [provider, providerResults] = results[i];
|
this._maybeSetInitialSelection();
|
||||||
let meta = this._metaForProvider(provider);
|
this._updateStatusText();
|
||||||
meta.hasPendingResults = provider.async;
|
|
||||||
if (!meta.hasPendingResults)
|
|
||||||
this._updateProviderResults(provider, providerResults, terms);
|
|
||||||
}
|
|
||||||
|
|
||||||
this._content.show();
|
this._content.show();
|
||||||
|
if (this._content.contains(focus))
|
||||||
return true;
|
global.stage.set_key_focus(focus);
|
||||||
|
}));
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
activateDefault: function() {
|
activateDefault: function() {
|
||||||
|
@ -243,6 +243,7 @@ const ShellMountPasswordSource = new Lang.Class({
|
|||||||
this.parent(strings[0]);
|
this.parent(strings[0]);
|
||||||
|
|
||||||
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
|
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
|
||||||
|
this._setSummaryIcon(icon);
|
||||||
|
|
||||||
// add ourselves as a source, and popup the notification
|
// add ourselves as a source, and popup the notification
|
||||||
Main.messageTray.add(this);
|
Main.messageTray.add(this);
|
||||||
|
@ -106,10 +106,7 @@ const Indicator = new Lang.Class({
|
|||||||
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
|
/* TRANSLATORS: this means that bluetooth was disabled by hardware rfkill */
|
||||||
this._killswitch.setStatus(_("hardware disabled"));
|
this._killswitch.setStatus(_("hardware disabled"));
|
||||||
|
|
||||||
if (has_adapter)
|
this.actor.visible = has_adapter;
|
||||||
this.actor.show();
|
|
||||||
else
|
|
||||||
this.actor.hide();
|
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
this._discoverable.actor.show();
|
this._discoverable.actor.show();
|
||||||
@ -308,7 +305,7 @@ const Indicator = new Lang.Class({
|
|||||||
|
|
||||||
_ensureSource: function() {
|
_ensureSource: function() {
|
||||||
if (!this._source) {
|
if (!this._source) {
|
||||||
this._source = new Source();
|
this._source = new MessageTray.Source(_("Bluetooth"), 'bluetooth-active', St.IconType.SYMBOLIC);
|
||||||
Main.messageTray.add(this._source);
|
Main.messageTray.add(this._source);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -333,35 +330,6 @@ 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({
|
const AuthNotification = new Lang.Class({
|
||||||
Name: 'AuthNotification',
|
Name: 'AuthNotification',
|
||||||
Extends: MessageTray.Notification,
|
Extends: MessageTray.Notification,
|
||||||
@ -412,7 +380,7 @@ const ConfirmNotification = new Lang.Class({
|
|||||||
this._applet = applet;
|
this._applet = applet;
|
||||||
this._devicePath = device_path;
|
this._devicePath = device_path;
|
||||||
this.addBody(_("Device %s wants to pair with this computer").format(long_name));
|
this.addBody(_("Device %s wants to pair with this computer").format(long_name));
|
||||||
this.addBody(_("Please confirm whether the PIN '%s' matches the one on the device.").format(pin));
|
this.addBody(_("Please confirm whether the PIN '%06d' matches the one on the device.").format(pin));
|
||||||
|
|
||||||
this.addButton('matches', _("Matches"));
|
this.addButton('matches', _("Matches"));
|
||||||
this.addButton('does-not-match', _("Does not match"));
|
this.addButton('does-not-match', _("Does not match"));
|
||||||
@ -448,6 +416,7 @@ const PinNotification = new Lang.Class({
|
|||||||
this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) {
|
this._entry.connect('key-release-event', Lang.bind(this, function(entry, event) {
|
||||||
let key = event.get_key_symbol();
|
let key = event.get_key_symbol();
|
||||||
if (key == Clutter.KEY_Return) {
|
if (key == Clutter.KEY_Return) {
|
||||||
|
if (this._canActivateOkButton())
|
||||||
this.emit('action-invoked', 'ok');
|
this.emit('action-invoked', 'ok');
|
||||||
return true;
|
return true;
|
||||||
} else if (key == Clutter.KEY_Escape) {
|
} else if (key == Clutter.KEY_Escape) {
|
||||||
@ -461,6 +430,12 @@ const PinNotification = new Lang.Class({
|
|||||||
this.addButton('ok', _("OK"));
|
this.addButton('ok', _("OK"));
|
||||||
this.addButton('cancel', _("Cancel"));
|
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) {
|
this.connect('action-invoked', Lang.bind(this, function(self, action) {
|
||||||
if (action == 'ok') {
|
if (action == 'ok') {
|
||||||
if (this._numeric) {
|
if (this._numeric) {
|
||||||
@ -483,6 +458,11 @@ 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) {
|
grabFocus: function(lockTray) {
|
||||||
this.parent(lockTray);
|
this.parent(lockTray);
|
||||||
global.stage.set_key_focus(this._entry);
|
global.stage.set_key_focus(this._entry);
|
||||||
|
@ -707,10 +707,7 @@ const NMDeviceWired = new Lang.Class({
|
|||||||
// the device
|
// the device
|
||||||
// we can do it here because addConnection and removeConnection
|
// we can do it here because addConnection and removeConnection
|
||||||
// both call _createSection at some point
|
// both call _createSection at some point
|
||||||
if (this._connections.length <= 1)
|
this.section.actor.visible = this._connections.length > 1;
|
||||||
this.section.actor.hide();
|
|
||||||
else
|
|
||||||
this.section.actor.show();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_createAutomaticConnection: function() {
|
_createAutomaticConnection: function() {
|
||||||
@ -1038,13 +1035,8 @@ const NMDeviceWireless = new Lang.Class({
|
|||||||
},
|
},
|
||||||
|
|
||||||
setEnabled: function(enabled) {
|
setEnabled: function(enabled) {
|
||||||
if (enabled) {
|
this.statusItem.actor.visible = enabled;
|
||||||
this.statusItem.actor.show();
|
this.section.actor.visible = enabled;
|
||||||
this.section.actor.show();
|
|
||||||
} else {
|
|
||||||
this.statusItem.actor.hide();
|
|
||||||
this.section.actor.hide();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
activate: function() {
|
activate: function() {
|
||||||
@ -1538,7 +1530,7 @@ const NMApplet = new Lang.Class({
|
|||||||
Extends: PanelMenu.SystemStatusButton,
|
Extends: PanelMenu.SystemStatusButton,
|
||||||
|
|
||||||
_init: function() {
|
_init: function() {
|
||||||
this.parent('network-error', _("Network"));
|
this.parent('network-offline', _("Network"));
|
||||||
|
|
||||||
this._client = NMClient.Client.new();
|
this._client = NMClient.Client.new();
|
||||||
|
|
||||||
@ -1652,7 +1644,10 @@ const NMApplet = new Lang.Class({
|
|||||||
|
|
||||||
_ensureSource: function() {
|
_ensureSource: function() {
|
||||||
if (!this._source) {
|
if (!this._source) {
|
||||||
this._source = new NMMessageTraySource();
|
this._source = new MessageTray.Source(_("Network Manager"),
|
||||||
|
'network-transmit-receive',
|
||||||
|
St.IconType.SYMBOLIC);
|
||||||
|
|
||||||
this._source.connect('destroy', Lang.bind(this, function() {
|
this._source.connect('destroy', Lang.bind(this, function() {
|
||||||
this._source = null;
|
this._source = null;
|
||||||
}));
|
}));
|
||||||
@ -2108,18 +2103,3 @@ 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);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -149,13 +149,9 @@ const Indicator = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (showInput) {
|
|
||||||
this._inputTitle.actor.show();
|
this._inputTitle.actor.visible = showInput;
|
||||||
this._inputSlider.actor.show();
|
this._inputSlider.actor.visible = showInput;
|
||||||
} else {
|
|
||||||
this._inputTitle.actor.hide();
|
|
||||||
this._inputSlider.actor.hide();
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_volumeToIcon: function(volume) {
|
_volumeToIcon: function(volume) {
|
||||||
|
@ -365,8 +365,9 @@ const Client = new Lang.Class({
|
|||||||
|
|
||||||
_ensureSubscriptionSource: function() {
|
_ensureSubscriptionSource: function() {
|
||||||
if (this._subscriptionSource == null) {
|
if (this._subscriptionSource == null) {
|
||||||
this._subscriptionSource = new MultiNotificationSource(
|
this._subscriptionSource = new MessageTray.Source(_("Subscription request"),
|
||||||
_("Subscription request"), 'gtk-dialog-question');
|
'gtk-dialog-question',
|
||||||
|
St.IconType.FULLCOLOR);
|
||||||
Main.messageTray.add(this._subscriptionSource);
|
Main.messageTray.add(this._subscriptionSource);
|
||||||
this._subscriptionSource.connect('destroy', Lang.bind(this, function () {
|
this._subscriptionSource.connect('destroy', Lang.bind(this, function () {
|
||||||
this._subscriptionSource = null;
|
this._subscriptionSource = null;
|
||||||
@ -401,8 +402,9 @@ const Client = new Lang.Class({
|
|||||||
|
|
||||||
_ensureAccountSource: function() {
|
_ensureAccountSource: function() {
|
||||||
if (this._accountSource == null) {
|
if (this._accountSource == null) {
|
||||||
this._accountSource = new MultiNotificationSource(
|
this._accountSource = new MessageTray.Source(_("Connection error"),
|
||||||
_("Connection error"), 'gtk-dialog-error');
|
'gtk-dialog-error',
|
||||||
|
St.IconType.FULLCOLOR);
|
||||||
Main.messageTray.add(this._accountSource);
|
Main.messageTray.add(this._accountSource);
|
||||||
this._accountSource.connect('destroy', Lang.bind(this, function () {
|
this._accountSource.connect('destroy', Lang.bind(this, function () {
|
||||||
this._accountSource = null;
|
this._accountSource = null;
|
||||||
@ -418,14 +420,14 @@ const ChatSource = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function(account, conn, channel, contact, client) {
|
_init: function(account, conn, channel, contact, client) {
|
||||||
this.parent(contact.get_alias());
|
|
||||||
|
|
||||||
this.isChat = true;
|
this.isChat = true;
|
||||||
|
|
||||||
this._account = account;
|
this._account = account;
|
||||||
this._contact = contact;
|
this._contact = contact;
|
||||||
this._client = client;
|
this._client = client;
|
||||||
|
|
||||||
|
this.parent(contact.get_alias());
|
||||||
|
|
||||||
this._pendingMessages = [];
|
this._pendingMessages = [];
|
||||||
|
|
||||||
this._conn = conn;
|
this._conn = conn;
|
||||||
@ -446,8 +448,6 @@ const ChatSource = new Lang.Class({
|
|||||||
this._receivedId = this._channel.connect('message-received', Lang.bind(this, this._messageReceived));
|
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._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._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._notifyAvatarId = this._contact.connect('notify::avatar-file', Lang.bind(this, this._updateAvatarIcon));
|
||||||
this._presenceChangedId = this._contact.connect('presence-changed', Lang.bind(this, this._presenceChanged));
|
this._presenceChangedId = this._contact.connect('presence-changed', Lang.bind(this, this._presenceChanged));
|
||||||
@ -1002,10 +1002,9 @@ const ApproverSource = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function(dispatchOp, text, gicon) {
|
_init: function(dispatchOp, text, gicon) {
|
||||||
this.parent(text);
|
|
||||||
|
|
||||||
this._gicon = gicon;
|
this._gicon = gicon;
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
|
||||||
|
this.parent(text);
|
||||||
|
|
||||||
this._dispatchOp = dispatchOp;
|
this._dispatchOp = dispatchOp;
|
||||||
|
|
||||||
@ -1028,7 +1027,6 @@ const ApproverSource = new Lang.Class({
|
|||||||
|
|
||||||
createNotificationIcon: function() {
|
createNotificationIcon: function() {
|
||||||
return new St.Icon({ gicon: this._gicon,
|
return new St.Icon({ gicon: this._gicon,
|
||||||
icon_type: St.IconType.FULLCOLOR,
|
|
||||||
icon_size: this.ICON_SIZE });
|
icon_size: this.ICON_SIZE });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -1151,40 +1149,6 @@ 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
|
// Subscription request
|
||||||
const SubscriptionRequestNotification = new Lang.Class({
|
const SubscriptionRequestNotification = new Lang.Class({
|
||||||
Name: 'SubscriptionRequestNotification',
|
Name: 'SubscriptionRequestNotification',
|
||||||
|
363
js/ui/unlockDialog.js
Normal file
363
js/ui/unlockDialog.js
Normal file
@ -0,0 +1,363 @@
|
|||||||
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
|
const AccountsService = imports.gi.AccountsService;
|
||||||
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const GdmGreeter = imports.gi.GdmGreeter;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gtk = imports.gi.Gtk;
|
||||||
|
const Lang = imports.lang;
|
||||||
|
const Mainloop = imports.mainloop;
|
||||||
|
const Signals = imports.signals;
|
||||||
|
const Shell = imports.gi.Shell;
|
||||||
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
|
|
||||||
|
const Fprint = imports.gdm.fingerprint;
|
||||||
|
const GdmLoginDialog = imports.gdm.loginDialog;
|
||||||
|
|
||||||
|
function _fadeInActor(actor) {
|
||||||
|
if (actor.opacity == 255 && actor.visible)
|
||||||
|
return;
|
||||||
|
|
||||||
|
actor.show();
|
||||||
|
let [minHeight, naturalHeight] = actor.get_preferred_height(-1);
|
||||||
|
|
||||||
|
actor.opacity = 0;
|
||||||
|
actor.set_height(0);
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ opacity: 255,
|
||||||
|
height: naturalHeight,
|
||||||
|
time: _FADE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: function() {
|
||||||
|
this.set_height(-1);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fadeOutActor(actor) {
|
||||||
|
if (!actor.visible || actor.opacity == 0) {
|
||||||
|
actor.opacity = 0;
|
||||||
|
actor.hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ opacity: 0,
|
||||||
|
height: 0,
|
||||||
|
time: _FADE_ANIMATION_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: function() {
|
||||||
|
this.hide();
|
||||||
|
this.set_height(-1);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// A widget showing the user avatar and name
|
||||||
|
const UserWidget = new Lang.Class({
|
||||||
|
Name: 'UserWidget',
|
||||||
|
|
||||||
|
_init: function(user) {
|
||||||
|
this._user = user;
|
||||||
|
|
||||||
|
this.actor = new St.BoxLayout({ style_class: 'status-chooser',
|
||||||
|
vertical: false,
|
||||||
|
reactive: false
|
||||||
|
});
|
||||||
|
|
||||||
|
this._iconBin = new St.Bin({ style_class: 'status-chooser-user-icon' });
|
||||||
|
this.actor.add(this._iconBin,
|
||||||
|
{ x_fill: true,
|
||||||
|
y_fill: true });
|
||||||
|
|
||||||
|
this._label = new St.Label({ style_class: 'login-dialog-prompt-label',
|
||||||
|
// FIXME:
|
||||||
|
style: 'text-align: right' });
|
||||||
|
this.actor.add(this._label,
|
||||||
|
{ expand: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true
|
||||||
|
});
|
||||||
|
|
||||||
|
this._userLoadedId = this._user.connect('notify::is-loaded',
|
||||||
|
Lang.bind(this,
|
||||||
|
this._updateUser));
|
||||||
|
this._userChangedId = this._user.connect('changed',
|
||||||
|
Lang.bind(this,
|
||||||
|
this._updateUser));
|
||||||
|
this.actor.connect('notify::mapped', Lang.bind(this, function() {
|
||||||
|
if (this.actor.mapped)
|
||||||
|
this._updateUser();
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
// clean up signal handlers
|
||||||
|
if (this._userLoadedId != 0) {
|
||||||
|
this._user.disconnect(this._userLoadedId);
|
||||||
|
this._userLoadedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._userChangedId != 0) {
|
||||||
|
this._user.disconnect(this._userChangedId);
|
||||||
|
this._userChangedId = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.actor.destroy();
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateUser: function() {
|
||||||
|
let iconFile = null;
|
||||||
|
if (this._user.is_loaded) {
|
||||||
|
this._label.text = this._user.get_real_name();
|
||||||
|
iconFile = this._user.get_icon_file();
|
||||||
|
if (!GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
||||||
|
iconFile = null;
|
||||||
|
} else {
|
||||||
|
this._label.text = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iconFile)
|
||||||
|
this._setIconFromFile(iconFile);
|
||||||
|
else
|
||||||
|
this._setIconFromName('avatar-default');
|
||||||
|
},
|
||||||
|
|
||||||
|
// XXX: a GFileIcon instead?
|
||||||
|
_setIconFromFile: function(iconFile) {
|
||||||
|
this._iconBin.set_style('background-image: url("' + iconFile + '");' +
|
||||||
|
'background-size: contain;');
|
||||||
|
this._iconBin.child = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_setIconFromName: function(iconName) {
|
||||||
|
this._iconBin.set_style(null);
|
||||||
|
|
||||||
|
if (iconName != null) {
|
||||||
|
let icon = new St.Icon({ icon_name: iconName,
|
||||||
|
icon_type: St.IconType.SYMBOLIC,
|
||||||
|
icon_size: DIALOG_ICON_SIZE });
|
||||||
|
this._iconBin.child = icon;
|
||||||
|
this._iconBin.show();
|
||||||
|
} else {
|
||||||
|
this._iconBin.child = null;
|
||||||
|
this._iconBin.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const UnlockDialog = new Lang.Class({
|
||||||
|
Name: 'UnlockDialog',
|
||||||
|
Extends: ModalDialog.ModalDialog,
|
||||||
|
|
||||||
|
_init: function() {
|
||||||
|
this.parent({ shellReactive: true,
|
||||||
|
styleClass: 'login-dialog' });
|
||||||
|
|
||||||
|
this._userManager = AccountsService.UserManager.get_default();
|
||||||
|
this._userName = GLib.get_user_name();
|
||||||
|
this._user = this._userManager.get_user(this._userName);
|
||||||
|
|
||||||
|
this._greeterClient = GdmGreeter.Server.new_for_display_sync(null, null);
|
||||||
|
|
||||||
|
this._greeterClient.call_start_conversation_sync(GdmLoginDialog.PASSWORD_SERVICE_NAME, null);
|
||||||
|
|
||||||
|
this._greeterClient.connect('reset',
|
||||||
|
Lang.bind(this, this._onReset));
|
||||||
|
this._greeterClient.connect('ready',
|
||||||
|
Lang.bind(this, this._onReady));
|
||||||
|
this._greeterClient.connect('info',
|
||||||
|
Lang.bind(this, this._onInfo));
|
||||||
|
this._greeterClient.connect('problem',
|
||||||
|
Lang.bind(this, this._onProblem));
|
||||||
|
this._greeterClient.connect('info-query',
|
||||||
|
Lang.bind(this, this._onInfoQuery));
|
||||||
|
this._greeterClient.connect('secret-info-query',
|
||||||
|
Lang.bind(this, this._onSecretInfoQuery));
|
||||||
|
this._greeterClient.connect('session-opened',
|
||||||
|
Lang.bind(this, this._onSessionOpened));
|
||||||
|
this._greeterClient.connect('conversation-stopped',
|
||||||
|
Lang.bind(this, this._onConversationStopped));
|
||||||
|
|
||||||
|
this._fprintManager = new Fprint.FprintManager();
|
||||||
|
this._startFingerprintConversationIfNeeded();
|
||||||
|
|
||||||
|
this._userWidget = new UserWidget(this._user);
|
||||||
|
this.contentLayout.add_actor(this._userWidget.actor);
|
||||||
|
|
||||||
|
this._promptLayout = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout',
|
||||||
|
vertical: false
|
||||||
|
});
|
||||||
|
|
||||||
|
this._promptLabel = new St.Label({ style_class: 'login-dialog-prompt-label' });
|
||||||
|
this._promptLayout.add(this._promptLabel,
|
||||||
|
{ expand: false,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: true,
|
||||||
|
x_align: St.Align.START });
|
||||||
|
|
||||||
|
this._promptEntry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
|
||||||
|
can_focus: true });
|
||||||
|
this._promptLayout.add(this._promptEntry,
|
||||||
|
{ expand: true,
|
||||||
|
x_fill: true,
|
||||||
|
y_fill: false,
|
||||||
|
x_align: St.Align.START });
|
||||||
|
|
||||||
|
this.contentLayout.add_actor(this._promptLayout);
|
||||||
|
|
||||||
|
// Translators: this message is shown below the password entry field
|
||||||
|
// to indicate the user can swipe their finger instead
|
||||||
|
this._promptFingerprintMessage = new St.Label({ text: _("(or swipe finger)"),
|
||||||
|
style_class: 'login-dialog-prompt-fingerprint-message' });
|
||||||
|
this._promptFingerprintMessage.hide();
|
||||||
|
this.contentLayout.add_actor(this._promptFingerprintMessage);
|
||||||
|
|
||||||
|
this._okButton = { label: _("Unlock"),
|
||||||
|
action: Lang.bind(this, this._doUnlock),
|
||||||
|
key: Clutter.KEY_Return,
|
||||||
|
};
|
||||||
|
this.setButtons([this._okButton]);
|
||||||
|
|
||||||
|
this._updateOkButton(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateOkButton: function(sensitive) {
|
||||||
|
this._okButton.button.reactive = sensitive;
|
||||||
|
this._okButton.button.can_focus = sensitive;
|
||||||
|
if (sensitive)
|
||||||
|
this._okButton.button.remove_style_pseudo_class('disabled');
|
||||||
|
else
|
||||||
|
this._okButton.button.add_style_pseudo_class('disabled');
|
||||||
|
},
|
||||||
|
|
||||||
|
_onReset: function() {
|
||||||
|
// I'm not sure this is emitted for external greeters...
|
||||||
|
|
||||||
|
this._greeterClient.call_start_conversation_sync(GdmLoginDialog.PASSWORD_SERVICE_NAME, null);
|
||||||
|
this._startFingerprintConversationIfNeeded();
|
||||||
|
},
|
||||||
|
|
||||||
|
_startFingerprintConversationIfNeeded: function() {
|
||||||
|
this._haveFingerprintReader = false;
|
||||||
|
|
||||||
|
// FIXME: the greeter has a GSettings key for disabling fingerprint auth
|
||||||
|
|
||||||
|
this._fprintManager.GetDefaultDeviceRemote(Lang.bind(this,
|
||||||
|
function(device, error) {
|
||||||
|
if (!error && device)
|
||||||
|
this._haveFingerprintReader = true;
|
||||||
|
|
||||||
|
if (this._haveFingerprintReader)
|
||||||
|
this._greeterClient.call_start_conversation_sync(GdmLoginDialog.FINGERPRINT_SERVICE_NAME, null);
|
||||||
|
}));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onReady: function(greeter, serviceName) {
|
||||||
|
greeter.call_begin_verification_for_user_sync(serviceName, this._userName, null);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onInfo: function(greeter, serviceName, info) {
|
||||||
|
// We don't display fingerprint messages, because they
|
||||||
|
// have words like UPEK in them. Instead we use the messages
|
||||||
|
// as a cue to display our own message.
|
||||||
|
if (serviceName == GdmLoginDialog.FINGERPRINT_SERVICE_NAME &&
|
||||||
|
this._haveFingerprintReader &&
|
||||||
|
(!this._promptFingerprintMessage.visible ||
|
||||||
|
this._promptFingerprintMessage.opacity != 255)) {
|
||||||
|
|
||||||
|
_fadeInActor(this._promptFingerprintMessage);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serviceName != GdmLoginDialog.PASSWORD_SERVICE_NAME)
|
||||||
|
return;
|
||||||
|
Main.notify(info);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onProblem: function(client, serviceName, problem) {
|
||||||
|
// we don't want to show auth failed messages to
|
||||||
|
// users who haven't enrolled their fingerprint.
|
||||||
|
if (serviceName != GdmLoginDialog.PASSWORD_SERVICE_NAME)
|
||||||
|
return;
|
||||||
|
Main.notifyError(problem);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onInfoQuery: function(client, serviceName, question) {
|
||||||
|
// We only expect questions to come from the main auth service
|
||||||
|
if (serviceName != GdmLoginDialog.PASSWORD_SERVICE_NAME)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._promptLabel.text = question;
|
||||||
|
this._promptEntry.text = '';
|
||||||
|
this._promptEntry.clutter_text.set_password_char('');
|
||||||
|
|
||||||
|
this._currentQuery = serviceName;
|
||||||
|
this._updateOkButton(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onSecretInfoQuery: function(client, serviceName, secretQuestion) {
|
||||||
|
// We only expect secret requests to come from the main auth service
|
||||||
|
if (serviceName != GdmLoginDialog.PASSWORD_SERVICE_NAME)
|
||||||
|
return;
|
||||||
|
|
||||||
|
this._promptLabel.text = secretQuestion;
|
||||||
|
this._promptEntry.text = '';
|
||||||
|
this._promptEntry.clutter_text.set_password_char('\u25cf');
|
||||||
|
|
||||||
|
this._currentQuery = serviceName;
|
||||||
|
this._updateOkButton(true);
|
||||||
|
},
|
||||||
|
|
||||||
|
_doUnlock: function() {
|
||||||
|
if (!this._currentQuery)
|
||||||
|
return;
|
||||||
|
|
||||||
|
let query = this._currentQuery;
|
||||||
|
this._currentQuery = null;
|
||||||
|
|
||||||
|
this._updateOkButton(false);
|
||||||
|
|
||||||
|
this._greeterClient.call_answer_query_sync(query, this._promptEntry.text, null);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onConversationStopped: function(client, serviceName) {
|
||||||
|
// if the password service fails, then cancel everything.
|
||||||
|
// But if, e.g., fingerprint fails, still give
|
||||||
|
// password authentication a chance to succeed
|
||||||
|
if (serviceName == GdmLoginDialog.PASSWORD_SERVICE_NAME) {
|
||||||
|
this._greeterClient.call_cancel_sync(null);
|
||||||
|
this.emit('failed');
|
||||||
|
} else if (serviceName == GdmLoginDialog.FINGERPRINT_SERVICE_NAME) {
|
||||||
|
_fadeOutActor(this._promptFingerprintMessage);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onSessionOpened: function(client, serviceName) {
|
||||||
|
// For external greeters, SessionOpened means we succeded
|
||||||
|
// in the authentication process
|
||||||
|
|
||||||
|
// Close the greeter proxy
|
||||||
|
this._greeterClient.run_dispose();
|
||||||
|
this._greeterClient = null;
|
||||||
|
|
||||||
|
this.emit('unlocked');
|
||||||
|
},
|
||||||
|
|
||||||
|
destroy: function() {
|
||||||
|
if (this._greeterClient) {
|
||||||
|
this._greeterClient.run_dispose();
|
||||||
|
this._greeterClient = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.parent();
|
||||||
|
},
|
||||||
|
|
||||||
|
cancel: function() {
|
||||||
|
this._greeterClient.call_cancel_sync(null);
|
||||||
|
|
||||||
|
this.destroy();
|
||||||
|
},
|
||||||
|
});
|
@ -497,13 +497,13 @@ const UserMenuButton = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
this._userManager.connect('notify::is-loaded',
|
this._userManager.connect('notify::is-loaded',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateMultiUser));
|
||||||
this._userManager.connect('notify::has-multiple-users',
|
this._userManager.connect('notify::has-multiple-users',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateMultiUser));
|
||||||
this._userManager.connect('user-added',
|
this._userManager.connect('user-added',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateMultiUser));
|
||||||
this._userManager.connect('user-removed',
|
this._userManager.connect('user-removed',
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateMultiUser));
|
||||||
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
|
this._lockdownSettings.connect('changed::' + DISABLE_USER_SWITCH_KEY,
|
||||||
Lang.bind(this, this._updateSwitchUser));
|
Lang.bind(this, this._updateSwitchUser));
|
||||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||||
@ -542,30 +542,26 @@ const UserMenuButton = new Lang.Class({
|
|||||||
this._name.set_text("");
|
this._name.set_text("");
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateMultiUser: function() {
|
||||||
|
this._updateSwitchUser();
|
||||||
|
this._updateLogout();
|
||||||
|
},
|
||||||
|
|
||||||
_updateSwitchUser: function() {
|
_updateSwitchUser: function() {
|
||||||
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||||
if (allowSwitch &&
|
this._loginScreenItem.actor.visible = allowSwitch &&
|
||||||
this._userManager.can_switch() &&
|
this._userManager.can_switch() &&
|
||||||
this._userManager.has_multiple_users)
|
this._userManager.has_multiple_users;
|
||||||
this._loginScreenItem.actor.show();
|
|
||||||
else
|
|
||||||
this._loginScreenItem.actor.hide();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLogout: function() {
|
_updateLogout: function() {
|
||||||
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||||
if (allowLogout)
|
this._logoutItem.actor.visible = allowLogout && this._userManager.has_multiple_users;
|
||||||
this._logoutItem.actor.show();
|
|
||||||
else
|
|
||||||
this._logoutItem.actor.hide();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateLockScreen: function() {
|
_updateLockScreen: function() {
|
||||||
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
let allowLockScreen = !this._lockdownSettings.get_boolean(DISABLE_LOCK_SCREEN_KEY);
|
||||||
if (allowLockScreen)
|
this._lockScreenItem.actor.visible = allowLockScreen;
|
||||||
this._lockScreenItem.actor.show();
|
|
||||||
else
|
|
||||||
this._lockScreenItem.actor.hide();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updateHaveShutdown: function() {
|
_updateHaveShutdown: function() {
|
||||||
@ -584,19 +580,16 @@ const UserMenuButton = new Lang.Class({
|
|||||||
if (!this._suspendOrPowerOffItem)
|
if (!this._suspendOrPowerOffItem)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!this._haveShutdown && !this._haveSuspend)
|
this._suspendOrPowerOffItem.actor.visible = this._haveShutdown || this._haveSuspend;
|
||||||
this._suspendOrPowerOffItem.actor.hide();
|
|
||||||
else
|
|
||||||
this._suspendOrPowerOffItem.actor.show();
|
|
||||||
|
|
||||||
// If we can't suspend show Power Off... instead
|
// If we can't power off show Suspend instead
|
||||||
// and disable the alt key
|
// and disable the alt key
|
||||||
if (!this._haveSuspend) {
|
if (!this._haveShutdown) {
|
||||||
this._suspendOrPowerOffItem.updateText(_("Power Off..."), null);
|
|
||||||
} else if (!this._haveShutdown) {
|
|
||||||
this._suspendOrPowerOffItem.updateText(_("Suspend"), null);
|
this._suspendOrPowerOffItem.updateText(_("Suspend"), null);
|
||||||
|
} else if (!this._haveSuspend) {
|
||||||
|
this._suspendOrPowerOffItem.updateText(_("Power Off"), null);
|
||||||
} else {
|
} else {
|
||||||
this._suspendOrPowerOffItem.updateText(_("Suspend"), _("Power Off..."));
|
this._suspendOrPowerOffItem.updateText(_("Power Off"), _("Suspend"));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -636,28 +629,26 @@ const UserMenuButton = new Lang.Class({
|
|||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
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 = new PopupMenu.PopupMenuItem(_("System Settings"));
|
||||||
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
|
item = new PopupMenu.PopupAlternatingMenuItem(_("Power Off"),
|
||||||
|
_("Suspend"));
|
||||||
|
this.menu.addMenuItem(item);
|
||||||
|
item.connect('activate', Lang.bind(this, this._onSuspendOrPowerOffActivate));
|
||||||
|
this._suspendOrPowerOffItem = item;
|
||||||
|
this._updateSuspendOrPowerOff();
|
||||||
|
|
||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(item);
|
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 = new PopupMenu.PopupMenuItem(_("Switch User"));
|
||||||
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
item.connect('activate', Lang.bind(this, this._onLoginScreenActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
this._loginScreenItem = item;
|
this._loginScreenItem = item;
|
||||||
|
|
||||||
item = new PopupMenu.PopupMenuItem(_("Log Out..."));
|
item = new PopupMenu.PopupMenuItem(_("Log Out"));
|
||||||
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
this._logoutItem = item;
|
this._logoutItem = item;
|
||||||
@ -665,12 +656,10 @@ const UserMenuButton = new Lang.Class({
|
|||||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
|
|
||||||
item = new PopupMenu.PopupAlternatingMenuItem(_("Suspend"),
|
item = new PopupMenu.PopupMenuItem(_("Lock"));
|
||||||
_("Power Off..."));
|
item.connect('activate', Lang.bind(this, this._onLockScreenActivate));
|
||||||
this.menu.addMenuItem(item);
|
this.menu.addMenuItem(item);
|
||||||
this._suspendOrPowerOffItem = item;
|
this._lockScreenItem = item;
|
||||||
item.connect('activate', Lang.bind(this, this._onSuspendOrPowerOffActivate));
|
|
||||||
this._updateSuspendOrPowerOff();
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_updatePresenceStatus: function(item, event) {
|
_updatePresenceStatus: function(item, event) {
|
||||||
@ -698,12 +687,6 @@ const UserMenuButton = new Lang.Class({
|
|||||||
app.activate();
|
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() {
|
_onPreferencesActivate: function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
|
let app = Shell.AppSystem.get_default().lookup_app('gnome-control-center.desktop');
|
||||||
@ -732,14 +715,14 @@ const UserMenuButton = new Lang.Class({
|
|||||||
_onSuspendOrPowerOffActivate: function() {
|
_onSuspendOrPowerOffActivate: function() {
|
||||||
Main.overview.hide();
|
Main.overview.hide();
|
||||||
|
|
||||||
if (this._haveSuspend &&
|
if (this._haveShutdown &&
|
||||||
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||||
|
this._session.ShutdownRemote();
|
||||||
|
} else {
|
||||||
// Ensure we only suspend after locking the screen
|
// Ensure we only suspend after locking the screen
|
||||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||||
this._upClient.suspend_sync(null);
|
this._upClient.suspend_sync(null);
|
||||||
}));
|
}));
|
||||||
} else {
|
|
||||||
this._session.ShutdownRemote();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -168,8 +168,8 @@ const WandaSearchProvider = new Lang.Class({
|
|||||||
this.parent(_("Your favorite Easter Egg"));
|
this.parent(_("Your favorite Easter Egg"));
|
||||||
},
|
},
|
||||||
|
|
||||||
getResultMetas: function(fish) {
|
getResultMetas: function(fish, callback) {
|
||||||
return [{ 'id': fish[0], // there may be many fish in the sea, but
|
callback([{ 'id': fish[0], // there may be many fish in the sea, but
|
||||||
// only one which speaks the truth!
|
// only one which speaks the truth!
|
||||||
'name': capitalize(fish[0]),
|
'name': capitalize(fish[0]),
|
||||||
'createIcon': function(iconSize) {
|
'createIcon': function(iconSize) {
|
||||||
@ -184,18 +184,19 @@ const WandaSearchProvider = new Lang.Class({
|
|||||||
St.IconType.FULLCOLOR,
|
St.IconType.FULLCOLOR,
|
||||||
iconSize);
|
iconSize);
|
||||||
}
|
}
|
||||||
}];
|
}]);
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialResultSet: function(terms) {
|
getInitialResultSet: function(terms) {
|
||||||
if (terms.join(' ') == MAGIC_FISH_KEY) {
|
if (terms.join(' ') == MAGIC_FISH_KEY) {
|
||||||
return [ FISH_NAME ];
|
this.searchSystem.pushResults(this, [ FISH_NAME ]);
|
||||||
|
} else {
|
||||||
|
this.searchSystem.pushResults(this, []);
|
||||||
}
|
}
|
||||||
return [];
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getSubsearchResultSet: function(previousResults, terms) {
|
getSubsearchResultSet: function(previousResults, terms) {
|
||||||
return this.getInitialResultSet(terms);
|
this.getInitialResultSet(terms);
|
||||||
},
|
},
|
||||||
|
|
||||||
activateResult: function(fish, params) {
|
activateResult: function(fish, params) {
|
||||||
|
@ -53,10 +53,10 @@ const Source = new Lang.Class({
|
|||||||
Extends: MessageTray.Source,
|
Extends: MessageTray.Source,
|
||||||
|
|
||||||
_init: function(app, window) {
|
_init: function(app, window) {
|
||||||
this.parent(app.get_name());
|
|
||||||
this._window = window;
|
this._window = window;
|
||||||
this._app = app;
|
this._app = app;
|
||||||
this._setSummaryIcon(this.createNotificationIcon());
|
|
||||||
|
this.parent(app.get_name());
|
||||||
|
|
||||||
this.signalIDs = [];
|
this.signalIDs = [];
|
||||||
this.signalIDs.push(this._window.connect('notify::demands-attention', Lang.bind(this, function() { this.destroy(); })));
|
this.signalIDs.push(this._window.connect('notify::demands-attention', Lang.bind(this, function() { this.destroy(); })));
|
||||||
|
@ -301,7 +301,8 @@ const WindowClone = new Lang.Class({
|
|||||||
|
|
||||||
if (!this._zoomLightbox)
|
if (!this._zoomLightbox)
|
||||||
this._zoomLightbox = new Lightbox.Lightbox(Main.uiGroup,
|
this._zoomLightbox = new Lightbox.Lightbox(Main.uiGroup,
|
||||||
{ fadeTime: LIGHTBOX_FADE_TIME });
|
{ fadeInTime: LIGHTBOX_FADE_TIME,
|
||||||
|
fadeOutTime: LIGHTBOX_FADE_TIME });
|
||||||
this._zoomLightbox.show();
|
this._zoomLightbox.show();
|
||||||
|
|
||||||
this._zoomLocalOrig = new ScaledPoint(this.actor.x, this.actor.y, this.actor.scale_x, this.actor.scale_y);
|
this._zoomLocalOrig = new ScaledPoint(this.actor.x, this.actor.y, this.actor.scale_x, this.actor.scale_y);
|
||||||
@ -1134,7 +1135,6 @@ const Workspace = new Lang.Class({
|
|||||||
_hideAllOverlays: function() {
|
_hideAllOverlays: function() {
|
||||||
for (let i = 0; i < this._windows.length; i++) {
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
let clone = this._windows[i];
|
let clone = this._windows[i];
|
||||||
Tweener.removeTweens(clone.actor);
|
|
||||||
let overlay = this._windowOverlays[i];
|
let overlay = this._windowOverlays[i];
|
||||||
if (overlay)
|
if (overlay)
|
||||||
overlay.hide();
|
overlay.hide();
|
||||||
@ -1252,7 +1252,7 @@ const Workspace = new Lang.Class({
|
|||||||
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
if (!this._isMyWindow(win) || !this._isOverviewWindow(win))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
let clone = this._addWindowClone(win);
|
let [clone, overlay] = this._addWindowClone(win);
|
||||||
|
|
||||||
if (win._overviewHint) {
|
if (win._overviewHint) {
|
||||||
let x = win._overviewHint.x - this.actor.x;
|
let x = win._overviewHint.x - this.actor.x;
|
||||||
@ -1262,6 +1262,7 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
clone.actor.set_position (x, y);
|
clone.actor.set_position (x, y);
|
||||||
clone.actor.set_scale (scale, scale);
|
clone.actor.set_scale (scale, scale);
|
||||||
|
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||||
} else {
|
} else {
|
||||||
// Position new windows at the top corner of the workspace rather
|
// Position new windows at the top corner of the workspace rather
|
||||||
// than where they were placed for real to avoid the window
|
// than where they were placed for real to avoid the window
|
||||||
@ -1321,7 +1322,10 @@ const Workspace = new Lang.Class({
|
|||||||
|
|
||||||
this.leavingOverview = true;
|
this.leavingOverview = true;
|
||||||
|
|
||||||
this._hideAllOverlays();
|
for (let i = 0; i < this._windows.length; i++) {
|
||||||
|
let clone = this._windows[i];
|
||||||
|
Tweener.removeTweens(clone.actor);
|
||||||
|
}
|
||||||
|
|
||||||
if (this._repositionWindowsId > 0) {
|
if (this._repositionWindowsId > 0) {
|
||||||
Mainloop.source_remove(this._repositionWindowsId);
|
Mainloop.source_remove(this._repositionWindowsId);
|
||||||
@ -1361,6 +1365,7 @@ const Workspace = new Lang.Class({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this._hideAllOverlays();
|
||||||
},
|
},
|
||||||
|
|
||||||
destroy : function() {
|
destroy : function() {
|
||||||
@ -1451,7 +1456,7 @@ const Workspace = new Lang.Class({
|
|||||||
this._windows.push(clone);
|
this._windows.push(clone);
|
||||||
this._windowOverlays.push(overlay);
|
this._windowOverlays.push(overlay);
|
||||||
|
|
||||||
return clone;
|
return [clone, overlay];
|
||||||
},
|
},
|
||||||
|
|
||||||
_onShowOverlayClose: function (windowOverlay) {
|
_onShowOverlayClose: function (windowOverlay) {
|
||||||
|
@ -844,10 +844,7 @@ const WorkspacesDisplay = new Lang.Class({
|
|||||||
if (!primaryView)
|
if (!primaryView)
|
||||||
return;
|
return;
|
||||||
primaryView.actor.opacity = opacity;
|
primaryView.actor.opacity = opacity;
|
||||||
if (opacity == 0)
|
primaryView.actor.visible = opacity != 0;
|
||||||
primaryView.actor.hide();
|
|
||||||
else
|
|
||||||
primaryView.actor.show();
|
|
||||||
}));
|
}));
|
||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
data/gnome-shell.desktop.in
|
data/gnome-shell.desktop.in
|
||||||
data/gnome-shell-extension-prefs.desktop.in
|
data/gnome-shell-extension-prefs.desktop.in
|
||||||
|
data/org.gnome.shell.evolution.calendar.gschema.xml.in
|
||||||
|
393
po/es.po
393
po/es.po
@ -10,8 +10,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: gnome-shell.master\n"
|
"Project-Id-Version: gnome-shell.master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
|
"POT-Creation-Date: 2012-05-10 14:28+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-01 19:11+0200\n"
|
"PO-Revision-Date: 2012-05-10 18:04+0200\n"
|
||||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -141,34 +141,42 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Qué teclado usar"
|
msgstr "Qué teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "El tipo de teclado que usar."
|
msgstr "El tipo de teclado que usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostrar la hora con segundos"
|
msgstr "Mostrar la hora con segundos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Si es cierta, muestra los segundos en la hora."
|
msgstr "Si es cierta, muestra los segundos en la hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostrar la fecha en el reloj"
|
msgstr "Mostrar la fecha en el reloj"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
|
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -176,11 +184,11 @@ msgstr ""
|
|||||||
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
||||||
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -195,22 +203,22 @@ msgid ""
|
|||||||
"thread count on the system."
|
"thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
||||||
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
|
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
|
||||||
"(«sink») desconectado donde grabar el vídeo que se está grabando. "
|
"desconectado donde grabar el vídeo que se está grabando. Generalmente tendrá "
|
||||||
"Generalmente tendrá un punto de origen desconectado; la salida de ese punto "
|
"un punto de origen desconectado; la salida de ese punto se escribirá en el "
|
||||||
"se escribirá en el archivo de salida. Sin embargo, la tubería también puede "
|
"archivo de salida. Sin embargo, la tubería también puede tomar parte en su "
|
||||||
"tomar parte en su propia salida; esto se puede usar para enviar la salida a "
|
"propia salida; esto se puede usar para enviar la salida a un servidor "
|
||||||
"un servidor «icecast» a través de shout2send o similar. Cuando no está "
|
"«icecast» a través de shout2send o similar. Cuando no está establecido o lo "
|
||||||
"establecido o lo está a un valor vacío, se usará la tubería predeterminada. "
|
"está a un valor vacío, se usará la tubería predeterminada. Actualmente es "
|
||||||
"Actualmente es «'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux» y "
|
"«'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux» y graba en WEBM "
|
||||||
"graba en WEBM usando el códec VP8. Se usa %T como marcador de posición para "
|
"usando el códec VP8. Se usa %T como marcador de posición para el número de "
|
||||||
"el número de hilos óptimos en el sistema."
|
"hilos óptimos en el sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -234,53 +242,54 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(o pase el dedo)"
|
msgstr "(o pase el dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "¿No está en la lista?"
|
msgstr "¿No está en la lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:459
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Ventana de inicio de sesión"
|
msgstr "Ventana de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
#: ../js/gdm/powerMenu.js:130 ../js/ui/userMenu.js:588
|
||||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
#: ../js/ui/userMenu.js:592 ../js/ui/userMenu.js:637
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:160
|
#: ../js/gdm/powerMenu.js:135
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:165
|
#: ../js/gdm/powerMenu.js:140 ../js/ui/userMenu.js:590
|
||||||
|
#: ../js/ui/userMenu.js:592 ../js/ui/userMenu.js:636
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
@ -308,19 +317,19 @@ msgstr "Todas"
|
|||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APLICACIONES"
|
msgstr "APLICACIONES"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:375
|
#: ../js/ui/appDisplay.js:374
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "CONFIGURACIÓN"
|
msgstr "CONFIGURACIÓN"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:680
|
#: ../js/ui/appDisplay.js:679
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Ventana nueva"
|
msgstr "Ventana nueva"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:683
|
#: ../js/ui/appDisplay.js:682
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Quitar de los favoritos"
|
msgstr "Quitar de los favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:684
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Añadir a los favoritos"
|
msgstr "Añadir a los favoritos"
|
||||||
|
|
||||||
@ -518,7 +527,7 @@ msgstr "Desconectado"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTOS"
|
msgstr "CONTACTOS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
#: ../js/ui/dash.js:239 ../js/ui/messageTray.js:1209
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
@ -668,11 +677,11 @@ msgstr[1] "El sistema se reiniciará automáticamente en %d segundos."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando el sistema."
|
msgstr "Reiniciando el sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instalar"
|
msgstr "Instalar"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||||
@ -681,7 +690,8 @@ msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "bandeja"
|
msgstr "bandeja"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
@ -693,51 +703,51 @@ msgstr "Contraseña:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Escriba de nuevo:"
|
msgstr "Escriba de nuevo:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:732
|
#: ../js/ui/lookingGlass.js:693
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "No hay extensiones instaladas"
|
msgstr "No hay extensiones instaladas"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:786
|
#: ../js/ui/lookingGlass.js:747
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s no ha generado ningún error."
|
msgstr "%s no ha generado ningún error."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:792
|
#: ../js/ui/lookingGlass.js:753
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Ocultar errores"
|
msgstr "Ocultar errores"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
#: ../js/ui/lookingGlass.js:757 ../js/ui/lookingGlass.js:808
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostrar errores"
|
msgstr "Mostrar errores"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:766
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activado"
|
msgstr "Activado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:769 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:810
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Error"
|
msgstr "Error"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:812
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Caducado"
|
msgstr "Caducado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:814
|
#: ../js/ui/lookingGlass.js:775
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Descargando"
|
msgstr "Descargando"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:835
|
#: ../js/ui/lookingGlass.js:796
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Ver fuente"
|
msgstr "Ver fuente"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:841
|
#: ../js/ui/lookingGlass.js:802
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
@ -747,19 +757,19 @@ msgstr "Página web"
|
|||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "Screencast desde %d %t"
|
msgstr "Screencast desde %d %t"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1200
|
#: ../js/ui/messageTray.js:1202
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1219
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Dar voz"
|
msgstr "Dar voz"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1219
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2490
|
#: ../js/ui/messageTray.js:2492
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información del sistema"
|
msgstr "Información del sistema"
|
||||||
|
|
||||||
@ -805,8 +815,8 @@ msgstr "La red inalámbrica requiere autenticación"
|
|||||||
#: ../js/ui/networkAgent.js:330
|
#: ../js/ui/networkAgent.js:330
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Passwords or encryption keys are required to access the wireless network "
|
"Passwords or encryption keys are required to access the wireless network '%"
|
||||||
"'%s'."
|
"s'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||||
"inalámbrica «%s»."
|
"inalámbrica «%s»."
|
||||||
@ -922,7 +932,7 @@ msgstr "Inténtelo de nuevo,"
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:724
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -930,11 +940,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Introduzca un comando:"
|
msgstr "Introduzca un comando:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:332
|
#: ../js/ui/searchDisplay.js:321
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:414
|
#: ../js/ui/searchDisplay.js:374
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "No se encontró ningún resultado coincidente."
|
msgstr "No se encontró ningún resultado coincidente."
|
||||||
|
|
||||||
@ -1006,9 +1016,9 @@ msgid "Large Text"
|
|||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
#: ../js/ui/status/bluetooth.js:255 ../js/ui/status/bluetooth.js:338
|
||||||
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
#: ../js/ui/status/bluetooth.js:368 ../js/ui/status/bluetooth.js:404
|
||||||
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
#: ../js/ui/status/bluetooth.js:433 ../js/ui/status/network.js:890
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -1033,102 +1043,102 @@ msgstr "Configuración de Bluetooth"
|
|||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "hardware desactivado"
|
msgstr "hardware desactivado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:203
|
#: ../js/ui/status/bluetooth.js:200
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Conexión"
|
msgstr "Conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
#: ../js/ui/status/bluetooth.js:211 ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "deconectando…"
|
msgstr "deconectando…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
#: ../js/ui/status/bluetooth.js:224 ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "conectando…"
|
msgstr "conectando…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:245
|
#: ../js/ui/status/bluetooth.js:242
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Enviar archivos…"
|
msgstr "Enviar archivos…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:250
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Examinar archivos…"
|
msgstr "Examinar archivos…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:259
|
#: ../js/ui/status/bluetooth.js:256
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Error al examinar el dispositivo"
|
msgstr "Error al examinar el dispositivo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:260
|
#: ../js/ui/status/bluetooth.js:257
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»"
|
msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:268
|
#: ../js/ui/status/bluetooth.js:265
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Configuración del teclado"
|
msgstr "Configuración del teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:271
|
#: ../js/ui/status/bluetooth.js:268
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Ajustes del ratón…"
|
msgstr "Ajustes del ratón…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
#: ../js/ui/status/bluetooth.js:273 ../js/ui/status/volume.js:59
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Configuración del sonido"
|
msgstr "Configuración del sonido"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:369
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Solicitud de autorización de %s"
|
msgstr "Solicitud de autorización de %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:375
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "El dispositivo %s quiere acceder al servicio «%s»"
|
msgstr "El dispositivo %s quiere acceder al servicio «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Conceder acceso siempre"
|
msgstr "Conceder acceso siempre"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Conceder sólo esta vez"
|
msgstr "Conceder sólo esta vez"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:379 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:408
|
#: ../js/ui/status/bluetooth.js:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Confirmación de emparejamiento para «%s»"
|
msgstr "Confirmación de emparejamiento para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
|
msgstr "El dispositivo «%s» quiere emparejarse con este equipo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:415
|
#: ../js/ui/status/bluetooth.js:412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo."
|
msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:417
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Coincide"
|
msgstr "Coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "No coincide"
|
msgstr "No coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:437
|
#: ../js/ui/status/bluetooth.js:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Solicitud de emparejamiento para «%s»"
|
msgstr "Solicitud de emparejamiento para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:442
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Introduzca el PIN mencionado en el dispositivo."
|
msgstr "Introduzca el PIN mencionado en el dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:461
|
#: ../js/ui/status/bluetooth.js:458
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
@ -1181,13 +1191,13 @@ msgstr "no disponible"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "falló la conexión"
|
msgstr "falló la conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1497
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Más…"
|
msgstr "Más…"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1432
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Conectada (privada)"
|
msgstr "Conectada (privada)"
|
||||||
|
|
||||||
@ -1195,69 +1205,69 @@ msgstr "Conectada (privada)"
|
|||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Ethernet automática"
|
msgstr "Ethernet automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:757
|
#: ../js/ui/status/network.js:754
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Banda ancha automática"
|
msgstr "Banda ancha automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:760
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Marcado automático"
|
msgstr "Marcado automático"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
#: ../js/ui/status/network.js:876 ../js/ui/status/network.js:1444
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "%s automática"
|
msgstr "%s automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:881
|
#: ../js/ui/status/network.js:878
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Bluetooth automático"
|
msgstr "Bluetooth automático"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1454
|
#: ../js/ui/status/network.js:1446
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Inalámbrica automática"
|
msgstr "Inalámbrica automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1541
|
#: ../js/ui/status/network.js:1533
|
||||||
msgid "Network"
|
msgid "Network"
|
||||||
msgstr "Red"
|
msgstr "Red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1548
|
#: ../js/ui/status/network.js:1540
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Activar red"
|
msgstr "Activar red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1560
|
#: ../js/ui/status/network.js:1552
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Cableada"
|
msgstr "Cableada"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1571
|
#: ../js/ui/status/network.js:1563
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Inalámbrica"
|
msgstr "Inalámbrica"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1581
|
#: ../js/ui/status/network.js:1573
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Banda ancha móvil"
|
msgstr "Banda ancha móvil"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1591
|
#: ../js/ui/status/network.js:1583
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "Conexiones VPN"
|
msgstr "Conexiones VPN"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1602
|
#: ../js/ui/status/network.js:1594
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Configuración de la red"
|
msgstr "Configuración de la red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1731
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Falló la conexión"
|
msgstr "Falló la conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1740
|
#: ../js/ui/status/network.js:1732
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Falló la activación de la conexión de red"
|
msgstr "Falló la activación de la conexión de red"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1993
|
#: ../js/ui/status/network.js:1985
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "La red está desactivada"
|
msgstr "La red está desactivada"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2117
|
#: ../js/ui/status/network.js:2109
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Gestor de la red"
|
msgstr "Gestor de la red"
|
||||||
|
|
||||||
@ -1409,35 +1419,35 @@ msgstr "%s está ocupado/a."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
|
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
|
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
|
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Ahora %s se llama %s"
|
msgstr "Ahora %s se llama %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitación a %s"
|
msgstr "Invitación a %s"
|
||||||
@ -1445,35 +1455,35 @@ msgstr "Invitación a %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s le está invitando a unirse a %s"
|
msgstr "%s le está invitando a unirse a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Rechazar"
|
msgstr "Rechazar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videollamada de %s"
|
msgstr "Videollamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Llamada de %s"
|
msgstr "Llamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Responder"
|
msgstr "Responder"
|
||||||
|
|
||||||
@ -1482,112 +1492,112 @@ msgstr "Responder"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s le está enviando %s"
|
msgstr "%s le está enviando %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s solicita permiso para ver cuándo está en línea"
|
msgstr "%s solicita permiso para ver cuándo está en línea"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Error de la red"
|
msgstr "Error de la red"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Falló la autenticación"
|
msgstr "Falló la autenticación"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Error de cifrado"
|
msgstr "Error de cifrado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificado no proporcionado"
|
msgstr "Certificado no proporcionado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "No se confía en el certificado"
|
msgstr "No se confía en el certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificado caducado"
|
msgstr "Certificado caducado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificado no activado"
|
msgstr "Certificado no activado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "El nombre del servidor dle certificado no coincide"
|
msgstr "El nombre del servidor dle certificado no coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "La huella del certificado no coincide"
|
msgstr "La huella del certificado no coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificado autofirmado"
|
msgstr "Certificado autofirmado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "El estado está establecido a «desconectado»"
|
msgstr "El estado está establecido a «desconectado»"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "El cifrado no está disponible"
|
msgstr "El cifrado no está disponible"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "El certificado no es válido"
|
msgstr "El certificado no es válido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Se ha rechazado la conexión"
|
msgstr "Se ha rechazado la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "No se puede establecer la conexión"
|
msgstr "No se puede establecer la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Se ha perdido la conexión"
|
msgstr "Se ha perdido la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Esta cuenta ya está conectada al servidor"
|
msgstr "Esta cuenta ya está conectada al servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "La cuenta ya existe en el servidor"
|
msgstr "La cuenta ya existe en el servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Se ha revocado el certificado"
|
msgstr "Se ha revocado el certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
||||||
"débil"
|
"débil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1596,26 +1606,26 @@ msgstr ""
|
|||||||
"certificado del servidor exceden los límites impuestos por la biblioteca de "
|
"certificado del servidor exceden los límites impuestos por la biblioteca de "
|
||||||
"criptografía"
|
"criptografía"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Error interno"
|
msgstr "Error interno"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Falló la conexión a %s"
|
msgstr "Falló la conexión a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Reconectar"
|
msgstr "Reconectar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Editar cuenta"
|
msgstr "Editar cuenta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón desconocida"
|
msgstr "Razón desconocida"
|
||||||
|
|
||||||
@ -1631,39 +1641,34 @@ msgstr "Inactivo"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "No disponible"
|
msgstr "No disponible"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:624
|
||||||
msgid "Power Off..."
|
|
||||||
msgstr "Apagar…"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificaciones"
|
msgstr "Notificaciones"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:632
|
||||||
msgid "Online Accounts"
|
|
||||||
msgstr "Cuentas en línea"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:643
|
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Configuración del sistema"
|
msgstr "Configuración del sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:646
|
||||||
msgid "Lock Screen"
|
|
||||||
msgstr "Bloquear la pantalla"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:655
|
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:660
|
#: ../js/ui/userMenu.js:651
|
||||||
msgid "Log Out..."
|
#| msgctxt "title"
|
||||||
msgstr "Cerrar la sesión…"
|
#| msgid "Log Out"
|
||||||
|
msgid "Log Out"
|
||||||
|
msgstr "Cerrar la sesión"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:688
|
#: ../js/ui/userMenu.js:659
|
||||||
|
#| msgid "Clock"
|
||||||
|
msgid "Lock"
|
||||||
|
msgstr "Bloquear"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:677
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:689
|
#: ../js/ui/userMenu.js:678
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1709,7 +1714,7 @@ msgstr "«%s» está preparado"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1718,14 +1723,14 @@ msgstr[1] "%u salidas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sonidos del sistema"
|
msgstr "Sonidos del sistema"
|
||||||
|
|
||||||
@ -1784,6 +1789,18 @@ msgstr "Sistema de archivos"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Power Off..."
|
||||||
|
#~ msgstr "Apagar…"
|
||||||
|
|
||||||
|
#~ msgid "Online Accounts"
|
||||||
|
#~ msgstr "Cuentas en línea"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "Bloquear la pantalla"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "Cerrar la sesión…"
|
||||||
|
|
||||||
#~ msgid "RECENT ITEMS"
|
#~ msgid "RECENT ITEMS"
|
||||||
#~ msgstr "ELEMENTOS RECIENTES"
|
#~ msgstr "ELEMENTOS RECIENTES"
|
||||||
|
|
||||||
@ -2043,9 +2060,6 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid "Can't remove the first workspace."
|
#~ msgid "Can't remove the first workspace."
|
||||||
#~ msgstr "No se puede quitar el primer área de trabajo."
|
#~ msgstr "No se puede quitar el primer área de trabajo."
|
||||||
|
|
||||||
#~ msgid "Clock"
|
|
||||||
#~ msgstr "Reloj"
|
|
||||||
|
|
||||||
#~ msgid "Customize the panel clock"
|
#~ msgid "Customize the panel clock"
|
||||||
#~ msgstr "Personalizar el reloj del panel"
|
#~ msgstr "Personalizar el reloj del panel"
|
||||||
|
|
||||||
@ -2059,8 +2073,8 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
||||||
#~ "in time."
|
#~ "in time."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
|
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
|
||||||
#~ "segundos en la hora."
|
#~ "en la hora."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the format used by the panel clock when the format key "
|
#~ "This key specifies the format used by the panel clock when the format key "
|
||||||
@ -2077,19 +2091,18 @@ msgstr "%1$s: %2$s"
|
|||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "This key specifies the hour format used by the panel clock. Possible "
|
#~ "This key specifies the hour format used by the panel clock. Possible "
|
||||||
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
||||||
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
|
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
|
||||||
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
|
#~ "01-01. If set to \"custom\", the clock will display time according to the "
|
||||||
#~ "to the format specified in the custom_format key. Note that if set to "
|
#~ "format specified in the custom_format key. Note that if set to either "
|
||||||
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
|
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
|
||||||
#~ "ignored."
|
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
||||||
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
|
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
|
||||||
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
|
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
|
||||||
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
|
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
|
||||||
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
|
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
|
||||||
#~ "especificado en la clave «custom_format». Note que si se establece a "
|
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
|
||||||
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
|
#~ "ignoran las claves «show_date» y «show_seconds»."
|
||||||
|
|
||||||
#~ msgid "Clock Format"
|
#~ msgid "Clock Format"
|
||||||
#~ msgstr "Formato del reloj"
|
#~ msgstr "Formato del reloj"
|
||||||
|
345
po/gl.po
345
po/gl.po
@ -12,8 +12,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-03-31 00:07+0200\n"
|
"POT-Creation-Date: 2012-05-11 11:31+0200\n"
|
||||||
"PO-Revision-Date: 2012-03-31 00:08+0200\n"
|
"PO-Revision-Date: 2012-05-11 11:31+0200\n"
|
||||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
||||||
"Language: gl\n"
|
"Language: gl\n"
|
||||||
@ -144,34 +144,43 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Combinación de teclas para trocar a gravadora de pantalla"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr ""
|
||||||
|
"Combinación de teclas para iniciar/deter a gravadora de pantalla incrustada."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Que teclado usar"
|
msgstr "Que teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "O tipo de teclado a usar."
|
msgstr "O tipo de teclado a usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostrar a hora con segundos"
|
msgstr "Mostrar a hora con segundos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Se é certa, móstranse os segundos na hora."
|
msgstr "Se é certa, móstranse os segundos na hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostrar a data no reloxo"
|
msgstr "Mostrar a data no reloxo"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
|
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Taxa de marcos usada para gravar «screencast»."
|
msgstr "Taxa de marcos usada para gravar «screencast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -179,11 +188,11 @@ msgstr ""
|
|||||||
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
||||||
"«screencast» de GNOME Shell, en marcos por segundo."
|
"«screencast» de GNOME Shell, en marcos por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -209,11 +218,11 @@ msgstr ""
|
|||||||
"códec VP8. Úsase %T como marcador de posición para o número de fillos "
|
"códec VP8. Úsase %T como marcador de posición para o número de fillos "
|
||||||
"óptimos no sistema."
|
"óptimos no sistema."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -237,67 +246,68 @@ msgid "Select an extension to configure using the combobox above."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sesión…"
|
msgstr "Sesión…"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ou pase o dedo)"
|
msgstr "(ou pase o dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Non está na lista?"
|
msgstr "Non está na lista?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:459
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sesión"
|
msgstr "Iniciar sesión"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Xanela de inicio de sesión"
|
msgstr "Xanela de inicio de sesión"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
#: ../js/gdm/powerMenu.js:130 ../js/ui/userMenu.js:588
|
||||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
#: ../js/ui/userMenu.js:592 ../js/ui/userMenu.js:637
|
||||||
msgid "Suspend"
|
msgid "Suspend"
|
||||||
msgstr "Suspender"
|
msgstr "Suspender"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:160
|
#: ../js/gdm/powerMenu.js:135
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "Reiniciar"
|
msgstr "Reiniciar"
|
||||||
|
|
||||||
#: ../js/gdm/powerMenu.js:165
|
#: ../js/gdm/powerMenu.js:140 ../js/ui/userMenu.js:590
|
||||||
|
#: ../js/ui/userMenu.js:592 ../js/ui/userMenu.js:636
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "Apagar"
|
msgstr "Apagar"
|
||||||
|
|
||||||
#: ../js/misc/util.js:92
|
#: ../js/misc/util.js:93
|
||||||
msgid "Command not found"
|
msgid "Command not found"
|
||||||
msgstr "Orde non atopada"
|
msgstr "Orde non atopada"
|
||||||
|
|
||||||
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
#. Replace "Error invoking GLib.shell_parse_argv: " with
|
||||||
#. something nicer
|
#. something nicer
|
||||||
#: ../js/misc/util.js:119
|
#: ../js/misc/util.js:124
|
||||||
msgid "Could not parse command:"
|
msgid "Could not parse command:"
|
||||||
msgstr "Non foi posíbel analizar a orde:"
|
msgstr "Non foi posíbel analizar a orde:"
|
||||||
|
|
||||||
#: ../js/misc/util.js:127
|
#: ../js/misc/util.js:132
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Execution of '%s' failed:"
|
msgid "Execution of '%s' failed:"
|
||||||
msgstr "Produciuse un fallo na execución de «%s»:"
|
msgstr "Produciuse un fallo na execución de «%s»:"
|
||||||
@ -311,19 +321,19 @@ msgstr "Todos"
|
|||||||
msgid "APPLICATIONS"
|
msgid "APPLICATIONS"
|
||||||
msgstr "APLICATIVOS"
|
msgstr "APLICATIVOS"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:375
|
#: ../js/ui/appDisplay.js:374
|
||||||
msgid "SETTINGS"
|
msgid "SETTINGS"
|
||||||
msgstr "CONFIGURACIÓN"
|
msgstr "CONFIGURACIÓN"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:680
|
#: ../js/ui/appDisplay.js:679
|
||||||
msgid "New Window"
|
msgid "New Window"
|
||||||
msgstr "Xanela nova"
|
msgstr "Xanela nova"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:683
|
#: ../js/ui/appDisplay.js:682
|
||||||
msgid "Remove from Favorites"
|
msgid "Remove from Favorites"
|
||||||
msgstr "Eliminar dos favoritos"
|
msgstr "Eliminar dos favoritos"
|
||||||
|
|
||||||
#: ../js/ui/appDisplay.js:684
|
#: ../js/ui/appDisplay.js:683
|
||||||
msgid "Add to Favorites"
|
msgid "Add to Favorites"
|
||||||
msgstr "Engadir aos favoritos"
|
msgstr "Engadir aos favoritos"
|
||||||
|
|
||||||
@ -521,7 +531,7 @@ msgstr "Desconectado"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "CONTACTOS"
|
msgstr "CONTACTOS"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
#: ../js/ui/dash.js:239 ../js/ui/messageTray.js:1209
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Quitar"
|
msgstr "Quitar"
|
||||||
|
|
||||||
@ -670,11 +680,11 @@ msgstr[1] "O seu computador reiniciarase automaticamente en %d segundos."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando o sistema."
|
msgstr "Reiniciando o sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instalar"
|
msgstr "Instalar"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
||||||
@ -683,7 +693,8 @@ msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "área de notificación"
|
msgstr "área de notificación"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
@ -695,51 +706,51 @@ msgstr "Contrasinal:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Escriba de novo:"
|
msgstr "Escriba de novo:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:732
|
#: ../js/ui/lookingGlass.js:693
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Non hai ningunha extensión instalada"
|
msgstr "Non hai ningunha extensión instalada"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:786
|
#: ../js/ui/lookingGlass.js:747
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s non xerou ningún erro."
|
msgstr "%s non xerou ningún erro."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:792
|
#: ../js/ui/lookingGlass.js:753
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Ocultar erros"
|
msgstr "Ocultar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
#: ../js/ui/lookingGlass.js:757 ../js/ui/lookingGlass.js:808
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Mostrar erros"
|
msgstr "Mostrar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:766
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Activado"
|
msgstr "Activado"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:769 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desactivado"
|
msgstr "Desactivado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:810
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erro"
|
msgstr "Erro"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:812
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Caducado"
|
msgstr "Caducado"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:814
|
#: ../js/ui/lookingGlass.js:775
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Descargando"
|
msgstr "Descargando"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:835
|
#: ../js/ui/lookingGlass.js:796
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Ver fonte"
|
msgstr "Ver fonte"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:841
|
#: ../js/ui/lookingGlass.js:802
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Páxina web"
|
msgstr "Páxina web"
|
||||||
|
|
||||||
@ -749,19 +760,19 @@ msgstr "Páxina web"
|
|||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "Screencast desde %d %t"
|
msgstr "Screencast desde %d %t"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1200
|
#: ../js/ui/messageTray.js:1202
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr "Abrir"
|
msgstr "Abrir"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1219
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "Desactivar silencio"
|
msgstr "Desactivar silencio"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1219
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "Silenciar"
|
msgstr "Silenciar"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2490
|
#: ../js/ui/messageTray.js:2492
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "Información do sistema"
|
msgstr "Información do sistema"
|
||||||
|
|
||||||
@ -924,7 +935,7 @@ msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:724
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -932,11 +943,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "Escriba unha orde:"
|
msgstr "Escriba unha orde:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:332
|
#: ../js/ui/searchDisplay.js:321
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Buscando…"
|
msgstr "Buscando…"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:414
|
#: ../js/ui/searchDisplay.js:374
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Non hai resultados que coincidan."
|
msgstr "Non hai resultados que coincidan."
|
||||||
|
|
||||||
@ -1008,9 +1019,9 @@ msgid "Large Text"
|
|||||||
msgstr "Texto grande"
|
msgstr "Texto grande"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
||||||
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
#: ../js/ui/status/bluetooth.js:255 ../js/ui/status/bluetooth.js:338
|
||||||
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
#: ../js/ui/status/bluetooth.js:368 ../js/ui/status/bluetooth.js:404
|
||||||
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
#: ../js/ui/status/bluetooth.js:433 ../js/ui/status/network.js:890
|
||||||
msgid "Bluetooth"
|
msgid "Bluetooth"
|
||||||
msgstr "Bluetooth"
|
msgstr "Bluetooth"
|
||||||
|
|
||||||
@ -1035,102 +1046,102 @@ msgstr "Preferencias do Bluetooth"
|
|||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "hardware desactivado"
|
msgstr "hardware desactivado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:203
|
#: ../js/ui/status/bluetooth.js:200
|
||||||
msgid "Connection"
|
msgid "Connection"
|
||||||
msgstr "Conexión"
|
msgstr "Conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
#: ../js/ui/status/bluetooth.js:211 ../js/ui/status/network.js:491
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "desconectando…"
|
msgstr "desconectando…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
#: ../js/ui/status/bluetooth.js:224 ../js/ui/status/network.js:497
|
||||||
msgid "connecting..."
|
msgid "connecting..."
|
||||||
msgstr "conectando…"
|
msgstr "conectando…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:245
|
#: ../js/ui/status/bluetooth.js:242
|
||||||
msgid "Send Files..."
|
msgid "Send Files..."
|
||||||
msgstr "Enviar ficheiros…"
|
msgstr "Enviar ficheiros…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:250
|
#: ../js/ui/status/bluetooth.js:247
|
||||||
msgid "Browse Files..."
|
msgid "Browse Files..."
|
||||||
msgstr "Explorar ficheiros…"
|
msgstr "Explorar ficheiros…"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:259
|
#: ../js/ui/status/bluetooth.js:256
|
||||||
msgid "Error browsing device"
|
msgid "Error browsing device"
|
||||||
msgstr "Produciuse un erro ao explorar o dispositivo"
|
msgstr "Produciuse un erro ao explorar o dispositivo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:260
|
#: ../js/ui/status/bluetooth.js:257
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "The requested device cannot be browsed, error is '%s'"
|
msgid "The requested device cannot be browsed, error is '%s'"
|
||||||
msgstr "O dispositivo solicitado non pode explorarse, o erro é «%s»"
|
msgstr "O dispositivo solicitado non pode explorarse, o erro é «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:268
|
#: ../js/ui/status/bluetooth.js:265
|
||||||
msgid "Keyboard Settings"
|
msgid "Keyboard Settings"
|
||||||
msgstr "Preferencias do teclado"
|
msgstr "Preferencias do teclado"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:271
|
#: ../js/ui/status/bluetooth.js:268
|
||||||
msgid "Mouse Settings"
|
msgid "Mouse Settings"
|
||||||
msgstr "Preferencias do rato"
|
msgstr "Preferencias do rato"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
#: ../js/ui/status/bluetooth.js:273 ../js/ui/status/volume.js:59
|
||||||
msgid "Sound Settings"
|
msgid "Sound Settings"
|
||||||
msgstr "Preferencias do son"
|
msgstr "Preferencias do son"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:372
|
#: ../js/ui/status/bluetooth.js:369
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Authorization request from %s"
|
msgid "Authorization request from %s"
|
||||||
msgstr "Solicitude de autorización de %s"
|
msgstr "Solicitude de autorización de %s"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:378
|
#: ../js/ui/status/bluetooth.js:375
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants access to the service '%s'"
|
msgid "Device %s wants access to the service '%s'"
|
||||||
msgstr "O dispositivo %s quere acceder ao servizo «%s»"
|
msgstr "O dispositivo %s quere acceder ao servizo «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:380
|
#: ../js/ui/status/bluetooth.js:377
|
||||||
msgid "Always grant access"
|
msgid "Always grant access"
|
||||||
msgstr "Conceder acceso sempre"
|
msgstr "Conceder acceso sempre"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:381
|
#: ../js/ui/status/bluetooth.js:378
|
||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Conceder só esta vez"
|
msgstr "Conceder só esta vez"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:379 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rexeitar"
|
msgstr "Rexeitar"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:408
|
#: ../js/ui/status/bluetooth.js:405
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing confirmation for %s"
|
msgid "Pairing confirmation for %s"
|
||||||
msgstr "Confirmación de emparellado para «%s»"
|
msgstr "Confirmación de emparellado para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
|
#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:441
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Device %s wants to pair with this computer"
|
msgid "Device %s wants to pair with this computer"
|
||||||
msgstr "O dispositivo «%s» quere emparellarse con este equipo"
|
msgstr "O dispositivo «%s» quere emparellarse con este equipo"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:415
|
#: ../js/ui/status/bluetooth.js:412
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
msgid "Please confirm whether the PIN '%s' matches the one on the device."
|
||||||
msgstr "Confirme que o PIN mostrado en «%s» coincide co do dispositivo."
|
msgstr "Confirme que o PIN mostrado en «%s» coincide co do dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:417
|
#: ../js/ui/status/bluetooth.js:414
|
||||||
msgid "Matches"
|
msgid "Matches"
|
||||||
msgstr "Coincide"
|
msgstr "Coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:418
|
#: ../js/ui/status/bluetooth.js:415
|
||||||
msgid "Does not match"
|
msgid "Does not match"
|
||||||
msgstr "Non coincide"
|
msgstr "Non coincide"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:437
|
#: ../js/ui/status/bluetooth.js:434
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pairing request for %s"
|
msgid "Pairing request for %s"
|
||||||
msgstr "Solicitude de emparellamento para «%s»"
|
msgstr "Solicitude de emparellamento para «%s»"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:445
|
#: ../js/ui/status/bluetooth.js:442
|
||||||
msgid "Please enter the PIN mentioned on the device."
|
msgid "Please enter the PIN mentioned on the device."
|
||||||
msgstr "Escriba o PIN mencionado no dispositivo."
|
msgstr "Escriba o PIN mencionado no dispositivo."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:461
|
#: ../js/ui/status/bluetooth.js:458
|
||||||
msgid "OK"
|
msgid "OK"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
@ -1183,13 +1194,13 @@ msgstr "non dispoñíbel"
|
|||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "conexión fallida"
|
msgstr "conexión fallida"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1497
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
msgstr "Máis…"
|
msgstr "Máis…"
|
||||||
|
|
||||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||||
#. and we cannot access its settings (including the name)
|
#. and we cannot access its settings (including the name)
|
||||||
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1432
|
||||||
msgid "Connected (private)"
|
msgid "Connected (private)"
|
||||||
msgstr "Conectada (privada)"
|
msgstr "Conectada (privada)"
|
||||||
|
|
||||||
@ -1197,69 +1208,69 @@ msgstr "Conectada (privada)"
|
|||||||
msgid "Auto Ethernet"
|
msgid "Auto Ethernet"
|
||||||
msgstr "Ethernet automática"
|
msgstr "Ethernet automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:757
|
#: ../js/ui/status/network.js:754
|
||||||
msgid "Auto broadband"
|
msgid "Auto broadband"
|
||||||
msgstr "Banda larga automática"
|
msgstr "Banda larga automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:760
|
#: ../js/ui/status/network.js:757
|
||||||
msgid "Auto dial-up"
|
msgid "Auto dial-up"
|
||||||
msgstr "Marcado automático"
|
msgstr "Marcado automático"
|
||||||
|
|
||||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||||
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
#: ../js/ui/status/network.js:876 ../js/ui/status/network.js:1444
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Auto %s"
|
msgid "Auto %s"
|
||||||
msgstr "%s automática"
|
msgstr "%s automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:881
|
#: ../js/ui/status/network.js:878
|
||||||
msgid "Auto bluetooth"
|
msgid "Auto bluetooth"
|
||||||
msgstr "Bluetooth automática"
|
msgstr "Bluetooth automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1454
|
#: ../js/ui/status/network.js:1446
|
||||||
msgid "Auto wireless"
|
msgid "Auto wireless"
|
||||||
msgstr "Sen fíos automática"
|
msgstr "Sen fíos automática"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1541
|
#: ../js/ui/status/network.js:1533
|
||||||
msgid "Network"
|
msgid "Network"
|
||||||
msgstr "Rede"
|
msgstr "Rede"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1548
|
#: ../js/ui/status/network.js:1540
|
||||||
msgid "Enable networking"
|
msgid "Enable networking"
|
||||||
msgstr "Activar rede"
|
msgstr "Activar rede"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1560
|
#: ../js/ui/status/network.js:1552
|
||||||
msgid "Wired"
|
msgid "Wired"
|
||||||
msgstr "Con fíos"
|
msgstr "Con fíos"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1571
|
#: ../js/ui/status/network.js:1563
|
||||||
msgid "Wireless"
|
msgid "Wireless"
|
||||||
msgstr "Sen fíos"
|
msgstr "Sen fíos"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1581
|
#: ../js/ui/status/network.js:1573
|
||||||
msgid "Mobile broadband"
|
msgid "Mobile broadband"
|
||||||
msgstr "Banda larga móbil"
|
msgstr "Banda larga móbil"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1591
|
#: ../js/ui/status/network.js:1583
|
||||||
msgid "VPN Connections"
|
msgid "VPN Connections"
|
||||||
msgstr "Conexións VPN"
|
msgstr "Conexións VPN"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1602
|
#: ../js/ui/status/network.js:1594
|
||||||
msgid "Network Settings"
|
msgid "Network Settings"
|
||||||
msgstr "Preferencias da rede"
|
msgstr "Preferencias da rede"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1731
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "Produciuse un fallo na conexión"
|
msgstr "Produciuse un fallo na conexión"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1740
|
#: ../js/ui/status/network.js:1732
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "Produciuse un fallo na activación da conexión de rede"
|
msgstr "Produciuse un fallo na activación da conexión de rede"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1993
|
#: ../js/ui/status/network.js:1985
|
||||||
msgid "Networking is disabled"
|
msgid "Networking is disabled"
|
||||||
msgstr "A rede está desactivada"
|
msgstr "A rede está desactivada"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:2117
|
#: ../js/ui/status/network.js:2109
|
||||||
msgid "Network Manager"
|
msgid "Network Manager"
|
||||||
msgstr "Xestor da rede"
|
msgstr "Xestor da rede"
|
||||||
|
|
||||||
@ -1411,35 +1422,35 @@ msgstr "%s está ocupado/a."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Enviado ás <b>%X</b> o <b>%A</b>"
|
msgstr "Enviado ás <b>%X</b> o <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>"
|
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>, %Y"
|
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "Agora %s chámase %s"
|
msgstr "Agora %s chámase %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Convite a %s"
|
msgstr "Convite a %s"
|
||||||
@ -1447,35 +1458,35 @@ msgstr "Convite a %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s estalle convidando a unirse a %s"
|
msgstr "%s estalle convidando a unirse a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Rexeitar"
|
msgstr "Rexeitar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceptar"
|
msgstr "Aceptar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videochamada de %s"
|
msgstr "Videochamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Chamada de %s"
|
msgstr "Chamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Responder"
|
msgstr "Responder"
|
||||||
|
|
||||||
@ -1484,112 +1495,112 @@ msgstr "Responder"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s esta enviándolle %s"
|
msgstr "%s esta enviándolle %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s solicítalle permiso para ver cando está en liña"
|
msgstr "%s solicítalle permiso para ver cando está en liña"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Erro da rede"
|
msgstr "Erro da rede"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Fallou a autenticación"
|
msgstr "Fallou a autenticación"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Erro de cifrado"
|
msgstr "Erro de cifrado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificado non fornecido"
|
msgstr "Certificado non fornecido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Non se confía no certificado"
|
msgstr "Non se confía no certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificado caducado"
|
msgstr "Certificado caducado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificado non activado"
|
msgstr "Certificado non activado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "O nome do servidor do certificado non coincide"
|
msgstr "O nome do servidor do certificado non coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "A pegada do certificado non coincide"
|
msgstr "A pegada do certificado non coincide"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificado autoasinado"
|
msgstr "Certificado autoasinado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "O estado está definido a «desconectado»"
|
msgstr "O estado está definido a «desconectado»"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "O cifrado non está dispoñíbel"
|
msgstr "O cifrado non está dispoñíbel"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "O certificado non é válido"
|
msgstr "O certificado non é válido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Rexeitouse a conexión"
|
msgstr "Rexeitouse a conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Non é posíbel estabelecer a conexión"
|
msgstr "Non é posíbel estabelecer a conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Perdeuse a conexión"
|
msgstr "Perdeuse a conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Esta cuenta xa está conectada ao servidor"
|
msgstr "Esta cuenta xa está conectada ao servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
|
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Esta conta xa existe no servidor"
|
msgstr "Esta conta xa existe no servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
|
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Revogouse o certificado"
|
msgstr "Revogouse o certificado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
|
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
|
||||||
"débil"
|
"débil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1598,26 +1609,26 @@ msgstr ""
|
|||||||
"certificado do servidor excede os límites impostos pola biblioteca de "
|
"certificado do servidor excede os límites impostos pola biblioteca de "
|
||||||
"criptografía."
|
"criptografía."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Erro interno"
|
msgstr "Erro interno"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Fallou a conexión a %s"
|
msgstr "Fallou a conexión a %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Reconectar"
|
msgstr "Reconectar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Editar conta"
|
msgstr "Editar conta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razón descoñecida"
|
msgstr "Razón descoñecida"
|
||||||
|
|
||||||
@ -1633,39 +1644,31 @@ msgstr "Inactivo"
|
|||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "Non dispoñíbel"
|
msgstr "Non dispoñíbel"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
#: ../js/ui/userMenu.js:624
|
||||||
msgid "Power Off..."
|
|
||||||
msgstr "Apagar…"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "Notificacións"
|
msgstr "Notificacións"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:632
|
||||||
msgid "Online Accounts"
|
|
||||||
msgstr "Contas en liña"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:643
|
|
||||||
msgid "System Settings"
|
msgid "System Settings"
|
||||||
msgstr "Preferencias do sistema"
|
msgstr "Preferencias do sistema"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:650
|
#: ../js/ui/userMenu.js:646
|
||||||
msgid "Lock Screen"
|
|
||||||
msgstr "Bloquear a pantalla"
|
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:655
|
|
||||||
msgid "Switch User"
|
msgid "Switch User"
|
||||||
msgstr "Cambiar de usuario"
|
msgstr "Cambiar de usuario"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:660
|
#: ../js/ui/userMenu.js:651
|
||||||
msgid "Log Out..."
|
msgid "Log Out"
|
||||||
msgstr "Saír da sesión…"
|
msgstr "Saír da sesión"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:688
|
#: ../js/ui/userMenu.js:659
|
||||||
|
msgid "Lock"
|
||||||
|
msgstr "Bloquear"
|
||||||
|
|
||||||
|
#: ../js/ui/userMenu.js:677
|
||||||
msgid "Your chat status will be set to busy"
|
msgid "Your chat status will be set to busy"
|
||||||
msgstr "O seu estado do chat estabelecerase a «ocupado»"
|
msgstr "O seu estado do chat estabelecerase a «ocupado»"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:689
|
#: ../js/ui/userMenu.js:678
|
||||||
msgid ""
|
msgid ""
|
||||||
"Notifications are now disabled, including chat messages. Your online status "
|
"Notifications are now disabled, including chat messages. Your online status "
|
||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
@ -1711,7 +1714,7 @@ msgstr "«%s» está preparado"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1720,14 +1723,14 @@ msgstr[1] "%u saídas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons do sistema"
|
msgstr "Sons do sistema"
|
||||||
|
|
||||||
@ -1786,6 +1789,18 @@ msgstr "Sistema de ficheiros"
|
|||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%1$s: %2$s"
|
msgstr "%1$s: %2$s"
|
||||||
|
|
||||||
|
#~ msgid "Power Off..."
|
||||||
|
#~ msgstr "Apagar…"
|
||||||
|
|
||||||
|
#~ msgid "Online Accounts"
|
||||||
|
#~ msgstr "Contas en liña"
|
||||||
|
|
||||||
|
#~ msgid "Lock Screen"
|
||||||
|
#~ msgstr "Bloquear a pantalla"
|
||||||
|
|
||||||
|
#~ msgid "Log Out..."
|
||||||
|
#~ msgstr "Saír da sesión…"
|
||||||
|
|
||||||
#~ msgid "RECENT ITEMS"
|
#~ msgid "RECENT ITEMS"
|
||||||
#~ msgstr "ELEMENTOS RECENTES"
|
#~ msgstr "ELEMENTOS RECENTES"
|
||||||
|
|
||||||
|
301
po/he.po
301
po/he.po
@ -8,8 +8,8 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-04-09 22:48+0300\n"
|
"POT-Creation-Date: 2012-04-26 15:30+0300\n"
|
||||||
"PO-Revision-Date: 2012-04-09 22:48+0200\n"
|
"PO-Revision-Date: 2012-04-26 15:30+0200\n"
|
||||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||||
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
||||||
"Language: he\n"
|
"Language: he\n"
|
||||||
@ -30,131 +30,139 @@ msgid "Window management and application launching"
|
|||||||
msgstr "ניהול חלונות והרצת יישומים"
|
msgstr "ניהול חלונות והרצת יישומים"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
msgid "Configure GNOME Shell Extensions"
|
|
||||||
msgstr "הגדרת הרחבות GNOME Shell"
|
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "העדפות ההרחבות של GNOME Shell"
|
msgstr "העדפות ההרחבות של GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
msgstr "הגדרת הרחבות GNOME Shell"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||||
msgstr "Enable internal tools useful for developers and testers from Alt-F2"
|
msgstr "Enable internal tools useful for developers and testers from 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 "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "File extension used for storing the screencast"
|
msgstr "Uuids of extensions to enable"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid "Framerate used for recording screencasts."
|
|
||||||
msgstr "Framerate used for recording screencasts."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
|
||||||
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
msgstr "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
|
msgid "Whether to collect stats about applications usage"
|
||||||
|
msgstr "Whether to collect stats about applications usage"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||||
msgstr "History for command (Alt-F2) dialog"
|
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||||
msgid "History for the looking glass dialog"
|
|
||||||
msgstr "History for the looking glass dialog"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
|
||||||
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:9
|
|
||||||
msgid "If true, display seconds in time."
|
|
||||||
msgstr "If true, display seconds in time."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
|
||||||
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:11
|
|
||||||
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
|
||||||
msgstr "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
|
||||||
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
|
||||||
msgstr "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
|
||||||
msgid "Keybinding to open the application menu"
|
|
||||||
msgstr "Keybinding to open the application menu"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
|
||||||
msgid "Keybinding to open the application menu."
|
|
||||||
msgstr "Keybinding to open the application menu."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
|
||||||
msgid "List of desktop file IDs for favorite applications"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr "List of desktop file IDs for favorite applications"
|
msgstr "List of desktop file IDs for favorite applications"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||||
|
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
|
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
|
msgid "disabled OpenSearch providers"
|
||||||
|
msgstr "disabled OpenSearch providers"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
|
msgid "History for command (Alt-F2) dialog"
|
||||||
|
msgstr "History for command (Alt-F2) dialog"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
|
msgid "History for the looking glass dialog"
|
||||||
|
msgstr "History for the looking glass dialog"
|
||||||
|
|
||||||
|
#: ../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 "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||||
|
|
||||||
|
#: ../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 "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
|
msgid "Show the week date in the calendar"
|
||||||
|
msgstr "Show the week date in the calendar"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||||
|
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
|
#: ../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 "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Keybinding to toggle the screen recorder"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
|
msgid "Which keyboard to use"
|
||||||
|
msgstr "באיזו מקלדת להשתמש"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
|
msgid "The type of keyboard to use."
|
||||||
|
msgstr "סוג המקלדת לשימוש."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
|
msgid "Show time with seconds"
|
||||||
|
msgstr "Show time with seconds"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
|
msgid "If true, display seconds in time."
|
||||||
|
msgstr "If true, display seconds in time."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
|
msgid "Show date in clock"
|
||||||
|
msgstr "Show date in clock"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
|
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:26
|
||||||
|
msgid "Framerate used for recording screencasts."
|
||||||
|
msgstr "Framerate used for recording screencasts."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
|
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||||
|
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:28
|
||||||
|
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:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently '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."
|
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."
|
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:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "Show date in clock"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Show date in clock"
|
msgstr "File extension used for storing the screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid "Show the week date in the calendar"
|
|
||||||
msgstr "Show the week date in the calendar"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
|
||||||
msgid "Show time with seconds"
|
|
||||||
msgstr "Show time with seconds"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
|
||||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
|
||||||
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
|
||||||
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."
|
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 "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 "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."
|
||||||
|
|
||||||
#: ../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 "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: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:25
|
|
||||||
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
|
||||||
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
|
||||||
msgid "The type of keyboard to use."
|
|
||||||
msgstr "סוג המקלדת לשימוש."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
|
||||||
msgid "Uuids of extensions to enable"
|
|
||||||
msgstr "Uuids of extensions to enable"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
|
||||||
msgid "Whether to collect stats about applications usage"
|
|
||||||
msgstr "Whether to collect stats about applications usage"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
|
||||||
msgid "Which keyboard to use"
|
|
||||||
msgstr "באיזו מקלדת להשתמש"
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
|
||||||
msgid "disabled OpenSearch providers"
|
|
||||||
msgstr "disabled OpenSearch providers"
|
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:125
|
#: ../js/extensionPrefs/main.js:125
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
@ -629,6 +637,7 @@ msgid "tray"
|
|||||||
msgstr "מגש מערכת"
|
msgstr "מגש מערכת"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544
|
#: ../js/ui/keyboard.js:544
|
||||||
|
#: ../js/ui/status/keyboard.js:44
|
||||||
#: ../js/ui/status/power.js:203
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "מקלדת"
|
msgstr "מקלדת"
|
||||||
@ -693,7 +702,7 @@ msgid "Web Page"
|
|||||||
msgstr "דף אינטרנט"
|
msgstr "דף אינטרנט"
|
||||||
|
|
||||||
#. Translators: this is a filename used for screencast recording
|
#. Translators: this is a filename used for screencast recording
|
||||||
#: ../js/ui/main.js:118
|
#: ../js/ui/main.js:121
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "צילום מסך מהקובץ %d %t"
|
msgstr "צילום מסך מהקובץ %d %t"
|
||||||
@ -872,7 +881,7 @@ msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסל
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:724
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -1051,7 +1060,7 @@ msgid "Grant this time only"
|
|||||||
msgstr "הענקת גישה הפעם בלבד"
|
msgstr "הענקת גישה הפעם בלבד"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382
|
#: ../js/ui/status/bluetooth.js:382
|
||||||
#: ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "סירוב"
|
msgstr "סירוב"
|
||||||
|
|
||||||
@ -1378,35 +1387,35 @@ msgstr "%s עסוק/ה."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
|
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>"
|
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
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>ה־%d ב%B</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "השם של %s הוחלף ל־%s"
|
msgstr "השם של %s הוחלף ל־%s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "הזמנה ל־%s"
|
msgstr "הזמנה ל־%s"
|
||||||
@ -1414,37 +1423,37 @@ msgstr "הזמנה ל־%s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "הוזמנת על ידי %s להצטרף אל %s"
|
msgstr "הוזמנת על ידי %s להצטרף אל %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052
|
#: ../js/ui/telepathyClient.js:1054
|
||||||
#: ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "דחייה"
|
msgstr "דחייה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053
|
#: ../js/ui/telepathyClient.js:1055
|
||||||
#: ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "אישור"
|
msgstr "אישור"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "שיחת וידאו מאת %s"
|
msgstr "שיחת וידאו מאת %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "שיחה מאת %s"
|
msgstr "שיחה מאת %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "מענה"
|
msgstr "מענה"
|
||||||
|
|
||||||
@ -1453,129 +1462,129 @@ msgstr "מענה"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s שולח/ת אליך %s"
|
msgstr "%s שולח/ת אליך %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
|
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "שגיאת רשת"
|
msgstr "שגיאת רשת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "האימות נכשל"
|
msgstr "האימות נכשל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "שגיאת הצפנה"
|
msgstr "שגיאת הצפנה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "לא סופק אישור"
|
msgstr "לא סופק אישור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "האישור אינו מהימן"
|
msgstr "האישור אינו מהימן"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "האישור פג"
|
msgstr "האישור פג"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "האישור לא מופעל"
|
msgstr "האישור לא מופעל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "שם המארח באישור אינו תואם"
|
msgstr "שם המארח באישור אינו תואם"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "חוסר התאמה בטביעת האצבע של האישור"
|
msgstr "חוסר התאמה בטביעת האצבע של האישור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "אישור בחתימה עצמית"
|
msgstr "אישור בחתימה עצמית"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "המצב הוגדר ל'מנותק'"
|
msgstr "המצב הוגדר ל'מנותק'"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "ההצפנה אינה זמינה"
|
msgstr "ההצפנה אינה זמינה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "האישור אינו תקף"
|
msgstr "האישור אינו תקף"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "ההתחברות נשללה"
|
msgstr "ההתחברות נשללה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "לא ניתן להפעיל את החיבור"
|
msgstr "לא ניתן להפעיל את החיבור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "החיבור אבד"
|
msgstr "החיבור אבד"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "חשבון זה כבר מחובר לשרת"
|
msgstr "חשבון זה כבר מחובר לשרת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid "Connection has been replaced by a new connection using the same resource"
|
msgid "Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
|
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "החשבון כבר קיים בשרת"
|
msgstr "החשבון כבר קיים בשרת"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
|
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "האישור נשלל"
|
msgstr "האישור נשלל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
|
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
|
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "שגיאה פנימית"
|
msgstr "שגיאה פנימית"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "החיבור אל %s נכשל"
|
msgstr "החיבור אל %s נכשל"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "התחברות מחדש"
|
msgstr "התחברות מחדש"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "עריכת חשבון"
|
msgstr "עריכת חשבון"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "סיבה לא ידועה"
|
msgstr "סיבה לא ידועה"
|
||||||
|
|
||||||
|
190
po/ja.po
190
po/ja.po
@ -6,15 +6,16 @@
|
|||||||
# Jiro Matsuzawa <jmatsuzawa@src.gnome.org>, 2011, 2012.
|
# Jiro Matsuzawa <jmatsuzawa@src.gnome.org>, 2011, 2012.
|
||||||
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2011, 2012.
|
# Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>, 2011, 2012.
|
||||||
# Hideki Yamane <henrich@debian.org>, 2011.
|
# Hideki Yamane <henrich@debian.org>, 2011.
|
||||||
|
# Takanori MATSUURA <t.matsuu@gmail.com>, 2012.
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell master\n"
|
"Project-Id-Version: gnome-shell master\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-03-24 17:45+0000\n"
|
"POT-Creation-Date: 2012-05-10 04:40+0000\n"
|
||||||
"PO-Revision-Date: 2012-03-25 05:15+0900\n"
|
"PO-Revision-Date: 2012-05-15 00:48+0900\n"
|
||||||
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@src.gnome.org>\n"
|
"Last-Translator: Takanori MATSUURA <t.matsuu@gmail.com>\n"
|
||||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@ -126,34 +127,42 @@ msgid "If true, display the ISO week date in the calendar."
|
|||||||
msgstr "ISO 8601 方式の暦週日付を表示します。"
|
msgstr "ISO 8601 方式の暦週日付を表示します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../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"
|
msgid "Which keyboard to use"
|
||||||
msgstr "使いたいキーボードの種類"
|
msgstr "使いたいキーボードの種類"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "使いたいキーボードの種類です。"
|
msgstr "使いたいキーボードの種類です。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "秒を表示"
|
msgstr "秒を表示"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "時刻を秒まで表示します。"
|
msgstr "時刻を秒まで表示します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "日付を表示"
|
msgstr "日付を表示"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "日付と時刻を表示します。"
|
msgstr "日付と時刻を表示します。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "スクリーンキャスト録画のフレームレート"
|
msgstr "スクリーンキャスト録画のフレームレート"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -161,11 +170,11 @@ msgstr ""
|
|||||||
"GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒"
|
"GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒"
|
||||||
"あたりのフレーム数です。"
|
"あたりのフレーム数です。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン"
|
msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -189,11 +198,11 @@ msgstr ""
|
|||||||
"webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' は"
|
"webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' は"
|
||||||
"システムの最適スレッド数の推量値を示すプレースホルダーです。"
|
"システムの最適スレッド数の推量値を示すプレースホルダーです。"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "ファイルに保存するスクリーンキャストのファイル拡張子"
|
msgstr "ファイルに保存するスクリーンキャストのファイル拡張子"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -216,40 +225,40 @@ msgstr "<b>拡張機能</b>"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
|
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "セッション..."
|
msgstr "セッション..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "サインイン"
|
msgstr "サインイン"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(あるいは指でスワイプする)"
|
msgstr "(あるいは指でスワイプする)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "アカウントが見つかりませんか?"
|
msgstr "アカウントが見つかりませんか?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "キャンセル"
|
msgstr "キャンセル"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "サインイン"
|
msgstr "サインイン"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "ログインウィンドウ"
|
msgstr "ログインウィンドウ"
|
||||||
|
|
||||||
@ -516,11 +525,11 @@ msgstr "カレンダーを開く"
|
|||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
#: ../js/ui/dateMenu.js:187
|
#: ../js/ui/dateMenu.js:187
|
||||||
msgid "%a %b %e, %R:%S"
|
msgid "%a %b %e, %R:%S"
|
||||||
msgstr "%m/%d (%a) %R:%S"
|
msgstr "%B%e日 (%a) %R:%S"
|
||||||
|
|
||||||
#: ../js/ui/dateMenu.js:188
|
#: ../js/ui/dateMenu.js:188
|
||||||
msgid "%a %b %e, %R"
|
msgid "%a %b %e, %R"
|
||||||
msgstr "%m/%d (%a) %R"
|
msgstr "%B%e日 (%a) %R"
|
||||||
|
|
||||||
#. Translators: This is the time format without date used
|
#. Translators: This is the time format without date used
|
||||||
#. in 24-hour mode.
|
#. in 24-hour mode.
|
||||||
@ -649,11 +658,11 @@ msgstr[0] "%d 秒後にシステムを再起動します。"
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "システムを再起動します。"
|
msgstr "システムを再起動します。"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "インストール"
|
msgstr "インストール"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
||||||
@ -662,7 +671,8 @@ msgstr "extensions.gnome.org から '%s' をダウンロードしてインスト
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "トレイ"
|
msgstr "トレイ"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "キーボード"
|
msgstr "キーボード"
|
||||||
|
|
||||||
@ -674,51 +684,51 @@ msgstr "パスワード:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "再入力:"
|
msgstr "再入力:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "機能拡張はインストールされていません"
|
msgstr "機能拡張はインストールされていません"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s は何もエラーを出力していません。"
|
msgstr "%s は何もエラーを出力していません。"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "エラーを非表示"
|
msgstr "エラーを非表示"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "エラーを表示"
|
msgstr "エラーを表示"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "利用可能にする"
|
msgstr "利用可能にする"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "利用不可能にする"
|
msgstr "利用不可能にする"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "エラー"
|
msgstr "エラー"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "最新ではありません"
|
msgstr "最新ではありません"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "ダウンロード中"
|
msgstr "ダウンロード中"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "ソースの表示"
|
msgstr "ソースの表示"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "ウェブページ"
|
msgstr "ウェブページ"
|
||||||
|
|
||||||
@ -849,17 +859,17 @@ msgstr "アプリケーション"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "ダッシュボード"
|
msgstr "ダッシュボード"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:591
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "終了"
|
msgstr "終了"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:623
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "アクティビティ"
|
msgstr "アクティビティ"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:998
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "トップバー"
|
msgstr "トップバー"
|
||||||
|
|
||||||
@ -917,7 +927,7 @@ msgstr "コマンド:"
|
|||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "検索しています..."
|
msgstr "検索しています..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:414
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "一致するものがありません。"
|
msgstr "一致するものがありません。"
|
||||||
|
|
||||||
@ -1075,7 +1085,7 @@ msgstr "許可"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "今回のみ許可"
|
msgstr "今回のみ許可"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "拒否"
|
msgstr "拒否"
|
||||||
|
|
||||||
@ -1388,35 +1398,35 @@ msgstr "%s は取り込み中です。"
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "<b>%A</b>の<b>%X</b>に送信"
|
msgstr "<b>%A</b>の<b>%X</b>に送信"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "<b>%b%e日</b> <b>%A</b>に送信"
|
msgstr "<b>%b%e日</b> <b>%A</b>に送信"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "<b>%Y年%b%e日</b> <b>%A</b>に送信"
|
msgstr "<b>%Y年%b%e日</b> <b>%A</b>に送信"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s は %s になりました"
|
msgstr "%s は %s になりました"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s への招待"
|
msgstr "%s への招待"
|
||||||
@ -1424,35 +1434,35 @@ msgstr "%s への招待"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s さんがあなたを %s に招待しています"
|
msgstr "%s さんがあなたを %s に招待しています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "拒否する"
|
msgstr "拒否する"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "受け入れる"
|
msgstr "受け入れる"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s さんからビデオでの呼び出し"
|
msgstr "%s さんからビデオでの呼び出し"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s さんからの呼び出し"
|
msgstr "%s さんからの呼び出し"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "応答"
|
msgstr "応答"
|
||||||
|
|
||||||
@ -1461,109 +1471,109 @@ msgstr "応答"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s さんがあなたに %s を送信しようとしています"
|
msgstr "%s さんがあなたに %s を送信しようとしています"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"%s さんが、あなたがオンライン状態になったことを知る許可を欲しいと思っています"
|
"%s さんが、あなたがオンライン状態になったことを知る許可を欲しいと思っています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "ネットワークエラー"
|
msgstr "ネットワークエラー"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "認証失敗"
|
msgstr "認証失敗"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "暗号化のエラーです"
|
msgstr "暗号化のエラーです"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "証明書がありません"
|
msgstr "証明書がありません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "信用のない証明書です"
|
msgstr "信用のない証明書です"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "証明書の有効期限が切れています"
|
msgstr "証明書の有効期限が切れています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "証明書は利用できません"
|
msgstr "証明書は利用できません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "証明書のホスト名が一致しません"
|
msgstr "証明書のホスト名が一致しません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "証明書の指紋が一致しません"
|
msgstr "証明書の指紋が一致しません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "証明書自身の署名です"
|
msgstr "証明書自身の署名です"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "状態はオフラインに設定されています"
|
msgstr "状態はオフラインに設定されています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "暗号が利用できません"
|
msgstr "暗号が利用できません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "証明書が正しくありません"
|
msgstr "証明書が正しくありません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "接続が拒否されました"
|
msgstr "接続が拒否されました"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "接続を確立できませんでした"
|
msgstr "接続を確立できませんでした"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "接続が失われました"
|
msgstr "接続が失われました"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "このアカウントはすでにサーバーに接続済みです"
|
msgstr "このアカウントはすでにサーバーに接続済みです"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "接続は同じリソースを使って新しい接続で置き換わりました"
|
msgstr "接続は同じリソースを使って新しい接続で置き換わりました"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "アカウントがサーバーに既に存在しています"
|
msgstr "アカウントがサーバーに既に存在しています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "サーバーがビジー状態にあるため、この接続を処理できません"
|
msgstr "サーバーがビジー状態にあるため、この接続を処理できません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "証明書が無効化されました"
|
msgstr "証明書が無効化されました"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "証明書が安全でない暗号のアルゴリズムを使っているか、暗号的に弱いです"
|
msgstr "証明書が安全でない暗号のアルゴリズムを使っているか、暗号的に弱いです"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1571,26 +1581,26 @@ msgstr ""
|
|||||||
"サーバー証明書の長さや、サーバー証明書のチェーンの深さが暗号ライブラリで規定"
|
"サーバー証明書の長さや、サーバー証明書のチェーンの深さが暗号ライブラリで規定"
|
||||||
"されている長さを越えています"
|
"されている長さを越えています"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "内部エラー"
|
msgstr "内部エラー"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "%s に接続できません"
|
msgstr "%s に接続できません"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "再接続"
|
msgstr "再接続"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "アカウントの編集"
|
msgstr "アカウントの編集"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "原因不明"
|
msgstr "原因不明"
|
||||||
|
|
||||||
@ -1675,7 +1685,7 @@ msgstr "預言者 %s 曰く"
|
|||||||
|
|
||||||
#: ../js/ui/wanda.js:168
|
#: ../js/ui/wanda.js:168
|
||||||
msgid "Your favorite Easter Egg"
|
msgid "Your favorite Easter Egg"
|
||||||
msgstr "あたなの好きなイースターエッグ"
|
msgstr "あなたの好きなイースターエッグ"
|
||||||
|
|
||||||
#: ../js/ui/windowAttentionHandler.js:19
|
#: ../js/ui/windowAttentionHandler.js:19
|
||||||
#, c-format
|
#, c-format
|
||||||
@ -1684,7 +1694,7 @@ msgstr "'%s' は準備完了です"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1692,13 +1702,13 @@ msgstr[0] "出力数: %u"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "入力数: %u"
|
msgstr[0] "入力数: %u"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "システムのサウンド"
|
msgstr "システムのサウンド"
|
||||||
|
|
||||||
|
283
po/ko.po
283
po/ko.po
@ -1,14 +1,19 @@
|
|||||||
# This file is distributed under the same license as the gnome-shell package.
|
# This file is distributed under the same license as the gnome-shell package.
|
||||||
# Young-Ho Cha <ganadist@gmail.com>, 2009.
|
# Young-Ho Cha <ganadist@gmail.com>, 2009.
|
||||||
# Changwoo Ryu <cwryu@debian.org>, 2011-2012.
|
|
||||||
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
|
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2012.
|
||||||
|
# Changwoo Ryu <cwryu@debian.org>, 2011-2012.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# 주의 사항:
|
||||||
|
# - 이 프로그램의 이름인 shell은 "셸"이라고 쓰고, "쉘"이라고 하지 않음.
|
||||||
|
# - instance messanger 또는 IM은 메신저라고 번역
|
||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell\n"
|
"Project-Id-Version: gnome-shell\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\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-19 14:09+0000\n"
|
"POT-Creation-Date: 2012-04-19 21:14+0000\n"
|
||||||
"PO-Revision-Date: 2012-03-27 01:36+0900\n"
|
"PO-Revision-Date: 2012-04-26 01:05+0900\n"
|
||||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -23,31 +28,30 @@ msgstr "그놈 셸"
|
|||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:2
|
#: ../data/gnome-shell.desktop.in.in.h:2
|
||||||
msgid "Window management and application launching"
|
msgid "Window management and application launching"
|
||||||
msgstr "창 관리와 프로그램 시작"
|
msgstr "창 관리 및 프로그램 실행"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||||
#: ../js/extensionPrefs/main.js:153
|
#: ../js/extensionPrefs/main.js:153
|
||||||
msgid "GNOME Shell Extension Preferences"
|
msgid "GNOME Shell Extension Preferences"
|
||||||
msgstr "그놈 쉘 확장 기본 설정"
|
msgstr "그놈 셸 확장 기본 설정"
|
||||||
|
|
||||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||||
msgid "Configure GNOME Shell Extensions"
|
msgid "Configure GNOME Shell Extensions"
|
||||||
msgstr "그놈 쉘 확장을 설정합니다"
|
msgstr "그놈 셸 확장을 설정합니다"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
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
|
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||||
msgid ""
|
msgid ""
|
||||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||||
"dialog."
|
"dialog."
|
||||||
msgstr ""
|
msgstr "Alt-F2 대화 상자에서 내부 디버깅 및 감시 기능에 접근을 허용합니다."
|
||||||
"Alt-F2 대화 상자를 사용할 때 내부 디버깅 및 감시 도구에 접근을 허용합니다."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "사용할 확장 기능의 UUID"
|
msgstr "사용할 확장 기능의 UUID 목록"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -55,14 +59,11 @@ msgid ""
|
|||||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
"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 "
|
"list. You can also manipulate this list with the EnableExtension and "
|
||||||
"DisableExtension DBus methods on org.gnome.Shell."
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr ""
|
msgstr "그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 읽어들일 확장의 UUID를 나열합니다. 읽어들이려는 확장은 모두 이 목록에 들어 있어야 합니다. EnableExtension 및 DisableExtension D-버스 메소드를 이용해 이 목록을 조작할 수도 있습니다."
|
||||||
"그놈 셸 확장에 UUID 속성이 있으며 이 키는 불러올 확장을 나열합니다. 불러오려"
|
|
||||||
"는 확장은 이 목록에 있을 필요가 있습니다. 또한 이 목록을 org.gnome.Shell에 있"
|
|
||||||
"는 EnableExtension과 DisableExtension DBus 메서드로 조작할 수 있습니다."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr "프로그램 사용 통계를 저장할지 여부"
|
msgstr "프로그램 사용 통계를 수집할지 여부"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
#: ../data/org.gnome.shell.gschema.xml.in.h:6
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -84,35 +85,31 @@ msgstr "즐겨찾기 프로그램의 데스크톱 파일 ID 목록"
|
|||||||
msgid ""
|
msgid ""
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
"favorites area."
|
"favorites area."
|
||||||
msgstr "이 ID에 해당하는 프로그램은 즐겨찾기 영역에 표시됩니다."
|
msgstr "여기 들어 있는 ID에 해당하는 프로그램은 즐겨찾기 영역에 표시됩니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "OpenSearch 서비스 사용하지 않음"
|
msgstr "사용하지 않는 OpenSearch 서비스"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||||
msgid "History for command (Alt-F2) dialog"
|
msgid "History for command (Alt-F2) dialog"
|
||||||
msgstr "명령어 (Alt-F2) 대화 상자에 명령어 기록 기능"
|
msgstr "명령어 대화 상자에 (Alt-F2) 기록 기능"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||||
msgid "History for the looking glass dialog"
|
msgid "History for the looking glass dialog"
|
||||||
msgstr "돋보기 대화 창의 기록"
|
msgstr "돋보기 대화 상자에 기록 기능"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last IM presence explicitly set by the user. "
|
"Internally used to store the last IM presence explicitly set by the user. "
|
||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
msgstr ""
|
msgstr "사용자가 직접 설정한 메신저 상태를 저장하는데 내부적으로 사용. 여기에 사용하는 값은 TpConnectionPresenceType 열거 상수 값입니다."
|
||||||
"사용자가 명시적으로 설정한 최근 IM 존재를 저장하기 위해 내부적으로 사용했습니"
|
|
||||||
"다. 이 값은 TpConnectionPresenceType 열거상수로부터 왔습니다."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
msgid ""
|
msgid ""
|
||||||
"Internally used to store the last session presence status for the user. The "
|
"Internally used to store the last session presence status for the user. The "
|
||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
msgstr ""
|
msgstr "사용자의 최근 세션 상태를 저장하는데 내부적으로 사용. 여기에 사용하는 값은 GsmPresenceStatus 열거 상수 값입니다."
|
||||||
"사용자를 위한 최근 세션 존재 상태를 저장하기 위해 내부적으로 사용합니다. 이 "
|
|
||||||
"값은 GsmPresenceStatus 열거상수로부터 왔습니다."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
@ -123,46 +120,53 @@ msgid "If true, display the ISO week date in the calendar."
|
|||||||
msgstr "참이면 달력에 ISO 요일을 표시합니다."
|
msgstr "참이면 달력에 ISO 요일을 표시합니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../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"
|
msgid "Which keyboard to use"
|
||||||
msgstr "사용할 키보드"
|
msgstr "사용할 키보드"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "사용할 키보드의 종류."
|
msgstr "사용할 키보드의 종류."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "시각에 초 표시"
|
msgstr "시각에 초 표시"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "참이면 시각에 초를 표시합니다."
|
msgstr "참이면 시각에 초를 표시합니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "시계에 날짜 표시"
|
msgstr "시계에 날짜 표시"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "참이면 시계에 날짜를 시각과 같이 표시합니다."
|
msgstr "참이면 시계에 날짜를 시각과 같이 표시합니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "스크린 방송 녹화에 사용할 프레임수."
|
msgstr "스크린 방송 녹화에 사용할 프레임수."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
msgstr ""
|
msgstr "그놈 셸의 스크린 방송의 녹화 결과물에 사용할 프레임수, 초당 프레임수 단위."
|
||||||
"그놈 셸의 스크린 방송의 녹화 결과물에 사용할 프레임수, 초당 프레임 수 단위."
|
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "스크린 방송 인코딩에 사용할 gstreamer 파이프라인"
|
msgstr "스크린 방송 인코딩에 사용할 gstreamer 파이프라인"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
#, no-c-format
|
#, no-c-format, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"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 "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -185,11 +189,12 @@ msgstr ""
|
|||||||
"queue ! webmmux' 이며 VP8 코덱을 사용하여 WEBM으로 녹화합니다. %T는 시스템 상"
|
"queue ! webmmux' 이며 VP8 코덱을 사용하여 WEBM으로 녹화합니다. %T는 시스템 상"
|
||||||
"의 최적의 스레드 수를 추측하기 위해 대체기호로 사용합니다."
|
"의 최적의 스레드 수를 추측하기 위해 대체기호로 사용합니다."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "스크린 방송 저장에 사용할 파일 확장자"
|
msgstr "스크린 방송을 저장할 때 사용할 파일 확장자"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -199,52 +204,54 @@ msgstr ""
|
|||||||
"화할 때 다른 형식으로 바꿀 수도 있습니다."
|
"화할 때 다른 형식으로 바꿀 수도 있습니다."
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:125
|
#: ../js/extensionPrefs/main.js:125
|
||||||
#, c-format
|
#, c-format, fuzzy
|
||||||
msgid "There was an error loading the preferences dialog for %s:"
|
msgid "There was an error loading the preferences dialog for %s:"
|
||||||
msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:"
|
msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:165
|
#: ../js/extensionPrefs/main.js:165
|
||||||
|
#, fuzzy
|
||||||
msgid "<b>Extension</b>"
|
msgid "<b>Extension</b>"
|
||||||
msgstr "<b>확장</b>"
|
msgstr "<b>확장</b>"
|
||||||
|
|
||||||
#: ../js/extensionPrefs/main.js:189
|
#: ../js/extensionPrefs/main.js:189
|
||||||
|
#, fuzzy
|
||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "위의 콤보상자를 사용하여 설정할 확장을 선택하십시오."
|
msgstr "위의 콤보상자를 사용하여 설정할 확장을 선택하십시오."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "세션..."
|
msgstr "세션..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "로그인"
|
msgstr "로그인"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(또는 지문을 문지르십시오)"
|
msgstr "(또는 지문을 문지르십시오)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "목록에 없습니까?"
|
msgstr "목록에 없습니까?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "취소"
|
msgstr "취소"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "로그인"
|
msgstr "로그인"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "로그인 창"
|
msgstr "로그인 창"
|
||||||
|
|
||||||
@ -638,11 +645,11 @@ msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작합니다."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "시스템을 다시 시작합니다."
|
msgstr "시스템을 다시 시작합니다."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "설치"
|
msgstr "설치"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -652,7 +659,8 @@ msgstr ""
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "트레이"
|
msgstr "트레이"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "키보드"
|
msgstr "키보드"
|
||||||
|
|
||||||
@ -664,59 +672,60 @@ msgstr "암호:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "다시 입력하십시오:"
|
msgstr "다시 입력하십시오:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "확장 기능을 설치하지 않았습니다"
|
msgstr "확장 기능을 설치하지 않았습니다"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s이(가) 발생한 에러가 없습니다."
|
msgstr "%s이(가) 발생한 에러가 없습니다."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "오류 숨기기"
|
msgstr "오류 숨기기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "오류 보이기"
|
msgstr "오류 보이기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "사용"
|
msgstr "사용"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "사용 않음"
|
msgstr "사용 않음"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "오류"
|
msgstr "오류"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "오래 된 버전"
|
msgstr "오래 된 버전"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "다운로드 중"
|
msgstr "다운로드 중"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "소스 보기"
|
msgstr "소스 보기"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "웹페이지"
|
msgstr "웹페이지"
|
||||||
|
|
||||||
|
# 주의: 파일이름, %d %t는 날짜와 시각, 이상하게 번역하지 말 것
|
||||||
#. Translators: this is a filename used for screencast recording
|
#. Translators: this is a filename used for screencast recording
|
||||||
#: ../js/ui/main.js:118
|
#: ../js/ui/main.js:118
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "%d %t의 스크린캐스트"
|
msgstr "스크린 방송, %d %t"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1200
|
#: ../js/ui/messageTray.js:1200
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
@ -835,17 +844,17 @@ msgstr "프로그램"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "대시보드"
|
msgstr "대시보드"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:591
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "끝내기"
|
msgstr "끝내기"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:623
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "현재 활동"
|
msgstr "현재 활동"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:998
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "위 막대"
|
msgstr "위 막대"
|
||||||
|
|
||||||
@ -899,11 +908,11 @@ msgstr "toggle-switch-intl"
|
|||||||
msgid "Please enter a command:"
|
msgid "Please enter a command:"
|
||||||
msgstr "명령을 입력하십시오:"
|
msgstr "명령을 입력하십시오:"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:331
|
#: ../js/ui/searchDisplay.js:332
|
||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "검색하는 중..."
|
msgstr "검색하는 중..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:413
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "일치하는 결과가 없습니다."
|
msgstr "일치하는 결과가 없습니다."
|
||||||
|
|
||||||
@ -921,7 +930,7 @@ msgstr "텍스트 보이기"
|
|||||||
|
|
||||||
#: ../js/ui/shellEntry.js:79
|
#: ../js/ui/shellEntry.js:79
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "글자 숨기기"
|
msgstr "텍스트 숨기기"
|
||||||
|
|
||||||
#: ../js/ui/shellMountOperation.js:271
|
#: ../js/ui/shellMountOperation.js:271
|
||||||
msgid "Wrong password, please try again"
|
msgid "Wrong password, please try again"
|
||||||
@ -1061,7 +1070,7 @@ msgstr "항상 접근 허용"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "이번에만 허용"
|
msgstr "이번에만 허용"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "거부"
|
msgstr "거부"
|
||||||
|
|
||||||
@ -1127,7 +1136,7 @@ msgstr "관리되지 않음"
|
|||||||
#. Translators: this is for network connections that require some kind of key or password
|
#. Translators: this is for network connections that require some kind of key or password
|
||||||
#: ../js/ui/status/network.js:500
|
#: ../js/ui/status/network.js:500
|
||||||
msgid "authentication required"
|
msgid "authentication required"
|
||||||
msgstr "인증이 필요합니다"
|
msgstr "인증 필요"
|
||||||
|
|
||||||
#. Translators: this is for devices that require some kind of firmware or kernel
|
#. Translators: this is for devices that require some kind of firmware or kernel
|
||||||
#. module, which is missing
|
#. module, which is missing
|
||||||
@ -1138,7 +1147,7 @@ msgstr "펌웨어 없음"
|
|||||||
#. Translators: this is for wired network devices that are physically disconnected
|
#. Translators: this is for wired network devices that are physically disconnected
|
||||||
#: ../js/ui/status/network.js:517
|
#: ../js/ui/status/network.js:517
|
||||||
msgid "cable unplugged"
|
msgid "cable unplugged"
|
||||||
msgstr "케이블이 분리되었습니다"
|
msgstr "케이블 분리"
|
||||||
|
|
||||||
#. Translators: this is for a network device that cannot be activated (for example it
|
#. Translators: this is for a network device that cannot be activated (for example it
|
||||||
#. is disabled by rfkill, or it has no coverage
|
#. is disabled by rfkill, or it has no coverage
|
||||||
@ -1148,7 +1157,7 @@ msgstr "사용 불가"
|
|||||||
|
|
||||||
#: ../js/ui/status/network.js:524
|
#: ../js/ui/status/network.js:524
|
||||||
msgid "connection failed"
|
msgid "connection failed"
|
||||||
msgstr "연결이 실패했습니다"
|
msgstr "연결 실패"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
||||||
msgid "More..."
|
msgid "More..."
|
||||||
@ -1375,35 +1384,35 @@ msgstr "%s 부재중."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "보낸 때: <b>%A</b> <b>%H시 %M분</b>"
|
msgstr "보낸 때: <b>%A</b> <b>%H시 %M분</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "보낸 때: <b>%B %d일</b> <b>%A</b>"
|
msgstr "보낸 때: <b>%B %d일</b> <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "보낸 때: %Y년 <b>%B %d일</b> <b>%A</b>"
|
msgstr "보낸 때: %Y년 <b>%B %d일</b> <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s의 대화명이 이제 %s입니다"
|
msgstr "%s의 대화명이 이제 %s입니다"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s에 초대"
|
msgstr "%s에 초대"
|
||||||
@ -1411,35 +1420,35 @@ msgstr "%s에 초대"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s 님이 %s에 입장하도록 초대합니다"
|
msgstr "%s 님이 %s에 입장하도록 초대합니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "거부"
|
msgstr "거부"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "허용"
|
msgstr "허용"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s에서 영상 호출"
|
msgstr "%s에서 영상 호출"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s에서 호출"
|
msgstr "%s에서 호출"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "응답"
|
msgstr "응답"
|
||||||
|
|
||||||
@ -1448,108 +1457,108 @@ msgstr "응답"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s님이 %s 파일을 보냅니다"
|
msgstr "%s님이 %s 파일을 보냅니다"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다"
|
msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "네트워크 오류"
|
msgstr "네트워크 오류"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "인증이 실패했습니다"
|
msgstr "인증이 실패했습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "암호화 오류"
|
msgstr "암호화 오류"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "인증서가 없습니다"
|
msgstr "인증서가 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "인증서를 신뢰할 수 없습니다"
|
msgstr "인증서를 신뢰할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "인증서가 만료되었습니다"
|
msgstr "인증서가 만료되었습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "인증서를 활성화하지 않았습니다"
|
msgstr "인증서를 활성화하지 않았습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "인증서 호스트 이름이 맞지 않습니다"
|
msgstr "인증서 호스트 이름이 맞지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "인증서 핑거프린트가 맞지 않습니다"
|
msgstr "인증서 핑거프린트가 맞지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "인증서가 자기 서명한 인증서입니다"
|
msgstr "인증서가 자기 서명한 인증서입니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "상태를 오프라인으로 설정"
|
msgstr "상태를 오프라인으로 설정"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "암호화를 사용할 수 없습니다"
|
msgstr "암호화를 사용할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "인증서가 올바르지 않습니다"
|
msgstr "인증서가 올바르지 않습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "연결이 거부되었습니다"
|
msgstr "연결이 거부되었습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "연결할 수 없습니다"
|
msgstr "연결할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "연결이 끊어졌습니다"
|
msgstr "연결이 끊어졌습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
|
||||||
msgid "This account is already connected to the server"
|
|
||||||
msgstr "이미 서버에 이 계정을 연결했습니다"
|
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
|
msgid "This account is already connected to the server"
|
||||||
|
msgstr "이 계정은 이미 서버에 연결했습니다"
|
||||||
|
|
||||||
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "같은 자원을 사용하는 새로운 연결로 바꾸었습니다"
|
msgstr "같은 자원을 사용하는 새로운 연결로 바꾸었습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "계정이 이미 서버에 있습니다"
|
msgstr "계정이 이미 서버에 있습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
|
msgstr "서버가 처리할 작업이 많아 연결을 처리할 수 없습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "인증서를 철회했습니다"
|
msgstr "인증서를 철회했습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
|
msgstr "인증서가 보안에 취약한 알고리즘을 사용하거나 암호화 기능이 취약합니다."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1557,26 +1566,26 @@ msgstr ""
|
|||||||
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
|
"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한"
|
||||||
"을 넘어갑니다."
|
"을 넘어갑니다."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "내부 오류"
|
msgstr "내부 오류"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format, fuzzy
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "%s에 연결이 실패했습니다"
|
msgstr "%s에 연결이 실패했습니다"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "다시 연결"
|
msgstr "다시 연결"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "계정 편집"
|
msgstr "계정 편집"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "알 수 없는 이유"
|
msgstr "알 수 없는 이유"
|
||||||
|
|
||||||
@ -1650,7 +1659,7 @@ msgid ""
|
|||||||
"Sorry, no wisdom for you today:\n"
|
"Sorry, no wisdom for you today:\n"
|
||||||
"%s"
|
"%s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"죄송하지만, 오늘 조언해 줄 것이 없습니다:\n"
|
"죄송합니다. 오늘은 조언할 내용이 없습니다:\n"
|
||||||
"%s"
|
"%s"
|
||||||
|
|
||||||
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
|
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
|
||||||
@ -1670,7 +1679,7 @@ msgstr "'%s' 프로그램이 준비되었습니다"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1678,13 +1687,13 @@ msgstr[0] "%u개 출력"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u개 입력"
|
msgstr[0] "%u개 입력"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "시스템 소리"
|
msgstr "시스템 소리"
|
||||||
|
|
||||||
@ -1708,7 +1717,7 @@ msgstr "암호가 일치하지 않습니다."
|
|||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:716
|
#: ../src/shell-keyring-prompt.c:716
|
||||||
msgid "Password cannot be blank"
|
msgid "Password cannot be blank"
|
||||||
msgstr "암호는 비울 수 없습니다"
|
msgstr "빈 암호를 쓸 수 없습니다"
|
||||||
|
|
||||||
#: ../src/shell-mobile-providers.c:80
|
#: ../src/shell-mobile-providers.c:80
|
||||||
msgid "United Kingdom"
|
msgid "United Kingdom"
|
||||||
@ -1744,27 +1753,3 @@ msgstr "파일 시스템"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "%1$s: %2$s"
|
msgid "%1$s: %2$s"
|
||||||
msgstr "%s: %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 "이제 네트워크에 연결되어 있지 않습니다"
|
|
||||||
|
278
po/mr.po
278
po/mr.po
@ -8,8 +8,8 @@ msgstr ""
|
|||||||
"Project-Id-Version: mr\n"
|
"Project-Id-Version: mr\n"
|
||||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||||
"shell&keywords=I18N+L10N&component=general\n"
|
"shell&keywords=I18N+L10N&component=general\n"
|
||||||
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
|
"POT-Creation-Date: 2012-04-24 15:39+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-02 11:33+0530\n"
|
"PO-Revision-Date: 2012-05-10 09:57+0530\n"
|
||||||
"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
|
"Last-Translator: Sandeep Shedmake <sshedmak@redhat.com>\n"
|
||||||
"Language-Team: Marathi <fedora-trans-mr@redhat.com>\n"
|
"Language-Team: Marathi <fedora-trans-mr@redhat.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
@ -47,7 +47,6 @@ msgid ""
|
|||||||
msgstr "आंतरिक डिबगिंग व Alt-F2 संवादचा वापर करून निंयत्रणकरीता प्रवेश देतो."
|
msgstr "आंतरिक डिबगिंग व Alt-F2 संवादचा वापर करून निंयत्रणकरीता प्रवेश देतो."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||||
#| msgid "Uuids of extensions to disable"
|
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "सुरू करण्याजोगी एक्सटेंशन्स्चे Uuids"
|
msgstr "सुरू करण्याजोगी एक्सटेंशन्स्चे Uuids"
|
||||||
|
|
||||||
@ -59,10 +58,10 @@ msgid ""
|
|||||||
"DisableExtension DBus methods on org.gnome.Shell."
|
"DisableExtension DBus methods on org.gnome.Shell."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"GNOME शेल एक्सटेंशन्सकडे uuid गुणधर्म असते; हि कि एक्सटेंशन्स् दाखवते ज्यास "
|
"GNOME शेल एक्सटेंशन्सकडे uuid गुणधर्म असते; हि कि एक्सटेंशन्स् दाखवते ज्यास "
|
||||||
"लोड करणे आवश्यक आहे. "
|
"लोड करणे आवश्यक "
|
||||||
"लोड करण्याजोगी कोणत्याहि एक्सटेंशला सूचीत असणे आवश्यक आहे. "
|
"आहे. लोड करण्याजोगी कोणत्याहि एक्सटेंशला सूचीत असणे आवश्यक आहे. org.gnome."
|
||||||
"org.gnome.Shell वरील EnableExtension व DisableExtension DBus मेथडससह या सूचीत "
|
"Shell वरील "
|
||||||
"बदल करणे शक्य आहे."
|
"EnableExtension व DisableExtension DBus मेथडससह या सूचीत बदल करणे शक्य आहे."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
@ -110,7 +109,8 @@ msgid ""
|
|||||||
"The value here is from the TpConnectionPresenceType enumeration."
|
"The value here is from the TpConnectionPresenceType enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"वापरकर्तातर्फे ठरवलेले शेवटचे IM हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते. "
|
"वापरकर्तातर्फे ठरवलेले शेवटचे IM हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते. "
|
||||||
"येथील मूल्य TpConnectionPresenceType एन्युमरेशनपासूनचे आहे."
|
"येथील मूल्य "
|
||||||
|
"TpConnectionPresenceType एन्युमरेशनपासूनचे आहे."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -118,8 +118,8 @@ msgid ""
|
|||||||
"value here is from the GsmPresenceStatus enumeration."
|
"value here is from the GsmPresenceStatus enumeration."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"वापरकर्तातर्फे ठरवलेले शेवटचे सत्र हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते."
|
"वापरकर्तातर्फे ठरवलेले शेवटचे सत्र हाजेरी साठवण्याकरीता आंतरिकपणे वापरले जाते."
|
||||||
" "
|
" येथील मूल्य "
|
||||||
"येथील मूल्य GsmPresenceStatus एन्युमरेशनपासूनचे आहे."
|
"GsmPresenceStatus एन्युमरेशनपासूनचे आहे."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
@ -138,34 +138,44 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "ॲप्लिकेशन मेन्यु उघडण्यासाठी किबाइंडिंग."
|
msgstr "ॲप्लिकेशन मेन्यु उघडण्यासाठी किबाइंडिंग."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
#| msgid "Keybinding to open the application menu"
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "स्क्रीन रेकॉर्डरमधील बदलसाठी किबाइंडिंग"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
#| msgid "Keybinding to open the application menu."
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "बिल्टइन स्क्रीन रेकॉर्डर सुरू किंवा थांबवण्यासाठी किबाइंडिंग."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "कुठले किबोर्ड वापरायचे"
|
msgstr "कुठले किबोर्ड वापरायचे"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "वापरण्याजोगी किबोर्डचे प्रकार."
|
msgstr "वापरण्याजोगी किबोर्डचे प्रकार."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "सेकंदात वेळ दाखवा"
|
msgstr "सेकंदात वेळ दाखवा"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "खरे असल्यास, वेळेत सेकंद दाखवा."
|
msgstr "खरे असल्यास, वेळेत सेकंद दाखवा."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "घड्याळात दिनांक दाखवा"
|
msgstr "घड्याळात दिनांक दाखवा"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "खरे असल्यास,वेळेबरोबर तारीख पण घड्याळात दाखवा."
|
msgstr "खरे असल्यास,वेळेबरोबर तारीख पण घड्याळात दाखवा."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
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:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -174,24 +184,12 @@ msgstr ""
|
|||||||
"केलेल्या परिणामक "
|
"केलेल्या परिणामक "
|
||||||
"सक्रीनकास्टचा फ्रेमरेट."
|
"सक्रीनकास्टचा फ्रेमरेट."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "स्क्रीनकास्ट एंकोड करण्यासाठी वापरलेले gstreamer पाइपलाइन"
|
msgstr "स्क्रीनकास्ट एंकोड करण्यासाठी वापरलेले gstreamer पाइपलाइन"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid ""
|
|
||||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
|
||||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
|
||||||
#| "pad where the recorded video is recorded. It will normally have a "
|
|
||||||
#| "unconnected source pad; output from that pad will be written into the "
|
|
||||||
#| "output file. However the pipeline can also take care of its own output - "
|
|
||||||
#| "this might be used to send the output to an icecast server via shout2send "
|
|
||||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
|
||||||
#| "will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 "
|
|
||||||
#| "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T "
|
|
||||||
#| "is used as a placeholder for a guess at the optimal thread count on the "
|
|
||||||
#| "system."
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"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 "
|
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||||
@ -205,21 +203,26 @@ msgid ""
|
|||||||
"thread count on the system."
|
"thread count on the system."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"रेकॉर्डिंग्स् एंकोड करण्यासाठी GStreamer पाइपलाइन ठरवतो. gst-launch सुरू "
|
"रेकॉर्डिंग्स् एंकोड करण्यासाठी GStreamer पाइपलाइन ठरवतो. gst-launch सुरू "
|
||||||
"करण्यासाठी मांडणीचा वापर करतो. पाइपलाइनमध्ये जोडणी अशक्य सिंक पॅड असायला हवे "
|
"करण्यासाठी "
|
||||||
"जेथे रेकॉर्डेड व्हिडीओ रेकॉर्ड केले जाते. सहसा जोडणी अशक्य स्रोत पॅड असते; "
|
"मांडणीचा वापर करतो. पाइपलाइनमध्ये जोडणी अशक्य सिंक पॅड असायला हवे जेथे "
|
||||||
"पॅडपासूनचे आऊटपुट, आऊटपुट फाइलमध्ये लिहले जाते. तरी पाइपलाइन स्वतःच्या "
|
"रेकॉर्डेड व्हिडीओ "
|
||||||
"आऊटपुटची काळजी घेतो - याचा वापर shout2send किंवा समानतर्फे icecast "
|
"रेकॉर्ड केले जाते. सहसा जोडणी अशक्य स्रोत पॅड असते; पॅडपासूनचे आऊटपुट, आऊटपुट "
|
||||||
"सर्व्हरकरीता आऊटपुट पाठवण्याकरीता केला जातो. रिकामे मूल्यकरीता सेट अशक्य "
|
"फाइलमध्ये लिहले "
|
||||||
"किंवा शक्य केल्यावर, मूळ पाइपलाइनचा वापर केला जातो. हे सध्या 'vp8enc "
|
"जाते. तरी पाइपलाइन स्वतःच्या आऊटपुटची काळजी घेतो - याचा वापर shout2send किंवा "
|
||||||
"quality=8 speed=6 threads=%T ! queue ! webmmux' आहे व VP8 कोडेकचा वापर करून "
|
"समानतर्फे icecast सर्व्हरकरीता आऊटपुट पाठवण्याकरीता केला जातो. रिकामे "
|
||||||
"WEBM करीता रेकॉर्डिंग करतो. %T चा वापर प्रणालीवरील कमाल थ्रेड गणणा "
|
"मूल्यकरीता सेट "
|
||||||
"ओळखण्यासाठी प्लेसहोल्डर म्हणून केला जातो."
|
"अशक्य किंवा शक्य केल्यावर, मूळ पाइपलाइनचा वापर केला जातो. हे सध्या '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:31
|
||||||
msgid "File extension used for storing the screencast"
|
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:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -243,42 +246,40 @@ msgstr "<b>एक्सटेंशन</b>"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "वरील कॉम्बोबॉक्सचा वापर करून संरचनाकरीता एक्सटेंशनचा वापर करा."
|
msgstr "वरील कॉम्बोबॉक्सचा वापर करून संरचनाकरीता एक्सटेंशनचा वापर करा."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
#| msgid "Searching..."
|
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "सत्र..."
|
msgstr "सत्र..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "प्रवेश करा"
|
msgstr "प्रवेश करा"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(किंवा बोट फिरवा)"
|
msgstr "(किंवा बोट फिरवा)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "सूचीत नाही?"
|
msgstr "सूचीत नाही?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "रद्द करा"
|
msgstr "रद्द करा"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "प्रवेश करा"
|
msgstr "प्रवेश करा"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
#| msgid "New Window"
|
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "प्रवेश पटल"
|
msgstr "प्रवेश पटल"
|
||||||
|
|
||||||
@ -355,7 +356,6 @@ msgid "Open with %s"
|
|||||||
msgstr "%s सह उघडा"
|
msgstr "%s सह उघडा"
|
||||||
|
|
||||||
#: ../js/ui/autorunManager.js:586
|
#: ../js/ui/autorunManager.js:586
|
||||||
#| msgid "Reject"
|
|
||||||
msgid "Eject"
|
msgid "Eject"
|
||||||
msgstr "बाहेर काढा"
|
msgstr "बाहेर काढा"
|
||||||
|
|
||||||
@ -591,13 +591,11 @@ msgstr "%A %B %e, %Y"
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:61
|
#: ../js/ui/endSessionDialog.js:61
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "Log Out %s"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out %s"
|
msgid "Log Out %s"
|
||||||
msgstr "%s पासून बाहेर पडा"
|
msgstr "%s पासून बाहेर पडा"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:62
|
#: ../js/ui/endSessionDialog.js:62
|
||||||
#| msgid "Log Out"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "बाहेर पडा"
|
msgstr "बाहेर पडा"
|
||||||
@ -609,7 +607,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:65
|
#: ../js/ui/endSessionDialog.js:65
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "%s will be logged out automatically in %d seconds."
|
|
||||||
msgid "%s will be logged out automatically in %d second."
|
msgid "%s will be logged out automatically in %d second."
|
||||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%s स्वयं, %d सेकंदात बाहेर पडेल."
|
msgstr[0] "%s स्वयं, %d सेकंदात बाहेर पडेल."
|
||||||
@ -617,7 +614,6 @@ msgstr[1] "%s स्वयं, %d सेकंदात बाहेर पड
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:70
|
#: ../js/ui/endSessionDialog.js:70
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "You will be logged out automatically in %d seconds."
|
|
||||||
msgid "You will be logged out automatically in %d second."
|
msgid "You will be logged out automatically in %d second."
|
||||||
msgid_plural "You will be logged out automatically in %d seconds."
|
msgid_plural "You will be logged out automatically in %d seconds."
|
||||||
msgstr[0] "%d सेकंदात तुम्ही स्वयं बाहेर पडाल."
|
msgstr[0] "%d सेकंदात तुम्ही स्वयं बाहेर पडाल."
|
||||||
@ -628,13 +624,11 @@ msgid "Logging out of the system."
|
|||||||
msgstr "प्रणालीतून बाहेर पडत आहे."
|
msgstr "प्रणालीतून बाहेर पडत आहे."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:76
|
#: ../js/ui/endSessionDialog.js:76
|
||||||
#| msgid "Log Out"
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Log Out"
|
msgid "Log Out"
|
||||||
msgstr "बाहेर पडा"
|
msgstr "बाहेर पडा"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:81
|
#: ../js/ui/endSessionDialog.js:81
|
||||||
#| msgid "Power Off"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "बंद करा"
|
msgstr "बंद करा"
|
||||||
@ -645,7 +639,6 @@ msgstr "ॲप्लिकेशन्स् बंद करण्यासा
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:84
|
#: ../js/ui/endSessionDialog.js:84
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "The system will power off automatically in %d seconds."
|
|
||||||
msgid "The system will power off automatically in %d second."
|
msgid "The system will power off automatically in %d second."
|
||||||
msgid_plural "The system will power off automatically in %d seconds."
|
msgid_plural "The system will power off automatically in %d seconds."
|
||||||
msgstr[0] "प्रणाली स्वयं %d सेकंदात बंद होईल."
|
msgstr[0] "प्रणाली स्वयं %d सेकंदात बंद होईल."
|
||||||
@ -656,19 +649,16 @@ msgid "Powering off the system."
|
|||||||
msgstr "प्रणाली बंद करत आहे."
|
msgstr "प्रणाली बंद करत आहे."
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||||
#| msgid "Restart"
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "पुनः सुरू करा"
|
msgstr "पुनः सुरू करा"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:92
|
#: ../js/ui/endSessionDialog.js:92
|
||||||
#| msgid "Power Off"
|
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Power Off"
|
msgid "Power Off"
|
||||||
msgstr "बंद करा"
|
msgstr "बंद करा"
|
||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:98
|
#: ../js/ui/endSessionDialog.js:98
|
||||||
#| msgid "Restart"
|
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Restart"
|
msgid "Restart"
|
||||||
msgstr "पुनः सुरू करा"
|
msgstr "पुनः सुरू करा"
|
||||||
@ -680,7 +670,6 @@ msgstr ""
|
|||||||
|
|
||||||
#: ../js/ui/endSessionDialog.js:101
|
#: ../js/ui/endSessionDialog.js:101
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "The system will restart automatically in %d seconds."
|
|
||||||
msgid "The system will restart automatically in %d second."
|
msgid "The system will restart automatically in %d second."
|
||||||
msgid_plural "The system will restart automatically in %d seconds."
|
msgid_plural "The system will restart automatically in %d seconds."
|
||||||
msgstr[0] "प्रणाली स्वयं %d सेकंदात पुनः सुरू होईल."
|
msgstr[0] "प्रणाली स्वयं %d सेकंदात पुनः सुरू होईल."
|
||||||
@ -690,21 +679,21 @@ msgstr[1] "प्रणाली स्वयं %d सेकंदामध्
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "प्रणाली पुनःसुरू करत आहे."
|
msgstr "प्रणाली पुनःसुरू करत आहे."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "प्रतिष्ठापीत करा"
|
msgstr "प्रतिष्ठापीत करा"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr " extensions.gnome.org पासून '%s' डाऊनलोड व प्रतिष्ठापीत करा?"
|
msgstr " extensions.gnome.org पासून '%s' डाऊनलोड व प्रतिष्ठापीत करा?"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:327
|
#: ../js/ui/keyboard.js:327
|
||||||
#| msgid "Retry"
|
|
||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "ट्रे"
|
msgstr "ट्रे"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "कळफलक"
|
msgstr "कळफलक"
|
||||||
|
|
||||||
@ -727,12 +716,10 @@ msgid "%s has not emitted any errors."
|
|||||||
msgstr "%s ने कोणत्याहि त्रुटी दाखवले नाही."
|
msgstr "%s ने कोणत्याहि त्रुटी दाखवले नाही."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:792
|
#: ../js/ui/lookingGlass.js:792
|
||||||
#| msgid "Error"
|
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "त्रुटी लपवा"
|
msgstr "त्रुटी लपवा"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
#| msgid "Error"
|
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "त्रुटी दाखवा"
|
msgstr "त्रुटी दाखवा"
|
||||||
|
|
||||||
@ -742,7 +729,7 @@ msgstr "सुरू केले"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "बंद केले"
|
msgstr "बंद केले"
|
||||||
|
|
||||||
@ -767,7 +754,7 @@ msgid "Web Page"
|
|||||||
msgstr "वेब पृष्ठ"
|
msgstr "वेब पृष्ठ"
|
||||||
|
|
||||||
#. Translators: this is a filename used for screencast recording
|
#. Translators: this is a filename used for screencast recording
|
||||||
#: ../js/ui/main.js:118
|
#: ../js/ui/main.js:121
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "%d %t पासून स्क्रीनकास्ट"
|
msgstr "%d %t पासून स्क्रीनकास्ट"
|
||||||
@ -777,22 +764,18 @@ msgid "Open"
|
|||||||
msgstr "उघडा"
|
msgstr "उघडा"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1217
|
||||||
#| msgid "minute"
|
|
||||||
#| msgid_plural "minutes"
|
|
||||||
msgid "Unmute"
|
msgid "Unmute"
|
||||||
msgstr "मंद करणे अशक्य करा"
|
msgstr "बंद करणे अशक्य करा"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:1217
|
#: ../js/ui/messageTray.js:1217
|
||||||
#| msgid "Mouse"
|
|
||||||
msgid "Mute"
|
msgid "Mute"
|
||||||
msgstr "मंद करा"
|
msgstr "बंद करा"
|
||||||
|
|
||||||
#: ../js/ui/messageTray.js:2490
|
#: ../js/ui/messageTray.js:2490
|
||||||
msgid "System Information"
|
msgid "System Information"
|
||||||
msgstr "प्रणाली माहिती"
|
msgstr "प्रणाली माहिती"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:148
|
#: ../js/ui/networkAgent.js:148
|
||||||
#| msgid "Connection"
|
|
||||||
msgid "Connect"
|
msgid "Connect"
|
||||||
msgstr "जोडणी करा"
|
msgstr "जोडणी करा"
|
||||||
|
|
||||||
@ -800,7 +783,6 @@ msgstr "जोडणी करा"
|
|||||||
#: ../js/ui/networkAgent.js:243 ../js/ui/networkAgent.js:255
|
#: ../js/ui/networkAgent.js:243 ../js/ui/networkAgent.js:255
|
||||||
#: ../js/ui/networkAgent.js:282 ../js/ui/networkAgent.js:302
|
#: ../js/ui/networkAgent.js:282 ../js/ui/networkAgent.js:302
|
||||||
#: ../js/ui/networkAgent.js:312
|
#: ../js/ui/networkAgent.js:312
|
||||||
#| msgid "Password:"
|
|
||||||
msgid "Password: "
|
msgid "Password: "
|
||||||
msgstr "पासवर्ड: "
|
msgstr "पासवर्ड: "
|
||||||
|
|
||||||
@ -829,7 +811,6 @@ msgid "Service: "
|
|||||||
msgstr "सर्व्हिस: "
|
msgstr "सर्व्हिस: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:329
|
#: ../js/ui/networkAgent.js:329
|
||||||
#| msgid "Authentication Required"
|
|
||||||
msgid "Authentication required by wireless network"
|
msgid "Authentication required by wireless network"
|
||||||
msgstr "वायरलेस नेटवर्कतर्फे आवश्यक ओळखपटवणे"
|
msgstr "वायरलेस नेटवर्कतर्फे आवश्यक ओळखपटवणे"
|
||||||
|
|
||||||
@ -845,12 +826,10 @@ msgid "Wired 802.1X authentication"
|
|||||||
msgstr "वायर्ड 802.1X ओळखपटवणे"
|
msgstr "वायर्ड 802.1X ओळखपटवणे"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:336
|
#: ../js/ui/networkAgent.js:336
|
||||||
#| msgid "Network Manager"
|
|
||||||
msgid "Network name: "
|
msgid "Network name: "
|
||||||
msgstr "नेटवर्क नाव: "
|
msgstr "नेटवर्क नाव: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:341
|
#: ../js/ui/networkAgent.js:341
|
||||||
#| msgid "authentication required"
|
|
||||||
msgid "DSL authentication"
|
msgid "DSL authentication"
|
||||||
msgstr "DSL ओळख पटवणे"
|
msgstr "DSL ओळख पटवणे"
|
||||||
|
|
||||||
@ -867,13 +846,11 @@ msgid "PIN: "
|
|||||||
msgstr "PIN: "
|
msgstr "PIN: "
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:356
|
#: ../js/ui/networkAgent.js:356
|
||||||
#| msgid "Mobile broadband"
|
|
||||||
msgid "Mobile broadband network password"
|
msgid "Mobile broadband network password"
|
||||||
msgstr "मोबाईल ब्रॉडबँड नेटवर्क पासवर्ड"
|
msgstr "मोबाईल ब्रॉडबँड नेटवर्क पासवर्ड"
|
||||||
|
|
||||||
#: ../js/ui/networkAgent.js:357
|
#: ../js/ui/networkAgent.js:357
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "You're now connected to '%s'"
|
|
||||||
msgid "A password is required to connect to '%s'."
|
msgid "A password is required to connect to '%s'."
|
||||||
msgstr "'%s' सह जोडणीकरीता पासवर्ड आवश्यक आहे."
|
msgstr "'%s' सह जोडणीकरीता पासवर्ड आवश्यक आहे."
|
||||||
|
|
||||||
@ -900,7 +877,6 @@ msgid "Dash"
|
|||||||
msgstr "डॅश"
|
msgstr "डॅश"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:592
|
#: ../js/ui/panel.js:592
|
||||||
#| msgid "Quit %s"
|
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "बाहेर पडा"
|
msgstr "बाहेर पडा"
|
||||||
|
|
||||||
@ -968,7 +944,7 @@ msgstr "कृपया आदेश द्या:"
|
|||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "शोधत आहे..."
|
msgstr "शोधत आहे..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:414
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "जुळवण्याजोगी परिणाम आढळले नाही."
|
msgstr "जुळवण्याजोगी परिणाम आढळले नाही."
|
||||||
|
|
||||||
@ -985,7 +961,6 @@ msgid "Show Text"
|
|||||||
msgstr "मजकूर दाखवा"
|
msgstr "मजकूर दाखवा"
|
||||||
|
|
||||||
#: ../js/ui/shellEntry.js:79
|
#: ../js/ui/shellEntry.js:79
|
||||||
#| msgid "Large Text"
|
|
||||||
msgid "Hide Text"
|
msgid "Hide Text"
|
||||||
msgstr "मजकूर लपवा"
|
msgstr "मजकूर लपवा"
|
||||||
|
|
||||||
@ -994,7 +969,6 @@ msgid "Wrong password, please try again"
|
|||||||
msgstr "चुकिचा पासवर्ड, कृपया पुनः प्रयत्न करा"
|
msgstr "चुकिचा पासवर्ड, कृपया पुनः प्रयत्न करा"
|
||||||
|
|
||||||
#: ../js/ui/status/accessibility.js:47
|
#: ../js/ui/status/accessibility.js:47
|
||||||
#| msgid "Visibility"
|
|
||||||
msgid "Accessibility"
|
msgid "Accessibility"
|
||||||
msgstr "ॲक्सेसिबिलिटि"
|
msgstr "ॲक्सेसिबिलिटि"
|
||||||
|
|
||||||
@ -1006,7 +980,6 @@ msgstr "झूम"
|
|||||||
#. 'screen-reader-enabled');
|
#. 'screen-reader-enabled');
|
||||||
#. this.menu.addMenuItem(screenReader);
|
#. this.menu.addMenuItem(screenReader);
|
||||||
#: ../js/ui/status/accessibility.js:63
|
#: ../js/ui/status/accessibility.js:63
|
||||||
#| msgid "Keyboard"
|
|
||||||
msgid "Screen Keyboard"
|
msgid "Screen Keyboard"
|
||||||
msgstr "स्क्रीन किबोर्ड"
|
msgstr "स्क्रीन किबोर्ड"
|
||||||
|
|
||||||
@ -1058,7 +1031,6 @@ msgid "Send Files to Device..."
|
|||||||
msgstr "फाइल्स्ना साधनावर पाठवा..."
|
msgstr "फाइल्स्ना साधनावर पाठवा..."
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:63
|
#: ../js/ui/status/bluetooth.js:63
|
||||||
#| msgid "Setup a New Device..."
|
|
||||||
msgid "Set up a New Device..."
|
msgid "Set up a New Device..."
|
||||||
msgstr "नविन साधनची मांडणी करा..."
|
msgstr "नविन साधनची मांडणी करा..."
|
||||||
|
|
||||||
@ -1068,7 +1040,6 @@ msgstr "ब्ल्यूटूथ सेटिंग्स्"
|
|||||||
|
|
||||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||||
#| msgid "disabled"
|
|
||||||
msgid "hardware disabled"
|
msgid "hardware disabled"
|
||||||
msgstr "हार्डवेअर बंद केले"
|
msgstr "हार्डवेअर बंद केले"
|
||||||
|
|
||||||
@ -1077,7 +1048,6 @@ msgid "Connection"
|
|||||||
msgstr "जोडणी"
|
msgstr "जोडणी"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
||||||
#| msgid "connecting..."
|
|
||||||
msgid "disconnecting..."
|
msgid "disconnecting..."
|
||||||
msgstr "जोडणी खंडीत करत आहे..."
|
msgstr "जोडणी खंडीत करत आहे..."
|
||||||
|
|
||||||
@ -1132,7 +1102,7 @@ msgstr "नेहमी प्रवेश द्या"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "फक्त याचवेळी मान्य करा"
|
msgstr "फक्त याचवेळी मान्य करा"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "नकारा"
|
msgstr "नकारा"
|
||||||
|
|
||||||
@ -1173,12 +1143,10 @@ msgid "OK"
|
|||||||
msgstr "ठीक आहे"
|
msgstr "ठीक आहे"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:68
|
#: ../js/ui/status/keyboard.js:68
|
||||||
#| msgid "Show Keyboard Layout..."
|
|
||||||
msgid "Show Keyboard Layout"
|
msgid "Show Keyboard Layout"
|
||||||
msgstr "किबोर्ड लेआऊट दाखवा"
|
msgstr "किबोर्ड लेआऊट दाखवा"
|
||||||
|
|
||||||
#: ../js/ui/status/keyboard.js:73
|
#: ../js/ui/status/keyboard.js:73
|
||||||
#| msgid "Date and Time Settings"
|
|
||||||
msgid "Region and Language Settings"
|
msgid "Region and Language Settings"
|
||||||
msgstr "क्षेत्र व भाषा सेटिंग्स्"
|
msgstr "क्षेत्र व भाषा सेटिंग्स्"
|
||||||
|
|
||||||
@ -1260,7 +1228,6 @@ msgid "Auto wireless"
|
|||||||
msgstr "स्वयं वायरलेस्"
|
msgstr "स्वयं वायरलेस्"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1541
|
#: ../js/ui/status/network.js:1541
|
||||||
#| msgid "Network Manager"
|
|
||||||
msgid "Network"
|
msgid "Network"
|
||||||
msgstr "नेटवर्क"
|
msgstr "नेटवर्क"
|
||||||
|
|
||||||
@ -1289,12 +1256,10 @@ msgid "Network Settings"
|
|||||||
msgstr "जाळं संयोजना"
|
msgstr "जाळं संयोजना"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1739
|
#: ../js/ui/status/network.js:1739
|
||||||
#| msgid "connection failed"
|
|
||||||
msgid "Connection failed"
|
msgid "Connection failed"
|
||||||
msgstr "जोडणी अपयशी"
|
msgstr "जोडणी अपयशी"
|
||||||
|
|
||||||
#: ../js/ui/status/network.js:1740
|
#: ../js/ui/status/network.js:1740
|
||||||
#| msgid "connection failed"
|
|
||||||
msgid "Activation of network connection failed"
|
msgid "Activation of network connection failed"
|
||||||
msgstr "नेटवर्क जोडणी सुरू करणे अपयशी"
|
msgstr "नेटवर्क जोडणी सुरू करणे अपयशी"
|
||||||
|
|
||||||
@ -1415,7 +1380,6 @@ msgstr "आमंत्रण"
|
|||||||
|
|
||||||
#. We got the TpContact
|
#. We got the TpContact
|
||||||
#: ../js/ui/telepathyClient.js:271
|
#: ../js/ui/telepathyClient.js:271
|
||||||
#| msgid "Cancel"
|
|
||||||
msgid "Call"
|
msgid "Call"
|
||||||
msgstr "कॉल"
|
msgstr "कॉल"
|
||||||
|
|
||||||
@ -1425,12 +1389,10 @@ msgid "File Transfer"
|
|||||||
msgstr "फाइल स्थानांतरन"
|
msgstr "फाइल स्थानांतरन"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:369
|
#: ../js/ui/telepathyClient.js:369
|
||||||
#| msgid "Authorization request from %s"
|
|
||||||
msgid "Subscription request"
|
msgid "Subscription request"
|
||||||
msgstr "सबस्क्रिप्शन विनंती"
|
msgstr "सबस्क्रिप्शन विनंती"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:405
|
#: ../js/ui/telepathyClient.js:405
|
||||||
#| msgid "Connection"
|
|
||||||
msgid "Connection error"
|
msgid "Connection error"
|
||||||
msgstr "जोडणी त्रुटी"
|
msgstr "जोडणी त्रुटी"
|
||||||
|
|
||||||
@ -1457,36 +1419,35 @@ msgstr "%s व्यग्र आहे."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
#| msgid "Sent at %X on %A"
|
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "<b>%X</b> वेळी, <b>%A</b> ला पाठवले"
|
msgstr "<b>%X</b> वेळी, <b>%A</b> ला पाठवले"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "<b>%A</b> वेळी, <b>%B %d</b> ला पाठवले"
|
msgstr "<b>%A</b> वेळी, <b>%B %d</b> ला पाठवले"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "<b>%A</b>, <b>%B %d</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
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s ला %s म्हणून ओळखले जाते"
|
msgstr "%s ला %s म्हणून ओळखले जाते"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "%s करीता आमंत्रण"
|
msgstr "%s करीता आमंत्रण"
|
||||||
@ -1494,35 +1455,35 @@ msgstr "%s करीता आमंत्रण"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s तुम्हाला %s सह जोडणीकरीता आमंत्रण देत आहे"
|
msgstr "%s तुम्हाला %s सह जोडणीकरीता आमंत्रण देत आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "नकारा"
|
msgstr "नकारा"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "स्वीकारा"
|
msgstr "स्वीकारा"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "%s पासून व्हिडीओ कॉल्स्"
|
msgstr "%s पासून व्हिडीओ कॉल्स्"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "%s पासून कॉल"
|
msgstr "%s पासून कॉल"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "उत्तर"
|
msgstr "उत्तर"
|
||||||
|
|
||||||
@ -1531,147 +1492,138 @@ msgstr "उत्तर"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s तुम्हाला %s पाठवत आहे"
|
msgstr "%s तुम्हाला %s पाठवत आहे"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "ऑनलाइन असल्यावर %s परवानगी दृष्यास्पद करायची"
|
msgstr "ऑनलाइन असल्यावर %s परवानगी दृष्यास्पद करायची"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
#| msgid "Network Manager"
|
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "नेटवर्क त्रुटी"
|
msgstr "नेटवर्क त्रुटी"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
#| msgid "Authentication Required"
|
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "ओळख पटवणे अपयशी"
|
msgstr "ओळख पटवणे अपयशी"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "एंक्रिप्शन त्रुटी"
|
msgstr "एंक्रिप्शन त्रुटी"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "प्रमाणपत्र पुरवले नाही"
|
msgstr "प्रमाणपत्र पुरवले नाही"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "प्रमाणपत्र अविश्वासर्ह आहे"
|
msgstr "प्रमाणपत्र अविश्वासर्ह आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "प्रमाणपत्राची वेळसमाप्ति"
|
msgstr "प्रमाणपत्राची वेळसमाप्ति"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "प्रमाणपत्र सुरू केले नाही"
|
msgstr "प्रमाणपत्र सुरू केले नाही"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "प्रमाणपत्र यजमाननाव जुळत नाही"
|
msgstr "प्रमाणपत्र यजमाननाव जुळत नाही"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "प्रमाणपत्र फिंग्ररप्रिंट जुळत नाही"
|
msgstr "प्रमाणपत्र फिंग्ररप्रिंट जुळत नाही"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "प्रमाणपत्र स्वयं स्वाक्षरि"
|
msgstr "प्रमाणपत्र स्वयं स्वाक्षरि"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
#| msgid "%s is offline."
|
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "स्थिती ऑफलाइनकरीता ठरवली आहे"
|
msgstr "स्थिती ऑफलाइनकरीता ठरवली आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "एंक्रिप्शन अनुपलब्ध"
|
msgstr "एंक्रिप्शन अनुपलब्ध"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "प्रमाणपत्र अवैध आहे"
|
msgstr "प्रमाणपत्र अवैध आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
#| msgid "Connection established"
|
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "जोडणी नकारली गेली"
|
msgstr "जोडणी नकारली गेली"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
#| msgid "Connection established"
|
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "जोडणी स्थापीत करणे अशक्य"
|
msgstr "जोडणी स्थापीत करणे अशक्य"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
#| msgid "Connection established"
|
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "जोडणी खंडीत झाली"
|
msgstr "जोडणी खंडीत झाली"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "हे खाते आधिपासूनच सर्व्हरसह जुळले आहे"
|
msgstr "हे खाते आधिपासूनच सर्व्हरसह जुळले आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "समान स्रोतचा वापर करून जोडणीला नविन जोडणीसह बदलाबदल केले आहे"
|
msgstr "समान स्रोतचा वापर करून जोडणीला नविन जोडणीसह बदलाबदल केले आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "खाते आधिपासूनच सर्व्हरवर अस्तित्वात आहे"
|
msgstr "खाते आधिपासूनच सर्व्हरवर अस्तित्वात आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "जोडणी हाताळण्यासाठी सर्व्हर सध्या खूप व्यस्थ आहे"
|
msgstr "जोडणी हाताळण्यासाठी सर्व्हर सध्या खूप व्यस्थ आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "प्रमाणपत्र रद्द केले"
|
msgstr "प्रमाणपत्र रद्द केले"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"प्रमाणपत्र असुरक्षित सिफर अल्गोरिदमचा वापर करते किंवा क्रिप्टोग्राफिकरित्या "
|
"प्रमाणपत्र असुरक्षित सिफर अल्गोरिदमचा वापर करते किंवा क्रिप्टोग्राफिकरित्या "
|
||||||
"खूप कमजोर आहे"
|
"खूप कमजोर आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"सर्व्हर प्रमाणपत्राची लांबी, किंवा सर्व्हर प्रमाणपत्र चैनचे गांभीर्य, "
|
"सर्व्हर प्रमाणपत्राची लांबी, किंवा सर्व्हर प्रमाणपत्र चैनचे गांभीर्य, "
|
||||||
"क्रिप्टोग्राफि लाइब्ररितर्फे लादलेल्या मर्यादापेक्षा जास्त आहे"
|
"क्रिप्टोग्राफि "
|
||||||
|
"लाइब्ररितर्फे लादलेल्या मर्यादापेक्षा जास्त आहे"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "आंतरिक त्रुटी"
|
msgstr "आंतरिक त्रुटी"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
#| msgid "connection failed"
|
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "%s सह जोडणी अपयशी"
|
msgstr "%s सह जोडणी अपयशी"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
#| msgid "Reject"
|
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "पुनःजोडणी करा"
|
msgstr "पुनःजोडणी करा"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
#| msgid "My Account"
|
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "खाते संपादित करा"
|
msgstr "खाते संपादित करा"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
#| msgid "Unknown"
|
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "अपरिचीत कारण"
|
msgstr "अपरिचीत कारण"
|
||||||
|
|
||||||
@ -1684,7 +1636,6 @@ msgid "Idle"
|
|||||||
msgstr "रिकामे"
|
msgstr "रिकामे"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:144
|
#: ../js/ui/userMenu.js:144
|
||||||
#| msgid "unavailable"
|
|
||||||
msgid "Unavailable"
|
msgid "Unavailable"
|
||||||
msgstr "अनुपलब्ध"
|
msgstr "अनुपलब्ध"
|
||||||
|
|
||||||
@ -1693,12 +1644,10 @@ msgid "Power Off..."
|
|||||||
msgstr "बंद करा..."
|
msgstr "बंद करा..."
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:631
|
#: ../js/ui/userMenu.js:631
|
||||||
#| msgid "Applications"
|
|
||||||
msgid "Notifications"
|
msgid "Notifications"
|
||||||
msgstr "सूचना"
|
msgstr "सूचना"
|
||||||
|
|
||||||
#: ../js/ui/userMenu.js:639
|
#: ../js/ui/userMenu.js:639
|
||||||
#| msgid "My Account"
|
|
||||||
msgid "Online Accounts"
|
msgid "Online Accounts"
|
||||||
msgstr "ऑनलाइन खाते"
|
msgstr "ऑनलाइन खाते"
|
||||||
|
|
||||||
@ -1728,7 +1677,8 @@ msgid ""
|
|||||||
"has been adjusted to let others know that you might not see their messages."
|
"has been adjusted to let others know that you might not see their messages."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"सूचना आता बंद केले आहे, चॅट संदेश समाविष्टीत. इतरांना तुमचे संदेश दिसणार नाही "
|
"सूचना आता बंद केले आहे, चॅट संदेश समाविष्टीत. इतरांना तुमचे संदेश दिसणार नाही "
|
||||||
"हे कळवण्यासाठी ऑनलाइन स्थिती सुस्थीत केली आहे."
|
"हे कळवण्यासाठी "
|
||||||
|
"ऑनलाइन स्थिती सुस्थीत केली आहे."
|
||||||
|
|
||||||
#. Translators: this is the text displayed
|
#. Translators: this is the text displayed
|
||||||
#. in the search entry when no search is
|
#. in the search entry when no search is
|
||||||
@ -1767,7 +1717,7 @@ msgstr "'%s' सज्ज आहे"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1776,14 +1726,14 @@ msgstr[1] "%u आऊटपुट"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u इंपुट"
|
msgstr[0] "%u इंपुट"
|
||||||
msgstr[1] "%u इंपुट"
|
msgstr[1] "%u इंपुट"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "प्रणाली आवाज"
|
msgstr "प्रणाली आवाज"
|
||||||
|
|
||||||
@ -1801,7 +1751,6 @@ msgid "Failed to launch '%s'"
|
|||||||
msgstr "'%s' सुरू करण्यास अपयशी"
|
msgstr "'%s' सुरू करण्यास अपयशी"
|
||||||
|
|
||||||
#: ../src/shell-keyring-prompt.c:708
|
#: ../src/shell-keyring-prompt.c:708
|
||||||
#| msgid "Does not match"
|
|
||||||
msgid "Passwords do not match."
|
msgid "Passwords do not match."
|
||||||
msgstr "पासवर्डस् जुळत नाही."
|
msgstr "पासवर्डस् जुळत नाही."
|
||||||
|
|
||||||
@ -1824,7 +1773,6 @@ msgstr "ओळख पटवा संवाद वापरकर्त्या
|
|||||||
#. Translators: this is the same string as the one found in
|
#. Translators: this is the same string as the one found in
|
||||||
#. * nautilus
|
#. * nautilus
|
||||||
#: ../src/shell-util.c:97
|
#: ../src/shell-util.c:97
|
||||||
#| msgid "Volume"
|
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "होम"
|
msgstr "होम"
|
||||||
|
|
||||||
|
157
po/nb.po
157
po/nb.po
@ -6,10 +6,10 @@
|
|||||||
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
# Torstein Adolf Winterseth <kvikende@fsfe.org>, 2010.
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gnome-shell 3.3.x\n"
|
"Project-Id-Version: gnome-shell 3.5.x\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-04-11 12:50+0200\n"
|
"POT-Creation-Date: 2012-04-30 11:12+0200\n"
|
||||||
"PO-Revision-Date: 2012-04-11 12:50+0200\n"
|
"PO-Revision-Date: 2012-04-30 11:13+0200\n"
|
||||||
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
|
||||||
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
@ -132,34 +132,42 @@ msgid "Keybinding to open the application menu."
|
|||||||
msgstr "Tastaturbinding som åpner programmenyen."
|
msgstr "Tastaturbinding som åpner programmenyen."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
|
msgid "Keybinding to toggle the screen recorder"
|
||||||
|
msgstr "Tastaturbinding som slår av/på skjermopptak"
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
|
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||||
|
msgstr "Tastaturbinding som starter/stopper innebygget opptak av skjerm."
|
||||||
|
|
||||||
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Tastatur som skal brukes"
|
msgstr "Tastatur som skal brukes"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "Type tastatur som skal brukes."
|
msgstr "Type tastatur som skal brukes."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Vis tid med sekunder"
|
msgstr "Vis tid med sekunder"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid "If true, display seconds in time."
|
msgid "If true, display seconds in time."
|
||||||
msgstr "Viser sekunder i klokken hvis «true»."
|
msgstr "Viser sekunder i klokken hvis «true»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Vis dato i klokken"
|
msgstr "Vis dato i klokken"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid "If true, display date in the clock, in addition to time."
|
msgid "If true, display date in the clock, in addition to time."
|
||||||
msgstr "Viser dato i tillegg til tid i klokken hvis «true»."
|
msgstr "Viser dato i tillegg til tid i klokken hvis «true»."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "Framerate used for recording screencasts."
|
msgid "Framerate used for recording screencasts."
|
||||||
msgstr "Bildefrekvens i bruk ved lagring av skjermvideoer."
|
msgstr "Bildefrekvens i bruk ved lagring av skjermvideoer."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -167,11 +175,11 @@ msgstr ""
|
|||||||
"Bildefrekvensen i den ferdige skjermvideoen tatt opp med GNOME Shells "
|
"Bildefrekvensen i den ferdige skjermvideoen tatt opp med GNOME Shells "
|
||||||
"skjermvideoopptaker i bilder per sekund."
|
"skjermvideoopptaker i bilder per sekund."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "Gstreamer-kommandokø brukt til å kode skjermvideoen"
|
msgstr "Gstreamer-kommandokø brukt til å kode skjermvideoen"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
#, fuzzy, no-c-format
|
#, fuzzy, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -188,11 +196,11 @@ msgstr ""
|
|||||||
"Setter GStreamer-rør som brukes til å kode opptak. Den følger syntaksen som "
|
"Setter GStreamer-rør som brukes til å kode opptak. Den følger syntaksen som "
|
||||||
"brukes for gst-launch. Røret må ha en..."
|
"brukes for gst-launch. Røret må ha en..."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
#: ../data/org.gnome.shell.gschema.xml.in.h:31
|
||||||
msgid "File extension used for storing the screencast"
|
msgid "File extension used for storing the screencast"
|
||||||
msgstr "Filendelse i bruk ved lagring av skjermvideo"
|
msgstr "Filendelse i bruk ved lagring av skjermvideo"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
#: ../data/org.gnome.shell.gschema.xml.in.h:32
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -499,7 +507,7 @@ msgstr "Frakoblet"
|
|||||||
msgid "CONTACTS"
|
msgid "CONTACTS"
|
||||||
msgstr "KONTAKTER"
|
msgstr "KONTAKTER"
|
||||||
|
|
||||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
#: ../js/ui/dash.js:239 ../js/ui/messageTray.js:1207
|
||||||
msgid "Remove"
|
msgid "Remove"
|
||||||
msgstr "Fjern"
|
msgstr "Fjern"
|
||||||
|
|
||||||
@ -663,7 +671,8 @@ msgstr "Last ned og installer «%s» fra extensions.gnome.org?"
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "varslingsområde"
|
msgstr "varslingsområde"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Tastatur"
|
msgstr "Tastatur"
|
||||||
|
|
||||||
@ -675,56 +684,56 @@ msgstr "Passord:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Skriv på nytt:"
|
msgstr "Skriv på nytt:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:732
|
#: ../js/ui/lookingGlass.js:693
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Ingen utvidelser installert"
|
msgstr "Ingen utvidelser installert"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:786
|
#: ../js/ui/lookingGlass.js:747
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s har ikke avgitt noen feil."
|
msgstr "%s har ikke avgitt noen feil."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:792
|
#: ../js/ui/lookingGlass.js:753
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Skjul feil"
|
msgstr "Skjul feil"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
#: ../js/ui/lookingGlass.js:757 ../js/ui/lookingGlass.js:808
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Vis feil"
|
msgstr "Vis feil"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:766
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Aktivert"
|
msgstr "Aktivert"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
#: ../js/ui/lookingGlass.js:769 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Deaktivert"
|
msgstr "Deaktivert"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:810
|
#: ../js/ui/lookingGlass.js:771
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Feil"
|
msgstr "Feil"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:812
|
#: ../js/ui/lookingGlass.js:773
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Utdatert"
|
msgstr "Utdatert"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:814
|
#: ../js/ui/lookingGlass.js:775
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Laster ned"
|
msgstr "Laster ned"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:835
|
#: ../js/ui/lookingGlass.js:796
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Vis kildekode"
|
msgstr "Vis kildekode"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:841
|
#: ../js/ui/lookingGlass.js:802
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Nettside"
|
msgstr "Nettside"
|
||||||
|
|
||||||
#. Translators: this is a filename used for screencast recording
|
#. Translators: this is a filename used for screencast recording
|
||||||
#: ../js/ui/main.js:118
|
#: ../js/ui/main.js:120
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Screencast from %d %t"
|
msgid "Screencast from %d %t"
|
||||||
msgstr "Skjermvideo fra %d %t"
|
msgstr "Skjermvideo fra %d %t"
|
||||||
@ -904,7 +913,7 @@ msgstr "Beklager, det virket ikke. Vennligst prøv igjen."
|
|||||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||||
#. switches containing "◯" and "|"). Other values will
|
#. switches containing "◯" and "|"). Other values will
|
||||||
#. simply result in invisible toggle switches.
|
#. simply result in invisible toggle switches.
|
||||||
#: ../js/ui/popupMenu.js:724
|
#: ../js/ui/popupMenu.js:728
|
||||||
msgid "toggle-switch-us"
|
msgid "toggle-switch-us"
|
||||||
msgstr "toggle-switch-intl"
|
msgstr "toggle-switch-intl"
|
||||||
|
|
||||||
@ -916,7 +925,7 @@ msgstr "Oppgi en kommando:"
|
|||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Søker …"
|
msgstr "Søker …"
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:415
|
#: ../js/ui/searchDisplay.js:422
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Ingen treff."
|
msgstr "Ingen treff."
|
||||||
|
|
||||||
@ -1074,7 +1083,7 @@ msgstr "Alltid gi tilgang"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Gi tilgang kun denne ene gangen"
|
msgstr "Gi tilgang kun denne ene gangen"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Avvis"
|
msgstr "Avvis"
|
||||||
|
|
||||||
@ -1391,35 +1400,35 @@ msgstr "%s er opptatt."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
msgstr "Sendt <b>%X</b> på <b>%A</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
msgstr "Sendt <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
|
|
||||||
#. Translators: this is the other person changing their old IM name to their new
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s er nå kjent som %s"
|
msgstr "%s er nå kjent som %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Invitasjon til %s"
|
msgstr "Invitasjon til %s"
|
||||||
@ -1427,35 +1436,35 @@ msgstr "Invitasjon til %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s inviterer deg til å bli med i %s"
|
msgstr "%s inviterer deg til å bli med i %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Avslå"
|
msgstr "Avslå"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Godta"
|
msgstr "Godta"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Videosamtale fra %s"
|
msgstr "Videosamtale fra %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Samtale fra %s"
|
msgstr "Samtale fra %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Svar"
|
msgstr "Svar"
|
||||||
|
|
||||||
@ -1464,110 +1473,110 @@ msgstr "Svar"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s sender deg %s"
|
msgstr "%s sender deg %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Nettverksfeil"
|
msgstr "Nettverksfeil"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Autentisering feilet"
|
msgstr "Autentisering feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Feil ved kryptering"
|
msgstr "Feil ved kryptering"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Sertifikat ikke oppgitt"
|
msgstr "Sertifikat ikke oppgitt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Stoler ikke på sertifikatet"
|
msgstr "Stoler ikke på sertifikatet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Sertifikatet er utløpt"
|
msgstr "Sertifikatet er utløpt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Sertifikatet er ikke aktivert"
|
msgstr "Sertifikatet er ikke aktivert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Feil vertsnavn for sertifikat"
|
msgstr "Feil vertsnavn for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Feil fingeravtrykk for sertifikat"
|
msgstr "Feil fingeravtrykk for sertifikat"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Sertifikatet er selvsignert"
|
msgstr "Sertifikatet er selvsignert"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "Status er satt til frakoblet"
|
msgstr "Status er satt til frakoblet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Kryptering er ikke tilgjengelig"
|
msgstr "Kryptering er ikke tilgjengelig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "Sertifikatet er ugyldig"
|
msgstr "Sertifikatet er ugyldig"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "Tilkobling ble nektet"
|
msgstr "Tilkobling ble nektet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "Tilkobling kan ikke etableres"
|
msgstr "Tilkobling kan ikke etableres"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Tilkobling tapt"
|
msgstr "Tilkobling tapt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Denne kontoen er allerede koblet til tjeneren"
|
msgstr "Denne kontoen er allerede koblet til tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "Kontoen eksisterer allerede på tjeneren"
|
msgstr "Kontoen eksisterer allerede på tjeneren"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "Sertifikatet er tilbaketrukket"
|
msgstr "Sertifikatet er tilbaketrukket"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1575,26 +1584,26 @@ msgstr ""
|
|||||||
"Lengden eller dybden på tjenersertifikatet oversteg grensen som er satt i "
|
"Lengden eller dybden på tjenersertifikatet oversteg grensen som er satt i "
|
||||||
"kryptografibiblioteket"
|
"kryptografibiblioteket"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Intern feil"
|
msgstr "Intern feil"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "Tilkobling til %s feilet"
|
msgstr "Tilkobling til %s feilet"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Koble til på nytt"
|
msgstr "Koble til på nytt"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Rediger konto"
|
msgstr "Rediger konto"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Ukjent årsak"
|
msgstr "Ukjent årsak"
|
||||||
|
|
||||||
|
189
po/pt_BR.po
189
po/pt_BR.po
@ -14,15 +14,15 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2012-03-21 21:00-0300\n"
|
"POT-Creation-Date: 2012-04-28 10:45-0300\n"
|
||||||
"PO-Revision-Date: 2012-03-13 11:54-0300\n"
|
"PO-Revision-Date: 2012-04-28 10:45-0300\n"
|
||||||
"Last-Translator: Jonh Wendell <jwendell@gnome.org>\n"
|
"Last-Translator: Jonh Wendell <jwendell@gnome.org>\n"
|
||||||
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||||
msgid "GNOME Shell"
|
msgid "GNOME Shell"
|
||||||
@ -114,11 +114,19 @@ msgstr ""
|
|||||||
"valor usado aqui vem da enumeração GsmPresenceStatus."
|
"valor usado aqui vem da enumeração GsmPresenceStatus."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
#: ../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"
|
msgid "List of desktop file IDs for favorite applications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Lista dos IDs de arquivo de área de trabalho para os aplicativos favoritos"
|
"Lista dos IDs de arquivo de área de trabalho para os aplicativos favoritos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||||
@ -144,19 +152,19 @@ msgstr ""
|
|||||||
"usando o codec VP8. %T é usado como uma tentativa de descobrir a melhor "
|
"usando o codec VP8. %T é usado como uma tentativa de descobrir a melhor "
|
||||||
"quantidade de threads a serem usadas."
|
"quantidade de threads a serem usadas."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||||
msgid "Show date in clock"
|
msgid "Show date in clock"
|
||||||
msgstr "Mostrar data no relógio"
|
msgstr "Mostrar data no relógio"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||||
msgid "Show the week date in the calendar"
|
msgid "Show the week date in the calendar"
|
||||||
msgstr "Mostrar o número da semana no calendário"
|
msgstr "Mostrar o número da semana no calendário"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||||
msgid "Show time with seconds"
|
msgid "Show time with seconds"
|
||||||
msgstr "Mostrar horário com segundos"
|
msgstr "Mostrar horário com segundos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||||
msgid ""
|
msgid ""
|
||||||
"The applications corresponding to these identifiers will be displayed in the "
|
"The applications corresponding to these identifiers will be displayed in the "
|
||||||
"favorites area."
|
"favorites area."
|
||||||
@ -164,7 +172,7 @@ msgstr ""
|
|||||||
"Os aplicativos correspondentes a estes identificadores serão exibidos na "
|
"Os aplicativos correspondentes a estes identificadores serão exibidos na "
|
||||||
"área de favoritos."
|
"área de favoritos."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||||
msgid ""
|
msgid ""
|
||||||
"The filename for recorded screencasts will be a unique filename based on the "
|
"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 "
|
"current date, and use this extension. It should be changed when recording to "
|
||||||
@ -174,7 +182,7 @@ msgstr ""
|
|||||||
"baseado na data atual e usará esta extensão. Ele deve ser alterado ao gravar "
|
"baseado na data atual e usará esta extensão. Ele deve ser alterado ao gravar "
|
||||||
"para um contêiner de formato diferente."
|
"para um contêiner de formato diferente."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||||
msgid ""
|
msgid ""
|
||||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||||
"screencast recorder in frames-per-second."
|
"screencast recorder in frames-per-second."
|
||||||
@ -182,11 +190,11 @@ msgstr ""
|
|||||||
"A taxa de quadros do screencast resultante do gravador de screencasts do "
|
"A taxa de quadros do screencast resultante do gravador de screencasts do "
|
||||||
"GNOME Shell em quadros por segundo."
|
"GNOME Shell em quadros por segundo."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||||
msgid "The gstreamer pipeline used to encode the screencast"
|
msgid "The gstreamer pipeline used to encode the screencast"
|
||||||
msgstr "A fila de processamento gstreamer usada para codificar o screencast"
|
msgstr "A fila de processamento gstreamer usada para codificar o screencast"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||||
msgid ""
|
msgid ""
|
||||||
"The shell normally monitors active applications in order to present the most "
|
"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 "
|
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||||
@ -198,23 +206,23 @@ msgstr ""
|
|||||||
"segurança, você pode querer desabilitá-los por razões de privacidade. Por "
|
"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."
|
"favor, note que ao fazer isso não removerá os dados já salvos."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||||
msgid "The type of keyboard to use."
|
msgid "The type of keyboard to use."
|
||||||
msgstr "O tipo do teclado para usar."
|
msgstr "O tipo do teclado para usar."
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||||
msgid "Uuids of extensions to enable"
|
msgid "Uuids of extensions to enable"
|
||||||
msgstr "Uuids das extensões para habilitar"
|
msgstr "Uuids das extensões para habilitar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||||
msgid "Whether to collect stats about applications usage"
|
msgid "Whether to collect stats about applications usage"
|
||||||
msgstr "Quando coletar dados sobre uso de aplicativos"
|
msgstr "Quando coletar dados sobre uso de aplicativos"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||||
msgid "Which keyboard to use"
|
msgid "Which keyboard to use"
|
||||||
msgstr "Qual teclado usar"
|
msgstr "Qual teclado usar"
|
||||||
|
|
||||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||||
msgid "disabled OpenSearch providers"
|
msgid "disabled OpenSearch providers"
|
||||||
msgstr "Provedores OpenSearch desabilitados"
|
msgstr "Provedores OpenSearch desabilitados"
|
||||||
|
|
||||||
@ -231,40 +239,40 @@ msgstr "<b>Extensão</b>"
|
|||||||
msgid "Select an extension to configure using the combobox above."
|
msgid "Select an extension to configure using the combobox above."
|
||||||
msgstr "Escolha uma extensão para configurar usando a caixa acima."
|
msgstr "Escolha uma extensão para configurar usando a caixa acima."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:624
|
#: ../js/gdm/loginDialog.js:627
|
||||||
msgid "Session..."
|
msgid "Session..."
|
||||||
msgstr "Sessão..."
|
msgstr "Sessão..."
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:786
|
#: ../js/gdm/loginDialog.js:789
|
||||||
msgctxt "title"
|
msgctxt "title"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Iniciar sessão"
|
msgstr "Iniciar sessão"
|
||||||
|
|
||||||
#. Translators: this message is shown below the password entry field
|
#. Translators: this message is shown below the password entry field
|
||||||
#. to indicate the user can swipe their finger instead
|
#. to indicate the user can swipe their finger instead
|
||||||
#: ../js/gdm/loginDialog.js:831
|
#: ../js/gdm/loginDialog.js:834
|
||||||
msgid "(or swipe finger)"
|
msgid "(or swipe finger)"
|
||||||
msgstr "(ou deslize o dedo)"
|
msgstr "(ou deslize o dedo)"
|
||||||
|
|
||||||
#. translators: this message is shown below the user list on the
|
#. translators: this message is shown below the user list on the
|
||||||
#. login screen. It can be activated to reveal an entry for
|
#. login screen. It can be activated to reveal an entry for
|
||||||
#. manually entering the username.
|
#. manually entering the username.
|
||||||
#: ../js/gdm/loginDialog.js:852
|
#: ../js/gdm/loginDialog.js:855
|
||||||
msgid "Not listed?"
|
msgid "Not listed?"
|
||||||
msgstr "Não listado?"
|
msgstr "Não listado?"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Cancelar"
|
msgstr "Cancelar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1025
|
#: ../js/gdm/loginDialog.js:1028
|
||||||
msgctxt "button"
|
msgctxt "button"
|
||||||
msgid "Sign In"
|
msgid "Sign In"
|
||||||
msgstr "Entrar"
|
msgstr "Entrar"
|
||||||
|
|
||||||
#: ../js/gdm/loginDialog.js:1377
|
#: ../js/gdm/loginDialog.js:1380
|
||||||
msgid "Login Window"
|
msgid "Login Window"
|
||||||
msgstr "Janela de sessão"
|
msgstr "Janela de sessão"
|
||||||
|
|
||||||
@ -663,11 +671,11 @@ msgstr[1] "O sistema será reiniciado automaticamente em %d segundos."
|
|||||||
msgid "Restarting the system."
|
msgid "Restarting the system."
|
||||||
msgstr "Reiniciando o sistema."
|
msgstr "Reiniciando o sistema."
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:403
|
#: ../js/ui/extensionSystem.js:404
|
||||||
msgid "Install"
|
msgid "Install"
|
||||||
msgstr "Instalar"
|
msgstr "Instalar"
|
||||||
|
|
||||||
#: ../js/ui/extensionSystem.js:407
|
#: ../js/ui/extensionSystem.js:408
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||||
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
|
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
|
||||||
@ -676,7 +684,8 @@ msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
|
|||||||
msgid "tray"
|
msgid "tray"
|
||||||
msgstr "bandeja"
|
msgstr "bandeja"
|
||||||
|
|
||||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||||
|
#: ../js/ui/status/power.js:203
|
||||||
msgid "Keyboard"
|
msgid "Keyboard"
|
||||||
msgstr "Teclado"
|
msgstr "Teclado"
|
||||||
|
|
||||||
@ -688,51 +697,51 @@ msgstr "Senha:"
|
|||||||
msgid "Type again:"
|
msgid "Type again:"
|
||||||
msgstr "Digite novamente:"
|
msgstr "Digite novamente:"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:725
|
#: ../js/ui/lookingGlass.js:732
|
||||||
msgid "No extensions installed"
|
msgid "No extensions installed"
|
||||||
msgstr "Nenhuma extensão instalada"
|
msgstr "Nenhuma extensão instalada"
|
||||||
|
|
||||||
#. Translators: argument is an extension UUID.
|
#. Translators: argument is an extension UUID.
|
||||||
#: ../js/ui/lookingGlass.js:779
|
#: ../js/ui/lookingGlass.js:786
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s has not emitted any errors."
|
msgid "%s has not emitted any errors."
|
||||||
msgstr "%s não produziu nenhum erro."
|
msgstr "%s não produziu nenhum erro."
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:785
|
#: ../js/ui/lookingGlass.js:792
|
||||||
msgid "Hide Errors"
|
msgid "Hide Errors"
|
||||||
msgstr "Mostrar erros"
|
msgstr "Mostrar erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||||
msgid "Show Errors"
|
msgid "Show Errors"
|
||||||
msgstr "Esconder erros"
|
msgstr "Esconder erros"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:798
|
#: ../js/ui/lookingGlass.js:805
|
||||||
msgid "Enabled"
|
msgid "Enabled"
|
||||||
msgstr "Habilitada"
|
msgstr "Habilitada"
|
||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The device has been disabled
|
#. * The device has been disabled
|
||||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||||
msgid "Disabled"
|
msgid "Disabled"
|
||||||
msgstr "Desabilitada"
|
msgstr "Desabilitada"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:803
|
#: ../js/ui/lookingGlass.js:810
|
||||||
msgid "Error"
|
msgid "Error"
|
||||||
msgstr "Erro"
|
msgstr "Erro"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:805
|
#: ../js/ui/lookingGlass.js:812
|
||||||
msgid "Out of date"
|
msgid "Out of date"
|
||||||
msgstr "Obsoleta"
|
msgstr "Obsoleta"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:807
|
#: ../js/ui/lookingGlass.js:814
|
||||||
msgid "Downloading"
|
msgid "Downloading"
|
||||||
msgstr "Baixando"
|
msgstr "Baixando"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:828
|
#: ../js/ui/lookingGlass.js:835
|
||||||
msgid "View Source"
|
msgid "View Source"
|
||||||
msgstr "Ver fonte"
|
msgstr "Ver fonte"
|
||||||
|
|
||||||
#: ../js/ui/lookingGlass.js:834
|
#: ../js/ui/lookingGlass.js:841
|
||||||
msgid "Web Page"
|
msgid "Web Page"
|
||||||
msgstr "Página web"
|
msgstr "Página web"
|
||||||
|
|
||||||
@ -861,17 +870,17 @@ msgstr "Aplicativos"
|
|||||||
msgid "Dash"
|
msgid "Dash"
|
||||||
msgstr "Dash"
|
msgstr "Dash"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:591
|
#: ../js/ui/panel.js:592
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Sair"
|
msgstr "Sair"
|
||||||
|
|
||||||
#. Translators: If there is no suitable word for "Activities"
|
#. Translators: If there is no suitable word for "Activities"
|
||||||
#. in your language, you can use the word for "Overview".
|
#. in your language, you can use the word for "Overview".
|
||||||
#: ../js/ui/panel.js:623
|
#: ../js/ui/panel.js:624
|
||||||
msgid "Activities"
|
msgid "Activities"
|
||||||
msgstr "Atividades"
|
msgstr "Atividades"
|
||||||
|
|
||||||
#: ../js/ui/panel.js:998
|
#: ../js/ui/panel.js:999
|
||||||
msgid "Top Bar"
|
msgid "Top Bar"
|
||||||
msgstr "Barra superior"
|
msgstr "Barra superior"
|
||||||
|
|
||||||
@ -929,7 +938,7 @@ msgstr "Por favor, digite um comando:"
|
|||||||
msgid "Searching..."
|
msgid "Searching..."
|
||||||
msgstr "Pesquisando..."
|
msgstr "Pesquisando..."
|
||||||
|
|
||||||
#: ../js/ui/searchDisplay.js:414
|
#: ../js/ui/searchDisplay.js:415
|
||||||
msgid "No matching results."
|
msgid "No matching results."
|
||||||
msgstr "Nenhum resultado encontrado."
|
msgstr "Nenhum resultado encontrado."
|
||||||
|
|
||||||
@ -1087,7 +1096,7 @@ msgstr "Sempre permitir acesso"
|
|||||||
msgid "Grant this time only"
|
msgid "Grant this time only"
|
||||||
msgstr "Permitir apenas desta vez"
|
msgstr "Permitir apenas desta vez"
|
||||||
|
|
||||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||||
msgid "Reject"
|
msgid "Reject"
|
||||||
msgstr "Rejeitar"
|
msgstr "Rejeitar"
|
||||||
|
|
||||||
@ -1404,35 +1413,35 @@ msgstr "%s está ocupado."
|
|||||||
#. Translators: this is a time format string followed by a date.
|
#. Translators: this is a time format string followed by a date.
|
||||||
#. If applicable, replace %X with a strftime format valid for your
|
#. If applicable, replace %X with a strftime format valid for your
|
||||||
#. locale, without seconds.
|
#. locale, without seconds.
|
||||||
#: ../js/ui/telepathyClient.js:887
|
#: ../js/ui/telepathyClient.js:889
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||||
msgstr "Enviado <b>%A</b>, <b>%X</b>"
|
msgstr "Enviado <b>%A</b>, <b>%X</b>"
|
||||||
|
|
||||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||||
#. shown when you get a chat message in the same year.
|
#. shown when you get a chat message in the same year.
|
||||||
#: ../js/ui/telepathyClient.js:893
|
#: ../js/ui/telepathyClient.js:895
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||||
msgstr "Enviado <b>%A</b>, <b>%d de %B</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",
|
#. 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.
|
#. shown when you get a chat message in a different year.
|
||||||
#: ../js/ui/telepathyClient.js:898
|
#: ../js/ui/telepathyClient.js:900
|
||||||
#, no-c-format
|
#, no-c-format
|
||||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||||
msgstr "Enviado <b>%A</b>, <b>%d de %B</b> de %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
|
#. Translators: this is the other person changing their old IM name to their new
|
||||||
#. IM name.
|
#. IM name.
|
||||||
#: ../js/ui/telepathyClient.js:940
|
#: ../js/ui/telepathyClient.js:942
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is now known as %s"
|
msgid "%s is now known as %s"
|
||||||
msgstr "%s agora é conhecido como %s"
|
msgstr "%s agora é conhecido como %s"
|
||||||
|
|
||||||
#. translators: argument is a room name like
|
#. translators: argument is a room name like
|
||||||
#. * room@jabber.org for example.
|
#. * room@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1042
|
#: ../js/ui/telepathyClient.js:1044
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Invitation to %s"
|
msgid "Invitation to %s"
|
||||||
msgstr "Convite para %s"
|
msgstr "Convite para %s"
|
||||||
@ -1440,35 +1449,35 @@ msgstr "Convite para %s"
|
|||||||
#. translators: first argument is the name of a contact and the second
|
#. translators: first argument is the name of a contact and the second
|
||||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||||
#. * for example.
|
#. * for example.
|
||||||
#: ../js/ui/telepathyClient.js:1050
|
#: ../js/ui/telepathyClient.js:1052
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is inviting you to join %s"
|
msgid "%s is inviting you to join %s"
|
||||||
msgstr "%s está convidando você para entrar em %s"
|
msgstr "%s está convidando você para entrar em %s"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||||
#: ../js/ui/telepathyClient.js:1229
|
#: ../js/ui/telepathyClient.js:1231
|
||||||
msgid "Decline"
|
msgid "Decline"
|
||||||
msgstr "Recusar"
|
msgstr "Recusar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||||
#: ../js/ui/telepathyClient.js:1230
|
#: ../js/ui/telepathyClient.js:1232
|
||||||
msgid "Accept"
|
msgid "Accept"
|
||||||
msgstr "Aceitar"
|
msgstr "Aceitar"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1083
|
#: ../js/ui/telepathyClient.js:1085
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Video call from %s"
|
msgid "Video call from %s"
|
||||||
msgstr "Vídeo-chamada de %s"
|
msgstr "Vídeo-chamada de %s"
|
||||||
|
|
||||||
#. translators: argument is a contact name like Alice for example.
|
#. translators: argument is a contact name like Alice for example.
|
||||||
#: ../js/ui/telepathyClient.js:1086
|
#: ../js/ui/telepathyClient.js:1088
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Call from %s"
|
msgid "Call from %s"
|
||||||
msgstr "Chamada de %s"
|
msgstr "Chamada de %s"
|
||||||
|
|
||||||
#. translators: this is a button label (verb), not a noun
|
#. translators: this is a button label (verb), not a noun
|
||||||
#: ../js/ui/telepathyClient.js:1093
|
#: ../js/ui/telepathyClient.js:1095
|
||||||
msgid "Answer"
|
msgid "Answer"
|
||||||
msgstr "Atender"
|
msgstr "Atender"
|
||||||
|
|
||||||
@ -1477,110 +1486,110 @@ msgstr "Atender"
|
|||||||
#. * file name. The string will be something
|
#. * file name. The string will be something
|
||||||
#. * like: "Alice is sending you test.ogg"
|
#. * like: "Alice is sending you test.ogg"
|
||||||
#.
|
#.
|
||||||
#: ../js/ui/telepathyClient.js:1125
|
#: ../js/ui/telepathyClient.js:1127
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s is sending you %s"
|
msgid "%s is sending you %s"
|
||||||
msgstr "%s está enviando %s"
|
msgstr "%s está enviando %s"
|
||||||
|
|
||||||
#. To translators: The parameter is the contact's alias
|
#. To translators: The parameter is the contact's alias
|
||||||
#: ../js/ui/telepathyClient.js:1194
|
#: ../js/ui/telepathyClient.js:1196
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s would like permission to see when you are online"
|
msgid "%s would like permission to see when you are online"
|
||||||
msgstr "%s quer permissão para vê-lo quando conectado"
|
msgstr "%s quer permissão para vê-lo quando conectado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1287
|
#: ../js/ui/telepathyClient.js:1289
|
||||||
msgid "Network error"
|
msgid "Network error"
|
||||||
msgstr "Erro de rede"
|
msgstr "Erro de rede"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1289
|
#: ../js/ui/telepathyClient.js:1291
|
||||||
msgid "Authentication failed"
|
msgid "Authentication failed"
|
||||||
msgstr "Falha de autenticação"
|
msgstr "Falha de autenticação"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1291
|
#: ../js/ui/telepathyClient.js:1293
|
||||||
msgid "Encryption error"
|
msgid "Encryption error"
|
||||||
msgstr "Erro de criptografia"
|
msgstr "Erro de criptografia"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1293
|
#: ../js/ui/telepathyClient.js:1295
|
||||||
msgid "Certificate not provided"
|
msgid "Certificate not provided"
|
||||||
msgstr "Certificado não fornecido"
|
msgstr "Certificado não fornecido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1295
|
#: ../js/ui/telepathyClient.js:1297
|
||||||
msgid "Certificate untrusted"
|
msgid "Certificate untrusted"
|
||||||
msgstr "Certificado não confiável"
|
msgstr "Certificado não confiável"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1297
|
#: ../js/ui/telepathyClient.js:1299
|
||||||
msgid "Certificate expired"
|
msgid "Certificate expired"
|
||||||
msgstr "Certificado expirado"
|
msgstr "Certificado expirado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1299
|
#: ../js/ui/telepathyClient.js:1301
|
||||||
msgid "Certificate not activated"
|
msgid "Certificate not activated"
|
||||||
msgstr "Certificado não ativado"
|
msgstr "Certificado não ativado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1301
|
#: ../js/ui/telepathyClient.js:1303
|
||||||
msgid "Certificate hostname mismatch"
|
msgid "Certificate hostname mismatch"
|
||||||
msgstr "Máquina do certificado não confere"
|
msgstr "Máquina do certificado não confere"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1303
|
#: ../js/ui/telepathyClient.js:1305
|
||||||
msgid "Certificate fingerprint mismatch"
|
msgid "Certificate fingerprint mismatch"
|
||||||
msgstr "Impressão digital do certificado não confere"
|
msgstr "Impressão digital do certificado não confere"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1305
|
#: ../js/ui/telepathyClient.js:1307
|
||||||
msgid "Certificate self-signed"
|
msgid "Certificate self-signed"
|
||||||
msgstr "Certificado auto-assinado"
|
msgstr "Certificado auto-assinado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1307
|
#: ../js/ui/telepathyClient.js:1309
|
||||||
msgid "Status is set to offline"
|
msgid "Status is set to offline"
|
||||||
msgstr "O status está definido como desconectado."
|
msgstr "O status está definido como desconectado."
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1309
|
#: ../js/ui/telepathyClient.js:1311
|
||||||
msgid "Encryption is not available"
|
msgid "Encryption is not available"
|
||||||
msgstr "Criptografia não disponível"
|
msgstr "Criptografia não disponível"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1311
|
#: ../js/ui/telepathyClient.js:1313
|
||||||
msgid "Certificate is invalid"
|
msgid "Certificate is invalid"
|
||||||
msgstr "O certificado é inválido"
|
msgstr "O certificado é inválido"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1313
|
#: ../js/ui/telepathyClient.js:1315
|
||||||
msgid "Connection has been refused"
|
msgid "Connection has been refused"
|
||||||
msgstr "A conexão foi recusada"
|
msgstr "A conexão foi recusada"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1315
|
#: ../js/ui/telepathyClient.js:1317
|
||||||
msgid "Connection can't be established"
|
msgid "Connection can't be established"
|
||||||
msgstr "A conexão não pode ser estabelecida"
|
msgstr "A conexão não pode ser estabelecida"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1317
|
#: ../js/ui/telepathyClient.js:1319
|
||||||
msgid "Connection has been lost"
|
msgid "Connection has been lost"
|
||||||
msgstr "Conexão perdida"
|
msgstr "Conexão perdida"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1319
|
#: ../js/ui/telepathyClient.js:1321
|
||||||
msgid "This account is already connected to the server"
|
msgid "This account is already connected to the server"
|
||||||
msgstr "Esta conta já está conectada ao servidor"
|
msgstr "Esta conta já está conectada ao servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1321
|
#: ../js/ui/telepathyClient.js:1323
|
||||||
msgid ""
|
msgid ""
|
||||||
"Connection has been replaced by a new connection using the same resource"
|
"Connection has been replaced by a new connection using the same resource"
|
||||||
msgstr "A conexão foi substituída por uma nova conexão usando o mesmo recurso"
|
msgstr "A conexão foi substituída por uma nova conexão usando o mesmo recurso"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1323
|
#: ../js/ui/telepathyClient.js:1325
|
||||||
msgid "The account already exists on the server"
|
msgid "The account already exists on the server"
|
||||||
msgstr "A conta já existe no servidor"
|
msgstr "A conta já existe no servidor"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1325
|
#: ../js/ui/telepathyClient.js:1327
|
||||||
msgid "Server is currently too busy to handle the connection"
|
msgid "Server is currently too busy to handle the connection"
|
||||||
msgstr "O servidor está atualmente muito ocupado para controlar a conexão"
|
msgstr "O servidor está atualmente muito ocupado para controlar a conexão"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1327
|
#: ../js/ui/telepathyClient.js:1329
|
||||||
msgid "Certificate has been revoked"
|
msgid "Certificate has been revoked"
|
||||||
msgstr "O certificado foi revogado"
|
msgstr "O certificado foi revogado"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1329
|
#: ../js/ui/telepathyClient.js:1331
|
||||||
msgid ""
|
msgid ""
|
||||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"O certificado usa um algoritmo de cifragem inseguro ou é criptograficamente "
|
"O certificado usa um algoritmo de cifragem inseguro ou é criptograficamente "
|
||||||
"fraco"
|
"fraco"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1331
|
#: ../js/ui/telepathyClient.js:1333
|
||||||
msgid ""
|
msgid ""
|
||||||
"The length of the server certificate, or the depth of the server certificate "
|
"The length of the server certificate, or the depth of the server certificate "
|
||||||
"chain, exceed the limits imposed by the cryptography library"
|
"chain, exceed the limits imposed by the cryptography library"
|
||||||
@ -1588,26 +1597,26 @@ msgstr ""
|
|||||||
"O comprimento do certificado do servidor, ou a profundidade da cadeia do "
|
"O comprimento do certificado do servidor, ou a profundidade da cadeia do "
|
||||||
"certificado excedeu os limites impostos pela biblioteca de criptografia"
|
"certificado excedeu os limites impostos pela biblioteca de criptografia"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1333
|
#: ../js/ui/telepathyClient.js:1335
|
||||||
msgid "Internal error"
|
msgid "Internal error"
|
||||||
msgstr "Erro interno"
|
msgstr "Erro interno"
|
||||||
|
|
||||||
#. translators: argument is the account name, like
|
#. translators: argument is the account name, like
|
||||||
#. * name@jabber.org for example.
|
#. * name@jabber.org for example.
|
||||||
#: ../js/ui/telepathyClient.js:1343
|
#: ../js/ui/telepathyClient.js:1345
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Connection to %s failed"
|
msgid "Connection to %s failed"
|
||||||
msgstr "A conexão com %s falhou"
|
msgstr "A conexão com %s falhou"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1352
|
#: ../js/ui/telepathyClient.js:1354
|
||||||
msgid "Reconnect"
|
msgid "Reconnect"
|
||||||
msgstr "Reconectar"
|
msgstr "Reconectar"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1353
|
#: ../js/ui/telepathyClient.js:1355
|
||||||
msgid "Edit account"
|
msgid "Edit account"
|
||||||
msgstr "Editar conta"
|
msgstr "Editar conta"
|
||||||
|
|
||||||
#: ../js/ui/telepathyClient.js:1399
|
#: ../js/ui/telepathyClient.js:1401
|
||||||
msgid "Unknown reason"
|
msgid "Unknown reason"
|
||||||
msgstr "Razão desconhecida"
|
msgstr "Razão desconhecida"
|
||||||
|
|
||||||
@ -1701,7 +1710,7 @@ msgstr "\"%s\" está pronto"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound outputs on a particular device
|
#. * The number of sound outputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Output"
|
msgid "%u Output"
|
||||||
msgid_plural "%u Outputs"
|
msgid_plural "%u Outputs"
|
||||||
@ -1710,14 +1719,14 @@ msgstr[1] "%u saídas"
|
|||||||
|
|
||||||
#. translators:
|
#. translators:
|
||||||
#. * The number of sound inputs on a particular device
|
#. * The number of sound inputs on a particular device
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u Input"
|
msgid "%u Input"
|
||||||
msgid_plural "%u Inputs"
|
msgid_plural "%u Inputs"
|
||||||
msgstr[0] "%u entrada"
|
msgstr[0] "%u entrada"
|
||||||
msgstr[1] "%u entradas"
|
msgstr[1] "%u entradas"
|
||||||
|
|
||||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||||
msgid "System Sounds"
|
msgid "System Sounds"
|
||||||
msgstr "Sons do sistema"
|
msgstr "Sons do sistema"
|
||||||
|
|
||||||
|
@ -27,8 +27,10 @@ CLEANFILES += $(service_DATA)
|
|||||||
|
|
||||||
CLEANFILES += $(gir_DATA) $(typelib_DATA)
|
CLEANFILES += $(gir_DATA) $(typelib_DATA)
|
||||||
|
|
||||||
bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-extension-prefs
|
bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-extension-prefs \
|
||||||
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-extension-prefs.in
|
gnome-shell-perf-tool
|
||||||
|
EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-extension-prefs.in \
|
||||||
|
gnome-shell-perf-tool.in
|
||||||
bin_PROGRAMS = gnome-shell-real
|
bin_PROGRAMS = gnome-shell-real
|
||||||
|
|
||||||
if USE_JHBUILD_WRAPPER_SCRIPT
|
if USE_JHBUILD_WRAPPER_SCRIPT
|
||||||
@ -53,7 +55,6 @@ generated_script_substitutions = \
|
|||||||
-e "s|@libexecdir[@]|$(libexecdir)|g" \
|
-e "s|@libexecdir[@]|$(libexecdir)|g" \
|
||||||
-e "s|@libdir[@]|$(libdir)|g" \
|
-e "s|@libdir[@]|$(libdir)|g" \
|
||||||
-e "s|@pkglibdir[@]|$(pkglibdir)|g" \
|
-e "s|@pkglibdir[@]|$(pkglibdir)|g" \
|
||||||
-e "s|@JHBUILD_TYPELIBDIR[@]|$(JHBUILD_TYPELIBDIR)|g" \
|
|
||||||
-e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \
|
-e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \
|
||||||
-e "s|@PYTHON[@]|$(PYTHON)|g" \
|
-e "s|@PYTHON[@]|$(PYTHON)|g" \
|
||||||
-e "s|@VERSION[@]|$(VERSION)|g" \
|
-e "s|@VERSION[@]|$(VERSION)|g" \
|
||||||
@ -71,6 +72,9 @@ gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
|
|||||||
gnome-shell-extension-prefs: gnome-shell-extension-prefs.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 $@
|
$(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)
|
CLEANFILES += gnome-shell $(bin_SCRIPTS)
|
||||||
|
|
||||||
include Makefile-st.am
|
include Makefile-st.am
|
||||||
@ -110,6 +114,7 @@ shell_public_headers_h = \
|
|||||||
shell-gtk-embed.h \
|
shell-gtk-embed.h \
|
||||||
shell-global.h \
|
shell-global.h \
|
||||||
shell-idle-monitor.h \
|
shell-idle-monitor.h \
|
||||||
|
shell-invert-lightness-effect.h \
|
||||||
shell-mobile-providers.h \
|
shell-mobile-providers.h \
|
||||||
shell-mount-operation.h \
|
shell-mount-operation.h \
|
||||||
shell-network-agent.h \
|
shell-network-agent.h \
|
||||||
@ -157,6 +162,7 @@ libgnome_shell_la_SOURCES = \
|
|||||||
shell-gtk-embed.c \
|
shell-gtk-embed.c \
|
||||||
shell-global.c \
|
shell-global.c \
|
||||||
shell-idle-monitor.c \
|
shell-idle-monitor.c \
|
||||||
|
shell-invert-lightness-effect.c \
|
||||||
shell-keyring-prompt.h \
|
shell-keyring-prompt.h \
|
||||||
shell-keyring-prompt.c \
|
shell-keyring-prompt.c \
|
||||||
shell-mobile-providers.c \
|
shell-mobile-providers.c \
|
||||||
|
@ -52,7 +52,10 @@
|
|||||||
#define CALENDAR_SOURCES_APPOINTMENT_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/calendar/sources"
|
#define CALENDAR_SOURCES_APPOINTMENT_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/calendar/sources"
|
||||||
#define CALENDAR_SOURCES_TASK_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/tasks/sources"
|
#define CALENDAR_SOURCES_TASK_SOURCES_KEY CALENDAR_SOURCES_EVO_DIR "/tasks/sources"
|
||||||
|
|
||||||
#define CALENDAR_SELECTED_SOURCES_SCHEMA "org.gnome.evolution.calendar"
|
/* 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_APPOINTMENT_SOURCES_KEY "selected-calendars"
|
||||||
#define CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY "selected-tasks"
|
#define CALENDAR_SOURCES_SELECTED_TASK_SOURCES_KEY "selected-tasks"
|
||||||
|
|
||||||
|
@ -94,8 +94,20 @@ static gchar **
|
|||||||
g_action_muxer_list_actions (GActionGroup *action_group)
|
g_action_muxer_list_actions (GActionGroup *action_group)
|
||||||
{
|
{
|
||||||
GActionMuxer *muxer = G_ACTION_MUXER (action_group);
|
GActionMuxer *muxer = G_ACTION_MUXER (action_group);
|
||||||
|
GHashTableIter iter;
|
||||||
|
gchar *key;
|
||||||
|
gchar **keys;
|
||||||
|
gsize i;
|
||||||
|
|
||||||
return (gchar **) muxer->groups;
|
keys = g_new (gchar *, g_hash_table_size (muxer->actions) + 1);
|
||||||
|
|
||||||
|
i = 0;
|
||||||
|
g_hash_table_iter_init (&iter, muxer->actions);
|
||||||
|
while (g_hash_table_iter_next (&iter, (gpointer *) &key, NULL))
|
||||||
|
keys[i++] = g_strdup (key);
|
||||||
|
keys[i] = NULL;
|
||||||
|
|
||||||
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Group *
|
static Group *
|
||||||
|
@ -1,30 +1,13 @@
|
|||||||
#!@PYTHON@
|
#!@PYTHON@
|
||||||
# -*- mode: Python; indent-tabs-mode: nil; -*-
|
# -*- mode: Python; indent-tabs-mode: nil; -*-
|
||||||
|
|
||||||
import atexit
|
|
||||||
import datetime
|
|
||||||
import dbus
|
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
|
||||||
import gobject
|
|
||||||
try:
|
|
||||||
import json
|
|
||||||
except ImportError:
|
|
||||||
try:
|
|
||||||
import simplejson as json
|
|
||||||
except ImportError:
|
|
||||||
json = None
|
|
||||||
import optparse
|
import optparse
|
||||||
import os
|
import os
|
||||||
import random
|
|
||||||
import re
|
import re
|
||||||
import shutil
|
|
||||||
import signal
|
import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
|
||||||
import termios
|
import termios
|
||||||
import time
|
|
||||||
import errno
|
|
||||||
|
|
||||||
def show_version(option, opt_str, value, parser):
|
def show_version(option, opt_str, value, parser):
|
||||||
print "GNOME Shell @VERSION@"
|
print "GNOME Shell @VERSION@"
|
||||||
@ -79,168 +62,24 @@ def get_running_session_environs():
|
|||||||
result[key] = environs[key]
|
result[key] = environs[key]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
_bus = None
|
def start_shell():
|
||||||
_bus_iface = None
|
|
||||||
_name_owner_changed_hook = None
|
|
||||||
|
|
||||||
def on_name_owner_changed(name, prev_owner, new_owner):
|
|
||||||
if _name_owner_changed_hook:
|
|
||||||
_name_owner_changed_hook(name, prev_owner, new_owner)
|
|
||||||
|
|
||||||
def get_bus():
|
|
||||||
global _bus
|
|
||||||
if _bus is None:
|
|
||||||
dbus_loop = DBusGMainLoop()
|
|
||||||
_bus = dbus.SessionBus(mainloop=dbus_loop)
|
|
||||||
return _bus
|
|
||||||
|
|
||||||
def get_bus_iface():
|
|
||||||
global _bus_iface
|
|
||||||
if _bus_iface is None:
|
|
||||||
bus = get_bus()
|
|
||||||
bus_proxy = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')
|
|
||||||
_bus_iface = dbus.Interface(bus_proxy, 'org.freedesktop.DBus')
|
|
||||||
_bus_iface.connect_to_signal('NameOwnerChanged', on_name_owner_changed)
|
|
||||||
return _bus_iface
|
|
||||||
|
|
||||||
def wait_for_dbus_name(wait_name):
|
|
||||||
global _name_owner_changed_hook
|
|
||||||
|
|
||||||
bus_iface = get_bus_iface()
|
|
||||||
loop = gobject.MainLoop()
|
|
||||||
|
|
||||||
def on_name_owner_changed(name, prev_owner, new_owner):
|
|
||||||
if not (name == wait_name and new_owner != ''):
|
|
||||||
return
|
|
||||||
loop.quit()
|
|
||||||
return
|
|
||||||
_name_owner_changed_hook = on_name_owner_changed
|
|
||||||
|
|
||||||
def on_timeout():
|
|
||||||
print "\nFailed to start %s: timed out" % (wait_name,)
|
|
||||||
sys.exit(1)
|
|
||||||
gobject.timeout_add_seconds(7, on_timeout)
|
|
||||||
|
|
||||||
loop.run()
|
|
||||||
_name_owner_changed_hook = None
|
|
||||||
|
|
||||||
def start_dconf_await_service():
|
|
||||||
DCONF_NAME = 'ca.desrt.dconf'
|
|
||||||
|
|
||||||
bus = get_bus()
|
|
||||||
get_bus_iface() # connect to NameOwnerChanged signal
|
|
||||||
|
|
||||||
# See if the service is already running or normal D-Bus activation works
|
|
||||||
need_manual_activate = False
|
|
||||||
try:
|
|
||||||
dconf_proxy = bus.get_object(DCONF_NAME, '/')
|
|
||||||
dconf_proxy.Ping(dbus_interface='org.freedesktop.DBus.Peer')
|
|
||||||
except dbus.exceptions.DBusException, e:
|
|
||||||
if e.get_dbus_name() == 'org.freedesktop.DBus.Error.ServiceUnknown':
|
|
||||||
need_manual_activate = True
|
|
||||||
else:
|
|
||||||
raise e
|
|
||||||
|
|
||||||
if not need_manual_activate:
|
|
||||||
return
|
|
||||||
|
|
||||||
# At this point, it looks like we just have a jhbuild install
|
|
||||||
# of dconf, not known to the session dbus-daemon, so we start
|
|
||||||
# it manually and wait for it to join the bus
|
|
||||||
|
|
||||||
print "Starting dconf-service... ",
|
|
||||||
sys.stdout.flush()
|
|
||||||
|
|
||||||
# dconf is linked without libtool, so unlike other GNOME modules,
|
|
||||||
# won't have an embedded rpath for its library directory.
|
|
||||||
env = dict(os.environ)
|
|
||||||
if 'LD_LIBRARY_PATH' in env and env['LD_LIBRARY_PATH']:
|
|
||||||
ld_library_path = '@libdir@:' + env['LD_LIBRARY_PATH']
|
|
||||||
else:
|
|
||||||
ld_library_path = '@libdir@'
|
|
||||||
env['LD_LIBRARY_PATH'] = ld_library_path
|
|
||||||
|
|
||||||
dconf_path = os.path.join('@libexecdir@', 'dconf-service')
|
|
||||||
try:
|
|
||||||
subprocess.Popen([dconf_path, '--keep-alive'], env=env)
|
|
||||||
except OSError, e:
|
|
||||||
print "\nFailed to start %s: %s" % (dconf_path, e)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
wait_for_dbus_name (DCONF_NAME)
|
|
||||||
|
|
||||||
PERF_HELPER_NAME = "org.gnome.Shell.PerfHelper"
|
|
||||||
PERF_HELPER_IFACE = "org.gnome.Shell.PerfHelper"
|
|
||||||
PERF_HELPER_PATH = "/org/gnome/Shell/PerfHelper"
|
|
||||||
|
|
||||||
def start_perf_helper():
|
|
||||||
get_bus_iface() # connect to NameOwnerChanged signal
|
|
||||||
|
|
||||||
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
running_from_source_tree = os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in'))
|
running_from_source_tree = os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in'))
|
||||||
|
|
||||||
if running_from_source_tree:
|
|
||||||
perf_helper_path = os.path.join(self_dir, "gnome-shell-perf-helper")
|
|
||||||
else:
|
|
||||||
perf_helper_path = "@libexecdir@/gnome-shell-perf-helper"
|
|
||||||
|
|
||||||
subprocess.Popen([perf_helper_path])
|
|
||||||
wait_for_dbus_name (PERF_HELPER_NAME)
|
|
||||||
|
|
||||||
def stop_perf_helper():
|
|
||||||
bus = get_bus()
|
|
||||||
proxy = bus.get_object(PERF_HELPER_NAME, PERF_HELPER_PATH)
|
|
||||||
proxy.Exit(dbus_interface=PERF_HELPER_IFACE)
|
|
||||||
|
|
||||||
def start_shell(perf_output=None):
|
|
||||||
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
|
||||||
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
|
|
||||||
running_from_source_tree = True
|
|
||||||
top_dir = os.path.dirname(self_dir)
|
|
||||||
typelib_dir = '@JHBUILD_TYPELIBDIR@:' + os.path.join(top_dir, "src")
|
|
||||||
js_dir = os.path.join(top_dir, "js")
|
|
||||||
data_dir = os.path.join(top_dir, "data")
|
|
||||||
else:
|
|
||||||
running_from_source_tree = False
|
|
||||||
js_dir = os.path.join('@pkgdatadir@', 'js')
|
|
||||||
typelib_dir = '@JHBUILD_TYPELIBDIR@'
|
|
||||||
|
|
||||||
if os.environ.has_key('GI_TYPELIB_PATH'):
|
|
||||||
typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH')
|
|
||||||
|
|
||||||
# Set up environment
|
# Set up environment
|
||||||
env = dict(os.environ)
|
env = dict(os.environ)
|
||||||
# TODO: Fix this, since nothing prevents it from propagating to child
|
|
||||||
# processes. Why is it even here?
|
|
||||||
env.update({'GNOME_DISABLE_CRASH_DIALOG' : '1'})
|
|
||||||
# This stuff should really should only happen when running
|
|
||||||
# uninstalled, i.e. it should be in the conditional
|
|
||||||
# below. Otherwise it's just a bad reimplementation of "jhbuild
|
|
||||||
# run". See bug #642084
|
|
||||||
env.update({'GNOME_SHELL_JS' : js_dir,
|
|
||||||
'PATH' : '@bindir@:' + os.environ.get('PATH', ''),
|
|
||||||
'GI_TYPELIB_PATH' : typelib_dir,
|
|
||||||
'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'),
|
|
||||||
'XDG_DATA_DIRS' : '@datadir@:' + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share')})
|
|
||||||
if running_from_source_tree:
|
if running_from_source_tree:
|
||||||
env.update({'GNOME_SHELL_BINDIR' : self_dir,
|
top_dir = os.path.dirname(self_dir)
|
||||||
'GNOME_SHELL_DATADIR' : data_dir,
|
|
||||||
'GSETTINGS_SCHEMA_DIR' : data_dir })
|
|
||||||
else:
|
|
||||||
# This is just broken to set in the installed case; see bug #642084
|
|
||||||
env.update({'GSETTINGS_SCHEMA_DIR' : os.path.join('@datadir@', 'glib-2.0', 'schemas')})
|
|
||||||
|
|
||||||
# Also plain broken to set in the normal installed case
|
typelib_dir = os.path.join(top_dir, "src")
|
||||||
jhbuild_gconf_source = os.path.join('@sysconfdir@', 'gconf/2/path.jhbuild')
|
if 'GI_TYPELIB_PATH' in os.environ:
|
||||||
if os.path.exists(jhbuild_gconf_source):
|
typelib_dir += ':%s' % (os.environ['GI_TYPELIB_PATH'],)
|
||||||
env['GCONF_DEFAULT_SOURCE_PATH'] = jhbuild_gconf_source
|
|
||||||
|
|
||||||
if options.perf is not None:
|
env.update({'GNOME_SHELL_JS' : os.path.join(top_dir, "js"),
|
||||||
env['SHELL_PERF_MODULE'] = options.perf
|
'GNOME_SHELL_BINDIR' : self_dir,
|
||||||
env['MUTTER_WM_CLASS_FILTER'] = 'Gnome-shell-perf-helper'
|
'GI_TYPELIB_PATH' : typelib_dir,
|
||||||
|
'GNOME_SHELL_DATADIR' : os.path.join(top_dir, "data"),
|
||||||
if perf_output is not None:
|
'GSETTINGS_SCHEMA_DIR' : os.path.join(top_dir, "data") })
|
||||||
env['SHELL_PERF_OUTPUT'] = perf_output
|
|
||||||
|
|
||||||
args = []
|
args = []
|
||||||
if options.debug:
|
if options.debug:
|
||||||
@ -256,22 +95,7 @@ def start_shell(perf_output=None):
|
|||||||
args.append('--sync')
|
args.append('--sync')
|
||||||
return subprocess.Popen(args, env=env)
|
return subprocess.Popen(args, env=env)
|
||||||
|
|
||||||
def _killall(processname):
|
def run_shell():
|
||||||
subprocess.call(['pkill', '-u', '%d' % (os.getuid(), ),
|
|
||||||
'-f', r'^([^ ]*/)?' + re.escape(processname) + '($| )'])
|
|
||||||
|
|
||||||
def ensure_desktop_infrastructure_state():
|
|
||||||
# This is a collection of random hacks necessary to make sure
|
|
||||||
# that we can run in jhbuild scenarios or when dynamically
|
|
||||||
# replacing GNOME 2.
|
|
||||||
|
|
||||||
start_dconf_await_service()
|
|
||||||
|
|
||||||
# We need to terminate notification-daemon
|
|
||||||
_killall('notification-daemon')
|
|
||||||
_killall('notify-osd')
|
|
||||||
|
|
||||||
def run_shell(perf_output=None):
|
|
||||||
if options.debug:
|
if options.debug:
|
||||||
# Record initial terminal state so we can reset it to that
|
# Record initial terminal state so we can reset it to that
|
||||||
# later, in case we kill gdb at a bad time
|
# later, in case we kill gdb at a bad time
|
||||||
@ -282,8 +106,9 @@ def run_shell(perf_output=None):
|
|||||||
if options.verbose:
|
if options.verbose:
|
||||||
print "Starting shell"
|
print "Starting shell"
|
||||||
|
|
||||||
|
shell = None
|
||||||
try:
|
try:
|
||||||
shell = start_shell(perf_output=perf_output)
|
shell = start_shell()
|
||||||
|
|
||||||
# Wait for shell to exit
|
# Wait for shell to exit
|
||||||
if options.verbose:
|
if options.verbose:
|
||||||
@ -317,248 +142,6 @@ def run_shell(perf_output=None):
|
|||||||
|
|
||||||
return normal_exit
|
return normal_exit
|
||||||
|
|
||||||
def upload_performance_report(report_text):
|
|
||||||
# Local imports to avoid impacting gnome-shell startup time
|
|
||||||
import base64
|
|
||||||
from ConfigParser import RawConfigParser
|
|
||||||
import hashlib
|
|
||||||
import hmac
|
|
||||||
import httplib
|
|
||||||
import urlparse
|
|
||||||
import urllib
|
|
||||||
|
|
||||||
try:
|
|
||||||
config_home = os.environ['XDG_CONFIG_HOME']
|
|
||||||
except KeyError:
|
|
||||||
config_home = None
|
|
||||||
|
|
||||||
if not config_home:
|
|
||||||
config_home = os.path.expanduser("~/.config")
|
|
||||||
|
|
||||||
config_file = os.path.join(config_home, "gnome-shell/perf.ini")
|
|
||||||
|
|
||||||
try:
|
|
||||||
config = RawConfigParser()
|
|
||||||
f = open(config_file)
|
|
||||||
config.readfp(f)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
base_url = config.get('upload', 'url')
|
|
||||||
system_name = config.get('upload', 'name')
|
|
||||||
secret_key = config.get('upload', 'key')
|
|
||||||
except Exception, e:
|
|
||||||
print "Can't read upload configuration from %s: %s" % (config_file, str(e))
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Determine host, port and upload URL from provided data, we're
|
|
||||||
# a bit extra-careful about normalization since the URL is part
|
|
||||||
# of the signature.
|
|
||||||
|
|
||||||
split = urlparse.urlsplit(base_url)
|
|
||||||
scheme = split[0].lower()
|
|
||||||
netloc = split[1]
|
|
||||||
base_path = split[2]
|
|
||||||
|
|
||||||
m = re.match(r'^(.*?)(?::(\d+))?$', netloc)
|
|
||||||
if m.group(2):
|
|
||||||
host, port = m.group(1), int(m.group(2))
|
|
||||||
else:
|
|
||||||
host, port = m.group(1), None
|
|
||||||
|
|
||||||
if scheme != "http":
|
|
||||||
print "'%s' is not a HTTP URL" % base_url
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
if port is None:
|
|
||||||
port = 80
|
|
||||||
|
|
||||||
if base_path.endswith('/'):
|
|
||||||
base_path = base_path[:-1]
|
|
||||||
|
|
||||||
if port == 80:
|
|
||||||
normalized_base = "%s://%s%s" % (scheme, host, base_path)
|
|
||||||
else:
|
|
||||||
normalized_base = "%s://%s:%d%s" % (scheme, host, port, base_path)
|
|
||||||
|
|
||||||
upload_url = normalized_base + '/system/%s/upload' % system_name
|
|
||||||
upload_path = urlparse.urlsplit(upload_url)[2] # path portion
|
|
||||||
|
|
||||||
# Create signature based on upload URL and the report data
|
|
||||||
|
|
||||||
signature_data = 'POST&' + upload_url + "&&"
|
|
||||||
h = hmac.new(secret_key, digestmod=hashlib.sha1)
|
|
||||||
h.update(signature_data)
|
|
||||||
h.update(report_text)
|
|
||||||
signature = urllib.quote(base64.b64encode(h.digest()), "~")
|
|
||||||
|
|
||||||
headers = {
|
|
||||||
'User-Agent': 'gnome-shell',
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
'X-Shell-Signature': 'HMAC-SHA1 ' + signature
|
|
||||||
};
|
|
||||||
|
|
||||||
connection = httplib.HTTPConnection(host, port)
|
|
||||||
connection.request('POST', upload_path, report_text, headers)
|
|
||||||
response = connection.getresponse()
|
|
||||||
|
|
||||||
if response.status == 200:
|
|
||||||
print "Performance report upload succeeded"
|
|
||||||
else:
|
|
||||||
print "Performance report upload failed with status %d" % response.status
|
|
||||||
print response.read()
|
|
||||||
|
|
||||||
def run_performance_test():
|
|
||||||
iters = options.perf_iters
|
|
||||||
if options.perf_warmup:
|
|
||||||
iters += 1
|
|
||||||
|
|
||||||
logs = []
|
|
||||||
metric_summaries = {}
|
|
||||||
|
|
||||||
start_perf_helper()
|
|
||||||
|
|
||||||
for i in xrange(0, iters):
|
|
||||||
# We create an empty temporary file that the shell will overwrite
|
|
||||||
# with the contents.
|
|
||||||
handle, output_file = tempfile.mkstemp(".json", "gnome-shell-perf.")
|
|
||||||
os.close(handle)
|
|
||||||
|
|
||||||
# Run the performance test and collect the output as JSON
|
|
||||||
normal_exit = False
|
|
||||||
try:
|
|
||||||
normal_exit = run_shell(perf_output=output_file)
|
|
||||||
except:
|
|
||||||
stop_perf_helper()
|
|
||||||
raise
|
|
||||||
finally:
|
|
||||||
if not normal_exit:
|
|
||||||
os.remove(output_file)
|
|
||||||
|
|
||||||
if not normal_exit:
|
|
||||||
stop_perf_helper()
|
|
||||||
return False
|
|
||||||
|
|
||||||
try:
|
|
||||||
f = open(output_file)
|
|
||||||
output = json.load(f)
|
|
||||||
f.close()
|
|
||||||
except:
|
|
||||||
stop_perf_helper()
|
|
||||||
raise
|
|
||||||
finally:
|
|
||||||
os.remove(output_file)
|
|
||||||
|
|
||||||
# Grab the event definitions and monitor layout the first time around
|
|
||||||
if i == 0:
|
|
||||||
events = output['events']
|
|
||||||
monitors = output['monitors']
|
|
||||||
|
|
||||||
if options.perf_warmup and i == 0:
|
|
||||||
continue
|
|
||||||
|
|
||||||
for metric in output['metrics']:
|
|
||||||
name = metric['name']
|
|
||||||
if not name in metric_summaries:
|
|
||||||
summary = {}
|
|
||||||
summary['description'] = metric['description']
|
|
||||||
summary['units'] = metric['units']
|
|
||||||
summary['values'] = []
|
|
||||||
metric_summaries[name] = summary
|
|
||||||
else:
|
|
||||||
summary = metric_summaries[name]
|
|
||||||
|
|
||||||
summary['values'].append(metric['value'])
|
|
||||||
|
|
||||||
logs.append(output['log'])
|
|
||||||
|
|
||||||
stop_perf_helper()
|
|
||||||
|
|
||||||
if options.perf_output or options.perf_upload:
|
|
||||||
# Write a complete report, formatted as JSON. The Javascript/C code that
|
|
||||||
# generates the individual reports we are summarizing here is very careful
|
|
||||||
# to format them nicely, but we just dump out a compressed no-whitespace
|
|
||||||
# version here for simplicity. Using json.dump(indent=0) doesn't real
|
|
||||||
# improve the readability of the output much.
|
|
||||||
report = {
|
|
||||||
'date': datetime.datetime.utcnow().isoformat() + 'Z',
|
|
||||||
'events': events,
|
|
||||||
'monitors': monitors,
|
|
||||||
'metrics': metric_summaries,
|
|
||||||
'logs': logs
|
|
||||||
}
|
|
||||||
|
|
||||||
# Add the Git revision if available
|
|
||||||
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
|
||||||
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
|
|
||||||
top_dir = os.path.dirname(self_dir)
|
|
||||||
git_dir = os.path.join(top_dir, '.git')
|
|
||||||
if os.path.exists(git_dir):
|
|
||||||
env = dict(os.environ)
|
|
||||||
env['GIT_DIR'] = git_dir
|
|
||||||
revision = subprocess.Popen(['git', 'rev-parse', 'HEAD'],
|
|
||||||
env=env,
|
|
||||||
stdout=subprocess.PIPE).communicate()[0].strip()
|
|
||||||
report['revision'] = revision
|
|
||||||
|
|
||||||
if options.perf_output:
|
|
||||||
f = open(options.perf_output, 'w')
|
|
||||||
json.dump(report, f)
|
|
||||||
f.close()
|
|
||||||
|
|
||||||
if options.perf_upload:
|
|
||||||
upload_performance_report(json.dumps(report))
|
|
||||||
else:
|
|
||||||
# Write a human readable summary
|
|
||||||
print '------------------------------------------------------------';
|
|
||||||
for metric in sorted(metric_summaries.keys()):
|
|
||||||
summary = metric_summaries[metric]
|
|
||||||
print "#", summary['description']
|
|
||||||
print metric, ", ".join((str(x) for x in summary['values']))
|
|
||||||
print '------------------------------------------------------------';
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def restore_gnome():
|
|
||||||
# Do imports lazily to save time and memory
|
|
||||||
import gio
|
|
||||||
import gconf
|
|
||||||
|
|
||||||
# We don't want to start the new gnome-panel in the current
|
|
||||||
# directory; $HOME is better for stuff launched from it
|
|
||||||
os.chdir(os.path.expanduser("~"))
|
|
||||||
|
|
||||||
def launch_component(gconf_path):
|
|
||||||
client = gconf.client_get_default()
|
|
||||||
component = client.get_string(gconf_path)
|
|
||||||
|
|
||||||
if component == None or component == "":
|
|
||||||
return False
|
|
||||||
|
|
||||||
# See gnome-session/gsm-util.c:gsm_util_find_desktop_file_for_app_name()
|
|
||||||
# The one difference is that we don't search the autostart directories,
|
|
||||||
# and just search normal application search path. (Gio doesnt' know
|
|
||||||
# how to search the autostart dirs, so we'd have to do that ourselves.)
|
|
||||||
appinfo = None
|
|
||||||
try:
|
|
||||||
appinfo = gio.unix.DesktopAppInfo(component + ".desktop")
|
|
||||||
except:
|
|
||||||
try:
|
|
||||||
appinfo = gio.unix.DesktopAppInfo("gnome-" + component + ".desktop")
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if appinfo:
|
|
||||||
appinfo.launch()
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
# GNOME2 fallback
|
|
||||||
wm = launch_component("/desktop/gnome/session/required_components/windowmanager")
|
|
||||||
panel = launch_component("/desktop/gnome/session/required_components/panel")
|
|
||||||
|
|
||||||
if not wm and not panel: # Probably GNOME3
|
|
||||||
subprocess.Popen(['gnome-shell'])
|
|
||||||
|
|
||||||
# Main program
|
# Main program
|
||||||
|
|
||||||
parser = optparse.OptionParser()
|
parser = optparse.OptionParser()
|
||||||
@ -570,17 +153,6 @@ parser.add_option("", "--debug-command", metavar="COMMAND",
|
|||||||
help="Command to use for debugging (defaults to 'gdb --args')")
|
help="Command to use for debugging (defaults to 'gdb --args')")
|
||||||
parser.add_option("-v", "--verbose", action="store_true")
|
parser.add_option("-v", "--verbose", action="store_true")
|
||||||
parser.add_option("", "--sync", action="store_true")
|
parser.add_option("", "--sync", action="store_true")
|
||||||
parser.add_option("", "--perf", metavar="PERF_MODULE",
|
|
||||||
help="Specify the name of a performance module to run")
|
|
||||||
parser.add_option("", "--perf-iters", type="int", metavar="ITERS",
|
|
||||||
help="Numbers of iterations of performance module to run",
|
|
||||||
default=1)
|
|
||||||
parser.add_option("", "--perf-warmup", action="store_true",
|
|
||||||
help="Run a dry run before performance tests")
|
|
||||||
parser.add_option("", "--perf-output", metavar="OUTPUT_FILE",
|
|
||||||
help="Output file to write performance report")
|
|
||||||
parser.add_option("", "--perf-upload", action="store_true",
|
|
||||||
help="Upload performance report to server")
|
|
||||||
parser.add_option("", "--version", action="callback", callback=show_version,
|
parser.add_option("", "--version", action="callback", callback=show_version,
|
||||||
help="Display version and exit")
|
help="Display version and exit")
|
||||||
|
|
||||||
@ -590,10 +162,6 @@ if args:
|
|||||||
parser.print_usage()
|
parser.print_usage()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if options.perf and json is None:
|
|
||||||
print 'The Python simplejson module is required for performance tests'
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
# Handle ssh logins
|
# Handle ssh logins
|
||||||
if 'DISPLAY' not in os.environ:
|
if 'DISPLAY' not in os.environ:
|
||||||
running_env = get_running_session_environs()
|
running_env = get_running_session_environs()
|
||||||
@ -604,21 +172,7 @@ if options.debug_command:
|
|||||||
elif options.debug:
|
elif options.debug:
|
||||||
options.debug_command = "gdb --args"
|
options.debug_command = "gdb --args"
|
||||||
|
|
||||||
# We only respawn the previous environment on abnormal exit;
|
normal_exit = run_shell()
|
||||||
# for a clean exit, we assume that gnome-shell was replaced with
|
|
||||||
# something else.
|
|
||||||
normal_exit = False
|
|
||||||
|
|
||||||
try:
|
|
||||||
if options.perf:
|
|
||||||
normal_exit = run_performance_test()
|
|
||||||
else:
|
|
||||||
ensure_desktop_infrastructure_state()
|
|
||||||
normal_exit = run_shell()
|
|
||||||
finally:
|
|
||||||
if options.replace and (options.perf or not normal_exit):
|
|
||||||
restore_gnome()
|
|
||||||
|
|
||||||
if normal_exit:
|
if normal_exit:
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
else:
|
else:
|
||||||
|
310
src/gnome-shell-perf-tool.in
Normal file
310
src/gnome-shell-perf-tool.in
Normal file
@ -0,0 +1,310 @@
|
|||||||
|
#!@PYTHON@
|
||||||
|
# -*- mode: Python; indent-tabs-mode: nil; -*-
|
||||||
|
|
||||||
|
import datetime
|
||||||
|
from gi.repository import GLib, GObject, Gio
|
||||||
|
try:
|
||||||
|
import json
|
||||||
|
except ImportError:
|
||||||
|
import simplejson as json
|
||||||
|
import optparse
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
import base64
|
||||||
|
from ConfigParser import RawConfigParser
|
||||||
|
import hashlib
|
||||||
|
import hmac
|
||||||
|
import httplib
|
||||||
|
import urlparse
|
||||||
|
import urllib
|
||||||
|
|
||||||
|
def show_version(option, opt_str, value, parser):
|
||||||
|
print "GNOME Shell Performance Test @VERSION@"
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
def wait_for_dbus_name(wait_name):
|
||||||
|
loop = GLib.MainLoop()
|
||||||
|
|
||||||
|
def on_name_appeared(connection, name, name_owner, *args):
|
||||||
|
if not (name == wait_name and new_owner != ''):
|
||||||
|
return
|
||||||
|
loop.quit()
|
||||||
|
return
|
||||||
|
|
||||||
|
watch_id = Gio.bus_watch_name(Gio.BusType.SESSION,
|
||||||
|
wait_name,
|
||||||
|
Gio.BusNameWatcherFlags.NONE,
|
||||||
|
on_name_appeared,
|
||||||
|
None)
|
||||||
|
|
||||||
|
def on_timeout():
|
||||||
|
print "\nFailed to start %s: timed out" % (wait_name,)
|
||||||
|
sys.exit(1)
|
||||||
|
GLib.timeout_add_seconds(7, on_timeout)
|
||||||
|
|
||||||
|
loop.run()
|
||||||
|
Gio.bus_unwatch_name(watch_id)
|
||||||
|
|
||||||
|
PERF_HELPER_NAME = "org.gnome.Shell.PerfHelper"
|
||||||
|
PERF_HELPER_IFACE = "org.gnome.Shell.PerfHelper"
|
||||||
|
PERF_HELPER_PATH = "/org/gnome/Shell/PerfHelper"
|
||||||
|
|
||||||
|
def start_perf_helper():
|
||||||
|
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
|
perf_helper_path = "@libexecdir@/gnome-shell-perf-helper"
|
||||||
|
|
||||||
|
subprocess.Popen([perf_helper_path])
|
||||||
|
wait_for_dbus_name (PERF_HELPER_NAME)
|
||||||
|
|
||||||
|
def stop_perf_helper():
|
||||||
|
proxy = Gio.DBusProxy(g_bus_type=Gio.BusType.SESSION,
|
||||||
|
g_name=PERF_HELPER_NAME,
|
||||||
|
g_interface=PERF_HELPER_IFACE,
|
||||||
|
g_object_path=PERF_HELPER_PATH)
|
||||||
|
proxy.Exit()
|
||||||
|
|
||||||
|
def start_shell(extra_args, perf_output=None):
|
||||||
|
# Set up environment
|
||||||
|
env = dict(os.environ)
|
||||||
|
env['SHELL_PERF_MODULE'] = options.perf
|
||||||
|
env['MUTTER_WM_CLASS_FILTER'] = 'Gnome-shell-perf-helper'
|
||||||
|
|
||||||
|
if perf_output is not None:
|
||||||
|
env['SHELL_PERF_OUTPUT'] = perf_output
|
||||||
|
|
||||||
|
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
|
args.append(os.path.join(self_dir, 'gnome-shell'))
|
||||||
|
# pass on any additional arguments
|
||||||
|
args += extra_args
|
||||||
|
|
||||||
|
return subprocess.Popen(args, env=env)
|
||||||
|
|
||||||
|
def run_shell(args, perf_output=None):
|
||||||
|
# we do no additional supervision of gnome-shell,
|
||||||
|
# beyond that of wait
|
||||||
|
# in particular, we don't kill the shell upon
|
||||||
|
# receving a KeyboardInterrupt, as we expect to be
|
||||||
|
# in the same process group
|
||||||
|
shell = start_shell(extra_args, perf_output=perf_output)
|
||||||
|
shell.wait()
|
||||||
|
return shell.returncode == 0
|
||||||
|
|
||||||
|
def upload_performance_report(report_text):
|
||||||
|
try:
|
||||||
|
config_home = os.environ['XDG_CONFIG_HOME']
|
||||||
|
except KeyError:
|
||||||
|
config_home = None
|
||||||
|
|
||||||
|
if not config_home:
|
||||||
|
config_home = os.path.expanduser("~/.config")
|
||||||
|
|
||||||
|
config_file = os.path.join(config_home, "gnome-shell/perf.ini")
|
||||||
|
|
||||||
|
try:
|
||||||
|
config = RawConfigParser()
|
||||||
|
f = open(config_file)
|
||||||
|
config.readfp(f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
base_url = config.get('upload', 'url')
|
||||||
|
system_name = config.get('upload', 'name')
|
||||||
|
secret_key = config.get('upload', 'key')
|
||||||
|
except Exception, e:
|
||||||
|
print "Can't read upload configuration from %s: %s" % (config_file, str(e))
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Determine host, port and upload URL from provided data, we're
|
||||||
|
# a bit extra-careful about normalization since the URL is part
|
||||||
|
# of the signature.
|
||||||
|
|
||||||
|
split = urlparse.urlsplit(base_url)
|
||||||
|
scheme = split[0].lower()
|
||||||
|
netloc = split[1]
|
||||||
|
base_path = split[2]
|
||||||
|
|
||||||
|
m = re.match(r'^(.*?)(?::(\d+))?$', netloc)
|
||||||
|
if m.group(2):
|
||||||
|
host, port = m.group(1), int(m.group(2))
|
||||||
|
else:
|
||||||
|
host, port = m.group(1), None
|
||||||
|
|
||||||
|
if scheme != "http":
|
||||||
|
print "'%s' is not a HTTP URL" % base_url
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if port is None:
|
||||||
|
port = 80
|
||||||
|
|
||||||
|
if base_path.endswith('/'):
|
||||||
|
base_path = base_path[:-1]
|
||||||
|
|
||||||
|
if port == 80:
|
||||||
|
normalized_base = "%s://%s%s" % (scheme, host, base_path)
|
||||||
|
else:
|
||||||
|
normalized_base = "%s://%s:%d%s" % (scheme, host, port, base_path)
|
||||||
|
|
||||||
|
upload_url = normalized_base + '/system/%s/upload' % system_name
|
||||||
|
upload_path = urlparse.urlsplit(upload_url)[2] # path portion
|
||||||
|
|
||||||
|
# Create signature based on upload URL and the report data
|
||||||
|
|
||||||
|
signature_data = 'POST&' + upload_url + "&&"
|
||||||
|
h = hmac.new(secret_key, digestmod=hashlib.sha1)
|
||||||
|
h.update(signature_data)
|
||||||
|
h.update(report_text)
|
||||||
|
signature = urllib.quote(base64.b64encode(h.digest()), "~")
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'User-Agent': 'gnome-shell-performance-tool/@VERSION@',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'X-Shell-Signature': 'HMAC-SHA1 ' + signature
|
||||||
|
};
|
||||||
|
|
||||||
|
connection = httplib.HTTPConnection(host, port)
|
||||||
|
connection.request('POST', upload_path, report_text, headers)
|
||||||
|
response = connection.getresponse()
|
||||||
|
|
||||||
|
if response.status == 200:
|
||||||
|
print "Performance report upload succeeded"
|
||||||
|
else:
|
||||||
|
print "Performance report upload failed with status %d" % response.status
|
||||||
|
print response.read()
|
||||||
|
|
||||||
|
def run_performance_test(args):
|
||||||
|
iters = options.perf_iters
|
||||||
|
if options.perf_warmup:
|
||||||
|
iters += 1
|
||||||
|
|
||||||
|
logs = []
|
||||||
|
metric_summaries = {}
|
||||||
|
|
||||||
|
start_perf_helper()
|
||||||
|
|
||||||
|
for i in xrange(0, iters):
|
||||||
|
# We create an empty temporary file that the shell will overwrite
|
||||||
|
# with the contents.
|
||||||
|
handle, output_file = tempfile.mkstemp(".json", "gnome-shell-perf.")
|
||||||
|
os.close(handle)
|
||||||
|
|
||||||
|
# Run the performance test and collect the output as JSON
|
||||||
|
normal_exit = False
|
||||||
|
try:
|
||||||
|
normal_exit = run_shell(args, perf_output=output_file)
|
||||||
|
except:
|
||||||
|
stop_perf_helper()
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
if not normal_exit:
|
||||||
|
os.remove(output_file)
|
||||||
|
|
||||||
|
if not normal_exit:
|
||||||
|
stop_perf_helper()
|
||||||
|
return False
|
||||||
|
|
||||||
|
try:
|
||||||
|
f = open(output_file)
|
||||||
|
output = json.load(f)
|
||||||
|
f.close()
|
||||||
|
except:
|
||||||
|
stop_perf_helper()
|
||||||
|
raise
|
||||||
|
finally:
|
||||||
|
os.remove(output_file)
|
||||||
|
|
||||||
|
# Grab the event definitions and monitor layout the first time around
|
||||||
|
if i == 0:
|
||||||
|
events = output['events']
|
||||||
|
monitors = output['monitors']
|
||||||
|
|
||||||
|
if options.perf_warmup and i == 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
for metric in output['metrics']:
|
||||||
|
name = metric['name']
|
||||||
|
if not name in metric_summaries:
|
||||||
|
summary = {}
|
||||||
|
summary['description'] = metric['description']
|
||||||
|
summary['units'] = metric['units']
|
||||||
|
summary['values'] = []
|
||||||
|
metric_summaries[name] = summary
|
||||||
|
else:
|
||||||
|
summary = metric_summaries[name]
|
||||||
|
|
||||||
|
summary['values'].append(metric['value'])
|
||||||
|
|
||||||
|
logs.append(output['log'])
|
||||||
|
|
||||||
|
stop_perf_helper()
|
||||||
|
|
||||||
|
if options.perf_output or options.perf_upload:
|
||||||
|
# Write a complete report, formatted as JSON. The Javascript/C code that
|
||||||
|
# generates the individual reports we are summarizing here is very careful
|
||||||
|
# to format them nicely, but we just dump out a compressed no-whitespace
|
||||||
|
# version here for simplicity. Using json.dump(indent=0) doesn't real
|
||||||
|
# improve the readability of the output much.
|
||||||
|
report = {
|
||||||
|
'date': datetime.datetime.utcnow().isoformat() + 'Z',
|
||||||
|
'events': events,
|
||||||
|
'monitors': monitors,
|
||||||
|
'metrics': metric_summaries,
|
||||||
|
'logs': logs
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add the Git revision if available
|
||||||
|
self_dir = os.path.dirname(os.path.abspath(sys.argv[0]))
|
||||||
|
if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')):
|
||||||
|
top_dir = os.path.dirname(self_dir)
|
||||||
|
git_dir = os.path.join(top_dir, '.git')
|
||||||
|
if os.path.exists(git_dir):
|
||||||
|
env = dict(os.environ)
|
||||||
|
env['GIT_DIR'] = git_dir
|
||||||
|
revision = subprocess.Popen(['git', 'rev-parse', 'HEAD'],
|
||||||
|
env=env,
|
||||||
|
stdout=subprocess.PIPE).communicate()[0].strip()
|
||||||
|
report['revision'] = revision
|
||||||
|
|
||||||
|
if options.perf_output:
|
||||||
|
f = open(options.perf_output, 'w')
|
||||||
|
json.dump(report, f)
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
if options.perf_upload:
|
||||||
|
upload_performance_report(json.dumps(report))
|
||||||
|
else:
|
||||||
|
# Write a human readable summary
|
||||||
|
print '------------------------------------------------------------';
|
||||||
|
for metric in sorted(metric_summaries.keys()):
|
||||||
|
summary = metric_summaries[metric]
|
||||||
|
print "#", summary['description']
|
||||||
|
print metric, ", ".join((str(x) for x in summary['values']))
|
||||||
|
print '------------------------------------------------------------';
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
# Main program
|
||||||
|
|
||||||
|
parser = optparse.OptionParser()
|
||||||
|
parser.add_option("", "--perf", metavar="PERF_MODULE",
|
||||||
|
help="Specify the name of a performance module to run")
|
||||||
|
parser.add_option("", "--perf-iters", type="int", metavar="ITERS",
|
||||||
|
help="Numbers of iterations of performance module to run",
|
||||||
|
default=1)
|
||||||
|
parser.add_option("", "--perf-warmup", action="store_true",
|
||||||
|
help="Run a dry run before performance tests")
|
||||||
|
parser.add_option("", "--perf-output", metavar="OUTPUT_FILE",
|
||||||
|
help="Output file to write performance report")
|
||||||
|
parser.add_option("", "--perf-upload", action="store_true",
|
||||||
|
help="Upload performance report to server")
|
||||||
|
parser.add_option("", "--version", action="callback", callback=show_version,
|
||||||
|
help="Display version and exit")
|
||||||
|
|
||||||
|
options, args = parser.parse_args()
|
||||||
|
|
||||||
|
normal_exit = run_performance_test(args)
|
||||||
|
if normal_exit:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
sys.exit(1)
|
@ -40,9 +40,6 @@
|
|||||||
#include "shell-perf-log.h"
|
#include "shell-perf-log.h"
|
||||||
#include "shell-wm-private.h"
|
#include "shell-wm-private.h"
|
||||||
|
|
||||||
static void gnome_shell_plugin_dispose (GObject *object);
|
|
||||||
static void gnome_shell_plugin_finalize (GObject *object);
|
|
||||||
|
|
||||||
static void gnome_shell_plugin_start (MetaPlugin *plugin);
|
static void gnome_shell_plugin_start (MetaPlugin *plugin);
|
||||||
static void gnome_shell_plugin_minimize (MetaPlugin *plugin,
|
static void gnome_shell_plugin_minimize (MetaPlugin *plugin,
|
||||||
MetaWindowActor *actor);
|
MetaWindowActor *actor);
|
||||||
@ -115,12 +112,8 @@ G_DEFINE_TYPE (GnomeShellPlugin, gnome_shell_plugin, META_TYPE_PLUGIN)
|
|||||||
static void
|
static void
|
||||||
gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
|
||||||
MetaPluginClass *plugin_class = META_PLUGIN_CLASS (klass);
|
MetaPluginClass *plugin_class = META_PLUGIN_CLASS (klass);
|
||||||
|
|
||||||
gobject_class->dispose = gnome_shell_plugin_dispose;
|
|
||||||
gobject_class->finalize = gnome_shell_plugin_finalize;
|
|
||||||
|
|
||||||
plugin_class->start = gnome_shell_plugin_start;
|
plugin_class->start = gnome_shell_plugin_start;
|
||||||
plugin_class->map = gnome_shell_plugin_map;
|
plugin_class->map = gnome_shell_plugin_map;
|
||||||
plugin_class->minimize = gnome_shell_plugin_minimize;
|
plugin_class->minimize = gnome_shell_plugin_minimize;
|
||||||
@ -202,18 +195,6 @@ gnome_shell_plugin_start (MetaPlugin *plugin)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gnome_shell_plugin_dispose (GObject *object)
|
|
||||||
{
|
|
||||||
G_OBJECT_CLASS(gnome_shell_plugin_parent_class)->dispose (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
gnome_shell_plugin_finalize (GObject *object)
|
|
||||||
{
|
|
||||||
G_OBJECT_CLASS(gnome_shell_plugin_parent_class)->finalize (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ShellWM *
|
static ShellWM *
|
||||||
get_shell_wm (void)
|
get_shell_wm (void)
|
||||||
{
|
{
|
||||||
|
@ -608,6 +608,42 @@ shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_app_system_lookup_wmclass:
|
||||||
|
* @system: a #ShellAppSystem
|
||||||
|
* @wmclass: A WM_CLASS value
|
||||||
|
*
|
||||||
|
* Find a valid application corresponding to a WM_CLASS value.
|
||||||
|
*
|
||||||
|
* Returns: (transfer none): A #ShellApp for @wmclass
|
||||||
|
*/
|
||||||
|
ShellApp *
|
||||||
|
shell_app_system_lookup_wmclass (ShellAppSystem *system,
|
||||||
|
const char *wmclass)
|
||||||
|
{
|
||||||
|
char *canonicalized;
|
||||||
|
char *desktop_file;
|
||||||
|
ShellApp *app;
|
||||||
|
|
||||||
|
if (wmclass == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
canonicalized = g_ascii_strdown (wmclass, -1);
|
||||||
|
|
||||||
|
/* This handles "Fedora Eclipse", probably others.
|
||||||
|
* Note g_strdelimit is modify-in-place. */
|
||||||
|
g_strdelimit (canonicalized, " ", '-');
|
||||||
|
|
||||||
|
desktop_file = g_strconcat (canonicalized, ".desktop", NULL);
|
||||||
|
|
||||||
|
app = shell_app_system_lookup_heuristic_basename (system, desktop_file);
|
||||||
|
|
||||||
|
g_free (canonicalized);
|
||||||
|
g_free (desktop_file);
|
||||||
|
|
||||||
|
return app;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_app_system_get_all:
|
* shell_app_system_get_all:
|
||||||
* @system:
|
* @system:
|
||||||
|
@ -49,7 +49,8 @@ ShellApp *shell_app_system_lookup_app_for_path (ShellAppSystem *
|
|||||||
const char *desktop_path);
|
const char *desktop_path);
|
||||||
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system,
|
||||||
const char *id);
|
const char *id);
|
||||||
|
ShellApp *shell_app_system_lookup_wmclass (ShellAppSystem *system,
|
||||||
|
const char *wmclass);
|
||||||
|
|
||||||
GSList *shell_app_system_get_all (ShellAppSystem *system);
|
GSList *shell_app_system_get_all (ShellAppSystem *system);
|
||||||
|
|
||||||
|
214
src/shell-invert-lightness-effect.c
Normal file
214
src/shell-invert-lightness-effect.c
Normal file
@ -0,0 +1,214 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2010-2012 Inclusive Design Research Centre, OCAD University.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Joseph Scheuhammer <clown@alum.mit.edu>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SECTION:shell-invert-lightness-effect
|
||||||
|
* @short_description: A colorization effect where lightness is inverted but
|
||||||
|
* color is not.
|
||||||
|
* @see_also: #ClutterEffect, #ClutterOffscreenEffect
|
||||||
|
*
|
||||||
|
* #ShellInvertLightnessEffect is a sub-class of #ClutterEffect that enhances
|
||||||
|
* the appearance of a clutter actor. Specifically it inverts the lightness
|
||||||
|
* of a #ClutterActor (e.g., darker colors become lighter, white becomes black,
|
||||||
|
* and white, black).
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define SHELL_INVERT_LIGHTNESS_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, ShellInvertLightnessEffectClass))
|
||||||
|
#define SHELL_IS_INVERT_EFFECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT))
|
||||||
|
#define SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFEC, ShellInvertLightnessEffectClass))
|
||||||
|
|
||||||
|
#define CLUTTER_ENABLE_EXPERIMENTAL_API
|
||||||
|
|
||||||
|
#include "shell-invert-lightness-effect.h"
|
||||||
|
|
||||||
|
#include <cogl/cogl.h>
|
||||||
|
|
||||||
|
struct _ShellInvertLightnessEffect
|
||||||
|
{
|
||||||
|
ClutterOffscreenEffect parent_instance;
|
||||||
|
|
||||||
|
gint tex_width;
|
||||||
|
gint tex_height;
|
||||||
|
|
||||||
|
CoglPipeline *pipeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _ShellInvertLightnessEffectClass
|
||||||
|
{
|
||||||
|
ClutterOffscreenEffectClass parent_class;
|
||||||
|
|
||||||
|
CoglPipeline *base_pipeline;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Lightness inversion in GLSL.
|
||||||
|
*/
|
||||||
|
static const gchar *invert_lightness_source =
|
||||||
|
"cogl_texel = texture2D (cogl_sampler, cogl_tex_coord.st);\n"
|
||||||
|
"vec3 effect = vec3 (cogl_texel);\n"
|
||||||
|
"\n"
|
||||||
|
"float maxColor = max (cogl_texel.r, max (cogl_texel.g, cogl_texel.b));\n"
|
||||||
|
"float minColor = min (cogl_texel.r, min (cogl_texel.g, cogl_texel.b));\n"
|
||||||
|
"float lightness = (maxColor + minColor) / 2.0;\n"
|
||||||
|
"\n"
|
||||||
|
"float delta = (1.0 - lightness) - lightness;\n"
|
||||||
|
"effect.rgb = (effect.rgb + delta);\n"
|
||||||
|
"\n"
|
||||||
|
"cogl_texel = vec4 (effect, cogl_texel.a);\n";
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (ShellInvertLightnessEffect,
|
||||||
|
shell_invert_lightness_effect,
|
||||||
|
CLUTTER_TYPE_OFFSCREEN_EFFECT);
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
shell_invert_lightness_effect_pre_paint (ClutterEffect *effect)
|
||||||
|
{
|
||||||
|
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||||
|
ClutterEffectClass *parent_class;
|
||||||
|
|
||||||
|
if (!clutter_actor_meta_get_enabled (CLUTTER_ACTOR_META (effect)))
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (!clutter_feature_available (CLUTTER_FEATURE_SHADERS_GLSL))
|
||||||
|
{
|
||||||
|
/* if we don't have support for GLSL shaders then we
|
||||||
|
* forcibly disable the ActorMeta
|
||||||
|
*/
|
||||||
|
g_warning ("Unable to use the ShellInvertLightnessEffect: the "
|
||||||
|
"graphics hardware or the current GL driver does not "
|
||||||
|
"implement support for the GLSL shading language.");
|
||||||
|
clutter_actor_meta_set_enabled (CLUTTER_ACTOR_META (self), FALSE);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
parent_class =
|
||||||
|
CLUTTER_EFFECT_CLASS (shell_invert_lightness_effect_parent_class);
|
||||||
|
if (parent_class->pre_paint (effect))
|
||||||
|
{
|
||||||
|
ClutterOffscreenEffect *offscreen_effect =
|
||||||
|
CLUTTER_OFFSCREEN_EFFECT (effect);
|
||||||
|
CoglHandle texture;
|
||||||
|
|
||||||
|
texture = clutter_offscreen_effect_get_texture (offscreen_effect);
|
||||||
|
self->tex_width = cogl_texture_get_width (texture);
|
||||||
|
self->tex_height = cogl_texture_get_height (texture);
|
||||||
|
|
||||||
|
cogl_pipeline_set_layer_texture (self->pipeline, 0, texture);
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_invert_lightness_effect_paint_target (ClutterOffscreenEffect *effect)
|
||||||
|
{
|
||||||
|
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (effect);
|
||||||
|
ClutterActor *actor;
|
||||||
|
guint8 paint_opacity;
|
||||||
|
|
||||||
|
actor = clutter_actor_meta_get_actor (CLUTTER_ACTOR_META (effect));
|
||||||
|
paint_opacity = clutter_actor_get_paint_opacity (actor);
|
||||||
|
|
||||||
|
cogl_pipeline_set_color4ub (self->pipeline,
|
||||||
|
paint_opacity,
|
||||||
|
paint_opacity,
|
||||||
|
paint_opacity,
|
||||||
|
paint_opacity);
|
||||||
|
cogl_push_source (self->pipeline);
|
||||||
|
|
||||||
|
cogl_rectangle (0, 0, self->tex_width, self->tex_height);
|
||||||
|
|
||||||
|
cogl_pop_source ();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_invert_lightness_effect_dispose (GObject *gobject)
|
||||||
|
{
|
||||||
|
ShellInvertLightnessEffect *self = SHELL_INVERT_LIGHTNESS_EFFECT (gobject);
|
||||||
|
|
||||||
|
if (self->pipeline != NULL)
|
||||||
|
{
|
||||||
|
cogl_object_unref (self->pipeline);
|
||||||
|
self->pipeline = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
G_OBJECT_CLASS (shell_invert_lightness_effect_parent_class)->dispose (gobject);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_invert_lightness_effect_class_init (ShellInvertLightnessEffectClass *klass)
|
||||||
|
{
|
||||||
|
ClutterEffectClass *effect_class = CLUTTER_EFFECT_CLASS (klass);
|
||||||
|
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||||
|
ClutterOffscreenEffectClass *offscreen_class;
|
||||||
|
|
||||||
|
offscreen_class = CLUTTER_OFFSCREEN_EFFECT_CLASS (klass);
|
||||||
|
offscreen_class->paint_target = shell_invert_lightness_effect_paint_target;
|
||||||
|
|
||||||
|
effect_class->pre_paint = shell_invert_lightness_effect_pre_paint;
|
||||||
|
|
||||||
|
gobject_class->dispose = shell_invert_lightness_effect_dispose;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_invert_lightness_effect_init (ShellInvertLightnessEffect *self)
|
||||||
|
{
|
||||||
|
ShellInvertLightnessEffectClass *klass;
|
||||||
|
klass = SHELL_INVERT_LIGHTNESS_EFFECT_GET_CLASS (self);
|
||||||
|
|
||||||
|
if (G_UNLIKELY (klass->base_pipeline == NULL))
|
||||||
|
{
|
||||||
|
CoglSnippet *snippet;
|
||||||
|
CoglContext *ctx =
|
||||||
|
clutter_backend_get_cogl_context (clutter_get_default_backend ());
|
||||||
|
|
||||||
|
klass->base_pipeline = cogl_pipeline_new (ctx);
|
||||||
|
|
||||||
|
snippet = cogl_snippet_new (COGL_SNIPPET_HOOK_TEXTURE_LOOKUP,
|
||||||
|
NULL,
|
||||||
|
NULL);
|
||||||
|
cogl_snippet_set_replace (snippet, invert_lightness_source);
|
||||||
|
cogl_pipeline_add_layer_snippet (klass->base_pipeline, 0, snippet);
|
||||||
|
cogl_object_unref (snippet);
|
||||||
|
|
||||||
|
cogl_pipeline_set_layer_null_texture (klass->base_pipeline,
|
||||||
|
0, /* layer number */
|
||||||
|
COGL_TEXTURE_TYPE_2D);
|
||||||
|
}
|
||||||
|
|
||||||
|
self->pipeline = cogl_pipeline_copy (klass->base_pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_invert_lightness_effect_new:
|
||||||
|
*
|
||||||
|
* Creates a new #ShellInvertLightnessEffect to be used with
|
||||||
|
* clutter_actor_add_effect()
|
||||||
|
*
|
||||||
|
* Return value: (transfer full): the newly created
|
||||||
|
* #ShellInvertLightnessEffect or %NULL. Use g_object_unref() when done.
|
||||||
|
*/
|
||||||
|
ClutterEffect *
|
||||||
|
shell_invert_lightness_effect_new (void)
|
||||||
|
{
|
||||||
|
return g_object_new (SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, NULL);
|
||||||
|
}
|
42
src/shell-invert-lightness-effect.h
Normal file
42
src/shell-invert-lightness-effect.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||||
|
/*
|
||||||
|
* Copyright © 2010-2012 Inclusive Design Research Centre, OCAD University.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
* Author:
|
||||||
|
* Joseph Scheuhammer <clown@alum.mit.edu>
|
||||||
|
*/
|
||||||
|
#ifndef __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||||
|
#define __SHELL_INVERT_LIGHTNESS_EFFECT_H__
|
||||||
|
|
||||||
|
#define COGL_ENABLE_EXPERIMENTAL_API
|
||||||
|
#include <clutter/clutter.h>
|
||||||
|
|
||||||
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define SHELL_TYPE_INVERT_LIGHTNESS_EFFECT (shell_invert_lightness_effect_get_type ())
|
||||||
|
#define SHELL_INVERT_LIGHTNESS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT, ShellInvertLightnessEffect))
|
||||||
|
#define SHELL_IS_INVERT_LIGHTNESS_EFFECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_INVERT_LIGHTNESS_EFFECT))
|
||||||
|
|
||||||
|
typedef struct _ShellInvertLightnessEffect ShellInvertLightnessEffect;
|
||||||
|
typedef struct _ShellInvertLightnessEffectClass ShellInvertLightnessEffectClass;
|
||||||
|
|
||||||
|
GType shell_invert_lightness_effect_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
|
ClutterEffect *shell_invert_lightness_effect_new (void);
|
||||||
|
|
||||||
|
G_END_DECLS
|
||||||
|
|
||||||
|
#endif /* __SHELL_INVERT_LIGHTNESS_EFFECT_H__ */
|
@ -76,6 +76,26 @@ shell_agent_request_free (gpointer data)
|
|||||||
g_slice_free (ShellAgentRequest, request);
|
g_slice_free (ShellAgentRequest, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
shell_agent_request_cancel (ShellAgentRequest *request)
|
||||||
|
{
|
||||||
|
GError *error;
|
||||||
|
ShellNetworkAgent *self;
|
||||||
|
|
||||||
|
self = request->self;
|
||||||
|
|
||||||
|
error = g_error_new (NM_SECRET_AGENT_ERROR,
|
||||||
|
NM_SECRET_AGENT_ERROR_AGENT_CANCELED,
|
||||||
|
"Canceled by NetworkManager");
|
||||||
|
request->callback (NM_SECRET_AGENT (self), request->connection,
|
||||||
|
NULL, error, request->callback_data);
|
||||||
|
|
||||||
|
g_signal_emit (self, signals[SIGNAL_CANCEL_REQUEST], 0, request->request_id);
|
||||||
|
|
||||||
|
g_hash_table_remove (self->priv->requests, request->request_id);
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
shell_network_agent_init (ShellNetworkAgent *agent)
|
shell_network_agent_init (ShellNetworkAgent *agent)
|
||||||
{
|
{
|
||||||
@ -341,6 +361,17 @@ shell_network_agent_get_secrets (NMSecretAgent *agent,
|
|||||||
ShellAgentRequest *request;
|
ShellAgentRequest *request;
|
||||||
NMSettingConnection *setting_connection;
|
NMSettingConnection *setting_connection;
|
||||||
const char *connection_type;
|
const char *connection_type;
|
||||||
|
char *request_id;
|
||||||
|
|
||||||
|
request_id = g_strdup_printf ("%s/%s", connection_path, setting_name);
|
||||||
|
if ((request = g_hash_table_lookup (self->priv->requests, request_id)) != NULL)
|
||||||
|
{
|
||||||
|
/* We already have a request pending for this (connection, setting)
|
||||||
|
* Cancel it before starting the new one.
|
||||||
|
* This will also free the request structure and associated resources.
|
||||||
|
*/
|
||||||
|
shell_agent_request_cancel (request);
|
||||||
|
}
|
||||||
|
|
||||||
setting_connection = nm_connection_get_setting_connection (connection);
|
setting_connection = nm_connection_get_setting_connection (connection);
|
||||||
connection_type = nm_setting_connection_get_connection_type (setting_connection);
|
connection_type = nm_setting_connection_get_connection_type (setting_connection);
|
||||||
@ -371,7 +402,7 @@ shell_network_agent_get_secrets (NMSecretAgent *agent,
|
|||||||
else
|
else
|
||||||
request->vpn_entries = NULL;
|
request->vpn_entries = NULL;
|
||||||
|
|
||||||
request->request_id = g_strdup_printf ("%s/%s", connection_path, setting_name);
|
request->request_id = request_id;
|
||||||
g_hash_table_replace (self->priv->requests, request->request_id, request);
|
g_hash_table_replace (self->priv->requests, request->request_id, request);
|
||||||
|
|
||||||
if ((flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW) ||
|
if ((flags & NM_SECRET_AGENT_GET_SECRETS_FLAG_REQUEST_NEW) ||
|
||||||
@ -409,6 +440,7 @@ shell_network_agent_set_password (ShellNetworkAgent *self,
|
|||||||
|
|
||||||
priv = self->priv;
|
priv = self->priv;
|
||||||
request = g_hash_table_lookup (priv->requests, request_id);
|
request = g_hash_table_lookup (priv->requests, request_id);
|
||||||
|
g_return_if_fail (request != NULL);
|
||||||
|
|
||||||
if (!request->is_vpn)
|
if (!request->is_vpn)
|
||||||
{
|
{
|
||||||
@ -438,6 +470,7 @@ shell_network_agent_respond (ShellNetworkAgent *self,
|
|||||||
|
|
||||||
priv = self->priv;
|
priv = self->priv;
|
||||||
request = g_hash_table_lookup (priv->requests, request_id);
|
request = g_hash_table_lookup (priv->requests, request_id);
|
||||||
|
g_return_if_fail (request != NULL);
|
||||||
|
|
||||||
if (response == SHELL_NETWORK_AGENT_USER_CANCELED)
|
if (response == SHELL_NETWORK_AGENT_USER_CANCELED)
|
||||||
{
|
{
|
||||||
@ -488,20 +521,22 @@ shell_network_agent_cancel_get_secrets (NMSecretAgent *agent,
|
|||||||
{
|
{
|
||||||
ShellNetworkAgent *self = SHELL_NETWORK_AGENT (agent);
|
ShellNetworkAgent *self = SHELL_NETWORK_AGENT (agent);
|
||||||
ShellNetworkAgentPrivate *priv = self->priv;
|
ShellNetworkAgentPrivate *priv = self->priv;
|
||||||
|
gchar *request_id;
|
||||||
|
ShellAgentRequest *request;
|
||||||
|
|
||||||
gchar *request_id = g_strdup_printf ("%s/%s", connection_path, setting_name);
|
request_id = g_strdup_printf ("%s/%s", connection_path, setting_name);
|
||||||
ShellAgentRequest *request = g_hash_table_lookup (priv->requests, request_id);
|
request = g_hash_table_lookup (priv->requests, request_id);
|
||||||
|
|
||||||
GError *error = g_error_new (NM_SECRET_AGENT_ERROR,
|
|
||||||
NM_SECRET_AGENT_ERROR_AGENT_CANCELED,
|
|
||||||
"Canceled by NetworkManager");
|
|
||||||
request->callback (agent, request->connection, NULL, error, request->callback_data);
|
|
||||||
|
|
||||||
g_signal_emit (self, signals[SIGNAL_CANCEL_REQUEST], 0, request_id);
|
|
||||||
|
|
||||||
g_hash_table_remove (priv->requests, request_id);
|
|
||||||
g_free (request_id);
|
g_free (request_id);
|
||||||
g_error_free (error);
|
|
||||||
|
if (!request)
|
||||||
|
{
|
||||||
|
/* We've already sent the result, but the caller cancelled the
|
||||||
|
* operation before receiving that result.
|
||||||
|
*/
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
shell_agent_request_cancel (request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************* saving of secrets ****************************************/
|
/************************* saving of secrets ****************************************/
|
||||||
|
@ -126,30 +126,6 @@ shell_window_tracker_class_init (ShellWindowTrackerClass *klass)
|
|||||||
G_TYPE_NONE, 0);
|
G_TYPE_NONE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get_appid_from_window:
|
|
||||||
*
|
|
||||||
* Turn the WM_CLASS property into our best guess at a .desktop file id.
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
get_appid_from_window (MetaWindow *window)
|
|
||||||
{
|
|
||||||
const char *wmclass;
|
|
||||||
char *appid_guess;
|
|
||||||
|
|
||||||
wmclass = meta_window_get_wm_class (window);
|
|
||||||
if (!wmclass)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
appid_guess = g_ascii_strdown (wmclass, -1);
|
|
||||||
|
|
||||||
/* This handles "Fedora Eclipse", probably others.
|
|
||||||
* Note g_strdelimit is modify-in-place. */
|
|
||||||
g_strdelimit (appid_guess, " ", '-');
|
|
||||||
|
|
||||||
return appid_guess;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_window_tracker_is_window_interesting:
|
* shell_window_tracker_is_window_interesting:
|
||||||
*
|
*
|
||||||
@ -201,40 +177,6 @@ shell_window_tracker_is_window_interesting (MetaWindow *window)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* get_app_from_window_wmclass:
|
|
||||||
*
|
|
||||||
* Looks only at the given window, and attempts to determine
|
|
||||||
* an application based on WM_CLASS. If one can't be determined,
|
|
||||||
* return %NULL.
|
|
||||||
*
|
|
||||||
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
|
|
||||||
*/
|
|
||||||
static ShellApp *
|
|
||||||
get_app_from_window_wmclass (MetaWindow *window)
|
|
||||||
{
|
|
||||||
ShellApp *app;
|
|
||||||
ShellAppSystem *appsys;
|
|
||||||
char *wmclass;
|
|
||||||
char *with_desktop;
|
|
||||||
|
|
||||||
appsys = shell_app_system_get_default ();
|
|
||||||
wmclass = get_appid_from_window (window);
|
|
||||||
|
|
||||||
if (!wmclass)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
with_desktop = g_strjoin (NULL, wmclass, ".desktop", NULL);
|
|
||||||
g_free (wmclass);
|
|
||||||
|
|
||||||
app = shell_app_system_lookup_heuristic_basename (appsys, with_desktop);
|
|
||||||
if (app != NULL)
|
|
||||||
g_object_ref (app);
|
|
||||||
g_free (with_desktop);
|
|
||||||
|
|
||||||
return app;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get_app_from_window_group:
|
* get_app_from_window_group:
|
||||||
* @monitor: a #ShellWindowTracker
|
* @monitor: a #ShellWindowTracker
|
||||||
@ -328,9 +270,12 @@ static ShellApp *
|
|||||||
get_app_for_window (ShellWindowTracker *tracker,
|
get_app_for_window (ShellWindowTracker *tracker,
|
||||||
MetaWindow *window)
|
MetaWindow *window)
|
||||||
{
|
{
|
||||||
|
ShellAppSystem *app_system;
|
||||||
ShellApp *result = NULL;
|
ShellApp *result = NULL;
|
||||||
const char *startup_id;
|
const char *startup_id;
|
||||||
|
|
||||||
|
app_system = shell_app_system_get_default ();
|
||||||
|
|
||||||
/* First, we check whether we already know about this window,
|
/* First, we check whether we already know about this window,
|
||||||
* if so, just return that.
|
* if so, just return that.
|
||||||
*/
|
*/
|
||||||
@ -351,7 +296,8 @@ get_app_for_window (ShellWindowTracker *tracker,
|
|||||||
/* Check if the app's WM_CLASS specifies an app; this is
|
/* Check if the app's WM_CLASS specifies an app; this is
|
||||||
* canonical if it does.
|
* canonical if it does.
|
||||||
*/
|
*/
|
||||||
result = get_app_from_window_wmclass (window);
|
result = shell_app_system_lookup_wmclass (app_system,
|
||||||
|
meta_window_get_wm_class (window));
|
||||||
if (result != NULL)
|
if (result != NULL)
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
|
@ -85,23 +85,11 @@ st_bin_remove (ClutterContainer *container,
|
|||||||
st_bin_set_child (ST_BIN (container), NULL);
|
st_bin_set_child (ST_BIN (container), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
st_bin_foreach (ClutterContainer *container,
|
|
||||||
ClutterCallback callback,
|
|
||||||
gpointer user_data)
|
|
||||||
{
|
|
||||||
StBinPrivate *priv = ST_BIN (container)->priv;
|
|
||||||
|
|
||||||
if (priv->child)
|
|
||||||
callback (priv->child, user_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
clutter_container_iface_init (ClutterContainerIface *iface)
|
clutter_container_iface_init (ClutterContainerIface *iface)
|
||||||
{
|
{
|
||||||
iface->add = st_bin_add;
|
iface->add = st_bin_add;
|
||||||
iface->remove = st_bin_remove;
|
iface->remove = st_bin_remove;
|
||||||
iface->foreach = st_bin_foreach;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -444,14 +444,12 @@ st_scroll_bar_scroll_event (ClutterActor *actor,
|
|||||||
ClutterScrollEvent *event)
|
ClutterScrollEvent *event)
|
||||||
{
|
{
|
||||||
StScrollBarPrivate *priv = ST_SCROLL_BAR (actor)->priv;
|
StScrollBarPrivate *priv = ST_SCROLL_BAR (actor)->priv;
|
||||||
gdouble lower, step, upper, value, delta_x, delta_y;
|
gdouble step, value, delta_x, delta_y;
|
||||||
|
|
||||||
if (priv->adjustment)
|
if (priv->adjustment)
|
||||||
{
|
{
|
||||||
g_object_get (priv->adjustment,
|
g_object_get (priv->adjustment,
|
||||||
"lower", &lower,
|
|
||||||
"step-increment", &step,
|
"step-increment", &step,
|
||||||
"upper", &upper,
|
|
||||||
"value", &value,
|
"value", &value,
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
@ -472,16 +470,10 @@ st_scroll_bar_scroll_event (ClutterActor *actor,
|
|||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_UP:
|
case CLUTTER_SCROLL_UP:
|
||||||
case CLUTTER_SCROLL_LEFT:
|
case CLUTTER_SCROLL_LEFT:
|
||||||
if (value == lower)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->adjustment, value - step);
|
st_adjustment_set_value (priv->adjustment, value - step);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_DOWN:
|
case CLUTTER_SCROLL_DOWN:
|
||||||
case CLUTTER_SCROLL_RIGHT:
|
case CLUTTER_SCROLL_RIGHT:
|
||||||
if (value == upper)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->adjustment, value + step);
|
st_adjustment_set_value (priv->adjustment, value + step);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -687,7 +687,7 @@ st_scroll_view_scroll_event (ClutterActor *self,
|
|||||||
ClutterScrollEvent *event)
|
ClutterScrollEvent *event)
|
||||||
{
|
{
|
||||||
StScrollViewPrivate *priv = ST_SCROLL_VIEW (self)->priv;
|
StScrollViewPrivate *priv = ST_SCROLL_VIEW (self)->priv;
|
||||||
gdouble lower, value, upper, step, hvalue, vvalue, delta_x, delta_y;
|
gdouble value, step, hvalue, vvalue, delta_x, delta_y;
|
||||||
|
|
||||||
/* don't handle scroll events if requested not to */
|
/* don't handle scroll events if requested not to */
|
||||||
if (!priv->mouse_scroll)
|
if (!priv->mouse_scroll)
|
||||||
@ -708,19 +708,15 @@ st_scroll_view_scroll_event (ClutterActor *self,
|
|||||||
case CLUTTER_SCROLL_UP:
|
case CLUTTER_SCROLL_UP:
|
||||||
case CLUTTER_SCROLL_DOWN:
|
case CLUTTER_SCROLL_DOWN:
|
||||||
g_object_get (priv->vadjustment,
|
g_object_get (priv->vadjustment,
|
||||||
"lower", &lower,
|
|
||||||
"step-increment", &step,
|
"step-increment", &step,
|
||||||
"value", &value,
|
"value", &value,
|
||||||
"upper", &upper,
|
|
||||||
NULL);
|
NULL);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_LEFT:
|
case CLUTTER_SCROLL_LEFT:
|
||||||
case CLUTTER_SCROLL_RIGHT:
|
case CLUTTER_SCROLL_RIGHT:
|
||||||
g_object_get (priv->hadjustment,
|
g_object_get (priv->hadjustment,
|
||||||
"lower", &lower,
|
|
||||||
"step-increment", &step,
|
"step-increment", &step,
|
||||||
"value", &value,
|
"value", &value,
|
||||||
"upper", &upper,
|
|
||||||
NULL);
|
NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -732,27 +728,15 @@ st_scroll_view_scroll_event (ClutterActor *self,
|
|||||||
st_adjustment_set_value (priv->vadjustment, vvalue + delta_y);
|
st_adjustment_set_value (priv->vadjustment, vvalue + delta_y);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_UP:
|
case CLUTTER_SCROLL_UP:
|
||||||
if (value == lower)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->vadjustment, value - step);
|
st_adjustment_set_value (priv->vadjustment, value - step);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_DOWN:
|
case CLUTTER_SCROLL_DOWN:
|
||||||
if (value == upper)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->vadjustment, value + step);
|
st_adjustment_set_value (priv->vadjustment, value + step);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_LEFT:
|
case CLUTTER_SCROLL_LEFT:
|
||||||
if (value == lower)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->hadjustment, value - step);
|
st_adjustment_set_value (priv->hadjustment, value - step);
|
||||||
break;
|
break;
|
||||||
case CLUTTER_SCROLL_RIGHT:
|
case CLUTTER_SCROLL_RIGHT:
|
||||||
if (value == upper)
|
|
||||||
return FALSE;
|
|
||||||
else
|
|
||||||
st_adjustment_set_value (priv->hadjustment, value + step);
|
st_adjustment_set_value (priv->hadjustment, value + step);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1782,7 +1782,7 @@ st_theme_node_paint_sliced_border_image (StThemeNode *node,
|
|||||||
cogl_set_source (material);
|
cogl_set_source (material);
|
||||||
|
|
||||||
{
|
{
|
||||||
GLfloat rectangles[] =
|
float rectangles[] =
|
||||||
{
|
{
|
||||||
/* top left corner */
|
/* top left corner */
|
||||||
0, 0, border_left, border_top,
|
0, 0, border_left, border_top,
|
||||||
|
@ -7,12 +7,19 @@
|
|||||||
/* Very simple test of the ShellRecorder class; shows some text strings
|
/* Very simple test of the ShellRecorder class; shows some text strings
|
||||||
* moving around and records it.
|
* moving around and records it.
|
||||||
*/
|
*/
|
||||||
static ShellRecorder *recorder;
|
static ShellRecorder *recorder = NULL;
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
stop_recording_timeout (gpointer data)
|
stop_recording_timeout (gpointer data)
|
||||||
{
|
{
|
||||||
|
if (recorder)
|
||||||
|
{
|
||||||
shell_recorder_close (recorder);
|
shell_recorder_close (recorder);
|
||||||
|
g_object_unref (recorder);
|
||||||
|
}
|
||||||
|
|
||||||
|
clutter_main_quit ();
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -22,6 +29,15 @@ on_animation_completed (ClutterAnimation *animation)
|
|||||||
g_timeout_add (1000, stop_recording_timeout, NULL);
|
g_timeout_add (1000, stop_recording_timeout, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
on_stage_realized (ClutterActor *stage,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
recorder = shell_recorder_new (CLUTTER_STAGE (stage));
|
||||||
|
shell_recorder_set_filename (recorder, "test-recorder.ogg");
|
||||||
|
shell_recorder_record (recorder);
|
||||||
|
}
|
||||||
|
|
||||||
int main (int argc, char **argv)
|
int main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
ClutterActor *stage;
|
ClutterActor *stage;
|
||||||
@ -48,8 +64,8 @@ int main (int argc, char **argv)
|
|||||||
animation = clutter_actor_animate (text,
|
animation = clutter_actor_animate (text,
|
||||||
CLUTTER_EASE_IN_OUT_QUAD,
|
CLUTTER_EASE_IN_OUT_QUAD,
|
||||||
3000,
|
3000,
|
||||||
"x", 320,
|
"x", 320.0,
|
||||||
"y", 240,
|
"y", 240.0,
|
||||||
NULL);
|
NULL);
|
||||||
g_signal_connect (animation, "completed",
|
g_signal_connect (animation, "completed",
|
||||||
G_CALLBACK (on_animation_completed), NULL);
|
G_CALLBACK (on_animation_completed), NULL);
|
||||||
@ -58,41 +74,42 @@ int main (int argc, char **argv)
|
|||||||
"text", "Blue",
|
"text", "Blue",
|
||||||
"font-name", "Sans 40px",
|
"font-name", "Sans 40px",
|
||||||
"color", &blue,
|
"color", &blue,
|
||||||
"x", 640,
|
"x", 640.0,
|
||||||
"y", 0,
|
"y", 0.0,
|
||||||
NULL);
|
NULL);
|
||||||
clutter_actor_set_anchor_point_from_gravity (text, CLUTTER_GRAVITY_NORTH_EAST);
|
clutter_actor_set_anchor_point_from_gravity (text, CLUTTER_GRAVITY_NORTH_EAST);
|
||||||
clutter_actor_add_child (stage, text);
|
clutter_actor_add_child (stage, text);
|
||||||
animation = clutter_actor_animate (text,
|
animation = clutter_actor_animate (text,
|
||||||
CLUTTER_EASE_IN_OUT_QUAD,
|
CLUTTER_EASE_IN_OUT_QUAD,
|
||||||
3000,
|
3000,
|
||||||
"x", 320,
|
"x", 320.0,
|
||||||
"y", 240,
|
"y", 240.0,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
text = g_object_new (CLUTTER_TYPE_TEXT,
|
text = g_object_new (CLUTTER_TYPE_TEXT,
|
||||||
"text", "Green",
|
"text", "Green",
|
||||||
"font-name", "Sans 40px",
|
"font-name", "Sans 40px",
|
||||||
"color", &green,
|
"color", &green,
|
||||||
"x", 0,
|
"x", 0.0,
|
||||||
"y", 480,
|
"y", 480.0,
|
||||||
NULL);
|
NULL);
|
||||||
clutter_actor_set_anchor_point_from_gravity (text, CLUTTER_GRAVITY_SOUTH_WEST);
|
clutter_actor_set_anchor_point_from_gravity (text, CLUTTER_GRAVITY_SOUTH_WEST);
|
||||||
clutter_actor_add_child (stage, text);
|
clutter_actor_add_child (stage, text);
|
||||||
animation = clutter_actor_animate (text,
|
animation = clutter_actor_animate (text,
|
||||||
CLUTTER_EASE_IN_OUT_QUAD,
|
CLUTTER_EASE_IN_OUT_QUAD,
|
||||||
3000,
|
3000,
|
||||||
"x", 320,
|
"x", 320.0,
|
||||||
"y", 240,
|
"y", 240.0,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
recorder = shell_recorder_new (CLUTTER_STAGE (stage));
|
g_signal_connect_after (stage, "realize",
|
||||||
shell_recorder_set_filename (recorder, "test-recorder.ogg");
|
G_CALLBACK (on_stage_realized), NULL);
|
||||||
|
|
||||||
clutter_actor_show (stage);
|
clutter_actor_show (stage);
|
||||||
|
|
||||||
shell_recorder_record (recorder);
|
|
||||||
clutter_main ();
|
clutter_main ();
|
||||||
|
|
||||||
|
g_object_unref (stage);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user