Compare commits
257 Commits
3.6.0
...
wip/media-
Author | SHA1 | Date | |
---|---|---|---|
60d87ef4ba | |||
d886dc17e1 | |||
9dd2a467ba | |||
e757b06987 | |||
6f2da1baf1 | |||
f30dcad8a7 | |||
7dc235511e | |||
644c210fe2 | |||
68e8f98671 | |||
1228db6ac1 | |||
86596749fa | |||
76229a3601 | |||
95abdeb919 | |||
df0151d338 | |||
ee2f12fe81 | |||
10c104529f | |||
cbc8ec6508 | |||
8e7758e280 | |||
9aefbd189c | |||
b9d50584d8 | |||
e5f7390c09 | |||
797b1ff8bb | |||
09b738045c | |||
4fd690333a | |||
5ef5e25a7f | |||
87e8770cbc | |||
cac9d120be | |||
1ae0fadbf4 | |||
65497e089a | |||
2d763bd033 | |||
4ebf396cf5 | |||
6faa50d496 | |||
6fcd6298c8 | |||
5c16be5dbb | |||
e3abb6f178 | |||
70736be4eb | |||
1c3e7330f3 | |||
6e4c89b310 | |||
73b4a0ef5f | |||
d88002c4ed | |||
025c63c045 | |||
b189cbd46e | |||
a21ddb5914 | |||
e04a4c3923 | |||
ae0821e07b | |||
a508bece36 | |||
2c9969a8f4 | |||
dd9fc91f6f | |||
39d9838cc1 | |||
1397c7c624 | |||
c09fcba94f | |||
c77b38fc4f | |||
aef9b733e5 | |||
348208617b | |||
2c34c8e20f | |||
d19fa731d6 | |||
59bb1cc387 | |||
56909d0646 | |||
04da29c939 | |||
307f7a3024 | |||
e80bfa39f5 | |||
29714922ea | |||
88192114ac | |||
9d78208b76 | |||
d817bf0395 | |||
4d51056226 | |||
a607174a25 | |||
37d6a624b7 | |||
0c807bddaf | |||
a0470bfc66 | |||
b9463d23e8 | |||
04debd1623 | |||
9d31576cf5 | |||
8daca28a90 | |||
9899604261 | |||
687e1eabed | |||
eb09f34114 | |||
fbeb446ed7 | |||
92033ce0f5 | |||
9171bab5e5 | |||
f9819eb7b0 | |||
85728f0d15 | |||
9396849d56 | |||
6f5e5672bb | |||
b936e60876 | |||
fa4bd91213 | |||
81eeef7d3c | |||
a7b5134820 | |||
92a01c67ba | |||
71c23613b5 | |||
4f876995de | |||
9cf4a76196 | |||
9efe5287e4 | |||
8c4b34de4e | |||
93e3559dc3 | |||
caa0f63e1f | |||
a4e29e1244 | |||
599f2f43e3 | |||
3a453c5f73 | |||
98b313c75f | |||
8b796d80a7 | |||
719a8908a6 | |||
fed007ecae | |||
990443465f | |||
1f183b8a4e | |||
96556eb959 | |||
3ffeeac577 | |||
d7929a2340 | |||
667019a8c1 | |||
d9b46b4782 | |||
e249218a9d | |||
a2b1946b01 | |||
96a80f7ba0 | |||
9955fbf4f8 | |||
14966b0cd0 | |||
6e1a8f16a8 | |||
d106191e6a | |||
418cf6281e | |||
bdeb7d86b6 | |||
a0e0cc1038 | |||
78f6dec73b | |||
f6458f215f | |||
c7e0d547c4 | |||
fa54cfa0c3 | |||
31ea3f737c | |||
2a8a8065a8 | |||
d3ba002313 | |||
f18fd8d959 | |||
d54f7b13fb | |||
9c8b75206c | |||
15273c7f22 | |||
0ea8217c55 | |||
1735f28f5a | |||
8de4070f7f | |||
45e64f453f | |||
62dc5f2ac6 | |||
86c85a752e | |||
3de0ebf7fd | |||
1496ba0bbd | |||
f5974f6793 | |||
928ea3bb01 | |||
b7acb1d488 | |||
360d94dd67 | |||
671a813135 | |||
c005417f9b | |||
b5ec68bda3 | |||
b4ed29094d | |||
284ab031b8 | |||
6ad5064c09 | |||
3a8e723a36 | |||
dd3484b93f | |||
205773b700 | |||
f2039070e6 | |||
cf58a7eafd | |||
487749c25b | |||
48fb16b570 | |||
f94369dd6e | |||
fc0bd3b9e8 | |||
19946f1d19 | |||
562f56130a | |||
99f97adfc6 | |||
5ad7db722d | |||
a7d344d287 | |||
0ac215f9de | |||
4342155748 | |||
b561694bf0 | |||
cae9a8d608 | |||
88fbdba018 | |||
046067565a | |||
11299d9913 | |||
42ab233b08 | |||
4a92d7d1b2 | |||
2502ca6ccc | |||
651030ba93 | |||
8dfea9566e | |||
8cc54ce2a2 | |||
3abfcda8b5 | |||
cf0ae8f182 | |||
d90bf5c6dc | |||
955b550e95 | |||
b3cd46a5c8 | |||
3fdc8bfa3d | |||
e8f96a6e16 | |||
dc15df1aa7 | |||
05f5fac35b | |||
5bfcc5392d | |||
d2e830cce3 | |||
1e942be639 | |||
576009bad0 | |||
f71108a214 | |||
7109bd52f2 | |||
0f6effa263 | |||
8b0301ed00 | |||
4f56fb125e | |||
6487cd8c6f | |||
06e5c25383 | |||
36e5ae4a25 | |||
245e43ea8c | |||
52871c781a | |||
f994ada576 | |||
147a6e49dc | |||
be24ee435c | |||
9fac285b69 | |||
3ed5f9cd15 | |||
17e70ff8ec | |||
6dab119650 | |||
f80eb89d57 | |||
f6c2902fe4 | |||
1e890a8a0a | |||
aa1a84e677 | |||
9395f310d6 | |||
b99bb3d4bb | |||
4f66f096ff | |||
7f5f2284f3 | |||
59f9f4fca1 | |||
55284e418c | |||
20d4ffde6e | |||
78e5d4df9d | |||
1118ec9653 | |||
7d6c85be42 | |||
0192a6cb12 | |||
0e01a81219 | |||
36edf20273 | |||
a1bf19dbdf | |||
0ad739e78b | |||
ff9509b901 | |||
7e496b1979 | |||
448517032e | |||
a171e92e6c | |||
06e9bf9b0a | |||
7d9ec8cea0 | |||
5b4553ff0c | |||
d4ce7aef59 | |||
8b6df2e23f | |||
e2ff5846df | |||
24efeff788 | |||
4f359e62df | |||
e6fd2bed4d | |||
9fb6510135 | |||
7206b61838 | |||
e8ab0b3e8f | |||
843788580e | |||
4ceb3d890d | |||
3f8995b25e | |||
37e0cefc79 | |||
f026741dbb | |||
044b121e01 | |||
d57c3b4f89 | |||
960f7d5f2e | |||
2f61381651 | |||
ba6e931e21 | |||
440aa0d369 | |||
f42d4b5fa2 | |||
5d9fa2c484 | |||
f5c86fa171 | |||
f9019ce62d | |||
ee485e1728 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -45,6 +45,7 @@ intltool-merge.in
|
||||
intltool-update.in
|
||||
libtool
|
||||
m4/
|
||||
man/gnome-shell.1
|
||||
omf.make
|
||||
po/*.gmo
|
||||
po/gnome-shell.pot
|
||||
|
331
HACKING
Normal file
331
HACKING
Normal file
@ -0,0 +1,331 @@
|
||||
Coding guide
|
||||
============
|
||||
|
||||
Our goal is to have all JavaScript code in GNOME follow a consistent style. In
|
||||
a dynamic language like JavaScript, it is essential to be rigorous about style
|
||||
(and unit tests), or you rapidly end up with a spaghetti-code mess.
|
||||
|
||||
A quick note
|
||||
------------
|
||||
|
||||
Life isn't fun if you can't break the rules. If a rule seems unnecessarily
|
||||
restrictive while you're coding, ignore it, and let the patch reviewer decide
|
||||
what to do.
|
||||
|
||||
Indentation and whitespace
|
||||
--------------------------
|
||||
|
||||
Use four-space indents. Braces are on the same line as their associated
|
||||
statements. You should only omit braces if *both* sides of the statement are
|
||||
on one line.
|
||||
|
||||
* One space after the `function` keyword. No space between the function name
|
||||
* in a declaration or a call. One space before the parens in the `if`
|
||||
* statements, or `while`, or `for` loops.
|
||||
|
||||
function foo(a, b) {
|
||||
let bar;
|
||||
|
||||
if (a > b)
|
||||
bar = do_thing(a);
|
||||
else
|
||||
bar = do_thing(b);
|
||||
|
||||
if (var == 5) {
|
||||
for (let i = 0; i < 10; i++) {
|
||||
print(i);
|
||||
}
|
||||
} else {
|
||||
print(20);
|
||||
}
|
||||
}
|
||||
|
||||
Semicolons
|
||||
----------
|
||||
|
||||
JavaScript allows omitting semicolons at the end of lines, but don't. Always
|
||||
end statements with a semicolon.
|
||||
|
||||
js2-mode
|
||||
--------
|
||||
|
||||
If using Emacs, do not use js2-mode. It is outdated and hasn't worked for a
|
||||
while. emacs now has a built-in JavaScript mode, js-mode, based on
|
||||
espresso-mode. It is the de facto emacs mode for JavaScript.
|
||||
|
||||
File naming and creation
|
||||
------------------------
|
||||
|
||||
For JavaScript files, use lowerCamelCase-style names, with a `.js` extension.
|
||||
|
||||
We only use C where gjs/gobject-introspection is not available for the task, or
|
||||
where C would be cleaner. To work around limitations in
|
||||
gjs/gobject-introspection itself, add a new method in `shell-util.[ch]`.
|
||||
|
||||
Like many other GNOME projects, we prefix our C source filenames with the
|
||||
library name followed by a dash, e.g. `shell-app-system.c`. Create a
|
||||
`-private.h` header when you want to share code internally in the
|
||||
library. These headers are not installed, distributed or introspected.
|
||||
|
||||
Imports
|
||||
-------
|
||||
|
||||
Use UpperCamelCase when importing modules to distinguish them from ordinary
|
||||
variables, e.g.
|
||||
|
||||
const GLib = imports.gi.GLib;
|
||||
|
||||
Imports should be categorized into one of two places. The top-most import block
|
||||
should contain only "environment imports". These are either modules from
|
||||
gobject-introspection or modules added by gjs itself.
|
||||
|
||||
The second block of imports should contain only "application imports". These
|
||||
are the JS code that is in the gnome-shell codebase,
|
||||
e.g. `imports.ui.popupMenu`.
|
||||
|
||||
Each import block should be sorted alphabetically. Don't import modules you
|
||||
don't use.
|
||||
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
The alphabetical ordering should be done independently of the location of the
|
||||
location. Never reference `imports` in actual code.
|
||||
|
||||
Constants
|
||||
---------
|
||||
|
||||
We use CONSTANTS_CASE to define constants. All constants should be directly
|
||||
under the imports:
|
||||
|
||||
const MY_DBUS_INTERFACE = 'org.my.Interface';
|
||||
|
||||
Variable declaration
|
||||
--------------------
|
||||
|
||||
Always use either `const` or `let` when defining a variable.
|
||||
|
||||
// Iterating over an array
|
||||
for (let i = 0; i < arr.length; ++i) {
|
||||
let item = arr[i];
|
||||
}
|
||||
|
||||
// Iterating over an object's properties
|
||||
for (let prop in someobj) {
|
||||
...
|
||||
}
|
||||
|
||||
If you use "var" then the variable is added to function scope, not block scope.
|
||||
See [What's new in JavaScript 1.7](https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.7#Block_scope_with_let_%28Merge_into_let_Statement%29)
|
||||
|
||||
Classes
|
||||
-------
|
||||
|
||||
There are many approaches to classes in JavaScript. We use our own class framework
|
||||
(sigh), which is built in gjs. The advantage is that it supports inheriting from
|
||||
GObjects, although this feature isn't used very often in the Shell itself.
|
||||
|
||||
const IconLabelMenuItem = new Lang.Class({
|
||||
Name: 'IconLabelMenuItem',
|
||||
Extends: PopupMenu.PopupMenuBaseItem,
|
||||
|
||||
_init: function(icon, label) {
|
||||
this.parent({ reactive: false });
|
||||
this.addActor(icon);
|
||||
this.addActor(label);
|
||||
},
|
||||
|
||||
open: function() {
|
||||
log("menu opened!");
|
||||
}
|
||||
});
|
||||
|
||||
* 'Name' is required. 'Extends' is optional. If you leave it out, you will
|
||||
automatically inherit from Object.
|
||||
|
||||
* Leave a blank line between the "class header" (Name, Extends, and other
|
||||
things) and the "class body" (methods). Leave a blank line between each
|
||||
method.
|
||||
|
||||
* No space before the colon, one space after.
|
||||
|
||||
* No trailing comma after the last item.
|
||||
|
||||
* Make sure to use a semicolon after the closing paren to the class. It's
|
||||
still a giant function call, even though it may resemble a more
|
||||
conventional syntax.
|
||||
|
||||
GObject Introspection
|
||||
---------------------
|
||||
|
||||
GObject Introspection is a powerful feature that allows us to have native
|
||||
bindings for almost any library built around GObject. If a library requires
|
||||
you to inherit from a type to use it, you can do so:
|
||||
|
||||
const MyClutterActor = new Lang.Class({
|
||||
Name: 'MyClutterActor',
|
||||
Extends: Clutter.Actor,
|
||||
|
||||
vfunc_get_preferred_width: function(actor, forHeight) {
|
||||
return [100, 100];
|
||||
},
|
||||
|
||||
vfunc_get_preferred_height: function(actor, forWidth) {
|
||||
return [100, 100];
|
||||
},
|
||||
|
||||
vfunc_paint: function(actor) {
|
||||
let alloc = this.get_allocation_box();
|
||||
Cogl.set_source_color4ub(255, 0, 0, 255);
|
||||
Cogl.rectangle(alloc.x1, alloc.y1,
|
||||
alloc.x2, alloc.y2);
|
||||
}
|
||||
});
|
||||
|
||||
Translatable strings, `environment.js`
|
||||
--------------------------------------
|
||||
|
||||
We use gettext to translate the GNOME Shell into all the languages that GNOME
|
||||
supports. The `gettext` function is aliased globally as `_`, you do not need to
|
||||
explicitly import it. This is done through some magic in the
|
||||
[environment.js](http://git.gnome.org/browse/gnome-shell/tree/js/ui/environment.js)
|
||||
file. If you can't find a method that's used, it's probably either in gjs itself
|
||||
or installed on the global object from the Environment.
|
||||
|
||||
Use 'single quotes' for programming strings that should not be translated
|
||||
and "double quotes" for strings that the user may see. This allows us to
|
||||
quickly find untranslated or mistranslated strings by grepping through the
|
||||
sources for double quotes without a gettext call around them.
|
||||
|
||||
`actor` and `_delegate`
|
||||
-----------------------
|
||||
|
||||
gjs allows us to set so-called "expando properties" on introspected objects,
|
||||
allowing us to treat them like any other. Because the Shell was built before
|
||||
you could inherit from GTypes natively in JS, we usually have a wrapper class
|
||||
that has a property called `actor`. We call this wrapper class the "delegate".
|
||||
|
||||
We sometimes use expando properties to set a property called `_delegate` on
|
||||
the actor itself:
|
||||
|
||||
const MyClass = new Lang.Class({
|
||||
Name: 'MyClass',
|
||||
|
||||
_init: function() {
|
||||
this.actor = new St.Button({ text: "This is a button" });
|
||||
this.actor._delegate = this;
|
||||
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||
},
|
||||
|
||||
_onClicked: function(actor) {
|
||||
actor.set_label("You clicked the button!");
|
||||
}
|
||||
});
|
||||
|
||||
The 'delegate' property is important for anything which trying to get the
|
||||
delegate object from an associated actor. For instance, the drag and drop
|
||||
system calls the `handleDragOver` function on the delegate of a "drop target"
|
||||
when the user drags an item over it. If you do not set the `_delegate`
|
||||
property, your actor will not be able to be dropped onto.
|
||||
|
||||
Functional style
|
||||
----------------
|
||||
|
||||
JavaScript Array objects offer a lot of common functional programming
|
||||
capabilities such as forEach, map, filter and so on. You can use these when
|
||||
they make sense, but please don't have a spaghetti mess of function programming
|
||||
messed in a procedural style. Use your best judgment.
|
||||
|
||||
Closures
|
||||
--------
|
||||
|
||||
`this` will not be captured in a closure, it is relative to how the closure is
|
||||
invoked, not to the value of this where the closure is created, because "this"
|
||||
is a keyword with a value passed in at function invocation time, it is not a
|
||||
variable that can be captured in closures.
|
||||
|
||||
All closures should be wrapped with a Lang.bind.
|
||||
|
||||
const Lang = imports.lang;
|
||||
|
||||
let closure = Lang.bind(this, function() { this._fnorbate(); });
|
||||
|
||||
A more realistic example would be connecting to a signal on a method of a
|
||||
prototype:
|
||||
|
||||
const Lang = imports.lang;
|
||||
const FnorbLib = imports.fborbLib;
|
||||
|
||||
const MyClass = new Lang.Class({
|
||||
_init: function() {
|
||||
let fnorb = new FnorbLib.Fnorb();
|
||||
fnorb.connect('frobate', Lang.bind(this, this._onFnorbFrobate));
|
||||
},
|
||||
|
||||
_onFnorbFrobate: function(fnorb) {
|
||||
this._updateFnorb();
|
||||
}
|
||||
});
|
||||
|
||||
Object literal syntax
|
||||
---------------------
|
||||
|
||||
In JavaScript, these are equivalent:
|
||||
|
||||
foo = { 'bar': 42 };
|
||||
foo = { bar: 42 };
|
||||
|
||||
and so are these:
|
||||
|
||||
var b = foo['bar'];
|
||||
var b = foo.bar;
|
||||
|
||||
If your usage of an object is like an object, then you're defining "member
|
||||
variables." For member variables, use the no-quotes no-brackets syntax: `{ bar:
|
||||
42 }` `foo.bar`.
|
||||
|
||||
If your usage of an object is like a hash table (and thus conceptually the keys
|
||||
can have special chars in them), don't use quotes, but use brackets: `{ bar: 42
|
||||
}`, `foo['bar']`.
|
||||
|
||||
Getters, setters, and Tweener
|
||||
-----------------------------
|
||||
|
||||
Getters and setters should be used when you are dealing with an API that is
|
||||
designed around setting properties, like Tweener. If you want to animate an
|
||||
arbitrary property, create a getter and setter, and use Tweener to animate the
|
||||
property.
|
||||
|
||||
const ANIMATION_TIME = 2000;
|
||||
|
||||
const MyClass = new Lang.Class({
|
||||
Name: 'MyClass',
|
||||
|
||||
_init: function() {
|
||||
this.actor = new St.BoxLayout();
|
||||
this._position = 0;
|
||||
},
|
||||
|
||||
get position() {
|
||||
return this._position;
|
||||
},
|
||||
|
||||
set position(value) {
|
||||
this._position = value;
|
||||
this.actor.set_position(value, value);
|
||||
}
|
||||
});
|
||||
|
||||
let myThing = new MyClass();
|
||||
Tweener.addTween(myThing,
|
||||
{ position: 100,
|
||||
time: ANIMATION_TIME,
|
||||
transition: 'easeOutQuad' });
|
@ -1,7 +1,11 @@
|
||||
# Point to our macro directory and pick up user flags from the environment
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
|
||||
SUBDIRS = data js src browser-plugin tests po man docs
|
||||
SUBDIRS = data js src browser-plugin tests po docs
|
||||
|
||||
if ENABLE_MAN
|
||||
SUBDIRS += man
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
.project \
|
||||
@ -13,6 +17,7 @@ EXTRA_DIST = \
|
||||
DIST_EXCLUDE = \
|
||||
.gitignore \
|
||||
gnome-shell.doap \
|
||||
HACKING \
|
||||
MAINTAINERS \
|
||||
tools/build/*
|
||||
|
||||
@ -20,4 +25,4 @@ distcheck-hook:
|
||||
@echo "Checking disted files against files in git"
|
||||
@$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE)
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
|
||||
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man
|
||||
|
83
NEWS
83
NEWS
@ -1,3 +1,86 @@
|
||||
3.7.1
|
||||
=====
|
||||
* Add shortcut to open application view directly [Jeremy; #685738]
|
||||
* Expose '<Super>F10' shortcut in System Settings [Florian; #672909]
|
||||
* Clean up timestamp format in chat notifications [Carlos; #680989]
|
||||
* loginScreen: Add support for 'disable-restart-buttons' [Florian; #686247]
|
||||
* Update textures automatically on file changes [Florian; #679268]
|
||||
* Implement org.gnome.ScreenSaver.GetActiveTime [Giovanni; #686064]
|
||||
* Add missing translations for GSetting schema [Giovanni; #686413]
|
||||
* Hide workspace switcher completely when it's not necessary [Seif; #686483]
|
||||
* Explicitly load gnome-screensaver when not running GDM [Tim; #683060]
|
||||
* Port to GnomeIdleMonitor [Jasper; #682224]
|
||||
* Set Empathy as preferred handler when delegating channels [Xavier; #686296]
|
||||
* Allow testing GDM login dialog from the session [Giovanni; #683725]
|
||||
* Use all available space for windows in window picker [Jasper, Pierre-Eric;
|
||||
#582650]
|
||||
* Use logind for suspend if available [Florian; #686482]
|
||||
* Misc. fixes and cleanups [Jasper, Florian, Adel, Rui; #677426, #680426,
|
||||
#686233, #686241, #686318, #686240, #686484, #686002, #684650, #686487]
|
||||
|
||||
Contributors:
|
||||
Jeremy Bicha, Giovanni Campagna, Xavier Claessens, Adel Gadllah, Seif Lotfy,
|
||||
Tim Lunn, Rui Matos, Florian Müllner, Pierre-Eric Pelloux-Prayer,
|
||||
Carlos Soriano, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Andika Triwidada [id], Matej Urbančič [sl], Ihar Hrachyshka [be],
|
||||
Daniel Mustieles [es], Fran Diéguez [gl], Takayuki KUSANO [ja],
|
||||
Мирослав Николић [sr, sr@latin], Dušan Kazik [sk], Tom Tryfonidis [el]
|
||||
|
||||
3.6.1
|
||||
=====
|
||||
* dash: Make padding even on the top/bottom of the dash [Jasper; #684619]
|
||||
* Fix a crash when dragging search results [Jasper; #684888]
|
||||
* workspaceThumbnail: Fix dragging with static workspaces [Jasper; #684641]
|
||||
* Really hide 'Show Keyboard Layout' on the lock screen [Matthias]
|
||||
* Misc. improvements to jhbuild setup [Owen; #685352, #685353, #685354, #685355]
|
||||
* Show message tray in Ctrl+Alt+Tab outside of the overview [Jasper, Florian;
|
||||
#684633, #685914]
|
||||
* Disable hotplug sniffer on remote filesystems [Jasper; #684093]
|
||||
* userMenu: Remove 'Switch Session' item [Florian; #685062]
|
||||
* unlockDialog: Make prompt entry insensitive while logging in [Jasper; #685444]
|
||||
* messageTray: Don't animate desktop clone for failed grabs [Jasper; #685342]
|
||||
* Fix crash on dragging windows between workspaces [Ryan; #681399]
|
||||
* userMenu: Ignore 'lock-enabled' setting for user switching [Florian; #685536]
|
||||
* gdm: Fix key-focus on first user [Adel; #684650]
|
||||
* Make grid button insensitive when dragging non-favorites [Jasper; #685313]
|
||||
* Calendar: hide all actions when on the login screen [Matthias; #685142]
|
||||
* Adapt unlock dialog layout for the login screen [Florian; #685201]
|
||||
* Make focus-follows-mouse work better with Shell UI [Florian; #678169]
|
||||
* Improve look of screen shield [Jasper; #685919]
|
||||
* Fix keynav in the login screen [Florian; #684730]
|
||||
* dateMenu: Hide "Open Calendar" item if calendar unavailable [Florian; #686050]
|
||||
* unlockDialog: Reset UI on verification failure [Giovanni; #685441]
|
||||
* Show unlock dialog on primary monitor when using keynav [Giovanni; #685855]
|
||||
* Fix height changes of entries when entering text [Florian; #685534]
|
||||
* Fix show-apps label after successful drags [Florian; #684627]
|
||||
* Misc. bugfixes and cleanups [Jasper, Olivier, Florian, Owen, Adel, Tanner, Tim, Matthias; #685434, #685511, #685466, #685341, #685156, #681159, #673189, #686016, 684869, #686079, #686063
|
||||
|
||||
Contributors:
|
||||
Jasper St. Pierre
|
||||
Matthias Clasen
|
||||
Owen Taylor
|
||||
Olivier Blin
|
||||
Florian Müllner
|
||||
Ryan Lortie
|
||||
Adel Gadllah
|
||||
Tanner Doshier
|
||||
Tim Lunn
|
||||
Giovanni Campagna
|
||||
|
||||
Translations:
|
||||
Tobias Endrigkeit [de], Rudolfs Mazurs [lv], Ask H. Larsen [da],
|
||||
Shankar Prasad [kn], Changwoo Ryu [ko], Chris Leonard [en_GB],
|
||||
Arash Mousavi [fa], Theppitak Karoonboonyanan [th], Seán de Búrca [ga],
|
||||
Yaron Shahrabani [he], Alexander Shopov [bg], Žygimantas Beručka [lt],
|
||||
Milo Casagrande [it], Kjartan Maraas [nb], Kris Thomsen [da],
|
||||
Aurimas Černius [lt], Yuri Myasoedov [ru], Мирослав Николић [sr],
|
||||
Marek Černocký [cs], Gabor Kelemen [hu], Ihar Hrachyshka [be],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW], Eleanor Chen [zh_CN],
|
||||
Carles Ferrando [ca@valencia], Vicent Cubells [ca], Daniel Korostil [uk],
|
||||
Alexandre Franke [fr], Piotr Drąg [pl]
|
||||
|
||||
3.6.0
|
||||
=====
|
||||
* keyboard: Make input source items accessible [Florian; #684462]
|
||||
|
@ -153,8 +153,6 @@ NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin)
|
||||
/* global initialization routine, called once when plugin
|
||||
is loaded */
|
||||
|
||||
g_type_init ();
|
||||
|
||||
g_debug ("plugin loaded");
|
||||
|
||||
memcpy (&funcs, pfuncs, sizeof (funcs));
|
||||
|
31
configure.ac
31
configure.ac
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.6.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.7.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -36,6 +36,8 @@ AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE",
|
||||
|
||||
PKG_PROG_PKG_CONFIG([0.22])
|
||||
|
||||
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||
|
||||
GLIB_GSETTINGS
|
||||
|
||||
# Get a value to substitute into gnome-shell.in
|
||||
@ -52,7 +54,7 @@ AC_MSG_CHECKING([for GStreamer (needed for recording functionality)])
|
||||
if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
build_recorder=true
|
||||
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11"
|
||||
recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0"
|
||||
PKG_CHECK_MODULES(TEST_SHELL_RECORDER, $recorder_modules clutter-1.0 xfixes gl)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
@ -63,9 +65,9 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
CLUTTER_MIN_VERSION=1.11.11
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.33.2
|
||||
MUTTER_MIN_VERSION=3.6.0
|
||||
MUTTER_MIN_VERSION=3.7.1
|
||||
GTK_MIN_VERSION=3.3.9
|
||||
GIO_MIN_VERSION=2.31.6
|
||||
GIO_MIN_VERSION=2.35.0
|
||||
LIBECAL_MIN_VERSION=3.5.3
|
||||
LIBEDATASERVER_MIN_VERSION=3.5.3
|
||||
LIBEDATASERVERUI_MIN_VERSION=3.5.3
|
||||
@ -74,7 +76,7 @@ TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||
POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
GCR_MIN_VERSION=3.3.90
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.5.1
|
||||
GNOME_DESKTOP_REQUIRED_VERSION=3.7.1
|
||||
GNOME_MENUS_REQUIRED_VERSION=3.5.3
|
||||
|
||||
# Collect more than 20 libraries for a prize!
|
||||
@ -97,8 +99,7 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
||||
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
||||
libnm-glib libnm-util gnome-keyring-1
|
||||
gcr-3 >= $GCR_MIN_VERSION
|
||||
gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION)
|
||||
gcr-3 >= $GCR_MIN_VERSION)
|
||||
|
||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||
|
||||
@ -120,7 +121,7 @@ CFLAGS=$saved_CFLAGS
|
||||
LIBS=$saved_LIBS
|
||||
|
||||
PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-internals-1.0 >= $GJS_MIN_VERSION)
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.2 x11)
|
||||
PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 >= 0.6.8 x11)
|
||||
PKG_CHECK_MODULES(TRAY, gtk+-3.0)
|
||||
PKG_CHECK_MODULES(GVC, libpulse libpulse-mainloop-glib gobject-2.0)
|
||||
PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.5.4)
|
||||
@ -139,7 +140,7 @@ PKG_CHECK_EXISTS([gnome-bluetooth-1.0 >= 3.1.0],
|
||||
AC_SUBST([HAVE_BLUETOOTH],[0])
|
||||
AC_MSG_RESULT([no])])
|
||||
|
||||
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION libedataserverui-3.0 >= $LIBEDATASERVERUI_MIN_VERSION gio-2.0)
|
||||
PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0)
|
||||
AC_SUBST(CALENDAR_SERVER_CFLAGS)
|
||||
AC_SUBST(CALENDAR_SERVER_LIBS)
|
||||
|
||||
@ -208,6 +209,18 @@ AC_SUBST(TYPELIBDIR)
|
||||
|
||||
GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
||||
|
||||
AC_ARG_ENABLE(man,
|
||||
[AS_HELP_STRING([--enable-man],
|
||||
[generate man pages [default=yes]])],,
|
||||
enable_man=yes)
|
||||
if test "$enable_man" != no; then
|
||||
AC_PATH_PROG([XSLTPROC], [xsltproc])
|
||||
if test -z "$XSLTPROC"; then
|
||||
AC_MSG_ERROR([xsltproc is required for --enable-man])
|
||||
fi
|
||||
fi
|
||||
AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
|
||||
|
||||
# Stay command-line compatible with the gnome-common configure option. Here
|
||||
# minimum/yes/maximum are the same, however.
|
||||
AC_ARG_ENABLE(compile_warnings,
|
||||
|
@ -8,5 +8,14 @@
|
||||
<KeyListEntry name="toggle-message-tray"
|
||||
_description="Show the message tray"/>
|
||||
|
||||
<KeyListEntry name="focus-active-notification"
|
||||
_description="Focus the active notification"/>
|
||||
|
||||
<KeyListEntry name="toggle-application-view"
|
||||
_description="Show all applications"/>
|
||||
|
||||
<KeyListEntry name="open-application-menu"
|
||||
_description="Open the application menu"/>
|
||||
|
||||
</KeyListEntries>
|
||||
|
||||
|
@ -57,6 +57,14 @@ value here is from the TpConnectionPresenceType enumeration.</_summary>
|
||||
<_summary>Internally used to store the last session presence status for the user. The
|
||||
value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
</key>
|
||||
<key name="always-show-log-out" type="b">
|
||||
<default>false</default>
|
||||
<_summary>Always show the 'Log out' menuitem in the user menu.</_summary>
|
||||
<_description>
|
||||
This key overrides the automatic hiding of the 'Log out'
|
||||
menuitem in single-user, single-session situations.
|
||||
</_description>
|
||||
</key>
|
||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
||||
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||
@ -83,6 +91,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
Keybinding to open the application menu.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="toggle-application-view" type="as">
|
||||
<default>["<Super>a"]</default>
|
||||
<_summary>Keybinding to open the "Show Applications" view</_summary>
|
||||
<_description>
|
||||
Keybinding to open the "Show Applications" view of the Activities
|
||||
Overview.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="toggle-message-tray" type="as">
|
||||
<default>["<Super>m"]</default>
|
||||
<_summary>Keybinding to toggle the visibility of the message tray</_summary>
|
||||
@ -90,6 +106,13 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
Keybinding to toggle the visibility of the message tray.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="focus-active-notification" type="as">
|
||||
<default>["<Super>n"]</default>
|
||||
<_summary>Keybinding to focus the active notification</_summary>
|
||||
<_description>
|
||||
Keybinding to focus the active notification.
|
||||
</_description>
|
||||
</key>
|
||||
<key name="toggle-recording" type="as">
|
||||
<default><![CDATA[['<Control><Shift><Alt>r']]]></default>
|
||||
<_summary>Keybinding to toggle the screen recorder</_summary>
|
||||
@ -148,44 +171,53 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/">
|
||||
<schema id="org.gnome.shell.overrides" path="/org/gnome/shell/overrides/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="attach-modal-dialogs" type="b">
|
||||
<default>true</default>
|
||||
<summary>Attach modal dialog to the parent window</summary>
|
||||
<description>
|
||||
<_summary>Attach modal dialog to the parent window</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running
|
||||
GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="button-layout" type="s">
|
||||
<default>":close"</default>
|
||||
<summary>Arrangement of buttons on the titlebar</summary>
|
||||
<description>
|
||||
<_summary>Arrangement of buttons on the titlebar</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.desktop.wm.preferences when
|
||||
running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="edge-tiling" type="b">
|
||||
<default>true</default>
|
||||
<summary>Enable edge tiling when dropping windows on screen edges</summary>
|
||||
<description>
|
||||
<_summary>Enable edge tiling when dropping windows on screen edges</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="dynamic-workspaces" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces are managed dynamically</summary>
|
||||
<description>
|
||||
<_summary>Workspaces are managed dynamically</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="workspaces-only-on-primary" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces only on primary monitor</summary>
|
||||
<_summary>Workspaces only on primary monitor</_summary>
|
||||
<_description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</_description>
|
||||
</key>
|
||||
|
||||
<key name="focus-change-on-pointer-rest" type="b">
|
||||
<default>true</default>
|
||||
<summary>Delay focus changes in mouse mode until the pointer stops moving</summary>
|
||||
<description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
|
@ -39,7 +39,6 @@ stage {
|
||||
/* small */
|
||||
.app-well-menu,
|
||||
.contact-details-status,
|
||||
.run-dialog-label,
|
||||
.run-dialog-error-label {
|
||||
font-size: 9pt;
|
||||
}
|
||||
@ -311,7 +310,7 @@ StScrollBar StButton#vhandle:active {
|
||||
.notification-icon-button:focus,
|
||||
.hotplug-notification-item:focus,
|
||||
.modal-dialog-button:focus {
|
||||
border: 2px solid #8b8b8b;
|
||||
border-width: 2px;
|
||||
}
|
||||
|
||||
.dash-search-button:active,
|
||||
@ -326,26 +325,30 @@ StScrollBar StButton#vhandle:active {
|
||||
background-gradient-end: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.notification-button:insensitive,
|
||||
.notification-icon-button:insensitive,
|
||||
.notification-button:insensitive {
|
||||
.modal-dialog-button:insensitive {
|
||||
border-color: #666666;
|
||||
color: #9f9f9f;
|
||||
background-gradient-direction: none;
|
||||
background-color: rgba(102, 102, 102, 0.15);
|
||||
}
|
||||
|
||||
/* Entries */
|
||||
|
||||
#searchEntry,
|
||||
.notification StEntry,
|
||||
.login-dialog-prompt-entry,
|
||||
.prompt-dialog-password-entry {
|
||||
.modal-dialog StEntry {
|
||||
color: rgb(64, 64, 64);
|
||||
caret-color: rgb(64, 64, 64);
|
||||
font-size: 12pt;
|
||||
caret-size: 1px;
|
||||
selected-color: black;
|
||||
selected-color: white;
|
||||
padding: 4px 12px;
|
||||
}
|
||||
|
||||
#searchEntry,
|
||||
.run-dialog-entry,
|
||||
.notification StEntry {
|
||||
border: 2px solid rgba(245,245,245,0.2);
|
||||
background-gradient-start: rgba(5,5,6,0.1);
|
||||
@ -358,8 +361,7 @@ StScrollBar StButton#vhandle:active {
|
||||
#searchEntry:focus,
|
||||
#searchEntry:hover,
|
||||
.notification StEntry:focus,
|
||||
.login-dialog-prompt-entry,
|
||||
.prompt-dialog-password-entry {
|
||||
.modal-dialog StEntry {
|
||||
border: 2px solid rgb(136,138,133);
|
||||
background-gradient-start: rgb(200,200,200);
|
||||
background-gradient-end: white;
|
||||
@ -368,12 +370,17 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.notification StEntry:focus,
|
||||
.prompt-dialog-password-entry:focus,
|
||||
.login-dialog-prompt-entry:focus {
|
||||
.modal-dialog StEntry:focus {
|
||||
border: 2px solid #3465a4;
|
||||
}
|
||||
|
||||
#searchEntry {
|
||||
border-color: rgba(245,245,245,0.3);
|
||||
color: rgb(192, 192, 192);
|
||||
caret-color: rgb(192, 192, 192);
|
||||
}
|
||||
|
||||
#searchEntry:hover {
|
||||
color: rgb(128, 128, 128);
|
||||
caret-color: rgb(128, 128, 128);
|
||||
}
|
||||
@ -386,8 +393,7 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.notification StEntry,
|
||||
.prompt-dialog-password-entry,
|
||||
.login-dialog-prompt-entry {
|
||||
.modal-dialog StEntry {
|
||||
border-radius: 5px;
|
||||
padding: 4px 4px;
|
||||
}
|
||||
@ -402,6 +408,8 @@ StScrollBar StButton#vhandle:active {
|
||||
.login-dialog-prompt-entry:insensitive {
|
||||
color: rgba(0,0,0,0.7);
|
||||
border: 2px solid #565656;
|
||||
background-gradient-start: rgb(200,200,200);
|
||||
background-gradient-end: rgb(210,210,210);
|
||||
}
|
||||
|
||||
/* Panel */
|
||||
@ -549,7 +557,6 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.status-chooser-combo.popup-combo-menu {
|
||||
background-color: rgba(0,0,0,0.7);
|
||||
padding: .4em 0em;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #5f5f5f;
|
||||
@ -567,7 +574,7 @@ StScrollBar StButton#vhandle:active {
|
||||
/* Overview */
|
||||
|
||||
#overview {
|
||||
spacing: 12px;
|
||||
spacing: 40px;
|
||||
}
|
||||
|
||||
.window-caption {
|
||||
@ -612,9 +619,9 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
.window-close, .notification-close {
|
||||
background-image: url("close-window.svg");
|
||||
background-size: 34px;
|
||||
height: 34px;
|
||||
width: 34px;
|
||||
background-size: 32px;
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
}
|
||||
|
||||
.window-close {
|
||||
@ -625,19 +632,31 @@ StScrollBar StButton#vhandle:active {
|
||||
/* we start out in the top right of the
|
||||
* notification, inset.
|
||||
*
|
||||
* center is 32px/2 = 17px
|
||||
* center is 32px/2 = 16px
|
||||
*
|
||||
* adjust left 2px
|
||||
* adjust down 8px */
|
||||
|
||||
-shell-close-overlap-x: 15px;
|
||||
-shell-close-overlap-y: 12px;
|
||||
-shell-close-overlap-x: 14px;
|
||||
-shell-close-overlap-y: -12px;
|
||||
}
|
||||
|
||||
.notification-close:rtl {
|
||||
/* as above, but starting out in the top left of the
|
||||
* notification. */
|
||||
|
||||
-shell-close-overlap-x: -14px;
|
||||
}
|
||||
|
||||
.window-close:rtl {
|
||||
-st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.window-picker {
|
||||
-horizontal-spacing: 40px;
|
||||
-vertical-spacing: 40px;
|
||||
}
|
||||
|
||||
/* Dash */
|
||||
|
||||
#dash {
|
||||
@ -656,11 +675,6 @@ StScrollBar StButton#vhandle:active {
|
||||
border-radius: 9px 0px 0px 9px;
|
||||
}
|
||||
|
||||
#dash:empty {
|
||||
height: 100px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
background-image: url("dash-placeholder.svg");
|
||||
background-size: contain;
|
||||
@ -680,6 +694,11 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
.search-entry-icon {
|
||||
icon-size: 1em;
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
#searchEntry:hover .search-entry-icon,
|
||||
#searchEntry:focus .search-entry-icon {
|
||||
color: #8d8f8a;
|
||||
}
|
||||
|
||||
@ -1191,7 +1210,6 @@ StScrollBar StButton#vhandle:active {
|
||||
background: #2e3436 url(message-tray-background.png);
|
||||
background-repeat: repeat;
|
||||
transition-duration: 250;
|
||||
height: 72px;
|
||||
}
|
||||
|
||||
#message-tray:keyboard {
|
||||
@ -1201,7 +1219,7 @@ StScrollBar StButton#vhandle:active {
|
||||
|
||||
#message-tray:overview {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
border-top: 1px solid rgba(128, 128, 128, 0.3);
|
||||
outline: 1px solid rgba(128, 128, 128, 0.3);
|
||||
}
|
||||
|
||||
.notification {
|
||||
@ -1414,6 +1432,10 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-right: 4px;
|
||||
}
|
||||
|
||||
.chat-notification-scrollview{
|
||||
max-height: 22em;
|
||||
}
|
||||
|
||||
.subscription-message {
|
||||
font-style: italic;
|
||||
}
|
||||
@ -1423,28 +1445,34 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
#summary-mode {
|
||||
padding: 0px 6px 0px 6px; /* same as the values in .summary-source */
|
||||
height: 60px;
|
||||
spacing: 10px;
|
||||
height: 72px;
|
||||
}
|
||||
|
||||
.summary-source-button {
|
||||
border-radius: 4px;
|
||||
transition-duration: 100;
|
||||
padding: 6px 3px 6px 3px;
|
||||
}
|
||||
|
||||
.summary-source-button:hover {
|
||||
.summary-source-button:last-child:ltr {
|
||||
padding-right: 6px;
|
||||
}
|
||||
|
||||
.summary-source-button:last-child:rtl {
|
||||
padding-left: 6px;
|
||||
}
|
||||
|
||||
.summary-source-button:hover .summary-source {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
}
|
||||
|
||||
.summary-source-button:focus,
|
||||
.summary-source-button:selected {
|
||||
.summary-source-button:focus .summary-source,
|
||||
.summary-source-button:selected .summary-source {
|
||||
background-color: rgba(255,255,255,0.33);
|
||||
}
|
||||
|
||||
.summary-source {
|
||||
padding-right: 6px;
|
||||
padding-left: 6px;
|
||||
border-radius: 4px;
|
||||
padding: 0 6px 0 6px;
|
||||
transition-duration: 100;
|
||||
}
|
||||
|
||||
.summary-source-counter {
|
||||
@ -1622,35 +1650,26 @@ StScrollBar StButton#vhandle:active {
|
||||
padding: 4px 32px 5px;
|
||||
}
|
||||
|
||||
.modal-dialog-button:insensitive {
|
||||
color: rgb(60, 60, 60);
|
||||
}
|
||||
|
||||
.modal-dialog-button:focus {
|
||||
padding: 3px 31px 4px;
|
||||
}
|
||||
|
||||
/* Run Dialog */
|
||||
|
||||
.run-dialog-label {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
color: #999999;
|
||||
padding-bottom: .4em;
|
||||
}
|
||||
|
||||
.run-dialog-error-box {
|
||||
padding-top: 15px;
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
.run-dialog-entry {
|
||||
font-weight: bold;
|
||||
width: 23em;
|
||||
selection-background-color: white;
|
||||
selected-color: black;
|
||||
}
|
||||
|
||||
.run-dialog {
|
||||
border-radius: 16px;
|
||||
|
||||
padding-right: 21px;
|
||||
padding-left: 21px;
|
||||
padding-bottom: 15px;
|
||||
padding-top: 15px;
|
||||
.modal-dialog .run-dialog-entry {
|
||||
width: 20em;
|
||||
}
|
||||
|
||||
.lightbox {
|
||||
@ -2031,7 +2050,6 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.login-dialog-user-list-item {
|
||||
color: #666666;
|
||||
border-radius: 10px;
|
||||
padding: .2em;
|
||||
}
|
||||
@ -2049,6 +2067,11 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-left: 1em;
|
||||
}
|
||||
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.login-dialog-user-list-item,
|
||||
.login-dialog-user-list-item:hover .login-dialog-user-list-item-name,
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:focus .login-dialog-user-list-item-name,
|
||||
.login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in {
|
||||
@ -2096,6 +2119,7 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
.login-dialog-not-listed-button:focus .login-dialog-not-listed-label,
|
||||
.login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
|
||||
color: #E8E8E8;
|
||||
}
|
||||
@ -2171,18 +2195,24 @@ StScrollBar StButton#vhandle:active {
|
||||
height: .75em;
|
||||
}
|
||||
|
||||
|
||||
.login-dialog .modal-dialog-button {
|
||||
border: 1px solid #666666;
|
||||
border-radius: 5px;
|
||||
padding: 3px 18px;
|
||||
}
|
||||
|
||||
.login-dialog .modal-dialog-button:focus {
|
||||
padding: 2px 17px;
|
||||
}
|
||||
|
||||
.login-dialog .modal-dialog-button:default {
|
||||
background-gradient-start: #6793c4;
|
||||
background-gradient-end: #335d8f;
|
||||
background-gradient-direction: vertical;
|
||||
border: 2px solid #16335d;
|
||||
border-color: #16335d;
|
||||
}
|
||||
|
||||
.login-dialog .modal-dialog-button:default:focus {
|
||||
border: 2px solid #377fe7;
|
||||
}
|
||||
|
||||
.login-dialog .modal-dialog-button:default:hover {
|
||||
@ -2196,6 +2226,13 @@ StScrollBar StButton#vhandle:active {
|
||||
background-gradient-end: #74a0d0;
|
||||
}
|
||||
|
||||
.login-dialog .modal-dialog-button:default:insensitive {
|
||||
border-color: #666666;
|
||||
color: #9f9f9f;
|
||||
background-gradient-direction: none;
|
||||
background-color: rgba(102, 102, 102, 0.15);
|
||||
}
|
||||
|
||||
.login-dialog-message-warning {
|
||||
color: orange;
|
||||
}
|
||||
@ -2228,6 +2265,10 @@ StScrollBar StButton#vhandle:active {
|
||||
-arrow-shadow: 0 1px 1px rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.screen-shield-contents-box {
|
||||
spacing: 48px;
|
||||
}
|
||||
|
||||
.screen-shield-clock {
|
||||
color: white;
|
||||
text-shadow: 0px 1px 2px rgba(0,0,0,0.6);
|
||||
@ -2237,12 +2278,12 @@ StScrollBar StButton#vhandle:active {
|
||||
}
|
||||
|
||||
.screen-shield-clock-time {
|
||||
font-size: 86px;
|
||||
font-size: 72pt;
|
||||
text-shadow: 0px 2px 2px rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.screen-shield-clock-date {
|
||||
font-size: 48px;
|
||||
font-size: 28pt;
|
||||
}
|
||||
|
||||
#screenShieldNotifications {
|
||||
@ -2250,11 +2291,12 @@ StScrollBar StButton#vhandle:active {
|
||||
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
||||
border: 2px solid #868686;
|
||||
max-height: 500px;
|
||||
padding: 12px 0;
|
||||
padding: 18px 0;
|
||||
box-shadow: .5em .5em 20px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
.screen-shield-notifications-box {
|
||||
spacing: 12px;
|
||||
spacing: 18px;
|
||||
}
|
||||
|
||||
.screen-shield-notification-source {
|
||||
@ -2265,6 +2307,7 @@ StScrollBar StButton#vhandle:active {
|
||||
.screen-shield-notification-label {
|
||||
font-size: 1.2em;
|
||||
font-weight: bold;
|
||||
color: #babdb6;
|
||||
}
|
||||
|
||||
/* Remove background from notifications, otherwise
|
||||
@ -2282,3 +2325,17 @@ StScrollBar StButton#vhandle:active {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
|
||||
.osd-window {
|
||||
color: #ededed;
|
||||
background-color: rgba(33, 37, 38, 0.80);
|
||||
border-radius: 15px;
|
||||
text-shadow: 0 1px rgba(0, 0, 0, 0.75);
|
||||
|
||||
padding: 40px;
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
.osd-progress-bar {
|
||||
height: 0.8em;
|
||||
border: 1px solid;
|
||||
}
|
||||
|
@ -100,6 +100,7 @@ nobase_dist_js_DATA = \
|
||||
ui/components/__init__.js \
|
||||
ui/components/autorunManager.js \
|
||||
ui/components/automountManager.js \
|
||||
ui/components/mediaKeysManager.js \
|
||||
ui/components/networkAgent.js \
|
||||
ui/components/polkitAgent.js \
|
||||
ui/components/recorder.js \
|
||||
|
@ -174,7 +174,7 @@ const Application = new Lang.Class({
|
||||
let renderer = new Gtk.CellRendererText();
|
||||
this._extensionSelector.pack_start(renderer, true);
|
||||
this._extensionSelector.add_attribute(renderer, 'text', 1);
|
||||
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive), null);
|
||||
this._extensionSelector.set_cell_data_func(renderer, Lang.bind(this, this._setExtensionInsensitive));
|
||||
this._extensionSelector.connect('changed', Lang.bind(this, this._extensionSelected));
|
||||
|
||||
toolitem = new Gtk.ToolItem({ child: this._extensionSelector });
|
||||
|
@ -25,6 +25,7 @@ const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Lang = imports.lang;
|
||||
const Pango = imports.gi.Pango;
|
||||
const Signals = imports.signals;
|
||||
@ -38,13 +39,14 @@ const GdmUtil = imports.gdm.util;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
const Main = imports.ui.main;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const UserMenu = imports.ui.userMenu;
|
||||
|
||||
const _RESIZE_ANIMATION_TIME = 0.25;
|
||||
const _SCROLL_ANIMATION_TIME = 0.5;
|
||||
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
|
||||
const _LOGO_ICON_NAME_SIZE = 48;
|
||||
const _LOGO_ICON_HEIGHT = 16;
|
||||
|
||||
let _loginDialog = null;
|
||||
|
||||
@ -81,6 +83,36 @@ function _smoothlyResizeActor(actor, width, height) {
|
||||
return hold;
|
||||
}
|
||||
|
||||
const LogoMenuButton = new Lang.Class({
|
||||
Name: 'LogoMenuButton',
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0, null, true);
|
||||
|
||||
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
|
||||
Lang.bind(this, this._updateLogo));
|
||||
|
||||
this._iconBin = new St.Bin();
|
||||
this.actor.add_actor(this._iconBin);
|
||||
|
||||
this._updateLogo();
|
||||
},
|
||||
|
||||
_updateLogo: function() {
|
||||
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
||||
let icon = null;
|
||||
|
||||
if (path) {
|
||||
let file = Gio.file_new_for_path(path);
|
||||
let cache = St.TextureCache.get_default();
|
||||
icon = cache.load_uri_async(file.get_uri(), -1, _LOGO_ICON_HEIGHT);
|
||||
}
|
||||
this._iconBin.set_child(icon);
|
||||
}
|
||||
});
|
||||
|
||||
const UserListItem = new Lang.Class({
|
||||
Name: 'UserListItem',
|
||||
|
||||
@ -149,14 +181,6 @@ const UserListItem = new Lang.Class({
|
||||
this.emit('activate');
|
||||
},
|
||||
|
||||
fadeOutName: function() {
|
||||
return GdmUtil.fadeOutActor(this._nameLabel);
|
||||
},
|
||||
|
||||
fadeInName: function() {
|
||||
return GdmUtil.fadeInActor(this._nameLabel);
|
||||
},
|
||||
|
||||
showTimedLoginIndicator: function(time) {
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
@ -207,16 +231,18 @@ const UserList = new Lang.Class({
|
||||
if (global.stage.get_key_focus() != this.actor)
|
||||
return;
|
||||
|
||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
let focusSet = this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
if (!focusSet) {
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
|
||||
this._moveFocusToItems();
|
||||
return false;
|
||||
}));
|
||||
}
|
||||
},
|
||||
|
||||
_showItem: function(item) {
|
||||
let tasks = [function() {
|
||||
return GdmUtil.fadeInActor(item.actor);
|
||||
},
|
||||
|
||||
function() {
|
||||
return item.fadeInName();
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
@ -280,13 +306,16 @@ const UserList = new Lang.Class({
|
||||
});
|
||||
}
|
||||
|
||||
this._box.remove_style_pseudo_class('expanded');
|
||||
let batch = new Batch.ConsecutiveBatch(this,
|
||||
[function() {
|
||||
return GdmUtil.fadeOutActor(this.actor.vscroll);
|
||||
},
|
||||
|
||||
new Batch.ConcurrentBatch(this, tasks)
|
||||
new Batch.ConcurrentBatch(this, tasks),
|
||||
|
||||
function() {
|
||||
this._box.remove_style_pseudo_class('expanded');
|
||||
}
|
||||
]);
|
||||
|
||||
return batch.run();
|
||||
@ -336,7 +365,6 @@ const UserList = new Lang.Class({
|
||||
});
|
||||
}
|
||||
|
||||
this._box.add_style_pseudo_class('expanded');
|
||||
let batch = new Batch.ConsecutiveBatch(this,
|
||||
[function() {
|
||||
this.takeOverWhitespace();
|
||||
@ -347,6 +375,10 @@ const UserList = new Lang.Class({
|
||||
return _smoothlyResizeActor(this._box, -1, fullHeight);
|
||||
},
|
||||
|
||||
function() {
|
||||
this._box.add_style_pseudo_class('expanded');
|
||||
},
|
||||
|
||||
new Batch.ConcurrentBatch(this, tasks),
|
||||
|
||||
function() {
|
||||
@ -637,35 +669,34 @@ const LoginDialog = new Lang.Class({
|
||||
this._userManager = AccountsService.UserManager.get_default()
|
||||
this._greeterClient = new Gdm.Client();
|
||||
|
||||
this._greeter = this._greeterClient.get_greeter_sync(null);
|
||||
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
|
||||
this._greeter = this._greeterClient.get_greeter_sync(null);
|
||||
|
||||
this._greeter.connect('default-session-name-changed',
|
||||
Lang.bind(this, this._onDefaultSessionChanged));
|
||||
this._greeter.connect('default-session-name-changed',
|
||||
Lang.bind(this, this._onDefaultSessionChanged));
|
||||
|
||||
this._greeter.connect('session-opened',
|
||||
Lang.bind(this, this._onSessionOpened));
|
||||
this._greeter.connect('timed-login-requested',
|
||||
Lang.bind(this, this._onTimedLoginRequested));
|
||||
this._greeter.connect('session-opened',
|
||||
Lang.bind(this, this._onSessionOpened));
|
||||
this._greeter.connect('timed-login-requested',
|
||||
Lang.bind(this, this._onTimedLoginRequested));
|
||||
}
|
||||
|
||||
this._userVerifier = new GdmUtil.ShellUserVerifier(this._greeterClient);
|
||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._askQuestion));
|
||||
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
||||
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
||||
this._userVerifier.connect('reset', Lang.bind(this, this._reset));
|
||||
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
||||
this._userVerifier.connect('hide-login-hint', Lang.bind(this, this._hideLoginHint));
|
||||
this._verifyingUser = false;
|
||||
|
||||
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||
|
||||
this._settings.connect('changed::' + GdmUtil.LOGO_KEY,
|
||||
Lang.bind(this, this._updateLogo));
|
||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY,
|
||||
Lang.bind(this, this._updateBanner));
|
||||
this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_TEXT_KEY,
|
||||
Lang.bind(this, this._updateBanner));
|
||||
|
||||
this._logoBox = new St.Bin({ style_class: 'login-dialog-logo-box' });
|
||||
this.contentLayout.add(this._logoBox);
|
||||
this._updateLogo();
|
||||
this._settings.connect('changed::' + GdmUtil.DISABLE_USER_LIST_KEY,
|
||||
Lang.bind(this, this._updateDisableUserList));
|
||||
|
||||
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
|
||||
text: '' });
|
||||
@ -673,37 +704,30 @@ const LoginDialog = new Lang.Class({
|
||||
this._updateBanner();
|
||||
|
||||
this._titleLabel = new St.Label({ style_class: 'login-dialog-title',
|
||||
text: C_("title", "Sign In") });
|
||||
text: C_("title", "Sign In"),
|
||||
visible: false });
|
||||
|
||||
this.contentLayout.add(this._titleLabel,
|
||||
{ y_fill: false,
|
||||
y_align: St.Align.START });
|
||||
|
||||
let mainContentBox = new St.BoxLayout({ vertical: false });
|
||||
this.contentLayout.add(mainContentBox,
|
||||
this._userList = new UserList();
|
||||
this.contentLayout.add(this._userList.actor,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
y_fill: false });
|
||||
|
||||
this._userList = new UserList();
|
||||
mainContentBox.add(this._userList.actor,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
y_fill: true });
|
||||
y_fill: true });
|
||||
|
||||
this.setInitialKeyFocus(this._userList.actor);
|
||||
|
||||
this._promptBox = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout',
|
||||
vertical: true });
|
||||
mainContentBox.add(this._promptBox,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
y_fill: true,
|
||||
x_align: St.Align.START });
|
||||
this.contentLayout.add(this._promptBox,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
y_fill: true,
|
||||
x_align: St.Align.START });
|
||||
this._promptLabel = new St.Label({ style_class: 'login-dialog-prompt-label' });
|
||||
|
||||
this._mainContentBox = mainContentBox;
|
||||
|
||||
this._promptBox.add(this._promptLabel,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
@ -711,6 +735,7 @@ const LoginDialog = new Lang.Class({
|
||||
x_align: St.Align.START });
|
||||
this._promptEntry = new St.Entry({ style_class: 'login-dialog-prompt-entry',
|
||||
can_focus: true });
|
||||
this._promptEntryTextChangedId = 0;
|
||||
this._promptBox.add(this._promptEntry,
|
||||
{ expand: true,
|
||||
x_fill: true,
|
||||
@ -749,7 +774,7 @@ const LoginDialog = new Lang.Class({
|
||||
x_align: St.Align.START,
|
||||
x_fill: true });
|
||||
|
||||
this._notListedButton.connect('clicked', Lang.bind(this, this._onNotListedClicked));
|
||||
this._notListedButton.connect('clicked', Lang.bind(this, this._hideUserListAndLogIn));
|
||||
|
||||
this.contentLayout.add(this._notListedButton,
|
||||
{ expand: false,
|
||||
@ -775,18 +800,19 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
},
|
||||
|
||||
_updateLogo: function() {
|
||||
this._logoBox.child = null;
|
||||
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
|
||||
_updateDisableUserList: function() {
|
||||
let disableUserList = this._settings.get_boolean(GdmUtil.DISABLE_USER_LIST_KEY);
|
||||
|
||||
if (path) {
|
||||
let file = Gio.file_new_for_path(path);
|
||||
let uri = file.get_uri();
|
||||
// If this is the first time around, set initial focus
|
||||
if (this._disableUserList == undefined && disableUserList)
|
||||
this.setInitialKeyFocus(this._promptEntry);
|
||||
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
this._logoBox.child = textureCache.load_uri_async(uri, -1, _LOGO_ICON_NAME_SIZE);
|
||||
if (disableUserList != this._disableUserList) {
|
||||
this._disableUserList = disableUserList;
|
||||
|
||||
if (!this._verifyingUser)
|
||||
this._reset();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
_updateBanner: function() {
|
||||
@ -801,32 +827,15 @@ const LoginDialog = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onReset: function(client, serviceName) {
|
||||
_reset: function() {
|
||||
this._promptMessage.hide();
|
||||
|
||||
let tasks = [this._hidePrompt,
|
||||
|
||||
new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
|
||||
this._fadeInNotListedButton,
|
||||
this._fadeInLogo]),
|
||||
|
||||
function() {
|
||||
this._sessionList.close();
|
||||
this._promptLoginHint.hide();
|
||||
this._userList.actor.show();
|
||||
this._userList.actor.opacity = 255;
|
||||
return this._userList.showItems();
|
||||
},
|
||||
|
||||
function() {
|
||||
this._userList.actor.reactive = true;
|
||||
this._userList.actor.grab_key_focus();
|
||||
}];
|
||||
|
||||
this._user = null;
|
||||
this._verifyingUser = false;
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
batch.run();
|
||||
if (this._disableUserList)
|
||||
this._hideUserListAndLogIn();
|
||||
else
|
||||
this._showUserList();
|
||||
},
|
||||
|
||||
_onDefaultSessionChanged: function(client, sessionId) {
|
||||
@ -834,9 +843,13 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_showMessage: function(userVerifier, message, styleClass) {
|
||||
this._promptMessage.text = message;
|
||||
this._promptMessage.styleClass = styleClass;
|
||||
GdmUtil.fadeInActor(this._promptMessage);
|
||||
if (message) {
|
||||
this._promptMessage.text = message;
|
||||
this._promptMessage.styleClass = styleClass;
|
||||
GdmUtil.fadeInActor(this._promptMessage);
|
||||
} else {
|
||||
GdmUtil.fadeOutActor(this._promptMessage);
|
||||
}
|
||||
},
|
||||
|
||||
_showLoginHint: function(verifier, message) {
|
||||
@ -877,6 +890,9 @@ const LoginDialog = new Lang.Class({
|
||||
if (this._user && this._user.is_logged_in())
|
||||
return null;
|
||||
|
||||
if (!this._verifyingUser)
|
||||
return null;
|
||||
|
||||
return GdmUtil.fadeInActor(this._sessionList.actor);
|
||||
},
|
||||
|
||||
@ -889,26 +905,21 @@ const LoginDialog = new Lang.Class({
|
||||
return batch.run();
|
||||
},
|
||||
|
||||
_showPrompt: function() {
|
||||
_showPrompt: function(forSecret) {
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
let buttons = [{ action: Lang.bind(this, this.cancel),
|
||||
label: _("Cancel"),
|
||||
key: Clutter.Escape },
|
||||
{ action: Lang.bind(this, function() {
|
||||
hold.release();
|
||||
}),
|
||||
label: C_("button", "Sign In"),
|
||||
default: true }];
|
||||
|
||||
this._promptEntryActivateCallbackId = this._promptEntry.clutter_text.connect('activate',
|
||||
Lang.bind(this, function() {
|
||||
hold.release();
|
||||
}));
|
||||
hold.connect('release', Lang.bind(this, function() {
|
||||
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
|
||||
this._promptEntryActivateCallbackId = null;
|
||||
}));
|
||||
let cancelButtonInfo = { action: Lang.bind(this, this.cancel),
|
||||
label: _("Cancel"),
|
||||
key: Clutter.Escape };
|
||||
let okButtonInfo = { action: Lang.bind(this, function() {
|
||||
hold.release();
|
||||
}),
|
||||
label: forSecret ? C_("button", "Sign In") : _("Next"),
|
||||
default: true };
|
||||
let buttons = [];
|
||||
if (!this._disableUserList || this._verifyingUser)
|
||||
buttons.push(cancelButtonInfo);
|
||||
buttons.push(okButtonInfo);
|
||||
|
||||
let tasks = [function() {
|
||||
return this._fadeInPrompt();
|
||||
@ -916,6 +927,16 @@ const LoginDialog = new Lang.Class({
|
||||
|
||||
function() {
|
||||
this.setButtons(buttons);
|
||||
|
||||
let updateOkButtonEnabled = Lang.bind(this, function() {
|
||||
let sensitive = this._promptEntry.text.length > 0;
|
||||
okButtonInfo.button.reactive = sensitive;
|
||||
okButtonInfo.button.can_focus = sensitive;
|
||||
});
|
||||
|
||||
updateOkButtonEnabled();
|
||||
|
||||
this._promptEntryTextChangedId = this._promptEntry.clutter_text.connect('text-changed', updateOkButtonEnabled);
|
||||
},
|
||||
|
||||
hold];
|
||||
@ -926,13 +947,13 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_hidePrompt: function() {
|
||||
if (this._promptEntryActivateCallbackId) {
|
||||
this._promptEntry.clutter_text.disconnect(this._promptEntryActivateCallbackId);
|
||||
this._promptEntryActivateCallbackId = null;
|
||||
}
|
||||
|
||||
this.setButtons([]);
|
||||
|
||||
if (this._promptEntryTextChangedId > 0) {
|
||||
this._promptEntry.clutter_text.disconnect(this._promptEntryTextChangedId);
|
||||
this._promptEntryTextChangedId = 0;
|
||||
}
|
||||
|
||||
let tasks = [function() {
|
||||
return GdmUtil.fadeOutActor(this._promptBox);
|
||||
},
|
||||
@ -954,7 +975,9 @@ const LoginDialog = new Lang.Class({
|
||||
this._promptEntry.set_text('');
|
||||
this._promptEntry.clutter_text.set_password_char(passwordChar);
|
||||
|
||||
let tasks = [this._showPrompt,
|
||||
let tasks = [function() {
|
||||
return this._showPrompt(!!passwordChar);
|
||||
},
|
||||
|
||||
function() {
|
||||
let _text = this._promptEntry.get_text();
|
||||
@ -966,6 +989,23 @@ const LoginDialog = new Lang.Class({
|
||||
return batch.run();
|
||||
},
|
||||
|
||||
_askForUsernameAndLogIn: function() {
|
||||
this._promptLabel.set_text(_("Username: "));
|
||||
this._promptEntry.set_text('');
|
||||
this._promptEntry.clutter_text.set_password_char('');
|
||||
|
||||
let tasks = [this._showPrompt,
|
||||
|
||||
function() {
|
||||
let userName = this._promptEntry.get_text();
|
||||
this._promptEntry.reactive = false;
|
||||
return this._beginVerificationForUser(userName);
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
return batch.run();
|
||||
},
|
||||
|
||||
_onSessionOpened: function(client, serviceName) {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
},
|
||||
@ -1094,7 +1134,7 @@ const LoginDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_onNotListedClicked: function(user) {
|
||||
_hideUserListAndLogIn: function() {
|
||||
let tasks = [function() {
|
||||
return this._userList.hideItems();
|
||||
},
|
||||
@ -1108,26 +1148,37 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
||||
this._fadeOutNotListedButton,
|
||||
this._fadeOutLogo]),
|
||||
this._fadeOutNotListedButton]),
|
||||
|
||||
function() {
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
this._userVerifier.begin(null, hold);
|
||||
return hold;
|
||||
return this._askForUsernameAndLogIn();
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
batch.run();
|
||||
},
|
||||
|
||||
_fadeInLogo: function() {
|
||||
return GdmUtil.fadeInActor(this._logoBox);
|
||||
},
|
||||
_showUserList: function() {
|
||||
let tasks = [this._hidePrompt,
|
||||
|
||||
_fadeOutLogo: function() {
|
||||
return GdmUtil.fadeOutActor(this._logoBox);
|
||||
new Batch.ConcurrentBatch(this, [this._fadeInTitleLabel,
|
||||
this._fadeInNotListedButton]),
|
||||
|
||||
function() {
|
||||
this._sessionList.close();
|
||||
this._promptLoginHint.hide();
|
||||
this._userList.actor.show();
|
||||
this._userList.actor.opacity = 255;
|
||||
return this._userList.showItems();
|
||||
},
|
||||
|
||||
function() {
|
||||
this._userList.actor.reactive = true;
|
||||
this._userList.actor.grab_key_focus();
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
batch.run();
|
||||
},
|
||||
|
||||
_fadeInBanner: function() {
|
||||
@ -1158,6 +1209,7 @@ const LoginDialog = new Lang.Class({
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
this._userVerifier.begin(userName, hold);
|
||||
this._verifyingUser = true;
|
||||
return hold;
|
||||
},
|
||||
|
||||
@ -1177,13 +1229,8 @@ const LoginDialog = new Lang.Class({
|
||||
return this._userList.giveUpWhitespace();
|
||||
},
|
||||
|
||||
function() {
|
||||
return activatedItem.fadeOutName();
|
||||
},
|
||||
|
||||
new Batch.ConcurrentBatch(this, [this._fadeOutTitleLabel,
|
||||
this._fadeOutNotListedButton,
|
||||
this._fadeOutLogo]),
|
||||
this._fadeOutNotListedButton]),
|
||||
|
||||
function() {
|
||||
return this._userList.shrinkToNaturalHeight();
|
||||
@ -1215,6 +1262,8 @@ const LoginDialog = new Lang.Class({
|
||||
this._userList.addUser(users[i]);
|
||||
}
|
||||
|
||||
this._updateDisableUserList();
|
||||
|
||||
this._userManager.connect('user-added',
|
||||
Lang.bind(this, function(userManager, user) {
|
||||
this._userList.addUser(user);
|
||||
@ -1236,7 +1285,7 @@ const LoginDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_onOpened: function() {
|
||||
Main.ctrlAltTabManager.addGroup(this._mainContentBox,
|
||||
Main.ctrlAltTabManager.addGroup(this.dialogLayout,
|
||||
_("Login Window"),
|
||||
'dialog-password',
|
||||
{ sortGroup: CtrlAltTab.SortGroup.MIDDLE });
|
||||
|
@ -18,11 +18,12 @@
|
||||
* 02111-1307, USA.
|
||||
*/
|
||||
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
|
||||
const GdmUtil = imports.gdm.util;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
|
||||
@ -33,15 +34,14 @@ const PowerMenuButton = new Lang.Class({
|
||||
_init: function() {
|
||||
/* Translators: accessible name of the power menu in the login screen */
|
||||
this.parent('system-shutdown-symbolic', _("Power"));
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
|
||||
this._createSubMenu();
|
||||
this._settings = new Gio.Settings({ schema: GdmUtil.LOGIN_SCREEN_SCHEMA });
|
||||
this._settings.connect('changed::disable-restart-buttons',
|
||||
Lang.bind(this, this._updateVisibility));
|
||||
|
||||
this._upClient.connect('notify::can-suspend',
|
||||
Lang.bind(this, this._updateHaveSuspend));
|
||||
this._updateHaveSuspend();
|
||||
this._createSubMenu();
|
||||
|
||||
// ConsoleKit doesn't send notifications when shutdown/reboot
|
||||
// are disabled, so we update the menu item each time the menu opens
|
||||
@ -50,15 +50,17 @@ const PowerMenuButton = new Lang.Class({
|
||||
if (open) {
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveRestart();
|
||||
this._updateHaveSuspend();
|
||||
}
|
||||
}));
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveRestart();
|
||||
this._updateHaveSuspend();
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
let shouldBeVisible = (this._haveSuspend || this._haveShutdown || this._haveRestart);
|
||||
this.actor.visible = shouldBeVisible;
|
||||
this.actor.visible = shouldBeVisible && !this._settings.get_boolean('disable-restart-buttons');
|
||||
},
|
||||
|
||||
_updateHaveShutdown: function() {
|
||||
@ -78,9 +80,11 @@ const PowerMenuButton = new Lang.Class({
|
||||
},
|
||||
|
||||
_updateHaveSuspend: function() {
|
||||
this._haveSuspend = this._upClient.get_can_suspend();
|
||||
this._suspendItem.actor.visible = this._haveSuspend;
|
||||
this._updateVisibility();
|
||||
this._loginManager.canSuspend(Lang.bind(this, function(result) {
|
||||
this._haveSuspend = result;
|
||||
this._suspendItem.actor.visible = this._haveSuspend;
|
||||
this._updateVisibility();
|
||||
}));
|
||||
},
|
||||
|
||||
_createSubMenu: function() {
|
||||
@ -103,8 +107,10 @@ const PowerMenuButton = new Lang.Class({
|
||||
},
|
||||
|
||||
_onActivateSuspend: function() {
|
||||
if (this._haveSuspend)
|
||||
this._upClient.suspend_sync(null);
|
||||
if (!this._haveSuspend)
|
||||
return;
|
||||
|
||||
this._loginManager.suspend();
|
||||
},
|
||||
|
||||
_onActivateRestart: function() {
|
||||
|
@ -23,6 +23,7 @@ const BANNER_MESSAGE_TEXT_KEY = 'banner-message-text';
|
||||
const ALLOWED_FAILURES_KEY = 'allowed-failures';
|
||||
|
||||
const LOGO_KEY = 'logo';
|
||||
const DISABLE_USER_LIST_KEY = 'disable-user-list';
|
||||
|
||||
function fadeInActor(actor) {
|
||||
if (actor.opacity == 255 && actor.visible)
|
||||
@ -125,6 +126,9 @@ const ShellUserVerifier = new Lang.Class({
|
||||
},
|
||||
|
||||
answerQuery: function(serviceName, answer) {
|
||||
// Clear any previous message
|
||||
this.emit('show-message', null, null);
|
||||
|
||||
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
|
||||
},
|
||||
|
||||
@ -143,7 +147,7 @@ const ShellUserVerifier = new Lang.Class({
|
||||
|
||||
_reportInitError: function(where, error) {
|
||||
logError(error, where);
|
||||
this._hold.relase();
|
||||
this._hold.release();
|
||||
|
||||
this.emit('show-message', _("Authentication error"), 'login-dialog-message-warning');
|
||||
this._verificationFailed(false);
|
||||
@ -330,12 +334,11 @@ const ShellUserVerifier = new Lang.Class({
|
||||
// Otherwise, we allow ALLOWED_FAILURES attempts. After that, we
|
||||
// go back to the welcome screen.
|
||||
|
||||
this._failCounter++;
|
||||
let canRetry = retry && this._userName &&
|
||||
this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY);
|
||||
|
||||
if (canRetry) {
|
||||
this._failCounter++;
|
||||
|
||||
this.clear();
|
||||
this.begin(this._userName, new Batch.Hold());
|
||||
} else {
|
||||
|
@ -120,11 +120,6 @@ function createExtensionObject(uuid, dir, type) {
|
||||
}
|
||||
}
|
||||
|
||||
// Encourage people to add this
|
||||
if (!meta.url) {
|
||||
log('Warning: Missing "url" property in %s/metadata.json'.format(uuid));
|
||||
}
|
||||
|
||||
if (uuid != meta.uuid) {
|
||||
throw new Error('uuid "' + meta.uuid + '" from metadata.json does not match directory name "' + uuid + '"');
|
||||
}
|
||||
@ -161,7 +156,8 @@ const ExtensionFinder = new Lang.Class({
|
||||
try {
|
||||
fileEnum = dir.enumerate_children('standard::*', Gio.FileQueryInfoFlags.NONE, null);
|
||||
} catch(e) {
|
||||
logError(e, 'Could not enumerate extensions directory');
|
||||
if (e.domain != Gio.io_error_quark() || e.code != Gio.IOErrorEnum.NOT_FOUND)
|
||||
logError(e, 'Could not enumerate extensions directory');
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,9 @@
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
|
||||
const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager'>
|
||||
<method name='PowerOff'>
|
||||
@ -12,12 +14,24 @@ const SystemdLoginManagerIface = <interface name='org.freedesktop.login1.Manager
|
||||
<method name='Reboot'>
|
||||
<arg type='b' direction='in'/>
|
||||
</method>
|
||||
<method name='Suspend'>
|
||||
<arg type='b' direction='in'/>
|
||||
</method>
|
||||
<method name='Hibernate'>
|
||||
<arg type='b' direction='in'/>
|
||||
</method>
|
||||
<method name='CanPowerOff'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
<method name='CanReboot'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
<method name='CanSuspend'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
<method name='CanHibernate'>
|
||||
<arg type='s' direction='out'/>
|
||||
</method>
|
||||
</interface>;
|
||||
|
||||
const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session'>
|
||||
@ -123,12 +137,38 @@ const LoginManagerSystemd = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
this._proxy.CanSuspendRemote(function(result, error) {
|
||||
if (error)
|
||||
asyncCallback(false);
|
||||
else
|
||||
asyncCallback(result[0] != 'no');
|
||||
});
|
||||
},
|
||||
|
||||
canHibernate: function(asyncCallback) {
|
||||
this._proxy.CanSuspendRemote(function(result, error) {
|
||||
if (error)
|
||||
asyncCallback(false);
|
||||
else
|
||||
asyncCallback(result[0] != 'no');
|
||||
});
|
||||
},
|
||||
|
||||
powerOff: function() {
|
||||
this._proxy.PowerOffRemote(true);
|
||||
},
|
||||
|
||||
reboot: function() {
|
||||
this._proxy.RebootRemote(true);
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
this._proxy.SuspendRemote(true);
|
||||
},
|
||||
|
||||
hibernate: function() {
|
||||
this._proxy.HibernateRemote(true);
|
||||
}
|
||||
});
|
||||
|
||||
@ -139,6 +179,7 @@ const LoginManagerConsoleKit = new Lang.Class({
|
||||
this._proxy = new ConsoleKitManager(Gio.DBus.system,
|
||||
'org.freedesktop.ConsoleKit',
|
||||
'/org/freedesktop/ConsoleKit/Manager');
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
},
|
||||
|
||||
// Having this function is a bit of a hack since the Systemd and ConsoleKit
|
||||
@ -186,12 +227,33 @@ const LoginManagerConsoleKit = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
canSuspend: function(asyncCallback) {
|
||||
Mainloop.idle_add(Lang.bind(this, function() {
|
||||
asyncCallback(this._upClient.get_can_suspend());
|
||||
return false;
|
||||
}));
|
||||
},
|
||||
|
||||
canHibernate: function(asyncCallback) {
|
||||
Mainloop.idle_add(Lang.bind(this, function() {
|
||||
asyncCallback(this._upClient.get_can_hibernate());
|
||||
return false;
|
||||
}));
|
||||
},
|
||||
|
||||
powerOff: function() {
|
||||
this._proxy.StopRemote();
|
||||
},
|
||||
|
||||
reboot: function() {
|
||||
this._proxy.RestartRemote();
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
this._upClient.suspend_sync(null);
|
||||
},
|
||||
|
||||
hibernate: function() {
|
||||
this._upClient.hibernate_sync(null);
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -46,8 +46,70 @@ let _providersTable;
|
||||
function _getProvidersTable() {
|
||||
if (_providersTable)
|
||||
return _providersTable;
|
||||
let [providers, countryCodes] = Shell.mobile_providers_parse();
|
||||
return _providersTable = providers;
|
||||
return _providersTable = Shell.mobile_providers_parse(null,null);
|
||||
}
|
||||
|
||||
function findProviderForMCCMNC(table, needle) {
|
||||
let needlemcc = needle.substring(0, 3);
|
||||
let needlemnc = needle.substring(3, needle.length);
|
||||
|
||||
let name2, name3;
|
||||
for (let iter in table) {
|
||||
let country = table[iter];
|
||||
let providers = country.get_providers();
|
||||
|
||||
// Search through each country's providers
|
||||
for (let i = 0; i < providers.length; i++) {
|
||||
let provider = providers[i];
|
||||
|
||||
// Search through MCC/MNC list
|
||||
let list = provider.get_gsm_mcc_mnc();
|
||||
for (let j = 0; j < list.length; j++) {
|
||||
let mccmnc = list[j];
|
||||
|
||||
// Match both 2-digit and 3-digit MNC; prefer a
|
||||
// 3-digit match if found, otherwise a 2-digit one.
|
||||
if (mccmnc.mcc != needlemcc)
|
||||
continue; // MCC was wrong
|
||||
|
||||
if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
|
||||
name3 = provider.name;
|
||||
|
||||
if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
|
||||
name2 = provider.name;
|
||||
|
||||
if (name2 && name3)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return name3 || name2 || null;
|
||||
}
|
||||
|
||||
function findProviderForSid(table, sid) {
|
||||
if (sid == 0)
|
||||
return null;
|
||||
|
||||
// Search through each country
|
||||
for (let iter in table) {
|
||||
let country = table[iter];
|
||||
let providers = country.get_providers();
|
||||
|
||||
// Search through each country's providers
|
||||
for (let i = 0; i < providers.length; i++) {
|
||||
let provider = providers[i];
|
||||
let cdma_sid = provider.get_cdma_sid();
|
||||
|
||||
// Search through CDMA SID list
|
||||
for (let j = 0; j < cdma_sid.length; j++) {
|
||||
if (cdma_sid[j] == sid)
|
||||
return provider.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
const ModemGsm = new Lang.Class({
|
||||
@ -91,64 +153,29 @@ const ModemGsm = new Lang.Class({
|
||||
},
|
||||
|
||||
_findOperatorName: function(name, opCode) {
|
||||
if (name.length != 0 && (name.length > 6 || name.length < 5)) {
|
||||
// this looks like a valid name, i.e. not an MCCMNC (that some
|
||||
// devices return when not yet connected
|
||||
return name;
|
||||
}
|
||||
if (isNaN(parseInt(name))) {
|
||||
// name is definitely not a MCCMNC, so it may be a name
|
||||
// after all; return that
|
||||
return name;
|
||||
if (name) {
|
||||
if (name && name.length != 0 && (name.length > 6 || name.length < 5)) {
|
||||
// this looks like a valid name, i.e. not an MCCMNC (that some
|
||||
// devices return when not yet connected
|
||||
return name;
|
||||
}
|
||||
if (isNaN(parseInt(name))) {
|
||||
// name is definitely not a MCCMNC, so it may be a name
|
||||
// after all; return that
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
let needle;
|
||||
if (name.length == 0 && opCode)
|
||||
if ((name == null || name.length == 0) && opCode)
|
||||
needle = opCode;
|
||||
else if (name.length == 6 || name.length == 5)
|
||||
needle = name;
|
||||
else // nothing to search
|
||||
return null;
|
||||
|
||||
return this._findProviderForMCCMNC(needle);
|
||||
},
|
||||
|
||||
_findProviderForMCCMNC: function(needle) {
|
||||
let table = _getProvidersTable();
|
||||
let needlemcc = needle.substring(0, 3);
|
||||
let needlemnc = needle.substring(3, needle.length);
|
||||
|
||||
let name2, name3;
|
||||
for (let iter in table) {
|
||||
let providers = table[iter];
|
||||
|
||||
// Search through each country's providers
|
||||
for (let i = 0; i < providers.length; i++) {
|
||||
let provider = providers[i];
|
||||
|
||||
// Search through MCC/MNC list
|
||||
let list = provider.get_gsm_mcc_mnc();
|
||||
for (let j = 0; j < list.length; j++) {
|
||||
let mccmnc = list[j];
|
||||
|
||||
// Match both 2-digit and 3-digit MNC; prefer a
|
||||
// 3-digit match if found, otherwise a 2-digit one.
|
||||
if (mccmnc.mcc != needlemcc)
|
||||
continue; // MCC was wrong
|
||||
|
||||
if (!name3 && needle.length == 6 && needlemnc == mccmnc.mnc)
|
||||
name3 = provider.name;
|
||||
|
||||
if (!name2 && needlemnc.substring(0, 2) == mccmnc.mnc.substring(0, 2))
|
||||
name2 = provider.name;
|
||||
|
||||
if (name2 && name3)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return name3 || name2 || null;
|
||||
return findProviderForMCCMNC(table, needle);
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(ModemGsm.prototype);
|
||||
@ -189,39 +216,14 @@ const ModemCdma = new Lang.Class({
|
||||
this.operator_name = null;
|
||||
} else {
|
||||
let [bandClass, band, id] = result;
|
||||
if (name.length > 0)
|
||||
this.operator_name = this._findProviderForSid(id);
|
||||
else
|
||||
if (name.length > 0) {
|
||||
let table = _getProvidersTable();
|
||||
this.operator_name = findProviderForSid(table, id);
|
||||
} else
|
||||
this.operator_name = null;
|
||||
}
|
||||
this.emit('notify::operator-name');
|
||||
}));
|
||||
},
|
||||
|
||||
_findProviderForSid: function(sid) {
|
||||
if (sid == 0)
|
||||
return null;
|
||||
|
||||
let table = _getProvidersTable();
|
||||
|
||||
// Search through each country
|
||||
for (let iter in table) {
|
||||
let providers = table[iter];
|
||||
|
||||
// Search through each country's providers
|
||||
for (let i = 0; i < providers.length; i++) {
|
||||
let provider = providers[i];
|
||||
let cdma_sid = provider.get_cdma_sid();
|
||||
|
||||
// Search through CDMA SID list
|
||||
for (let j = 0; j < cdma_sid.length; j++) {
|
||||
if (cdma_sid[j] == sid)
|
||||
return provider.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(ModemCdma.prototype);
|
||||
|
@ -288,3 +288,31 @@ function insertSorted(array, val, cmp) {
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
/**
|
||||
* wrapKeybinding:
|
||||
*
|
||||
* Wrap a keybinding handler so that
|
||||
* it ignores an invocation if the shell is modal, but
|
||||
* not when the overview is active, or when global
|
||||
* keybindings are allowed by session mode.
|
||||
* This function is only useful for keybindings installed
|
||||
* with Meta.KeybindingFlags.HANDLE_WHEN_GRABBED
|
||||
*/
|
||||
function wrapKeybinding(handler, onlyInOverview) {
|
||||
return function() {
|
||||
let handle;
|
||||
|
||||
if (onlyInOverview) {
|
||||
handle = Main.sessionMode.allowKeybindingsWhenModal ||
|
||||
Main.modalCount == (Main.overview.visible ? 1 : 0);
|
||||
} else {
|
||||
handle = true;
|
||||
}
|
||||
|
||||
if (handle)
|
||||
return handler.apply(this, arguments);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -199,7 +199,7 @@ const AltTabPopup = new Lang.Class({
|
||||
this.actor.get_allocation_box();
|
||||
|
||||
// Make the initial selection
|
||||
if (binding == 'switch-group') {
|
||||
if (binding == 'internal-keybinding-switch-group') {
|
||||
if (backward) {
|
||||
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
||||
} else {
|
||||
@ -208,9 +208,9 @@ const AltTabPopup = new Lang.Class({
|
||||
else
|
||||
this._select(0, 0);
|
||||
}
|
||||
} else if (binding == 'switch-group-backward') {
|
||||
} else if (binding == 'internal-keybinding-switch-group-backward') {
|
||||
this._select(0, this._appIcons[0].cachedWindows.length - 1);
|
||||
} else if (binding == 'switch-windows-backward') {
|
||||
} else if (binding == 'internal-keybinding-switch-windows-backward') {
|
||||
this._select(this._appIcons.length - 1);
|
||||
} else if (this._appIcons.length == 1) {
|
||||
this._select(0);
|
||||
|
@ -479,7 +479,6 @@ const AppWellIcon = new Lang.Class({
|
||||
Lang.bind(this,
|
||||
this._onStateChanged));
|
||||
this._onStateChanged();
|
||||
this.isMenuUp = false;
|
||||
},
|
||||
|
||||
_onDestroy: function() {
|
||||
@ -561,7 +560,8 @@ const AppWellIcon = new Lang.Class({
|
||||
this._menuManager.addMenu(this._menu);
|
||||
}
|
||||
|
||||
this.isMenuUp = true;
|
||||
this.emit('menu-state-changed', true);
|
||||
|
||||
this.actor.set_hover(true);
|
||||
this._menu.popup();
|
||||
|
||||
@ -578,7 +578,7 @@ const AppWellIcon = new Lang.Class({
|
||||
|
||||
_onMenuPoppedDown: function() {
|
||||
this.actor.sync_hover();
|
||||
this.isMenuUp = false;
|
||||
this.emit('menu-state-changed', false);
|
||||
},
|
||||
|
||||
_onActivate: function (event) {
|
||||
|
@ -84,9 +84,12 @@ const AppFavorites = new Lang.Class({
|
||||
|
||||
let app = Shell.AppSystem.get_default().lookup_app(appId);
|
||||
|
||||
Main.overview.setMessage(_("%s has been added to your favorites.").format(app.get_name()), Lang.bind(this, function () {
|
||||
this._removeFavorite(appId);
|
||||
}));
|
||||
Main.overview.setMessage(_("%s has been added to your favorites.").format(app.get_name()),
|
||||
{ forFeedback: true,
|
||||
undoCallback: Lang.bind(this, function () {
|
||||
this._removeFavorite(appId);
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
addFavorite: function(appId) {
|
||||
@ -116,9 +119,11 @@ const AppFavorites = new Lang.Class({
|
||||
return;
|
||||
|
||||
Main.overview.setMessage(_("%s has been removed from your favorites.").format(app.get_name()),
|
||||
Lang.bind(this, function () {
|
||||
this._addFavorite(appId, pos);
|
||||
}));
|
||||
{ forFeedback: true,
|
||||
undoCallback: Lang.bind(this, function () {
|
||||
this._addFavorite(appId, pos);
|
||||
})
|
||||
});
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(AppFavorites.prototype);
|
||||
|
@ -141,6 +141,7 @@ const BoxPointer = new Lang.Class({
|
||||
|
||||
this._muteInput();
|
||||
|
||||
Tweener.removeTweens(this);
|
||||
Tweener.addTween(this, { opacity: fade ? 0 : 255,
|
||||
xOffset: xOffset,
|
||||
yOffset: yOffset,
|
||||
|
@ -270,8 +270,9 @@ const DBusEventSource = new Lang.Class({
|
||||
this._loadEvents(false);
|
||||
},
|
||||
|
||||
_onEventsReceived: function([appointments]) {
|
||||
_onEventsReceived: function(results, error) {
|
||||
let newEvents = [];
|
||||
let appointments = results ? results[0] : null;
|
||||
if (appointments != null) {
|
||||
for (let n = 0; n < appointments.length; n++) {
|
||||
let a = appointments[n];
|
||||
|
@ -44,6 +44,17 @@ function isMountRootHidden(root) {
|
||||
return (path.indexOf('/.') != -1);
|
||||
}
|
||||
|
||||
function isMountNonLocal(mount) {
|
||||
// If the mount doesn't have an associated volume, that means it's
|
||||
// an uninteresting filesystem. Most devices that we care about will
|
||||
// have a mount, like media players and USB sticks.
|
||||
let volume = mount.get_volume();
|
||||
if (volume == null)
|
||||
return true;
|
||||
|
||||
return (volume.get_identifier("class") == "network");
|
||||
}
|
||||
|
||||
function startAppForMount(app, mount) {
|
||||
let files = [];
|
||||
let root = mount.get_root();
|
||||
@ -83,13 +94,21 @@ const ContentTypeDiscoverer = new Lang.Class({
|
||||
|
||||
_init: function(callback) {
|
||||
this._callback = callback;
|
||||
this._settings = new Gio.Settings({ schema: SETTINGS_SCHEMA });
|
||||
},
|
||||
|
||||
guessContentTypes: function(mount) {
|
||||
// guess mount's content types using GIO
|
||||
mount.guess_content_type(false, null,
|
||||
Lang.bind(this,
|
||||
this._onContentTypeGuessed));
|
||||
let autorunEnabled = !this._settings.get_boolean(SETTING_DISABLE_AUTORUN);
|
||||
let shouldScan = autorunEnabled && !isMountNonLocal(mount);
|
||||
|
||||
if (shouldScan) {
|
||||
// guess mount's content types using GIO
|
||||
mount.guess_content_type(false, null,
|
||||
Lang.bind(this,
|
||||
this._onContentTypeGuessed));
|
||||
} else {
|
||||
this._emitCallback(mount, []);
|
||||
}
|
||||
},
|
||||
|
||||
_onContentTypeGuessed: function(mount, res) {
|
||||
@ -175,16 +194,21 @@ const AutorunManager = new Lang.Class({
|
||||
this._volumeMonitor.disconnect(this._mountRemovedId);
|
||||
},
|
||||
|
||||
_processMount: function(mount, hotplug) {
|
||||
let discoverer = new ContentTypeDiscoverer(Lang.bind(this, function(mount, apps, contentTypes) {
|
||||
this._ensureResidentSource();
|
||||
this._residentSource.addMount(mount, apps);
|
||||
|
||||
if (hotplug)
|
||||
this._transDispatcher.addMount(mount, apps, contentTypes);
|
||||
}));
|
||||
discoverer.guessContentTypes(mount);
|
||||
},
|
||||
|
||||
_scanMounts: function() {
|
||||
let mounts = this._volumeMonitor.get_mounts();
|
||||
mounts.forEach(Lang.bind(this, function (mount) {
|
||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
||||
function (mount, apps) {
|
||||
this._ensureResidentSource();
|
||||
this._residentSource.addMount(mount, apps);
|
||||
}));
|
||||
|
||||
discoverer.guessContentTypes(mount);
|
||||
mounts.forEach(Lang.bind(this, function(mount) {
|
||||
this._processMount(mount, false);
|
||||
}));
|
||||
},
|
||||
|
||||
@ -194,14 +218,7 @@ const AutorunManager = new Lang.Class({
|
||||
if (!this._loginManager.sessionActive)
|
||||
return;
|
||||
|
||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
||||
function (mount, apps, contentTypes) {
|
||||
this._transDispatcher.addMount(mount, apps, contentTypes);
|
||||
this._ensureResidentSource();
|
||||
this._residentSource.addMount(mount, apps);
|
||||
}));
|
||||
|
||||
discoverer.guessContentTypes(mount);
|
||||
this._processMount(mount, true);
|
||||
},
|
||||
|
||||
_onMountRemoved: function(monitor, mount) {
|
||||
@ -391,7 +408,7 @@ const AutorunResidentNotification = new Lang.Class({
|
||||
expand: true });
|
||||
|
||||
let ejectIcon =
|
||||
new St.Icon({ icon_name: 'media-eject',
|
||||
new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'hotplug-resident-eject-icon' });
|
||||
|
||||
let ejectButton =
|
||||
@ -527,9 +544,8 @@ const AutorunTransientSource = new Lang.Class({
|
||||
this.notify(this._notification);
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ gicon: this.mount.get_icon(),
|
||||
icon_size: size });
|
||||
getIcon: function() {
|
||||
return this.mount.get_icon();
|
||||
}
|
||||
});
|
||||
|
||||
@ -592,7 +608,7 @@ const AutorunTransientNotification = new Lang.Class({
|
||||
|
||||
_buttonForEject: function() {
|
||||
let box = new St.BoxLayout();
|
||||
let icon = new St.Icon({ icon_name: 'media-eject',
|
||||
let icon = new St.Icon({ icon_name: 'media-eject-symbolic',
|
||||
style_class: 'hotplug-notification-item-icon' });
|
||||
box.add(icon);
|
||||
|
||||
|
647
js/ui/components/mediaKeysManager.js
Normal file
647
js/ui/components/mediaKeysManager.js
Normal file
@ -0,0 +1,647 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
const ShellMountOperation = imports.ui.shellMountOperation;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const INTERFACE_SETTINGS = 'org.gnome.desktop.interface';
|
||||
const POWER_SETTINGS = 'org.gnome.settings-daemon.plugins.power';
|
||||
const XSETTINGS_SETTINGS = 'org.gnome.settings-daemon.plugins.xsettings';
|
||||
const TOUCHPAD_SETTINGS = 'org.gnome.settings-daemon.peripherals.touchpad';
|
||||
const KEYBINDING_SETTINGS = 'org.gnome.settings-daemon.plugins.media-keys';
|
||||
const CUSTOM_KEYBINDING_SETTINGS = 'org.gnome.settings-daemon.plugins.media-keys.custom-keybinding';
|
||||
const A11Y_SETTINGS = 'org.gnome.desktop.a11y.applications';
|
||||
const MAGNIFIER_SETTINGS = 'org.gnome.desktop.a11y.magnifier';
|
||||
const INPUT_SOURCE_SETTINGS = 'org.gnome.desktop.input-sources';
|
||||
|
||||
const MediaKeysInterface = <interface name='org.gnome.SettingsDaemon.MediaKeys'>
|
||||
<method name='GrabMediaPlayerKeys'>
|
||||
<arg name='application' direction='in' type='s'/>
|
||||
<arg name='time' direction='in' type='u'/>
|
||||
</method>
|
||||
<method name='ReleaseMediaPlayerKeys'>
|
||||
<arg name='application' direction='in' type='s'/>
|
||||
</method>
|
||||
<signal name='MediaPlayerKeyPressed'>
|
||||
<arg name='application' type='s'/>
|
||||
<arg name='key' type='s'/>
|
||||
</signal>
|
||||
</interface>;
|
||||
|
||||
/* [ actionName, setting, hardcodedKeysym, overviewOnly, args ] */
|
||||
/* (overviewOnly means that the keybinding is handled when the shell is not
|
||||
modal, or when the overview is active, but not when other modal operations
|
||||
are active; otherwise the keybinding is always handled) */
|
||||
const DEFAULT_KEYBINDINGS = [
|
||||
[ 'doTouchpadToggle', null, 'XF86TouchpadToggle', false ],
|
||||
[ 'doTouchpadSet', null, 'XF86TouchpadOn', false, [ true ] ],
|
||||
[ 'doTouchpadSet', null, 'XF86TouchpadOff', false, [ false ] ],
|
||||
[ 'doMute', 'volume-mute', null, false, [ false ] ],
|
||||
[ 'doVolumeAdjust', 'volume-down', null, false, [ Clutter.ScrollDirection.DOWN, false ] ],
|
||||
[ 'doVolumeAdjust', 'volume-up', null, false, [ Clutter.ScrollDirection.UP, false ] ],
|
||||
[ 'doMute', null, '<Alt>XF86AudioMute', false, [ true ] ],
|
||||
[ 'doVolumeAdjust', null, '<Alt>XF86AudioLowerVolume', false, [ Clutter.ScrollDirection.DOWN, true ] ],
|
||||
[ 'doVolumeAdjust', null, '<Alt>XF86AudioRaiseVolume', false, [ Clutter.ScrollDirection.UP, true ] ],
|
||||
[ 'doLogout', 'logout', null, true ],
|
||||
[ 'doEject', 'eject', null, false ],
|
||||
[ 'doHome', 'home', null, true ],
|
||||
[ 'doLaunchMimeHandler', 'media', null, true, [ 'application/x-vorbis+ogg' ] ],
|
||||
[ 'doLaunchApp', 'calculator', null, true, [ 'gcalcltool.desktop' ] ],
|
||||
[ 'doLaunchApp', 'search', null, true, [ 'tracker-needle.desktop' ] ],
|
||||
[ 'doLaunchMimeHandler', 'email', null, true, [ 'x-scheme-handler/mailto' ] ],
|
||||
[ 'doScreensaver', 'screensaver', null, true ],
|
||||
[ 'doScreensaver', null, 'XF86ScreenSaver', true ],
|
||||
[ 'doLaunchApp', 'help', null, true, [ 'yelp.desktop' ] ],
|
||||
[ 'doSpawn', 'screenshot', null, true, [ ['gnome-screenshot'] ] ],
|
||||
[ 'doSpawn', 'window-screenshot', null, true, [ ['gnome-screenshot', '--window'] ] ],
|
||||
[ 'doSpawn', 'area-screenshot', null, true, [ ['gnome-screenshot', '--area'] ] ],
|
||||
[ 'doSpawn', 'screenshot-clip', null, true, [ ['gnome-screenshot', '--clipboard'] ] ],
|
||||
[ 'doSpawn', 'window-screenshot-clip', null, true, [ ['gnome-screenshot', '--window', '--clipboard'] ] ],
|
||||
[ 'doSpawn', 'area-screenshot-clip', null, true, [ ['gnome-screenshot', '--area', '--clipboard'] ] ],
|
||||
[ 'doLaunchMimeHandler', 'www', null, true, [ 'x-scheme-handler/http' ] ],
|
||||
[ 'doMediaKey', 'play', null, true, [ 'Play' ] ],
|
||||
[ 'doMediaKey', 'pause', null, true, [ 'Pause' ] ],
|
||||
[ 'doMediaKey', 'stop', null, true, [ 'Stop' ] ],
|
||||
[ 'doMediaKey', 'previous', null, true, [ 'Previous' ] ],
|
||||
[ 'doMediaKey', 'next', null, true, [ 'Next' ] ],
|
||||
[ 'doMediaKey', null, 'XF86AudioRewind', true, [ 'Rewind' ] ],
|
||||
[ 'doMediaKey', null, 'XF86AudioForward', true, [ 'FastForward' ] ],
|
||||
[ 'doMediaKey', null, 'XF86AudioRepeat', true, [ 'Repeat' ] ],
|
||||
[ 'doMediaKey', null, 'XF86AudioRandomPlay', true, [ 'Shuffle' ] ],
|
||||
[ 'doXRandRAction', null, '<Super>p', false, [ 'VideoModeSwitch' ] ],
|
||||
/* Key code of the XF86Display key (Fn-F7 on Thinkpads, Fn-F4 on HP machines, etc.) */
|
||||
[ 'doXRandRAction', null, 'XF86Display', false, [ 'VideoModeSwitch' ] ],
|
||||
/* Key code of the XF86RotateWindows key (present on some tablets) */
|
||||
[ 'doXRandRAction', null, 'XF86RotateWindows', false, [ 'Rotate' ] ],
|
||||
[ 'doA11yAction', 'magnifier', null, true, [ 'screen-magnifier-enabled' ] ],
|
||||
[ 'doA11yAction', 'screenreader', null, true, [ 'screen-reader-enabled' ] ],
|
||||
[ 'doA11yAction', 'on-screen-keyboard', null, true, [ 'screen-keyboard-enabled' ] ],
|
||||
[ 'doTextSize', 'increase-text-size', null, true, [ 1 ] ],
|
||||
[ 'doTextSize', 'decrease-text-size', null, true, [ -1 ] ],
|
||||
[ 'doToggleContrast', 'toggle-contrast', null, true ],
|
||||
[ 'doMagnifierZoom', 'magnifier-zoom-in', null, true, [ 1 ] ],
|
||||
[ 'doMagnifierZoom', 'magnifier-zoom-out', null, true, [ -1 ] ],
|
||||
[ 'doPowerAction', null, 'XF86PowerOff', true, [ 'button-power' ] ],
|
||||
/* the kernel / Xorg names really are like this... */
|
||||
[ 'doPowerAction', null, 'XF86Suspend', false, [ 'button-sleep' ] ],
|
||||
[ 'doPowerAction', null, 'XF86Sleep', false, [ 'button-suspend' ] ],
|
||||
[ 'doPowerAction', null, 'XF86Hibernate', false, [ 'button-hibernate' ] ],
|
||||
[ 'doBrightness', null, 'XF86MonBrightnessUp', false, [ 'Screen', 'StepUp' ] ],
|
||||
[ 'doBrightness', null, 'XF86MonBrightnessDown', false, [ 'Screen', 'StepDown' ] ],
|
||||
[ 'doBrightness', null, 'XF86KbdBrightnessUp', false, [ 'Keyboard', 'StepUp' ] ],
|
||||
[ 'doBrightness', null, 'XF86KbdBrightnessDown', false, [ 'Keyboard', 'StepDown' ] ],
|
||||
[ 'doBrightnessToggle', null, 'XF86KbdLightOnOff', false, ],
|
||||
[ 'doInputSource', 'switch-input-source', null, false, [ +1 ] ],
|
||||
[ 'doInputSource', 'switch-input-source-backward', null, false, [ -1 ] ],
|
||||
[ 'doLaunchApp', null, 'XF86Battery', true, [ 'gnome-power-statistics.desktop' ] ]
|
||||
];
|
||||
|
||||
var osdWin;
|
||||
const OSDWindow = new Lang.Class({
|
||||
Name: 'OSDWindow',
|
||||
|
||||
FADE_TIMEOUT: 1500,
|
||||
FADE_DURATION: 100,
|
||||
|
||||
_init: function(iconName, value) {
|
||||
/* assume 130x130 on a 640x480 display and scale from there */
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
let scalew = monitor.width / 640.0;
|
||||
let scaleh = monitor.height / 480.0;
|
||||
let scale = Math.min(scalew, scaleh);
|
||||
let size = 130 * Math.max(1, scale);
|
||||
|
||||
this.actor = new St.BoxLayout({ style_class: 'osd-window',
|
||||
vertical: true,
|
||||
reactive: false,
|
||||
visible: false,
|
||||
width: size,
|
||||
height: size,
|
||||
});
|
||||
|
||||
this._icon = new St.Icon({ icon_name: iconName,
|
||||
icon_size: size / 2,
|
||||
});
|
||||
this.actor.add(this._icon, { expand: true,
|
||||
x_align: St.Align.MIDDLE,
|
||||
y_align: St.Align.MIDDLE });
|
||||
|
||||
this._value = value;
|
||||
this._progressBar = new St.DrawingArea({ style_class: 'osd-progress-bar' });
|
||||
this._progressBar.connect('repaint', Lang.bind(this, this._drawProgress));
|
||||
this.actor.add(this._progressBar, { expand: true, x_fill: true, y_fill: false });
|
||||
this._progressBar.visible = value !== undefined;
|
||||
|
||||
Main.layoutManager.addChrome(this.actor);
|
||||
|
||||
/* Position in the middle of primary monitor */
|
||||
let [width, height] = this.actor.get_size();
|
||||
this.actor.x = ((monitor.width - width) / 2) + monitor.x;
|
||||
this.actor.y = monitor.y + (monitor.height / 2) + (monitor.height / 2 - height) / 2;
|
||||
},
|
||||
|
||||
show: function() {
|
||||
this.actor.show();
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 255,
|
||||
time: this.FADE_DURATION / 1000,
|
||||
transition: 'easeInQuad' });
|
||||
|
||||
if (this._timeoutId)
|
||||
GLib.source_remove(this._timeoutId);
|
||||
|
||||
this._timeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT, this.FADE_TIMEOUT, Lang.bind(this, this.hide));
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 0,
|
||||
time: this.FADE_DURATION / 1000,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
this.actor.destroy();
|
||||
this.actor = null;
|
||||
osdWin = null;
|
||||
},
|
||||
onCompleteScope: this });
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
setIcon: function(name) {
|
||||
this._icon.icon_name = name;
|
||||
},
|
||||
|
||||
setValue: function(value) {
|
||||
if (value == this._value)
|
||||
return;
|
||||
|
||||
this._value = value;
|
||||
this._progressBar.visible = value !== undefined;
|
||||
this._progressBar.queue_repaint();
|
||||
},
|
||||
|
||||
_drawProgress: function(area) {
|
||||
let cr = area.get_context();
|
||||
|
||||
let themeNode = this.actor.get_theme_node();
|
||||
let color = themeNode.get_foreground_color();
|
||||
Clutter.cairo_set_source_color(cr, color);
|
||||
|
||||
let [width, height] = area.get_surface_size();
|
||||
width = width * this._value;
|
||||
|
||||
cr.moveTo(0,0);
|
||||
cr.lineTo(width, 0);
|
||||
cr.lineTo(width, height);
|
||||
cr.lineTo(0, height);
|
||||
cr.fill();
|
||||
}
|
||||
});
|
||||
|
||||
function showOSD(icon, value) {
|
||||
if (osdWin) {
|
||||
osdWin.setIcon(icon);
|
||||
osdWin.setValue(value);
|
||||
} else {
|
||||
osdWin = new OSDWindow(icon, value);
|
||||
}
|
||||
|
||||
osdWin.show();
|
||||
}
|
||||
|
||||
const MediaKeysGrabber = new Lang.Class({
|
||||
Name: 'MediaKeysGrabber',
|
||||
|
||||
_init: function() {
|
||||
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(MediaKeysInterface, this);
|
||||
this._apps = [];
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SettingsDaemon/MediaKeys');
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
this._dbusImpl.unexport();
|
||||
},
|
||||
|
||||
GrabMediaPlayerKeysAsync: function(parameters, invocation) {
|
||||
let [appName, time] = parameters;
|
||||
|
||||
/* I'm not sure of this code, but it is in gnome-settings-daemon
|
||||
(letting alone that the introspection is wrong in glib...)
|
||||
*/
|
||||
if (time == Gdk.CURRENT_TIME) {
|
||||
let tv = new GLib.TimeVal;
|
||||
GLib.get_current_time(tv);
|
||||
time = tv.tv_sec * 1000 + tv.tv_usec / 1000;
|
||||
}
|
||||
|
||||
let pos = -1;
|
||||
for (let i = 0; i < this._apps.length; i++) {
|
||||
if (this._apps[i].appName == appName) {
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pos != -1)
|
||||
this._freeMediaPlayer(pos);
|
||||
|
||||
let app = {
|
||||
appName: appName,
|
||||
name: invocation.get_sender(),
|
||||
time: time,
|
||||
watchId: Gio.DBus.session.watch_name(invocation.get_sender(),
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
null,
|
||||
Lang.bind(this, this._onNameVanished)),
|
||||
};
|
||||
Util.insertSorted(this._apps, app, function(a, b) {
|
||||
return b.time-a.time;
|
||||
});
|
||||
|
||||
invocation.return_value(GLib.Variant.new('()', []));
|
||||
},
|
||||
|
||||
ReleaseMediaPlayerAsync: function(parameters, invocation) {
|
||||
let name = invocation.get_sender();
|
||||
let [appName] = parameters;
|
||||
|
||||
let pos = -1;
|
||||
for (let i = 0; i < this._apps.length; i++) {
|
||||
if (this._apps[i].appName == appName) {
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pos == -1) {
|
||||
for (let i = 0; i < this._apps.length; i++) {
|
||||
if (this._apps[i].name == name) {
|
||||
pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pos != -1)
|
||||
this._freeMediaPlayer(pos);
|
||||
|
||||
invocation.return_value(GLib.Variant.new('()', []));
|
||||
},
|
||||
|
||||
_freeMediaPlayer: function(pos) {
|
||||
let app = this._apps[pos];
|
||||
Gio.bus_unwatch_name(app.watchId)
|
||||
|
||||
this._apps.splice(pos, 1);
|
||||
},
|
||||
|
||||
mediaKeyPressed: function(key) {
|
||||
if (this._apps.length == 0) {
|
||||
showOSD('action-unavailable-symbolic');
|
||||
return;
|
||||
}
|
||||
|
||||
let app = this._apps[0];
|
||||
Gio.DBus.session.emit_signal(app.name,
|
||||
'/org/gnome/SettingsDaemon/MediaKeys',
|
||||
'org.gnome.SettingsDaemon.MediaKeys',
|
||||
'MediaPlayerKeyPressed',
|
||||
GLib.Variant.new('(ss)', [app.appName || '',
|
||||
key]));
|
||||
},
|
||||
});
|
||||
|
||||
const MediaKeysManager = new Lang.Class({
|
||||
Name: 'MediaKeysManager',
|
||||
|
||||
_init: function() {
|
||||
this._a11yControl = Main.panel.statusArea.a11y;
|
||||
this._volumeControl = Main.panel.statusArea.volume;
|
||||
this._userMenu = Main.panel.statusArea.userMenu;
|
||||
this._mediaPlayerKeys = new MediaKeysGrabber();
|
||||
|
||||
this._keybindingSettings = new Gio.Settings({ schema: KEYBINDING_SETTINGS });
|
||||
},
|
||||
|
||||
enable: function() {
|
||||
for (let i = 0; i < DEFAULT_KEYBINDINGS.length; i++) {
|
||||
let [action, setting, keyval, overviewOnly, args] = DEFAULT_KEYBINDINGS[i];
|
||||
let func = this[action];
|
||||
if (!func) {
|
||||
log('Keybinding action %s is missing'.format(action));
|
||||
continue;
|
||||
}
|
||||
|
||||
let name = setting ? setting : 'media-keys-keybindings-%d'.format(i);
|
||||
let ok;
|
||||
func = Util.wrapKeybinding(Lang.bind.apply(null, [this, func].concat(args)), overviewOnly);
|
||||
if (setting)
|
||||
ok = global.display.add_keybinding(setting, this._keybindingSettings,
|
||||
Meta.KeyBindingFlags.BUILTIN |
|
||||
Meta.KeyBindingFlags.IS_SINGLE |
|
||||
Meta.KeyBindingFlags.HANDLE_WHEN_GRABBED, func);
|
||||
else
|
||||
ok = global.display.add_grabbed_key(name, keyval,
|
||||
Meta.KeyBindingFlags.HANDLE_WHEN_GRABBED, func);
|
||||
|
||||
if (!ok)
|
||||
log('Installing keybinding %s failed'.format(name));
|
||||
}
|
||||
|
||||
this._customKeybindings = [];
|
||||
this._changedId = this._keybindingSettings.connect('changed::custom-keybindings',
|
||||
Lang.bind(this, this._reloadCustomKeybindings));
|
||||
this._reloadCustomKeybindings();
|
||||
|
||||
this._mediaPlayerKeys.enable();
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
for (let i = 0; i < DEFAULT_KEYBINDINGS.length; i++) {
|
||||
let [action, setting, keyval, overviewOnly, args] = DEFAULT_KEYBINDINGS[i];
|
||||
|
||||
let name = setting ? setting : 'media-keys-keybindings-%d'.format(i);
|
||||
if (setting)
|
||||
global.display.remove_keybinding(setting, this._keybindingSettings);
|
||||
else
|
||||
global.display.remove_grabbed_key(name);
|
||||
}
|
||||
|
||||
this._clearCustomKeybindings();
|
||||
this._keybindingSettings.disconnect(this._changedId);
|
||||
|
||||
this._mediaPlayerKeys.disable();
|
||||
},
|
||||
|
||||
_clearCustomKeybindings: function() {
|
||||
for (let i = 0; i < this._customKeybindings.length; i++)
|
||||
global.display.remove_keybinding('binding', this._customKeybindings[i]);
|
||||
|
||||
this._customKeybindings = [];
|
||||
},
|
||||
|
||||
_reloadCustomKeybindings: function() {
|
||||
this._clearCustomKeybindings();
|
||||
|
||||
let paths = this._keybindingSettings.get_strv('custom-keybindings');
|
||||
for (let i = 0; i < paths.length; i++) {
|
||||
let setting = new Gio.Settings({ schema: CUSTOM_KEYBINDING_SETTINGS,
|
||||
path: paths[i] });
|
||||
let func = Util.wrapKeybinding(Lang.bind(this, this.doCustom, setting), true);
|
||||
|
||||
global.display.add_keybinding('binding', setting,
|
||||
Meta.KeyBindingFlags.IS_SINGLE |
|
||||
Meta.KeyBindingFlags.HANDLE_WHEN_GRABBED, func);
|
||||
this._customKeybindings.push(setting);
|
||||
}
|
||||
},
|
||||
|
||||
doCustom: function(display, screen, window, binding, settings) {
|
||||
let command = settings.get_string('command');
|
||||
Util.spawnCommandLine(command);
|
||||
},
|
||||
|
||||
doTouchpadToggle: function(display, screen, window, binding) {
|
||||
let settings = new Gio.Settings({ schema: TOUCHPAD_SETTINGS });
|
||||
let enabled = settings.get_boolean('touchpad-enabled');
|
||||
|
||||
this.doTouchpadSet(display, screen, window, binding, !enabled);
|
||||
settings.set_boolean(!enabled);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
doTouchpadSet: function(display, screen, window, binding, enabled) {
|
||||
showOSD(enabled ? 'input-touchpad-symbolic' : 'touchpad-disabled-symbolic');
|
||||
return true;
|
||||
},
|
||||
|
||||
doMute: function(display, screen, window, binding, quiet) {
|
||||
let [icon, value] = this._volumeControl.volumeMenu.toggleMute(quiet);
|
||||
showOSD(icon, value);
|
||||
return true;
|
||||
},
|
||||
|
||||
doVolumeAdjust: function(display, screen, window, binding, direction, quiet) {
|
||||
let [icon, value] = this._volumeControl.volumeMenu.scroll(direction, quiet);
|
||||
showOSD(icon, value);
|
||||
return true;
|
||||
},
|
||||
|
||||
doLogout: function(display, screen, window, binding) {
|
||||
this._userMenu.logOut();
|
||||
return true;
|
||||
},
|
||||
|
||||
doEject: function(display, screen, window, binding) {
|
||||
let volumeMonitor = Gio.VolumeMonitor.get();
|
||||
|
||||
let drives = volumeMonitor.get_connected_drives();
|
||||
let score = 0, drive;
|
||||
for (let i = 0; i < drives.length; i++) {
|
||||
if (!drives[i].can_eject())
|
||||
continue;
|
||||
if (!drives[i].is_media_removable())
|
||||
continue;
|
||||
if (score < 1) {
|
||||
drive = drives[i];
|
||||
score = 1;
|
||||
}
|
||||
if (!drives[i].has_media())
|
||||
continue;
|
||||
if (score < 2) {
|
||||
drive = drives[i];
|
||||
score = 2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
showOSD('media-eject-custom-symbolic');
|
||||
|
||||
if (!drive)
|
||||
return true;
|
||||
|
||||
let mountOp = new ShellMountOperation.ShellMountOperation(drive);
|
||||
drive.eject_with_operation(Gio.MountUnmountFlags.FORCE,
|
||||
mountOp.mountOp, null, null);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
doHome: function() {
|
||||
let homeFile = Gio.file_new_for_path (GLib.get_home_dir());
|
||||
let homeUri = homeFile.get_uri();
|
||||
Gio.app_info_launch_default_for_uri(homeUri, null);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
doLaunchMimeHandler: function(display, screen, window, binding, mimeType) {
|
||||
let gioApp = Gio.AppInfo.get_default_for_type(mimeType, false);
|
||||
if (gioApp != null) {
|
||||
let app = Shell.AppSystem.get_default().lookup_app(gioApp.get_id());
|
||||
app.open_new_window(-1);
|
||||
} else {
|
||||
log('Could not find default application for \'%s\' mime-type'.format(mimeType));
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
doLaunchApp: function(display, screen, window, binding, appId) {
|
||||
let app = Shell.AppSystem.get_default().lookup_app(appId);
|
||||
app.open_new_window(-1);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
doScreensaver: function() {
|
||||
// FIXME: handled in house, to the screenshield!
|
||||
return true;
|
||||
},
|
||||
|
||||
doSpawn: function(display, screen, window, binding, argv) {
|
||||
Util.spawn(argv);
|
||||
return true;
|
||||
},
|
||||
|
||||
doMediaKey: function(display, screen, window, binding, key) {
|
||||
this._mediaPlayerKeys.mediaKeyPressed(key);
|
||||
},
|
||||
|
||||
_onXRandRFinished: function(connection, result) {
|
||||
connection.call_finish(result);
|
||||
this._XRandRCancellable = null;
|
||||
},
|
||||
|
||||
doXRandRAction: function(display, screen, window, binding, action) {
|
||||
if (this._XRandRCancellable)
|
||||
this._XRandRCancellable.cancel();
|
||||
|
||||
this._XRandRCancellable = new Gio.Cancellable();
|
||||
Gio.DBus.session.call('org.gnome.SettingsDaemon',
|
||||
'/org/gnome/SettingsDaemon/XRANDR',
|
||||
'org.gnome.SettingsDaemon.XRANDR_2',
|
||||
action,
|
||||
GLib.Variant.new('(x)', [global.get_current_time()]),
|
||||
null, /* reply type */
|
||||
Gio.DBusCallFlags.NONE,
|
||||
-1,
|
||||
this._XRandRCancellable,
|
||||
Lang.bind(this, this._onXRandRFinished));
|
||||
},
|
||||
|
||||
doA11yAction: function(display, screen, window, binding, key) {
|
||||
let settings = new Gio.Settings({ schema: A11Y_SETTINGS });
|
||||
let enabled = settings.get_boolean(key);
|
||||
settings.set_boolean(key, !enabled);
|
||||
},
|
||||
|
||||
doTextSize: function(display, screen, window, binding, multiplier) {
|
||||
// Same values used in the Seeing tab of the Universal Access panel
|
||||
const FACTORS = [ 0.75, 1.0, 1.25, 1.5 ];
|
||||
|
||||
// Figure out the current DPI scaling factor
|
||||
let settings = new Gio.Settings({ schema: INTERFACE_SETTINGS });
|
||||
let factor = settings.get_double('text-scaling-factor');
|
||||
factor += multiplier * 0.25;
|
||||
|
||||
/* Try to find a matching value */
|
||||
let distance = 1e6;
|
||||
let best = 1.0;
|
||||
for (let i = 0; i < FACTORS.length; i++) {
|
||||
let d = Math.abs(factor - FACTORS[i]);
|
||||
if (d < distance) {
|
||||
best = factors[i];
|
||||
distance = d;
|
||||
}
|
||||
}
|
||||
|
||||
if (best == 1.0)
|
||||
settings.reset('text-scaling-factor');
|
||||
else
|
||||
settings.set_double('text-scaling-factor', best);
|
||||
},
|
||||
|
||||
doToggleContrast: function(display, screen, window, binding) {
|
||||
this._a11yControl.toggleHighContrast();
|
||||
},
|
||||
|
||||
doMagnifierZoom: function(display, screen, window, binding, offset) {
|
||||
let settings = new Gio.Settings({ schema: MAGNIFIER_SETTINGS });
|
||||
|
||||
let value = settings.get_value('mag-factor');
|
||||
value = Math.round(value + offset);
|
||||
settings.set_value('mag-factor', value);
|
||||
},
|
||||
|
||||
doPowerAction: function(display, screen, window, binding, action) {
|
||||
let settings = new Gio.Settings({ schema: POWER_SETTINGS });
|
||||
switch (settings.get_string(action)) {
|
||||
case 'suspend':
|
||||
this._userMenu.suspend();
|
||||
break;
|
||||
case 'interactive':
|
||||
case 'shutdown':
|
||||
this._userMenu.shutdown();
|
||||
break;
|
||||
case 'hibernate':
|
||||
this._userMenu.hibernate();
|
||||
break;
|
||||
case 'blank':
|
||||
case 'default':
|
||||
default:
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
_onBrightnessFinished: function(connection, result, kind) {
|
||||
let [percentage] = connection.call_finish(result).deep_unpack();
|
||||
|
||||
let icon = kind == 'Keyboard' ? 'keyboard-brightness-symbolic' : 'display-brightness-symbolic';
|
||||
showOSD(icon, percentage / 100);
|
||||
},
|
||||
|
||||
doBrightness: function(display, screen, window, binding, kind, action) {
|
||||
let iface = 'org.gnome.SettingsDaemon.Power.' + kind;
|
||||
let objectPath = '/org/gnome/SettingsDaemon/Power';
|
||||
|
||||
Gio.DBus.session.call('org.gnome.SettingsDaemon',
|
||||
objectPath, iface, action,
|
||||
null, null, /* parameters, reply type */
|
||||
Gio.DBusCallFlags.NONE, -1, null,
|
||||
Lang.bind(this, this._onBrightnessFinished, kind));
|
||||
},
|
||||
|
||||
doInputSource: function(display, screen, window, binding, offset) {
|
||||
let settings = new Gio.Settings({ schema: INPUT_SOURCE_SETTINGS });
|
||||
|
||||
let current = settings.get_uint('current');
|
||||
let max = settings.get_strv('sources').length - 1;
|
||||
|
||||
current += offset;
|
||||
if (current < 0)
|
||||
current = 0;
|
||||
else if (current > max)
|
||||
current = max;
|
||||
|
||||
settings.set_uint('current', current);
|
||||
},
|
||||
});
|
||||
|
||||
const Component = MediaKeysManager;
|
@ -408,7 +408,10 @@ const VPNRequestHandler = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
cancel: function() {
|
||||
cancel: function(respond) {
|
||||
if (respond)
|
||||
this._agent.respond(this._requestId, Shell.NetworkAgentResponse.USER_CANCELED);
|
||||
|
||||
if (this._newStylePlugin && this._shellDialog) {
|
||||
this._shellDialog.close(global.get_current_time());
|
||||
this._shellDialog.destroy();
|
||||
@ -599,6 +602,16 @@ const NetworkAgent = new Lang.Class({
|
||||
},
|
||||
|
||||
disable: function() {
|
||||
let requestId;
|
||||
|
||||
for (requestId in this._dialogs)
|
||||
this._dialogs[requestId].cancel();
|
||||
this._dialogs = { };
|
||||
|
||||
for (requestId in this._vpnRequests)
|
||||
this._vpnRequests[requestId].cancel(true);
|
||||
this._vpnRequests = { };
|
||||
|
||||
this._native.unregister();
|
||||
},
|
||||
|
||||
@ -622,7 +635,7 @@ const NetworkAgent = new Lang.Class({
|
||||
this._dialogs[requestId].destroy();
|
||||
delete this._dialogs[requestId];
|
||||
} else if (this._vpnRequests[requestId]) {
|
||||
this._vpnRequests[requestId].cancel();
|
||||
this._vpnRequests[requestId].cancel(false);
|
||||
delete this._vpnRequests[requestId];
|
||||
}
|
||||
},
|
||||
|
@ -41,7 +41,7 @@ const Recorder = new Lang.Class({
|
||||
recorder.set_framerate(this._recorderSettings.get_int('framerate'));
|
||||
/* Translators: this is a filename used for screencast recording */
|
||||
// xgettext:no-c-format
|
||||
recorder.set_filename(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
|
||||
recorder.set_file_template(_("Screencast from %d %t") + '.' + this._recorderSettings.get_string('file-extension'));
|
||||
let pipeline = this._recorderSettings.get_string('pipeline');
|
||||
|
||||
if (!pipeline.match(/^\s*$/))
|
||||
@ -52,6 +52,8 @@ const Recorder = new Lang.Class({
|
||||
Meta.disable_unredirect_for_screen(global.screen);
|
||||
recorder.record();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -509,51 +509,42 @@ const ChatSource = new Lang.Class({
|
||||
this._notification.appendAliasChange(oldAlias, newAlias);
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
this._iconBox = new St.Bin({ style_class: 'avatar-box' });
|
||||
this._iconBox._size = size;
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
getIcon: function() {
|
||||
let file = this._contact.get_avatar_file();
|
||||
|
||||
if (file) {
|
||||
let uri = file.get_uri();
|
||||
this._iconBox.child = textureCache.load_uri_async(uri, this._iconBox._size, this._iconBox._size);
|
||||
return new Gio.FileIcon({ file: file });
|
||||
} else {
|
||||
this._iconBox.child = new St.Icon({ icon_name: 'avatar-default',
|
||||
icon_size: this._iconBox._size });
|
||||
return new Gio.ThemedIcon({ name: 'avatar-default' });
|
||||
}
|
||||
|
||||
return this._iconBox;
|
||||
},
|
||||
|
||||
createSecondaryIcon: function() {
|
||||
let iconBox = new St.Bin();
|
||||
iconBox.child = new St.Icon({ style_class: 'secondary-icon' });
|
||||
getSecondaryIcon: function() {
|
||||
let iconName;
|
||||
let presenceType = this._contact.get_presence_type();
|
||||
|
||||
switch (presenceType) {
|
||||
case Tp.ConnectionPresenceType.AVAILABLE:
|
||||
iconBox.child.icon_name = 'user-available';
|
||||
iconName = 'user-available';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.BUSY:
|
||||
iconBox.child.icon_name = 'user-busy';
|
||||
iconName = 'user-busy';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.OFFLINE:
|
||||
iconBox.child.icon_name = 'user-offline';
|
||||
iconName = 'user-offline';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.HIDDEN:
|
||||
iconBox.child.icon_name = 'user-invisible';
|
||||
iconName = 'user-invisible';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.AWAY:
|
||||
iconBox.child.icon_name = 'user-away';
|
||||
iconName = 'user-away';
|
||||
break;
|
||||
case Tp.ConnectionPresenceType.EXTENDED_AWAY:
|
||||
iconBox.child.icon_name = 'user-idle';
|
||||
iconName = 'user-idle';
|
||||
break;
|
||||
default:
|
||||
iconBox.child.icon_name = 'user-offline';
|
||||
iconName = 'user-offline';
|
||||
}
|
||||
return iconBox;
|
||||
return new Gio.ThemedIcon({ name: iconName });
|
||||
},
|
||||
|
||||
_updateAvatarIcon: function() {
|
||||
@ -564,7 +555,9 @@ const ChatSource = new Lang.Class({
|
||||
open: function(notification) {
|
||||
if (this._client.is_handling_channel(this._channel)) {
|
||||
// We are handling the channel, try to pass it to Empathy
|
||||
this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null);
|
||||
this._client.delegate_channels_async([this._channel],
|
||||
global.get_current_time(),
|
||||
'org.freedesktop.Telepathy.Client.Empathy.Chat', null);
|
||||
}
|
||||
else {
|
||||
// We are not the handler, just ask to present the channel
|
||||
@ -733,7 +726,7 @@ const ChatSource = new Lang.Class({
|
||||
|
||||
title = GLib.markup_escape_text(this.title, -1);
|
||||
|
||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryIcon: this.createSecondaryIcon() });
|
||||
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
|
||||
|
||||
if (message)
|
||||
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
|
||||
@ -761,7 +754,7 @@ const ChatNotification = new Lang.Class({
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source) {
|
||||
this.parent(source, source.title, null, { customContent: true, secondaryIcon: source.createSecondaryIcon() });
|
||||
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
|
||||
this.setResident(true);
|
||||
|
||||
this._responseEntry = new St.Entry({ style_class: 'chat-response',
|
||||
@ -778,16 +771,19 @@ const ChatNotification = new Lang.Class({
|
||||
this.emit('unfocused');
|
||||
}));
|
||||
|
||||
this._oldMaxScrollAdjustment = 0;
|
||||
this._createScrollArea();
|
||||
this._lastGroup = null;
|
||||
this._lastGroupActor = null;
|
||||
|
||||
// Keep track of the bottom position for the current adjustment and
|
||||
// force a scroll to the bottom if things change while we were at the
|
||||
// bottom
|
||||
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
|
||||
this._scrollArea.add_style_class_name('chat-notification-scrollview');
|
||||
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
|
||||
let currentValue = adjustment.value + adjustment.page_size;
|
||||
if (currentValue == this._oldMaxScrollAdjustment)
|
||||
if (adjustment.value == this._oldMaxScrollValue)
|
||||
this.scrollTo(St.Side.BOTTOM);
|
||||
this._oldMaxScrollAdjustment = adjustment.upper;
|
||||
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
|
||||
}));
|
||||
|
||||
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
|
||||
@ -939,24 +935,32 @@ const ChatNotification = new Lang.Class({
|
||||
|
||||
let format;
|
||||
|
||||
// Show a week day and time if date is in the last week
|
||||
if (daysAgo < 1 || (daysAgo < 7 && now.getDay() != date.getDay())) {
|
||||
/* Translators: this is a time format string followed by a date.
|
||||
If applicable, replace %X with a strftime format valid for your
|
||||
locale, without seconds. */
|
||||
// Show only the hour if date is on today
|
||||
if(daysAgo < 1){
|
||||
format = "<b>%H:%M</b>";
|
||||
}
|
||||
// Show the word "Yesterday" and time if date is on yesterday
|
||||
else if(daysAgo <2){
|
||||
/* Translators: this is a time format string followed by the word "Yesterday". i.e. "14:30 on Yesterday"*/
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent at <b>%X</b> on <b>%A</b>");
|
||||
format = _("<b>%H:%M</b> on Yesterday");
|
||||
}
|
||||
// Show a week day and time if date is in the last week
|
||||
else if (daysAgo < 7) {
|
||||
/* Translators: this is a time format string followed by a week day name. i.e. "14:30 on Monday*/
|
||||
// xgettext:no-c-format
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>");
|
||||
|
||||
} else if (date.getYear() == now.getYear()) {
|
||||
/* Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
shown when you get a chat message in the same year. */
|
||||
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25",
|
||||
shown when you get a chat message in the same year */
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>");
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>");
|
||||
} else {
|
||||
/* 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. */
|
||||
/* Translators: this is a time format in the style of "14:30 on Wednesday, May 25, 2012",
|
||||
shown when you get a chat message in a different year */
|
||||
// xgettext:no-c-format
|
||||
format = _("Sent on <b>%A</b>, <b>%B %d</b>, %Y");
|
||||
format = _("<b>%H:%M</b> on <b>%A</b>, <b>%B</b> <b>%d</b>, %Y");
|
||||
}
|
||||
|
||||
return date.toLocaleFormat(format);
|
||||
@ -969,8 +973,7 @@ const ChatNotification = new Lang.Class({
|
||||
let timeLabel = this._append({ body: this._formatTimestamp(lastMessageDate),
|
||||
group: 'meta',
|
||||
styles: ['chat-meta-message'],
|
||||
childProps: { expand: true, x_fill: false,
|
||||
x_align: St.Align.END },
|
||||
childProps: { expand: true, x_fill: false },
|
||||
noTimestamp: true,
|
||||
timestamp: lastMessageTime });
|
||||
|
||||
@ -1071,9 +1074,8 @@ const ApproverSource = new Lang.Class({
|
||||
this.parent();
|
||||
},
|
||||
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ gicon: this._gicon,
|
||||
icon_size: size });
|
||||
getIcon: function() {
|
||||
return this._gicon;
|
||||
}
|
||||
});
|
||||
|
||||
@ -1134,7 +1136,7 @@ const AudioVideoNotification = new Lang.Class({
|
||||
this.parent(source, title, null, { customContent: true });
|
||||
this.setResident(true);
|
||||
|
||||
this.addButton('reject', _("Reject"));
|
||||
this.addButton('reject', _("Decline"));
|
||||
/* translators: this is a button label (verb), not a noun */
|
||||
this.addButton('answer', _("Answer"));
|
||||
|
||||
|
@ -54,16 +54,17 @@ const CtrlAltTabManager = new Lang.Class({
|
||||
},
|
||||
|
||||
focusGroup: function(item) {
|
||||
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
|
||||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
|
||||
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
||||
|
||||
if (item.window)
|
||||
if (item.window) {
|
||||
Main.activateWindow(item.window);
|
||||
else if (item.focusCallback)
|
||||
} else if (item.focusCallback) {
|
||||
item.focusCallback();
|
||||
else
|
||||
} else {
|
||||
if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
|
||||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
|
||||
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
|
||||
|
||||
item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
}
|
||||
},
|
||||
|
||||
// Sort the items into a consistent order; panel first, tray last,
|
||||
|
165
js/ui/dash.js
165
js/ui/dash.js
@ -21,6 +21,17 @@ const DASH_ITEM_LABEL_SHOW_TIME = 0.15;
|
||||
const DASH_ITEM_LABEL_HIDE_TIME = 0.1;
|
||||
const DASH_ITEM_HOVER_TIMEOUT = 300;
|
||||
|
||||
function getAppFromSource(source) {
|
||||
if (source instanceof AppDisplay.AppWellIcon) {
|
||||
return source.app;
|
||||
} else if (source.metaWindow) {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
return tracker.get_window_app(source.metaWindow);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// A container like StBin, but taking the child's scale into account
|
||||
// when requesting a size
|
||||
const DashItemContainer = new Lang.Class({
|
||||
@ -36,7 +47,11 @@ const DashItemContainer = new Lang.Class({
|
||||
Lang.bind(this, this._allocate));
|
||||
this.actor._delegate = this;
|
||||
|
||||
this.label = null;
|
||||
this._labelText = "";
|
||||
this.label = new St.Label({ style_class: 'dash-label'});
|
||||
this.label.hide();
|
||||
Main.layoutManager.addChrome(this.label);
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
this.child = null;
|
||||
this._childScale = 1;
|
||||
@ -91,9 +106,10 @@ const DashItemContainer = new Lang.Class({
|
||||
},
|
||||
|
||||
showLabel: function() {
|
||||
if (this.label == null)
|
||||
if (!this._labelText)
|
||||
return;
|
||||
|
||||
this.label.set_text(this._labelText);
|
||||
this.label.opacity = 0;
|
||||
this.label.show();
|
||||
|
||||
@ -124,19 +140,11 @@ const DashItemContainer = new Lang.Class({
|
||||
},
|
||||
|
||||
setLabelText: function(text) {
|
||||
if (this.label == null) {
|
||||
this.label = new St.Label({ style_class: 'dash-label'});
|
||||
Main.layoutManager.addChrome(this.label);
|
||||
this.label.hide();
|
||||
}
|
||||
|
||||
this.label.set_text(text);
|
||||
this._labelText = text;
|
||||
this.child.accessible_name = text;
|
||||
},
|
||||
|
||||
hideLabel: function () {
|
||||
if (this.label == null)
|
||||
return;
|
||||
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 0,
|
||||
time: DASH_ITEM_LABEL_HIDE_TIME,
|
||||
@ -250,8 +258,7 @@ const ShowAppsIcon = new Lang.Class({
|
||||
this.toggleButton._delegate = this;
|
||||
|
||||
this.setChild(this.toggleButton);
|
||||
this.setHover(false);
|
||||
this.toggleButton.label_actor = this.label;
|
||||
this.setDragApp(null);
|
||||
},
|
||||
|
||||
_createIcon: function(size) {
|
||||
@ -262,31 +269,45 @@ const ShowAppsIcon = new Lang.Class({
|
||||
return this._iconActor;
|
||||
},
|
||||
|
||||
setHover: function(hovered) {
|
||||
this.toggleButton.set_hover(hovered);
|
||||
if (this._iconActor)
|
||||
this._iconActor.set_hover(hovered);
|
||||
_canRemoveApp: function(app) {
|
||||
if (app == null)
|
||||
return false;
|
||||
|
||||
if (hovered)
|
||||
let id = app.get_id();
|
||||
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
|
||||
return isFavorite;
|
||||
},
|
||||
|
||||
setDragApp: function(app) {
|
||||
let canRemove = this._canRemoveApp(app);
|
||||
|
||||
this.toggleButton.set_hover(canRemove);
|
||||
if (this._iconActor)
|
||||
this._iconActor.set_hover(canRemove);
|
||||
|
||||
if (canRemove)
|
||||
this.setLabelText(_("Remove from Favorites"));
|
||||
else
|
||||
this.setLabelText(_("Show Applications"));
|
||||
},
|
||||
|
||||
// Rely on the dragged item being a favorite
|
||||
handleDragOver: function(source, actor, x, y, time) {
|
||||
let app = getAppFromSource(source);
|
||||
if (app == null)
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
let id = app.get_id();
|
||||
let isFavorite = AppFavorites.getAppFavorites().isFavorite(id);
|
||||
if (!isFavorite)
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
return DND.DragMotionResult.MOVE_DROP;
|
||||
},
|
||||
|
||||
acceptDrop: function(source, actor, x, y, time) {
|
||||
let app = null;
|
||||
if (source instanceof AppDisplay.AppWellIcon) {
|
||||
let appSystem = Shell.AppSystem.get_default();
|
||||
app = appSystem.lookup_app(source.getId());
|
||||
} else if (source.metaWindow) {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
app = tracker.get_window_app(source.metaWindow);
|
||||
}
|
||||
let app = getAppFromSource(source);
|
||||
if (app == null)
|
||||
return false;
|
||||
|
||||
let id = app.get_id();
|
||||
|
||||
@ -324,22 +345,21 @@ const DashActor = new Lang.Class({
|
||||
vfunc_allocate: function(box, flags) {
|
||||
let contentBox = this.get_theme_node().get_content_box(box);
|
||||
let availWidth = contentBox.x2 - contentBox.x1;
|
||||
let availHeight = contentBox.y2 - contentBox.y1;
|
||||
|
||||
this.set_allocation(box, flags);
|
||||
|
||||
let [appIcons, showAppsButton] = this.get_children();
|
||||
let [minHeight, natHeight] = showAppsButton.get_preferred_height(availWidth);
|
||||
let [showAppsMinHeight, showAppsNatHeight] = showAppsButton.get_preferred_height(availWidth);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = availWidth;
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = availHeight - natHeight;
|
||||
childBox.x1 = contentBox.x1;
|
||||
childBox.y1 = contentBox.y1;
|
||||
childBox.x2 = contentBox.x2;
|
||||
childBox.y2 = contentBox.y2 - showAppsNatHeight;
|
||||
appIcons.allocate(childBox, flags);
|
||||
|
||||
childBox.y1 = availHeight - natHeight;
|
||||
childBox.y2 = availHeight;
|
||||
childBox.y1 = contentBox.y2 - showAppsNatHeight;
|
||||
childBox.y2 = contentBox.y2;
|
||||
showAppsButton.allocate(childBox, flags);
|
||||
}
|
||||
});
|
||||
@ -383,7 +403,6 @@ const Dash = new Lang.Class({
|
||||
|
||||
this._workId = Main.initializeDeferredWork(this._box, Lang.bind(this, this._redisplay));
|
||||
|
||||
this._tracker = Shell.WindowTracker.get_default();
|
||||
this._appSystem = Shell.AppSystem.get_default();
|
||||
|
||||
this._appSystem.connect('installed-changed', Lang.bind(this, this._queueRedisplay));
|
||||
@ -426,31 +445,25 @@ const Dash = new Lang.Class({
|
||||
|
||||
_endDrag: function() {
|
||||
this._clearDragPlaceholder();
|
||||
this._showAppsIcon.setDragApp(null);
|
||||
DND.removeDragMonitor(this._dragMonitor);
|
||||
},
|
||||
|
||||
_onDragMotion: function(dragEvent) {
|
||||
let app = null;
|
||||
if (dragEvent.source instanceof AppDisplay.AppWellIcon)
|
||||
app = this._appSystem.lookup_app(dragEvent.source.getId());
|
||||
else if (dragEvent.source.metaWindow)
|
||||
app = this._tracker.get_window_app(dragEvent.source.metaWindow);
|
||||
else
|
||||
let app = getAppFromSource(dragEvent.source);
|
||||
if (app == null)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
let id = app.get_id();
|
||||
|
||||
let favorites = AppFavorites.getAppFavorites().getFavoriteMap();
|
||||
|
||||
let srcIsFavorite = (id in favorites);
|
||||
|
||||
let showAppsHovered =
|
||||
this._showAppsIcon.actor.contains(dragEvent.targetActor);
|
||||
|
||||
if (!this._box.contains(dragEvent.targetActor) || showAppsHovered)
|
||||
this._clearDragPlaceholder();
|
||||
|
||||
this._showAppsIcon.setHover(showAppsHovered);
|
||||
if (showAppsHovered)
|
||||
this._showAppsIcon.setDragApp(app);
|
||||
else
|
||||
this._showAppsIcon.setDragApp(null);
|
||||
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
@ -478,32 +491,51 @@ const Dash = new Lang.Class({
|
||||
},
|
||||
|
||||
_createAppItem: function(app) {
|
||||
let display = new AppDisplay.AppWellIcon(app,
|
||||
let appIcon = new AppDisplay.AppWellIcon(app,
|
||||
{ setSizeManually: true,
|
||||
showLabel: false });
|
||||
display._draggable.connect('drag-begin',
|
||||
appIcon._draggable.connect('drag-begin',
|
||||
Lang.bind(this, function() {
|
||||
display.actor.opacity = 50;
|
||||
appIcon.actor.opacity = 50;
|
||||
}));
|
||||
display._draggable.connect('drag-end',
|
||||
appIcon._draggable.connect('drag-end',
|
||||
Lang.bind(this, function() {
|
||||
display.actor.opacity = 255;
|
||||
appIcon.actor.opacity = 255;
|
||||
}));
|
||||
appIcon.connect('menu-state-changed',
|
||||
Lang.bind(this, function(appIcon, opened) {
|
||||
this._itemMenuStateChanged(item, opened);
|
||||
}));
|
||||
|
||||
let item = new DashItemContainer();
|
||||
item.setChild(display.actor);
|
||||
item.setChild(appIcon.actor);
|
||||
|
||||
// Override default AppWellIcon label_actor, now the
|
||||
// accessible_name is set at DashItemContainer.setLabelText
|
||||
appIcon.actor.label_actor = null;
|
||||
item.setLabelText(app.get_name());
|
||||
// Override default AppWellIcon label_actor
|
||||
display.actor.label_actor = item.label;
|
||||
display.icon.setIconSize(this.iconSize);
|
||||
|
||||
appIcon.icon.setIconSize(this.iconSize);
|
||||
this._hookUpLabel(item);
|
||||
|
||||
return item;
|
||||
},
|
||||
|
||||
_itemMenuStateChanged: function(item, opened) {
|
||||
// When the menu closes, it calls sync_hover, which means
|
||||
// that the notify::hover handler does everything we need to.
|
||||
if (opened) {
|
||||
if (this._showLabelTimeoutId > 0) {
|
||||
Mainloop.source_remove(this._showLabelTimeoutId);
|
||||
this._showLabelTimeoutId = 0;
|
||||
}
|
||||
|
||||
item.hideLabel();
|
||||
}
|
||||
},
|
||||
|
||||
_onHover: function (item) {
|
||||
if (item.child.get_hover() && !item.child._delegate.isMenuUp) {
|
||||
if (item.child.get_hover()) {
|
||||
if (this._showLabelTimeoutId == 0) {
|
||||
let timeout = this._labelShowing ? 0 : DASH_ITEM_HOVER_TIMEOUT;
|
||||
this._showLabelTimeoutId = Mainloop.timeout_add(timeout,
|
||||
@ -763,11 +795,7 @@ const Dash = new Lang.Class({
|
||||
},
|
||||
|
||||
handleDragOver : function(source, actor, x, y, time) {
|
||||
let app = null;
|
||||
if (source instanceof AppDisplay.AppWellIcon)
|
||||
app = this._appSystem.lookup_app(source.getId());
|
||||
else if (source.metaWindow)
|
||||
app = this._tracker.get_window_app(source.metaWindow);
|
||||
let app = getAppFromSource(source);
|
||||
|
||||
// Don't allow favoriting of transient apps
|
||||
if (app == null || app.is_window_backed())
|
||||
@ -848,12 +876,7 @@ const Dash = new Lang.Class({
|
||||
|
||||
// Draggable target interface
|
||||
acceptDrop : function(source, actor, x, y, time) {
|
||||
let app = null;
|
||||
if (source instanceof AppDisplay.AppWellIcon) {
|
||||
app = this._appSystem.lookup_app(source.getId());
|
||||
} else if (source.metaWindow) {
|
||||
app = this._tracker.get_window_app(source.metaWindow);
|
||||
}
|
||||
let app = getAppFromSource(source);
|
||||
|
||||
// Don't allow favoriting of transient apps
|
||||
if (app == null || app.is_window_backed()) {
|
||||
|
@ -89,8 +89,10 @@ const DateMenuButton = new Lang.Class({
|
||||
separator.setColumnWidths(1);
|
||||
vbox.add(separator.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||
|
||||
item.actor.show_on_set_parent = false;
|
||||
item.actor.can_focus = false;
|
||||
item.actor.reparent(vbox);
|
||||
this._dateAndTimeSeparator = separator;
|
||||
}
|
||||
|
||||
this._separator = new St.DrawingArea({ style_class: 'calendar-vertical-separator',
|
||||
@ -111,6 +113,11 @@ const DateMenuButton = new Lang.Class({
|
||||
this._openCalendarItem.actor.can_focus = false;
|
||||
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
|
||||
|
||||
this._calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
|
||||
this._calendarSettings.connect('changed::exec',
|
||||
Lang.bind(this, this._calendarSettingsChanged));
|
||||
this._calendarSettingsChanged();
|
||||
|
||||
// Whenever the menu is opened, select today
|
||||
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
|
||||
if (isOpen) {
|
||||
@ -144,10 +151,25 @@ const DateMenuButton = new Lang.Class({
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_calendarSettingsChanged: function() {
|
||||
let exec = this._calendarSettings.get_string('exec');
|
||||
let fullExec = GLib.find_program_in_path(exec);
|
||||
this._openCalendarItem.actor.visible = fullExec != null;
|
||||
},
|
||||
|
||||
_setEventsVisibility: function(visible) {
|
||||
this._openCalendarItem.actor.visible = visible;
|
||||
this._separator.visible = visible;
|
||||
this._eventList.visible = visible;
|
||||
this._openCalendarItem.visible = visible;
|
||||
if (visible) {
|
||||
let alignment = 0.25;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
alignment = 1.0 - alignment;
|
||||
this.menu._arrowAlignment = alignment;
|
||||
this._eventList.actor.get_parent().show();
|
||||
} else {
|
||||
this.menu._arrowAlignment = 0.5;
|
||||
this._eventList.actor.get_parent().hide();
|
||||
}
|
||||
},
|
||||
|
||||
_setEventSource: function(eventSource) {
|
||||
@ -165,6 +187,10 @@ const DateMenuButton = new Lang.Class({
|
||||
}
|
||||
this._setEventSource(eventSource);
|
||||
this._setEventsVisibility(showEvents);
|
||||
|
||||
// This needs to be handled manually, as the code to
|
||||
// autohide separators doesn't work across the vbox
|
||||
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
|
||||
},
|
||||
|
||||
_updateClockAndDate: function() {
|
||||
@ -179,14 +205,13 @@ const DateMenuButton = new Lang.Class({
|
||||
|
||||
_onOpenCalendarActivate: function() {
|
||||
this.menu.close();
|
||||
let calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
|
||||
let tool = calendarSettings.get_string('exec');
|
||||
let tool = this._calendarSettings.get_string('exec');
|
||||
if (tool.length == 0 || tool.substr(0, 9) == 'evolution') {
|
||||
// TODO: pass the selected day
|
||||
let app = Shell.AppSystem.get_default().lookup_app('evolution-calendar.desktop');
|
||||
app.activate();
|
||||
} else {
|
||||
let needTerm = calendarSettings.get_boolean('needs-term');
|
||||
let needTerm = this._calendarSettings.get_boolean('needs-term');
|
||||
if (needTerm) {
|
||||
let terminalSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.terminal' });
|
||||
let term = terminalSettings.get_string('exec');
|
||||
|
13
js/ui/dnd.js
13
js/ui/dnd.js
@ -235,6 +235,10 @@ const _Draggable = new Lang.Class({
|
||||
|
||||
if (this.actor._delegate && this.actor._delegate.getDragActor) {
|
||||
this._dragActor = this.actor._delegate.getDragActor(this._dragStartX, this._dragStartY);
|
||||
this._dragActor.reparent(Main.uiGroup);
|
||||
this._dragActor.raise_top();
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||
|
||||
// Drag actor does not always have to be the same as actor. For example drag actor
|
||||
// can be an image that's part of the actor. So to perform "snap back" correctly we need
|
||||
// to know what was the drag actor source.
|
||||
@ -263,12 +267,17 @@ const _Draggable = new Lang.Class({
|
||||
this._dragOffsetY = this._dragActor.y - this._dragStartY;
|
||||
} else {
|
||||
this._dragActor = this.actor;
|
||||
|
||||
this._dragActorSource = undefined;
|
||||
this._dragOrigParent = this.actor.get_parent();
|
||||
this._dragOrigX = this._dragActor.x;
|
||||
this._dragOrigY = this._dragActor.y;
|
||||
this._dragOrigScale = this._dragActor.scale_x;
|
||||
|
||||
this._dragActor.reparent(Main.uiGroup);
|
||||
this._dragActor.raise_top();
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||
|
||||
let [actorStageX, actorStageY] = this.actor.get_transformed_position();
|
||||
this._dragOffsetX = actorStageX - this._dragStartX;
|
||||
this._dragOffsetY = actorStageY - this._dragStartY;
|
||||
@ -280,10 +289,6 @@ const _Draggable = new Lang.Class({
|
||||
scaledHeight / this.actor.height);
|
||||
}
|
||||
|
||||
this._dragActor.reparent(Main.uiGroup);
|
||||
this._dragActor.raise_top();
|
||||
Shell.util_set_hidden_from_pick(this._dragActor, true);
|
||||
|
||||
this._dragOrigOpacity = this._dragActor.opacity;
|
||||
if (this._dragActorOpacity != undefined)
|
||||
this._dragActor.opacity = this._dragActorOpacity;
|
||||
|
@ -105,7 +105,7 @@ const restartDialogContent = {
|
||||
endDescription: _("Restarting the system."),
|
||||
confirmButtons: [{ signal: 'ConfirmedReboot',
|
||||
label: C_("button", "Restart") }],
|
||||
iconName: 'system-shutdown-symbolic',
|
||||
iconName: 'view-refresh-symbolic',
|
||||
iconStyleClass: 'end-session-dialog-shutdown-icon'
|
||||
};
|
||||
|
||||
|
@ -20,25 +20,6 @@ const KEYBOARD_TYPE = 'keyboard-type';
|
||||
const A11Y_APPLICATIONS_SCHEMA = 'org.gnome.desktop.a11y.applications';
|
||||
const SHOW_KEYBOARD = 'screen-keyboard-enabled';
|
||||
|
||||
// Key constants taken from Antler
|
||||
// FIXME: ought to be moved into libcaribou
|
||||
const PRETTY_KEYS = {
|
||||
'BackSpace': '\u232b',
|
||||
'space': ' ',
|
||||
'Return': '\u23ce',
|
||||
'Caribou_Prefs': '\u2328',
|
||||
'Caribou_ShiftUp': '\u2b06',
|
||||
'Caribou_ShiftDown': '\u2b07',
|
||||
'Caribou_Emoticons': '\u263a',
|
||||
'Caribou_Symbols': '123',
|
||||
'Caribou_Symbols_More': '{#*',
|
||||
'Caribou_Alpha': 'Abc',
|
||||
'Tab': 'Tab',
|
||||
'Escape': 'Esc',
|
||||
'Control_L': 'Ctrl',
|
||||
'Alt_L': 'Alt'
|
||||
};
|
||||
|
||||
const CaribouKeyboardIface = <interface name='org.gnome.Caribou.Keyboard'>
|
||||
<method name='Show'>
|
||||
<arg type='u' direction='in' />
|
||||
@ -98,17 +79,7 @@ const Key = new Lang.Class({
|
||||
},
|
||||
|
||||
_makeKey: function () {
|
||||
let label = this._key.name;
|
||||
|
||||
if (label.length > 1) {
|
||||
let pretty = PRETTY_KEYS[label];
|
||||
if (pretty)
|
||||
label = pretty;
|
||||
else
|
||||
label = this._getUnichar(this._key);
|
||||
}
|
||||
|
||||
label = GLib.markup_escape_text(label, -1);
|
||||
let label = GLib.markup_escape_text(this._key.label, -1);
|
||||
let button = new St.Button ({ label: label,
|
||||
style_class: 'keyboard-key' });
|
||||
|
||||
|
@ -43,6 +43,8 @@ const MonitorConstraint = new Lang.Class({
|
||||
},
|
||||
|
||||
set primary(v) {
|
||||
if (v)
|
||||
this._index = -1;
|
||||
this._primary = v;
|
||||
if (this.actor)
|
||||
this.actor.queue_relayout();
|
||||
@ -54,6 +56,7 @@ const MonitorConstraint = new Lang.Class({
|
||||
},
|
||||
|
||||
set index(v) {
|
||||
this._primary = false;
|
||||
this._index = v;
|
||||
if (this.actor)
|
||||
this.actor.queue_relayout();
|
||||
@ -101,7 +104,7 @@ const LayoutManager = new Lang.Class({
|
||||
this.primaryMonitor = null;
|
||||
this.primaryIndex = -1;
|
||||
this._hotCorners = [];
|
||||
this._rootPixmap = null;
|
||||
this._background = null;
|
||||
this._leftPanelBarrier = 0;
|
||||
this._rightPanelBarrier = 0;
|
||||
this._trayBarrier = 0;
|
||||
@ -125,8 +128,6 @@ const LayoutManager = new Lang.Class({
|
||||
this.trayBox = new St.Widget({ name: 'trayBox',
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
this.addChrome(this.trayBox);
|
||||
this.trayBox.connect('allocation-changed',
|
||||
Lang.bind(this, this._updateTrayBarrier));
|
||||
|
||||
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
|
||||
reactive: true,
|
||||
@ -277,22 +278,6 @@ const LayoutManager = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_updateTrayBarrier: function() {
|
||||
let monitor = this.bottomMonitor;
|
||||
|
||||
if (this._trayBarrier)
|
||||
global.destroy_pointer_barrier(this._trayBarrier);
|
||||
|
||||
if (Main.messageTray) {
|
||||
this._trayBarrier =
|
||||
global.create_pointer_barrier(monitor.x + monitor.width, monitor.y + monitor.height - Main.messageTray.actor.height,
|
||||
monitor.x + monitor.width, monitor.y + monitor.height,
|
||||
4 /* BarrierNegativeX */);
|
||||
} else {
|
||||
this._trayBarrier = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_monitorsChanged: function() {
|
||||
this._updateMonitors();
|
||||
this._updateBoxes();
|
||||
@ -330,30 +315,30 @@ const LayoutManager = new Lang.Class({
|
||||
// to the greeter. Otherwise, we'll just animate the panel,
|
||||
// as usual.
|
||||
if (Main.sessionMode.isGreeter) {
|
||||
this._rootPixmap = global.create_xrootpmap_texture();
|
||||
if (this._rootPixmap != null) {
|
||||
Main.uiGroup.add_actor(this._rootPixmap);
|
||||
Tweener.addTween(this._rootPixmap,
|
||||
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||
if (this._background != null) {
|
||||
Main.uiGroup.add_actor(this._background);
|
||||
Tweener.addTween(this._background,
|
||||
{ opacity: 0,
|
||||
time: PLYMOUTH_TRANSITION_TIME,
|
||||
transition: 'linear',
|
||||
onComplete: this._fadeRootpmapComplete,
|
||||
onComplete: this._fadeBackgroundComplete,
|
||||
onCompleteScope: this });
|
||||
plymouthTransitionRunning = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!plymouthTransitionRunning)
|
||||
this._fadeRootpmapComplete();
|
||||
this._fadeBackgroundComplete();
|
||||
},
|
||||
|
||||
_fadeRootpmapComplete: function() {
|
||||
_fadeBackgroundComplete: function() {
|
||||
// Don't animate the strut
|
||||
this._chrome.freezeUpdateRegions();
|
||||
|
||||
if (this._rootPixmap != null) {
|
||||
this._rootPixmap.destroy();
|
||||
this._rootPixmap = null;
|
||||
if (this._background != null) {
|
||||
this._background.destroy();
|
||||
this._background = null;
|
||||
}
|
||||
|
||||
Tweener.addTween(this.panelBox,
|
||||
@ -781,10 +766,13 @@ const Chrome = new Lang.Class({
|
||||
|
||||
_actorReparented: function(actor, oldParent) {
|
||||
let newParent = actor.get_parent();
|
||||
if (!newParent)
|
||||
if (!newParent) {
|
||||
this._untrackActor(actor);
|
||||
else
|
||||
} else {
|
||||
let i = this._findActor(actor);
|
||||
let actorData = this._trackedActors[i];
|
||||
actorData.isToplevel = (newParent == Main.uiGroup);
|
||||
}
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
|
@ -69,7 +69,7 @@ let _overridesSettings = null;
|
||||
let background = null;
|
||||
|
||||
function _sessionUpdated() {
|
||||
Meta.keybindings_set_custom_handler('panel-run-dialog', sessionMode.hasRunDialog ? openRunDialog : null);
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-panel-run-dialog', sessionMode.hasRunDialog ? Util.wrapKeybinding(openRunDialog, true) : null);
|
||||
if (sessionMode.isGreeter)
|
||||
screenShield.showDialog();
|
||||
}
|
||||
@ -155,8 +155,14 @@ function start() {
|
||||
|
||||
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT,
|
||||
false, -1, 1);
|
||||
Meta.keybindings_set_custom_handler('panel-main-menu', Lang.bind(overview, overview.toggle));
|
||||
global.display.connect('overlay-key', Lang.bind(overview, overview.toggle));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-panel-main-menu', Util.wrapKeybinding(Lang.bind(overview, function() {
|
||||
this.toggle();
|
||||
return true;
|
||||
}), true));
|
||||
global.display.connect('overlay-key', Util.wrapKeybinding(Lang.bind(overview, function() {
|
||||
this.toggle();
|
||||
return true;
|
||||
}), true));
|
||||
|
||||
sessionMode.connect('update', _sessionUpdated);
|
||||
_sessionUpdated();
|
||||
@ -167,8 +173,6 @@ function start() {
|
||||
|
||||
_startDate = new Date();
|
||||
|
||||
global.stage.connect('captured-event', _globalKeyPressHandler);
|
||||
|
||||
log('GNOME Shell started at ' + _startDate);
|
||||
|
||||
let perfModuleName = GLib.getenv("SHELL_PERF_MODULE");
|
||||
@ -465,80 +469,6 @@ function getWindowActorsForWorkspace(workspaceIndex) {
|
||||
});
|
||||
}
|
||||
|
||||
// This function encapsulates hacks to make certain global keybindings
|
||||
// work even when we are in one of our modes where global keybindings
|
||||
// are disabled with a global grab. (When there is a global grab, then
|
||||
// all key events will be delivered to the stage, so ::captured-event
|
||||
// on the stage can be used for global keybindings.)
|
||||
function _globalKeyPressHandler(actor, event) {
|
||||
if (modalCount == 0)
|
||||
return false;
|
||||
if (event.type() != Clutter.EventType.KEY_PRESS)
|
||||
return false;
|
||||
|
||||
if (!sessionMode.allowKeybindingsWhenModal) {
|
||||
if (modalCount > (overview.visible ? 1 : 0))
|
||||
return false;
|
||||
}
|
||||
|
||||
let symbol = event.get_key_symbol();
|
||||
let keyCode = event.get_key_code();
|
||||
let ignoredModifiers = global.display.get_ignored_modifier_mask();
|
||||
let modifierState = event.get_state() & ~ignoredModifiers;
|
||||
|
||||
// This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType
|
||||
let action = global.display.get_keybinding_action(keyCode, modifierState);
|
||||
|
||||
if (action == Meta.KeyBindingAction.SWITCH_PANELS) {
|
||||
ctrlAltTabManager.popup(modifierState & Clutter.ModifierType.SHIFT_MASK,
|
||||
modifierState);
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (action) {
|
||||
// left/right would effectively act as synonyms for up/down if we enabled them;
|
||||
// but that could be considered confusing; we also disable them in the main view.
|
||||
//
|
||||
// case Meta.KeyBindingAction.WORKSPACE_LEFT:
|
||||
// if (!sessionMode.hasWorkspaces)
|
||||
// return false;
|
||||
//
|
||||
// wm.actionMoveWorkspaceLeft();
|
||||
// return true;
|
||||
// case Meta.KeyBindingAction.WORKSPACE_RIGHT:
|
||||
// if (!sessionMode.hasWorkspaces)
|
||||
// return false;
|
||||
//
|
||||
// wm.actionMoveWorkspaceRight();
|
||||
// return true;
|
||||
case Meta.KeyBindingAction.WORKSPACE_UP:
|
||||
if (!sessionMode.hasWorkspaces)
|
||||
return false;
|
||||
|
||||
wm.actionMoveWorkspace(Meta.MotionDirection.UP);
|
||||
return true;
|
||||
case Meta.KeyBindingAction.WORKSPACE_DOWN:
|
||||
if (!sessionMode.hasWorkspaces)
|
||||
return false;
|
||||
|
||||
wm.actionMoveWorkspace(Meta.MotionDirection.DOWN);
|
||||
return true;
|
||||
case Meta.KeyBindingAction.PANEL_RUN_DIALOG:
|
||||
case Meta.KeyBindingAction.COMMAND_2:
|
||||
if (!sessionMode.hasRunDialog)
|
||||
return false;
|
||||
|
||||
openRunDialog();
|
||||
return true;
|
||||
case Meta.KeyBindingAction.PANEL_MAIN_MENU:
|
||||
case Meta.KeyBindingAction.OVERLAY_KEY:
|
||||
overview.hide();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function _findModal(actor) {
|
||||
for (let i = 0; i < modalActorFocusStack.length; i++) {
|
||||
if (modalActorFocusStack[i].actor == actor)
|
||||
@ -679,6 +609,8 @@ function openRunDialog() {
|
||||
runDialog = new RunDialog.RunDialog();
|
||||
}
|
||||
runDialog.open();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Atk = imports.gi.Atk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
@ -35,8 +36,6 @@ const LONGER_SUMMARY_TIMEOUT = 4;
|
||||
const HIDE_TIMEOUT = 0.2;
|
||||
const LONGER_HIDE_TIMEOUT = 0.6;
|
||||
|
||||
const NOTIFICATION_ICON_SIZE = 24;
|
||||
|
||||
// We delay hiding of the tray if the mouse is within MOUSE_LEFT_ACTOR_THRESHOLD
|
||||
// range from the point where it left the tray.
|
||||
const MOUSE_LEFT_ACTOR_THRESHOLD = 20;
|
||||
@ -143,14 +142,9 @@ const URLHighlighter = new Lang.Class({
|
||||
let url = this._urls[urlId].url;
|
||||
if (url.indexOf(':') == -1)
|
||||
url = 'http://' + url;
|
||||
try {
|
||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
|
||||
return true;
|
||||
} catch (e) {
|
||||
// TODO: remove this after gnome 3 release
|
||||
Util.spawn(['gvfs-open', url]);
|
||||
return true;
|
||||
}
|
||||
|
||||
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
@ -243,9 +237,7 @@ function makeCloseButton() {
|
||||
closeButton.connect('style-changed', function() {
|
||||
let themeNode = closeButton.get_theme_node();
|
||||
closeButton.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
|
||||
// libcroco doesn't support negative units
|
||||
closeButton.translation_y = -themeNode.get_length('-shell-close-overlap-y');
|
||||
closeButton.translation_y = themeNode.get_length('-shell-close-overlap-y');
|
||||
});
|
||||
|
||||
return closeButton;
|
||||
@ -291,9 +283,12 @@ function makeCloseButton() {
|
||||
// If @params contains a 'body' parameter, then that text will be added to
|
||||
// the content area (as with addBody()).
|
||||
//
|
||||
// By default, the icon shown is created by calling
|
||||
// source.createIcon(). However, if @params contains an 'icon'
|
||||
// parameter, the passed in icon will be used.
|
||||
// By default, the icon shown is the same as the source's.
|
||||
// However, if @params contains a 'gicon' parameter, the passed in gicon
|
||||
// will be used.
|
||||
//
|
||||
// You can add a secondary icon to the banner with 'secondaryGIcon'. There
|
||||
// is no fallback for this icon.
|
||||
//
|
||||
// If @params contains a 'titleMarkup', 'bannerMarkup', or
|
||||
// 'bodyMarkup' parameter with the value %true, then the corresponding
|
||||
@ -308,6 +303,8 @@ function makeCloseButton() {
|
||||
const Notification = new Lang.Class({
|
||||
Name: 'Notification',
|
||||
|
||||
ICON_SIZE: 24,
|
||||
|
||||
IMAGE_SIZE: 125,
|
||||
|
||||
_init: function(source, title, banner, params) {
|
||||
@ -317,6 +314,7 @@ const Notification = new Lang.Class({
|
||||
this.resident = false;
|
||||
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
|
||||
this.isTransient = false;
|
||||
this.forFeedback = false;
|
||||
this.expanded = false;
|
||||
this.focused = false;
|
||||
this.acknowledged = false;
|
||||
@ -391,8 +389,8 @@ const Notification = new Lang.Class({
|
||||
update: function(title, banner, params) {
|
||||
params = Params.parse(params, { customContent: false,
|
||||
body: null,
|
||||
icon: null,
|
||||
secondaryIcon: null,
|
||||
gicon: null,
|
||||
secondaryGIcon: null,
|
||||
titleMarkup: false,
|
||||
bannerMarkup: false,
|
||||
bodyMarkup: false,
|
||||
@ -402,12 +400,12 @@ const Notification = new Lang.Class({
|
||||
|
||||
let oldFocus = global.stage.key_focus;
|
||||
|
||||
if (this._icon && (params.icon || params.clear)) {
|
||||
if (this._icon && (params.gicon || params.clear)) {
|
||||
this._icon.destroy();
|
||||
this._icon = null;
|
||||
}
|
||||
|
||||
if (this._secondaryIcon && (params.secondaryIcon || params.clear)) {
|
||||
if (this._secondaryIcon && (params.secondaryGIcon || params.clear)) {
|
||||
this._secondaryIcon.destroy();
|
||||
this._secondaryIcon = null;
|
||||
}
|
||||
@ -437,8 +435,14 @@ const Notification = new Lang.Class({
|
||||
if (!this._scrollArea && !this._actionArea && !this._imageBin)
|
||||
this._table.remove_style_class_name('multi-line-notification');
|
||||
|
||||
if (!this._icon) {
|
||||
this._icon = params.icon || this.source.createIcon(NOTIFICATION_ICON_SIZE);
|
||||
if (params.gicon) {
|
||||
this._icon = new St.Icon({ gicon: params.gicon,
|
||||
icon_size: this.ICON_SIZE });
|
||||
} else {
|
||||
this._icon = this.source.createIcon(this.ICON_SIZE);
|
||||
}
|
||||
|
||||
if (this._icon) {
|
||||
this._table.add(this._icon, { row: 0,
|
||||
col: 0,
|
||||
x_expand: false,
|
||||
@ -447,11 +451,10 @@ const Notification = new Lang.Class({
|
||||
y_align: St.Align.START });
|
||||
}
|
||||
|
||||
if (!this._secondaryIcon) {
|
||||
this._secondaryIcon = params.secondaryIcon;
|
||||
|
||||
if (this._secondaryIcon)
|
||||
this._bannerBox.add_actor(this._secondaryIcon);
|
||||
if (params.secondaryGIcon) {
|
||||
this._secondaryIcon = new St.Icon({ gicon: params.secondaryGIcon,
|
||||
style_class: 'secondary-icon' });
|
||||
this._bannerBox.add_actor(this._secondaryIcon);
|
||||
}
|
||||
|
||||
this.title = title;
|
||||
@ -711,6 +714,10 @@ const Notification = new Lang.Class({
|
||||
this.isTransient = isTransient;
|
||||
},
|
||||
|
||||
setForFeedback: function(forFeedback) {
|
||||
this.forFeedback = forFeedback;
|
||||
},
|
||||
|
||||
setUseActionIcons: function(useIcons) {
|
||||
this._useActionIcons = useIcons;
|
||||
},
|
||||
@ -1114,10 +1121,14 @@ const Source = new Lang.Class({
|
||||
// Provides a sane default implementation, override if you need
|
||||
// something more fancy.
|
||||
createIcon: function(size) {
|
||||
return new St.Icon({ icon_name: this.iconName,
|
||||
return new St.Icon({ gicon: this.getIcon(),
|
||||
icon_size: size });
|
||||
},
|
||||
|
||||
getIcon: function() {
|
||||
return new Gio.ThemedIcon({ name: this.iconName });
|
||||
},
|
||||
|
||||
_ensureMainIcon: function() {
|
||||
if (this._mainIcon)
|
||||
return;
|
||||
@ -1231,12 +1242,6 @@ const SummaryItem = new Lang.Class({
|
||||
|
||||
this.notificationStackWidget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
|
||||
|
||||
this._closeButton = makeCloseButton();
|
||||
this._closeButton.connect('clicked', Lang.bind(this, function() {
|
||||
source.destroy();
|
||||
source.emit('done-displaying-content');
|
||||
}));
|
||||
|
||||
this.notificationStackView = new St.ScrollView({ style_class: source.isChat ? '' : 'summary-notification-stack-scrollview',
|
||||
vscrollbar_policy: source.isChat ? Gtk.PolicyType.NEVER : Gtk.PolicyType.AUTOMATIC,
|
||||
hscrollbar_policy: Gtk.PolicyType.NEVER });
|
||||
@ -1245,7 +1250,9 @@ const SummaryItem = new Lang.Class({
|
||||
vertical: true });
|
||||
this.notificationStackView.add_actor(this.notificationStack);
|
||||
this.notificationStackWidget.add_actor(this.notificationStackView);
|
||||
this.notificationStackWidget.add_actor(this._closeButton);
|
||||
|
||||
this.closeButton = makeCloseButton();
|
||||
this.notificationStackWidget.add_actor(this.closeButton);
|
||||
this._stackedNotifications = [];
|
||||
|
||||
this._oldMaxScrollAdjustment = 0;
|
||||
@ -1262,14 +1269,6 @@ const SummaryItem = new Lang.Class({
|
||||
global.focus_manager.add_group(this.rightClickMenu);
|
||||
},
|
||||
|
||||
get closeButtonVisible() {
|
||||
return this._closeButton.visible;
|
||||
},
|
||||
|
||||
set closeButtonVisible(v) {
|
||||
this._closeButton.visible = v;
|
||||
},
|
||||
|
||||
_onKeyPress: function(actor, event) {
|
||||
if (event.get_key_symbol() == Clutter.KEY_Up) {
|
||||
actor.emit('clicked', 1);
|
||||
@ -1395,6 +1394,8 @@ const MessageTray = new Lang.Class({
|
||||
y_expand: true,
|
||||
x_expand: true,
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
this._notificationWidget.connect('key-release-event', Lang.bind(this, this._onNotificationKeyRelease));
|
||||
|
||||
this.actor.add_actor(this._notificationWidget);
|
||||
|
||||
this._notificationBin = new St.Bin({ y_expand: true });
|
||||
@ -1444,13 +1445,13 @@ const MessageTray = new Lang.Class({
|
||||
|
||||
this._closeButton = makeCloseButton();
|
||||
this._closeButton.hide();
|
||||
this._closeButton.connect('clicked', Lang.bind(this, this._onCloseClicked));
|
||||
this._closeButton.connect('clicked', Lang.bind(this, this._closeNotification));
|
||||
this._notificationWidget.add_actor(this._closeButton);
|
||||
|
||||
this._idleMonitorWatchId = 0;
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
this._userActiveWhileNotificationShown = false;
|
||||
|
||||
this.idleMonitor = Shell.IdleMonitor.get();
|
||||
this.idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
|
||||
this._grabHelper = new GrabHelper.GrabHelper(this.actor);
|
||||
this._grabHelper.addActor(this._summaryBoxPointer.actor);
|
||||
@ -1483,7 +1484,6 @@ const MessageTray = new Lang.Class({
|
||||
this._reNotifyAfterHideNotification = null;
|
||||
this._inFullscreen = false;
|
||||
this._desktopClone = null;
|
||||
this._inCtrlAltTab = false;
|
||||
|
||||
this._lightbox = new Lightbox.Lightbox(global.window_group,
|
||||
{ inhibitEvents: true,
|
||||
@ -1515,12 +1515,16 @@ const MessageTray = new Lang.Class({
|
||||
this._updateState();
|
||||
}));
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._updateState));
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
|
||||
global.display.add_keybinding('toggle-message-tray',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Lang.bind(this, this.toggleAndNavigate));
|
||||
global.display.add_keybinding('focus-active-notification',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Lang.bind(this, this._expandActiveNotification));
|
||||
|
||||
this._summaryItems = [];
|
||||
this._chatSummaryItemsCount = 0;
|
||||
@ -1530,6 +1534,18 @@ const MessageTray = new Lang.Class({
|
||||
this._trayDwellTimeoutId = 0;
|
||||
this._trayDwelling = false;
|
||||
this._trayDwellUserTime = 0;
|
||||
|
||||
this._sessionUpdated();
|
||||
},
|
||||
|
||||
_sessionUpdated: function() {
|
||||
if (Main.sessionMode.isLocked || Main.sessionMode.isGreeter)
|
||||
Main.ctrlAltTabManager.removeGroup(this._summary);
|
||||
else
|
||||
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
|
||||
{ focusCallback: Lang.bind(this, this.toggleAndNavigate),
|
||||
sortGroup: CtrlAltTab.SortGroup.BOTTOM });
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_checkTrayDwell: function(x, y) {
|
||||
@ -1584,14 +1600,23 @@ const MessageTray = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onCloseClicked: function() {
|
||||
_onNotificationKeyRelease: function(actor, event) {
|
||||
let ignoredModifiers = global.display.get_ignored_modifier_mask();
|
||||
let modifierState = event.get_state() & ~ignoredModifiers;
|
||||
|
||||
if (event.get_key_symbol() == Clutter.KEY_Escape && modifierState == 0) {
|
||||
this._closeNotification();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
_closeNotification: function() {
|
||||
if (this._notificationState == State.SHOWN) {
|
||||
this._closeButton.hide();
|
||||
this._notificationClosed = true;
|
||||
this._notification.emit('done-displaying');
|
||||
|
||||
if (!this._notification.resident)
|
||||
this._notification.destroy();
|
||||
|
||||
this._updateState();
|
||||
this._notificationClosed = false;
|
||||
}
|
||||
},
|
||||
@ -1947,8 +1972,9 @@ const MessageTray = new Lang.Class({
|
||||
// Notifications
|
||||
let notificationQueue = this._notificationQueue;
|
||||
let notificationUrgent = notificationQueue.length > 0 && notificationQueue[0].urgency == Urgency.CRITICAL;
|
||||
let notificationForFeedback = notificationQueue.length > 0 && notificationQueue[0].forFeedback;
|
||||
let notificationsLimited = this._busy || this._inFullscreen;
|
||||
let notificationsPending = notificationQueue.length > 0 && (!notificationsLimited || notificationUrgent) && Main.sessionMode.hasNotifications;
|
||||
let notificationsPending = notificationQueue.length > 0 && (!notificationsLimited || notificationUrgent || notificationForFeedback) && Main.sessionMode.hasNotifications;
|
||||
let nextNotification = notificationQueue.length > 0 ? notificationQueue[0] : null;
|
||||
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
|
||||
let notificationExpanded = this._notification && this._notification.expanded;
|
||||
@ -2025,7 +2051,7 @@ const MessageTray = new Lang.Class({
|
||||
let trayShouldBeVisible = (this._summaryState == State.SHOWING ||
|
||||
this._summaryState == State.SHOWN);
|
||||
if (!trayIsVisible && trayShouldBeVisible)
|
||||
this._showTray();
|
||||
trayShouldBeVisible = this._showTray();
|
||||
else if (trayIsVisible && !trayShouldBeVisible)
|
||||
this._hideTray();
|
||||
|
||||
@ -2075,7 +2101,7 @@ const MessageTray = new Lang.Class({
|
||||
modal: modal,
|
||||
onUngrab: Lang.bind(this, this._escapeTray) })) {
|
||||
this._traySummoned = false;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
this._tween(this.actor, '_trayState', State.SHOWN,
|
||||
@ -2084,25 +2110,31 @@ const MessageTray = new Lang.Class({
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
|
||||
if (this._overviewVisible) {
|
||||
Main.ctrlAltTabManager.addGroup(this._summary, _("Message Tray"), 'start-here-symbolic',
|
||||
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
|
||||
this._inCtrlAltTab = true;
|
||||
} else {
|
||||
if (!this._overviewVisible)
|
||||
this._lightbox.show();
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_updateDesktopCloneClip: function() {
|
||||
let geometry = this._bottomMonitorGeometry;
|
||||
let progress = -Math.round(this._desktopClone.y);
|
||||
this._desktopClone.set_clip(geometry.x,
|
||||
geometry.y + progress,
|
||||
geometry.width,
|
||||
geometry.height - progress);
|
||||
},
|
||||
|
||||
_showDesktopClone: function() {
|
||||
let bottomMonitor = Main.layoutManager.bottomMonitor;
|
||||
let geometry = new Clutter.Geometry({ x: bottomMonitor.x,
|
||||
y: bottomMonitor.y,
|
||||
width: bottomMonitor.width,
|
||||
height: bottomMonitor.height
|
||||
});
|
||||
this._bottomMonitorGeometry = { x: bottomMonitor.x,
|
||||
y: bottomMonitor.y,
|
||||
width: bottomMonitor.width,
|
||||
height: bottomMonitor.height };
|
||||
|
||||
if (this._desktopClone)
|
||||
this._desktopClone.destroy();
|
||||
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: geometry });
|
||||
this._desktopClone = new Clutter.Clone({ source: global.window_group, clip: new Clutter.Geometry(this._bottomMonitorGeometry) });
|
||||
Main.uiGroup.insert_child_above(this._desktopClone, global.window_group);
|
||||
this._desktopClone.x = 0;
|
||||
this._desktopClone.y = 0;
|
||||
@ -2112,17 +2144,15 @@ const MessageTray = new Lang.Class({
|
||||
{ y: -this.actor.height,
|
||||
time: ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onUpdate: function() {
|
||||
let progress = Math.round(-this.y);
|
||||
this.set_clip(geometry.x,
|
||||
geometry.y + progress,
|
||||
geometry.width,
|
||||
geometry.height - progress);
|
||||
}
|
||||
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||
});
|
||||
},
|
||||
|
||||
_hideTray: function() {
|
||||
// Having the summary item animate out while sliding down the tray
|
||||
// is distracting, so hide it immediately in case it was visible.
|
||||
this._summaryBoxPointer.actor.hide();
|
||||
|
||||
this._tween(this.actor, '_trayState', State.HIDDEN,
|
||||
{ y: 0,
|
||||
time: ANIMATION_TIME,
|
||||
@ -2133,56 +2163,43 @@ const MessageTray = new Lang.Class({
|
||||
// which would happen if GrabHelper ungrabbed for us.
|
||||
// This is a no-op in that case.
|
||||
this._grabHelper.ungrab({ actor: this.actor });
|
||||
|
||||
if (this._inCtrlAltTab) {
|
||||
Main.ctrlAltTabManager.removeGroup(this._summary);
|
||||
this._inCtrlAltTab = false;
|
||||
} else {
|
||||
this._lightbox.hide();
|
||||
}
|
||||
this._lightbox.hide();
|
||||
},
|
||||
|
||||
_hideDesktopClone: function(now) {
|
||||
if (now) {
|
||||
this._desktopClone.destroy();
|
||||
this._desktopClone = null;
|
||||
this._desktopCloneState = State.HIDDEN;
|
||||
return;
|
||||
}
|
||||
|
||||
let geometry = this._desktopClone.clip;
|
||||
this._tween(this._desktopClone, '_desktopCloneState', State.HIDDEN,
|
||||
{ y: 0,
|
||||
time: ANIMATION_TIME,
|
||||
time: now ? 0 : ANIMATION_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this._desktopClone.destroy();
|
||||
this._desktopClone = null;
|
||||
this._bottomMonitorGeometry = null;
|
||||
}),
|
||||
onUpdate: function() {
|
||||
let progress = Math.round(-this.y);
|
||||
this.set_clip(geometry.x,
|
||||
geometry.y - progress,
|
||||
geometry.width,
|
||||
geometry.height + progress);
|
||||
}
|
||||
onUpdate: Lang.bind(this, this._updateDesktopCloneClip)
|
||||
});
|
||||
},
|
||||
|
||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
|
||||
this._idleMonitorWatchId = 0;
|
||||
if (!userBecameIdle)
|
||||
this._updateNotificationTimeout(2000);
|
||||
_onIdleMonitorBecameActive: function() {
|
||||
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
|
||||
this._userActiveWhileNotificationShown = true;
|
||||
this._updateNotificationTimeout(2000);
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
_showNotification: function() {
|
||||
this._notification = this._notificationQueue.shift();
|
||||
this._userActiveWhileNotificationShown = this.idleMonitor.get_idletime() <= IDLE_TIME;
|
||||
this._idleMonitorWatchId = this.idleMonitor.add_watch(IDLE_TIME,
|
||||
Lang.bind(this, this._onIdleMonitorWatch));
|
||||
|
||||
let userIdle = this.idleMonitor.get_idletime() > IDLE_TIME;
|
||||
if (userIdle) {
|
||||
this._userActiveWhileNotificationShown = false;
|
||||
this._idleMonitorBecameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||
} else {
|
||||
this._userActiveWhileNotificationShown = true;
|
||||
}
|
||||
|
||||
this._notificationClickedId = this._notification.connect('done-displaying',
|
||||
Lang.bind(this, this._escapeTray));
|
||||
this._notification.connect('unfocused', Lang.bind(this, function() {
|
||||
@ -2295,6 +2312,11 @@ const MessageTray = new Lang.Class({
|
||||
_hideNotification: function() {
|
||||
this._grabHelper.ungrab({ actor: this._notification.actor });
|
||||
|
||||
if (this._idleMonitorBecameActiveId) {
|
||||
this.idleMonitor.disconnect(this._idleMonitorBecameActiveId);
|
||||
this._idleMonitorBecameActiveId = 0;
|
||||
}
|
||||
|
||||
if (this._notificationExpandedId) {
|
||||
this._notification.disconnect(this._notificationExpandedId);
|
||||
this._notificationExpandedId = 0;
|
||||
@ -2334,6 +2356,13 @@ const MessageTray = new Lang.Class({
|
||||
notification.destroy(NotificationDestroyedReason.EXPIRED);
|
||||
},
|
||||
|
||||
_expandActiveNotification: function() {
|
||||
if (!this._notification)
|
||||
return;
|
||||
|
||||
this._expandNotification(false);
|
||||
},
|
||||
|
||||
_expandNotification: function(autoExpanding) {
|
||||
// Don't grab focus in notifications that are auto-expanded.
|
||||
if (!autoExpanding)
|
||||
@ -2410,7 +2439,10 @@ const MessageTray = new Lang.Class({
|
||||
this._notificationQueue = newQueue;
|
||||
|
||||
this._summaryBoxPointer.bin.child = this._summaryBoxPointerItem.notificationStackWidget;
|
||||
this._summaryBoxPointerItem.closeButtonVisible = true;
|
||||
|
||||
let closeButton = this._summaryBoxPointerItem.closeButton;
|
||||
closeButton.show();
|
||||
this._summaryBoxPointerCloseClickedId = closeButton.connect('clicked', Lang.bind(this, this._hideSummaryBoxPointer));
|
||||
this._summaryBoxPointerItem.prepareNotificationStackForShowing();
|
||||
} else if (this._clickedSummaryItemMouseButton == 3) {
|
||||
this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu;
|
||||
@ -2502,6 +2534,9 @@ const MessageTray = new Lang.Class({
|
||||
this._summaryBoxPointer.actor.hide();
|
||||
this._hideSummaryBoxPointerCompleted();
|
||||
} else {
|
||||
if (global.stage.key_focus &&
|
||||
!this.actor.contains(global.stage.key_focus))
|
||||
this._setClickedSummaryItem(null);
|
||||
this._summaryBoxPointer.hide(BoxPointer.PopupAnimation.FULL, Lang.bind(this, this._hideSummaryBoxPointerCompleted));
|
||||
}
|
||||
},
|
||||
@ -2517,6 +2552,8 @@ const MessageTray = new Lang.Class({
|
||||
this._summaryBoxPointer.bin.child = null;
|
||||
this._summaryBoxPointerItem.disconnect(this._summaryBoxPointerContentUpdatedId);
|
||||
this._summaryBoxPointerContentUpdatedId = 0;
|
||||
this._summaryBoxPointerItem.closeButton.disconnect(this._summaryBoxPointerCloseClickedId);
|
||||
this._summaryBoxPointerCloseClickedId = 0;
|
||||
this._summaryBoxPointerItem.source.disconnect(this._sourceDoneDisplayingId);
|
||||
this._summaryBoxPointerDoneDisplayingId = 0;
|
||||
|
||||
|
@ -20,7 +20,6 @@ const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||
const FADE_IN_BUTTONS_TIME = 0.33;
|
||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||
|
||||
const State = {
|
||||
@ -117,8 +116,6 @@ const ModalDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
setButtons: function(buttons) {
|
||||
let hadChildren = this._buttonLayout.get_children() > 0;
|
||||
|
||||
this._buttonLayout.destroy_all_children();
|
||||
this._actionKeys = {};
|
||||
|
||||
@ -131,8 +128,11 @@ const ModalDialog = new Lang.Class({
|
||||
let key = buttonInfo['key'];
|
||||
let isDefault = buttonInfo['default'];
|
||||
|
||||
if (isDefault && !key)
|
||||
if (isDefault && !key) {
|
||||
this._actionKeys[Clutter.KEY_KP_Enter] = action;
|
||||
this._actionKeys[Clutter.KEY_ISO_Enter] = action;
|
||||
key = Clutter.KEY_Return;
|
||||
}
|
||||
|
||||
buttonInfo.button = new St.Button({ style_class: 'modal-dialog-button',
|
||||
reactive: true,
|
||||
@ -166,21 +166,7 @@ const ModalDialog = new Lang.Class({
|
||||
this._actionKeys[key] = action;
|
||||
}
|
||||
|
||||
// Fade in buttons if there weren't any before
|
||||
if (!hadChildren && buttons.length > 0) {
|
||||
this._buttonLayout.opacity = 0;
|
||||
Tweener.addTween(this._buttonLayout,
|
||||
{ opacity: 255,
|
||||
time: FADE_IN_BUTTONS_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this.emit('buttons-set');
|
||||
})
|
||||
});
|
||||
} else {
|
||||
this.emit('buttons-set');
|
||||
}
|
||||
|
||||
this.emit('buttons-set');
|
||||
},
|
||||
|
||||
_onKeyReleaseEvent: function(object, event) {
|
||||
@ -199,8 +185,11 @@ const ModalDialog = new Lang.Class({
|
||||
this.emit('destroy');
|
||||
},
|
||||
|
||||
_fadeOpen: function() {
|
||||
this._monitorConstraint.index = global.screen.get_current_monitor();
|
||||
_fadeOpen: function(onPrimary) {
|
||||
if (onPrimary)
|
||||
this._monitorConstraint.primary = true;
|
||||
else
|
||||
this._monitorConstraint.index = global.screen.get_current_monitor();
|
||||
|
||||
this.state = State.OPENING;
|
||||
|
||||
@ -233,14 +222,14 @@ const ModalDialog = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
open: function(timestamp) {
|
||||
open: function(timestamp, onPrimary) {
|
||||
if (this.state == State.OPENED || this.state == State.OPENING)
|
||||
return true;
|
||||
|
||||
if (!this.pushModal(timestamp))
|
||||
return false;
|
||||
|
||||
this._fadeOpen();
|
||||
this._fadeOpen(onPrimary);
|
||||
return true;
|
||||
},
|
||||
|
||||
|
@ -116,8 +116,8 @@ const NotificationDaemon = new Lang.Class({
|
||||
this._busProxy = new Bus();
|
||||
|
||||
this._trayManager = new Shell.TrayManager();
|
||||
this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
||||
this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
|
||||
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
|
||||
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
|
||||
|
||||
Shell.WindowTracker.get_default().connect('notify::focus-app',
|
||||
Lang.bind(this, this._onFocusAppChanged));
|
||||
@ -356,12 +356,10 @@ const NotificationDaemon = new Lang.Class({
|
||||
ndata.actions, ndata.hints, ndata.notification];
|
||||
|
||||
let gicon = this._iconForNotificationData(icon, hints);
|
||||
let iconActor = new St.Icon({ gicon: gicon,
|
||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
||||
|
||||
if (notification == null) {
|
||||
notification = new MessageTray.Notification(source, summary, body,
|
||||
{ icon: iconActor,
|
||||
{ gicon: gicon,
|
||||
bannerMarkup: true });
|
||||
ndata.notification = notification;
|
||||
notification.connect('destroy', Lang.bind(this,
|
||||
@ -386,7 +384,7 @@ const NotificationDaemon = new Lang.Class({
|
||||
this._emitActionInvoked(ndata.id, actionId);
|
||||
}));
|
||||
} else {
|
||||
notification.update(summary, body, { icon: iconActor,
|
||||
notification.update(summary, body, { gicon: gicon,
|
||||
bannerMarkup: true,
|
||||
clear: true });
|
||||
}
|
||||
|
@ -23,11 +23,29 @@ const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
// Time for initial animation going into Overview mode
|
||||
const ANIMATION_TIME = 0.25;
|
||||
|
||||
// We split the screen vertically between the dash and the view selector.
|
||||
const DASH_SPLIT_FRACTION = 0.1;
|
||||
// XXX -- grab this automatically. Hard to do.
|
||||
const DASH_MAX_WIDTH = 96;
|
||||
|
||||
const DND_WINDOW_SWITCH_TIMEOUT = 1250;
|
||||
|
||||
const GLSL_DIM_EFFECT_DECLARATIONS = '';
|
||||
const GLSL_DIM_EFFECT_CODE = '\
|
||||
vec2 dist = cogl_tex_coord_in[0].xy - vec2(0.5, 0.5); \
|
||||
float elipse_radius = 0.5; \
|
||||
/* from https://bugzilla.gnome.org/show_bug.cgi?id=669798: \
|
||||
the alpha on the gradient goes from 165 at its darkest to 98 at its most transparent. */ \
|
||||
float y = 165.0 / 255.0; \
|
||||
float x = 98.0 / 255.0; \
|
||||
/* interpolate darkening value, based on distance from screen center */ \
|
||||
float val = min(length(dist), elipse_radius); \
|
||||
float a = mix(x, y, val / elipse_radius); \
|
||||
/* dim_factor varies from [1.0 -> 0.5] when overview is showing \
|
||||
We use it to smooth value, then we clamp it to valid color interval */ \
|
||||
a = clamp(a - cogl_color_in.r + 0.5, 0.0, 1.0); \
|
||||
/* We\'re blending between: color and black color (obviously omitted in the equation) */ \
|
||||
cogl_color_out.xyz = cogl_color_out.xyz * (1.0 - a); \
|
||||
cogl_color_out.a = 1.0;';
|
||||
|
||||
const SwipeScrollDirection = {
|
||||
NONE: 0,
|
||||
HORIZONTAL: 1,
|
||||
@ -57,7 +75,14 @@ const ShellInfo = new Lang.Class({
|
||||
this._source.destroy();
|
||||
},
|
||||
|
||||
setMessage: function(text, undoCallback, undoLabel) {
|
||||
setMessage: function(text, options) {
|
||||
options = Params.parse(options, { undoCallback: null,
|
||||
forFeedback: false
|
||||
});
|
||||
|
||||
let undoCallback = options.undoCallback;
|
||||
let forFeedback = options.forFeedback;
|
||||
|
||||
if (this._source == null) {
|
||||
this._source = new MessageTray.SystemNotificationSource();
|
||||
this._source.connect('destroy', Lang.bind(this,
|
||||
@ -71,6 +96,7 @@ const ShellInfo = new Lang.Class({
|
||||
if (this._source.notifications.length == 0) {
|
||||
notification = new MessageTray.Notification(this._source, text, null);
|
||||
notification.setTransient(true);
|
||||
notification.setForFeedback(forFeedback);
|
||||
} else {
|
||||
notification = this._source.notifications[0];
|
||||
notification.update(text, null, { clear: true });
|
||||
@ -78,10 +104,8 @@ const ShellInfo = new Lang.Class({
|
||||
|
||||
this._undoCallback = undoCallback;
|
||||
if (undoCallback) {
|
||||
notification.addButton('system-undo',
|
||||
undoLabel ? undoLabel : _("Undo"));
|
||||
notification.connect('action-invoked',
|
||||
Lang.bind(this, this._onUndoClicked));
|
||||
notification.addButton('system-undo', _("Undo"));
|
||||
notification.connect('action-invoked', Lang.bind(this, this._onUndoClicked));
|
||||
}
|
||||
|
||||
this._source.notify(notification);
|
||||
@ -113,6 +137,10 @@ const Overview = new Lang.Class({
|
||||
// scenes which allows us to show the background with different
|
||||
// rendering options without duplicating the texture data.
|
||||
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||
this._background.add_glsl_snippet(Meta.SnippetHook.FRAGMENT,
|
||||
GLSL_DIM_EFFECT_DECLARATIONS,
|
||||
GLSL_DIM_EFFECT_CODE,
|
||||
false);
|
||||
this._background.hide();
|
||||
global.overlay_group.add_actor(this._background);
|
||||
|
||||
@ -233,11 +261,16 @@ const Overview = new Lang.Class({
|
||||
this._viewSelector.removeSearchProvider(provider);
|
||||
},
|
||||
|
||||
setMessage: function(text, undoCallback, undoLabel) {
|
||||
//
|
||||
// options:
|
||||
// - undoCallback (function): the callback to be called if undo support is needed
|
||||
// - forFeedback (boolean): whether the message is for direct feedback of a user action
|
||||
//
|
||||
setMessage: function(text, options) {
|
||||
if (this.isDummy)
|
||||
return;
|
||||
|
||||
this._shellInfo.setMessage(text, undoCallback, undoLabel);
|
||||
this._shellInfo.setMessage(text, options);
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
@ -470,7 +503,9 @@ const Overview = new Lang.Class({
|
||||
if (windows.length == 0)
|
||||
return null;
|
||||
|
||||
let clone = new Clutter.Clone({ source: windows[0].get_texture() });
|
||||
let window = windows[0];
|
||||
let clone = new Clutter.Clone({ source: window.get_texture(),
|
||||
x: window.x, y: window.y });
|
||||
clone.source.connect('destroy', Lang.bind(this, function() {
|
||||
clone.destroy();
|
||||
}));
|
||||
@ -500,7 +535,7 @@ const Overview = new Lang.Class({
|
||||
let searchX = (primary.width - searchWidth) / 2;
|
||||
let searchY = contentY + this._spacing;
|
||||
|
||||
let dashWidth = Math.round(DASH_SPLIT_FRACTION * primary.width);
|
||||
let dashWidth = DASH_MAX_WIDTH;
|
||||
let dashY = searchY + searchHeight + this._spacing;
|
||||
let dashX;
|
||||
if (rtl) {
|
||||
@ -620,7 +655,7 @@ const Overview = new Lang.Class({
|
||||
});
|
||||
|
||||
Tweener.addTween(this._background,
|
||||
{ dim_factor: 0.4,
|
||||
{ dim_factor: 0.8,
|
||||
time: ANIMATION_TIME,
|
||||
transition: 'easeOutQuad'
|
||||
});
|
||||
|
@ -247,6 +247,10 @@ const AppMenuButton = new Lang.Class({
|
||||
this._container.connect('get-preferred-height', Lang.bind(this, this._getContentPreferredHeight));
|
||||
this._container.connect('allocate', Lang.bind(this, this._contentAllocate));
|
||||
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
textureCache.connect('icon-theme-changed',
|
||||
Lang.bind(this, this._onIconThemeChanged));
|
||||
|
||||
this._iconBox = new Shell.Slicer({ name: 'appMenuIcon' });
|
||||
this._iconBox.connect('style-changed',
|
||||
Lang.bind(this, this._onIconBoxStyleChanged));
|
||||
@ -332,6 +336,15 @@ const AppMenuButton = new Lang.Class({
|
||||
this._updateIconBoxClip();
|
||||
},
|
||||
|
||||
_onIconThemeChanged: function() {
|
||||
if (this._iconBox.child == null)
|
||||
return;
|
||||
|
||||
this._iconBox.child.destroy();
|
||||
let icon = this._targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
|
||||
this._iconBox.set_child(icon);
|
||||
},
|
||||
|
||||
_updateIconBoxClip: function() {
|
||||
let allocation = this._iconBox.allocation;
|
||||
if (this._iconBottomClip > 0)
|
||||
@ -901,6 +914,7 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
|
||||
'volume': imports.ui.status.volume.Indicator,
|
||||
'battery': imports.ui.status.power.Indicator,
|
||||
'lockScreen': imports.ui.status.lockScreenMenu.Indicator,
|
||||
'logo': imports.gdm.loginDialog.LogoMenuButton,
|
||||
'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
|
||||
'powerMenu': imports.gdm.powerMenu.PowerMenuButton,
|
||||
'userMenu': imports.ui.userMenu.UserMenuButton
|
||||
@ -1026,16 +1040,19 @@ const Panel = new Lang.Class({
|
||||
}
|
||||
this._rightBox.allocate(childBox, flags);
|
||||
|
||||
let [cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
|
||||
let [cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_width(-1);
|
||||
let cornerMinWidth, cornerMinHeight;
|
||||
let cornerWidth, cornerHeight;
|
||||
|
||||
[cornerMinWidth, cornerWidth] = this._leftCorner.actor.get_preferred_width(-1);
|
||||
[cornerMinHeight, cornerHeight] = this._leftCorner.actor.get_preferred_height(-1);
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = cornerWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
childBox.y2 = allocHeight + cornerHeight;
|
||||
this._leftCorner.actor.allocate(childBox, flags);
|
||||
|
||||
let [cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
|
||||
let [cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_width(-1);
|
||||
[cornerMinWidth, cornerWidth] = this._rightCorner.actor.get_preferred_width(-1);
|
||||
[cornerMinHeight, cornerHeight] = this._rightCorner.actor.get_preferred_height(-1);
|
||||
childBox.x1 = allocWidth - cornerWidth;
|
||||
childBox.x2 = allocWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
|
@ -214,7 +214,8 @@ const Button = new Lang.Class({
|
||||
destroy: function() {
|
||||
this.actor._delegate = null;
|
||||
|
||||
this.menu.destroy();
|
||||
if (this.menu)
|
||||
this.menu.destroy();
|
||||
this.actor.destroy();
|
||||
|
||||
this.emit('destroy');
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Shell = imports.gi.Shell;
|
||||
|
||||
// We stop polling if the user is idle for more than this amount of time
|
||||
@ -40,9 +41,9 @@ const PointerWatcher = new Lang.Class({
|
||||
Name: 'PointerWatcher',
|
||||
|
||||
_init: function() {
|
||||
let idleMonitor = Shell.IdleMonitor.get();
|
||||
idleMonitor.add_watch(IDLE_TIME,
|
||||
Lang.bind(this, this._onIdleMonitorWatch));
|
||||
let idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
idleMonitor.connect('became-active', Lang.bind(this, this._onIdleMonitorBecameActive));
|
||||
idleMonitor.add_watch(IDLE_TIME, Lang.bind(this, this._onIdleMonitorBecameIdle));
|
||||
this._idle = idleMonitor.get_idletime() > IDLE_TIME;
|
||||
this._watches = [];
|
||||
this.pointerX = null;
|
||||
@ -78,11 +79,14 @@ const PointerWatcher = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||
this._idle = userBecameIdle;
|
||||
if (!userBecameIdle)
|
||||
this._updatePointer();
|
||||
_onIdleMonitorBecameActive: function(monitor) {
|
||||
this._idle = false;
|
||||
this._updatePointer();
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
_onIdleMonitorBecameIdle: function(monitor) {
|
||||
this._idle = true;
|
||||
this._updateTimeout();
|
||||
},
|
||||
|
||||
|
@ -1269,13 +1269,14 @@ const PopupMenu = new Lang.Class({
|
||||
},
|
||||
|
||||
close: function(animate) {
|
||||
if (!this.isOpen)
|
||||
return;
|
||||
|
||||
if (this._activeMenuItem)
|
||||
this._activeMenuItem.setActive(false);
|
||||
|
||||
this._boxPointer.hide(animate);
|
||||
if (this._boxPointer.actor.visible)
|
||||
this._boxPointer.hide(animate);
|
||||
|
||||
if (!this.isOpen)
|
||||
return;
|
||||
|
||||
this.isOpen = false;
|
||||
this.emit('open-state-changed', false);
|
||||
|
@ -38,9 +38,22 @@ function loadRemoteSearchProviders(addProviderCallback) {
|
||||
for (let i = 0; i < dataDirs.length; i++) {
|
||||
let path = GLib.build_filenamev([dataDirs[i], 'gnome-shell', 'search-providers']);
|
||||
let dir = Gio.file_new_for_path(path);
|
||||
if (!dir.query_exists(null))
|
||||
continue;
|
||||
loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallback);
|
||||
|
||||
dir.query_info_async('standard:type', Gio.FileQueryInfoFlags.NONE,
|
||||
GLib.PRIORITY_DEFAULT, null,
|
||||
function(object, res) {
|
||||
let exists = false;
|
||||
try {
|
||||
object.query_info_finish(res);
|
||||
exists = true;
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
if (!exists)
|
||||
return;
|
||||
|
||||
loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallback);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@ -60,7 +73,7 @@ function loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallb
|
||||
if (!keyfile.has_group(KEY_FILE_GROUP))
|
||||
continue;
|
||||
|
||||
let remoteProvider, title;
|
||||
let remoteProvider;
|
||||
try {
|
||||
let group = KEY_FILE_GROUP;
|
||||
let busName = keyfile.get_string(group, 'BusName');
|
||||
@ -74,25 +87,17 @@ function loadRemoteSearchProvidersFromDir(dir, loadedProviders, addProviderCallb
|
||||
let desktopId = keyfile.get_string(group, 'DesktopId');
|
||||
appInfo = Gio.DesktopAppInfo.new(desktopId);
|
||||
} catch (e) {
|
||||
log('Ignoring search provider ' + path + ': missing DesktopId');
|
||||
continue;
|
||||
}
|
||||
|
||||
let icon;
|
||||
if (appInfo) {
|
||||
icon = appInfo.get_icon();
|
||||
title = appInfo.get_name();
|
||||
} else {
|
||||
let iconName = keyfile.get_string(group, 'Icon');
|
||||
icon = new Gio.ThemedIcon({ name: iconName });
|
||||
title = keyfile.get_locale_string(group, 'Title', null);
|
||||
}
|
||||
|
||||
remoteProvider = new RemoteSearchProvider(title,
|
||||
icon,
|
||||
remoteProvider = new RemoteSearchProvider(appInfo.get_name(),
|
||||
appInfo.get_icon(),
|
||||
busName,
|
||||
objectPath);
|
||||
loadedProviders[objectPath] = remoteProvider;
|
||||
} catch(e) {
|
||||
log('Failed to add search provider "%s": %s'.format(title, e.toString()));
|
||||
log('Failed to add search provider %s: %s'.format(path, e.toString()));
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -108,12 +113,16 @@ const RemoteSearchProvider = new Lang.Class({
|
||||
|
||||
_init: function(title, icon, dbusName, dbusPath) {
|
||||
this._proxy = new SearchProviderProxy(Gio.DBus.session,
|
||||
dbusName, dbusPath);
|
||||
dbusName, dbusPath, Lang.bind(this, this._onProxyConstructed));
|
||||
|
||||
this.parent(title.toUpperCase());
|
||||
this._cancellable = new Gio.Cancellable();
|
||||
},
|
||||
|
||||
_onProxyConstructed: function(proxy) {
|
||||
// Do nothing
|
||||
},
|
||||
|
||||
createIcon: function(size, meta) {
|
||||
if (meta['gicon']) {
|
||||
return new St.Icon({ gicon: Gio.icon_new_for_string(meta['gicon']),
|
||||
|
@ -202,11 +202,12 @@ const RunDialog = new Lang.Class({
|
||||
|
||||
|
||||
let label = new St.Label({ style_class: 'run-dialog-label',
|
||||
text: _("Please enter a command:") });
|
||||
text: _("Enter a Command") });
|
||||
|
||||
this.contentLayout.add(label, { y_align: St.Align.START });
|
||||
|
||||
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
|
||||
let entry = new St.Entry({ style_class: 'run-dialog-entry',
|
||||
can_focus: true });
|
||||
ShellEntry.addContextMenu(entry);
|
||||
|
||||
entry.label_actor = label;
|
||||
@ -219,7 +220,9 @@ const RunDialog = new Lang.Class({
|
||||
|
||||
this.contentLayout.add(this._errorBox, { expand: true });
|
||||
|
||||
let errorIcon = new St.Icon({ icon_name: 'dialog-error', icon_size: 24, style_class: 'run-dialog-error-icon' });
|
||||
let errorIcon = new St.Icon({ icon_name: 'dialog-error-symbolic',
|
||||
icon_size: 24,
|
||||
style_class: 'run-dialog-error-icon' });
|
||||
|
||||
this._errorBox.add(errorIcon, { y_align: St.Align.MIDDLE });
|
||||
|
||||
@ -234,6 +237,10 @@ const RunDialog = new Lang.Class({
|
||||
|
||||
this._errorBox.hide();
|
||||
|
||||
this.setButtons([{ action: Lang.bind(this, this.close),
|
||||
label: _("Close"),
|
||||
key: Clutter.Escape }]);
|
||||
|
||||
this._pathCompleter = new Gio.FilenameCompleter();
|
||||
this._commandCompleter = new CommandCompleter();
|
||||
this._group.connect('notify::visible', Lang.bind(this._commandCompleter, this._commandCompleter.update));
|
||||
@ -244,20 +251,12 @@ const RunDialog = new Lang.Class({
|
||||
let symbol = e.get_key_symbol();
|
||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||
this.popModal();
|
||||
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
|
||||
this._run(o.get_text(), true);
|
||||
else
|
||||
this._run(o.get_text(), false);
|
||||
if (!this._commandError)
|
||||
this._run(o.get_text(),
|
||||
e.get_state() & Clutter.ModifierType.CONTROL_MASK);
|
||||
if (!this._commandError ||
|
||||
!this.pushModal())
|
||||
this.close();
|
||||
else {
|
||||
if (!this.pushModal())
|
||||
this.close();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (symbol == Clutter.Escape) {
|
||||
this.close();
|
||||
|
||||
return true;
|
||||
}
|
||||
if (symbol == Clutter.slash) {
|
||||
|
@ -21,11 +21,12 @@ const Overview = imports.ui.overview;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
const ShellDBus = imports.ui.shellDBus;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||
|
||||
const CURTAIN_SLIDE_TIME = 0.5;
|
||||
const CURTAIN_SLIDE_TIME = 0.3;
|
||||
// fraction of screen height the arrow must reach before completing
|
||||
// the slide up automatically
|
||||
const ARROW_DRAG_THRESHOLD = 0.1;
|
||||
@ -46,7 +47,39 @@ const SUMMARY_ICON_SIZE = 48;
|
||||
// STANDARD_FADE_TIME is used when the session goes idle, while
|
||||
// SHORT_FADE_TIME is used when requesting lock explicitly from the user menu
|
||||
const STANDARD_FADE_TIME = 10;
|
||||
const SHORT_FADE_TIME = 0.8;
|
||||
const SHORT_FADE_TIME = 0.3;
|
||||
|
||||
function sample(offx, offy) {
|
||||
return 'texel += texture2D (sampler, tex_coord.st + pixel_step * ' +
|
||||
'vec2 (' + offx + ',' + offy + ') * 2.0);\n'
|
||||
}
|
||||
const GLSL_BLUR_EFFECT_DECLARATIONS = ' \
|
||||
uniform vec2 pixel_step;\n \
|
||||
vec4 apply_blur(in sampler2D sampler, in vec2 tex_coord) {\n \
|
||||
vec4 texel;\n \
|
||||
texel = texture2D (sampler, tex_coord.st);\n'
|
||||
+ sample(-1.0, -1.0)
|
||||
+ sample( 0.0, -1.0)
|
||||
+ sample(+1.0, -1.0)
|
||||
+ sample(-1.0, 0.0)
|
||||
+ sample( 0.0, 0.0)
|
||||
+ sample(+1.0, 0.0)
|
||||
+ sample(-1.0, +1.0)
|
||||
+ sample( 0.0, +1.0)
|
||||
+ sample(+1.0, +1.0) + ' \
|
||||
texel /= 9.0;\n \
|
||||
return texel;\n \
|
||||
}\n \
|
||||
vec3 desaturate (const vec3 color, const float desaturation)\n \
|
||||
{\n \
|
||||
const vec3 gray_conv = vec3 (0.299, 0.587, 0.114);\n \
|
||||
vec3 gray = vec3 (dot (gray_conv, color));\n \
|
||||
return vec3 (mix (color.rgb, gray, desaturation));\n \
|
||||
}';
|
||||
const GLSL_BLUR_EFFECT_CODE = ' \
|
||||
cogl_texel = apply_blur(cogl_sampler, cogl_tex_coord.st);\n \
|
||||
cogl_texel.rgb = desaturate(cogl_texel.rgb, 0.6);\n';
|
||||
|
||||
|
||||
const Clock = new Lang.Class({
|
||||
Name: 'ScreenShieldClock',
|
||||
@ -95,13 +128,13 @@ const NotificationsBox = new Lang.Class({
|
||||
|
||||
this._residentNotificationBox = new St.BoxLayout({ vertical: true,
|
||||
style_class: 'screen-shield-notifications-box' });
|
||||
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.MIDDLE });
|
||||
let scrollView = new St.ScrollView({ x_fill: false, x_align: St.Align.START });
|
||||
this._persistentNotificationBox = new St.BoxLayout({ vertical: true,
|
||||
style_class: 'screen-shield-notifications-box' });
|
||||
scrollView.add_actor(this._persistentNotificationBox);
|
||||
|
||||
this.actor.add(this._residentNotificationBox, { x_fill: true });
|
||||
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.MIDDLE });
|
||||
this.actor.add(scrollView, { x_fill: true, x_align: St.Align.START });
|
||||
|
||||
this._items = [];
|
||||
Main.messageTray.getSummaryItems().forEach(Lang.bind(this, function(item) {
|
||||
@ -126,13 +159,12 @@ const NotificationsBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_updateVisibility: function() {
|
||||
if (this._residentNotificationBox.get_n_children() > 0) {
|
||||
this.actor.show();
|
||||
return;
|
||||
}
|
||||
this._residentNotificationBox.visible = this._residentNotificationBox.get_n_children() > 0;
|
||||
this._persistentNotificationBox.visible = this._persistentNotificationBox.get_children().some(function(a) {
|
||||
return a.visible;
|
||||
});
|
||||
|
||||
let children = this._persistentNotificationBox.get_children();
|
||||
this.actor.visible = children.some(function(a) { return a.visible; });
|
||||
this.actor.visible = this._residentNotificationBox.visible || this._persistentNotificationBox.visible;
|
||||
},
|
||||
|
||||
_sourceIsResident: function(source) {
|
||||
@ -153,7 +185,7 @@ const NotificationsBox = new Lang.Class({
|
||||
box.add(sourceActor.actor, { y_fill: true });
|
||||
|
||||
let textBox = new St.BoxLayout({ vertical: true });
|
||||
box.add(textBox);
|
||||
box.add(textBox, { y_fill: false, y_align: St.Align.START });
|
||||
|
||||
let label = new St.Label({ text: source.title,
|
||||
style_class: 'screen-shield-notification-label' });
|
||||
@ -186,11 +218,11 @@ const NotificationsBox = new Lang.Class({
|
||||
|
||||
if (obj.resident) {
|
||||
this._residentNotificationBox.add(item.notificationStackWidget);
|
||||
item.closeButtonVisible = false;
|
||||
item.closeButton.hide();
|
||||
item.prepareNotificationStackForShowing();
|
||||
} else {
|
||||
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(item.source);
|
||||
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.MIDDLE });
|
||||
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
|
||||
}
|
||||
|
||||
obj.contentUpdatedId = item.connect('content-updated', Lang.bind(this, this._onItemContentUpdated));
|
||||
@ -236,7 +268,7 @@ const NotificationsBox = new Lang.Class({
|
||||
this._residentNotificationBox.remove_actor(obj.item.notificationStackWidget);
|
||||
|
||||
[obj.sourceBox, obj.countLabel] = this._makeNotificationSource(obj.source);
|
||||
this._persistentNotificationBox.add(obj.sourceBox);
|
||||
this._persistentNotificationBox.add(obj.sourceBox, { x_fill: false, x_align: St.Align.START });
|
||||
} else if (itemShouldBeResident && !obj.resident) {
|
||||
// make into a resident item
|
||||
obj.sourceBox.destroy();
|
||||
@ -244,7 +276,7 @@ const NotificationsBox = new Lang.Class({
|
||||
obj.resident = true;
|
||||
|
||||
this._residentNotificationBox.add(obj.item.notificationStackWidget);
|
||||
obj.item.closeButtonVisible = false;
|
||||
obj.item.closeButton.hide();
|
||||
obj.item.prepareNotificationStackForShowing();
|
||||
} else {
|
||||
// just update the counter
|
||||
@ -335,6 +367,10 @@ const Arrow = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
|
||||
/**
|
||||
* To test screen shield, make sure to kill gnome-screensaver.
|
||||
*
|
||||
@ -367,8 +403,13 @@ const ScreenShield = new Lang.Class({
|
||||
name: 'lockScreenContents' });
|
||||
this._lockScreenContents.add_constraint(new Layout.MonitorConstraint({ primary: true }));
|
||||
|
||||
let backgroundActor = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||
backgroundActor.add_glsl_snippet(Meta.SnippetHook.TEXTURE_LOOKUP,
|
||||
GLSL_BLUR_EFFECT_DECLARATIONS,
|
||||
GLSL_BLUR_EFFECT_CODE,
|
||||
true);
|
||||
this._background = new St.Bin({ style_class: 'screen-shield-background',
|
||||
child: Meta.BackgroundActor.new_for_screen(global.screen) });
|
||||
child: backgroundActor });
|
||||
this._lockScreenGroup.add_actor(this._background);
|
||||
this._lockScreenGroup.add_actor(this._lockScreenContents);
|
||||
|
||||
@ -387,14 +428,11 @@ const ScreenShield = new Lang.Class({
|
||||
}
|
||||
this._lockScreenContents.add_actor(this._arrowContainer);
|
||||
|
||||
let dragArea = new Clutter.Rect({ origin: new Clutter.Point({ x: 0, y: -global.screen_height, }),
|
||||
size: new Clutter.Size({ width: global.screen_width,
|
||||
height: global.screen_height }) });
|
||||
let action = new Clutter.DragAction({ drag_axis: Clutter.DragAxis.Y_AXIS,
|
||||
drag_area: dragArea });
|
||||
action.connect('drag-begin', Lang.bind(this, this._onDragBegin));
|
||||
action.connect('drag-end', Lang.bind(this, this._onDragEnd));
|
||||
this._lockScreenGroup.add_action(action);
|
||||
this._dragAction = new Clutter.GestureAction();
|
||||
this._dragAction.connect('gesture-begin', Lang.bind(this, this._onDragBegin));
|
||||
this._dragAction.connect('gesture-progress', Lang.bind(this, this._onDragMotion));
|
||||
this._dragAction.connect('gesture-end', Lang.bind(this, this._onDragEnd));
|
||||
this._lockScreenGroup.add_action(this._dragAction);
|
||||
|
||||
this._lockDialogGroup = new St.Widget({ x_expand: true,
|
||||
y_expand: true,
|
||||
@ -430,29 +468,39 @@ const ScreenShield = new Lang.Class({
|
||||
this._isGreeter = false;
|
||||
this._isActive = false;
|
||||
this._inUnlockAnimation = false;
|
||||
this._activationTime = 0;
|
||||
|
||||
this._lightbox = new Lightbox.Lightbox(Main.uiGroup,
|
||||
{ inhibitEvents: true,
|
||||
fadeInTime: STANDARD_FADE_TIME,
|
||||
fadeFactor: 1 });
|
||||
|
||||
this.idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
},
|
||||
|
||||
_onLockScreenKeyRelease: function(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
|
||||
// Do nothing if the lock screen is not fully shown.
|
||||
// This avoids reusing the previous (and stale) unlock
|
||||
// dialog if esc is pressed while the curtain is going
|
||||
// down after cancel.
|
||||
// Similarly, don't bump if the lock screen is not showing or is
|
||||
// animating, as the bump overrides the animation and would
|
||||
// remove any onComplete handler.
|
||||
|
||||
if (this._lockScreenState != MessageTray.State.SHOWN)
|
||||
return false;
|
||||
|
||||
if (symbol == Clutter.KEY_Escape ||
|
||||
symbol == Clutter.KEY_Return ||
|
||||
symbol == Clutter.KEY_KP_Enter) {
|
||||
this._ensureUnlockDialog();
|
||||
this._hideLockScreen(true);
|
||||
this._ensureUnlockDialog(true);
|
||||
this._hideLockScreen(true, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Don't bump if the lock screen is not showing or is
|
||||
// animating, as the bump overrides the animation and would
|
||||
// remove any onComplete handler
|
||||
if (this._lockScreenState == MessageTray.State.SHOWN)
|
||||
this._bumpLockScreen();
|
||||
this._bumpLockScreen();
|
||||
return true;
|
||||
},
|
||||
|
||||
@ -470,8 +518,8 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
// 7 standard scrolls to lift up
|
||||
if (this._lockScreenScrollCounter > 35) {
|
||||
this._ensureUnlockDialog();
|
||||
this._hideLockScreen(true);
|
||||
this._ensureUnlockDialog(false);
|
||||
this._hideLockScreen(true, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -502,13 +550,28 @@ const ScreenShield = new Lang.Class({
|
||||
_onDragBegin: function() {
|
||||
Tweener.removeTweens(this._lockScreenGroup);
|
||||
this._lockScreenState = MessageTray.State.HIDING;
|
||||
this._ensureUnlockDialog();
|
||||
this._ensureUnlockDialog(false);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDragMotion: function() {
|
||||
let [origX, origY] = this._dragAction.get_press_coords(0);
|
||||
let [currentX, currentY] = this._dragAction.get_motion_coords(0);
|
||||
|
||||
let newY = currentY - origY;
|
||||
newY = clamp(newY, -global.stage.height, 0);
|
||||
|
||||
this._lockScreenGroup.y = newY;
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDragEnd: function(action, actor, eventX, eventY, modifiers) {
|
||||
if (this._lockScreenGroup.y < -(ARROW_DRAG_THRESHOLD * global.stage.height)) {
|
||||
// Complete motion automatically
|
||||
this._hideLockScreen(true);
|
||||
let [velocity, velocityX, velocityY] = this._dragAction.get_velocity(0);
|
||||
this._hideLockScreen(true, -velocityY);
|
||||
} else {
|
||||
// restore the lock screen to its original place
|
||||
// try to use the same speed as the normal animation
|
||||
@ -518,7 +581,7 @@ const ScreenShield = new Lang.Class({
|
||||
Tweener.addTween(this._lockScreenGroup,
|
||||
{ y: 0,
|
||||
time: time,
|
||||
transition: 'linear',
|
||||
transition: 'easeInQuad',
|
||||
onComplete: function() {
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
@ -537,31 +600,43 @@ const ScreenShield = new Lang.Class({
|
||||
},
|
||||
|
||||
_onStatusChanged: function(status) {
|
||||
if (status == GnomeSession.PresenceStatus.IDLE) {
|
||||
if (this._dialog) {
|
||||
this._dialog.cancel();
|
||||
if (!this._isGreeter) {
|
||||
this._dialog = null;
|
||||
if (status != GnomeSession.PresenceStatus.IDLE)
|
||||
return;
|
||||
|
||||
if (this._dialog) {
|
||||
this._dialog.cancel();
|
||||
if (!this._isGreeter) {
|
||||
this._dialog = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (!this._isModal) {
|
||||
Main.pushModal(this.actor);
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
if (!this._isActive) {
|
||||
this._lightbox.show();
|
||||
|
||||
if (this._activationTime == 0)
|
||||
this._activationTime = GLib.get_monotonic_time();
|
||||
|
||||
this._becameActiveId = this.idleMonitor.connect('became-active', Lang.bind(this, function() {
|
||||
this.idleMonitor.disconnect(this._becameActiveId);
|
||||
|
||||
let lightboxWasShown = this._lightbox.shown;
|
||||
this._lightbox.hide();
|
||||
|
||||
let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||
if (shouldLock || this._isLocked) {
|
||||
this.lock(false);
|
||||
} else if (this._isActive) {
|
||||
this.unlock();
|
||||
}
|
||||
}
|
||||
}));
|
||||
|
||||
if (!this._isModal) {
|
||||
Main.pushModal(this.actor);
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
if (!this._isActive)
|
||||
this._lightbox.show();
|
||||
} else {
|
||||
let lightboxWasShown = this._lightbox.shown;
|
||||
this._lightbox.hide();
|
||||
|
||||
let shouldLock = lightboxWasShown && this._settings.get_boolean(LOCK_ENABLED_KEY);
|
||||
if (shouldLock || this._isActive) {
|
||||
this.lock(false);
|
||||
} else if (this._isModal) {
|
||||
this.unlock();
|
||||
}
|
||||
this._isActive = true;
|
||||
this.emit('lock-status-changed');
|
||||
}
|
||||
},
|
||||
|
||||
@ -579,8 +654,8 @@ const ScreenShield = new Lang.Class({
|
||||
|
||||
this.actor.show();
|
||||
this._isGreeter = Main.sessionMode.isGreeter;
|
||||
this._ensureUnlockDialog();
|
||||
this._hideLockScreen(false);
|
||||
this._ensureUnlockDialog(true);
|
||||
this._hideLockScreen(false, 0);
|
||||
},
|
||||
|
||||
_bumpLockScreen: function() {
|
||||
@ -598,19 +673,26 @@ const ScreenShield = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_hideLockScreen: function(animate) {
|
||||
_hideLockScreen: function(animate, velocity) {
|
||||
this._lockScreenState = MessageTray.State.HIDING;
|
||||
|
||||
if (animate) {
|
||||
// Tween the lock screen out of screen
|
||||
// try to use the same speed regardless of original position
|
||||
// if velocity is not specified (i.e. we come here from pressing ESC),
|
||||
// use the same speed regardless of original position
|
||||
// if velocity is specified, it's in pixels per milliseconds
|
||||
let h = global.stage.height;
|
||||
let time = CURTAIN_SLIDE_TIME * (h + this._lockScreenGroup.y) / h;
|
||||
let delta = (h + this._lockScreenGroup.y);
|
||||
let min_velocity = global.stage.height / (CURTAIN_SLIDE_TIME * 1000);
|
||||
|
||||
velocity = Math.max(min_velocity, velocity);
|
||||
let time = (delta / velocity) / 1000;
|
||||
|
||||
Tweener.removeTweens(this._lockScreenGroup);
|
||||
Tweener.addTween(this._lockScreenGroup,
|
||||
{ y: -h,
|
||||
time: time,
|
||||
transition: 'linear',
|
||||
transition: 'easeInQuad',
|
||||
onComplete: function() {
|
||||
this._lockScreenState = MessageTray.State.HIDDEN;
|
||||
this._lockScreenGroup.hide();
|
||||
@ -622,11 +704,13 @@ const ScreenShield = new Lang.Class({
|
||||
this._lockScreenGroup.hide();
|
||||
}
|
||||
|
||||
global.stage.show_cursor();
|
||||
|
||||
if (Main.sessionMode.currentMode == 'lock-screen')
|
||||
Main.sessionMode.popMode('lock-screen');
|
||||
},
|
||||
|
||||
_ensureUnlockDialog: function() {
|
||||
_ensureUnlockDialog: function(onPrimary) {
|
||||
if (!this._dialog) {
|
||||
let constructor = Main.sessionMode.unlockDialog;
|
||||
this._dialog = new constructor(this._lockDialogGroup);
|
||||
@ -636,8 +720,9 @@ const ScreenShield = new Lang.Class({
|
||||
return;
|
||||
}
|
||||
|
||||
let time = global.get_current_time();
|
||||
this._dialog.connect('loaded', Lang.bind(this, function() {
|
||||
if (!this._dialog.open()) {
|
||||
if (!this._dialog.open(time, onPrimary)) {
|
||||
log('Could not open login dialog: failed to acquire grab');
|
||||
this.unlock();
|
||||
}
|
||||
@ -670,7 +755,7 @@ const ScreenShield = new Lang.Class({
|
||||
Tweener.addTween(this._lockScreenGroup,
|
||||
{ y: 0,
|
||||
time: SHORT_FADE_TIME,
|
||||
transition: 'linear',
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: function() {
|
||||
this._lockScreenShown();
|
||||
},
|
||||
@ -709,6 +794,16 @@ const ScreenShield = new Lang.Class({
|
||||
this._arrowAnimationId = Mainloop.timeout_add(6000, Lang.bind(this, this._animateArrows));
|
||||
this._animateArrows();
|
||||
|
||||
let motionId = global.stage.connect('captured-event', function(stage, event) {
|
||||
if (event.type() == Clutter.EventType.MOTION) {
|
||||
global.stage.show_cursor();
|
||||
global.stage.disconnect(motionId);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
global.stage.hide_cursor();
|
||||
|
||||
this._lockScreenState = MessageTray.State.SHOWN;
|
||||
this._lockScreenGroup.fixed_position_set = false;
|
||||
this._lockScreenScrollCounter = 0;
|
||||
@ -726,7 +821,8 @@ const ScreenShield = new Lang.Class({
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
x_expand: true,
|
||||
y_expand: true,
|
||||
vertical: true });
|
||||
vertical: true,
|
||||
style_class: 'screen-shield-contents-box' });
|
||||
this._clock = new Clock();
|
||||
this._lockScreenContentsBox.add(this._clock.actor, { x_fill: true,
|
||||
y_fill: true });
|
||||
@ -766,6 +862,10 @@ const ScreenShield = new Lang.Class({
|
||||
return this._isActive;
|
||||
},
|
||||
|
||||
get activationTime() {
|
||||
return this._activationTime;
|
||||
},
|
||||
|
||||
_tweenUnlocked: function() {
|
||||
this._inUnlockAnimation = true;
|
||||
this.unlock();
|
||||
@ -810,7 +910,9 @@ const ScreenShield = new Lang.Class({
|
||||
if (Main.sessionMode.currentMode == 'unlock-dialog')
|
||||
Main.sessionMode.popMode('unlock-dialog');
|
||||
|
||||
this._activationTime = 0;
|
||||
this._isActive = false;
|
||||
this._isLocked = false;
|
||||
this.emit('lock-status-changed');
|
||||
},
|
||||
|
||||
@ -820,6 +922,9 @@ const ScreenShield = new Lang.Class({
|
||||
this._isModal = true;
|
||||
}
|
||||
|
||||
if (this._activationTime == 0)
|
||||
this._activationTime = GLib.get_monotonic_time();
|
||||
|
||||
this.actor.show();
|
||||
|
||||
if (Main.sessionMode.currentMode != 'unlock-dialog' &&
|
||||
@ -832,6 +937,7 @@ const ScreenShield = new Lang.Class({
|
||||
this._resetLockScreen(animate, animate);
|
||||
|
||||
this._isActive = true;
|
||||
this._isLocked = true;
|
||||
this.emit('lock-status-changed');
|
||||
},
|
||||
});
|
||||
@ -844,6 +950,8 @@ const ScreenShieldFallback = new Lang.Class({
|
||||
Name: 'ScreenShieldFallback',
|
||||
|
||||
_init: function() {
|
||||
Util.spawn(['gnome-screensaver']);
|
||||
|
||||
this._proxy = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||
g_name: 'org.gnome.ScreenSaver',
|
||||
g_object_path: '/org/gnome/ScreenSaver',
|
||||
|
@ -37,9 +37,9 @@ const _modes = {
|
||||
isGreeter: true,
|
||||
isPrimary: true,
|
||||
unlockDialog: imports.gdm.loginDialog.LoginDialog,
|
||||
components: ['polkitAgent'],
|
||||
components: ['polkitAgent', 'mediaKeysManager'],
|
||||
panel: {
|
||||
left: [],
|
||||
left: ['logo'],
|
||||
center: ['dateMenu'],
|
||||
right: ['a11y', 'display', 'keyboard',
|
||||
'volume', 'battery', 'powerMenu']
|
||||
@ -50,7 +50,7 @@ const _modes = {
|
||||
isLocked: true,
|
||||
isGreeter: undefined,
|
||||
unlockDialog: undefined,
|
||||
components: ['polkitAgent', 'telepathyClient'],
|
||||
components: ['polkitAgent', 'telepathyClient', 'mediaKeysManager'],
|
||||
panel: {
|
||||
left: ['userMenu'],
|
||||
center: [],
|
||||
@ -61,7 +61,7 @@ const _modes = {
|
||||
'unlock-dialog': {
|
||||
isLocked: true,
|
||||
unlockDialog: undefined,
|
||||
components: ['polkitAgent', 'telepathyClient'],
|
||||
components: ['polkitAgent', 'telepathyClient', 'mediaKeysManager'],
|
||||
panel: {
|
||||
left: ['userMenu'],
|
||||
center: [],
|
||||
@ -71,7 +71,7 @@ const _modes = {
|
||||
|
||||
'initial-setup': {
|
||||
isPrimary: true,
|
||||
components: ['keyring'],
|
||||
components: ['keyring', 'mediaKeysManager'],
|
||||
panel: {
|
||||
left: [],
|
||||
center: ['dateMenu'],
|
||||
@ -91,8 +91,9 @@ const _modes = {
|
||||
isLocked: false,
|
||||
isPrimary: true,
|
||||
unlockDialog: imports.ui.unlockDialog.UnlockDialog,
|
||||
components: ['networkAgent', 'polkitAgent', 'telepathyClient',
|
||||
'keyring', 'recorder', 'autorunManager', 'automountManager'],
|
||||
components: ['networkAgent', 'polkitAgent', 'telepathyClient', 'keyring',
|
||||
'recorder', 'autorunManager', 'automountManager',
|
||||
'mediaKeysManager'],
|
||||
panel: {
|
||||
left: ['activities', 'appMenu'],
|
||||
center: ['dateMenu'],
|
||||
|
@ -57,7 +57,10 @@ const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
|
||||
<arg name="active" direction="out" type="b" />
|
||||
</method>
|
||||
<method name="SetActive">
|
||||
<arg name="value" direction="in" type="u" />
|
||||
<arg name="value" direction="in" type="b" />
|
||||
</method>
|
||||
<method name="GetActiveTime">
|
||||
<arg name="value" direction="out" type="u" />
|
||||
</method>
|
||||
<signal name="ActiveChanged">
|
||||
<arg name="new_value" type="b" />
|
||||
@ -373,5 +376,13 @@ const ScreenSaverDBus = new Lang.Class({
|
||||
|
||||
GetActive: function() {
|
||||
return this._screenShield.locked;
|
||||
}
|
||||
},
|
||||
|
||||
GetActiveTime: function() {
|
||||
let started = this._screenShield.activationTime;
|
||||
if (started > 0)
|
||||
return Math.floor((GLib.get_monotonic_time() - started) / 1000000);
|
||||
else
|
||||
return 0;
|
||||
},
|
||||
});
|
||||
|
@ -38,8 +38,8 @@ const ATIndicator = new Lang.Class({
|
||||
_init: function() {
|
||||
this.parent('preferences-desktop-accessibility-symbolic', _("Accessibility"));
|
||||
|
||||
let highContrast = this._buildHCItem();
|
||||
this.menu.addMenuItem(highContrast);
|
||||
this._highContrast = this._buildHCItem();
|
||||
this.menu.addMenuItem(this._highContrast);
|
||||
|
||||
let magnifier = this._buildItem(_("Zoom"), APPLICATIONS_SCHEMA,
|
||||
'screen-magnifier-enabled');
|
||||
@ -159,5 +159,9 @@ const ATIndicator = new Lang.Class({
|
||||
widget.setToggleState(active);
|
||||
});
|
||||
return widget;
|
||||
}
|
||||
},
|
||||
|
||||
toggleHighContrast: function() {
|
||||
this._highContrast.toggle();
|
||||
},
|
||||
});
|
||||
|
@ -238,7 +238,7 @@ const InputSourceIndicator = new Lang.Class({
|
||||
// but at least for now it is used as "allow popping up windows
|
||||
// from shell menus"; we can always add a separate sessionMode
|
||||
// option if need arises.
|
||||
this._showLayoutItem.visible = Main.sessionMode.allowSettings;
|
||||
this._showLayoutItem.actor.visible = Main.sessionMode.allowSettings;
|
||||
},
|
||||
|
||||
_currentInputSourceChanged: function() {
|
||||
|
@ -233,20 +233,11 @@ const NMWirelessSectionTitleMenuItem = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
const NMDevice = new Lang.Class({
|
||||
Name: 'NMDevice',
|
||||
const NMConnectionBased = new Lang.Class({
|
||||
Name: 'NMConnectionBased',
|
||||
Abstract: true,
|
||||
|
||||
_init: function(client, device, connections) {
|
||||
this.device = device;
|
||||
if (device) {
|
||||
this.device._delegate = this;
|
||||
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
|
||||
} else
|
||||
this._stateChangedId = 0;
|
||||
|
||||
// protected
|
||||
this._client = client;
|
||||
_init: function(connections) {
|
||||
this._connections = [ ];
|
||||
for (let i = 0; i < connections.length; i++) {
|
||||
if (!connections[i].get_uuid())
|
||||
@ -264,26 +255,115 @@ const NMDevice = new Lang.Class({
|
||||
this._connections.push(obj);
|
||||
}
|
||||
this._connections.sort(this._connectionSortFunction);
|
||||
},
|
||||
|
||||
checkConnection: function(connection) {
|
||||
let pos = this._findConnection(connection.get_uuid());
|
||||
let exists = pos != -1;
|
||||
let valid = this.connectionValid(connection);
|
||||
let similar = false;
|
||||
if (exists) {
|
||||
let existing = this._connections[pos];
|
||||
|
||||
// Check if connection changed name or id
|
||||
similar = existing.name == connection.get_id() &&
|
||||
existing.timestamp == connection._timestamp;
|
||||
}
|
||||
|
||||
if (exists && valid && similar) {
|
||||
// Nothing to do
|
||||
return;
|
||||
}
|
||||
|
||||
if (exists)
|
||||
this.removeConnection(connection);
|
||||
if (valid)
|
||||
this.addConnection(connection);
|
||||
},
|
||||
|
||||
addConnection: function(connection) {
|
||||
// record the connection
|
||||
let obj = {
|
||||
connection: connection,
|
||||
name: connection.get_id(),
|
||||
uuid: connection.get_uuid(),
|
||||
timestamp: connection._timestamp,
|
||||
item: null,
|
||||
};
|
||||
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
|
||||
|
||||
this._queueCreateSection();
|
||||
},
|
||||
|
||||
removeConnection: function(connection) {
|
||||
let pos = this._findConnection(connection.get_uuid());
|
||||
if (pos == -1) {
|
||||
// this connection was never added, nothing to do here
|
||||
return;
|
||||
}
|
||||
|
||||
let obj = this._connections[pos];
|
||||
if (obj.item)
|
||||
obj.item.destroy();
|
||||
this._connections.splice(pos, 1);
|
||||
|
||||
if (this._connections.length <= 1) {
|
||||
// We need to show the automatic connection again
|
||||
// (or in the case of NMDeviceWired, we want to hide
|
||||
// the only explicit connection)
|
||||
this._queueCreateSection();
|
||||
}
|
||||
},
|
||||
|
||||
_findConnection: function(uuid) {
|
||||
for (let i = 0; i < this._connections.length; i++) {
|
||||
let obj = this._connections[i];
|
||||
if (obj.uuid == uuid)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
|
||||
_connectionSortFunction: function(one, two) {
|
||||
if (one.timestamp == two.timestamp)
|
||||
return GLib.utf8_collate(one.name, two.name);
|
||||
|
||||
return two.timestamp - one.timestamp;
|
||||
},
|
||||
});
|
||||
Signals.addSignalMethods(NMConnectionBased.prototype);
|
||||
|
||||
const NMDevice = new Lang.Class({
|
||||
Name: 'NMDevice',
|
||||
Abstract: true,
|
||||
Extends: NMConnectionBased,
|
||||
|
||||
_init: function(client, device, connections) {
|
||||
this.device = device;
|
||||
this.device._delegate = this;
|
||||
this._stateChangedId = this.device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
|
||||
|
||||
// protected
|
||||
this._client = client;
|
||||
this.parent(connections);
|
||||
this._activeConnection = null;
|
||||
this._activeConnectionItem = null;
|
||||
this._autoConnectionItem = null;
|
||||
this._overflowItem = null;
|
||||
|
||||
if (this.device) {
|
||||
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
|
||||
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
|
||||
let ok;
|
||||
if (state)
|
||||
ok = this.activate();
|
||||
else
|
||||
ok = this.deactivate();
|
||||
this.statusItem = new PopupMenu.PopupSwitchMenuItem(this._getDescription(), this.connected, { style_class: 'popup-subtitle-menu-item' });
|
||||
this._statusChanged = this.statusItem.connect('toggled', Lang.bind(this, function(item, state) {
|
||||
let ok;
|
||||
if (state)
|
||||
ok = this.activate();
|
||||
else
|
||||
ok = this.deactivate();
|
||||
|
||||
if (!ok)
|
||||
item.setToggleState(!state);
|
||||
}));
|
||||
if (!ok)
|
||||
item.setToggleState(!state);
|
||||
}));
|
||||
|
||||
this._updateStatusItem();
|
||||
}
|
||||
this._updateStatusItem();
|
||||
this.section = new PopupMenu.PopupMenuSection();
|
||||
|
||||
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
|
||||
@ -352,6 +432,10 @@ const NMDevice = new Lang.Class({
|
||||
return this.device.state == NetworkManager.DeviceState.ACTIVATED;
|
||||
},
|
||||
|
||||
clearActiveConnection: function(activeConnection) {
|
||||
this.setActiveConnection(null);
|
||||
},
|
||||
|
||||
setActiveConnection: function(activeConnection) {
|
||||
if (activeConnection == this._activeConnection)
|
||||
// nothing to do
|
||||
@ -369,80 +453,13 @@ const NMDevice = new Lang.Class({
|
||||
this._queueCreateSection();
|
||||
},
|
||||
|
||||
checkConnection: function(connection) {
|
||||
let pos = this._findConnection(connection.get_uuid());
|
||||
let exists = pos != -1;
|
||||
let valid = this.connectionValid(connection);
|
||||
let similar = false;
|
||||
if (exists) {
|
||||
let existing = this._connections[pos];
|
||||
|
||||
// Check if connection changed name or id
|
||||
similar = existing.name == connection.get_id() &&
|
||||
existing.timestamp == connection._timestamp;
|
||||
}
|
||||
|
||||
if (exists && valid && similar) {
|
||||
// Nothing to do
|
||||
return;
|
||||
}
|
||||
|
||||
if (exists)
|
||||
this.removeConnection(connection);
|
||||
if (valid)
|
||||
this.addConnection(connection);
|
||||
},
|
||||
|
||||
addConnection: function(connection) {
|
||||
// record the connection
|
||||
let obj = {
|
||||
connection: connection,
|
||||
name: connection.get_id(),
|
||||
uuid: connection.get_uuid(),
|
||||
timestamp: connection._timestamp,
|
||||
item: null,
|
||||
};
|
||||
Util.insertSorted(this._connections, obj, this._connectionSortFunction);
|
||||
|
||||
this._clearSection();
|
||||
this._queueCreateSection();
|
||||
},
|
||||
|
||||
removeConnection: function(connection) {
|
||||
let pos = this._findConnection(connection.get_uuid());
|
||||
if (pos == -1) {
|
||||
// this connection was never added, nothing to do here
|
||||
return;
|
||||
}
|
||||
|
||||
let obj = this._connections[pos];
|
||||
if (obj.item)
|
||||
obj.item.destroy();
|
||||
this._connections.splice(pos, 1);
|
||||
|
||||
if (this._connections.length <= 1) {
|
||||
// We need to show the automatic connection again
|
||||
// (or in the case of NMDeviceWired, we want to hide
|
||||
// the only explicit connection)
|
||||
this._clearSection();
|
||||
this._queueCreateSection();
|
||||
}
|
||||
},
|
||||
|
||||
connectionValid: function(connection) {
|
||||
return this.device.connection_valid(connection);
|
||||
},
|
||||
|
||||
_connectionSortFunction: function(one, two) {
|
||||
if (one.timestamp == two.timestamp)
|
||||
return GLib.utf8_collate(one.name, two.name);
|
||||
|
||||
return two.timestamp - one.timestamp;
|
||||
},
|
||||
|
||||
setEnabled: function(enabled) {
|
||||
// do nothing by default, we want to keep the conneciton list visible
|
||||
// in the majority of cases (wired, wwan, vpn)
|
||||
// in the majority of cases (wired, wwan)
|
||||
},
|
||||
|
||||
getStatusLabel: function() {
|
||||
@ -500,15 +517,6 @@ const NMDevice = new Lang.Class({
|
||||
throw new TypeError('Invoking pure virtual function NMDevice.createAutomaticConnection');
|
||||
},
|
||||
|
||||
_findConnection: function(uuid) {
|
||||
for (let i = 0; i < this._connections.length; i++) {
|
||||
let obj = this._connections[i];
|
||||
if (obj.uuid == uuid)
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
|
||||
_queueCreateSection: function() {
|
||||
this._clearSection();
|
||||
Main.queueDeferredWork(this._deferredWorkId);
|
||||
@ -652,8 +660,6 @@ const NMDevice = new Lang.Class({
|
||||
return out;
|
||||
}
|
||||
});
|
||||
Signals.addSignalMethods(NMDevice.prototype);
|
||||
|
||||
|
||||
const NMDeviceWired = new Lang.Class({
|
||||
Name: 'NMDeviceWired',
|
||||
@ -868,95 +874,6 @@ const NMDeviceBluetooth = new Lang.Class({
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Not a real device, but I save a lot code this way
|
||||
const NMDeviceVPN = new Lang.Class({
|
||||
Name: 'NMDeviceVPN',
|
||||
Extends: NMDevice,
|
||||
|
||||
_init: function(client, device, connections) {
|
||||
// Disable autoconnections
|
||||
this._autoConnectionName = null;
|
||||
this.category = NMConnectionCategory.VPN;
|
||||
|
||||
this.parent(client, null, connections);
|
||||
},
|
||||
|
||||
connectionValid: function(connection) {
|
||||
return connection._type == NetworkManager.SETTING_VPN_SETTING_NAME;
|
||||
},
|
||||
|
||||
get empty() {
|
||||
return this._connections.length == 0;
|
||||
},
|
||||
|
||||
get connected() {
|
||||
if (!this._activeConnection)
|
||||
return false;
|
||||
|
||||
return this._activeConnection.vpn_state == NetworkManager.VPNConnectionState.ACTIVATED;
|
||||
},
|
||||
|
||||
setActiveConnection: function(activeConnection) {
|
||||
if (this._stateChangeId)
|
||||
this._activeConnection.disconnect(this._stateChangeId);
|
||||
this._stateChangeId = 0;
|
||||
|
||||
this.parent(activeConnection);
|
||||
|
||||
if (this._activeConnection)
|
||||
this._stateChangeId = this._activeConnection.connect('vpn-state-changed',
|
||||
Lang.bind(this, this._connectionStateChanged));
|
||||
|
||||
this.emit('state-changed');
|
||||
},
|
||||
|
||||
_shouldShowConnectionList: function() {
|
||||
return true;
|
||||
},
|
||||
|
||||
deactivate: function() {
|
||||
if (this._activeConnection)
|
||||
this._client.deactivate_connection(this._activeConnection);
|
||||
},
|
||||
|
||||
getStatusLabel: function() {
|
||||
if (!this._activeConnection) // Same as DISCONNECTED
|
||||
return null;
|
||||
|
||||
switch(this._activeConnection.vpn_state) {
|
||||
case NetworkManager.VPNConnectionState.DISCONNECTED:
|
||||
case NetworkManager.VPNConnectionState.ACTIVATED:
|
||||
return null;
|
||||
case NetworkManager.VPNConnectionState.PREPARE:
|
||||
case NetworkManager.VPNConnectionState.CONNECT:
|
||||
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
|
||||
return _("connecting...");
|
||||
case NetworkManager.VPNConnectionState.NEED_AUTH:
|
||||
/* Translators: this is for network connections that require some kind of key or password */
|
||||
return _("authentication required");
|
||||
case NetworkManager.VPNConnectionState.FAILED:
|
||||
return _("connection failed");
|
||||
default:
|
||||
log('VPN connection state invalid, is %d'.format(this.device.state));
|
||||
return 'invalid';
|
||||
}
|
||||
},
|
||||
|
||||
_connectionStateChanged: function(connection, newstate, reason) {
|
||||
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
|
||||
// FIXME: if we ever want to show something based on reason,
|
||||
// we need to convert from NetworkManager.VPNConnectionStateReason
|
||||
// to NetworkManager.DeviceStateReason
|
||||
this.emit('activation-failed', reason);
|
||||
}
|
||||
|
||||
// Differently from real NMDevices, there is no need to queue
|
||||
// an update of the menu section, contents wouldn't change anyway
|
||||
this.emit('state-changed');
|
||||
}
|
||||
});
|
||||
|
||||
const NMDeviceWireless = new Lang.Class({
|
||||
Name: 'NMDeviceWireless',
|
||||
Extends: NMDevice,
|
||||
@ -1557,6 +1474,151 @@ const NMDeviceWireless = new Lang.Class({
|
||||
},
|
||||
});
|
||||
|
||||
const NMVPNSection = new Lang.Class({
|
||||
Name: 'NMVPNSection',
|
||||
Extends: NMConnectionBased,
|
||||
category: NMConnectionCategory.VPN,
|
||||
|
||||
_init: function(client, connections) {
|
||||
this.parent(connections);
|
||||
this._client = client;
|
||||
|
||||
this.section = new PopupMenu.PopupMenuSection();
|
||||
this._deferredWorkId = Main.initializeDeferredWork(this.section.actor, Lang.bind(this, this._createSection));
|
||||
},
|
||||
|
||||
get empty() {
|
||||
return this._connections.length == 0;
|
||||
},
|
||||
|
||||
connectionValid: function(connection) {
|
||||
// filtering is done by NMApplet code
|
||||
return true;
|
||||
},
|
||||
|
||||
getStatusLabel: function(activeConnection) {
|
||||
switch(activeConnection.vpn_state) {
|
||||
case NetworkManager.VPNConnectionState.DISCONNECTED:
|
||||
case NetworkManager.VPNConnectionState.ACTIVATED:
|
||||
return null;
|
||||
case NetworkManager.VPNConnectionState.PREPARE:
|
||||
case NetworkManager.VPNConnectionState.CONNECT:
|
||||
case NetworkManager.VPNConnectionState.IP_CONFIG_GET:
|
||||
return _("connecting...");
|
||||
case NetworkManager.VPNConnectionState.NEED_AUTH:
|
||||
/* Translators: this is for network connections that require some kind of key or password */
|
||||
return _("authentication required");
|
||||
case NetworkManager.VPNConnectionState.FAILED:
|
||||
return _("connection failed");
|
||||
default:
|
||||
log('VPN connection state invalid, is %d'.format(this.device.state));
|
||||
return 'invalid';
|
||||
}
|
||||
},
|
||||
|
||||
clearActiveConnection: function(activeConnection) {
|
||||
let pos = this._findConnection(activeConnection.uuid);
|
||||
if (pos < 0)
|
||||
return;
|
||||
|
||||
let obj = this._connections[pos];
|
||||
obj.active.disconnect(obj.stateChangedId);
|
||||
obj.active = null;
|
||||
|
||||
if (obj.item) {
|
||||
obj.item.setToggleState(false);
|
||||
obj.item.setStatus(null);
|
||||
}
|
||||
},
|
||||
|
||||
setActiveConnection: function(activeConnection) {
|
||||
let pos = this._findConnection(activeConnection.uuid);
|
||||
if (pos < 0)
|
||||
return;
|
||||
|
||||
let obj = this._connections[pos];
|
||||
obj.active = activeConnection;
|
||||
obj.stateChangedId = obj.active.connect('vpn-state-changed',
|
||||
Lang.bind(this, this._connectionStateChanged));
|
||||
|
||||
if (obj.item) {
|
||||
obj.item.setToggleState(obj.active.vpn_state ==
|
||||
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||
obj.item.setStatus(this.getStatusLabel(obj.active));
|
||||
}
|
||||
},
|
||||
|
||||
_queueCreateSection: function() {
|
||||
this.section.removeAll();
|
||||
Main.queueDeferredWork(this._deferredWorkId);
|
||||
},
|
||||
|
||||
_createConnectionItem: function(obj) {
|
||||
let menuItem = new PopupMenu.PopupSwitchMenuItem(obj.name, false,
|
||||
{ style_class: 'popup-subtitle-menu-item' });
|
||||
menuItem.connect('toggled', Lang.bind(this, function(menuItem) {
|
||||
if (menuItem.state) {
|
||||
this._client.activate_connection(obj.connection, null, null, null);
|
||||
// Immediately go back to disconnected, until NM tells us to change
|
||||
menuItem.setToggleState(false);
|
||||
} else if (obj.active) {
|
||||
this._client.deactivate_connection(obj.active);
|
||||
}
|
||||
}));
|
||||
|
||||
if (obj.active) {
|
||||
menuItem.setToggleState(obj.active.vpn_state ==
|
||||
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||
menuItem.setStatus(this.getStatusLabel(obj.active));
|
||||
}
|
||||
|
||||
return menuItem;
|
||||
},
|
||||
|
||||
_createSection: function() {
|
||||
if (this._connections.length > 0) {
|
||||
this.section.actor.show();
|
||||
|
||||
for(let j = 0; j < this._connections.length; ++j) {
|
||||
let obj = this._connections[j];
|
||||
obj.item = this._createConnectionItem(obj);
|
||||
|
||||
if (j >= NUM_VISIBLE_NETWORKS) {
|
||||
if (!this._overflowItem) {
|
||||
this._overflowItem = new PopupMenu.PopupSubMenuMenuItem(_("More..."));
|
||||
this.section.addMenuItem(this._overflowItem);
|
||||
}
|
||||
this._overflowItem.menu.addMenuItem(obj.item);
|
||||
} else
|
||||
this.section.addMenuItem(obj.item);
|
||||
}
|
||||
} else {
|
||||
this.section.actor.hide()
|
||||
}
|
||||
},
|
||||
|
||||
_connectionStateChanged: function(vpnConnection, newstate, reason) {
|
||||
if (newstate == NetworkManager.VPNConnectionState.FAILED) {
|
||||
// FIXME: if we ever want to show something based on reason,
|
||||
// we need to convert from NetworkManager.VPNConnectionStateReason
|
||||
// to NetworkManager.DeviceStateReason
|
||||
this.emit('activation-failed', reason);
|
||||
}
|
||||
|
||||
let pos = this._findConnection(vpnConnection.uuid);
|
||||
if (pos >= 0) {
|
||||
let obj = this._connections[pos];
|
||||
if (obj.item) {
|
||||
obj.item.setToggleState(vpnConnection.vpn_state ==
|
||||
NetworkManager.VPNConnectionState.ACTIVATED);
|
||||
obj.item.setStatus(this.getStatusLabel(vpnConnection));
|
||||
}
|
||||
} else {
|
||||
log('Could not find connection for vpn-state-changed handler');
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const NMApplet = new Lang.Class({
|
||||
Name: 'NMApplet',
|
||||
Extends: PanelMenu.SystemStatusButton,
|
||||
@ -1622,15 +1684,9 @@ const NMApplet = new Lang.Class({
|
||||
this.menu.addMenuItem(this._devices.wwan.section);
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
|
||||
this._devices.vpn = {
|
||||
section: new PopupMenu.PopupMenuSection(),
|
||||
device: this._makeWrapperDevice(NMDeviceVPN, null),
|
||||
item: new NMWiredSectionTitleMenuItem(_("VPN Connections"))
|
||||
};
|
||||
this._devices.vpn.section.addMenuItem(this._devices.vpn.item);
|
||||
this._devices.vpn.section.addMenuItem(this._devices.vpn.device.section);
|
||||
this._devices.vpn.section.actor.hide();
|
||||
this.menu.addMenuItem(this._devices.vpn.section);
|
||||
this._vpnSection = new NMVPNSection(this._client, this._connections);
|
||||
this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed));
|
||||
this.menu.addMenuItem(this._vpnSection.section);
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
|
||||
|
||||
@ -1699,18 +1755,6 @@ const NMApplet = new Lang.Class({
|
||||
},
|
||||
|
||||
_syncSectionTitle: function(category) {
|
||||
if (category == NMConnectionCategory.VPN) {
|
||||
// Special case VPN: it's only one device (and a fake one
|
||||
// actually), and we don't show it if empty
|
||||
let device = this._devices.vpn.device;
|
||||
let section = this._devices.vpn.section;
|
||||
let item = this._devices.vpn.item;
|
||||
|
||||
section.actor.visible = !device.empty;
|
||||
item.updateForDevice(device);
|
||||
return;
|
||||
}
|
||||
|
||||
let devices = this._devices[category].devices;
|
||||
let item = this._devices[category].item;
|
||||
let section = this._devices[category].section;
|
||||
@ -1747,10 +1791,9 @@ const NMApplet = new Lang.Class({
|
||||
or this._source will be cleared */
|
||||
this._ensureSource();
|
||||
|
||||
let icon = new St.Icon({ icon_name: iconName,
|
||||
icon_size: MessageTray.NOTIFICATION_ICON_SIZE });
|
||||
let gicon = new Gio.ThemedIcon({ name: iconName });
|
||||
device._notification = new MessageTray.Notification(this._source, title, text,
|
||||
{ icon: icon });
|
||||
{ gicon: gicon });
|
||||
device._notification.setUrgency(urgency);
|
||||
device._notification.setTransient(true);
|
||||
device._notification.connect('destroy', function() {
|
||||
@ -1759,17 +1802,20 @@ const NMApplet = new Lang.Class({
|
||||
this._source.notify(device._notification);
|
||||
},
|
||||
|
||||
_onActivationFailed: function(device, reason) {
|
||||
// XXX: nm-applet has no special text depending on reason
|
||||
// but I'm not sure of this generic message
|
||||
this._notifyForDevice(device, 'network-error-symbolic',
|
||||
_("Connection failed"),
|
||||
_("Activation of network connection failed"),
|
||||
MessageTray.Urgency.HIGH);
|
||||
},
|
||||
|
||||
_makeWrapperDevice: function(wrapperClass, device) {
|
||||
let wrapper = new wrapperClass(this._client, device, this._connections);
|
||||
|
||||
wrapper._activationFailedId = wrapper.connect('activation-failed', Lang.bind(this, function(device, reason) {
|
||||
// XXX: nm-applet has no special text depending on reason
|
||||
// but I'm not sure of this generic message
|
||||
this._notifyForDevice(device, 'network-error-symbolic',
|
||||
_("Connection failed"),
|
||||
_("Activation of network connection failed"),
|
||||
MessageTray.Urgency.HIGH);
|
||||
}));
|
||||
wrapper._activationFailedId = wrapper.connect('activation-failed',
|
||||
Lang.bind(this, this._onActivationFailed));
|
||||
wrapper._deviceStateChangedId = wrapper.connect('state-changed', Lang.bind(this, function(dev) {
|
||||
this._syncSectionTitle(dev.category);
|
||||
}));
|
||||
@ -1852,7 +1898,7 @@ const NMApplet = new Lang.Class({
|
||||
for (let i = 0; i < closedConnections.length; i++) {
|
||||
let active = closedConnections[i];
|
||||
if (active._primaryDevice) {
|
||||
active._primaryDevice.setActiveConnection(null);
|
||||
active._primaryDevice.clearActiveConnection(active);
|
||||
active._primaryDevice = null;
|
||||
}
|
||||
if (active._inited) {
|
||||
@ -1919,7 +1965,7 @@ const NMApplet = new Lang.Class({
|
||||
}
|
||||
}
|
||||
} else
|
||||
a._primaryDevice = this._devices.vpn.device
|
||||
a._primaryDevice = this._vpnSection;
|
||||
|
||||
if (a._primaryDevice)
|
||||
a._primaryDevice.setActiveConnection(a);
|
||||
@ -2001,8 +2047,7 @@ const NMApplet = new Lang.Class({
|
||||
let section = connection._section;
|
||||
|
||||
if (section == NMConnectionCategory.VPN) {
|
||||
this._devices.vpn.device.removeConnection(connection);
|
||||
this._syncSectionTitle(section);
|
||||
this._vpnSection.removeConnection(connection);
|
||||
} else if (section != NMConnectionCategory.INVALID) {
|
||||
let devices = this._devices[section].devices;
|
||||
for (let i = 0; i < devices.length; i++)
|
||||
@ -2025,8 +2070,7 @@ const NMApplet = new Lang.Class({
|
||||
if (section == NMConnectionCategory.INVALID)
|
||||
return;
|
||||
if (section == NMConnectionCategory.VPN) {
|
||||
this._devices.vpn.device.checkConnection(connection);
|
||||
this._syncSectionTitle(section);
|
||||
this._vpnSection.checkConnection(connection);
|
||||
} else {
|
||||
let devices = this._devices[section].devices;
|
||||
for (let i = 0; i < devices.length; i++) {
|
||||
@ -2052,7 +2096,6 @@ const NMApplet = new Lang.Class({
|
||||
this._syncSectionTitle(NMConnectionCategory.WIRED);
|
||||
this._syncSectionTitle(NMConnectionCategory.WIRELESS);
|
||||
this._syncSectionTitle(NMConnectionCategory.WWAN);
|
||||
this._syncSectionTitle(NMConnectionCategory.VPN);
|
||||
},
|
||||
|
||||
_syncNMState: function() {
|
||||
|
@ -96,7 +96,7 @@ const Indicator = new Lang.Class({
|
||||
let minutes = time % 60;
|
||||
let hours = Math.floor(time / 60);
|
||||
let timestring;
|
||||
if (time > 60) {
|
||||
if (time >= 60) {
|
||||
if (minutes == 0) {
|
||||
timestring = ngettext("%d hour remaining", "%d hours remaining", hours).format(hours);
|
||||
} else {
|
||||
|
@ -66,7 +66,21 @@ const VolumeMenu = new Lang.Class({
|
||||
this._onControlStateChanged();
|
||||
},
|
||||
|
||||
scroll: function(direction) {
|
||||
toggleMute: function(quiet) {
|
||||
let muted = this._output.is_muted;
|
||||
this._output.change_is_muted(!muted);
|
||||
|
||||
if (muted && !quiet)
|
||||
this._notifyVolumeChange();
|
||||
|
||||
if (!muted)
|
||||
return ['audio-volume-muted-symbolic', 0];
|
||||
else
|
||||
return [this._volumeToIcon(this._output.volume),
|
||||
this._output.volume / this._volumeMax];
|
||||
},
|
||||
|
||||
scroll: function(direction, quiet) {
|
||||
let currentVolume = this._output.volume;
|
||||
|
||||
if (direction == Clutter.ScrollDirection.DOWN) {
|
||||
@ -85,7 +99,14 @@ const VolumeMenu = new Lang.Class({
|
||||
this._output.push_volume();
|
||||
}
|
||||
|
||||
this._notifyVolumeChange();
|
||||
if (!quiet)
|
||||
this._notifyVolumeChange();
|
||||
|
||||
if (this._output.is_muted)
|
||||
return ['audio-volume-muted-symbolic', 0];
|
||||
else
|
||||
return [this._volumeToIcon(this._output.volume),
|
||||
this._output.volume / this._volumeMax];
|
||||
},
|
||||
|
||||
_onControlStateChanged: function() {
|
||||
@ -221,14 +242,14 @@ const Indicator = new Lang.Class({
|
||||
this.parent('audio-volume-muted-symbolic', _("Volume"));
|
||||
|
||||
this._control = getMixerControl();
|
||||
this._volumeMenu = new VolumeMenu(this._control);
|
||||
this._volumeMenu.connect('icon-changed', Lang.bind(this, function(menu, icon) {
|
||||
this.volumeMenu = new VolumeMenu(this._control);
|
||||
this.volumeMenu.connect('icon-changed', Lang.bind(this, function(menu, icon) {
|
||||
this._hasPulseAudio = (icon != null);
|
||||
this.setIcon(icon);
|
||||
this._syncVisibility();
|
||||
}));
|
||||
|
||||
this.menu.addMenuItem(this._volumeMenu);
|
||||
this.menu.addMenuItem(this.volumeMenu);
|
||||
|
||||
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
this.menu.addSettingsAction(_("Sound Settings"), 'gnome-sound-panel.desktop');
|
||||
@ -242,6 +263,6 @@ const Indicator = new Lang.Class({
|
||||
},
|
||||
|
||||
_onScrollEvent: function(actor, event) {
|
||||
this._volumeMenu.scroll(event.get_scroll_direction());
|
||||
}
|
||||
this.volumeMenu.scroll(event.get_scroll_direction(), false);
|
||||
},
|
||||
});
|
||||
|
@ -5,6 +5,7 @@ const Clutter = imports.gi.Clutter;
|
||||
const Gdm = imports.gi.Gdm;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const GnomeDesktop = imports.gi.GnomeDesktop;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Signals = imports.signals;
|
||||
@ -128,6 +129,7 @@ const UnlockDialog = new Lang.Class({
|
||||
this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion));
|
||||
this._userVerifier.connect('show-message', Lang.bind(this, this._showMessage));
|
||||
this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete));
|
||||
this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed));
|
||||
this._userVerifier.connect('reset', Lang.bind(this, this._onReset));
|
||||
|
||||
this._userVerifier.connect('show-login-hint', Lang.bind(this, this._showLoginHint));
|
||||
@ -149,6 +151,9 @@ const UnlockDialog = new Lang.Class({
|
||||
ShellEntry.addContextMenu(this._promptEntry, { isPassword: true });
|
||||
this.setInitialKeyFocus(this._promptEntry);
|
||||
this._promptEntry.clutter_text.connect('activate', Lang.bind(this, this._doUnlock));
|
||||
this._promptEntry.clutter_text.connect('text-changed', Lang.bind(this, function() {
|
||||
this._updateOkButtonSensitivity(this._promptEntry.text.length > 0);
|
||||
}));
|
||||
|
||||
this._promptLayout.add(this._promptEntry,
|
||||
{ expand: true,
|
||||
@ -171,7 +176,7 @@ const UnlockDialog = new Lang.Class({
|
||||
default: true };
|
||||
this.setButtons([cancelButton, this._okButton]);
|
||||
|
||||
this._updateOkButton(true);
|
||||
this._updateSensitivity(true);
|
||||
|
||||
let otherUserLabel = new St.Label({ text: _("Log in as another user"),
|
||||
style_class: 'login-dialog-not-listed-label' });
|
||||
@ -194,21 +199,29 @@ const UnlockDialog = new Lang.Class({
|
||||
return false;
|
||||
}));
|
||||
|
||||
this._idleMonitor = Shell.IdleMonitor.get();
|
||||
// this dialog is only created after user activity (curtain drag or
|
||||
// escape key press), so the timeout will fire after IDLE_TIMEOUT seconds of inactivity
|
||||
this._idleMonitor = new GnomeDesktop.IdleMonitor();
|
||||
this._idleWatchId = this._idleMonitor.add_watch(IDLE_TIMEOUT * 1000, Lang.bind(this, this._escape));
|
||||
},
|
||||
|
||||
_updateOkButton: function(sensitive) {
|
||||
_updateSensitivity: function(sensitive) {
|
||||
this._promptEntry.reactive = sensitive;
|
||||
this._promptEntry.clutter_text.editable = sensitive;
|
||||
this._updateOkButtonSensitivity(sensitive && this._promptEntry.text.length > 0);
|
||||
},
|
||||
|
||||
_updateOkButtonSensitivity: function(sensitive) {
|
||||
this._okButton.button.reactive = sensitive;
|
||||
this._okButton.button.can_focus = sensitive;
|
||||
},
|
||||
|
||||
_showMessage: function(userVerifier, message, styleClass) {
|
||||
this._promptMessage.text = message;
|
||||
this._promptMessage.styleClass = styleClass;
|
||||
GdmUtil.fadeInActor(this._promptMessage);
|
||||
if (message) {
|
||||
this._promptMessage.text = message;
|
||||
this._promptMessage.styleClass = styleClass;
|
||||
GdmUtil.fadeInActor(this._promptMessage);
|
||||
} else {
|
||||
GdmUtil.fadeOutActor(this._promptMessage);
|
||||
}
|
||||
},
|
||||
|
||||
_onAskQuestion: function(verifier, serviceName, question, passwordChar) {
|
||||
@ -230,7 +243,7 @@ const UnlockDialog = new Lang.Class({
|
||||
this._promptEntry.menu.isPassword = passwordChar != '';
|
||||
|
||||
this._currentQuery = serviceName;
|
||||
this._updateOkButton(true);
|
||||
this._updateSensitivity(true);
|
||||
},
|
||||
|
||||
_showLoginHint: function(verifier, message) {
|
||||
@ -248,7 +261,7 @@ const UnlockDialog = new Lang.Class({
|
||||
// and make ourself non-reactive
|
||||
// the actual reply to GDM will be sent as soon as asked
|
||||
this._firstQuestionAnswer = this._promptEntry.text;
|
||||
this._updateOkButton(false);
|
||||
this._updateSensitivity(false);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -258,7 +271,7 @@ const UnlockDialog = new Lang.Class({
|
||||
let query = this._currentQuery;
|
||||
this._currentQuery = null;
|
||||
|
||||
this._updateOkButton(false);
|
||||
this._updateSensitivity(false);
|
||||
|
||||
this._userVerifier.answerQuery(query, this._promptEntry.text);
|
||||
},
|
||||
@ -272,6 +285,17 @@ const UnlockDialog = new Lang.Class({
|
||||
this.emit('failed');
|
||||
},
|
||||
|
||||
_onVerificationFailed: function() {
|
||||
this._currentQuery = null;
|
||||
this._firstQuestion = true;
|
||||
|
||||
this._promptEntry.text = '';
|
||||
this._promptEntry.clutter_text.set_password_char('\u25cf');
|
||||
this._promptEntry.menu.isPassword = true;
|
||||
|
||||
this._updateSensitivity(false);
|
||||
},
|
||||
|
||||
_escape: function() {
|
||||
this._userVerifier.cancel();
|
||||
this.emit('failed');
|
||||
|
@ -9,11 +9,11 @@ const Pango = imports.gi.Pango;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Tp = imports.gi.TelepathyGLib;
|
||||
const UPowerGlib = imports.gi.UPowerGlib;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const GnomeSession = imports.misc.gnomeSession;
|
||||
const LoginManager = imports.misc.loginManager;
|
||||
const Main = imports.ui.main;
|
||||
const PanelMenu = imports.ui.panelMenu;
|
||||
const PopupMenu = imports.ui.popupMenu;
|
||||
@ -26,6 +26,7 @@ const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
|
||||
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
|
||||
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
||||
const LOCK_ENABLED_KEY = 'lock-enabled';
|
||||
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||
|
||||
const DIALOG_ICON_SIZE = 64;
|
||||
|
||||
@ -73,11 +74,6 @@ const UserAvatarWidget = new Lang.Class({
|
||||
let file = Gio.File.new_for_path(iconFile);
|
||||
this.actor.child = null;
|
||||
this.actor.style = 'background-image: url("%s");'.format(iconFile);
|
||||
|
||||
// AccountsService uses a fixed location for avatar images, so
|
||||
// we need to clear out all cached data to pick up image changes,
|
||||
// see https://bugzilla.gnome.org/show_bug.cgi?id=679268
|
||||
this.actor.clear_background_image();
|
||||
} else {
|
||||
this.actor.style = null;
|
||||
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
|
||||
@ -192,7 +188,7 @@ const IMStatusChooserItem = new Lang.Class({
|
||||
item = new IMStatusItem(_("Idle"), 'user-idle-symbolic');
|
||||
this._combo.addMenuItem(item, IMStatus.IDLE);
|
||||
|
||||
item = new IMStatusItem(_("Unavailable"), 'user-offline-symbolic');
|
||||
item = new IMStatusItem(_("Offline"), 'user-offline-symbolic');
|
||||
this._combo.addMenuItem(item, IMStatus.OFFLINE);
|
||||
|
||||
this._combo.connect('active-item-changed',
|
||||
@ -487,10 +483,11 @@ const UserMenuButton = new Lang.Class({
|
||||
this._presence = new GnomeSession.Presence();
|
||||
this._session = new GnomeSession.SessionManager();
|
||||
this._haveShutdown = true;
|
||||
this._haveSuspend = true;
|
||||
|
||||
this._accountMgr = Tp.AccountManager.dup();
|
||||
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
this._loginManager = LoginManager.getLoginManager();
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
|
||||
this._iconBox = new St.Bin();
|
||||
@ -570,14 +567,16 @@ const UserMenuButton = new Lang.Class({
|
||||
// the lockdown setting changes, which should be close enough.
|
||||
this.menu.connect('open-state-changed', Lang.bind(this,
|
||||
function(menu, open) {
|
||||
if (open)
|
||||
this._updateHaveShutdown();
|
||||
if (!open)
|
||||
return;
|
||||
|
||||
this._updateHaveShutdown();
|
||||
this._updateHaveSuspend();
|
||||
this._updateHaveHibernate();
|
||||
}));
|
||||
this._lockdownSettings.connect('changed::' + DISABLE_LOG_OUT_KEY,
|
||||
Lang.bind(this, this._updateHaveShutdown));
|
||||
|
||||
this._upClient.connect('notify::can-suspend', Lang.bind(this, this._updateSuspendOrPowerOff));
|
||||
|
||||
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
|
||||
this._sessionUpdated();
|
||||
},
|
||||
@ -613,19 +612,19 @@ const UserMenuButton = new Lang.Class({
|
||||
_updateSwitchUser: function() {
|
||||
let allowSwitch = !this._lockdownSettings.get_boolean(DISABLE_USER_SWITCH_KEY);
|
||||
let multiUser = this._userManager.can_switch() && this._userManager.has_multiple_users;
|
||||
let multiSession = Gdm.get_session_ids().length > 1;
|
||||
|
||||
this._loginScreenItem.label.set_text(multiUser ? _("Switch User")
|
||||
: _("Switch Session"));
|
||||
this._loginScreenItem.actor.visible = allowSwitch && (multiUser || multiSession);
|
||||
this._loginScreenItem.actor.visible = allowSwitch && multiUser;
|
||||
},
|
||||
|
||||
_updateLogout: function() {
|
||||
let allowLogout = !this._lockdownSettings.get_boolean(DISABLE_LOG_OUT_KEY);
|
||||
let alwaysShow = global.settings.get_boolean(ALWAYS_SHOW_LOG_OUT_KEY);
|
||||
let systemAccount = this._user.system_account;
|
||||
let localAccount = this._user.local_account;
|
||||
let multiUser = this._userManager.has_multiple_users;
|
||||
let multiSession = Gdm.get_session_ids().length > 1;
|
||||
|
||||
this._logoutItem.actor.visible = allowLogout && (multiUser || multiSession);
|
||||
this._logoutItem.actor.visible = allowLogout && (alwaysShow || multiUser || multiSession || systemAccount || !localAccount);
|
||||
},
|
||||
|
||||
_updateLockScreen: function() {
|
||||
@ -649,9 +648,22 @@ const UserMenuButton = new Lang.Class({
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSuspendOrPowerOff: function() {
|
||||
this._haveSuspend = this._upClient.get_can_suspend();
|
||||
_updateHaveSuspend: function() {
|
||||
this._loginManager.canSuspend(Lang.bind(this,
|
||||
function(result) {
|
||||
this._haveSuspend = result;
|
||||
this._updateSuspendOrPowerOff();
|
||||
}));
|
||||
},
|
||||
|
||||
_updateHaveHibernate: function() {
|
||||
this._loginManager.canHibernate(Lang.bind(this,
|
||||
function(result) {
|
||||
this._haveHibernate = result;
|
||||
}));
|
||||
},
|
||||
|
||||
_updateSuspendOrPowerOff: function() {
|
||||
if (!this._suspendOrPowerOffItem)
|
||||
return;
|
||||
|
||||
@ -748,7 +760,7 @@ const UserMenuButton = new Lang.Class({
|
||||
item = new PopupMenu.PopupSeparatorMenuItem();
|
||||
this.menu.addMenuItem(item);
|
||||
|
||||
item = new PopupMenu.PopupMenuItem(_("System Settings"));
|
||||
item = new PopupMenu.PopupMenuItem(_("Settings"));
|
||||
item.connect('activate', Lang.bind(this, this._onPreferencesActivate));
|
||||
this.menu.addMenuItem(item);
|
||||
this._systemSettings = item;
|
||||
@ -762,7 +774,7 @@ const UserMenuButton = new Lang.Class({
|
||||
this._loginScreenItem = item;
|
||||
|
||||
item = new PopupMenu.PopupMenuItem(_("Log Out"));
|
||||
item.connect('activate', Lang.bind(this, this._onQuitSessionActivate));
|
||||
item.connect('activate', Lang.bind(this, this.logOut));
|
||||
this.menu.addMenuItem(item);
|
||||
this._logoutItem = item;
|
||||
|
||||
@ -827,12 +839,11 @@ const UserMenuButton = new Lang.Class({
|
||||
_onLoginScreenActivate: function() {
|
||||
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||
Main.overview.hide();
|
||||
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY))
|
||||
Main.screenShield.lock(false);
|
||||
Main.screenShield.lock(false);
|
||||
Gdm.goto_login_session_sync(null);
|
||||
},
|
||||
|
||||
_onQuitSessionActivate: function() {
|
||||
logOut: function() {
|
||||
Main.overview.hide();
|
||||
this._session.LogoutRemote(0);
|
||||
},
|
||||
@ -844,24 +855,60 @@ const UserMenuButton = new Lang.Class({
|
||||
this._session.RebootRemote();
|
||||
},
|
||||
|
||||
shutdown: function() {
|
||||
this._session.ShutdownRemote();
|
||||
},
|
||||
|
||||
suspend: function() {
|
||||
if (!this._haveSuspend)
|
||||
return false;
|
||||
|
||||
// Ensure we only suspend after locking the screen
|
||||
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY)) {
|
||||
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||
Main.screenShield.disconnect(tmpId);
|
||||
|
||||
this._loginManager.suspend();
|
||||
}));
|
||||
|
||||
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||
Main.screenShield.lock(true);
|
||||
} else {
|
||||
this._loginManager.suspend();
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
hibernate: function() {
|
||||
if (!this._haveHibernate)
|
||||
return false;
|
||||
|
||||
// Ensure we only suspend after locking the screen
|
||||
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY)) {
|
||||
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||
Main.screenShield.disconnect(tmpId);
|
||||
|
||||
this._loginManager.hibernate();
|
||||
}));
|
||||
|
||||
this.menu.close(BoxPointer.PopupAnimation.NONE);
|
||||
Main.screenShield.lock(true);
|
||||
} else {
|
||||
this._loginManager.hibernate();
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onSuspendOrPowerOffActivate: function() {
|
||||
Main.overview.hide();
|
||||
|
||||
if (this._haveShutdown &&
|
||||
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||
this._session.ShutdownRemote();
|
||||
this.shutdown();
|
||||
} else {
|
||||
if (this._screenSaverSettings.get_boolean(LOCK_ENABLED_KEY)) {
|
||||
let tmpId = Main.screenShield.connect('lock-screen-shown', Lang.bind(this, function() {
|
||||
Main.screenShield.disconnect(tmpId);
|
||||
|
||||
this._upClient.suspend_sync(null);
|
||||
}));
|
||||
|
||||
Main.screenShield.lock(true);
|
||||
} else {
|
||||
this._upClient.suspend_sync(null);
|
||||
}
|
||||
this.suspend();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -1,6 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
@ -19,6 +20,7 @@ const Tweener = imports.ui.tweener;
|
||||
const Wanda = imports.ui.wanda;
|
||||
const WorkspacesView = imports.ui.workspacesView;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
|
||||
const FocusTrap = new Lang.Class({
|
||||
Name: 'FocusTrap',
|
||||
@ -141,6 +143,16 @@ const ViewSelector = new Lang.Class({
|
||||
// accessing the properties.
|
||||
this.constrainHeight = new Clutter.BindConstraint({ source: this._pageArea,
|
||||
coordinate: Clutter.BindCoordinate.HEIGHT });
|
||||
|
||||
global.display.add_keybinding('toggle-application-view',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Lang.bind(this, this._showWithAppsPage));
|
||||
},
|
||||
|
||||
_showWithAppsPage: function() {
|
||||
Main.overview.show();
|
||||
this._showAppsButton.set_checked(true);
|
||||
},
|
||||
|
||||
show: function() {
|
||||
@ -184,7 +196,7 @@ const ViewSelector = new Lang.Class({
|
||||
})
|
||||
});;
|
||||
this._pageArea.add_actor(page);
|
||||
return page
|
||||
return page;
|
||||
},
|
||||
|
||||
_showPage: function(page) {
|
||||
|
@ -1,11 +1,9 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GdkPixbuf = imports.gi.GdkPixbuf;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
@ -169,15 +167,8 @@ const WandaSearchProvider = new Lang.Class({
|
||||
// only one which speaks the truth!
|
||||
'name': capitalize(fish[0]),
|
||||
'createIcon': function(iconSize) {
|
||||
// for DND only (maybe could be improved)
|
||||
// DON'T use St.Icon here, it crashes the shell
|
||||
// (dnd.js code assumes it can query the actor size
|
||||
// without parenting it, while StWidget accesses
|
||||
// StThemeNode in get_preferred_width/height, which
|
||||
// triggers an assertion failure)
|
||||
return St.TextureCache.get_default().load_icon_name(null,
|
||||
'face-smile',
|
||||
iconSize);
|
||||
return new St.Icon({ gicon: Gio.icon_new_for_string('face-smile'),
|
||||
icon_size: iconSize });
|
||||
}
|
||||
}]);
|
||||
},
|
||||
|
@ -39,6 +39,8 @@ const WindowAttentionHandler = new Lang.Class({
|
||||
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||
|
||||
let notification = new MessageTray.Notification(source, title, banner);
|
||||
notification.setForFeedback(true);
|
||||
|
||||
source.notify(notification);
|
||||
|
||||
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
|
||||
|
@ -12,6 +12,7 @@ const AltTab = imports.ui.altTab;
|
||||
const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
const WINDOW_ANIMATION_TIME = 0.25;
|
||||
@ -101,32 +102,32 @@ const WindowManager = new Lang.Class({
|
||||
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
|
||||
|
||||
this._workspaceSwitcherPopup = null;
|
||||
Meta.keybindings_set_custom_handler('switch-to-workspace-left',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-to-workspace-left',
|
||||
Util.wrapKeybinding(Lang.bind(this, this._showWorkspaceSwitcher), true));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-to-workspace-right',
|
||||
Util.wrapKeybinding(Lang.bind(this, this._showWorkspaceSwitcher), true));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-to-workspace-up',
|
||||
Util.wrapKeybinding(Lang.bind(this, this._showWorkspaceSwitcher), true));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-to-workspace-down',
|
||||
Util.wrapKeybinding(Lang.bind(this, this._showWorkspaceSwitcher), true));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-move-to-workspace-left',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-to-workspace-right',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-move-to-workspace-right',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-to-workspace-up',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-move-to-workspace-up',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-to-workspace-down',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-move-to-workspace-down',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('move-to-workspace-left',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('move-to-workspace-right',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('move-to-workspace-up',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('move-to-workspace-down',
|
||||
Lang.bind(this, this._showWorkspaceSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-windows',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-windows',
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-group',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-group',
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-windows-backward',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-windows-backward',
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-group-backward',
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-group-backward',
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-panels',
|
||||
Lang.bind(this, this._startA11ySwitcher));
|
||||
Meta.keybindings_set_custom_handler('internal-keybinding-switch-panels',
|
||||
Util.wrapKeybinding(Lang.bind(this, this._startA11ySwitcher), true));
|
||||
global.display.add_keybinding('open-application-menu',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
@ -552,30 +553,32 @@ const WindowManager = new Lang.Class({
|
||||
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
||||
if (!tabPopup.show(backwards, binding.get_name(), binding.get_mask()))
|
||||
tabPopup.destroy();
|
||||
return true;
|
||||
},
|
||||
|
||||
_startA11ySwitcher : function(display, screen, window, binding) {
|
||||
let modifiers = binding.get_modifiers();
|
||||
let backwards = modifiers & Meta.VirtualModifier.SHIFT_MASK;
|
||||
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
|
||||
return true;
|
||||
},
|
||||
|
||||
_openAppMenu : function(display, screen, window, event, binding) {
|
||||
Main.panel.openAppMenu();
|
||||
return true;
|
||||
},
|
||||
|
||||
_showWorkspaceSwitcher : function(display, screen, window, binding) {
|
||||
if (screen.n_workspaces == 1)
|
||||
return;
|
||||
return false;
|
||||
|
||||
let [action,,,direction] = binding.get_name().split('-');
|
||||
let [,,action,,,direction] = binding.get_name().split('-');
|
||||
let direction = Meta.MotionDirection[direction.toUpperCase()];
|
||||
let newWs;
|
||||
|
||||
|
||||
if (direction != Meta.MotionDirection.UP &&
|
||||
direction != Meta.MotionDirection.DOWN)
|
||||
return;
|
||||
return false;
|
||||
|
||||
if (action == 'switch')
|
||||
newWs = this.actionMoveWorkspace(direction);
|
||||
@ -591,6 +594,8 @@ const WindowManager = new Lang.Class({
|
||||
}
|
||||
this._workspaceSwitcherPopup.display(direction, newWs.index());
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
actionMoveWorkspace: function(direction) {
|
||||
|
@ -33,21 +33,13 @@ const DRAGGING_WINDOW_OPACITY = 100;
|
||||
const BUTTON_LAYOUT_SCHEMA = 'org.gnome.shell.overrides';
|
||||
const BUTTON_LAYOUT_KEY = 'button-layout';
|
||||
|
||||
// Define a layout scheme for small window counts. For larger
|
||||
// counts we fall back to an algorithm. We need more schemes here
|
||||
// unless we have a really good algorithm.
|
||||
|
||||
// Each triplet is [xCenter, yCenter, scale] where the scale
|
||||
// is relative to the width of the workspace.
|
||||
const POSITIONS = {
|
||||
1: [[0.5, 0.5, 0.95]],
|
||||
2: [[0.25, 0.5, 0.48], [0.75, 0.5, 0.48]],
|
||||
3: [[0.25, 0.25, 0.48], [0.75, 0.25, 0.48], [0.5, 0.75, 0.48]],
|
||||
4: [[0.25, 0.25, 0.47], [0.75, 0.25, 0.47], [0.75, 0.75, 0.47], [0.25, 0.75, 0.47]],
|
||||
5: [[0.165, 0.25, 0.32], [0.495, 0.25, 0.32], [0.825, 0.25, 0.32], [0.25, 0.75, 0.32], [0.75, 0.75, 0.32]]
|
||||
};
|
||||
// Used in _orderWindowsPermutations, 5! = 120 which is probably the highest we can go
|
||||
const POSITIONING_PERMUTATIONS_MAX = 5;
|
||||
// When calculating a layout, we calculate the scale of windows and the percent
|
||||
// of the available area the new layout uses. If the values for the new layout,
|
||||
// when weighted with the values as below, are worse than the previous layout's,
|
||||
// we stop looking for a new layout and use the previous layout.
|
||||
// Otherwise, we keep looking for a new layout.
|
||||
const LAYOUT_SCALE_WEIGHT = 1;
|
||||
const LAYOUT_SPACE_WEIGHT = 0.1;
|
||||
|
||||
function _interpolate(start, end, step) {
|
||||
return start + (end - start) * step;
|
||||
@ -167,6 +159,24 @@ const WindowClone = new Lang.Class({
|
||||
this._selected = false;
|
||||
},
|
||||
|
||||
get slot() {
|
||||
let x, y, w, h;
|
||||
|
||||
if (this.inDrag) {
|
||||
x = this.dragOrigX;
|
||||
y = this.dragOrigY;
|
||||
w = this.actor.width * this.dragOrigScale;
|
||||
h = this.actor.height * this.dragOrigScale;
|
||||
} else {
|
||||
x = this.actor.x;
|
||||
y = this.actor.y;
|
||||
w = this.actor.width * this.actor.scale_x;
|
||||
h = this.actor.height * this.actor.scale_y;
|
||||
}
|
||||
|
||||
return [x, y, w, h];
|
||||
},
|
||||
|
||||
setStackAbove: function (actor) {
|
||||
this._stackAbove = actor;
|
||||
if (this.inDrag || this._zooming)
|
||||
@ -443,6 +453,11 @@ const WindowOverlay = new Lang.Class({
|
||||
this._updateCaptionId = metaWindow.connect('notify::title',
|
||||
Lang.bind(this, function(w) {
|
||||
this.title.text = w.title;
|
||||
// we need this for the next call to get_preferred_width
|
||||
// to return useful results
|
||||
this.title.set_size(-1, -1);
|
||||
|
||||
this._repositionSelf();
|
||||
}));
|
||||
|
||||
let button = new St.Button({ style_class: 'window-close' });
|
||||
@ -504,15 +519,16 @@ const WindowOverlay = new Lang.Class({
|
||||
transition: 'easeOutQuad' });
|
||||
},
|
||||
|
||||
chromeWidth: function () {
|
||||
return this.closeButton.width - this.closeButton._overlap;
|
||||
},
|
||||
|
||||
chromeHeights: function () {
|
||||
return [this.closeButton.height - this.closeButton._overlap,
|
||||
this.title.height + this.title._spacing];
|
||||
},
|
||||
|
||||
_repositionSelf: function() {
|
||||
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
|
||||
this.updatePositions(cloneX, cloneY, cloneWidth, cloneHeight, false);
|
||||
},
|
||||
|
||||
/**
|
||||
* @cloneX: x position of windowClone
|
||||
* @cloneY: y position of windowClone
|
||||
@ -550,9 +566,8 @@ const WindowOverlay = new Lang.Class({
|
||||
else
|
||||
button.set_position(Math.floor(buttonX), Math.floor(buttonY));
|
||||
|
||||
if (!title.fullWidth)
|
||||
title.fullWidth = title.width;
|
||||
let titleWidth = Math.min(title.fullWidth, cloneWidth);
|
||||
let [titleMinWidth, titleNatWidth] = title.get_preferred_width(-1);
|
||||
let titleWidth = Math.max(titleMinWidth, Math.min(titleNatWidth, cloneWidth));
|
||||
|
||||
let titleX = cloneX + (cloneWidth - titleWidth) / 2;
|
||||
let titleY = cloneY + cloneHeight + title._spacing;
|
||||
@ -668,6 +683,280 @@ const WindowPositionFlags = {
|
||||
ANIMATE: 1 << 1
|
||||
};
|
||||
|
||||
const LayoutStrategy = new Lang.Class({
|
||||
Name: 'LayoutStrategy',
|
||||
Abstract: true,
|
||||
|
||||
_init: function(monitor, rowSpacing, columnSpacing, bottomPadding) {
|
||||
this._monitor = monitor;
|
||||
this._rowSpacing = rowSpacing;
|
||||
this._columnSpacing = columnSpacing;
|
||||
this._bottomPadding = bottomPadding;
|
||||
},
|
||||
|
||||
_newRow: function() {
|
||||
// Row properties:
|
||||
//
|
||||
// * x, y are the position of row, relative to area
|
||||
//
|
||||
// * width, height are the scaled versions of fullWidth, fullHeight
|
||||
//
|
||||
// * width also has the spacing in between windows. It's not in
|
||||
// fullWidth, as the spacing is constant, whereas fullWidth is
|
||||
// meant to be scaled
|
||||
//
|
||||
// * neither height/fullHeight have any sort of spacing or padding
|
||||
//
|
||||
// * if cellWidth is present, all windows in the row will occupy
|
||||
// the space of cellWidth, centered.
|
||||
return { x: 0, y: 0,
|
||||
width: 0, height: 0,
|
||||
fullWidth: 0, fullHeight: 0,
|
||||
cellWidth: 0,
|
||||
windows: [] };
|
||||
},
|
||||
|
||||
// Compute the size and fancy scale for @window using the
|
||||
// base scale, @scale.
|
||||
//
|
||||
// Returns a list structure: [ scaledWidth, scaledHeight, fancyScale ]
|
||||
// where scaledWidth and scaledHeight are the window's
|
||||
// width and height, scaled by fancyScale for convenience.
|
||||
_computeWindowSizeAndScale: function(window, scale) {
|
||||
let width = window.actor.width;
|
||||
let height = window.actor.height;
|
||||
let ratio;
|
||||
|
||||
if (width > height)
|
||||
ratio = width / this._monitor.width;
|
||||
else
|
||||
ratio = height / this._monitor.height;
|
||||
|
||||
let fancyScale = (2 / (1 + ratio)) * scale;
|
||||
return [width * fancyScale, height * fancyScale, fancyScale];
|
||||
},
|
||||
|
||||
// Compute the size of each row, by assigning to the properties
|
||||
// row.width, row.height, row.fullWidth, row.fullHeight, and
|
||||
// (optionally) row.cellWidth, for each row in @layout.rows.
|
||||
// This method is intended to be called by subclasses.
|
||||
_computeRowSizes: function(layout) {
|
||||
throw new Error('_computeRowSizes not implemented');
|
||||
},
|
||||
|
||||
// Compute strategy-specific window slots for each window in
|
||||
// @windows, given the @layout. The strategy may also use @layout
|
||||
// as strategy-specific storage.
|
||||
//
|
||||
// This must calculate:
|
||||
// * maxColumns - The maximum number of columns used by the layout.
|
||||
// * gridWidth - The total width used by the grid, unscaled, unspaced.
|
||||
// * gridHeight - The totial height used by the grid, unscaled, unspaced.
|
||||
// * rows - A list of rows, which should be instantiated by _newRow.
|
||||
computeLayout: function(windows, layout) {
|
||||
throw new Error('computeLayout not implemented');
|
||||
},
|
||||
|
||||
// Given @layout, compute the overall scale and space of the layout.
|
||||
// The scale is the individual, non-fancy scale of each window, and
|
||||
// the space is the percentage of the available area eventually
|
||||
// used by the layout.
|
||||
|
||||
// This method does not return anything, but instead installs
|
||||
// the properties "scale" and "space" on @layout directly.
|
||||
//
|
||||
// Make sure to call this methods before calling computeWindowSlots(),
|
||||
// as it depends on the scale property installed in @layout here.
|
||||
computeScaleAndSpace: function(layout) {
|
||||
let area = layout.area;
|
||||
|
||||
let hspacing = (layout.maxColumns - 1) * this._columnSpacing;
|
||||
let vspacing = (layout.numRows - 1) * this._rowSpacing + this._bottomPadding;
|
||||
|
||||
let spacedWidth = area.width - hspacing;
|
||||
let spacedHeight = area.height - vspacing;
|
||||
|
||||
let horizontalScale = spacedWidth / layout.gridWidth;
|
||||
let verticalScale = spacedHeight / layout.gridHeight;
|
||||
|
||||
// Thumbnails should be less than 70% of the original size
|
||||
let scale = Math.min(horizontalScale, verticalScale, WINDOW_CLONE_MAXIMUM_SCALE);
|
||||
|
||||
let scaledLayoutWidth = layout.gridWidth * scale + hspacing;
|
||||
let scaledLayoutHeight = layout.gridHeight * scale + vspacing;
|
||||
let space = (scaledLayoutWidth * scaledLayoutHeight) / (area.width * area.height);
|
||||
|
||||
layout.scale = scale;
|
||||
layout.space = space;
|
||||
},
|
||||
|
||||
computeWindowSlots: function(layout, area) {
|
||||
this._computeRowSizes(layout);
|
||||
|
||||
let { rows: rows, scale: scale, state: state } = layout;
|
||||
|
||||
let slots = [];
|
||||
|
||||
let y = 0;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.x = area.x + (area.width - row.width) / 2;
|
||||
row.y = area.y + y;
|
||||
y += row.height + this._rowSpacing;
|
||||
}
|
||||
|
||||
let height = y - this._rowSpacing + this._bottomPadding;
|
||||
let baseY = (area.height - height) / 2;
|
||||
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.y += baseY;
|
||||
let baseX = row.x;
|
||||
for (let j = 0; j < row.windows.length; j++) {
|
||||
let window = row.windows[j];
|
||||
|
||||
let [width, height, s] = this._computeWindowSizeAndScale(window, scale);
|
||||
let y = row.y + row.height - height;
|
||||
|
||||
let x = baseX;
|
||||
if (row.cellWidth) {
|
||||
x += (row.cellWidth - width) / 2;
|
||||
width = row.cellWidth;
|
||||
}
|
||||
|
||||
slots.push([x, y, s]);
|
||||
baseX += width + this._columnSpacing;
|
||||
}
|
||||
}
|
||||
return slots;
|
||||
}
|
||||
});
|
||||
|
||||
const UnalignedLayoutStrategy = new Lang.Class({
|
||||
Name: 'UnalignedLayoutStrategy',
|
||||
Extends: LayoutStrategy,
|
||||
|
||||
_computeRowSizes: function(layout) {
|
||||
let { rows: rows, scale: scale } = layout;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.width = row.fullWidth * scale + (row.windows.length - 1) * this._columnSpacing;
|
||||
row.height = row.fullHeight * scale;
|
||||
}
|
||||
},
|
||||
|
||||
_keepSameRow: function(row, window, width, idealRowWidth) {
|
||||
if (row.fullWidth + width <= idealRowWidth)
|
||||
return true;
|
||||
|
||||
let oldRatio = row.fullWidth / idealRowWidth;
|
||||
let newRatio = (row.fullWidth + width) / idealRowWidth;
|
||||
|
||||
if (Math.abs(1 - newRatio) < Math.abs(1 - oldRatio))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
computeLayout: function(windows, layout) {
|
||||
let numRows = layout.numRows;
|
||||
|
||||
let rows = [];
|
||||
let totalWidth = 0;
|
||||
for (let i = 0; i < windows.length; i++) {
|
||||
totalWidth += windows[i].actor.width;
|
||||
}
|
||||
|
||||
let idealRowWidth = totalWidth / numRows;
|
||||
let windowIdx = 0;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let col = 0;
|
||||
let row = this._newRow();
|
||||
rows.push(row);
|
||||
|
||||
for (; windowIdx < windows.length; windowIdx++) {
|
||||
let window = windows[windowIdx];
|
||||
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||
row.fullHeight = Math.max(row.fullHeight, height);
|
||||
|
||||
// either new width is < idealWidth or new width is nearer from idealWidth then oldWidth
|
||||
if (this._keepSameRow(row, window, width, idealRowWidth) || (i == numRows - 1)) {
|
||||
row.windows.push(window);
|
||||
row.fullWidth += width;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let gridHeight = 0;
|
||||
let maxRow;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let row = rows[i];
|
||||
if (!maxRow || row.fullWidth > maxRow.fullWidth)
|
||||
maxRow = row;
|
||||
gridHeight += row.fullHeight;
|
||||
}
|
||||
|
||||
layout.rows = rows;
|
||||
layout.maxColumns = maxRow.windows.length;
|
||||
layout.gridWidth = maxRow.fullWidth;
|
||||
layout.gridHeight = gridHeight;
|
||||
}
|
||||
});
|
||||
|
||||
const GridLayoutStrategy = new Lang.Class({
|
||||
Name: 'GridLayoutStrategy',
|
||||
Extends: LayoutStrategy,
|
||||
|
||||
_computeRowSizes: function(layout) {
|
||||
let { rows: rows, scale: scale } = layout;
|
||||
|
||||
let gridWidth = layout.numColumns * layout.maxWindowWidth;
|
||||
let hspacing = (layout.numColumns - 1) * this._columnSpacing;
|
||||
for (let i = 0; i < rows.length; i++) {
|
||||
let row = rows[i];
|
||||
row.fullWidth = layout.gridWidth;
|
||||
row.fullHeight = layout.maxWindowHeight;
|
||||
|
||||
row.width = row.fullWidth * scale + hspacing;
|
||||
row.height = row.fullHeight * scale;
|
||||
row.cellWidth = layout.maxWindowWidth * scale;
|
||||
}
|
||||
},
|
||||
|
||||
computeLayout: function(windows, layout) {
|
||||
let { numRows: numRows, numColumns: numColumns } = layout;
|
||||
let rows = [];
|
||||
let windowIdx = 0;
|
||||
|
||||
let maxWindowWidth = 0;
|
||||
let maxWindowHeight = 0;
|
||||
for (let i = 0; i < numRows; i++) {
|
||||
let row = this._newRow();
|
||||
rows.push(row);
|
||||
for (; windowIdx < windows.length; windowIdx++) {
|
||||
if (row.windows.length >= numColumns)
|
||||
break;
|
||||
|
||||
let window = windows[windowIdx];
|
||||
row.windows.push(window);
|
||||
|
||||
let [width, height] = this._computeWindowSizeAndScale(window, 1);
|
||||
maxWindowWidth = Math.max(maxWindowWidth, width);
|
||||
maxWindowHeight = Math.max(maxWindowHeight, height);
|
||||
}
|
||||
}
|
||||
|
||||
layout.rows = rows;
|
||||
layout.maxColumns = numColumns;
|
||||
layout.gridWidth = numColumns * maxWindowWidth;
|
||||
layout.gridHeight = numRows * maxWindowHeight;
|
||||
layout.maxWindowWidth = maxWindowWidth;
|
||||
layout.maxWindowHeight = maxWindowHeight;
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* @metaWorkspace: a #Meta.Workspace, or null
|
||||
*/
|
||||
@ -689,7 +978,7 @@ const Workspace = new Lang.Class({
|
||||
// Without this the drop area will be overlapped.
|
||||
this._windowOverlaysGroup.set_size(0, 0);
|
||||
|
||||
this.actor = new Clutter.Group();
|
||||
this.actor = new St.Widget({ style_class: 'window-picker' });
|
||||
this.actor.set_size(0, 0);
|
||||
|
||||
this._dropRect = new Clutter.Rectangle({ opacity: 0 });
|
||||
@ -729,6 +1018,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
this._positionWindowsFlags = 0;
|
||||
this._positionWindowsId = 0;
|
||||
|
||||
this._currentLayout = null;
|
||||
},
|
||||
|
||||
setGeometry: function(x, y, width, height) {
|
||||
@ -763,225 +1054,6 @@ const Workspace = new Lang.Class({
|
||||
return this._windows.length == 0;
|
||||
},
|
||||
|
||||
// Only use this for n <= 20 say
|
||||
_factorial: function(n) {
|
||||
let result = 1;
|
||||
for (let i = 2; i <= n; i++)
|
||||
result *= i;
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* _permutation:
|
||||
* @permutationIndex: An integer from [0, list.length!)
|
||||
* @list: (inout): Array of objects to permute; will be modified in place
|
||||
*
|
||||
* Given an integer between 0 and length of array, re-order the array in-place
|
||||
* into a permutation denoted by the index.
|
||||
*/
|
||||
_permutation: function(permutationIndex, list) {
|
||||
for (let j = 2; j <= list.length; j++) {
|
||||
let firstIndex = (permutationIndex % j);
|
||||
let secondIndex = j - 1;
|
||||
// Swap
|
||||
let tmp = list[firstIndex];
|
||||
list[firstIndex] = list[secondIndex];
|
||||
list[secondIndex] = tmp;
|
||||
permutationIndex = Math.floor(permutationIndex / j);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* _forEachPermutations:
|
||||
* @list: Array
|
||||
* @func: Function which takes a single array argument
|
||||
*
|
||||
* Call @func with each permutation of @list as an argument.
|
||||
*/
|
||||
_forEachPermutations: function(list, func) {
|
||||
let nCombinations = this._factorial(list.length);
|
||||
for (let i = 0; i < nCombinations; i++) {
|
||||
let listCopy = list.concat();
|
||||
this._permutation(i, listCopy);
|
||||
func(listCopy);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* _computeWindowMotion:
|
||||
* @actor: A #WindowClone's #ClutterActor
|
||||
* @slot: An element of #POSITIONS
|
||||
* @slotGeometry: Layout of @slot
|
||||
*
|
||||
* Returns a number corresponding to how much perceived motion
|
||||
* would be involved in moving the window to the given slot.
|
||||
* Currently this is the square of the distance between the
|
||||
* centers.
|
||||
*/
|
||||
_computeWindowMotion: function (actor, slot) {
|
||||
let [xCenter, yCenter, fraction] = slot;
|
||||
let xDelta, yDelta, distanceSquared;
|
||||
let actorWidth, actorHeight;
|
||||
|
||||
let x = actor.x;
|
||||
let y = actor.y;
|
||||
let scale = actor.scale_x;
|
||||
|
||||
if (actor._delegate.inDrag) {
|
||||
x = actor._delegate.dragOrigX;
|
||||
y = actor._delegate.dragOrigY;
|
||||
scale = actor._delegate.dragOrigScale;
|
||||
}
|
||||
|
||||
actorWidth = actor.width * scale;
|
||||
actorHeight = actor.height * scale;
|
||||
xDelta = x + actorWidth / 2.0 - xCenter * this._width - this._x;
|
||||
yDelta = y + actorHeight / 2.0 - yCenter * this._height - this._y;
|
||||
distanceSquared = xDelta * xDelta + yDelta * yDelta;
|
||||
|
||||
return distanceSquared;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsPermutations:
|
||||
*
|
||||
* Iterate over all permutations of the windows, and determine the
|
||||
* permutation which has the least total motion.
|
||||
*/
|
||||
_orderWindowsPermutations: function (clones, slots) {
|
||||
let minimumMotionPermutation = null;
|
||||
let minimumMotion = -1;
|
||||
let permIndex = 0;
|
||||
this._forEachPermutations(clones, Lang.bind(this, function (permutation) {
|
||||
let motion = 0;
|
||||
for (let i = 0; i < permutation.length; i++) {
|
||||
let cloneActor = permutation[i].actor;
|
||||
let slot = slots[i];
|
||||
|
||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
||||
|
||||
motion += delta;
|
||||
|
||||
// Bail out early if we're already larger than the
|
||||
// previous best
|
||||
if (minimumMotionPermutation != null &&
|
||||
motion > minimumMotion)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (minimumMotionPermutation == null || motion < minimumMotion) {
|
||||
minimumMotionPermutation = permutation;
|
||||
minimumMotion = motion;
|
||||
}
|
||||
permIndex++;
|
||||
}));
|
||||
return minimumMotionPermutation;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsGreedy:
|
||||
*
|
||||
* Iterate over available slots in order, placing into each one the window
|
||||
* we find with the smallest motion to that slot.
|
||||
*/
|
||||
_orderWindowsGreedy: function(clones, slots) {
|
||||
let result = [];
|
||||
let slotIndex = 0;
|
||||
// Copy since we mutate below
|
||||
let clonesCopy = clones.concat();
|
||||
for (let i = 0; i < slots.length; i++) {
|
||||
let slot = slots[i];
|
||||
let minimumMotionIndex = -1;
|
||||
let minimumMotion = -1;
|
||||
for (let j = 0; j < clonesCopy.length; j++) {
|
||||
let cloneActor = clonesCopy[j].actor;
|
||||
let delta = this._computeWindowMotion(cloneActor, slot);
|
||||
if (minimumMotionIndex == -1 || delta < minimumMotion) {
|
||||
minimumMotionIndex = j;
|
||||
minimumMotion = delta;
|
||||
}
|
||||
}
|
||||
result.push(clonesCopy[minimumMotionIndex]);
|
||||
clonesCopy.splice(minimumMotionIndex, 1);
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* _orderWindowsByMotionAndStartup:
|
||||
* @windows: Array of #MetaWindow
|
||||
* @slots: Array of slots
|
||||
*
|
||||
* Returns a copy of @windows, ordered in such a way that they require least motion
|
||||
* to move to the final screen coordinates of @slots. Ties are broken in a stable
|
||||
* fashion by the order in which the windows were created.
|
||||
*/
|
||||
_orderWindowsByMotionAndStartup: function(clones, slots) {
|
||||
clones.sort(function(w1, w2) {
|
||||
return w2.metaWindow.get_stable_sequence() - w1.metaWindow.get_stable_sequence();
|
||||
});
|
||||
if (clones.length <= POSITIONING_PERMUTATIONS_MAX)
|
||||
return this._orderWindowsPermutations(clones, slots);
|
||||
else
|
||||
return this._orderWindowsGreedy(clones, slots);
|
||||
},
|
||||
|
||||
/**
|
||||
* _getSlotGeometry:
|
||||
* @slot: A layout slot
|
||||
*
|
||||
* Returns: the screen-relative [x, y, width, height]
|
||||
* of a given window layout slot.
|
||||
*/
|
||||
_getSlotGeometry: function(slot) {
|
||||
let [xCenter, yCenter, fraction] = slot;
|
||||
|
||||
let width = this._width * fraction;
|
||||
let height = this._height * fraction;
|
||||
|
||||
let x = this._x + xCenter * this._width - width / 2 ;
|
||||
let y = this._y + yCenter * this._height - height / 2;
|
||||
|
||||
return [x, y, width, height];
|
||||
},
|
||||
|
||||
/**
|
||||
* _computeWindowLayout:
|
||||
* @metaWindow: A #MetaWindow
|
||||
* @slot: A layout slot
|
||||
*
|
||||
* Given a window and slot to fit it in, compute its
|
||||
* screen-relative [x, y, scale] where scale applies
|
||||
* to both X and Y directions.
|
||||
*/
|
||||
_computeWindowLayout: function(metaWindow, slot) {
|
||||
let [x, y, width, height] = this._getSlotGeometry(slot);
|
||||
|
||||
let rect = metaWindow.get_outer_rect();
|
||||
let buttonOuterHeight, captionHeight;
|
||||
let buttonOuterWidth = 0;
|
||||
|
||||
if (this._windowOverlays[0]) {
|
||||
[buttonOuterHeight, captionHeight] = this._windowOverlays[0].chromeHeights();
|
||||
buttonOuterWidth = this._windowOverlays[0].chromeWidth();
|
||||
} else
|
||||
[buttonOuterHeight, captionHeight] = [0, 0];
|
||||
|
||||
let scale = Math.min((width - buttonOuterWidth) / rect.width,
|
||||
(height - buttonOuterHeight - captionHeight) / rect.height,
|
||||
WINDOW_CLONE_MAXIMUM_SCALE);
|
||||
|
||||
x = Math.floor(x + (width - scale * rect.width) / 2);
|
||||
|
||||
// We want to center the window in case we have just one
|
||||
if (metaWindow.get_workspace().n_windows == 1)
|
||||
y = Math.floor(y + (height - scale * rect.height) / 2);
|
||||
else
|
||||
y = Math.floor(y + height - rect.height * scale - captionHeight);
|
||||
|
||||
return [x, y, scale];
|
||||
},
|
||||
|
||||
setReservedSlot: function(clone) {
|
||||
if (this._reservedSlot == clone)
|
||||
return;
|
||||
@ -990,6 +1062,7 @@ const Workspace = new Lang.Class({
|
||||
clone = null;
|
||||
|
||||
this._reservedSlot = clone;
|
||||
this._currentLayout = null;
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||
},
|
||||
|
||||
@ -1020,6 +1093,11 @@ const Workspace = new Lang.Class({
|
||||
}
|
||||
|
||||
let clones = this._windows.slice();
|
||||
|
||||
clones.sort(function(a, b) {
|
||||
return a.metaWindow.get_stable_sequence() - b.metaWindow.get_stable_sequence();
|
||||
});
|
||||
|
||||
if (this._reservedSlot)
|
||||
clones.push(this._reservedSlot);
|
||||
|
||||
@ -1027,8 +1105,7 @@ const Workspace = new Lang.Class({
|
||||
let animate = flags & WindowPositionFlags.ANIMATE;
|
||||
|
||||
// Start the animations
|
||||
let slots = this._computeAllWindowSlots(clones.length);
|
||||
clones = this._orderWindowsByMotionAndStartup(clones, slots);
|
||||
let slots = this._computeAllWindowSlots(clones);
|
||||
|
||||
let currentWorkspace = global.screen.get_active_workspace();
|
||||
let isOnCurrentWorkspace = this.metaWorkspace == null || this.metaWorkspace == currentWorkspace;
|
||||
@ -1045,10 +1122,11 @@ const Workspace = new Lang.Class({
|
||||
if (clone.inDrag)
|
||||
continue;
|
||||
|
||||
let [x, y, scale] = this._computeWindowLayout(metaWindow, slot);
|
||||
let [x, y, scale] = slot;
|
||||
|
||||
if (overlay && initialPositioning)
|
||||
overlay.hide();
|
||||
|
||||
if (animate && isOnCurrentWorkspace) {
|
||||
if (!metaWindow.showing_on_its_workspace()) {
|
||||
/* Hidden windows should fade in and grow
|
||||
@ -1072,6 +1150,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
this._animateClone(clone, overlay, x, y, scale, initialPositioning);
|
||||
} else {
|
||||
// cancel any active tweens (otherwise they might override our changes)
|
||||
Tweener.removeTweens(clone.actor);
|
||||
clone.actor.set_position(x, y);
|
||||
clone.actor.set_scale(scale, scale);
|
||||
this._updateWindowOverlayPositions(clone, overlay, x, y, scale, false);
|
||||
@ -1113,11 +1193,11 @@ const Workspace = new Lang.Class({
|
||||
},
|
||||
|
||||
_updateWindowOverlayPositions: function(clone, overlay, x, y, scale, animate) {
|
||||
if (!overlay)
|
||||
return;
|
||||
|
||||
let [cloneWidth, cloneHeight] = clone.actor.get_size();
|
||||
cloneWidth = scale * cloneWidth;
|
||||
cloneHeight = scale * cloneHeight;
|
||||
if (overlay)
|
||||
overlay.updatePositions(x, y, cloneWidth, cloneHeight, animate);
|
||||
overlay.updatePositions(x, y, cloneWidth * scale, cloneHeight * scale, animate);
|
||||
},
|
||||
|
||||
_showWindowOverlay: function(clone, overlay, fade) {
|
||||
@ -1211,6 +1291,7 @@ const Workspace = new Lang.Class({
|
||||
this._cursorX = x;
|
||||
this._cursorY = y;
|
||||
|
||||
this._currentLayout = null;
|
||||
this._repositionWindowsId = Mainloop.timeout_add(750,
|
||||
Lang.bind(this, this._delayedWindowRepositioning));
|
||||
},
|
||||
@ -1263,6 +1344,7 @@ const Workspace = new Lang.Class({
|
||||
clone.actor.set_position (this._x, this._y);
|
||||
}
|
||||
|
||||
this._currentLayout = null;
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE);
|
||||
},
|
||||
|
||||
@ -1300,6 +1382,8 @@ const Workspace = new Lang.Class({
|
||||
|
||||
// Animate the full-screen to Overview transition.
|
||||
zoomToOverview : function() {
|
||||
this._currentLayout = null;
|
||||
|
||||
// Position and scale the windows.
|
||||
if (Main.overview.animationInProgress)
|
||||
this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL);
|
||||
@ -1464,29 +1548,108 @@ const Workspace = new Lang.Class({
|
||||
}
|
||||
},
|
||||
|
||||
_computeWindowSlot : function(windowIndex, numberOfWindows) {
|
||||
if (numberOfWindows in POSITIONS)
|
||||
return POSITIONS[numberOfWindows][windowIndex];
|
||||
_isBetterLayout: function(oldLayout, newLayout) {
|
||||
if (oldLayout.scale === undefined)
|
||||
return true;
|
||||
|
||||
// If we don't have a predefined scheme for this window count,
|
||||
// arrange the windows in a grid pattern.
|
||||
let gridWidth = Math.ceil(Math.sqrt(numberOfWindows));
|
||||
let gridHeight = Math.ceil(numberOfWindows / gridWidth);
|
||||
let spacePower = (newLayout.space - oldLayout.space) * LAYOUT_SPACE_WEIGHT;
|
||||
let scalePower = (newLayout.scale - oldLayout.scale) * LAYOUT_SCALE_WEIGHT;
|
||||
|
||||
let fraction = 0.95 * (1. / gridWidth);
|
||||
|
||||
let xCenter = (.5 / gridWidth) + ((windowIndex) % gridWidth) / gridWidth;
|
||||
let yCenter = (.5 / gridHeight) + Math.floor((windowIndex / gridWidth)) / gridHeight;
|
||||
|
||||
return [xCenter, yCenter, fraction];
|
||||
if (newLayout.scale > oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||
// Win win -- better scale and better space
|
||||
return true;
|
||||
} else if (newLayout.scale > oldLayout.scale && newLayout.space <= oldLayout.space) {
|
||||
// Keep new layout only if scale gain outweights aspect space loss
|
||||
return scalePower > spacePower;
|
||||
} else if (newLayout.scale <= oldLayout.scale && newLayout.space > oldLayout.space) {
|
||||
// Keep new layout only if aspect space gain outweights scale loss
|
||||
return spacePower > scalePower;
|
||||
} else {
|
||||
// Lose -- worse scale and space
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
_computeAllWindowSlots: function(totalWindows) {
|
||||
let slots = [];
|
||||
for (let i = 0; i < totalWindows; i++) {
|
||||
slots.push(this._computeWindowSlot(i, totalWindows));
|
||||
_computeLayout: function(windows, area, rowSpacing, columnSpacing, bottomPadding) {
|
||||
// We look for the largest scale that allows us to fit the
|
||||
// largest row/tallest column on the workspace.
|
||||
|
||||
let lastLayout = {};
|
||||
|
||||
for (let numRows = 1; ; numRows++) {
|
||||
let numColumns = Math.ceil(windows.length / numRows);
|
||||
|
||||
// If adding a new row does not change column count just stop
|
||||
// (for instance: 9 windows, with 3 rows -> 3 columns, 4 rows ->
|
||||
// 3 columns as well => just use 3 rows then)
|
||||
if (numColumns == lastLayout.numColumns)
|
||||
break;
|
||||
|
||||
let strategyClass = numRows > 2 ? GridLayoutStrategy : UnalignedLayoutStrategy;
|
||||
let strategy = new strategyClass(this._monitor, rowSpacing, columnSpacing, bottomPadding);
|
||||
|
||||
let layout = { area: area, strategy: strategy, numRows: numRows, numColumns: numColumns };
|
||||
strategy.computeLayout(windows, layout);
|
||||
strategy.computeScaleAndSpace(layout);
|
||||
|
||||
if (!this._isBetterLayout(lastLayout, layout))
|
||||
break;
|
||||
|
||||
lastLayout = layout;
|
||||
}
|
||||
return slots;
|
||||
|
||||
return lastLayout;
|
||||
},
|
||||
|
||||
_rectEqual: function(one, two) {
|
||||
if (one == two)
|
||||
return true;
|
||||
|
||||
return (one.x == two.x &&
|
||||
one.y == two.y &&
|
||||
one.width == two.width &&
|
||||
one.height == two.height);
|
||||
},
|
||||
|
||||
_computeAllWindowSlots: function(windows) {
|
||||
let totalWindows = windows.length;
|
||||
let node = this.actor.get_theme_node();
|
||||
|
||||
// Window grid spacing
|
||||
let columnSpacing = node.get_length('-horizontal-spacing');
|
||||
let rowSpacing = node.get_length('-vertical-spacing');
|
||||
|
||||
if (!totalWindows)
|
||||
return [];
|
||||
|
||||
let closeButtonHeight, captionHeight;
|
||||
if (this._windowOverlays.length) {
|
||||
// All of the overlays have the same chrome sizes,
|
||||
// so just pick the first one.
|
||||
let overlay = this._windowOverlays[0];
|
||||
[closeButtonHeight, captionHeight] = overlay.chromeHeights();
|
||||
} else {
|
||||
[closeButtonHeight, captionHeight] = [0, 0];
|
||||
}
|
||||
|
||||
rowSpacing += captionHeight;
|
||||
|
||||
let area = { x: this._x, y: this._y, width: this._width, height: this._height };
|
||||
area.y += closeButtonHeight;
|
||||
area.height -= closeButtonHeight;
|
||||
|
||||
if (!this._currentLayout)
|
||||
this._currentLayout = this._computeLayout(windows, area, rowSpacing, columnSpacing, captionHeight);
|
||||
|
||||
let layout = this._currentLayout;
|
||||
let strategy = layout.strategy;
|
||||
|
||||
if (!this._rectEqual(area, layout.area)) {
|
||||
layout.area = area;
|
||||
strategy.computeScaleAndSpace(layout);
|
||||
}
|
||||
|
||||
return strategy.computeWindowSlots(layout, area);
|
||||
},
|
||||
|
||||
_onCloneSelected : function (clone, time) {
|
||||
|
@ -620,9 +620,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
if (!Meta.prefs_get_dynamic_workspaces())
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
let canCreateWorkspaces = Meta.prefs_get_dynamic_workspaces();
|
||||
let spacing = this.actor.get_theme_node().get_length('spacing');
|
||||
|
||||
this._dropWorkspace = -1;
|
||||
@ -647,7 +645,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
if (i == this._dropPlaceholderPos)
|
||||
targetBottom += this._dropPlaceholder.get_height();
|
||||
|
||||
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
|
||||
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler && canCreateWorkspaces) {
|
||||
placeholderPos = i;
|
||||
break;
|
||||
} else if (y > targetBottom && y <= nextTargetTop) {
|
||||
@ -785,7 +783,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
this._indicator.raise_top();
|
||||
},
|
||||
|
||||
removeThumbmails: function(start, count) {
|
||||
removeThumbnails: function(start, count) {
|
||||
let currentPos = 0;
|
||||
for (let k = 0; k < this._thumbnails.length; k++) {
|
||||
let thumbnail = this._thumbnails[k];
|
||||
|
@ -51,7 +51,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._clipY = 0;
|
||||
this._clipWidth = 0;
|
||||
this._clipHeight = 0;
|
||||
this._workspaceRatioSpacing = 0;
|
||||
this._spacing = 0;
|
||||
this._animating = false; // tweening
|
||||
this._scrolling = false; // swipe-scrolling
|
||||
@ -72,6 +71,7 @@ const WorkspacesView = new Lang.Class({
|
||||
this._workspaces[w].actor.reparent(this.actor);
|
||||
this._workspaces[activeWorkspaceIndex].actor.raise_top();
|
||||
|
||||
this._extraWorkspaces = [];
|
||||
this._updateExtraWorkspaces();
|
||||
|
||||
// Position/scale the desktop windows and their children after the
|
||||
@ -83,8 +83,6 @@ const WorkspacesView = new Lang.Class({
|
||||
Lang.bind(this, function() {
|
||||
for (let w = 0; w < this._workspaces.length; w++)
|
||||
this._workspaces[w].zoomToOverview();
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||
this._extraWorkspaces[w].zoomToOverview();
|
||||
}));
|
||||
@ -124,7 +122,6 @@ const WorkspacesView = new Lang.Class({
|
||||
if (!this._settings.get_boolean('workspaces-only-on-primary'))
|
||||
return;
|
||||
|
||||
this._extraWorkspaces = [];
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (i == Main.layoutManager.primaryIndex)
|
||||
@ -139,23 +136,20 @@ const WorkspacesView = new Lang.Class({
|
||||
},
|
||||
|
||||
_destroyExtraWorkspaces: function() {
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
|
||||
for (let m = 0; m < this._extraWorkspaces.length; m++)
|
||||
this._extraWorkspaces[m].destroy();
|
||||
this._extraWorkspaces = null;
|
||||
this._extraWorkspaces = [];
|
||||
},
|
||||
|
||||
setGeometry: function(x, y, width, height, spacing) {
|
||||
setGeometry: function(x, y, width, height) {
|
||||
if (this._x == x && this._y == y &&
|
||||
this._width == width && this._height == height)
|
||||
return;
|
||||
|
||||
this._width = width;
|
||||
this._height = height;
|
||||
this._x = x;
|
||||
this._y = y;
|
||||
this._workspaceRatioSpacing = spacing;
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setGeometry(x, y, width, height);
|
||||
@ -191,8 +185,6 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
for (let w = 0; w < this._workspaces.length; w++)
|
||||
this._workspaces[w].zoomFromOverview();
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let w = 0; w < this._extraWorkspaces.length; w++)
|
||||
this._extraWorkspaces[w].zoomFromOverview();
|
||||
},
|
||||
@ -204,8 +196,6 @@ const WorkspacesView = new Lang.Class({
|
||||
syncStacking: function(stackIndices) {
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].syncStacking(stackIndices);
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].syncStacking(stackIndices);
|
||||
},
|
||||
@ -234,7 +224,7 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
Tweener.removeTweens(workspace.actor);
|
||||
|
||||
let y = (w - active) * (this._height + this._spacing + this._workspaceRatioSpacing);
|
||||
let y = (w - active) * (this._height + this._spacing);
|
||||
|
||||
if (showAnimation) {
|
||||
let params = { y: y,
|
||||
@ -376,9 +366,6 @@ const WorkspacesView = new Lang.Class({
|
||||
this._firstDragMotion = false;
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||
if (!this._extraWorkspaces)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
|
||||
}
|
||||
@ -392,9 +379,6 @@ const WorkspacesView = new Lang.Class({
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setReservedSlot(null);
|
||||
|
||||
if (!this._extraWorkspaces)
|
||||
return;
|
||||
for (let i = 0; i < this._extraWorkspaces.length; i++)
|
||||
this._extraWorkspaces[i].setReservedSlot(null);
|
||||
},
|
||||
@ -541,6 +525,16 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._notifyOpacityId = 0;
|
||||
this._swipeScrollBeginId = 0;
|
||||
this._swipeScrollEndId = 0;
|
||||
|
||||
this._settings = new Gio.Settings({ schema: OVERRIDE_SCHEMA });
|
||||
this._settings.connect('changed::dynamic-workspaces',
|
||||
Lang.bind(this, this._updateSwitcherVisibility));
|
||||
},
|
||||
|
||||
_updateSwitcherVisibility: function() {
|
||||
this._thumbnailsBox.actor.visible =
|
||||
this._settings.get_boolean('dynamic-workspaces') ||
|
||||
global.screen.n_workspaces > 1;
|
||||
},
|
||||
|
||||
show: function() {
|
||||
@ -563,6 +557,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
|
||||
this._controls.show();
|
||||
this._thumbnailsBox.show();
|
||||
this._updateSwitcherVisibility();
|
||||
|
||||
this._updateWorkspacesViews();
|
||||
|
||||
@ -864,28 +859,23 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
|
||||
let clipWidth = width - controlsVisible;
|
||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
||||
let clipHeight = fullHeight;
|
||||
let clipX = rtl ? x + controlsVisible : x;
|
||||
let clipY = y + (fullHeight - clipHeight) / 2;
|
||||
|
||||
let widthAdjust = this._zoomOut ? controlsNatural : controlsVisible;
|
||||
widthAdjust += Main.overview._spacing;
|
||||
width -= widthAdjust;
|
||||
if (rtl)
|
||||
x += widthAdjust;
|
||||
|
||||
height = (fullHeight / fullWidth) * width;
|
||||
let difference = fullHeight - height;
|
||||
y += difference / 2;
|
||||
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
let m = 0;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (i == this._primaryIndex) {
|
||||
this._workspacesViews[m].setClipRect(clipX, clipY,
|
||||
clipWidth, clipHeight);
|
||||
this._workspacesViews[m].setGeometry(x, y, width, height,
|
||||
difference);
|
||||
this._workspacesViews[m].setGeometry(x, y, width, height);
|
||||
m++;
|
||||
} else if (!this._workspacesOnlyOnPrimary) {
|
||||
this._workspacesViews[m].setClipRect(monitors[i].x,
|
||||
@ -895,7 +885,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._workspacesViews[m].setGeometry(monitors[i].x,
|
||||
monitors[i].y,
|
||||
monitors[i].width,
|
||||
monitors[i].height, 0);
|
||||
monitors[i].height);
|
||||
m++;
|
||||
}
|
||||
}
|
||||
@ -932,16 +922,17 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
let m = 0;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
if (this._workspacesOnlyOnPrimaryChanged &&
|
||||
if (this._workspacesOnlyOnPrimary &&
|
||||
i != this._primaryIndex)
|
||||
continue;
|
||||
|
||||
// Assume workspaces are only added at the end
|
||||
for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) {
|
||||
let metaWorkspace = global.screen.get_workspace_by_index(w);
|
||||
this._workspaces[m++][w] =
|
||||
this._workspaces[m][w] =
|
||||
new Workspace.Workspace(metaWorkspace, i);
|
||||
}
|
||||
m++;
|
||||
}
|
||||
|
||||
this._thumbnailsBox.addThumbnails(oldNumWorkspaces, newNumWorkspaces - oldNumWorkspaces);
|
||||
@ -968,12 +959,13 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
this._thumbnailsBox.removeThumbmails(removedIndex, removedNum);
|
||||
this._thumbnailsBox.removeThumbnails(removedIndex, removedNum);
|
||||
}
|
||||
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].updateWorkspaces(oldNumWorkspaces,
|
||||
newNumWorkspaces);
|
||||
this._updateSwitcherVisibility();
|
||||
},
|
||||
|
||||
_updateZoom : function() {
|
||||
|
@ -1 +1,19 @@
|
||||
dist_man_MANS = gnome-shell.1
|
||||
XSLTPROC_FLAGS = \
|
||||
--nonet \
|
||||
--stringparam man.output.quietly 1 \
|
||||
--stringparam funcsynopsis.style ansi \
|
||||
--stringparam man.th.extra1.suppress 1 \
|
||||
--stringparam man.authors.section.enabled 0 \
|
||||
--stringparam man.copyright.section.enabled 0
|
||||
|
||||
.xml.1:
|
||||
$(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $<
|
||||
|
||||
man_MANS = \
|
||||
gnome-shell.1
|
||||
|
||||
xml_files = $(man_MANS:.1=.xml)
|
||||
|
||||
EXTRA_DIST = $(xml_files)
|
||||
|
||||
DISTCLEANFILES = $(man_MANS)
|
||||
|
@ -1,94 +0,0 @@
|
||||
.\" Copyright (c) 2009, Marcelo Jorge Vieira (metal) <metal@alucinados.com>
|
||||
.\"
|
||||
.\" This is free documentation; you can redistribute it and/or
|
||||
.\" modify it under the terms of the GNU General Public License as
|
||||
.\" published by the Free Software Foundation; either version 2 of
|
||||
.\" the License, or (at your option) any later version.
|
||||
.\"
|
||||
.\" The GNU General Public License's references to "object code"
|
||||
.\" and "executables" are to be interpreted as the output of any
|
||||
.\" document formatting or typesetting system, including
|
||||
.\" intermediate and printed output.
|
||||
.\"
|
||||
.\" This manual 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 General Public License for more details.
|
||||
.\"
|
||||
.\" You should have received a copy of the GNU General Public
|
||||
.\" License along with this manual; if not, write to the Free
|
||||
.\" Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
.\" Boston, MA 02111-1301 USA.
|
||||
.TH GNOME-SHELL 1
|
||||
.SH NAME
|
||||
gnome-shell \- Graphical shell for the GNOME desktop
|
||||
|
||||
.SH SYNOPSIS
|
||||
.B gnome-shell [options]
|
||||
|
||||
.SH DESCRIPTION
|
||||
GNOME Shell provides core user interface functions for the GNOME 3
|
||||
desktop, like switching to windows and launching applications. GNOME
|
||||
Shell takes advantage of the capabilities of modern graphics hardware
|
||||
and introduces innovative user interface concepts to provide a
|
||||
visually attractive and easy to use experience.
|
||||
|
||||
.SH OPTIONS
|
||||
|
||||
.TP
|
||||
.B \-\-replace
|
||||
Replace the running window manager
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-disable
|
||||
Disable connection to the session manager
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-client-id=ID
|
||||
Specify session management ID
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sm-save-file=FILE
|
||||
Initialize session from savefile
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-screen=SCREEN
|
||||
X screen to use
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-d, \-\-display=DISPLAY
|
||||
X display to use
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-sync
|
||||
Make X calls synchronous
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-version
|
||||
Print version and exit
|
||||
.br
|
||||
|
||||
.TP
|
||||
.B \-\-help
|
||||
Display help and exit
|
||||
.br
|
||||
|
||||
.SH BUGS
|
||||
The bug tracker can be reached by visiting the website
|
||||
\fIhttps://bugzilla.gnome.org/buglist.cgi?product=gnome-shell\fR
|
||||
|
||||
Before sending a bug report, please verify that you have the latest
|
||||
version of gnome-shell. Many bugs (major and minor) are fixed at each
|
||||
release, and if yours is out of date, the problem may already have
|
||||
been solved.
|
||||
|
||||
.SH ADDITIONAL INFORMATION
|
||||
|
||||
For further information, visit the website \fIhttp://live.gnome.org/GnomeShell\fR
|
159
man/gnome-shell.xml
Normal file
159
man/gnome-shell.xml
Normal file
@ -0,0 +1,159 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
|
||||
<refentry id="gnome-shell">
|
||||
|
||||
<refentryinfo>
|
||||
<title>gnome-shell</title>
|
||||
<productname>gnome-shell</productname>
|
||||
|
||||
<authorgroup>
|
||||
<author>
|
||||
<contrib>wrote the original gnome-shell man page</contrib>
|
||||
<firstname>Marcelo Jorge</firstname>
|
||||
<surname>Vieira</surname>
|
||||
<email>metal@alucinados.com</email>
|
||||
</author>
|
||||
</authorgroup>
|
||||
|
||||
</refentryinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle>gnome-shell</refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>gnome-shell</refname>
|
||||
<refpurpose>Graphical shell for the GNOME desktop</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<cmdsynopsis>
|
||||
<command>gnome-shell <arg choice="opt" rep="repeat">OPTION</arg></command>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>GNOME shell provides core user
|
||||
interface functions for the GNOME 3 desktop, like switching
|
||||
to windows and launching applications. GNOME shell takes
|
||||
advantage of the capabilities of modern graphics hardware
|
||||
and introduces innovative user interface concepts to provide
|
||||
a visually attractive and easy to use experience.</para>
|
||||
|
||||
<para>gnome-shell is a required component of
|
||||
the GNOME desktop, i.e. it is listed in the
|
||||
RequiredComponents field of
|
||||
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>.
|
||||
It is started in the window manager phase of the session.
|
||||
</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Options</title>
|
||||
|
||||
<variablelist>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-r</option>, <option>--replace</option></term>
|
||||
|
||||
<listitem><para>Replace the running window manager</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--sm-disable</option></term>
|
||||
|
||||
<listitem><para>Disable connection to the session manager</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--sm-client-id=<replaceable>ID</replaceable></option></term>
|
||||
|
||||
<listitem><para>Specify session management <replaceable>ID</replaceable></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--sm-save-file=<replaceable>FILE</replaceable></option></term>
|
||||
|
||||
<listitem><para>Initialize session from <replaceable>FILE</replaceable></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--screen=<replaceable>SCREEN</replaceable></option></term>
|
||||
|
||||
<listitem><para>X screen to use</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-d</option>, <option>--display=<replaceable>DISPLAY</replaceable></option></term>
|
||||
|
||||
<listitem><para>X Display to use</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--sync</option></term>
|
||||
|
||||
<listitem><para>Make X calls synchronous</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--version</option></term>
|
||||
|
||||
<listitem><para>Print version and exit</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--help</option></term>
|
||||
|
||||
<listitem><para>Display help and exit</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--mode=<replaceable>MODE</replaceable></option></term>
|
||||
|
||||
<listitem><para>Use a specific mode, e.g. "gdm" for login screen</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--list-modes</option></term>
|
||||
|
||||
<listitem><para>List possible modes and exit</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Files</title>
|
||||
|
||||
<para>
|
||||
<filename>/usr/share/gnome-session/sessions/gnome.session</filename>,
|
||||
<filename>/usr/share/applications/gnome-shell.desktop</filename>.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Bugs</title>
|
||||
|
||||
<para>The bug tracker can be reached by visiting the
|
||||
website <ulink url="https://bugzilla.gnome.org/buglist.cgi?product=gnome-shell">https://bugzilla.gnome.org/buglist.cgi?product=gnome-shell</ulink>.
|
||||
Before sending a bug report, please verify that you have
|
||||
the latest version of gnome-shell. Many bugs (major and
|
||||
minor) are fixed at each release, and if yours is out of
|
||||
date, the problem may already have been solved.</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Additional Information</title>
|
||||
|
||||
<para>For further information, visit the website
|
||||
<ulink url="http://live.gnome.org/GnomeShell">http://live.gnome.org/GnomeShell</ulink>.</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
181
po/be.po
181
po/be.po
@ -5,8 +5,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-21 20:02+0300\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 12:05+0300\n"
|
||||
"Last-Translator: Kasia Bondarava <kasia.bondarava@gmail.com>\n"
|
||||
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
|
||||
"Language: be\n"
|
||||
@ -34,6 +34,14 @@ msgstr "Сістэма"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Паказаць абшар апавяшчэнняў"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Паказаць усе праграмы"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Адкрыць праграмнае меню"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Абалонка GNOME"
|
||||
@ -152,34 +160,43 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Клавіятурны скарот для адкрыцця праграмнага меню."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Клавіятурны скарот для рэжыму \"Паказаць праграмы\" у Аглядзе Заняткаў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Клавіятурны скарот для ўключэння/выключэння абшару апавяшчэнняў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Клавіятурны скарот для ўключэння запісу экрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Клавіятурны скарот для запуску/спынення ўбудаванага запісу экрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Ужываная клавіятура"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Від ужыванай клавіятуры."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Частата змены кадраў для запісу скрынкасту."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -187,11 +204,11 @@ msgstr ""
|
||||
"Частата змены кадраў выніковага скрынкасту, запісанага пры дапамозе абалонкі "
|
||||
"GNOME (кадраў на секунду)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Канвеер gstreamer для кадавання скрынкастаў"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -212,16 +229,16 @@ msgstr ""
|
||||
"канвеер таксама можа самастойна абслугоўваць свой вывад. Напрыклад, гэта "
|
||||
"можа спатрэбіцца для пасылкі вываду на icecast-сервер пры дапамозе "
|
||||
"shout2send ці пад. Калі не настаўлена ці настаўлена пустое значэнне, будзе "
|
||||
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc min_quantizer=13 "
|
||||
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux\" "
|
||||
"і запісвае ў WEBM з дапамогай кодэка "
|
||||
"VP8. %T ўжываецца ў якасці замены аптымальнай для сістэмы колькасці ніцяў."
|
||||
"ўжыты прадвызначаны канвеер. Цяпер выкарыстоўваецца \"vp8enc "
|
||||
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||
"queue ! webmmux\" і запісвае ў WEBM з дапамогай кодэка VP8. %T ўжываецца ў "
|
||||
"якасці замены аптымальнай для сістэмы колькасці ніцяў."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Пашырэнне файла для захавання скрынкасту"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -246,11 +263,11 @@ msgstr ""
|
||||
"Абярыце пашырэнне, каб настроіць графу з выплыўным спісам, якая знаходзіцца "
|
||||
"вышэй."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Сеанс..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Уваход"
|
||||
@ -258,37 +275,42 @@ msgstr "Уваход"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Няма ў спісе?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Скасаваць"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Увайсці"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Акно ўваходу"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Праца сістэмы"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Прыпыніць камп'ютар"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Перазапусціць сістэму"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Выключыць камп'ютар"
|
||||
|
||||
@ -339,7 +361,7 @@ msgstr "НАСТРОЙКІ"
|
||||
msgid "New Window"
|
||||
msgstr "Новае акно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Выдаліць са спіса ўпадабанага"
|
||||
|
||||
@ -503,16 +525,16 @@ msgstr "На гэтым тыдні"
|
||||
msgid "Next week"
|
||||
msgstr "На наступным тыдні"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Зменныя прыстасаванні"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Адкрыць у %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Выняць"
|
||||
|
||||
@ -883,7 +905,7 @@ msgstr "Рэдагаваць конт"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Невядомая прычына"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Паказаць праграмы"
|
||||
|
||||
@ -891,14 +913,14 @@ msgstr "Паказаць праграмы"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Настройкі даты і часу"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Адкрыць каляндар"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B, %Y"
|
||||
|
||||
@ -1009,11 +1031,11 @@ msgstr "Усталяваць"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Сцягнуць і ўсталяваць \"%s\" з extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "трэй"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавіятура"
|
||||
@ -1066,19 +1088,19 @@ msgstr "Паглядзець выточны код"
|
||||
msgid "Web Page"
|
||||
msgstr "Сеціўная старонка"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Адкрыць"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Выдаліць"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Абшар апавяшчэнняў"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Сістэмная інфармацыя"
|
||||
|
||||
@ -1142,7 +1164,7 @@ msgstr "Увядзіце загад:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1150,7 +1172,7 @@ msgstr[0] "%d новае паведамленне"
|
||||
msgstr[1] "%d новыя паведамленні"
|
||||
msgstr[2] "%d новых паведамленняў"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1190,7 +1212,7 @@ msgstr "Пароль"
|
||||
msgid "Remember Password"
|
||||
msgstr "Запомніць пароль"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Разблакіраваць"
|
||||
|
||||
@ -1309,7 +1331,7 @@ msgstr "Настройкі клавіятуры"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Настройкі мышы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Настройкі гуку"
|
||||
|
||||
@ -1367,11 +1389,11 @@ msgstr "Увядзіце PIN, які паказвае прыстасаванне
|
||||
msgid "OK"
|
||||
msgstr "Добра"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Паказаць раскладку"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Настройкі мясцовасці і мовы"
|
||||
|
||||
@ -1598,7 +1620,7 @@ msgid "Unknown"
|
||||
msgstr "Невядомае"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Гучнасць"
|
||||
|
||||
@ -1606,67 +1628,63 @@ msgstr "Гучнасць"
|
||||
msgid "Microphone"
|
||||
msgstr "Мікрафон"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Увайсці іншым карыстальнікам"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Даступны"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Заняты"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Нябачны"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Адсутны"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Бяздзейны"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Недаступны"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Перамяніць карыстальніка"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Перамяніць сеанс"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Апавяшчэнні"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Сістэмныя настройкі"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Перамяніць карыстальніка"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Выйсці з сеанса"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Заблакіраваць"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Усталяваць абнаўленні і перазагрузіць камп'ютар"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Вам прызначаны стан занятасці для чату"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1675,19 +1693,19 @@ msgstr ""
|
||||
"сеціўны стан абноўлены інфармацыяй аб тым, што вы можаце не ўбачыць чужых "
|
||||
"паведамленняў у час."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Вокны"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Праграмы"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Пошук"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1696,12 +1714,12 @@ msgstr ""
|
||||
"На жаль, на сёння не хапіла мудрасцяў:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Так сказаў Вяшчун %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ваша ўлюбёнае велікоднае яйка"
|
||||
|
||||
@ -1738,19 +1756,19 @@ msgstr[2] "%u уваходаў"
|
||||
msgid "System Sounds"
|
||||
msgstr "Сістэмныя гукі"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Вывесці нумар версіі праграмы"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Рэжым, які выкарыстоўвае GDM для экрана ўваходу"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Ужыць асаблівы рэжым, напрыклад, \"gdm\" для экрана ўваходу"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Вывесці спіс магчымых рэжымаў"
|
||||
|
||||
@ -1778,4 +1796,3 @@ msgstr "Прадвызначана"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Карыстальнік праігнараваў дыялогавае акенца ідэнтыфікацыі"
|
||||
|
||||
|
77
po/bg.po
77
po/bg.po
@ -7,8 +7,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-22 12:52+0300\n"
|
||||
"PO-Revision-Date: 2012-09-22 12:51+0300\n"
|
||||
"POT-Creation-Date: 2012-10-02 05:37+0300\n"
|
||||
"PO-Revision-Date: 2012-10-02 05:38+0300\n"
|
||||
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
|
||||
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
|
||||
"Language: bg\n"
|
||||
@ -251,11 +251,11 @@ msgstr ""
|
||||
"Изберете разширение, което да се настрои като използвате падащото меню по-"
|
||||
"горе."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Сесия…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Регистриране"
|
||||
@ -263,37 +263,42 @@ msgstr "Регистриране"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "Липсва в списъка?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Отказване"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Регистриране"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Екран за идентификация"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Спиране"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Приспиване"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Рестартиране"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Изключване"
|
||||
|
||||
@ -1010,11 +1015,11 @@ msgstr "Инсталиране"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "област за уведомяване"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
@ -1067,19 +1072,19 @@ msgstr "Преглед на изходния код"
|
||||
msgid "Web Page"
|
||||
msgstr "Домашна страница"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Отваряне"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Изтриване"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Област за уведомяване"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Информация за системата"
|
||||
|
||||
@ -1307,7 +1312,7 @@ msgstr "Настройка на клавиатурата"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Настройки на мишката"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Настройки на звука"
|
||||
|
||||
@ -1592,7 +1597,7 @@ msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Сила на звука"
|
||||
|
||||
@ -1604,63 +1609,63 @@ msgstr "Микрофон"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Влезте като друг потребител"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "На линия"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Зает"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Невидим"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Отсъстващ"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Бездействие"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Недостъпно"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Смяна на потребител"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Смяна на сесия"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Известия"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Системни настройки"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Изход"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Заключване"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Инсталиране на обновленията и рестартиране"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Състоянието ви ще се зададе да е „Зает“"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
|
80
po/ca.po
80
po/ca.po
@ -10,14 +10,14 @@ msgstr ""
|
||||
"Project-Id-Version: HEAD\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-22 18:40+0000\n"
|
||||
"PO-Revision-Date: 2012-09-23 00:20+0200\n"
|
||||
"POT-Creation-Date: 2012-09-25 10:59+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 07:47+0100\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Gtranslator 2.91.5\n"
|
||||
|
||||
@ -250,11 +250,11 @@ msgstr "Extensió"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Seleccioneu una extensió amb el quadre combinat per configurar-la."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Sessió..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Entrada"
|
||||
@ -262,42 +262,46 @@ msgstr "Entrada"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "No esteu llistat?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Entra"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra d'entrada"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Apaga"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Atura temporalment"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Reinicia"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Apaga"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Error d'autenticació"
|
||||
|
||||
@ -1007,11 +1011,11 @@ msgstr "Instal·la"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Voleu baixar i instal·lar «%s» de extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "safata"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclat"
|
||||
@ -1064,19 +1068,19 @@ msgstr "Mostra el codi font"
|
||||
msgid "Web Page"
|
||||
msgstr "Pàgina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Obre"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Suprimeix"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Safata de missatges"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Informació de l'ordinador"
|
||||
|
||||
@ -1304,7 +1308,7 @@ msgstr "Paràmetres del teclat"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Paràmetres del ratolí"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Paràmetres de so"
|
||||
|
||||
@ -1589,7 +1593,7 @@ msgid "Unknown"
|
||||
msgstr "Desconegut"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
@ -1601,63 +1605,63 @@ msgstr "Micròfon"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Entra amb un altre usuari"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Ocupat"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Invisible"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Absent"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Inactiu"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Canvia d'usuari"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Canvia de sessió"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacions"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Paràmetres del sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Surt"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Bloqueja"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instal·la les actualitzacions i reinicia"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "L'estat del xat s'establirà a ocupat"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
|
@ -9,14 +9,14 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: HEAD\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-23 00:21+0200\n"
|
||||
"PO-Revision-Date: 2012-09-23 00:20+0200\n"
|
||||
"POT-Creation-Date: 2012-09-26 01:29+0200\n"
|
||||
"PO-Revision-Date: 2012-09-25 07:47+0100\n"
|
||||
"Last-Translator: Gil Forcada <gilforcada@guifi.net>\n"
|
||||
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
|
||||
"Language: ca-XV\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Gtranslator 2.91.5\n"
|
||||
|
||||
@ -249,11 +249,11 @@ msgstr "Extensió"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Seleccioneu una extensió amb el quadre combinat per configurar-la."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Sessió..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Entrada"
|
||||
@ -261,37 +261,42 @@ msgstr "Entrada"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "No esteu llistat?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel·la"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Entra"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra d'entrada"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Apaga"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Para temporalment"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Reinicia"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Apaga"
|
||||
|
||||
@ -1005,11 +1010,11 @@ msgstr "Instal·la"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "safata"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclat"
|
||||
@ -1062,19 +1067,19 @@ msgstr "Mostra el codi font"
|
||||
msgid "Web Page"
|
||||
msgstr "Pàgina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Obri"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Suprimeix"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Safata de missatges"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Informació de l'ordinador"
|
||||
|
||||
@ -1302,7 +1307,7 @@ msgstr "Paràmetres del teclat"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Paràmetres del ratolí"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Paràmetres de so"
|
||||
|
||||
@ -1587,7 +1592,7 @@ msgid "Unknown"
|
||||
msgstr "Desconegut"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volum"
|
||||
|
||||
@ -1599,63 +1604,63 @@ msgstr "Micròfon"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Entra amb un altre usuari"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Ocupat"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Invisible"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Absent"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Inactiu"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Canvia d'usuari"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Canvia de sessió"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacions"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Paràmetres del sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Ix"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Bloqueja"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instal·la les actualitzacions i reinicia"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "L'estat del xat s'establirà a ocupat"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
|
148
po/da.po
148
po/da.po
@ -16,8 +16,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-22 12:27+0200\n"
|
||||
"PO-Revision-Date: 2012-09-21 22:28+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 06:36+0200\n"
|
||||
"PO-Revision-Date: 2012-10-12 17:27+0200\n"
|
||||
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||
"Language: da\n"
|
||||
@ -29,21 +29,19 @@ msgstr ""
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
msgstr ""
|
||||
msgstr "Skærmbilleder"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr ""
|
||||
msgstr "Optag en skærmoptagelse"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#, fuzzy
|
||||
msgid "System"
|
||||
msgstr "Filsystem"
|
||||
msgstr "System"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#, fuzzy
|
||||
msgid "Show the message tray"
|
||||
msgstr "Besked-statusfelt"
|
||||
msgstr "Vis besked-statusfeltet"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
@ -202,7 +200,7 @@ msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Datakanalen for Gstreamer bruges til indkodning af skærmoptagelsen"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, fuzzy, no-c-format
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||
@ -222,9 +220,10 @@ msgstr ""
|
||||
"outputfilen. Dog kan datakanalen også tage sig af sit eget output - dette "
|
||||
"kan bruges til at sende outputtet til en icecast-server via shout2send eller "
|
||||
"lignende. Når der ændres til en tom værdi, vil standarddatakanalen blive "
|
||||
"brugt. Dette er i øjeblikket \"vp8enc quality=8 speed=6 threads=%T ! queue ! "
|
||||
"webmmux\" og optager i WEBM-formatet med VP8-codec'et. %T bruges som "
|
||||
"pladsholder for et gæt om det optimale trådantal på systemet."
|
||||
"brugt. Dette er i øjeblikket \"vp8enc min_quantizer=13 max_quantizer=13 cpu-"
|
||||
"used=5 deadline=1000000 threads=%T ! queue ! webmmux\" og optager i WEBM-"
|
||||
"formatet med VP8-codec'et. %T bruges som pladsholder for et gæt om det "
|
||||
"optimale trådantal på systemet."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
@ -254,11 +253,11 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Vælg en udvidelse at konfigurere ved hjælp af kombinationsboksen ovenfor."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Session..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Log ind"
|
||||
@ -266,44 +265,48 @@ msgstr "Log ind"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Ikke listet?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Annullér"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Log ind"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Indlogningsvindue"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Strøm"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Hviletilstand"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Genstart"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Sluk"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#, fuzzy
|
||||
msgid "Authentication error"
|
||||
msgstr "Godkendelse er påkrævet"
|
||||
msgstr "Godkendelsesfejl"
|
||||
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
@ -348,7 +351,7 @@ msgstr "INDSTILLINGER"
|
||||
msgid "New Window"
|
||||
msgstr "Nyt vindue"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Fjern fra favoritter"
|
||||
|
||||
@ -512,16 +515,16 @@ msgstr "Denne uge"
|
||||
msgid "Next week"
|
||||
msgstr "Næste uge"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Flytbare enheder"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Åbn med %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Skub ud"
|
||||
|
||||
@ -893,7 +896,7 @@ msgstr "Redigér konto"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Ukendt årsag"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Vis programmer"
|
||||
|
||||
@ -901,14 +904,14 @@ msgstr "Vis programmer"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Indstillinger for dato og tid"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Åbn kalender"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %B %Y"
|
||||
|
||||
@ -1009,11 +1012,11 @@ msgstr "Installér"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "statusfelt"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
@ -1066,19 +1069,19 @@ msgstr "Vis kilde"
|
||||
msgid "Web Page"
|
||||
msgstr "Webside"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Åbn"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Fjern"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Besked-statusfelt"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformation"
|
||||
|
||||
@ -1142,14 +1145,14 @@ msgstr "Indtast en kommando:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d ny besked"
|
||||
msgstr[1] "%d nye beskeder"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1188,7 +1191,7 @@ msgstr "Adgangskode"
|
||||
msgid "Remember Password"
|
||||
msgstr "Husk adgangskode"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Lås op"
|
||||
|
||||
@ -1306,7 +1309,7 @@ msgstr "Indstillinger for tastatur"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Indstillinger for mus"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Indstillinger for lyd"
|
||||
|
||||
@ -1592,7 +1595,7 @@ msgid "Unknown"
|
||||
msgstr "Ukendt"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Lydstyrke"
|
||||
|
||||
@ -1600,67 +1603,63 @@ msgstr "Lydstyrke"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Log ind som en anden bruger"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Tilgængelig"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Optaget"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Usynlig"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Ikke tilstede"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Tomgang"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Utilgængelig"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Skift bruger"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Skift session"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Beskeder"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Systemindstillinger"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Skift bruger"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Log ud"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Lås"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Installér opdateringer og genstart"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Din chat-status vil blive angivet som optaget"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1681,7 +1680,7 @@ msgstr "Programmer"
|
||||
msgid "Search"
|
||||
msgstr "Søg"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1690,12 +1689,12 @@ msgstr ""
|
||||
"Beklager, ingen visdom til dig i dag:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Oraklet %s siger"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Dit yndlingspåskeæg"
|
||||
|
||||
@ -1730,19 +1729,19 @@ msgstr[1] "%u inputs"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemlyde"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Udskriv version"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Tilstand brugt af GDM til indlogningskærm"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Brug en specifik tilstand, f.eks. \"gdm\" til logind-skærm"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Vis mulige tilstande"
|
||||
|
||||
@ -1771,6 +1770,9 @@ msgstr "Standard"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Godkendelsesdialogen blev afvist af brugeren"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Skift session"
|
||||
|
||||
#~ msgid "Failed to unmount '%s'"
|
||||
#~ msgstr "Kunne ikke afmontere \"%s\""
|
||||
|
||||
|
322
po/de.po
322
po/de.po
@ -19,9 +19,9 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-23 12:29+0100\n"
|
||||
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
|
||||
"POT-Creation-Date: 2012-11-06 04:39+0000\n"
|
||||
"PO-Revision-Date: 2012-11-06 20:04+0100\n"
|
||||
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -89,8 +89,8 @@ msgstr ""
|
||||
"Die Erweiterungen der GNOME-Shell besitzen eine UUID-Eigenschaft. Dieser "
|
||||
"Schlüssel listet Erweiterungen auf, welche geladen werden sollen. Jede zu "
|
||||
"ladende Erweiterung muss in dieser Liste erscheinen. Sie können diese Liste "
|
||||
"auch mit den D-Bus-Methoden EnableExtension und DisableExtension in org.gnome."
|
||||
"Shell bearbeiten."
|
||||
"auch mit den D-Bus-Methoden EnableExtension und DisableExtension in org."
|
||||
"gnome.Shell bearbeiten."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "Whether to collect stats about applications usage"
|
||||
@ -118,8 +118,8 @@ msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-Bereich "
|
||||
"angezeigt."
|
||||
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-"
|
||||
"Bereich angezeigt."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@ -131,8 +131,8 @@ msgstr "Chronik des Dialogs »looking glass«"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.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."
|
||||
"Internally used to store the last IM presence explicitly set by the user. "
|
||||
"The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus verwendet, "
|
||||
"der explizit vom Benutzer gesetzt wurde. Der hier verwendete Wert wird der "
|
||||
@ -143,60 +143,73 @@ msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus des Benutzers "
|
||||
"verwendet. Der hier verwendete Wert wird der GsmPresenceStatus-Aufzählung "
|
||||
"entnommen."
|
||||
"Wird intern zur Speicherung des letzten Sofortnachrichtenstatus des "
|
||||
"Benutzers verwendet. Der hier verwendete Wert wird der GsmPresenceStatus-"
|
||||
"Aufzählung entnommen."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "Always show the 'Log out' menuitem in the user menu."
|
||||
msgstr "Den Menüeintrag »Abmelden« immer im Benutzermenü anzeigen."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Dieser Schlüssel überschreibt das automatische Verbergen des Menüeintrags "
|
||||
"»Abmelden« in Einzelbenutzer, Einzelsitzungssituationen."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Wochentag im Kalender anzeigen"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr ""
|
||||
"Wenn dieser Wert gesetzt ist, wird der ISO-Wochentag im Kalender angezeigt."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Tastenkombination zum Öffnen des Anwendungsmenüs."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr ""
|
||||
"Tastenkombination zum Umschalten der Sichtbarkeit des Benachrichtigungsfeldes"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr ""
|
||||
"Tastenkombination zum Umschalten der Sichtbarkeit des Benachrichtigungsfeldes."
|
||||
"Tastenkombination zum Umschalten der Sichtbarkeit des "
|
||||
"Benachrichtigungsfeldes."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Tastenkombination zum Umschalten des Bildschirmaufzeichners"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr ""
|
||||
"Tastenkombination zum Starten/Entfernen des eingebauten "
|
||||
"Bildschirmaufzeichners."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Zu verwendende Tastatur"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Der Typ der zu verwendenden Tastatur"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Bildwiederholungsrate zur Aufnahme von Screencasts"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -205,11 +218,11 @@ msgstr ""
|
||||
"der GNOME-Shell aufgezeichnet werden soll, in Einzelbildern pro Sekunde."
|
||||
|
||||
# hmm Enkodieren oder Kodieren?
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Die GStreamer-Weiterleitung zur Enkodierung des Screencasts"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -219,9 +232,9 @@ msgid ""
|
||||
"pipeline can also take care of its own output - this might be used to send "
|
||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||
"to an empty value, the default pipeline will be used. This is currently "
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 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."
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"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 ""
|
||||
"Gibt die GStreamer-Weiterleitung zur Enkodierung von Aufzeichnungen an. Hier "
|
||||
"wird die Syntax von gst-launch verwendet. Die Weiterleitung sollte über eine "
|
||||
@ -230,18 +243,18 @@ msgstr ""
|
||||
"Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei "
|
||||
"geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. "
|
||||
"Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder "
|
||||
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) gesetzt, "
|
||||
"so wird die vorgegebene Weiterleitung verwendet, welche derzeit »vp8enc "
|
||||
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||
"queue ! webmmux« lautet und nach WEBM mittels des VP8-Codecs aufzeichnet. %T "
|
||||
"wird als Platzhalter für die vermutete optimale Thread-Anzahl auf dem System "
|
||||
"verwendet."
|
||||
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) "
|
||||
"gesetzt, so wird die vorgegebene Weiterleitung verwendet, welche derzeit "
|
||||
"»vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"threads=%T ! queue ! webmmux« lautet und nach WEBM mittels des VP8-Codecs "
|
||||
"aufzeichnet. %T wird als Platzhalter für die vermutete optimale Thread-"
|
||||
"Anzahl auf dem System verwendet."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Die Dateiendung zum Speichern des Screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -265,11 +278,11 @@ msgstr "Erweiterung"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sitzung …"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Anmelden"
|
||||
@ -277,37 +290,42 @@ msgstr "Anmelden"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Nicht aufgeführt?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Anmelden"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Anmeldefenster"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Ausschalten"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:664 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:779
|
||||
msgid "Suspend"
|
||||
msgstr "Bereitschaft"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Neu starten"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:666 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Power Off"
|
||||
msgstr "Ausschalten"
|
||||
|
||||
@ -358,7 +376,7 @@ msgstr "EINSTELLUNGEN"
|
||||
msgid "New Window"
|
||||
msgstr "Neues Fenster"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Aus Favoriten entfernen"
|
||||
|
||||
@ -526,16 +544,16 @@ msgstr "Diese Woche"
|
||||
msgid "Next week"
|
||||
msgstr "Nächste Woche"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Wechseldatenträger"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Öffnen mit %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Auswerfen"
|
||||
|
||||
@ -592,7 +610,8 @@ msgstr "Legitimierung für Funknetzwerk wird benötigt"
|
||||
#: ../js/ui/components/networkAgent.js:310
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
msgstr ""
|
||||
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
|
||||
"zuzugreifen."
|
||||
@ -691,35 +710,35 @@ msgstr "Stumm"
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/components/telepathyClient.js:948
|
||||
#: ../js/ui/components/telepathyClient.js:952
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Gesendet am <b>%A</b> um <b>%X</b> "
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/components/telepathyClient.js:954
|
||||
#: ../js/ui/components/telepathyClient.js:958
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/components/telepathyClient.js:959
|
||||
#: ../js/ui/components/telepathyClient.js:963
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b> %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/components/telepathyClient.js:988
|
||||
#: ../js/ui/components/telepathyClient.js:992
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s heißt jetzt %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1088
|
||||
#: ../js/ui/components/telepathyClient.js:1092
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Einladung zum Betreten von %s"
|
||||
@ -727,41 +746,42 @@ msgstr "Einladung zum Betreten von %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1096
|
||||
#: ../js/ui/components/telepathyClient.js:1100
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s lädt Sie ein, %s beizutreten"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#: ../js/ui/components/telepathyClient.js:1177
|
||||
#: ../js/ui/components/telepathyClient.js:1240
|
||||
#: ../js/ui/components/telepathyClient.js:1102
|
||||
#: ../js/ui/components/telepathyClient.js:1181
|
||||
#: ../js/ui/components/telepathyClient.js:1244
|
||||
msgid "Decline"
|
||||
msgstr "Ablehnen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1099
|
||||
#: ../js/ui/components/telepathyClient.js:1178
|
||||
#: ../js/ui/components/telepathyClient.js:1241
|
||||
#: ../js/ui/components/telepathyClient.js:1103
|
||||
#: ../js/ui/components/telepathyClient.js:1182
|
||||
#: ../js/ui/components/telepathyClient.js:1245
|
||||
msgid "Accept"
|
||||
msgstr "Annehmen"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1129
|
||||
#: ../js/ui/components/telepathyClient.js:1133
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Video-Anruf von %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1132
|
||||
#: ../js/ui/components/telepathyClient.js:1136
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Anruf von %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1137 ../js/ui/status/bluetooth.js:346
|
||||
#: ../js/ui/components/telepathyClient.js:1141
|
||||
#: ../js/ui/status/bluetooth.js:346
|
||||
msgid "Reject"
|
||||
msgstr "Abweisen"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
#: ../js/ui/components/telepathyClient.js:1143
|
||||
msgid "Answer"
|
||||
msgstr "Antworten"
|
||||
|
||||
@ -770,112 +790,113 @@ msgstr "Antworten"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/components/telepathyClient.js:1171
|
||||
#: ../js/ui/components/telepathyClient.js:1175
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s sendet Ihnen %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/components/telepathyClient.js:1206
|
||||
#: ../js/ui/components/telepathyClient.js:1210
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1298
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
msgid "Network error"
|
||||
msgstr "Netzwerkfehler"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
msgid "Authentication failed"
|
||||
msgstr "Legitimierung fehlgeschlagen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
msgid "Encryption error"
|
||||
msgstr "Verschlüsselungsfehler"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Zertifikat wurde nicht bereitgestellt"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Zertifikat nicht vertrauenswürdig"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
msgid "Certificate expired"
|
||||
msgstr "Zertifikat abgelaufen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Zertifikat nicht aktiviert"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Rechnername des Zertifikats stimmt nicht überein"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Fingerabdruck des Zertifikats stimmt nicht überein"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Selbstsigniertes Zertifikat"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Der Status ist auf »Abgemeldet« gesetzt"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Verschlüsselung ist nicht verfügbar"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Zertifikat ist ungültig"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Verbindungsaufbau wurde verweigert"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Verbindung kann nicht hergestellt werden"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Verbindung wurde unterbrochen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Dieses Konto ist bereits mit dem Server verbunden"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid "Connection has been replaced by a new connection using the same resource"
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
|
||||
"ersetzt"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Dieses Konto ist bereits auf dem Server vorhanden"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Der Server ist derzeit überlastet und kann die Verbindung nicht annehmen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Zertifikat wurde zurückgezogen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Das Zertifikat verwendet einen unsicheren Chiffrier-Algorithmus oder ist "
|
||||
"kryptografisch schwach"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -884,30 +905,30 @@ msgstr ""
|
||||
"überschreiten die durch die kryptografische Bibliothek gegebenen "
|
||||
"Beschränkungen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
#: ../js/ui/components/telepathyClient.js:1348
|
||||
msgid "Internal error"
|
||||
msgstr "Interner Fehler"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1358
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Verbindung zu %s ist fehlgeschlagen"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
#: ../js/ui/components/telepathyClient.js:1367
|
||||
msgid "Reconnect"
|
||||
msgstr "Erneut verbinden"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1368
|
||||
msgid "Edit account"
|
||||
msgstr "Konto bearbeiten"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1409
|
||||
#: ../js/ui/components/telepathyClient.js:1413
|
||||
msgid "Unknown reason"
|
||||
msgstr "Unbekannter Grund"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Anwendungen anzeigen"
|
||||
|
||||
@ -915,14 +936,14 @@ msgstr "Anwendungen anzeigen"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Einstellungen für Datum und Uhrzeit"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Kalender öffnen"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %B %Y"
|
||||
|
||||
@ -974,8 +995,8 @@ msgstr "Ausschalten"
|
||||
#: ../js/ui/endSessionDialog.js:82
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr ""
|
||||
"Klicken Sie auf »Ausschalten«, um diese Anwendungen zu beenden und das System "
|
||||
"auszuschalten."
|
||||
"Klicken Sie auf »Ausschalten«, um diese Anwendungen zu beenden und das "
|
||||
"System auszuschalten."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:84
|
||||
#, c-format
|
||||
@ -1006,8 +1027,8 @@ msgstr "Neu starten"
|
||||
#: ../js/ui/endSessionDialog.js:99
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr ""
|
||||
"Klicken Sie auf »Neu starten«, um diese Anwendungen zu beenden und das System "
|
||||
"neu zu starten."
|
||||
"Klicken Sie auf »Neu starten«, um diese Anwendungen zu beenden und das "
|
||||
"System neu zu starten."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:101
|
||||
#, c-format
|
||||
@ -1029,11 +1050,11 @@ msgstr "Installieren"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "Benachrichtigungsfeld"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
@ -1086,23 +1107,23 @@ msgstr "Quelle zeigen"
|
||||
msgid "Web Page"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1084
|
||||
msgid "Open"
|
||||
msgstr "Öffnen"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1091
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1543
|
||||
msgid "Message Tray"
|
||||
msgstr "Benachrichtigungsfeld"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2549
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformationen"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:374
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
@ -1162,7 +1183,7 @@ msgstr "Bitte geben Sie einen Befehl ein:"
|
||||
# %B - ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:79
|
||||
#: ../js/ui/screenShield.js:80
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
@ -1212,7 +1233,7 @@ msgstr "Passwort"
|
||||
msgid "Remember Password"
|
||||
msgstr "An Passwort erinnern"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Entsperren"
|
||||
|
||||
@ -1331,7 +1352,7 @@ msgstr "Tastatureinstellungen"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Maus-Einstellungen"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Klangeinstellungen"
|
||||
|
||||
@ -1390,11 +1411,11 @@ msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Tastaturbelegung zeigen"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Einstellungen für Region und Sprache"
|
||||
|
||||
@ -1617,7 +1638,7 @@ msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Lautstärke"
|
||||
|
||||
@ -1625,67 +1646,63 @@ msgstr "Lautstärke"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Als anderer Benutzer anmelden"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:181
|
||||
msgid "Available"
|
||||
msgstr "Verfügbar"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:184
|
||||
msgid "Busy"
|
||||
msgstr "Beschäftigt"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:187
|
||||
msgid "Invisible"
|
||||
msgstr "Unsichtbar"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:190
|
||||
msgid "Away"
|
||||
msgstr "Abwesend"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:193
|
||||
msgid "Idle"
|
||||
msgstr "Untätig"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:196
|
||||
msgid "Unavailable"
|
||||
msgstr "Nicht verfügbar"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Benutzer wechseln"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Sitzung wechseln"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:744
|
||||
msgid "Notifications"
|
||||
msgstr "Benachrichtigungen"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:752
|
||||
msgid "System Settings"
|
||||
msgstr "Systemeinstellungen"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:760
|
||||
msgid "Switch User"
|
||||
msgstr "Benutzer wechseln"
|
||||
|
||||
#: ../js/ui/userMenu.js:765
|
||||
msgid "Log Out"
|
||||
msgstr "Abmelden"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:770
|
||||
msgid "Lock"
|
||||
msgstr "Sperren"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:785
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Aktualisierungen installieren und neustarten"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:804
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1706,7 +1723,7 @@ msgstr "Anwendungen"
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1715,12 +1732,12 @@ msgstr ""
|
||||
"Leider steht für heute keine Weisheit zur Verfügung:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s, das Orakel, sagt"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ihr Lieblings-Osterei"
|
||||
|
||||
@ -1755,24 +1772,24 @@ msgstr[1] "%u Eingänge"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemklänge"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Version ausgeben"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Einen spezifischen Modus nutzen, wie z.B. »gdm» für den Anmeldebildschirm"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Die möglichen Modi auflisten"
|
||||
|
||||
#: ../src/shell-app.c:621
|
||||
#: ../src/shell-app.c:622
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "»%s« konnte nicht gestartet werden"
|
||||
@ -1797,6 +1814,9 @@ msgstr "Vorgabe"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Der Dialog zur Legitimierung wurde vom Benutzer geschlossen"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Sitzung wechseln"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "deaktivierte OpenSearch-Provider"
|
||||
|
||||
|
135
po/el.po
135
po/el.po
@ -4,8 +4,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.po.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 11:15+0200\n"
|
||||
"POT-Creation-Date: 2012-10-16 20:41+0000\n"
|
||||
"PO-Revision-Date: 2012-10-23 15:39+0200\n"
|
||||
"Last-Translator: Tom Tryfonidis <tomtryf@gmail.com>\n"
|
||||
"Language-Team: team@gnome.gr\n"
|
||||
"Language: el\n"
|
||||
@ -23,7 +23,7 @@ msgstr "Στιγμιότυπα οθόνης"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr "Καταγραφή ενός βίντεο παρουσίασης"
|
||||
msgstr "Καταγραφή ενός βίντεο οθόνης"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
@ -182,21 +182,21 @@ msgstr "Ο τύπος του πληκτρολογίου που θα χρησιμ
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr ""
|
||||
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο παρουσίασης."
|
||||
"Ο ρυθμός καρέ που θα χρησιμοποιηθεί για την καταγραφή του βίντεο οθόνης."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο "
|
||||
"παρουσίασης του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
||||
"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα βίντεο οθόνης "
|
||||
"του GNOME Shell σε καρέ ανά δευτερόλεπτο."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr ""
|
||||
"Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του βίντεο "
|
||||
"παρουσίασης"
|
||||
"οθόνης"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, no-c-format
|
||||
@ -229,8 +229,7 @@ msgstr ""
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr ""
|
||||
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο "
|
||||
"παρουσίασης"
|
||||
"Επέκταση αρχείου που θα χρησιμοποιηθεί για την αποθήκευση του βίντεο οθόνης"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
msgid ""
|
||||
@ -238,7 +237,7 @@ msgid ""
|
||||
"current date, and use this extension. It should be changed when recording to "
|
||||
"a different container format."
|
||||
msgstr ""
|
||||
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο παρουσίασης θα είναι μοναδικό, "
|
||||
"Το όνομα αρχείου για τα καταγεγραμμένα βίντεο οθόνης θα είναι μοναδικό, "
|
||||
"βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα "
|
||||
"πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη."
|
||||
|
||||
@ -259,11 +258,11 @@ msgstr ""
|
||||
"Επιλέξτε μια επέκταση για να την ρυθμίσετε χρησιμοποιώντας το πλαίσιο "
|
||||
"πολλαπλών επιλογών."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Συνεδρία..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Σύνδεση"
|
||||
@ -271,34 +270,33 @@ msgstr "Σύνδεση"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Δεν είστε στη λίστα;"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Ακύρωση"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Σύνδεση"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Παράθυρο σύνδεσης"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Ενέργεια"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Αναστολή"
|
||||
|
||||
@ -306,10 +304,10 @@ msgstr "Αναστολή"
|
||||
msgid "Restart"
|
||||
msgstr "Επανεκκίνηση"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
msgid "Authentication error"
|
||||
@ -358,7 +356,7 @@ msgstr "ΡΥΘΜΙΣΕΙΣ"
|
||||
msgid "New Window"
|
||||
msgstr "Νέο παράθυρο"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Αφαίρεση από τα αγαπημένα"
|
||||
|
||||
@ -522,16 +520,16 @@ msgstr "Αυτή η εβδομάδα"
|
||||
msgid "Next week"
|
||||
msgstr "Επόμενη εβδομάδα"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Αφαιρούμενες συσκευές"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Άνοιγμα με %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Εξαγωγή"
|
||||
|
||||
@ -651,7 +649,7 @@ msgstr "Συγνώμη, αυτό δεν λειτούργησε. Παρακαλώ
|
||||
#: ../js/ui/components/recorder.js:44
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Βίντεο παρουσίαση από %d %t"
|
||||
msgstr "Βίντεο οθόνης από %d %t"
|
||||
|
||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||
#. system-users for now as Empathy does.
|
||||
@ -905,7 +903,7 @@ msgstr "Επεξεργασία λογαριασμού"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Άγνωστος λόγος"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Προβολή εφαρμογών"
|
||||
|
||||
@ -913,14 +911,14 @@ msgstr "Προβολή εφαρμογών"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ρυθμίσεις ώρας και ημερομηνίας"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Άνοιγμα ημερολογίου"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %B %e, %Y"
|
||||
|
||||
@ -967,13 +965,13 @@ msgstr "Αποσύνδεση"
|
||||
#: ../js/ui/endSessionDialog.js:81
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:82
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr ""
|
||||
"Πατήστε Τερματισμός για να κλείσετε αυτές τις εφαρμογές και να "
|
||||
"απενεργοποιήσετε το σύστημα."
|
||||
"Πατήστε Απενεργοποίηση για να κλείσετε αυτές τις εφαρμογές και να "
|
||||
"τερματίσετε το σύστημα."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:84
|
||||
#, c-format
|
||||
@ -994,7 +992,7 @@ msgstr "Επανεκκίνηση"
|
||||
#: ../js/ui/endSessionDialog.js:92
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Τερματισμός"
|
||||
msgstr "Απενεργοποίηση"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:98
|
||||
msgctxt "title"
|
||||
@ -1027,11 +1025,11 @@ msgstr "Εγκατάσταση"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Λήψη και εγκατάσταση '%s' από το extensions.gnome.org ;"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "περιοχή"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Πληκτρολόγιο"
|
||||
@ -1084,19 +1082,19 @@ msgstr "Προβολή πηγής"
|
||||
msgid "Web Page"
|
||||
msgstr "Ιστοσελίδα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Άνοιγμα"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Αφαίρεση"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Περιοχή ειδοποιήσεων"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Πληροφορίες συστήματος"
|
||||
|
||||
@ -1160,14 +1158,14 @@ msgstr "Παρακαλώ πληκτρολογήστε μία εντολή:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d νέο μήνυμα"
|
||||
msgstr[1] "%d νέα μηνύματα"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1206,7 +1204,7 @@ msgstr "Κωδικός"
|
||||
msgid "Remember Password"
|
||||
msgstr "Απομνημόνευση κωδικού"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Ξεκλείδωμα"
|
||||
|
||||
@ -1325,7 +1323,7 @@ msgstr "Ρυθμίσεις πληκτρολογίου"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Ρυθμίσεις ποντικιού"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Ρυθμίσεις ήχου"
|
||||
|
||||
@ -1610,7 +1608,7 @@ msgid "Unknown"
|
||||
msgstr "Άγνωστο"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Ένταση ήχου"
|
||||
|
||||
@ -1618,7 +1616,7 @@ msgstr "Ένταση ήχου"
|
||||
msgid "Microphone"
|
||||
msgstr "Μικρόφωνο"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Είσοδος ως άλλος χρήστης"
|
||||
|
||||
@ -1646,39 +1644,35 @@ msgstr "Αδρανής"
|
||||
msgid "Unavailable"
|
||||
msgstr "Μη διαθέσιμος-η"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Αλλαγή συνεδρίας"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Ειδοποιήσεις"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Ρυθμίσεις συστήματος"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Αλλαγή χρήστη"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Αποσύνδεση"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Κλείδωμα"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Εγκατάσταση ενημερώσεων & επανεκκίνηση"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Η κατάσταση συνομιλίας σας θα ορισθεί σε απασχολημένος"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1699,7 +1693,7 @@ msgstr "Εφαρμογές"
|
||||
msgid "Search"
|
||||
msgstr "Αναζήτηση"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1708,12 +1702,12 @@ msgstr ""
|
||||
"Συγγνώμη, κανένα απόφθεγμα για εσάς σήμερα:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s ο Προφήτης λέει"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Το αγαπημένο σας Easter Egg"
|
||||
|
||||
@ -1748,20 +1742,20 @@ msgstr[1] "%u είσοδοι"
|
||||
msgid "System Sounds"
|
||||
msgstr "Ήχοι συστήματος"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Εκτύπωση έκδοσης"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Λειτουργία που απαιτείται από το GDM για την οθόνη σύνδεσης"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Χρησιμοποιήστε μια συγκεκριμένη λειτουργία, π.χ \"gdm\" για την οθόνη εισόδου"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Λίστα πιθανών λειτουργιών"
|
||||
|
||||
@ -1790,6 +1784,9 @@ msgstr "Προεπιλογή"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Το παράθυρο πιστοποίησης έκλεισε από τον χρήστη"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Αλλαγή συνεδρίας"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "απενεργοποιημένοι πάροχοι OpenSearch"
|
||||
|
||||
|
131
po/en_GB.po
131
po/en_GB.po
@ -3,14 +3,16 @@
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
# Philip Withnall <philip@tecnocode.co.uk>, 2009, 2010.
|
||||
# Bruce Cowan <bruce@bcowan.me.uk>, 2010, 2011, 2012.
|
||||
# Chris Leonard <cjlhomeaddress@gmail.com>, 2012.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-22 11:16+0100\n"
|
||||
"PO-Revision-Date: 2012-09-22 11:18+0100\n"
|
||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Language-Team: British English <en@li.org>\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-10-11 15:26+0000\n"
|
||||
"PO-Revision-Date: 2012-09-27 23:56-0400\n"
|
||||
"Last-Translator: Chris Leonard <cjlhomeaddress@gmail.com>\n"
|
||||
"Language-Team: Sugar Labs\n"
|
||||
"Language: en_GB\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -211,8 +213,7 @@ msgstr ""
|
||||
"to an empty value, the default pipeline will be used. This is currently "
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"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."
|
||||
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
@ -241,11 +242,11 @@ msgstr "Extension"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Select an extension to configure using the combobox above."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Session…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Sign In"
|
||||
@ -253,37 +254,42 @@ msgstr "Sign In"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Not listed?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Sign In"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Login Window"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Power"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspend"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Power Off"
|
||||
|
||||
@ -334,7 +340,7 @@ msgstr "SETTINGS"
|
||||
msgid "New Window"
|
||||
msgstr "New Window"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Remove from Favourites"
|
||||
|
||||
@ -498,16 +504,16 @@ msgstr "This week"
|
||||
msgid "Next week"
|
||||
msgstr "Next week"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Removable Devices"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Open with %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Eject"
|
||||
|
||||
@ -878,7 +884,7 @@ msgstr "Edit account"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Unknown reason"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Show Applications"
|
||||
|
||||
@ -886,14 +892,14 @@ msgstr "Show Applications"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Date and Time Settings"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Open Calendar"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:190
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %e %B, %Y"
|
||||
|
||||
@ -994,11 +1000,11 @@ msgstr "Install"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Download and install '%s' from extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "tray"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Keyboard"
|
||||
@ -1051,19 +1057,19 @@ msgstr "View Source"
|
||||
msgid "Web Page"
|
||||
msgstr "Web Page"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Open"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Message Tray"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "System Information"
|
||||
|
||||
@ -1127,14 +1133,14 @@ msgstr "Please enter a command:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d new message"
|
||||
msgstr[1] "%d new messages"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1291,7 +1297,7 @@ msgstr "Keyboard Settings"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Mouse Settings"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Sound Settings"
|
||||
|
||||
@ -1576,7 +1582,7 @@ msgid "Unknown"
|
||||
msgstr "Unknown"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1588,63 +1594,59 @@ msgstr "Microphone"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Log in as another user"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Available"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Busy"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Invisible"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Away"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Idle"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Unavailable"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Switch User"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Switch Session"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "System Settings"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Switch User"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Log Out"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Lock"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Install Updates & Restart"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Your chat status will be set to busy"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1664,7 +1666,7 @@ msgstr "Applications"
|
||||
msgid "Search"
|
||||
msgstr "Search"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1673,12 +1675,12 @@ msgstr ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s the Oracle says"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Your favourite Easter Egg"
|
||||
|
||||
@ -1713,19 +1715,19 @@ msgstr[1] "%u Inputs"
|
||||
msgid "System Sounds"
|
||||
msgstr "System Sounds"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Print version"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Mode used by GDM for login screen"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "List possible modes"
|
||||
|
||||
@ -1754,6 +1756,9 @@ msgstr "Default"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Authentication dialogue was dismissed by the user"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Switch Session"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "disabled OpenSearch providers"
|
||||
|
||||
|
159
po/es.po
159
po/es.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell.master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 10:26+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 11:06+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"Language: \n"
|
||||
@ -37,6 +37,16 @@ msgstr "Sistema"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Mostrar la bandeja de mensajes"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Mostrar todas las aplicaciones"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Abrir el menú de la aplicación"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -155,34 +165,47 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Asociación de teclas para abrir el menú de la aplicación."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Asociación de teclas para la vista «Mostrar aplicaciones»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista "
|
||||
"de actividades."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Asociación de teclas cambiar el grabador de pantalla"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
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.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Qué teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "El tipo de teclado que usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -190,11 +213,11 @@ msgstr ""
|
||||
"La tasa de fotogramas de la grabación resultante grabada por el grabador de "
|
||||
"«screencast» de GNOME Shell, en fotogramas por segundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "La tubería de gstreamer usada para codificar el «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -220,11 +243,11 @@ msgstr ""
|
||||
"threads=%T ! queue ! webmmux» y graba en WEBM usando el códec VP8. Se usa %T "
|
||||
"como marcador de posición para el número de hilos óptimos en el sistema."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Extensión de archivo que usar para almacenar los «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -248,11 +271,11 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Seleccione una extensión que configurar usando la caja combinada de arriba."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesión…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
@ -260,34 +283,33 @@ msgstr "Iniciar sesión"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "¿No está en la lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Ventana de inicio de sesión"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Energía"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
@ -295,8 +317,8 @@ msgstr "Suspender"
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -347,7 +369,7 @@ msgstr "CONFIGURACIÓN"
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
@ -511,16 +533,16 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "La semana que viene"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbles"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Expulsar"
|
||||
|
||||
@ -894,7 +916,7 @@ msgstr "Editar cuenta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón desconocida"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Mostrar aplicaciones"
|
||||
|
||||
@ -902,14 +924,14 @@ msgstr "Mostrar aplicaciones"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ajustes de hora y fecha"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir calendario"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e de %B de %Y"
|
||||
|
||||
@ -1013,11 +1035,11 @@ msgstr "Instalar"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "bandeja"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
@ -1070,19 +1092,19 @@ msgstr "Ver fuente"
|
||||
msgid "Web Page"
|
||||
msgstr "Página web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandeja de mensajes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@ -1146,14 +1168,14 @@ msgstr "Introduzca un comando:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d mensaje nuevo"
|
||||
msgstr[1] "%d mensajes nuevos"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1192,7 +1214,7 @@ msgstr "Contraseña"
|
||||
msgid "Remember Password"
|
||||
msgstr "Recordar contraseña"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Desbloquear"
|
||||
|
||||
@ -1310,7 +1332,7 @@ msgstr "Configuración del teclado"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Ajustes del ratón…"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Configuración del sonido"
|
||||
|
||||
@ -1595,7 +1617,7 @@ msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volumen"
|
||||
|
||||
@ -1603,7 +1625,7 @@ msgstr "Volumen"
|
||||
msgid "Microphone"
|
||||
msgstr "Micrófono"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Iniciar sesión como otro usuario"
|
||||
|
||||
@ -1631,39 +1653,35 @@ msgstr "Inactivo"
|
||||
msgid "Unavailable"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Cambiar de sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaciones"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Configuración del sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Cerrar la sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instalar actualizaciones y reiniciar"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1672,19 +1690,19 @@ msgstr ""
|
||||
"chat. Su estado en línea se ha ajustado para que otros sepan que puede no "
|
||||
"leer sus mensajes."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplicaciones"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1693,12 +1711,12 @@ msgstr ""
|
||||
"Hoy no tiene ningún mensaje:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s el oráculo dice"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Su mensaje oculto favorito"
|
||||
|
||||
@ -1733,21 +1751,21 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
|
||||
"sesión"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar los modos posibles"
|
||||
|
||||
@ -1776,6 +1794,9 @@ msgstr "Predeterminada"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "El usuario rechazó el diálogo de autenticación"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Cambiar de sesión"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "proveedores OpenSearch desactivados"
|
||||
|
||||
|
425
po/fa.po
425
po/fa.po
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-06 15:33+0000\n"
|
||||
"PO-Revision-Date: 2012-09-06 20:44+0330\n"
|
||||
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
|
||||
"PO-Revision-Date: 2012-10-12 20:16+0330\n"
|
||||
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
|
||||
"Language-Team: Persian\n"
|
||||
"Language: fa\n"
|
||||
@ -20,6 +20,24 @@ msgstr ""
|
||||
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
msgstr "عکسهای صفحه"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr "ضبط یک تصویربرداری از صفحهنمایش"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "سیستم"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "نمایش سینی پیام"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "پوستهی گنوم"
|
||||
@ -96,18 +114,14 @@ msgid ""
|
||||
msgstr "برنامههای مشابه این شناسهها در قسمت مورد پسندها نمایش داده میشود."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "disabled OpenSearch providers"
|
||||
msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
msgstr "تاریخچهی فرمان برای محاورهی (Alt-F2)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
|
||||
msgid "History for the looking glass dialog"
|
||||
msgstr "تاریخچه برای نما محاوره شیشهای"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.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."
|
||||
@ -115,7 +129,7 @@ msgstr ""
|
||||
"بهطور داخلی جهت ذخیرهی آخرین وضعیتِ حاضرِ ثبت شدهی توسط کاربر استفاده میشود. "
|
||||
"مقدار اینجا از محل محاسبهی TpConnectionPresenceType است."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:12
|
||||
msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
@ -123,53 +137,51 @@ msgstr ""
|
||||
"بهطور داخلی برای ذخیره آخرین نشستی که کاربر در آن وضعیت حاضر داشته است "
|
||||
"استفاده میشود. مقدار اینجا از محاسبه GsmPresenceStatus است."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "نمایش هفته در تقویم"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان میدهد."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "کلید مقید برای باز کردن منو برنامه"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "کلید مقید برای باز کردن منو برنامه."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to toggle the screen recorder"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#| msgid "Keybinding to toggle the screen recorder"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "کلید مقید برای تغییر وضعیت نمایش سینی پیامها."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "کلید مقید برای تغییر وضعیت ضبط کنندهی صفحه"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "کلید مقید برای شروع/توقف ضبط کنندهی صفحه پیش ساخته."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "استفاده از کدام صفحهکلید"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "نوع صفحهکلید جهت استفاده"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "سرعت فریم استفاده شده در تصویربرداری از صفحهنمایش."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -177,12 +189,23 @@ msgstr ""
|
||||
"سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر "
|
||||
"پوستهی گنوم بر اساس فریم بر ثانیه"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, 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 "
|
||||
@ -191,9 +214,9 @@ msgid ""
|
||||
"pipeline can also take care of its own output - this might be used to send "
|
||||
"the output to an icecast server via shout2send or similar. When unset or set "
|
||||
"to an empty value, the default pipeline will be used. This is currently "
|
||||
"'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."
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"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 "
|
||||
@ -202,15 +225,15 @@ msgstr ""
|
||||
"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."
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"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.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "پسوند پروندهی قابل استفاده برای ذخیره تصویربرداری از صفحهنمایش"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
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 "
|
||||
@ -226,7 +249,6 @@ msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "خطایی هنگام باز کردن محاورهی ترجیحات برای %s رُخ داد:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:164
|
||||
#| msgid "<b>Extension</b>"
|
||||
msgid "Extension"
|
||||
msgstr "افزونه"
|
||||
|
||||
@ -234,11 +256,11 @@ msgstr "افزونه"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "با استفاده از جعبهی بالا یک افزونه برای پیکربندی انتخاب کنید."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "نشست..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "ورود"
|
||||
@ -246,47 +268,58 @@ msgstr "ورود"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "فهرست نشده؟"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:135
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "لغو"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "ورود"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "پنجرهی ورود به سیستم"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "انرژی"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "تعلیق"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "راهاندازی مجدد"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "خاموش کردن"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "خطا تایید هویت"
|
||||
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/util.js:247
|
||||
#: ../js/gdm/util.js:265
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(یا انگشتتان را بکشید)"
|
||||
|
||||
#: ../js/gdm/util.js:272
|
||||
#: ../js/gdm/util.js:290
|
||||
#, c-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(برای مثال, کاربر یا %s)"
|
||||
@ -487,16 +520,16 @@ msgstr "این هفته"
|
||||
msgid "Next week"
|
||||
msgstr "هفته آینده"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "دستگاههای جدا شدنی"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:571
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "باز کردن با %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:597
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "بیرون دادن"
|
||||
|
||||
@ -640,38 +673,46 @@ msgstr "درخواست اشتراک"
|
||||
msgid "Connection error"
|
||||
msgstr "خطا اتصال"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:491
|
||||
msgid "Unmute"
|
||||
msgstr "باصدا"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:491
|
||||
msgid "Mute"
|
||||
msgstr "بیصدا"
|
||||
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/components/telepathyClient.js:934
|
||||
#: ../js/ui/components/telepathyClient.js:948
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/components/telepathyClient.js:940
|
||||
#: ../js/ui/components/telepathyClient.js:954
|
||||
#, no-c-format
|
||||
msgid "Sent on <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",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/components/telepathyClient.js:945
|
||||
#: ../js/ui/components/telepathyClient.js:959
|
||||
#, no-c-format
|
||||
msgid "Sent on <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
|
||||
#. IM name.
|
||||
#: ../js/ui/components/telepathyClient.js:974
|
||||
#: ../js/ui/components/telepathyClient.js:988
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s با عنوان %s شناخته میشود"
|
||||
msgstr "%s با عنوان %s شناخته میشود"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1074
|
||||
#: ../js/ui/components/telepathyClient.js:1088
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "دعوتنامه به %s"
|
||||
@ -679,42 +720,42 @@ msgstr "دعوتنامه به %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1082
|
||||
#: ../js/ui/components/telepathyClient.js:1096
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s از شما دعوت میکند که به %s بپیوندید"
|
||||
msgstr "%s از شما دعوت میکند که به %s بپیوندید"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1084
|
||||
#: ../js/ui/components/telepathyClient.js:1163
|
||||
#: ../js/ui/components/telepathyClient.js:1226
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#: ../js/ui/components/telepathyClient.js:1177
|
||||
#: ../js/ui/components/telepathyClient.js:1240
|
||||
msgid "Decline"
|
||||
msgstr "رد کردن"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1085
|
||||
#: ../js/ui/components/telepathyClient.js:1164
|
||||
#: ../js/ui/components/telepathyClient.js:1227
|
||||
#: ../js/ui/components/telepathyClient.js:1099
|
||||
#: ../js/ui/components/telepathyClient.js:1178
|
||||
#: ../js/ui/components/telepathyClient.js:1241
|
||||
msgid "Accept"
|
||||
msgstr "پذیرفتن"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1115
|
||||
#: ../js/ui/components/telepathyClient.js:1129
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "تماس ویدئویی از طریق %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1118
|
||||
#: ../js/ui/components/telepathyClient.js:1132
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "تماس از طرف %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1123
|
||||
#: ../js/ui/components/telepathyClient.js:1137
|
||||
#: ../js/ui/status/bluetooth.js:346
|
||||
msgid "Reject"
|
||||
msgstr "رد کردن"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/components/telepathyClient.js:1125
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
msgid "Answer"
|
||||
msgstr "پاسخگویی"
|
||||
|
||||
@ -723,111 +764,111 @@ msgstr "پاسخگویی"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/components/telepathyClient.js:1157
|
||||
#: ../js/ui/components/telepathyClient.js:1171
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s در حال ارسال %s به شما است"
|
||||
msgstr "%s در حال ارسال %s به شما است"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/components/telepathyClient.js:1192
|
||||
#: ../js/ui/components/telepathyClient.js:1206
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s اجازه دسترسی برای دیدن زمانهایی که شما برخط هستید را دارد"
|
||||
msgstr "%s اجازه دسترسی برای دیدن زمانهایی که شما برخط هستید را دارد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1284
|
||||
#: ../js/ui/components/telepathyClient.js:1298
|
||||
msgid "Network error"
|
||||
msgstr "خطا شبکه"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1286
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
msgid "Authentication failed"
|
||||
msgstr "تایید هویت شکست خورد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1288
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
msgid "Encryption error"
|
||||
msgstr "خطا رمزنگاری"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1290
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
msgid "Certificate not provided"
|
||||
msgstr "گواهینامه ارائه نشده"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1292
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "گواهینامه نامعتبر است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1294
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
msgid "Certificate expired"
|
||||
msgstr "گواهینامه منقضی شده"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1296
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
msgid "Certificate not activated"
|
||||
msgstr "گواهینامه فعال نشده"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1298
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "نام کارگزار گواهینامه نامنطبق است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "اثرانگشت گواهینامه نامنطبق است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "گواهینامه خود-امضا شده"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
msgid "Status is set to offline"
|
||||
msgstr "وضعیت بر روی برون خط تنظیم شده"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
msgid "Encryption is not available"
|
||||
msgstr "رمزنگاری موجود نیست"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "گواهینامه نامعتبر است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
msgid "Connection has been refused"
|
||||
msgstr "اتصال رد شده است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
msgid "Connection can't be established"
|
||||
msgstr "اتصال نمیتواند برقرار شود"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
msgid "Connection has been lost"
|
||||
msgstr "اتصال از دست رفته است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "این حساب قبلا به کارگزار متصل شده است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"اتصال توسط یک اتصال جدید که از منبع مشابه استفاده میکند، جایگزین شده است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "حساب از قبل بر روی کارگزار وجود دارد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "گواهینامه لغو شده است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"گواهینامه از الگوریتم رمزی نامطمئنی استفاده میکند یا از نظر cryptography "
|
||||
"ضعیف است"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -835,31 +876,30 @@ msgstr ""
|
||||
"اندازه گواهینامه کارگزار، یا عمق حلقهی گواهینامه کارگزار، از محدودیت اعمال "
|
||||
"شده توسط کتابخانه cryptography تجاوز کرد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
msgid "Internal error"
|
||||
msgstr "خطای داخلی"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "اتصال به %s شکست خورد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1349
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
msgid "Reconnect"
|
||||
msgstr "اتصال مجدد"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1350
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
msgid "Edit account"
|
||||
msgstr "ویرایش حساب"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1395
|
||||
#: ../js/ui/components/telepathyClient.js:1409
|
||||
msgid "Unknown reason"
|
||||
msgstr "دلیل ناشناخته"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#| msgid "Applications"
|
||||
msgid "Show Applications"
|
||||
msgstr "نمایش برنامهها"
|
||||
|
||||
@ -898,8 +938,8 @@ msgstr ""
|
||||
#, c-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:70
|
||||
#, c-format
|
||||
@ -978,84 +1018,76 @@ msgstr "نصب"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "سینی"
|
||||
|
||||
#: ../js/ui/keyboard.js:545 ../js/ui/status/keyboard.js:146
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "صفحهکلید"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:694
|
||||
#: ../js/ui/lookingGlass.js:691
|
||||
msgid "No extensions installed"
|
||||
msgstr "هیچ افزونهای نصب نشده است"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:748
|
||||
#: ../js/ui/lookingGlass.js:745
|
||||
#, c-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:754
|
||||
#: ../js/ui/lookingGlass.js:751
|
||||
msgid "Hide Errors"
|
||||
msgstr "مخفی کردن خطاها"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:758 ../js/ui/lookingGlass.js:818
|
||||
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||
msgid "Show Errors"
|
||||
msgstr "نمایش خطاها"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:767
|
||||
#: ../js/ui/lookingGlass.js:764
|
||||
msgid "Enabled"
|
||||
msgstr "به کار انداختن"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:770 ../src/gvc/gvc-mixer-control.c:1082
|
||||
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||
msgid "Disabled"
|
||||
msgstr "از کار انداختن"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:772
|
||||
#: ../js/ui/lookingGlass.js:769
|
||||
msgid "Error"
|
||||
msgstr "خطا"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:774
|
||||
#: ../js/ui/lookingGlass.js:771
|
||||
msgid "Out of date"
|
||||
msgstr "قدیمی"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:776
|
||||
#: ../js/ui/lookingGlass.js:773
|
||||
msgid "Downloading"
|
||||
msgstr "در حال بارگیری"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:800
|
||||
#: ../js/ui/lookingGlass.js:797
|
||||
msgid "View Source"
|
||||
msgstr "نمایش منبع"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:809
|
||||
#: ../js/ui/lookingGlass.js:806
|
||||
msgid "Web Page"
|
||||
msgstr "صفحهی وب"
|
||||
|
||||
#: ../js/ui/messageTray.js:1233
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "بازکردن"
|
||||
|
||||
#: ../js/ui/messageTray.js:1240
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "حذف"
|
||||
|
||||
#: ../js/ui/messageTray.js:1250
|
||||
msgid "Unmute"
|
||||
msgstr "باصدا"
|
||||
|
||||
#: ../js/ui/messageTray.js:1250
|
||||
msgid "Mute"
|
||||
msgstr "بیصدا"
|
||||
|
||||
#: ../js/ui/messageTray.js:2037
|
||||
#: ../js/ui/messageTray.js:1533
|
||||
msgid "Message Tray"
|
||||
msgstr "سینی پیام"
|
||||
|
||||
#: ../js/ui/messageTray.js:2485
|
||||
#: ../js/ui/messageTray.js:2544
|
||||
msgid "System Information"
|
||||
msgstr "اطلاعات سیستم"
|
||||
|
||||
@ -1064,11 +1096,11 @@ msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "ناشناس"
|
||||
|
||||
#: ../js/ui/overview.js:83
|
||||
#: ../js/ui/overview.js:82
|
||||
msgid "Undo"
|
||||
msgstr "برگردان"
|
||||
|
||||
#: ../js/ui/overview.js:128
|
||||
#: ../js/ui/overview.js:127
|
||||
msgid "Overview"
|
||||
msgstr "نمایکلی"
|
||||
|
||||
@ -1076,13 +1108,13 @@ msgstr "نمایکلی"
|
||||
#. in the search entry when no search is
|
||||
#. active; it should not exceed ~30
|
||||
#. characters.
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:201
|
||||
msgid "Type to search..."
|
||||
msgstr "برای جستجو تایپ کنید..."
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:223
|
||||
#: ../js/ui/overview.js:222
|
||||
msgid "Dash"
|
||||
msgstr "دَش"
|
||||
|
||||
@ -1100,25 +1132,12 @@ msgstr "فعالیتها"
|
||||
msgid "Top Bar"
|
||||
msgstr "نوار بالا"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:115
|
||||
#, c-format
|
||||
msgid "Failed to unmount '%s'"
|
||||
msgstr "عدم توانایی در پیاده کردن «%s»"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:118
|
||||
msgid "Retry"
|
||||
msgstr "سعی مجدد"
|
||||
|
||||
#: ../js/ui/placeDisplay.js:349
|
||||
msgid "PLACES & DEVICES"
|
||||
msgstr "محلها و ابزارها"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:728
|
||||
#: ../js/ui/popupMenu.js:731
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -1128,33 +1147,29 @@ msgstr "لطفا یک فرمان وارد کنید:"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:78
|
||||
#| msgctxt "calendar heading"
|
||||
#| msgid "%A, %B %d"
|
||||
#: ../js/ui/screenShield.js:79
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A، %Od %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%Id پیام جدید"
|
||||
msgstr[1] "%Id پیام جدید"
|
||||
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#, c-format
|
||||
#| msgid "Notifications"
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
msgstr[0] "%Id اعلان جدید"
|
||||
msgstr[1] "%Id اعلان جدید"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:277
|
||||
#: ../js/ui/searchDisplay.js:275
|
||||
msgid "Searching..."
|
||||
msgstr "درحال حستجو..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:328
|
||||
#| msgid "No matching results."
|
||||
#: ../js/ui/searchDisplay.js:323
|
||||
msgid "No results."
|
||||
msgstr "بدون نتیجه."
|
||||
|
||||
@ -1166,25 +1181,23 @@ msgstr "رونوشت"
|
||||
msgid "Paste"
|
||||
msgstr "چسباندن"
|
||||
|
||||
#: ../js/ui/shellEntry.js:96
|
||||
#: ../js/ui/shellEntry.js:102
|
||||
msgid "Show Text"
|
||||
msgstr "نمایش متن"
|
||||
|
||||
#: ../js/ui/shellEntry.js:98
|
||||
#: ../js/ui/shellEntry.js:104
|
||||
msgid "Hide Text"
|
||||
msgstr "مخفیکردن متن"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:368
|
||||
#| msgid "Password:"
|
||||
msgid "Password"
|
||||
msgstr "گذرواژه"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:389
|
||||
#| msgid "Remember Passphrase"
|
||||
msgid "Remember Password"
|
||||
msgstr "بهخاطر سپردن گذرواژه"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:138
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
msgid "Unlock"
|
||||
msgstr "بازکردن قفل"
|
||||
|
||||
@ -1302,7 +1315,7 @@ msgstr "تنظیمات صفحهکلید"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "تنظیمات موشی"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "تنظیمات صدا"
|
||||
|
||||
@ -1362,11 +1375,11 @@ msgstr "لطفا PIN ذکر شده در دستگاه را وارد کنید."
|
||||
msgid "OK"
|
||||
msgstr "تایید"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:170
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "نمایش چیدمان صفحهکلید"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:175
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "تنظیمات ناحیه و زبان"
|
||||
|
||||
@ -1589,7 +1602,7 @@ msgid "Unknown"
|
||||
msgstr "ناشناس"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "بلندی صدا"
|
||||
|
||||
@ -1597,43 +1610,34 @@ msgstr "بلندی صدا"
|
||||
msgid "Microphone"
|
||||
msgstr "میکروفون"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:145
|
||||
#| msgid "Login as another user"
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
msgid "Log in as another user"
|
||||
msgstr "ورود به سیستم بعنوان کاربری دیگر"
|
||||
|
||||
#: ../js/ui/userMenu.js:174
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "در دسترس"
|
||||
|
||||
#: ../js/ui/userMenu.js:177
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "مشغول"
|
||||
|
||||
#: ../js/ui/userMenu.js:180
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "نامرئی"
|
||||
|
||||
#: ../js/ui/userMenu.js:183
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "غائب"
|
||||
|
||||
#: ../js/ui/userMenu.js:186
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "بیکار"
|
||||
|
||||
#: ../js/ui/userMenu.js:189
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "خارج از دسترس"
|
||||
|
||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "تعویض کاربر"
|
||||
|
||||
#: ../js/ui/userMenu.js:613
|
||||
msgid "Switch Session"
|
||||
msgstr "تعویض نشست"
|
||||
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "اعلانها"
|
||||
@ -1642,6 +1646,10 @@ msgstr "اعلانها"
|
||||
msgid "System Settings"
|
||||
msgstr "تنظیمات سیستم"
|
||||
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "تعویض کاربر"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "خروج از سیستم"
|
||||
@ -1666,19 +1674,19 @@ msgstr ""
|
||||
"هماکنون اعلانها، از جمله پیامهای گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونهای "
|
||||
"تنظیم شده است که به دیگران نشان دهد ممکن است شما پیامهایشان را نبینید."
|
||||
|
||||
#: ../js/ui/viewSelector.js:86
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
msgid "Windows"
|
||||
msgstr "پنجرهها"
|
||||
|
||||
#: ../js/ui/viewSelector.js:90
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
msgid "Applications"
|
||||
msgstr "برنامهها"
|
||||
|
||||
#: ../js/ui/viewSelector.js:94 ../src/shell-util.c:250
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
msgid "Search"
|
||||
msgstr "جستجو"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1687,12 +1695,12 @@ msgstr ""
|
||||
"شرمنده، هیچ تعبیری امروز برای شما وجود ندارد:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:127
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s پیشگو میگوید"
|
||||
msgstr "%s پیشگو میگوید"
|
||||
|
||||
#: ../js/ui/wanda.js:168
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "تخممرغ شانسی مورد علاقه شما"
|
||||
|
||||
@ -1768,27 +1776,26 @@ msgstr "پیشفرض"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "محاوره تایید هویت از طرف کاربر رد شد"
|
||||
|
||||
#. Translators: this is the same string as the one found in
|
||||
#. * nautilus
|
||||
#: ../src/shell-util.c:94
|
||||
msgid "Home"
|
||||
msgstr "خانه"
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "غیرفعال کردنِ تامینکنندهگان OpenSearch"
|
||||
|
||||
#. Translators: this is the same string as the one found in
|
||||
#. * nautilus
|
||||
#: ../src/shell-util.c:104
|
||||
msgid "File System"
|
||||
msgstr "سیستم پروندهها"
|
||||
#~ msgid "Failed to unmount '%s'"
|
||||
#~ msgstr "عدم توانایی در پیاده کردن «%s»"
|
||||
|
||||
#. Translators: the first string is the name of a gvfs
|
||||
#. * method, and the second string is a path. For
|
||||
#. * example, "Trash: some-directory". It means that the
|
||||
#. * directory called "some-directory" is in the trash.
|
||||
#.
|
||||
#: ../src/shell-util.c:300
|
||||
#, c-format
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
#~ msgid "Retry"
|
||||
#~ msgstr "سعی مجدد"
|
||||
|
||||
#~ msgid "PLACES & DEVICES"
|
||||
#~ msgstr "محلها و ابزارها"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "تعویض نشست"
|
||||
|
||||
#~ msgid "Home"
|
||||
#~ msgstr "خانه"
|
||||
|
||||
#~ msgid "%1$s: %2$s"
|
||||
#~ msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "Connect to..."
|
||||
#~ msgstr "اتصال به..."
|
||||
@ -1845,16 +1852,16 @@ msgstr "%1$s: %2$s"
|
||||
#~ msgstr "شبکه"
|
||||
|
||||
#~ msgid "%s is online."
|
||||
#~ msgstr "%s بر خط است."
|
||||
#~ msgstr "%s بر خط است."
|
||||
|
||||
#~ msgid "%s is offline."
|
||||
#~ msgstr "%s برون خط است."
|
||||
#~ msgstr "%s برون خط است."
|
||||
|
||||
#~ msgid "%s is away."
|
||||
#~ msgstr "%s غایب است."
|
||||
#~ msgstr "%s غایب است."
|
||||
|
||||
#~ msgid "%s is busy."
|
||||
#~ msgstr "%s مشغول است."
|
||||
#~ msgstr "%s مشغول است."
|
||||
|
||||
#~ msgid "Hidden"
|
||||
#~ msgstr "نامرئی"
|
||||
|
77
po/fr.po
77
po/fr.po
@ -17,8 +17,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master fr\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-20 07:05+0000\n"
|
||||
"PO-Revision-Date: 2012-09-20 12:25+0200\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-10-04 15:34+0200\n"
|
||||
"Last-Translator: Alexandre Franke <alexandre.franke@gmail.com>\n"
|
||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||
"Language: \n"
|
||||
@ -266,11 +266,11 @@ msgstr ""
|
||||
"Sélectionnez une extension à configurer en utilisant la boîte combinée ci-"
|
||||
"dessus."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
msgid "Session..."
|
||||
msgstr "Session..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Connexion"
|
||||
@ -278,37 +278,42 @@ msgstr "Connexion"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
msgid "Not listed?"
|
||||
msgstr "Absent de la liste ?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Se connecter"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
msgid "Login Window"
|
||||
msgstr "Fenêtre de connexion"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Énergie"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Mettre en veille"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Éteindre"
|
||||
|
||||
@ -516,7 +521,7 @@ msgstr "Sa"
|
||||
#. Translators: Text to show if there are no events
|
||||
#: ../js/ui/calendar.js:699
|
||||
msgid "Nothing Scheduled"
|
||||
msgstr "Rien au calendrier"
|
||||
msgstr "Rien de prévu"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: ../js/ui/calendar.js:715
|
||||
@ -940,7 +945,7 @@ msgstr "Paramètres de date et heure"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
msgid "Open Calendar"
|
||||
msgstr "Ouvrir le calendrier"
|
||||
msgstr "Ouvrir l'agenda"
|
||||
|
||||
# luc: FIXME: how to have a capitalized weekday (start of sentence)?
|
||||
# %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase)
|
||||
@ -1062,7 +1067,7 @@ msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org
|
||||
msgid "tray"
|
||||
msgstr "tiroir de messagerie"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Clavier"
|
||||
@ -1123,11 +1128,11 @@ msgstr "Ouvrir"
|
||||
msgid "Remove"
|
||||
msgstr "Enlever"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
msgid "Message Tray"
|
||||
msgstr "Tiroir de messagerie"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
msgid "System Information"
|
||||
msgstr "Informations du système"
|
||||
|
||||
@ -1417,11 +1422,11 @@ msgstr ""
|
||||
msgid "OK"
|
||||
msgstr "Valider"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Afficher la disposition du clavier"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Paramètres de région et de langue"
|
||||
|
||||
@ -1656,63 +1661,63 @@ msgstr "Microphone"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Se connecter en tant qu'un autre utilisateur"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Occupé"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Invisible"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Absent"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Inactif"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Non disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Changer d'utilisateur"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Changer de session"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Notifications"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Paramètres système"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Fermer la session"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Verrouiller"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Installer les mises à jour et redémarrer"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Votre statut pour les discussions sera défini à occupé"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1758,7 +1763,7 @@ msgstr "« %s » est prêt"
|
||||
|
||||
#: ../src/calendar-server/evolution-calendar.desktop.in.in.h:1
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Calendrier Evolution"
|
||||
msgstr "Agenda d'Evolution"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
|
146
po/gl.po
146
po/gl.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-25 10:47+0200\n"
|
||||
"PO-Revision-Date: 2012-09-25 10:48+0200\n"
|
||||
"POT-Creation-Date: 2012-10-16 13:35+0200\n"
|
||||
"PO-Revision-Date: 2012-10-16 14:22+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: gnome-l10n-gl@gnome.org\n"
|
||||
"Language: gl\n"
|
||||
@ -39,6 +39,14 @@ msgstr "Sistema"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Mostrar a bandexa de mensaxes"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Mostrar todos os aplicativos"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Abrir o menú de aplicativo"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -156,35 +164,46 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Combinación de teclas para abrir o menú de aplicativo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Combinación de teclas para abrir a vista «Mostrar aplicativos»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Combinación de teclas para abrir a vista \"Mostrar aplicativos\" da Vista xera "
|
||||
"de Actividades."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Combinación de teclas para mostrar/ocultar a área de mensaxes."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
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.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
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.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Que teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "O tipo de teclado a usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Taxa de marcos usada para gravar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -192,11 +211,11 @@ msgstr ""
|
||||
"A taxa de marcos da grabación resultante grabada polo grabador de "
|
||||
"«screencast» de GNOME Shell, en marcos por segundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "A tubería de gstreamer usada para codificar o «screenast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -222,11 +241,11 @@ msgstr ""
|
||||
"queue ! webmmux» e grava en WEBM usando o códec VP8. Úsase %T como marcador "
|
||||
"de posición para o número de fillos óptimos no sistema."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Extensión de ficheiro que usar para almacenar os «screencast»"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -250,11 +269,11 @@ msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
"Seleccione unha extensión que configurar usando a caixa combinada de arriba."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesión…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
@ -262,23 +281,23 @@ msgstr "Iniciar sesión"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Non está na lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Iniciar sesión"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Xanela de inicio de sesión"
|
||||
|
||||
@ -287,8 +306,8 @@ msgstr "Xanela de inicio de sesión"
|
||||
msgid "Power"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
@ -296,8 +315,8 @@ msgstr "Suspender"
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -348,7 +367,7 @@ msgstr "CONFIGURACIÓN"
|
||||
msgid "New Window"
|
||||
msgstr "Xanela nova"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Retirar dos marcadores"
|
||||
|
||||
@ -512,16 +531,16 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "A vindeira semana"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Dispositivos extraíbeis"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Abrir con %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Expulsar"
|
||||
|
||||
@ -895,7 +914,7 @@ msgstr "Editar conta"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón descoñecida"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Mostrar aplicativos"
|
||||
|
||||
@ -903,14 +922,14 @@ msgstr "Mostrar aplicativos"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Preferencias de data e hora"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir o calendario"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e de %B, %Y"
|
||||
|
||||
@ -1078,11 +1097,11 @@ msgstr "Abrir"
|
||||
msgid "Remove"
|
||||
msgstr "Retirar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Bandexa de mensaxes"
|
||||
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Información do sistema"
|
||||
|
||||
@ -1146,14 +1165,14 @@ msgstr "Escriba unha orde:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d de %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d mensaxe nova"
|
||||
msgstr[1] "%d mensaxes novas"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1192,7 +1211,7 @@ msgstr "Contrasinal"
|
||||
msgid "Remember Password"
|
||||
msgstr "Lembrar o contrasinal"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Desbloquear"
|
||||
|
||||
@ -1310,7 +1329,7 @@ msgstr "Preferencias do teclado"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Preferencias do rato"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Preferencias do son"
|
||||
|
||||
@ -1595,7 +1614,7 @@ msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1603,7 +1622,7 @@ msgstr "Volume"
|
||||
msgid "Microphone"
|
||||
msgstr "Micrófono"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Iniciar sesión como outro usuario"
|
||||
|
||||
@ -1631,39 +1650,35 @@ msgstr "Inactivo"
|
||||
msgid "Unavailable"
|
||||
msgstr "Non dispoñíbel"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Cambiar de sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacións"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Preferencias do sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Saír da sesión"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Bloquear"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instalar actualizacións e reiniciar"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "O seu estado de conversa definirase como «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1672,19 +1687,19 @@ msgstr ""
|
||||
"conversa. O seu estado de conexión axustouse para que outros saiban que non "
|
||||
"quere ver as súas mensaxes."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Xanelas"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1693,12 +1708,12 @@ msgstr ""
|
||||
"Hoxe non ten ningunha mensaxe:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s o oráculo dí"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "A súa mensaxe oculta favorita"
|
||||
|
||||
@ -1733,21 +1748,21 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons do sistema"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
|
||||
"sesión"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Listar os modos posíbeis"
|
||||
|
||||
@ -1776,6 +1791,9 @@ msgstr "Predeterminado"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "O usuario rexeitou o diálogo de autenticación"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Cambiar de sesión"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "fornecedores OpenSearch desactivados"
|
||||
|
||||
|
154
po/hu.po
154
po/hu.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-20 14:55+0200\n"
|
||||
"PO-Revision-Date: 2012-09-20 14:52+0200\n"
|
||||
"POT-Creation-Date: 2012-09-26 16:11+0200\n"
|
||||
"PO-Revision-Date: 2012-09-26 16:12+0200\n"
|
||||
"Last-Translator: Gabor Kelemen <kelemeng at gnome dot hu>\n"
|
||||
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
|
||||
"Language: hu\n"
|
||||
@ -17,7 +17,23 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Lokalize 1.4\n"
|
||||
"X-Generator: KBabel 1.11.4\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
msgstr "Képernyőképek"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr "Képernyővideó felvétele"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
msgid "System"
|
||||
msgstr "Rendszer"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
msgid "Show the message tray"
|
||||
msgstr "Üzenettálca megjelenítése"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
@ -149,8 +165,7 @@ msgstr "Billentyűtársítás a képernyőfelvevő megnyitásához"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr ""
|
||||
"Billentyűtársítás a beépített képernyőfelvevő elindításához/leállításához."
|
||||
msgstr "Billentyűtársítás a beépített képernyőfelvevő elindításához/leállításához."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Which keyboard to use"
|
||||
@ -230,11 +245,11 @@ msgstr "Kiterjesztés"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Válasszon egy beállítandó kiterjesztést a fenti legördülő menüből."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Munkamenet…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Bejelentkezés"
|
||||
@ -242,47 +257,56 @@ msgstr "Bejelentkezés"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "Nincs a listán?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:137
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Mégse"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Bejelentkezés"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Bejelentkezési ablak"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:657 ../js/ui/userMenu.js:661
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Kikapcsolás"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Felfüggesztés"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Újraindítás"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:659 ../js/ui/userMenu.js:661
|
||||
#: ../js/ui/userMenu.js:771
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Kikapcsolás"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
msgid "Authentication error"
|
||||
msgstr "Hitelesítési hiba"
|
||||
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/util.js:247
|
||||
#: ../js/gdm/util.js:265
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(vagy húzza le az ujját)"
|
||||
|
||||
#: ../js/gdm/util.js:272
|
||||
#: ../js/gdm/util.js:290
|
||||
#, c-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(például: felhasználó vagy %s)"
|
||||
@ -809,10 +833,8 @@ msgid "This account is already connected to the server"
|
||||
msgstr "Ez a fiók már kapcsolódik a kiszolgálóhoz"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"A kapcsolatot leváltotta egy új, ugyanazt az erőforrást használó kapcsolat"
|
||||
msgid "Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "A kapcsolatot leváltotta egy új, ugyanazt az erőforrást használó kapcsolat"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
msgid "The account already exists on the server"
|
||||
@ -827,8 +849,7 @@ msgid "Certificate has been revoked"
|
||||
msgstr "A tanúsítvány visszavonva"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"A tanúsítvány nem biztonságos titkosító algoritmust használ, vagy "
|
||||
"titkosításilag gyenge"
|
||||
@ -984,14 +1005,13 @@ msgstr "Telepítés"
|
||||
#: ../js/ui/extensionDownloader.js:204
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
||||
msgstr "Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "tálca"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:146
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Billentyűzet"
|
||||
@ -1044,19 +1064,19 @@ msgstr "Forrás megtekintése"
|
||||
msgid "Web Page"
|
||||
msgstr "Weblap"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Megnyitás"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Eltávolítás"
|
||||
|
||||
#: ../js/ui/messageTray.js:2041
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Üzenettálca"
|
||||
|
||||
#: ../js/ui/messageTray.js:2483
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Rendszerinformációk"
|
||||
|
||||
@ -1117,18 +1137,18 @@ msgstr "Adjon meg egy parancsot:"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:78
|
||||
#: ../js/ui/screenShield.js:79
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %B %d."
|
||||
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d új üzenet"
|
||||
msgstr[1] "%d új üzenet"
|
||||
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1167,7 +1187,7 @@ msgstr "Jelszó"
|
||||
msgid "Remember Password"
|
||||
msgstr "Jelszó megjegyzése"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:140
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
msgid "Unlock"
|
||||
msgstr "Feloldás"
|
||||
|
||||
@ -1285,7 +1305,7 @@ msgstr "Billentyűzetbeállítások"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Egérbeállítások"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Hangbeállítások"
|
||||
|
||||
@ -1343,11 +1363,11 @@ msgstr "Adja meg az eszközön említett PIN-kódot."
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:170
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Billentyűzetkiosztás megjelenítése"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:175
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Területi és nyelvi beállítások"
|
||||
|
||||
@ -1570,7 +1590,7 @@ msgid "Unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Hangerő"
|
||||
|
||||
@ -1578,67 +1598,67 @@ msgstr "Hangerő"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:147
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
msgid "Log in as another user"
|
||||
msgstr "Bejelentkezés másik felhasználóként"
|
||||
|
||||
#: ../js/ui/userMenu.js:174
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Elérhető"
|
||||
|
||||
#: ../js/ui/userMenu.js:177
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Elfoglalt"
|
||||
|
||||
#: ../js/ui/userMenu.js:180
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Láthatatlan"
|
||||
|
||||
#: ../js/ui/userMenu.js:183
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Távol"
|
||||
|
||||
#: ../js/ui/userMenu.js:186
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Ráér"
|
||||
|
||||
#: ../js/ui/userMenu.js:189
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Nem érhető el"
|
||||
|
||||
#: ../js/ui/userMenu.js:612 ../js/ui/userMenu.js:753
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Felhasználóváltás"
|
||||
|
||||
#: ../js/ui/userMenu.js:613
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Felhasználóváltás"
|
||||
|
||||
#: ../js/ui/userMenu.js:737
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Értesítések"
|
||||
|
||||
#: ../js/ui/userMenu.js:745
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Rendszerbeállítások"
|
||||
|
||||
#: ../js/ui/userMenu.js:758
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Kijelentkezés"
|
||||
|
||||
#: ../js/ui/userMenu.js:763
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Lezárás"
|
||||
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Frissítések telepítése és újraindítás"
|
||||
|
||||
#: ../js/ui/userMenu.js:796
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Csevegési állapota elfoglaltra lesz állítva"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1718,8 +1738,7 @@ msgstr "A GDM által a bejelentkezési képernyőhöz használt mód"
|
||||
|
||||
#: ../src/main.c:342
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Használjon egy adott módot, például a „gdm”-et a bejelentkező képernyőn"
|
||||
msgstr "Használjon egy adott módot, például a „gdm”-et a bejelentkező képernyőn"
|
||||
|
||||
#: ../src/main.c:348
|
||||
msgid "List possible modes"
|
||||
@ -1750,20 +1769,3 @@ msgstr "Alapértelmezett"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "A hitelesítési ablakot a felhasználó bezárta"
|
||||
|
||||
#~ msgid "Screenshots"
|
||||
#~ msgstr "Képernyőképek"
|
||||
|
||||
#~ msgid "Record a screencast"
|
||||
#~ msgstr "Képernyővideó felvétele"
|
||||
|
||||
#~| msgid "System Sounds"
|
||||
#~ msgid "System"
|
||||
#~ msgstr "Rendszer"
|
||||
|
||||
#~| msgid "Message Tray"
|
||||
#~ msgid "Show the message tray"
|
||||
#~ msgstr "Üzenettálca megjelenítése"
|
||||
|
||||
#~| msgid "Authentication Required"
|
||||
#~ msgid "Authentication error"
|
||||
#~ msgstr "Hitelesítési hiba"
|
||||
|
154
po/id.po
154
po/id.po
@ -10,8 +10,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 09:53+0700\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 07:11+0700\n"
|
||||
"Last-Translator: Andika Triwidada <andika@gmail.com>\n"
|
||||
"Language-Team: Indonesian <gnome@i15n.org>\n"
|
||||
"Language: id\n"
|
||||
@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Generator: Poedit 1.5.3\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
@ -38,6 +38,14 @@ msgstr "Sistem"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Tampilkan baki pesan"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Tampilkan semua aplikasi"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Buka menu aplikasi"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -155,34 +163,45 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Kombinasi tombol untuk membuka menu aplikasi."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Kombinasi tombol untuk membuka tilikan \"Tampilkan Aplikasi\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr ""
|
||||
"Kombinasi tombol untuk membuka tilikan Ringkasan Aktivitas \"Tampilkan "
|
||||
"Aplikasi\"."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Kombinasi tombol untuk kenampakan baki pesan."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Kombinasi tombol untuk perekaman layar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Kombinasi tombol mulai/menghentikan perekam layar bawaan."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Papan tik mana yang akan dipakai"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Jenis papan tik yang akan dipakai."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Laju gambar untuk menyimpan tangkapan layar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -190,11 +209,11 @@ msgstr ""
|
||||
"Laju frame dari hasil screencast yang direkam oleh perekam screencast GNOME "
|
||||
"Shell dalam frame per detik."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Jalur pipa gstreamer yang dipakai untuk mengode screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -220,11 +239,11 @@ msgstr ""
|
||||
"dan merekam ke WEBM memakai kodek VP8. %T digunakan sebagai pewakil untuk "
|
||||
"perkiraan jumlah thread optimal pada sistem."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Ekstensi berkas untuk menyimpan tangkapan layar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid ""
|
||||
"The filename for recorded screencasts will be a unique filename based on the "
|
||||
"current date, and use this extension. It should be changed when recording to "
|
||||
@ -247,11 +266,11 @@ msgstr "Ekstensi"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Pilih ekstensi yang ingin dikonfigurasi pada kotak di atas."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesi..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Masuk"
|
||||
@ -259,34 +278,33 @@ msgstr "Masuk"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Tak masuk daftar?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Masuk"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Jendela Log Masuk"
|
||||
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
#| msgid "Power Off"
|
||||
msgid "Power"
|
||||
msgstr "Daya"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Suspensi"
|
||||
|
||||
@ -294,8 +312,8 @@ msgstr "Suspensi"
|
||||
msgid "Restart"
|
||||
msgstr "Nyalakan Ulang"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Matikan"
|
||||
|
||||
@ -346,7 +364,7 @@ msgstr "PENGATURAN"
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
@ -510,16 +528,16 @@ msgstr "Minggu ini"
|
||||
msgid "Next week"
|
||||
msgstr "Minggu depan"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Perangkat Yang Dapat Dicabut"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Buka dengan %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Keluarkan"
|
||||
|
||||
@ -891,7 +909,7 @@ msgstr "Sunting Akun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Alasan yang tidak diketahui"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Tampilkan Aplikasi"
|
||||
|
||||
@ -899,14 +917,14 @@ msgstr "Tampilkan Aplikasi"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Pengaturan Waktu dan Tanggal"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Buka Kalender"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
|
||||
@ -1005,11 +1023,11 @@ msgstr "Pasang"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Unduh dan pasang '%s' dari extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "baki"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Papan Ketik"
|
||||
@ -1062,19 +1080,19 @@ msgstr "Tilik Sumber"
|
||||
msgid "Web Page"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Buka"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Hapus"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Baki Pesan"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1139,13 +1157,13 @@ msgstr "Ketikkan perintah:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d pesan baru"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1183,7 +1201,7 @@ msgstr "Sandi"
|
||||
msgid "Remember Password"
|
||||
msgstr "Ingat Sandi"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Buka Kunci"
|
||||
|
||||
@ -1301,7 +1319,7 @@ msgstr "Pengaturan Papan Ketik"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Pengaturan Tetikus"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Pengaturan Suara"
|
||||
|
||||
@ -1582,7 +1600,7 @@ msgid "Unknown"
|
||||
msgstr "Tak Dikenal"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1590,7 +1608,7 @@ msgstr "Volume"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Masuk sebagai pengguna lain"
|
||||
|
||||
@ -1618,39 +1636,35 @@ msgstr "Menganggur"
|
||||
msgid "Unavailable"
|
||||
msgstr "Tak tersedia"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Ganti Pengguna"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Pindah Sesi"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Pemberitahuan"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Pengaturan Sistem"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Ganti Pengguna"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Keluar"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Kunci"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Pasang Pemutakhiran & Jalankan Ulang"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Status obrolan Anda akan ditata ke sibuk"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1659,19 +1673,19 @@ msgstr ""
|
||||
"telah disesuaikan untuk memberitahu pihak lain bahwa Anda mungkin tak "
|
||||
"melihat pesan mereka."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Jendela"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Aplikasi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Cari"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1680,12 +1694,12 @@ msgstr ""
|
||||
"Maaf, tidak ada kata-kata bijak bagi Anda hari ini:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s sang Peramal berkata"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Easter Egg kesukaan Anda"
|
||||
|
||||
@ -1718,19 +1732,19 @@ msgstr[0] "%u Masukan"
|
||||
msgid "System Sounds"
|
||||
msgstr "Suara Sistem"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Versi Cetak"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Mode yang dipakai oleh layar log masuk GDM"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Menampilkan mode yang mungkin"
|
||||
|
||||
|
80
po/it.po
80
po/it.po
@ -1,5 +1,6 @@
|
||||
# Italian translations for gnome-shell package.
|
||||
# Copyright (C) 2009, 2010 the gnome-shell copyright holder
|
||||
# Copyright (C) 2009, 2010, the gnome-shell copyright holder
|
||||
# Copyright (C) 2011, 2012, the Free Software Foundation
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
#
|
||||
# Luca Ferretti <lferrett@gnome.org>, 2010, 2011, 2012.
|
||||
@ -9,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-22 16:54+0200\n"
|
||||
"PO-Revision-Date: 2012-09-22 16:54+0200\n"
|
||||
"POT-Creation-Date: 2012-09-29 18:06+0200\n"
|
||||
"PO-Revision-Date: 2012-09-29 18:08+0200\n"
|
||||
"Last-Translator: Milo Casagrande <milo@ubuntu.com>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"Language: it\n"
|
||||
@ -253,11 +254,11 @@ msgstr ""
|
||||
"Selezionare una estensione da configurare usando la casella combinata qui "
|
||||
"sopra."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Sessione..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Accesso"
|
||||
@ -265,37 +266,42 @@ msgstr "Accesso"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "Non elencato?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra di accesso"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Risparmio energetico"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
@ -1025,11 +1031,11 @@ msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||
# FIXME!!!!!!
|
||||
# dai, ma come fai a tradurre un pulsante del genere?!?!?!
|
||||
# per ora ho messo nascondi, poi vedremo
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "nascondi"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastiera"
|
||||
@ -1084,19 +1090,19 @@ msgstr "Visualizza sorgente"
|
||||
msgid "Web Page"
|
||||
msgstr "Pagina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Rimuovi"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Cassetto messaggi"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Informazione di sistema"
|
||||
|
||||
@ -1329,7 +1335,7 @@ msgstr "Impostazioni tastiera"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Impostazioni mouse"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Impostazioni audio"
|
||||
|
||||
@ -1617,7 +1623,7 @@ msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -1629,64 +1635,64 @@ msgstr "Microfono"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Accedi come altro utente"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Non disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Invisibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Assente"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Inattivo"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Non disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Cambia utente"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Cambia sessione"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Notifiche"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Impostazioni di sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Termina sessione"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Blocca"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Installa aggiornamenti e riavvia"
|
||||
|
||||
# accorciato, altrimenti non si legge...
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Stato per chat impostato a non disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
|
153
po/ja.po
153
po/ja.po
@ -12,9 +12,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 00:06+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 09:10+0900\n"
|
||||
"Last-Translator: Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
|
||||
"POT-Creation-Date: 2012-10-16 12:22+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 10:53+0900\n"
|
||||
"Last-Translator: Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
|
||||
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
|
||||
"Language: ja\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -39,6 +39,14 @@ msgstr "システム"
|
||||
msgid "Show the message tray"
|
||||
msgstr "メッセージトレイを表示する"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "すべてのアプリケーションを表示"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "アプリケーションメニューを開く"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -121,51 +129,59 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "アプリケーションメニューを開くためのキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "「アプリケーションの表示」のビューを開くキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "アクティビティで「アプリケーションの表示」のビューを開くキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "メッセージトレイの表示・非表示を切り替えるキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "メッセージトレイを表示したり非表示にしたりするのを切り替えるキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "スクリーンレコーダー切り替えのキーバインド"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "内蔵のスクリーンレコーダーを起動したり止めたりするキーバインドです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "使いたいキーボードの種類"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "使いたいキーボードの種類です。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "スクリーンキャスト録画のフレームレート"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒あたりのフレーム数です。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, 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 min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr "録画したものをエンコードするための Gstreamer パイプラインを設定します。構文は gst-launch のものに準拠します。パイプラインは未接続の録画用 sink pad を持つようにしてください。パイプラインは通常未接続の source pad を持ち、ファイルへ出力データを書き込みますが、出力方法については独自に定義することもできます。shout2send プラグインやその類似プラグインを経由して icecast サーバーへ出力データを送信するときは、この方法をとります。値が設定されていないか、空の場合は、既定のパイプライン 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' はシステムの最適スレッド数の推量値を示すプレースホルダーです。"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "ファイルに保存するスクリーンキャストのファイル拡張子"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "録画したスクリーンキャストをファイルに保存する際は、日付を基にした固有の名前とこの拡張子をファイル名として使用します。異なる形式で録画するときは拡張子を変更する必要があります。"
|
||||
|
||||
@ -182,11 +198,11 @@ msgstr "拡張機能"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "設定する拡張機能を上部のコンボボックスから選択してください。"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "セッション..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "サインイン"
|
||||
@ -194,23 +210,23 @@ msgstr "サインイン"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "アカウントが見つかりませんか?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "サインイン"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "ログインウィンドウ"
|
||||
|
||||
@ -219,8 +235,8 @@ msgstr "ログインウィンドウ"
|
||||
msgid "Power"
|
||||
msgstr "電源"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "サスペンド"
|
||||
|
||||
@ -228,8 +244,8 @@ msgstr "サスペンド"
|
||||
msgid "Restart"
|
||||
msgstr "再起動"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "電源オフ"
|
||||
|
||||
@ -280,7 +296,7 @@ msgstr "設定"
|
||||
msgid "New Window"
|
||||
msgstr "新しいウィンドウで開く"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "お気に入りから削除"
|
||||
|
||||
@ -444,16 +460,16 @@ msgstr "今週"
|
||||
msgid "Next week"
|
||||
msgstr "来週"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "リムーバブルデバイス"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "%s で開く"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "取り出し"
|
||||
|
||||
@ -814,7 +830,7 @@ msgstr "アカウントの編集"
|
||||
msgid "Unknown reason"
|
||||
msgstr "原因不明"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "アプリケーションの表示"
|
||||
|
||||
@ -822,14 +838,14 @@ msgstr "アプリケーションの表示"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "日時の設定"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "カレンダーを開く"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%Y年%B%e日 (%a)"
|
||||
|
||||
@ -926,11 +942,11 @@ msgstr "インストール"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "extensions.gnome.org から '%s' をダウンロードしてインストールしますか?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "トレイ"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "キーボード"
|
||||
@ -983,19 +999,19 @@ msgstr "ソースの表示"
|
||||
msgid "Web Page"
|
||||
msgstr "ウェブページ"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "開く"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "削除"
|
||||
|
||||
#: ../js/ui/messageTray.js:2055
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "メッセージトレイ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2511
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "システム情報"
|
||||
|
||||
@ -1059,13 +1075,13 @@ msgstr "コマンド:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%B%d日 %A"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
msgstr[0] "%d 件の新しいメッセージ"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1103,7 +1119,7 @@ msgstr "パスワード"
|
||||
msgid "Remember Password"
|
||||
msgstr "パスワードを保存"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "ロック解除"
|
||||
|
||||
@ -1221,7 +1237,7 @@ msgstr "キーボードの設定"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "マウスの設定"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "サウンドの設定"
|
||||
|
||||
@ -1502,7 +1518,7 @@ msgid "Unknown"
|
||||
msgstr "不明なデバイス"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "音量"
|
||||
|
||||
@ -1510,7 +1526,7 @@ msgstr "音量"
|
||||
msgid "Microphone"
|
||||
msgstr "マイク"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "他のユーザーでログイン"
|
||||
|
||||
@ -1538,55 +1554,51 @@ msgstr "待機中"
|
||||
msgid "Unavailable"
|
||||
msgstr "オフライン"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "ユーザーの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "セッションの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "通知"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "システム設定"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "ユーザーの切り替え"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "ログアウト"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "ロック"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "更新のインストールと再起動"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "取り込み中に設定されます"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||
msgstr "チャットなどの通知メッセージが表示されなくなります。オンライン状態が変更され、あなたがメッセージに目を通せない状態にあることを、他の人が知ることができます。"
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "ウィンドウ"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "アプリケーション"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "検索"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1595,12 +1607,12 @@ msgstr ""
|
||||
"すまない、今日は賢言がないのだ:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "預言者 %s 曰く"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "あなたの好きなイースターエッグ"
|
||||
|
||||
@ -1633,19 +1645,19 @@ msgstr[0] "入力数: %u"
|
||||
msgid "System Sounds"
|
||||
msgstr "システムのサウンド"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "バージョンを表示"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "ログイン画面で GDM が使用するモード"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "指定したモードを使用する (例: ログイン画面用の \"gdm\")"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "使用可能なモードを一覧表示する"
|
||||
|
||||
@ -1674,6 +1686,9 @@ msgstr "既定"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "認証ダイアログはユーザーに拒否されました"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "セッションの切り替え"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "OpenSearch プロバイダーを無効にする"
|
||||
|
||||
|
116
po/ko.po
116
po/ko.po
@ -13,8 +13,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-22 18:49+0900\n"
|
||||
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
|
||||
"PO-Revision-Date: 2012-10-13 18:55+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"Language: Korean\n"
|
||||
@ -200,7 +200,17 @@ msgid ""
|
||||
"'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr "녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인에 연결하지 않은 상태여야 합니다. 보통은 소스 패드도 연결하지 않고, 소스 패드의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, 기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'이고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으로 생각되는 스레드 수로 대체됩니다."
|
||||
msgstr ""
|
||||
"녹화 인코딩에 사용할 GStreamer 파이프라인을 지정합니다. gst-launch 프로그램"
|
||||
"에 사용하는 문법을 따릅니다. 녹화한 영상이 입력되는 싱크 패드는 이 파이프라인"
|
||||
"에 연결하지 않은 상태여야 합니다. 보통은 소스 패드도 연결하지 않고, 소스 패드"
|
||||
"의 출력을 출력 파일에 기록합니다. 하지만 파이프라인에서 이 출력을 처리할 수"
|
||||
"도 있습니다. shout2send 같은 프로그램을 이용해 아이스캐스트 서버로 출력을 보"
|
||||
"내거나 하는 용도로 사용할 수 있습니다. 설정을 취소하거나 빈 값으로 설정하면, "
|
||||
"기본 파이프라인을 사용합니다. 기본 파이프라인은 'vp8enc min_quantizer=13 "
|
||||
"max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux'이"
|
||||
"고 VP8 코덱을 사용해 WEBM 형식으로 녹화합니다. '%T' 기호는 시스템에서 최적으"
|
||||
"로 생각되는 스레드 수로 대체됩니다."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
@ -228,11 +238,11 @@ msgstr "확장"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "세션..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "로그인"
|
||||
@ -240,37 +250,42 @@ msgstr "로그인"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "목록에 없습니까?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "취소"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "로그인"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "로그인 창"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "전원"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "절전"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "다시 시작"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "컴퓨터 끄기"
|
||||
|
||||
@ -485,16 +500,16 @@ msgstr "이번주"
|
||||
msgid "Next week"
|
||||
msgstr "다음주"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "이동식 장치"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "%s 프로그램으로 열기"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "꺼내기"
|
||||
|
||||
@ -975,11 +990,11 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"extensions.gnome.org 사이트에서 '%s' 확장을 다운로드해 설치하시겠습니까?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "트레이"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "키보드"
|
||||
@ -1032,19 +1047,19 @@ msgstr "소스 보기"
|
||||
msgid "Web Page"
|
||||
msgstr "웹페이지"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "열기"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "제거"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1533
|
||||
msgid "Message Tray"
|
||||
msgstr "메시지 트레이"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2544
|
||||
msgid "System Information"
|
||||
msgstr "시스템 정보"
|
||||
|
||||
@ -1270,7 +1285,7 @@ msgstr "키보드 설정"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "마우스 설정"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "소리 설정"
|
||||
|
||||
@ -1328,11 +1343,11 @@ msgstr "해당 장치에 표시된 PIN을 입력하십시오."
|
||||
msgid "OK"
|
||||
msgstr "확인"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "키보드 배치 표시"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "지역 및 언어 설정"
|
||||
|
||||
@ -1552,7 +1567,7 @@ msgstr "알 수 없음"
|
||||
|
||||
# 오디오 볼륨
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "볼륨"
|
||||
|
||||
@ -1564,63 +1579,59 @@ msgstr "마이크"
|
||||
msgid "Log in as another user"
|
||||
msgstr "다른 사용자로 로그인"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "대화 가능"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "다른 용무 중"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "안 보임"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "자리 비움"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "입력 없음"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "사용 불가"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "사용자 바꾸기"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "세션 바꾸기"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "알림"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "시스템 설정"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "사용자 바꾸기"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "로그아웃"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "잠그기"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "업데이트 설치 후 다시 시작"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "대화 가능 상태가 다른 용무 중으로 설정됩니다"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1640,7 +1651,7 @@ msgstr "프로그램"
|
||||
msgid "Search"
|
||||
msgstr "검색"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1650,12 +1661,12 @@ msgstr ""
|
||||
"%s"
|
||||
|
||||
# 원래 "신탁"이지만 한국인이 이해하기 쉽게 맞게 변경.
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "현자 %s께서 말씀하시길"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "여러분이 좋아하는 이스터 에그"
|
||||
|
||||
@ -1729,3 +1740,6 @@ msgstr "기본값"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "세션 바꾸기"
|
||||
|
358
po/lt.po
358
po/lt.po
@ -1,5 +1,5 @@
|
||||
# Lithuanian translation for gnome-shell.
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
# Copyright © 2010-2012 Free Software Foundation, Inc.
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
# Žygimantas Beručka <zygis@gnome.org>, 2010, 2011, 2012.
|
||||
# Algimantas Margevičius <gymka@mail.ru>, 2011.
|
||||
@ -7,17 +7,19 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-21 20:53+0300\n"
|
||||
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\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-09-27 19:27+0000\n"
|
||||
"PO-Revision-Date: 2012-09-30 12:30+0300\n"
|
||||
"Last-Translator: Žygimantas Beručka <zygis@gnome.org>\n"
|
||||
"Language-Team: Lithuanian\n"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Virtaal 0.7.0\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
|
||||
"100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Generator: Virtaal 0.7.1\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
@ -26,15 +28,13 @@ msgstr "Ekranvaizdžiai"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:2
|
||||
msgid "Record a screencast"
|
||||
msgstr "Įrašyti ekrano veiksmus"
|
||||
msgstr "Įrašyti ekrano vaizdo įrašą"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Rodyti pranešimų juostą"
|
||||
|
||||
@ -57,35 +57,62 @@ msgstr "Konfigūruoti GNOME Shell plėtinius"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr "Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus programuotojams ir bandytojams"
|
||||
msgstr ""
|
||||
"Įjungti vidinius, Alt-F2 klavišų pagalba pasiekiamus įrankius, naudingus "
|
||||
"programuotojams ir bandytojams"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
|
||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
msgstr "Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-F2 dialogą."
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
msgstr ""
|
||||
"Suteikia prieigą prie vidinio derinimo ir stebėjimo įrankių, naudojant Alt-"
|
||||
"F2 dialogą."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
|
||||
msgid "Uuids of extensions to enable"
|
||||
msgstr "Įjungtinų plėtinių UUID."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
|
||||
msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension DBus methods on org.gnome.Shell."
|
||||
msgstr "GNOME Shell plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome.Shell DBus metodus EnableExtension ir DisableExtension."
|
||||
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 plėtiniai turi uuid savybę; šiame rakte išvardinti plėtiniai, "
|
||||
"kurie turėtų būti įkelti. Bet kuris plėtinys, kuris nori būti įkeltas, turi "
|
||||
"būti šiame sąraše. Šį sąrašą taip pat galima keisti naudojant org.gnome."
|
||||
"Shell DBus metodus EnableExtension ir DisableExtension."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
|
||||
msgid "Whether to collect stats about applications usage"
|
||||
msgstr "Ar rinkti statistinę informaciją apie programų naudojimą"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
|
||||
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 "Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys nebus pašalinti."
|
||||
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 ""
|
||||
"Įprastai GNOME aplinka stebi aktyvias programas siekiant pateikti "
|
||||
"dažniausiai naudojamas (pvz., leistukuose). Nors šie duomenys "
|
||||
"konfidencialiai saugomi, jei norite, saugumo sumetimais galite šią funkciją "
|
||||
"išjungti. Atminkite, kad išjungus šią funkciją anksčiau įrašyti duomenys "
|
||||
"nebus pašalinti."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "Mėgstamų programų darbastalio failų ID sąrašas"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
|
||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
msgstr "Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų srityje."
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Programos, atitinkančios šiuos identifikatorius, bus rodomos mėgstamų "
|
||||
"srityje."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
@ -96,12 +123,20 @@ msgid "History for the looking glass dialog"
|
||||
msgstr "Didinamojo stiklo dialogo retrospektyva"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.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 "Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. Vertė yra iš TpConnectionPresenceType išvardinimo."
|
||||
msgid ""
|
||||
"Internally used to store the last IM presence explicitly set by the user. "
|
||||
"The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
"Naudojama viduje paskutinei naudotojo nustatytai pranešimų būsenai saugoti. "
|
||||
"Vertė yra iš TpConnectionPresenceType išvardinimo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.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 "Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė yra iš GsmPresenceStatus išvardinimo."
|
||||
msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
"Naudojama viduje paskutines sesijos naudotojo būvimo būsenai saugoti. Vertė "
|
||||
"yra iš GsmPresenceStatus išvardinimo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "Show the week date in the calendar"
|
||||
@ -148,8 +183,12 @@ msgid "Framerate used for recording screencasts."
|
||||
msgstr "Kadrų dažnis, naudojamas norint įrašyti ekrano vaizdo įrašą."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis kadrais per sekundę."
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
"GNOME Shell ekranų įrašymo programa sukurto ekrano įrašo kadrų dažnis "
|
||||
"kadrais per sekundę."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
@ -157,16 +196,43 @@ msgstr "Gstreamer konvejeris, naudojamas užkoduojant ekrano vaizdo įrašą."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, 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 min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr "Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
|
||||
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 min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 "
|
||||
"threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is "
|
||||
"used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr ""
|
||||
"Nurodo GStreamer konvejerį, naudojamą įrašams koduoti. Jame naudojama gst-"
|
||||
"launch sintaksė. Konvejeryje turėtų būti neprijungtas išvesties pagrindo "
|
||||
"elementas, kuriame įrašomas vaizdo įrašas. Paprastai jame yra neprijungtas "
|
||||
"šaltinio elementas; išvestis iš to elemento bus įrašyta į išvesties failą. "
|
||||
"Tačiau konvejeris taip pat gali pasirūpinti savo paties išvestimi – tai gali "
|
||||
"būti panaudota norint perduoti išvestį icecast serveriui per shout2send ar "
|
||||
"pan. elementą. Kai reikšmė nenustatyta ar nustatyta tuščia reikšmė, "
|
||||
"naudojamas numatytasis konvejeris. Šiuo metu tai yra „vp8enc "
|
||||
"min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! "
|
||||
"queue ! webmmux“ ir įrašo į WEBM naudojant VP8 kodeką. %T yra naudojamas "
|
||||
"kaip žymeklis optimalaus gijų skaičiaus sistemoje spėjimui."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Failų plėtinys, naudojamas įrašyti ekrano vaizdo įrašą"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
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 "Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą konteinerio formatą jį reikėtų pakeisti."
|
||||
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 ""
|
||||
"Įrašytų ekrano vaizdo įrašų failų vardas bus unikalus, sudaromas "
|
||||
"atsižvelgiant į dabartinę datą ir naudojantis šį plėtinį. Rašant į kitą "
|
||||
"konteinerio formatą jį reikėtų pakeisti."
|
||||
|
||||
#: ../js/extensionPrefs/main.js:124
|
||||
#, c-format
|
||||
@ -181,11 +247,11 @@ msgstr "Plėtinys"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Išskleidžiamajame sąraše pasirinkite konfigūruotiną plėtinį."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Seansas..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Prisijungti"
|
||||
@ -193,50 +259,46 @@ msgstr "Prisijungti"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "Nėra sąraše?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
#: ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162
|
||||
#: ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195
|
||||
#: ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427
|
||||
#: ../js/ui/unlockDialog.js:166
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Atsisakyti"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prisijungti"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Prisijungimo langas"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88
|
||||
#: ../js/ui/userMenu.js:658
|
||||
#: ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Energija"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "Užmigdyti"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Paleisti iš naujo"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98
|
||||
#: ../js/ui/userMenu.js:660
|
||||
#: ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "Išjungti"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Tapatybės patvirtinimo klaida"
|
||||
|
||||
@ -283,8 +345,7 @@ msgstr "NUSTATYMAI"
|
||||
msgid "New Window"
|
||||
msgstr "Naujas langas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678
|
||||
#: ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Pašalinti iš mėgstamų"
|
||||
|
||||
@ -461,8 +522,7 @@ msgstr "Atverti su %s"
|
||||
msgid "Eject"
|
||||
msgstr "Išimti"
|
||||
|
||||
#: ../js/ui/components/keyring.js:86
|
||||
#: ../js/ui/components/polkitAgent.js:260
|
||||
#: ../js/ui/components/keyring.js:86 ../js/ui/components/polkitAgent.js:260
|
||||
msgid "Password:"
|
||||
msgstr "Slaptažodis:"
|
||||
|
||||
@ -514,8 +574,12 @@ msgstr "Belaidžiam tinklui reikia patvirtinti tapatybę"
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:310
|
||||
#, c-format
|
||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
msgstr "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio tinklo „%s“."
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
msgstr ""
|
||||
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
|
||||
"tinklo „%s“."
|
||||
|
||||
#: ../js/ui/components/networkAgent.js:314
|
||||
msgid "Wired 802.1X authentication"
|
||||
@ -566,8 +630,7 @@ msgstr "Patvirtinti tapatybę"
|
||||
#. * requested authentication was not gained; this can happen
|
||||
#. * because of an authentication error (like invalid password),
|
||||
#. * for instance.
|
||||
#: ../js/ui/components/polkitAgent.js:248
|
||||
#: ../js/ui/shellMountOperation.js:381
|
||||
#: ../js/ui/components/polkitAgent.js:248 ../js/ui/shellMountOperation.js:381
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
|
||||
|
||||
@ -629,7 +692,7 @@ msgstr "Išsiųsta <b>%B %d</b>, <b>%A</b>"
|
||||
#: ../js/ui/components/telepathyClient.js:959
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Išsiųsta %Y <b>%B %d</b>, <b>%A</b>"
|
||||
msgstr "Išsiųsta %Y m. <b>%B %d d.</b>, <b>%A</b>"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
@ -772,7 +835,8 @@ msgid "This account is already connected to the server"
|
||||
msgstr "Ši paskyra jau prijungta prie serverio"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
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 "Ryšys pakeistas nauju ryšiu naudojant tą patį išteklių"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
@ -788,12 +852,19 @@ msgid "Certificate has been revoked"
|
||||
msgstr "Liudijimas atšauktas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai silpnas"
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Liudijimui naudojamas nesaugus šifravimo algoritmas arba jis kriptografiškai "
|
||||
"silpnas"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr "Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos bibliotekos apribojimus"
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr ""
|
||||
"Serverio liudijimo ilgis arba liudijimų eilės dydis viršija kriptografijos "
|
||||
"bibliotekos apribojimus"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
msgid "Internal error"
|
||||
@ -818,8 +889,7 @@ msgstr "Taisyti paskyrą"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nežinoma priežastis"
|
||||
|
||||
#: ../js/ui/dash.js:245
|
||||
#: ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
msgid "Show Applications"
|
||||
msgstr "Rodyti programos"
|
||||
|
||||
@ -851,7 +921,9 @@ msgstr "Atsijungti"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:63
|
||||
msgid "Click Log Out to quit these applications and log out of the system."
|
||||
msgstr "Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo sistemos."
|
||||
msgstr ""
|
||||
"Spustelėkite „Išeiti“, jei norite užverti šias programas ir atsijungti nuo "
|
||||
"sistemos."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:65
|
||||
#, c-format
|
||||
@ -885,7 +957,9 @@ msgstr "Išjungti"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:82
|
||||
msgid "Click Power Off to quit these applications and power off the system."
|
||||
msgstr "Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti sistemą."
|
||||
msgstr ""
|
||||
"Spustelėkite „Išjungti“, jei norite užverti šias programas ir išjungti "
|
||||
"sistemą."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:84
|
||||
#, c-format
|
||||
@ -899,8 +973,7 @@ msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių."
|
||||
msgid "Powering off the system."
|
||||
msgstr "Sistema išjungiama."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:90
|
||||
#: ../js/ui/endSessionDialog.js:107
|
||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Paleisti iš naujo"
|
||||
@ -917,7 +990,9 @@ msgstr "Paleisti iš naujo"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:99
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr "Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir paleisti sistemą iš naujo."
|
||||
msgstr ""
|
||||
"Spustelėkite „Paleisti iš naujo“, jei norite užverti šias programas ir "
|
||||
"paleisti sistemą iš naujo."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:101
|
||||
#, c-format
|
||||
@ -940,12 +1015,11 @@ msgstr "Įdiegti"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Atsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "dėklas"
|
||||
|
||||
#: ../js/ui/keyboard.js:561
|
||||
#: ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Klaviatūra"
|
||||
@ -964,8 +1038,7 @@ msgstr "%s nepranešė apie jokias klaidas."
|
||||
msgid "Hide Errors"
|
||||
msgstr "Slėpti klaidas"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:755
|
||||
#: ../js/ui/lookingGlass.js:815
|
||||
#: ../js/ui/lookingGlass.js:755 ../js/ui/lookingGlass.js:815
|
||||
msgid "Show Errors"
|
||||
msgstr "Rodyti klaidas"
|
||||
|
||||
@ -975,8 +1048,7 @@ msgstr "Įjungta"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:767
|
||||
#: ../src/gvc/gvc-mixer-control.c:1082
|
||||
#: ../js/ui/lookingGlass.js:767 ../src/gvc/gvc-mixer-control.c:1082
|
||||
msgid "Disabled"
|
||||
msgstr "Išjungta"
|
||||
|
||||
@ -1000,24 +1072,23 @@ msgstr "Žiūrėti šaltinį"
|
||||
msgid "Web Page"
|
||||
msgstr "Tinklalapis"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Atverti"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Pašalinti"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "Pranešimų juosta"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "Sistemos informacija"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:506
|
||||
#: ../src/shell-app.c:373
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Nežinoma"
|
||||
@ -1125,8 +1196,7 @@ msgstr "Slaptažodis"
|
||||
msgid "Remember Password"
|
||||
msgstr "Atsiminti slaptažodį"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400
|
||||
#: ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
msgid "Unlock"
|
||||
msgstr "Atrakinti"
|
||||
|
||||
@ -1178,14 +1248,10 @@ msgstr "Didelis kontrastas"
|
||||
msgid "Large Text"
|
||||
msgstr "Didelis tekstas"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:27
|
||||
#: ../js/ui/status/bluetooth.js:31
|
||||
#: ../js/ui/status/bluetooth.js:251
|
||||
#: ../js/ui/status/bluetooth.js:304
|
||||
#: ../js/ui/status/bluetooth.js:335
|
||||
#: ../js/ui/status/bluetooth.js:371
|
||||
#: ../js/ui/status/bluetooth.js:400
|
||||
#: ../js/ui/status/network.js:867
|
||||
#: ../js/ui/status/bluetooth.js:27 ../js/ui/status/bluetooth.js:31
|
||||
#: ../js/ui/status/bluetooth.js:251 ../js/ui/status/bluetooth.js:304
|
||||
#: ../js/ui/status/bluetooth.js:335 ../js/ui/status/bluetooth.js:371
|
||||
#: ../js/ui/status/bluetooth.js:400 ../js/ui/status/network.js:867
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -1206,8 +1272,7 @@ msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth nustatymai"
|
||||
|
||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||
#: ../js/ui/status/bluetooth.js:103
|
||||
#: ../js/ui/status/network.js:208
|
||||
#: ../js/ui/status/bluetooth.js:103 ../js/ui/status/network.js:208
|
||||
msgid "hardware disabled"
|
||||
msgstr "įrenginys išjungtas"
|
||||
|
||||
@ -1215,13 +1280,11 @@ msgstr "įrenginys išjungtas"
|
||||
msgid "Connection"
|
||||
msgstr "Ryšys"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:207
|
||||
#: ../js/ui/status/network.js:458
|
||||
#: ../js/ui/status/bluetooth.js:207 ../js/ui/status/network.js:458
|
||||
msgid "disconnecting..."
|
||||
msgstr "atsijungiama..."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:220
|
||||
#: ../js/ui/status/network.js:464
|
||||
#: ../js/ui/status/bluetooth.js:220 ../js/ui/status/network.js:464
|
||||
#: ../js/ui/status/network.js:934
|
||||
msgid "connecting..."
|
||||
msgstr "jungiamasi..."
|
||||
@ -1251,8 +1314,7 @@ msgstr "Klaviatūros nustatymai"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Pelės nustatymai"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269
|
||||
#: ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Garso nustatymai"
|
||||
|
||||
@ -1279,8 +1341,7 @@ msgstr "Leisti tik šį kartą"
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "Suporavimo patvirtinimas įrenginiui %s"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:378
|
||||
#: ../js/ui/status/bluetooth.js:408
|
||||
#: ../js/ui/status/bluetooth.js:378 ../js/ui/status/bluetooth.js:408
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "Įrenginys %s pageidauja būti suporuotas su šiuo kompiuteriu"
|
||||
@ -1311,11 +1372,11 @@ msgstr "Įveskite PIN, nurodytą įrenginyje."
|
||||
msgid "OK"
|
||||
msgstr "Gerai"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Rodyti klaviatūros išdėstymą"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Regiono ir kalbos nustatymai"
|
||||
|
||||
@ -1339,8 +1400,7 @@ msgid "unmanaged"
|
||||
msgstr "nevaldomas"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: ../js/ui/status/network.js:467
|
||||
#: ../js/ui/status/network.js:937
|
||||
#: ../js/ui/status/network.js:467 ../js/ui/status/network.js:937
|
||||
msgid "authentication required"
|
||||
msgstr "reikia patvirtinti tapatybę"
|
||||
|
||||
@ -1361,20 +1421,17 @@ msgstr "atjungtas laidas"
|
||||
msgid "unavailable"
|
||||
msgstr "nepasiekiamas"
|
||||
|
||||
#: ../js/ui/status/network.js:491
|
||||
#: ../js/ui/status/network.js:939
|
||||
#: ../js/ui/status/network.js:491 ../js/ui/status/network.js:939
|
||||
msgid "connection failed"
|
||||
msgstr "nepavyko prisijungti"
|
||||
|
||||
#: ../js/ui/status/network.js:552
|
||||
#: ../js/ui/status/network.js:1529
|
||||
#: ../js/ui/status/network.js:552 ../js/ui/status/network.js:1529
|
||||
msgid "More..."
|
||||
msgstr "Rodyti daugiau tinklų..."
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:588
|
||||
#: ../js/ui/status/network.js:1459
|
||||
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1459
|
||||
msgid "Connected (private)"
|
||||
msgstr "Prisijungta (privatus)"
|
||||
|
||||
@ -1391,8 +1448,7 @@ msgid "Auto dial-up"
|
||||
msgstr "Automatinis telefoninis"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:853
|
||||
#: ../js/ui/status/network.js:1476
|
||||
#: ../js/ui/status/network.js:853 ../js/ui/status/network.js:1476
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Automatinis %s"
|
||||
@ -1495,8 +1551,7 @@ msgstr[0] "liko %d minutė"
|
||||
msgstr[1] "liko %d minutės"
|
||||
msgstr[2] "liko %d minučių"
|
||||
|
||||
#: ../js/ui/status/power.js:112
|
||||
#: ../js/ui/status/power.js:186
|
||||
#: ../js/ui/status/power.js:112 ../js/ui/status/power.js:186
|
||||
#, c-format
|
||||
msgctxt "percent of battery remaining"
|
||||
msgid "%d%%"
|
||||
@ -1548,8 +1603,7 @@ msgid "Unknown"
|
||||
msgstr "Nežinoma"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47
|
||||
#: ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Garsumas"
|
||||
|
||||
@ -1561,66 +1615,70 @@ msgstr "Mikrofonas"
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prisijungti kaip kitas naudotojas"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Esu"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Užsiėmęs (-usi)"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Nematomas"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Išėjęs (-usi)"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Neužimtas"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Nepasiekiamas"
|
||||
|
||||
#: ../js/ui/userMenu.js:613
|
||||
#: ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Keisti naudotoją"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Perjungti seansą"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "Pranešimai"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "Sistemos nustatymai"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "Atsijungti"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "Užrakinti"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Įdiegti atnaujinimus ir įkelti iš naujo"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Jūsų pokalbio būsena bus nustatyta į užimta"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||
msgstr "Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs galite nepamatyti jų pranešimų."
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
msgstr ""
|
||||
"Pranešimai šiuo metu yra išjungti, įskaitant pokalbių pranešimus. Jūsų "
|
||||
"būsena internete atitinkamai pakoreguota, kad kiti galėtų žinoti, jog jūs "
|
||||
"galite nepamatyti jų pranešimų."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
msgid "Windows"
|
||||
@ -1695,7 +1753,7 @@ msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
|
||||
|
||||
#: ../src/main.c:342
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Naudoti specialią veikseną, pvz. „gdm“ prisijungimo ekranui"
|
||||
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
|
||||
|
||||
#: ../src/main.c:348
|
||||
msgid "List possible modes"
|
||||
@ -1725,21 +1783,3 @@ msgstr "Numatytasis"
|
||||
#: ../src/shell-polkit-authentication-agent.c:343
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "išjungti OpenSearch tiekėjai"
|
||||
|
||||
#~ msgid "Failed to unmount '%s'"
|
||||
#~ msgstr "Nepavyko atjungti „%s“"
|
||||
|
||||
#~ msgid "Retry"
|
||||
#~ msgstr "Bandyti dar kartą"
|
||||
|
||||
#~ msgid "PLACES & DEVICES"
|
||||
#~ msgstr "VIETOS IR ĮRENGINIAI"
|
||||
|
||||
#~ msgid "Home"
|
||||
#~ msgstr "Namų aplankas"
|
||||
|
||||
#~ msgid "%1$s: %2$s"
|
||||
#~ msgstr "%1$s: %2$s"
|
||||
|
84
po/lv.po
84
po/lv.po
@ -7,18 +7,19 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-25 10:39+0300\n"
|
||||
"PO-Revision-Date: 2012-09-25 10:44+0300\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-10-04 06:59+0000\n"
|
||||
"PO-Revision-Date: 2012-10-15 17:52+0300\n"
|
||||
"Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
|
||||
"Language-Team: Latvian <lata-l18n@googlegroups.com>\n"
|
||||
"Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
|
||||
"Language: lv\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
|
||||
"2);\n"
|
||||
"X-Generator: Lokalize 1.4\n"
|
||||
"X-Generator: Lokalize 1.5\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
msgid "Screenshots"
|
||||
@ -243,11 +244,11 @@ msgstr "Paplašinājums"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Izvēlieties konfigurējamo paplašinājumu no saraksta."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "Sesija..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Ierakstīties"
|
||||
@ -255,23 +256,23 @@ msgstr "Ierakstīties"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "Nav sarakstā?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "Atcelt"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Ierakstīties"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "Ierakstīšanās logs"
|
||||
|
||||
@ -280,8 +281,8 @@ msgstr "Ierakstīšanās logs"
|
||||
msgid "Power"
|
||||
msgstr "Barošana"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Iesnaudināt"
|
||||
|
||||
@ -289,8 +290,8 @@ msgstr "Iesnaudināt"
|
||||
msgid "Restart"
|
||||
msgstr "Pārstartēt"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Izslēgt"
|
||||
|
||||
@ -481,7 +482,7 @@ msgstr "Nekas nav ieplānots"
|
||||
#: ../js/ui/calendar.js:715
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: ../js/ui/calendar.js:718
|
||||
@ -505,16 +506,16 @@ msgstr "Šonedēļ"
|
||||
msgid "Next week"
|
||||
msgstr "Nākamnedēļ"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Izņemamās ierīces"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Atvērt ar %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Izgrūst"
|
||||
|
||||
@ -1075,11 +1076,11 @@ msgstr "Atvērt"
|
||||
msgid "Remove"
|
||||
msgstr "Izņemt"
|
||||
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
#: ../js/ui/messageTray.js:1533
|
||||
msgid "Message Tray"
|
||||
msgstr "Ziņojumu paplāte"
|
||||
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
#: ../js/ui/messageTray.js:2544
|
||||
msgid "System Information"
|
||||
msgstr "Sistēmas informācija"
|
||||
|
||||
@ -1141,7 +1142,7 @@ msgstr "Lūdzu, ievadiet komandu:"
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:79
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d %B"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#, c-format
|
||||
@ -1309,7 +1310,7 @@ msgstr "Tastatūras iestatījumi"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Peles iestatījumi"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Skaņas iestatījumi"
|
||||
|
||||
@ -1598,7 +1599,7 @@ msgid "Unknown"
|
||||
msgstr "Nezināma"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Skaļums"
|
||||
|
||||
@ -1634,39 +1635,35 @@ msgstr "Dīkstāvē"
|
||||
msgid "Unavailable"
|
||||
msgstr "Nav pieejams"
|
||||
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Mainīt lietotāju"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Mainīt sesiju"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Paziņojumi"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Sistēmas iestatījumi"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Mainīt lietotāju"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Izrakstīties"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Bloķēt"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instalēt atjauninājumus un pārstartēt"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Tērzēšanas status tiks iestatīts uz “aizņemts”"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1687,7 +1684,7 @@ msgstr "Lietotnes"
|
||||
msgid "Search"
|
||||
msgstr "Meklēt"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1696,12 +1693,12 @@ msgstr ""
|
||||
"Piedod, bet šodien nebūs nekādu gudrību:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "%s saka Orākuls"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Jūsu mīļākā Lieldienu ola"
|
||||
|
||||
@ -1779,6 +1776,9 @@ msgstr "Noklusētais"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Lietotājs noraidīja autentifikācijas dialoglodziņu"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Mainīt sesiju"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "deaktivētie OpenSearch piegādātāji"
|
||||
|
||||
|
263
po/pl.po
263
po/pl.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-09-19 16:38+0200\n"
|
||||
"PO-Revision-Date: 2012-09-19 16:40+0200\n"
|
||||
"POT-Creation-Date: 2012-10-31 19:12+0100\n"
|
||||
"PO-Revision-Date: 2012-10-31 19:13+0100\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <gnomepl@aviary.pl>\n"
|
||||
"Language: pl\n"
|
||||
@ -142,62 +142,74 @@ msgstr ""
|
||||
"użytkownika. Wartość pochodzi ze spisu GsmPresenceStatus."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "Always show the 'Log out' menuitem in the user menu."
|
||||
msgstr "Wyświetlanie elementu menu \"Wyloguj się\" w menu użytkownika."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Ten klucz zastępuje automatyczne ukrywanie elementu menu \"Wyloguj się\" w "
|
||||
"sytuacji, gdy istnieje tylko jeden użytkownik i jedna sesja."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Wyświetlanie dnia tygodnia w kalendarzu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr ""
|
||||
"Jeśli jest ustawione na \"true\", to wyświetla w kalendarzu dzień tygodnia w "
|
||||
"formacie ISO."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Skrót do otwarcia menu programu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Skrót do otwarcia menu programu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Skrót do przełączenia widoczności obszaru powiadamiania"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Skrót do przełączenia widoczności obszaru powiadamiania."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Skrót do przełączenia nagrywania ekranu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Skrót do uruchomienia/zatrzymania wbudowanego nagrywania ekranu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Której klawiatury używać"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Typ używanej klawiatury."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Liczba klatek na sekundę do nagrywania ekranu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr "Liczba klatek na sekundę wynikowego nagrania ekranu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Potok biblioteki GStreamer używany do zakodowania nagrania ekranu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -222,11 +234,11 @@ msgstr ""
|
||||
"i nagrywa do formatu WebM używając kodeka VP8. %T jest zamieniane na "
|
||||
"odgadniętą optymalną liczbę wątków dla komputera."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Rozszerzenie pliku używane do przechowywania nagrań ekranu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -252,11 +264,11 @@ msgstr ""
|
||||
"Proszę wybrać rozszerzenie do skonfigurowania używając powyższego pola "
|
||||
"wyboru."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesja..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Proszę się zalogować"
|
||||
@ -264,37 +276,42 @@ msgstr "Proszę się zalogować"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Inny użytkownik?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Zaloguj"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Okno logowania"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Zasilanie"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:664 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:779
|
||||
msgid "Suspend"
|
||||
msgstr "Uśpij"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Uruchom ponownie"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:666 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Power Off"
|
||||
msgstr "Wyłącz komputer"
|
||||
|
||||
@ -345,7 +362,7 @@ msgstr "Ustawienia"
|
||||
msgid "New Window"
|
||||
msgstr "Nowe okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Usuń z ulubionych"
|
||||
|
||||
@ -509,16 +526,16 @@ msgstr "Ten tydzień"
|
||||
msgid "Next week"
|
||||
msgstr "Następny tydzień"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Urządzenia wymienne"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Otwórz za pomocą %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Wysuń"
|
||||
|
||||
@ -675,35 +692,35 @@ msgstr "Wycisz"
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/components/telepathyClient.js:948
|
||||
#: ../js/ui/components/telepathyClient.js:950
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Wysłano w dniu <b>%e %b</b> o godzinie <b>%H:%M</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/components/telepathyClient.js:954
|
||||
#: ../js/ui/components/telepathyClient.js:956
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Wysłano w dniu <b>%d %B</b>, <b>%A</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/components/telepathyClient.js:959
|
||||
#: ../js/ui/components/telepathyClient.js:961
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Wysłano w dniu <b>%d %B</b> %Y, <b>%A</b>"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/components/telepathyClient.js:988
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Użytkownik %s jest teraz znany jako %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1088
|
||||
#: ../js/ui/components/telepathyClient.js:1090
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Zaproszenie do pokoju %s"
|
||||
@ -711,42 +728,42 @@ msgstr "Zaproszenie do pokoju %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1096
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "Użytkownik %s zaprasza do dołączenia do pokoju %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#: ../js/ui/components/telepathyClient.js:1177
|
||||
#: ../js/ui/components/telepathyClient.js:1240
|
||||
#: ../js/ui/components/telepathyClient.js:1100
|
||||
#: ../js/ui/components/telepathyClient.js:1179
|
||||
#: ../js/ui/components/telepathyClient.js:1242
|
||||
msgid "Decline"
|
||||
msgstr "Odmów"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1099
|
||||
#: ../js/ui/components/telepathyClient.js:1178
|
||||
#: ../js/ui/components/telepathyClient.js:1241
|
||||
#: ../js/ui/components/telepathyClient.js:1101
|
||||
#: ../js/ui/components/telepathyClient.js:1180
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
msgid "Accept"
|
||||
msgstr "Zaakceptuj"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1129
|
||||
#: ../js/ui/components/telepathyClient.js:1131
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Wideorozmowa z użytkownikiem %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1132
|
||||
#: ../js/ui/components/telepathyClient.js:1134
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Rozmowa z użytkownikiem %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1137
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
#: ../js/ui/status/bluetooth.js:346
|
||||
msgid "Reject"
|
||||
msgstr "Odrzuć"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
#: ../js/ui/components/telepathyClient.js:1141
|
||||
msgid "Answer"
|
||||
msgstr "Odbierz"
|
||||
|
||||
@ -755,111 +772,111 @@ msgstr "Odbierz"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/components/telepathyClient.js:1171
|
||||
#: ../js/ui/components/telepathyClient.js:1173
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "Użytkownik %s przysyła plik %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/components/telepathyClient.js:1206
|
||||
#: ../js/ui/components/telepathyClient.js:1208
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "Użytkownik %s prosi o uprawnienie do wyświetlania stanu"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1298
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
msgid "Network error"
|
||||
msgstr "Błąd sieci"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
msgid "Authentication failed"
|
||||
msgstr "Uwierzytelnienie się nie powiodło"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
msgid "Encryption error"
|
||||
msgstr "Błąd szyfrowania"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Nie podano certyfikatu"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Certyfikat jest niezaufany"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certyfikat wygasł"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certyfikat nie został aktywowany"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Nazwa komputera certyfikatu się nie zgadza"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Odcisk palca certyfikatu się nie zgadza"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certyfikat został samodzielnie podpisany"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Stan jest ustawiony na offline"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Szyfrowanie jest niedostępne"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Certyfikat jest nieprawidłowy"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Odrzucono połączenie"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Nie można nawiązać połączenia"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Utracono połączenie"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "To konto jest już połączone z serwerem"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Połączenie zostało zastąpione nowym z wykorzystaniem tego samego zasobu"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Konto już istnieje na serwerze"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Serwer jest obecnie zbyt zajęty, aby obsłużyć połączenie"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Certyfikat został unieważniony"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Certyfikat używa niezabezpieczonego algorytmu szyfrowania lub jest "
|
||||
"kryptograficznie słaby"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -867,30 +884,30 @@ msgstr ""
|
||||
"Długość certyfikatu serwera lub głębokość jego łańcucha przekracza "
|
||||
"ograniczenia nałożone przez bibliotekę kryptograficzną"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
msgid "Internal error"
|
||||
msgstr "Błąd wewnętrzny"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Połączenie z kontem %s się nie powiodło"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Reconnect"
|
||||
msgstr "Połącz ponownie"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
msgid "Edit account"
|
||||
msgstr "Modyfikuj konto"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1409
|
||||
#: ../js/ui/components/telepathyClient.js:1411
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nieznana przyczyna"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Wyświetl programy"
|
||||
|
||||
@ -898,14 +915,14 @@ msgstr "Wyświetl programy"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ustawienia daty i czasu"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Otwórz kalendarz"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B %Y"
|
||||
|
||||
@ -1013,11 +1030,11 @@ msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"Pobrać i zainstalować rozszerzenie \"%s\" z witryny extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "Ikona"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Klawiatura"
|
||||
@ -1070,23 +1087,23 @@ msgstr "Wyświetl źródło"
|
||||
msgid "Web Page"
|
||||
msgstr "Strona WWW"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1084
|
||||
msgid "Open"
|
||||
msgstr "Otwórz"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1091
|
||||
msgid "Remove"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: ../js/ui/messageTray.js:2050
|
||||
#: ../js/ui/messageTray.js:1543
|
||||
msgid "Message Tray"
|
||||
msgstr "Obszar powiadamiania"
|
||||
|
||||
#: ../js/ui/messageTray.js:2506
|
||||
#: ../js/ui/messageTray.js:2549
|
||||
msgid "System Information"
|
||||
msgstr "Informacje systemowe"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:374
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Nieznany"
|
||||
@ -1142,7 +1159,7 @@ msgstr "Proszę wprowadzić polecenie:"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:79
|
||||
#: ../js/ui/screenShield.js:80
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %e %B"
|
||||
|
||||
@ -1194,7 +1211,7 @@ msgstr "Hasło"
|
||||
msgid "Remember Password"
|
||||
msgstr "Zapamiętanie hasła"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Odblokuj"
|
||||
|
||||
@ -1312,7 +1329,7 @@ msgstr "Ustawienia klawiatury"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Ustawienia myszy"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Ustawienia dźwięku"
|
||||
|
||||
@ -1370,11 +1387,11 @@ msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu."
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Wyświetl układ klawiatury"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Ustawienia regionu i języka"
|
||||
|
||||
@ -1601,7 +1618,7 @@ msgid "Unknown"
|
||||
msgstr "Nieznane"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Głośność"
|
||||
|
||||
@ -1609,67 +1626,63 @@ msgstr "Głośność"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Zaloguj jako inny użytkownik"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:181
|
||||
msgid "Available"
|
||||
msgstr "Dostępny"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:184
|
||||
msgid "Busy"
|
||||
msgstr "Zajęty"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:187
|
||||
msgid "Invisible"
|
||||
msgstr "Niewidoczny"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:190
|
||||
msgid "Away"
|
||||
msgstr "Nieobecny"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:193
|
||||
msgid "Idle"
|
||||
msgstr "Bezczynny"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:196
|
||||
msgid "Unavailable"
|
||||
msgstr "Niedostępny"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Przełącz użytkownika"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Przełącz sesję"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:744
|
||||
msgid "Notifications"
|
||||
msgstr "Powiadomienia"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:752
|
||||
msgid "System Settings"
|
||||
msgstr "Ustawienia systemu"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:760
|
||||
msgid "Switch User"
|
||||
msgstr "Przełącz użytkownika"
|
||||
|
||||
#: ../js/ui/userMenu.js:765
|
||||
msgid "Log Out"
|
||||
msgstr "Wyloguj się"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:770
|
||||
msgid "Lock"
|
||||
msgstr "Zablokuj ekran"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:785
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Zaktualizuj i uruchom ponownie"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Stan komunikatora zostanie ustawiony na \"zajęty\""
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:804
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1691,7 +1704,7 @@ msgstr "Programy"
|
||||
msgid "Search"
|
||||
msgstr "Wyszukiwanie"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1700,12 +1713,12 @@ msgstr ""
|
||||
"Nic mądrego na dzisiaj:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Wyrocznia %s przemawia"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Twój ulubiony żart"
|
||||
|
||||
@ -1742,23 +1755,23 @@ msgstr[2] "%u wejść"
|
||||
msgid "System Sounds"
|
||||
msgstr "Dźwięki systemowe"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Wyświetla wersję"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Tryb używany przez GDM dla ekranu logowania"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Używa podanego trybu, np. \"gdm\" dla ekranu logowania"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Wyświetla listę możliwych trybów"
|
||||
|
||||
#: ../src/shell-app.c:621
|
||||
#: ../src/shell-app.c:622
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Uruchomienie \"%s\" się nie powiodło"
|
||||
|
269
po/ru.po
269
po/ru.po
@ -15,8 +15,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-23 20:32+0400\n"
|
||||
"POT-Creation-Date: 2012-10-31 16:48+0000\n"
|
||||
"PO-Revision-Date: 2012-11-04 20:48+0400\n"
|
||||
"Last-Translator: Yuri Myasoedov <omerta13@yandex.ru>\n"
|
||||
"Language-Team: русский <gnome-cyr@gnome.org>\n"
|
||||
"Language: ru\n"
|
||||
@ -36,12 +36,10 @@ msgid "Record a screencast"
|
||||
msgstr "Записать скринкаст"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "Система"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Показать панель сообщений"
|
||||
|
||||
@ -143,51 +141,63 @@ msgstr ""
|
||||
"Данное значение берётся из перечисления GsmPresenceStatus."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
|
||||
msgid "Always show the 'Log out' menuitem in the user menu."
|
||||
msgstr "Всегда показывать в меню пункт «Завершить сеанс»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
msgid ""
|
||||
"This key overrides the automatic hiding of the 'Log out' menuitem in single-"
|
||||
"user, single-session situations."
|
||||
msgstr ""
|
||||
"Этот ключ переопределяет автоматическое скрытие пункта «Завершить сеанс» при "
|
||||
"использовании одиночного сеанса."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Показывать в часах дату недели"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Если установлено, календарь будет показывать неделю в формате ISO."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Комбинация клавиш для открытия меню приложения"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Комбинация клавиш для открытия меню приложения."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Комбинация клавиш для переключения видимости панели сообщений"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Комбинация клавиш для переключения видимости панели сообщений."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Комбинация клавиш для переключения записи экрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr ""
|
||||
"Комбинация клавиш для запуска/остановки встроенного средства записи экрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Какую клавиатуру использовать"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Тип используемой клавиатуры."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Частота смены кадров для записи скринкастов."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -195,11 +205,11 @@ msgstr ""
|
||||
"Частота смены кадров в скринкасте, записанном с помощью GNOME Shell (кадров/"
|
||||
"сек)."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Конвейер gstreamer, используемый для кодирования скринкастов"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -226,11 +236,11 @@ msgstr ""
|
||||
"используется как заполнитель для определения оптимального количества потоков "
|
||||
"в системе."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Расширение файла, использующееся для хранения скринкастов"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -253,11 +263,11 @@ msgstr "Расширение"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Выберите расширение из выпадающего списка."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Сеанс…"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Вход в систему"
|
||||
@ -265,42 +275,46 @@ msgstr "Вход в систему"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Нет в списке?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Войти"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Окно входа в систему"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Питание"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:664 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:779
|
||||
msgid "Suspend"
|
||||
msgstr "Ждущий режим"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Перезапустить"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:666 ../js/ui/userMenu.js:668
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Power Off"
|
||||
msgstr "Выключить"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Ошибка подтверждения подлинности"
|
||||
|
||||
@ -347,7 +361,7 @@ msgstr "НАСТРОЙКИ"
|
||||
msgid "New Window"
|
||||
msgstr "Новое окно"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Удалить из избранного"
|
||||
|
||||
@ -511,16 +525,16 @@ msgstr "Эта неделя"
|
||||
msgid "Next week"
|
||||
msgstr "Следующая неделя"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Cъёмные устройства"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Открыть с помощью %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Извлечь"
|
||||
|
||||
@ -676,35 +690,35 @@ msgstr "Приглушить звук"
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/components/telepathyClient.js:948
|
||||
#: ../js/ui/components/telepathyClient.js:950
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Отправлено в <b>%X</b> в <b>%A</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/components/telepathyClient.js:954
|
||||
#: ../js/ui/components/telepathyClient.js:956
|
||||
#, no-c-format
|
||||
msgid "Sent on <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",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/components/telepathyClient.js:959
|
||||
#: ../js/ui/components/telepathyClient.js:961
|
||||
#, no-c-format
|
||||
msgid "Sent on <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
|
||||
#. IM name.
|
||||
#: ../js/ui/components/telepathyClient.js:988
|
||||
#: ../js/ui/components/telepathyClient.js:990
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s теперь известен как %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1088
|
||||
#: ../js/ui/components/telepathyClient.js:1090
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Приглашение в %s"
|
||||
@ -712,42 +726,42 @@ msgstr "Приглашение в %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1096
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s приглашает вас присоединиться к %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1098
|
||||
#: ../js/ui/components/telepathyClient.js:1177
|
||||
#: ../js/ui/components/telepathyClient.js:1240
|
||||
#: ../js/ui/components/telepathyClient.js:1100
|
||||
#: ../js/ui/components/telepathyClient.js:1179
|
||||
#: ../js/ui/components/telepathyClient.js:1242
|
||||
msgid "Decline"
|
||||
msgstr "Отказаться"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1099
|
||||
#: ../js/ui/components/telepathyClient.js:1178
|
||||
#: ../js/ui/components/telepathyClient.js:1241
|
||||
#: ../js/ui/components/telepathyClient.js:1101
|
||||
#: ../js/ui/components/telepathyClient.js:1180
|
||||
#: ../js/ui/components/telepathyClient.js:1243
|
||||
msgid "Accept"
|
||||
msgstr "Принять"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1129
|
||||
#: ../js/ui/components/telepathyClient.js:1131
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Вас вызывает %s по видео"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1132
|
||||
#: ../js/ui/components/telepathyClient.js:1134
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Вас вызывает %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1137
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
#: ../js/ui/status/bluetooth.js:346
|
||||
msgid "Reject"
|
||||
msgstr "Отклонить"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/components/telepathyClient.js:1139
|
||||
#: ../js/ui/components/telepathyClient.js:1141
|
||||
msgid "Answer"
|
||||
msgstr "Ответить"
|
||||
|
||||
@ -756,111 +770,111 @@ msgstr "Ответить"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/components/telepathyClient.js:1171
|
||||
#: ../js/ui/components/telepathyClient.js:1173
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s отправляет вам %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/components/telepathyClient.js:1206
|
||||
#: ../js/ui/components/telepathyClient.js:1208
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s хотел бы получить разрешение видеть, когда вы в сети"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1298
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
msgid "Network error"
|
||||
msgstr "Ошибка сети"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1300
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
msgid "Authentication failed"
|
||||
msgstr "Ошибка аутентификации"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1302
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
msgid "Encryption error"
|
||||
msgstr "Ошибка шифрования"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1304
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Сертификат не предоставляется"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1306
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Недоверенный сертификат"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1308
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
msgid "Certificate expired"
|
||||
msgstr "Срок действия сертификата истёк"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1310
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Сертификат не активирован"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1312
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Имя узла сертификата не совпадает"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1314
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Отпечаток сертификата не совпадает"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1316
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Самоподписанный сертификат"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1318
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Установлен статус «не в сети»"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1320
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Шифрование недоступно"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1322
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Недействительный сертификат"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1324
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
msgid "Connection has been refused"
|
||||
msgstr "В соединении отказано"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1326
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Соединение не может быть установлено"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1328
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Соединение потеряно"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1330
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Эта учётная запись уже подключена к серверу"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1332
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Соединение было заменено новым, используя тот же источник"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1334
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Учётная запись уже существует на сервере"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1336
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Сервер в настоящее время сильно перегружен, чтобы обработать соединение"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1338
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Сертификат аннулирован"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1340
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Сертификат использует небезопасный алгоритм шифрования или он "
|
||||
"криптографически нестоек"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1342
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -868,30 +882,30 @@ msgstr ""
|
||||
"Длина сертификата сервера, или глубина цепочки сертификатов сервера, "
|
||||
"превышает пределы, установленные библиотекой криптографии"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1344
|
||||
#: ../js/ui/components/telepathyClient.js:1346
|
||||
msgid "Internal error"
|
||||
msgstr "Внутренняя ошибка"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/components/telepathyClient.js:1354
|
||||
#: ../js/ui/components/telepathyClient.js:1356
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Сбой подключения к %s"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1363
|
||||
#: ../js/ui/components/telepathyClient.js:1365
|
||||
msgid "Reconnect"
|
||||
msgstr "Переподключиться"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1364
|
||||
#: ../js/ui/components/telepathyClient.js:1366
|
||||
msgid "Edit account"
|
||||
msgstr "Изменить учётную запись"
|
||||
|
||||
#: ../js/ui/components/telepathyClient.js:1409
|
||||
#: ../js/ui/components/telepathyClient.js:1411
|
||||
msgid "Unknown reason"
|
||||
msgstr "Неизвестная причина"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Показать приложения"
|
||||
|
||||
@ -899,14 +913,14 @@ msgstr "Показать приложения"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Настроить дату и время"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Открыть календарь"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e %B, %Y"
|
||||
|
||||
@ -1016,11 +1030,11 @@ msgstr "Установить"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Загрузить и установить расширение «%s» с extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "лоток"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Клавиатура"
|
||||
@ -1073,23 +1087,23 @@ msgstr "Показать код"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб-страница"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1084
|
||||
msgid "Open"
|
||||
msgstr "Открыть"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1091
|
||||
msgid "Remove"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1543
|
||||
msgid "Message Tray"
|
||||
msgstr "Панель сообщений"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2549
|
||||
msgid "System Information"
|
||||
msgstr "Системная информация"
|
||||
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:373
|
||||
#: ../js/ui/notificationDaemon.js:506 ../src/shell-app.c:374
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
@ -1145,7 +1159,7 @@ msgstr "Введите команду:"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: ../js/ui/screenShield.js:79
|
||||
#: ../js/ui/screenShield.js:80
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%d %B, %A"
|
||||
|
||||
@ -1197,7 +1211,7 @@ msgstr "Пароль"
|
||||
msgid "Remember Password"
|
||||
msgstr "Запомнить пароль"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Разблокировать"
|
||||
|
||||
@ -1315,7 +1329,7 @@ msgstr "Настроить клавиатуру"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Настроить мышь"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Настроить звук"
|
||||
|
||||
@ -1373,11 +1387,11 @@ msgstr "Введите PIN-код указанный на устройстве."
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Показывать раскладку клавиатуры"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Региональные и языковые настройки"
|
||||
|
||||
@ -1604,7 +1618,7 @@ msgid "Unknown"
|
||||
msgstr "Неизвестно"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Громкость"
|
||||
|
||||
@ -1612,67 +1626,63 @@ msgstr "Громкость"
|
||||
msgid "Microphone"
|
||||
msgstr "Микрофон"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Войти от имени другого пользователя"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:181
|
||||
msgid "Available"
|
||||
msgstr "Доступен"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:184
|
||||
msgid "Busy"
|
||||
msgstr "Занят"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:187
|
||||
msgid "Invisible"
|
||||
msgstr "Невидим"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:190
|
||||
msgid "Away"
|
||||
msgstr "Отошёл"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:193
|
||||
msgid "Idle"
|
||||
msgstr "Бездействует"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:196
|
||||
msgid "Unavailable"
|
||||
msgstr "Недоступен"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Сменить пользователя"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Переключить сеанс"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:744
|
||||
msgid "Notifications"
|
||||
msgstr "Уведомления"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:752
|
||||
msgid "System Settings"
|
||||
msgstr "Системные параметры"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:760
|
||||
msgid "Switch User"
|
||||
msgstr "Сменить пользователя"
|
||||
|
||||
#: ../js/ui/userMenu.js:765
|
||||
msgid "Log Out"
|
||||
msgstr "Выйти из системы"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:770
|
||||
msgid "Lock"
|
||||
msgstr "Заблокировать"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:785
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Установить обновления и выполнить перезагрузку"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Будет установлен статус «не беспокоить»"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:804
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1692,7 +1702,7 @@ msgstr "Приложения"
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1701,12 +1711,12 @@ msgstr ""
|
||||
"Извините, на сегодня нет никаких советов:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Оракул говорит: «%s»"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ваше любимое «пасхальное яйцо»"
|
||||
|
||||
@ -1743,24 +1753,24 @@ msgstr[2] "%u входов"
|
||||
msgid "System Sounds"
|
||||
msgstr "Системные звуки"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Показать номер версии"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Режим, используемый GDM для окна входа в систему"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr ""
|
||||
"Использовать для экрана входа в систему определённый режим, например «gdm»"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Список возможных режимов"
|
||||
|
||||
#: ../src/shell-app.c:621
|
||||
#: ../src/shell-app.c:622
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Не удалось запустить «%s»"
|
||||
@ -1785,6 +1795,9 @@ msgstr "По умолчанию"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Пользователь отклонил диалог аутентификации"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Переключить сеанс"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "отключённые провайдеры OpenSearch"
|
||||
|
||||
|
150
po/sl.po
150
po/sl.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-25 06:44+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 08:56+0100\n"
|
||||
"POT-Creation-Date: 2012-10-16 00:16+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 07:53+0100\n"
|
||||
"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
|
||||
"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
|
||||
"Language: Slovenian\n"
|
||||
@ -37,6 +37,14 @@ msgstr "Sistem"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Pokaži sporočilno vrstico"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
msgid "Show all applications"
|
||||
msgstr "Pokaži vse programe"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
msgid "Open the application menu"
|
||||
msgstr "Odpri meni programov"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Gnome lupina"
|
||||
@ -119,51 +127,59 @@ msgid "Keybinding to open the application menu."
|
||||
msgstr "Tipkovna bližnjica, ki odpre meni programov."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Tipkovna bližnjica, ki odpre pogled \"Pokaži programe\" v pregledu dejavnosti."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Tipkovna bližnjica za preklop vidnosti vrstice sporočanja."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Tipkovna bližnjica za preklop snemalnika zaslona"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Tipkovna bližnjica za začetek in ustavitev vgrajenega snemalnika zaslona"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Katera tipkovnica naj bo uporabljena?"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Vrsta tipkovnice za uporabo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Hitrost sličic uporabljena za snemanje zaslonskega posnetka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "Hitrost sličic shranjenega končnega zaslonskega posnetka v sličicah na sekundo."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Uporabljen GStreamer cevovod za kodiranje zaslonskega posnetka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, 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 min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 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 "Nastavi cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki se uporablja za program gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' in omogoča snemanje v zapis WEBM z uporabo kodeka VP8. Vrednost %T se uporablja kot ročnik za ugibanje najustreznejšega števila niti na sistemu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Pripona datoteke uporabljene za shranjevanje zaslonskih posnetkov"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||
msgstr "Ime datoteke zaslonskega posnetka bo enoznačno ime, kateremu bo dodan datum in določena pripona. Pripona mora ustrezati zapisu zabojnika."
|
||||
|
||||
@ -180,11 +196,11 @@ msgstr "Pripona"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Razširitev za nastavljanje je mogoče izbrati iz spustnega seznama zgoraj."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:527
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Seja ..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:675
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
@ -192,27 +208,27 @@ msgstr "Prijava"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:742
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Ali je ni na seznamu?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:895
|
||||
#: ../js/gdm/loginDialog.js:889
|
||||
#: ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162
|
||||
#: ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195
|
||||
#: ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427
|
||||
#: ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Prekliči"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:900
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijava"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1239
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Prijavno okno"
|
||||
|
||||
@ -222,9 +238,9 @@ msgid "Power"
|
||||
msgstr "Napajanje"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89
|
||||
#: ../js/ui/userMenu.js:663
|
||||
#: ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
#: ../js/ui/userMenu.js:660
|
||||
#: ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Zaustavi"
|
||||
|
||||
@ -233,9 +249,9 @@ msgid "Restart"
|
||||
msgstr "Zaženi znova"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:99
|
||||
#: ../js/ui/userMenu.js:665
|
||||
#: ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
#: ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Izklop"
|
||||
|
||||
@ -287,7 +303,7 @@ msgid "New Window"
|
||||
msgstr "Novo okno"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678
|
||||
#: ../js/ui/dash.js:271
|
||||
#: ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Odstrani iz priljubljenih"
|
||||
|
||||
@ -451,16 +467,16 @@ msgstr "Ta teden"
|
||||
msgid "Next week"
|
||||
msgstr "Naslednji teden"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Odstranljive naprave"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Odpri s programom %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Izvrzi"
|
||||
|
||||
@ -821,8 +837,8 @@ msgstr "Uredi račun"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Neznan vzrok"
|
||||
|
||||
#: ../js/ui/dash.js:245
|
||||
#: ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253
|
||||
#: ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Pokaži programe"
|
||||
|
||||
@ -830,14 +846,14 @@ msgstr "Pokaži programe"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Nastavitve časa in datuma"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Odpri koledar"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e. %b., %R"
|
||||
|
||||
@ -1015,11 +1031,11 @@ msgstr "Odpri"
|
||||
msgid "Remove"
|
||||
msgstr "Odstrani"
|
||||
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Vrstica sporočanja"
|
||||
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Podrobnosti sistema"
|
||||
|
||||
@ -1084,7 +1100,7 @@ msgstr "Vnos ukaza:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %m."
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1093,7 +1109,7 @@ msgstr[1] "%d novo sporočilo"
|
||||
msgstr[2] "%d novi sporočili"
|
||||
msgstr[3] "%d nova sporočila"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1135,7 +1151,7 @@ msgid "Remember Password"
|
||||
msgstr "Zapomni si geslo"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400
|
||||
#: ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Odkleni"
|
||||
|
||||
@ -1261,7 +1277,7 @@ msgid "Mouse Settings"
|
||||
msgstr "Nastavitve miške"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269
|
||||
#: ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Nastavitve zvoka"
|
||||
|
||||
@ -1562,7 +1578,7 @@ msgstr "Neznano"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47
|
||||
#: ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Glasnost"
|
||||
|
||||
@ -1570,7 +1586,7 @@ msgstr "Glasnost"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prijava kot drug uporabnik"
|
||||
|
||||
@ -1598,56 +1614,51 @@ msgstr "Nedejavno"
|
||||
msgid "Unavailable"
|
||||
msgstr "Nedostopno"
|
||||
|
||||
#: ../js/ui/userMenu.js:618
|
||||
#: ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "Preklopi uporabnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "Preklopi sejo"
|
||||
|
||||
#: ../js/ui/userMenu.js:743
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Obvestila"
|
||||
|
||||
#: ../js/ui/userMenu.js:751
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Sistemske nastavitve"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Preklopi uporabnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Odjava"
|
||||
|
||||
#: ../js/ui/userMenu.js:769
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Zakleni"
|
||||
|
||||
#: ../js/ui/userMenu.js:784
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Namesti posodobitve in ponovno zaženi"
|
||||
|
||||
#: ../js/ui/userMenu.js:802
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Stanje vašega klepeta bo nastavljeno na zasedeno"
|
||||
|
||||
#: ../js/ui/userMenu.js:803
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||
msgstr "Obveščanje je zdaj onemogočeno, vključno s sporočili klepeta. Vaše stanje povezanosti se je prilagodilo, da bodo drugi vedeli, da njihovih sporočil morda ne boste opazili."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Okna"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Poišči"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1656,12 +1667,12 @@ msgstr ""
|
||||
"Za danes ni modrosti:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Riba %s pravi"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Vaše priljubljeno velikonočno jajce"
|
||||
|
||||
@ -1700,19 +1711,19 @@ msgstr[3] "%u dovodi naprave"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemski zvoki"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Izpiši različico"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Način uporabljen v GDM za prijavni naslov"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Uporabi poseben način, npr.: \"gdm\" za prijavni zaslon"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Seznam mogočih načinov"
|
||||
|
||||
@ -1741,6 +1752,9 @@ msgstr "Privzeto"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Uporabnik je zavrnil pogovorno okno overitve"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Preklopi sejo"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "ponudniki OpenSearch so bili onemogočeni"
|
||||
|
||||
|
207
po/sr.po
207
po/sr.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-20 20:20+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
|
||||
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@ -29,15 +29,23 @@ msgid "Record a screencast"
|
||||
msgstr "Снимите радни ток екрана"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "Систем"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Прикажите фиоку порука"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Прикажи све програме"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Отворите изборник програма"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Гномова шкољка"
|
||||
@ -145,41 +153,52 @@ msgstr "Ако је изабрано, приказује ИСО дан у нед
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Свеза тастера за отварање изборника програма"
|
||||
msgstr "Пречица за отварање изборника програма"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Свеза тастера за отварање изборника програма."
|
||||
msgstr "Пречица за отварање изборника програма."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Пречица за отварање прегледа „Прикажи програме“"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Пречица за отварање прегледа „Прикажи програме“ у прегледу активности."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Пречица за окидање видљивости фиоке порука"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Пречица за окидање видљивости фиоке порука."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Пречица за окидање читача екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Пречица за покретање/заустављање уграђеног снимача екрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Која ће тастатура бити коришћена"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Врста тастатуре за употребу."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Учестаност кадрова за видео снимак екрана."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -187,23 +206,12 @@ msgstr ""
|
||||
"Учестаност кадрова снимка снимљених помоћу Гномове шкољке у кадровима по "
|
||||
"секунди."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Процесни ланац Гстримера коришћен за кодирање видео снимка екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, 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 "
|
||||
@ -221,19 +229,19 @@ msgstr ""
|
||||
"да има један неповезани падиљон синхронизације за чување снимљеног видеа. "
|
||||
"Нормално ће имати неповезан падиљон извора; излаз са овог падиљона ће бити "
|
||||
"записиван у излазну датотеку. Ипак процесни ланац може да ради са сопственим "
|
||||
"излазом — ово може бити коришћено за слање излаза на ајскаст сервер преко "
|
||||
"d„shout2sen“ или сличне наредбе. Када ова опција није постављена или је "
|
||||
"излазом — ово може бити коришћено за слање излаза на ајскаст сервер преко d"
|
||||
"„shout2sen“ или сличне наредбе. Када ова опција није постављена или је "
|
||||
"постављена на неку празну вредност, биће коришћен подразумевани процесни "
|
||||
"ланац. А то је тренутно „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 "
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ и записује у „WEBM“ "
|
||||
"користећи ВП8 кодек. „%T“ се користи као носилац за откривање при оптималном "
|
||||
"прорачуну нити на систему."
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ и записује у „WEBM“ користећи "
|
||||
"ВП8 кодек. „%T“ се користи као носилац за откривање при оптималном прорачуну "
|
||||
"нити на систему."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Проширење датотеке за чување видео снимака екрана"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -256,11 +264,11 @@ msgstr "Проширење"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Изаберите проширење за подешавање користећи прозорче за избор."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Сесија..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Пријавите се"
|
||||
@ -268,42 +276,46 @@ msgstr "Пријавите се"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Није на списку?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Откажи"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Пријави ме"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Прозор за пријављивање"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Угаси"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Обустави"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Поново покрени"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Угаси"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Грешка потврђивања идентитета"
|
||||
|
||||
@ -350,7 +362,7 @@ msgstr "ПОДЕШАВАЊА"
|
||||
msgid "New Window"
|
||||
msgstr "Нови прозор"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Уклони из омиљених"
|
||||
|
||||
@ -514,16 +526,16 @@ msgstr "Ове недеље"
|
||||
msgid "Next week"
|
||||
msgstr "Следеће недеље"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Уклоњиви уређаји"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Отвори програмом %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Избаци"
|
||||
|
||||
@ -892,7 +904,7 @@ msgstr "Уреди налог"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Непознат разлог"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Прикажи програме"
|
||||
|
||||
@ -900,14 +912,14 @@ msgstr "Прикажи програме"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Подешавања датума и времена"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Отвори календар"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %b, %R"
|
||||
|
||||
@ -1020,11 +1032,11 @@ msgstr "Инсталирај"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Да преузмем и да инсталирам „%s“ са extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "фиока"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Тастатура"
|
||||
@ -1077,19 +1089,19 @@ msgstr "Прикажи код"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб страница"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Отвори"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Уклони"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Фиока порука"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Подаци о систему"
|
||||
|
||||
@ -1153,7 +1165,7 @@ msgstr "Унесите наредбу:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1162,7 +1174,7 @@ msgstr[1] "%d нове поруке"
|
||||
msgstr[2] "%d нових порука"
|
||||
msgstr[3] "Једна нова порука"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1203,7 +1215,7 @@ msgstr "Лозинка"
|
||||
msgid "Remember Password"
|
||||
msgstr "Запамти лозинку"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Откључај"
|
||||
|
||||
@ -1321,7 +1333,7 @@ msgstr "Подешавања тастатуре"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Подешавања миша"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Подешавања звука"
|
||||
|
||||
@ -1379,11 +1391,11 @@ msgstr "Молим унесите ПИН назначен на уређају."
|
||||
msgid "OK"
|
||||
msgstr "У реду"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Прикажи распоред тастатуре"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Подешавања региона и језика"
|
||||
|
||||
@ -1614,7 +1626,7 @@ msgid "Unknown"
|
||||
msgstr "Непознат"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Јачина звука"
|
||||
|
||||
@ -1622,67 +1634,63 @@ msgstr "Јачина звука"
|
||||
msgid "Microphone"
|
||||
msgstr "Микрофон"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Пријавите се као други корсник"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Доступан"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Заузет"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Невидљив"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Одсутан"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Мирује"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Недоступан"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Промени корисника"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Промени сесију"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Обавештења"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Подешавања система"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Промени корисника"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Одјави ме"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Закључај"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Инсталирај ажурирања и поново покрени"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Ваше стање ћаскања ће бити постављено на заузето"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1691,19 +1699,19 @@ msgstr ""
|
||||
"мрежи је подешено тако да ће остали знати да ви не можете видети њихове "
|
||||
"поруке."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Прозори"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Програми"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Тражи"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1712,12 +1720,12 @@ msgstr ""
|
||||
"Извините, данас за вас нема мудрости:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Пророк је рекао %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Ваше омиљено ускршње јаје"
|
||||
|
||||
@ -1756,19 +1764,19 @@ msgstr[3] "Један улаз"
|
||||
msgid "System Sounds"
|
||||
msgstr "Системски звуци"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Исписује издање"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Који режим користи ГДМ за екран пријављивања"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Користи нарочит режим, нпр. „gdm“ за екран пријављивања"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Исписује могуће режиме"
|
||||
|
||||
@ -1797,6 +1805,9 @@ msgstr "Основно"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Промени сесију"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "искључени „OpenSearch“ достављачи"
|
||||
|
||||
|
207
po/sr@latin.po
207
po/sr@latin.po
@ -8,8 +8,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-20 20:20+0200\n"
|
||||
"POT-Creation-Date: 2012-10-15 23:38+0000\n"
|
||||
"PO-Revision-Date: 2012-10-16 20:23+0200\n"
|
||||
"Last-Translator: Miroslav Nikolić <miroslavnikolic@rocketmail.com>\n"
|
||||
"Language-Team: Serbian <gnom@prevod.org>\n"
|
||||
"Language: sr\n"
|
||||
@ -29,15 +29,23 @@ msgid "Record a screencast"
|
||||
msgstr "Snimite radni tok ekrana"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "Prikažite fioku poruka"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:3
|
||||
#| msgid "Show Applications"
|
||||
msgid "Show all applications"
|
||||
msgstr "Prikaži sve programe"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:4
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Otvorite izbornik programa"
|
||||
|
||||
#: ../data/gnome-shell.desktop.in.in.h:1
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Gnomova školjka"
|
||||
@ -145,41 +153,52 @@ msgstr "Ako je izabrano, prikazuje ISO dan u nedelji u kalendaru."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Sveza tastera za otvaranje izbornika programa"
|
||||
msgstr "Prečica za otvaranje izbornika programa"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Sveza tastera za otvaranje izbornika programa."
|
||||
msgstr "Prečica za otvaranje izbornika programa."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
|
||||
#| msgid "Keybinding to open the application menu"
|
||||
msgid "Keybinding to open the \"Show Applications\" view"
|
||||
msgstr "Prečica za otvaranje pregleda „Prikaži programe“"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#| msgid "Keybinding to open the application menu."
|
||||
msgid ""
|
||||
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
|
||||
msgstr "Prečica za otvaranje pregleda „Prikaži programe“ u pregledu aktivnosti."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
msgid "Keybinding to toggle the visibility of the message tray"
|
||||
msgstr "Prečica za okidanje vidljivosti fioke poruka"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
msgid "Keybinding to toggle the visibility of the message tray."
|
||||
msgstr "Prečica za okidanje vidljivosti fioke poruka."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
msgid "Keybinding to toggle the screen recorder"
|
||||
msgstr "Prečica za okidanje čitača ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
msgid "Keybinding to start/stop the builtin screen recorder."
|
||||
msgstr "Prečica za pokretanje/zaustavljanje ugrađenog snimača ekrana."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Koja će tastatura biti korišćena"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Vrsta tastature za upotrebu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Učestanost kadrova za video snimak ekrana."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -187,23 +206,12 @@ msgstr ""
|
||||
"Učestanost kadrova snimka snimljenih pomoću Gnomove školjke u kadrovima po "
|
||||
"sekundi."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "Procesni lanac Gstrimera korišćen za kodiranje video snimka ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#, 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 "
|
||||
@ -221,19 +229,19 @@ msgstr ""
|
||||
"da ima jedan nepovezani padiljon sinhronizacije za čuvanje snimljenog videa. "
|
||||
"Normalno će imati nepovezan padiljon izvora; izlaz sa ovog padiljona će biti "
|
||||
"zapisivan u izlaznu datoteku. Ipak procesni lanac može da radi sa sopstvenim "
|
||||
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko "
|
||||
"d„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
|
||||
"izlazom — ovo može biti korišćeno za slanje izlaza na ajskast server preko d"
|
||||
"„shout2sen“ ili slične naredbe. Kada ova opcija nije postavljena ili je "
|
||||
"postavljena na neku praznu vrednost, biće korišćen podrazumevani procesni "
|
||||
"lanac. A to je trenutno „vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 "
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ "
|
||||
"koristeći VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom "
|
||||
"proračunu niti na sistemu."
|
||||
"deadline=1000000 threads=%T ! queue ! webmmux“ i zapisuje u „WEBM“ koristeći "
|
||||
"VP8 kodek. „%T“ se koristi kao nosilac za otkrivanje pri optimalnom proračunu "
|
||||
"niti na sistemu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Proširenje datoteke za čuvanje video snimaka ekrana"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:31
|
||||
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 "
|
||||
@ -256,11 +264,11 @@ msgstr "Proširenje"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "Izaberite proširenje za podešavanje koristeći prozorče za izbor."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:529
|
||||
msgid "Session..."
|
||||
msgstr "Sesija..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:677
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijavite se"
|
||||
@ -268,42 +276,46 @@ msgstr "Prijavite se"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:736
|
||||
msgid "Not listed?"
|
||||
msgstr "Nije na spisku?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:889 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:167
|
||||
msgid "Cancel"
|
||||
msgstr "Otkaži"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:894
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Prijavi me"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1215
|
||||
msgid "Login Window"
|
||||
msgstr "Prozor za prijavljivanje"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "Ugasi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "Obustavi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "Ponovo pokreni"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "Ugasi"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "Greška potvrđivanja identiteta"
|
||||
|
||||
@ -350,7 +362,7 @@ msgstr "PODEŠAVANJA"
|
||||
msgid "New Window"
|
||||
msgstr "Novi prozor"
|
||||
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:271
|
||||
#: ../js/ui/appDisplay.js:678 ../js/ui/dash.js:290
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Ukloni iz omiljenih"
|
||||
|
||||
@ -514,16 +526,16 @@ msgstr "Ove nedelje"
|
||||
msgid "Next week"
|
||||
msgstr "Sledeće nedelje"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "Uklonjivi uređaji"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "Otvori programom %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "Izbaci"
|
||||
|
||||
@ -892,7 +904,7 @@ msgstr "Uredi nalog"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Nepoznat razlog"
|
||||
|
||||
#: ../js/ui/dash.js:245 ../js/ui/dash.js:273
|
||||
#: ../js/ui/dash.js:253 ../js/ui/dash.js:292
|
||||
msgid "Show Applications"
|
||||
msgstr "Prikaži programe"
|
||||
|
||||
@ -900,14 +912,14 @@ msgstr "Prikaži programe"
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Podešavanja datuma i vremena"
|
||||
|
||||
#: ../js/ui/dateMenu.js:109
|
||||
#: ../js/ui/dateMenu.js:111
|
||||
msgid "Open Calendar"
|
||||
msgstr "Otvori kalendar"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:175
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %b, %R"
|
||||
|
||||
@ -1020,11 +1032,11 @@ msgstr "Instaliraj"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Da preuzmem i da instaliram „%s“ sa extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "fioka"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatura"
|
||||
@ -1077,19 +1089,19 @@ msgstr "Prikaži kod"
|
||||
msgid "Web Page"
|
||||
msgstr "Veb stranica"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "Otvori"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "Ukloni"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1540
|
||||
msgid "Message Tray"
|
||||
msgstr "Fioka poruka"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2547
|
||||
msgid "System Information"
|
||||
msgstr "Podaci o sistemu"
|
||||
|
||||
@ -1153,7 +1165,7 @@ msgstr "Unesite naredbu:"
|
||||
msgid "%A, %B %d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: ../js/ui/screenShield.js:144
|
||||
#: ../js/ui/screenShield.js:143
|
||||
#, c-format
|
||||
msgid "%d new message"
|
||||
msgid_plural "%d new messages"
|
||||
@ -1162,7 +1174,7 @@ msgstr[1] "%d nove poruke"
|
||||
msgstr[2] "%d novih poruka"
|
||||
msgstr[3] "Jedna nova poruka"
|
||||
|
||||
#: ../js/ui/screenShield.js:146
|
||||
#: ../js/ui/screenShield.js:145
|
||||
#, c-format
|
||||
msgid "%d new notification"
|
||||
msgid_plural "%d new notifications"
|
||||
@ -1203,7 +1215,7 @@ msgstr "Lozinka"
|
||||
msgid "Remember Password"
|
||||
msgstr "Zapamti lozinku"
|
||||
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:169
|
||||
#: ../js/ui/shellMountOperation.js:400 ../js/ui/unlockDialog.js:170
|
||||
msgid "Unlock"
|
||||
msgstr "Otključaj"
|
||||
|
||||
@ -1321,7 +1333,7 @@ msgstr "Podešavanja tastature"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Podešavanja miša"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "Podešavanja zvuka"
|
||||
|
||||
@ -1379,11 +1391,11 @@ msgstr "Molim unesite PIN naznačen na uređaju."
|
||||
msgid "OK"
|
||||
msgstr "U redu"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "Prikaži raspored tastature"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "Podešavanja regiona i jezika"
|
||||
|
||||
@ -1614,7 +1626,7 @@ msgid "Unknown"
|
||||
msgstr "Nepoznat"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "Jačina zvuka"
|
||||
|
||||
@ -1622,67 +1634,63 @@ msgstr "Jačina zvuka"
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
#: ../js/ui/unlockDialog.js:176
|
||||
#: ../js/ui/unlockDialog.js:177
|
||||
msgid "Log in as another user"
|
||||
msgstr "Prijavite se kao drugi korsnik"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "Dostupan"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "Zauzet"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "Nevidljiv"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "Odsutan"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "Miruje"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "Nedostupan"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "Promeni korisnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "Promeni sesiju"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "Obaveštenja"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "Podešavanja sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "Promeni korisnika"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "Odjavi me"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "Zaključaj"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "Instaliraj ažuriranja i ponovo pokreni"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Vaše stanje ćaskanja će biti postavljeno na zauzeto"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1691,19 +1699,19 @@ msgstr ""
|
||||
"mreži je podešeno tako da će ostali znati da vi ne možete videti njihove "
|
||||
"poruke."
|
||||
|
||||
#: ../js/ui/viewSelector.js:85
|
||||
#: ../js/ui/viewSelector.js:87
|
||||
msgid "Windows"
|
||||
msgstr "Prozori"
|
||||
|
||||
#: ../js/ui/viewSelector.js:89
|
||||
#: ../js/ui/viewSelector.js:91
|
||||
msgid "Applications"
|
||||
msgstr "Programi"
|
||||
|
||||
#: ../js/ui/viewSelector.js:93
|
||||
#: ../js/ui/viewSelector.js:95
|
||||
msgid "Search"
|
||||
msgstr "Traži"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1712,12 +1720,12 @@ msgstr ""
|
||||
"Izvinite, danas za vas nema mudrosti:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "Prorok je rekao %s"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Vaše omiljeno uskršnje jaje"
|
||||
|
||||
@ -1756,19 +1764,19 @@ msgstr[3] "Jedan ulaz"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sistemski zvuci"
|
||||
|
||||
#: ../src/main.c:330
|
||||
#: ../src/main.c:332
|
||||
msgid "Print version"
|
||||
msgstr "Ispisuje izdanje"
|
||||
|
||||
#: ../src/main.c:336
|
||||
#: ../src/main.c:338
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Koji režim koristi GDM za ekran prijavljivanja"
|
||||
|
||||
#: ../src/main.c:342
|
||||
#: ../src/main.c:344
|
||||
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
|
||||
msgstr "Koristi naročit režim, npr. „gdm“ za ekran prijavljivanja"
|
||||
|
||||
#: ../src/main.c:348
|
||||
#: ../src/main.c:350
|
||||
msgid "List possible modes"
|
||||
msgstr "Ispisuje moguće režime"
|
||||
|
||||
@ -1797,6 +1805,9 @@ msgstr "Osnovno"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Korisnik je odbacio prozorče za potvrđivanje identiteta"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "Promeni sesiju"
|
||||
|
||||
#~ msgid "disabled OpenSearch providers"
|
||||
#~ msgstr "isključeni „OpenSearch“ dostavljači"
|
||||
|
||||
|
104
po/th.po
104
po/th.po
@ -9,8 +9,8 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-20 16:21+0700\n"
|
||||
"POT-Creation-Date: 2012-10-04 06:59+0000\n"
|
||||
"PO-Revision-Date: 2012-10-09 18:31+0700\n"
|
||||
"Last-Translator: Theppitak Karoonboonyanan <thep@linux.thai.net>\n"
|
||||
"Language-Team: Thai <thai-l10n@googlegroups.com>\n"
|
||||
"Language: th\n"
|
||||
@ -234,11 +234,11 @@ msgstr "ส่วนขยาย"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "เลือกส่วนขยายที่จะตั้งค่าโดยใช้กล่องคอมโบด้านบน"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "วาระ..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "เข้าระบบ"
|
||||
@ -246,37 +246,42 @@ msgstr "เข้าระบบ"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "ไม่มีชื่อของคุณงั้นหรือ?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "ยกเลิก"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "เข้าระบบ"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "หน้าต่างเข้าระบบ"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "เปิด/ปิด"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:775
|
||||
msgid "Suspend"
|
||||
msgstr "พักเครื่อง"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "เปิดเครื่องใหม่"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:662 ../js/ui/userMenu.js:664
|
||||
#: ../js/ui/userMenu.js:774
|
||||
msgid "Power Off"
|
||||
msgstr "ปิดเครื่อง"
|
||||
|
||||
@ -491,16 +496,16 @@ msgstr "สัปดาห์นี้"
|
||||
msgid "Next week"
|
||||
msgstr "สัปดาห์หน้า"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:278
|
||||
#: ../js/ui/components/autorunManager.js:297
|
||||
msgid "Removable Devices"
|
||||
msgstr "อุปกรณ์ถอดเสียบ"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:575
|
||||
#: ../js/ui/components/autorunManager.js:594
|
||||
#, c-format
|
||||
msgid "Open with %s"
|
||||
msgstr "เปิดด้วย %s"
|
||||
|
||||
#: ../js/ui/components/autorunManager.js:601
|
||||
#: ../js/ui/components/autorunManager.js:620
|
||||
msgid "Eject"
|
||||
msgstr "เอาสื่อออก"
|
||||
|
||||
@ -979,11 +984,11 @@ msgstr "ติดตั้ง"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "จะดาวน์โหลดและติดตั้ง '%s' จาก extensions.gnome.org หรือไม่?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "ถาด"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "แป้นพิมพ์"
|
||||
@ -1036,19 +1041,19 @@ msgstr "ดูซอร์ส"
|
||||
msgid "Web Page"
|
||||
msgstr "หน้าเว็บ"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "เปิด"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "ลบ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:1533
|
||||
msgid "Message Tray"
|
||||
msgstr "ถาดข้อความ"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2544
|
||||
msgid "System Information"
|
||||
msgstr "ข้อมูลระบบ"
|
||||
|
||||
@ -1274,7 +1279,7 @@ msgstr "ตั้งค่าแป้นพิมพ์"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "ตั้งค่าเมาส์"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "ตั้งค่าเสียง"
|
||||
|
||||
@ -1332,11 +1337,11 @@ msgstr "กรุณาป้อนรหัส PIN ที่ระบุบน
|
||||
msgid "OK"
|
||||
msgstr "ตกลง"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "แสดงผังแป้นพิมพ์"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "ตั้งค่าท้องที่และภาษา"
|
||||
|
||||
@ -1555,7 +1560,7 @@ msgid "Unknown"
|
||||
msgstr "ไม่ทราบ"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "ความดังเสียง"
|
||||
|
||||
@ -1567,63 +1572,59 @@ msgstr "ไมโครโฟน"
|
||||
msgid "Log in as another user"
|
||||
msgstr "เข้าระบบในนามผู้ใช้อื่น"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "อยู่"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "ไม่ว่าง"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "ซ่อนตัว"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "ไม่อยู่"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "ไม่มีกิจกรรม"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "ออฟไลน์"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
msgid "Switch User"
|
||||
msgstr "สลับผู้ใช้"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
msgid "Switch Session"
|
||||
msgstr "สลับวาระ"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:740
|
||||
msgid "Notifications"
|
||||
msgstr "การแจ้งเหตุ"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:748
|
||||
msgid "System Settings"
|
||||
msgstr "ตั้งค่าระบบ"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:756
|
||||
msgid "Switch User"
|
||||
msgstr "สลับผู้ใช้"
|
||||
|
||||
#: ../js/ui/userMenu.js:761
|
||||
msgid "Log Out"
|
||||
msgstr "ออกจากระบบ"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:766
|
||||
msgid "Lock"
|
||||
msgstr "ล็อค"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:781
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "ติดตั้งรายการปรับรุ่น & เปิดเครื่องใหม่"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:799
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "จะกำหนดสถานะการสนทนาของคุณเป็นไม่ว่าง"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:800
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1643,7 +1644,7 @@ msgstr "โปรแกรม"
|
||||
msgid "Search"
|
||||
msgstr "ค้นหา"
|
||||
|
||||
#: ../js/ui/wanda.js:119
|
||||
#: ../js/ui/wanda.js:117
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Sorry, no wisdom for you today:\n"
|
||||
@ -1652,12 +1653,12 @@ msgstr ""
|
||||
"เสียใจด้วย วันนี้ไม่มีคำคมสำหรับคุณ:\n"
|
||||
"%s"
|
||||
|
||||
#: ../js/ui/wanda.js:123
|
||||
#: ../js/ui/wanda.js:121
|
||||
#, c-format
|
||||
msgid "%s the Oracle says"
|
||||
msgstr "หมอดู %s กล่าว"
|
||||
|
||||
#: ../js/ui/wanda.js:164
|
||||
#: ../js/ui/wanda.js:162
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "ไข่อีสเตอร์สุดโปรดของคุณ"
|
||||
|
||||
@ -1731,6 +1732,9 @@ msgstr "ปริยาย"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "กล่องโต้ตอบยืนยันตัวบุคคลถูกผู้ใช้ปิดทิ้ง"
|
||||
|
||||
#~ msgid "Switch Session"
|
||||
#~ msgstr "สลับวาระ"
|
||||
|
||||
#~ msgid "Failed to unmount '%s'"
|
||||
#~ msgstr "เลิกเมานท์ '%s' ไม่สำเร็จ"
|
||||
|
||||
|
24
po/ug.po
24
po/ug.po
@ -218,12 +218,12 @@ msgstr "يىغقۇچقا قوش"
|
||||
#: ../js/ui/appFavorites.js:91
|
||||
#, c-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s يىغقۇچىڭىزغا قوشۇلدى."
|
||||
msgstr "%s يىغقۇچىڭىزغا قوشۇلدى."
|
||||
|
||||
#: ../js/ui/appFavorites.js:122
|
||||
#, c-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s يىغقۇچىڭىزدىن چىقىرىۋېتىلىدۇ."
|
||||
msgstr "%s يىغقۇچىڭىزدىن چىقىرىۋېتىلىدۇ."
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
@ -437,7 +437,7 @@ msgstr "يېقىنقى تۈرلەر"
|
||||
#: ../js/ui/endSessionDialog.js:63
|
||||
#, c-format
|
||||
msgid "Log Out %s"
|
||||
msgstr "%s تىزىمدىن چىقىش"
|
||||
msgstr "%s تىزىمدىن چىقىش"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:70
|
||||
msgid "Log Out"
|
||||
@ -452,7 +452,7 @@ msgstr ""
|
||||
#: ../js/ui/endSessionDialog.js:66
|
||||
#, c-format
|
||||
msgid "%s will be logged out automatically in %d seconds."
|
||||
msgstr "%s تىزىمدىن %d سېكۇنتتىن كېيىن ئۆزلۈكىدىن چىقىسىز."
|
||||
msgstr "%s تىزىمدىن %d سېكۇنتتىن كېيىن ئۆزلۈكىدىن چىقىسىز."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:67
|
||||
#, c-format
|
||||
@ -566,7 +566,7 @@ msgstr "سىزىقچە"
|
||||
#: ../js/ui/panel.js:533
|
||||
#, c-format
|
||||
msgid "Quit %s"
|
||||
msgstr "%s چېكىن"
|
||||
msgstr "%s چېكىن"
|
||||
|
||||
#. Button on the left side of the panel.
|
||||
#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview".
|
||||
@ -799,7 +799,7 @@ msgstr "رەت قىل"
|
||||
#: ../js/ui/status/bluetooth.js:408
|
||||
#, c-format
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "%s نىڭ جەزملىشىنى جۈپلەشتۈرۈۋاتىدۇ"
|
||||
msgstr "%s نىڭ جەزملىشىنى جۈپلەشتۈرۈۋاتىدۇ"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:448
|
||||
#, c-format
|
||||
@ -823,7 +823,7 @@ msgstr "ماسلاشمىدى"
|
||||
#: ../js/ui/status/bluetooth.js:441
|
||||
#, c-format
|
||||
msgid "Pairing request for %s"
|
||||
msgstr "%s دىن كەلگەن جۈپلەش ئىلتىماسى"
|
||||
msgstr "%s دىن كەلگەن جۈپلەش ئىلتىماسى"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:449
|
||||
msgid "Please enter the PIN mentioned on the device."
|
||||
@ -1074,22 +1074,22 @@ msgstr "مىكروفون"
|
||||
#: ../js/ui/telepathyClient.js:335
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s توردا."
|
||||
msgstr "%s توردا."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:340
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s توردا يوق."
|
||||
msgstr "%s توردا يوق."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:343
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s يوق."
|
||||
msgstr "%s يوق."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:346
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s ئالدىراش."
|
||||
msgstr "%s ئالدىراش."
|
||||
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
@ -1114,7 +1114,7 @@ msgstr "ئىزدە"
|
||||
#: ../js/ui/windowAttentionHandler.js:42
|
||||
#, c-format
|
||||
msgid "%s has finished starting"
|
||||
msgstr "%s باشلاشنى تاماملىدى"
|
||||
msgstr "%s باشلاشنى تاماملىدى"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:44
|
||||
#, c-format
|
||||
|
100
po/zh_CN.po
100
po/zh_CN.po
@ -17,19 +17,18 @@ msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
|
||||
"shell&keywords=I18N+L10N&component=general\n"
|
||||
"POT-Creation-Date: 2012-09-19 11:02+0000\n"
|
||||
"PO-Revision-Date: 2012-09-23 04:35+0800\n"
|
||||
"Last-Translator: YunQiang Su <wzssyqa@gmail.com>\n"
|
||||
"POT-Creation-Date: 2012-09-25 10:59+0000\n"
|
||||
"PO-Revision-Date: 2012-09-25 17:05+0800\n"
|
||||
"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n"
|
||||
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
|
||||
"Language: zh_CN\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bits\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Gtranslator 2.91.5\n"
|
||||
|
||||
#: ../data/50-gnome-shell-screenshot.xml.in.h:1
|
||||
#| msgid "Screen position"
|
||||
msgid "Screenshots"
|
||||
msgstr "屏幕截图"
|
||||
|
||||
@ -38,12 +37,10 @@ msgid "Record a screencast"
|
||||
msgstr "屏幕录像"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:1
|
||||
#| msgid "File System"
|
||||
msgid "System"
|
||||
msgstr "系统"
|
||||
|
||||
#: ../data/50-gnome-shell-system.xml.in.h:2
|
||||
#| msgid "Message Tray"
|
||||
msgid "Show the message tray"
|
||||
msgstr "显示消息托盘"
|
||||
|
||||
@ -194,17 +191,6 @@ msgstr "用于编码屏幕录像的 GStreamer 管道"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
|
||||
#, 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 "
|
||||
@ -252,11 +238,11 @@ msgstr "扩展"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "使用上面的下拉框选择一个要配置的扩展。"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:526
|
||||
#: ../js/gdm/loginDialog.js:528
|
||||
msgid "Session..."
|
||||
msgstr "会话..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:674
|
||||
#: ../js/gdm/loginDialog.js:676
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "登录"
|
||||
@ -264,42 +250,46 @@ msgstr "登录"
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:741
|
||||
#: ../js/gdm/loginDialog.js:743
|
||||
msgid "Not listed?"
|
||||
msgstr "未列出?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:894 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/gdm/loginDialog.js:896 ../js/ui/components/networkAgent.js:137
|
||||
#: ../js/ui/components/polkitAgent.js:162 ../js/ui/endSessionDialog.js:373
|
||||
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:396
|
||||
#: ../js/ui/status/bluetooth.js:427 ../js/ui/unlockDialog.js:166
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:899
|
||||
#: ../js/gdm/loginDialog.js:901
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "登录"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1238
|
||||
#: ../js/gdm/loginDialog.js:1240
|
||||
msgid "Login Window"
|
||||
msgstr "登录窗口"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:88 ../js/ui/userMenu.js:658 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:773
|
||||
#. Translators: accessible name of the power menu in the login screen
|
||||
#: ../js/gdm/powerMenu.js:35
|
||||
msgid "Power"
|
||||
msgstr "电源"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:89 ../js/ui/userMenu.js:663 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:778
|
||||
msgid "Suspend"
|
||||
msgstr "挂起"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:93
|
||||
#: ../js/gdm/powerMenu.js:94
|
||||
msgid "Restart"
|
||||
msgstr "重启"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:98 ../js/ui/userMenu.js:660 ../js/ui/userMenu.js:662
|
||||
#: ../js/ui/userMenu.js:772
|
||||
#: ../js/gdm/powerMenu.js:99 ../js/ui/userMenu.js:665 ../js/ui/userMenu.js:667
|
||||
#: ../js/ui/userMenu.js:777
|
||||
msgid "Power Off"
|
||||
msgstr "关机"
|
||||
|
||||
#: ../js/gdm/util.js:148
|
||||
#| msgid "Authentication Required"
|
||||
msgid "Authentication error"
|
||||
msgstr "认证出错"
|
||||
|
||||
@ -996,11 +986,11 @@ msgstr "安装"
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "从 extensions.gnome.org 下载并安装 %s?"
|
||||
|
||||
#: ../js/ui/keyboard.js:327
|
||||
#: ../js/ui/keyboard.js:337
|
||||
msgid "tray"
|
||||
msgstr "托盘"
|
||||
|
||||
#: ../js/ui/keyboard.js:561 ../js/ui/status/keyboard.js:194
|
||||
#: ../js/ui/keyboard.js:584 ../js/ui/status/keyboard.js:195
|
||||
#: ../js/ui/status/power.js:205
|
||||
msgid "Keyboard"
|
||||
msgstr "键盘"
|
||||
@ -1053,19 +1043,19 @@ msgstr "查看源"
|
||||
msgid "Web Page"
|
||||
msgstr "网页"
|
||||
|
||||
#: ../js/ui/messageTray.js:1080
|
||||
#: ../js/ui/messageTray.js:1081
|
||||
msgid "Open"
|
||||
msgstr "打开"
|
||||
|
||||
#: ../js/ui/messageTray.js:1087
|
||||
#: ../js/ui/messageTray.js:1088
|
||||
msgid "Remove"
|
||||
msgstr "移除"
|
||||
|
||||
#: ../js/ui/messageTray.js:2052
|
||||
#: ../js/ui/messageTray.js:2088
|
||||
msgid "Message Tray"
|
||||
msgstr "消息托盘"
|
||||
|
||||
#: ../js/ui/messageTray.js:2508
|
||||
#: ../js/ui/messageTray.js:2551
|
||||
msgid "System Information"
|
||||
msgstr "系统信息"
|
||||
|
||||
@ -1291,7 +1281,7 @@ msgstr "键盘设置"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "鼠标设置"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:236
|
||||
#: ../js/ui/status/bluetooth.js:269 ../js/ui/status/volume.js:234
|
||||
msgid "Sound Settings"
|
||||
msgstr "声音设置"
|
||||
|
||||
@ -1349,11 +1339,11 @@ msgstr "请输入设备上的 PIN 码。"
|
||||
msgid "OK"
|
||||
msgstr "确定"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:227
|
||||
#: ../js/ui/status/keyboard.js:228
|
||||
msgid "Show Keyboard Layout"
|
||||
msgstr "显示键盘布局"
|
||||
|
||||
#: ../js/ui/status/keyboard.js:232
|
||||
#: ../js/ui/status/keyboard.js:233
|
||||
msgid "Region and Language Settings"
|
||||
msgstr "区域和语言设置"
|
||||
|
||||
@ -1572,7 +1562,7 @@ msgid "Unknown"
|
||||
msgstr "未知"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:223
|
||||
#: ../js/ui/status/volume.js:47 ../js/ui/status/volume.js:221
|
||||
msgid "Volume"
|
||||
msgstr "音量"
|
||||
|
||||
@ -1584,63 +1574,63 @@ msgstr "麦克风"
|
||||
msgid "Log in as another user"
|
||||
msgstr "以另一个用户身份登录"
|
||||
|
||||
#: ../js/ui/userMenu.js:175
|
||||
#: ../js/ui/userMenu.js:180
|
||||
msgid "Available"
|
||||
msgstr "可用"
|
||||
|
||||
#: ../js/ui/userMenu.js:178
|
||||
#: ../js/ui/userMenu.js:183
|
||||
msgid "Busy"
|
||||
msgstr "忙碌"
|
||||
|
||||
#: ../js/ui/userMenu.js:181
|
||||
#: ../js/ui/userMenu.js:186
|
||||
msgid "Invisible"
|
||||
msgstr "隐身"
|
||||
|
||||
#: ../js/ui/userMenu.js:184
|
||||
#: ../js/ui/userMenu.js:189
|
||||
msgid "Away"
|
||||
msgstr "离开"
|
||||
|
||||
#: ../js/ui/userMenu.js:187
|
||||
#: ../js/ui/userMenu.js:192
|
||||
msgid "Idle"
|
||||
msgstr "空闲"
|
||||
|
||||
#: ../js/ui/userMenu.js:190
|
||||
#: ../js/ui/userMenu.js:195
|
||||
msgid "Unavailable"
|
||||
msgstr "不可用"
|
||||
|
||||
#: ../js/ui/userMenu.js:613 ../js/ui/userMenu.js:754
|
||||
#: ../js/ui/userMenu.js:618 ../js/ui/userMenu.js:759
|
||||
msgid "Switch User"
|
||||
msgstr "切换用户"
|
||||
|
||||
#: ../js/ui/userMenu.js:614
|
||||
#: ../js/ui/userMenu.js:619
|
||||
msgid "Switch Session"
|
||||
msgstr "切换会话"
|
||||
|
||||
#: ../js/ui/userMenu.js:738
|
||||
#: ../js/ui/userMenu.js:743
|
||||
msgid "Notifications"
|
||||
msgstr "提示"
|
||||
|
||||
#: ../js/ui/userMenu.js:746
|
||||
#: ../js/ui/userMenu.js:751
|
||||
msgid "System Settings"
|
||||
msgstr "系统设置"
|
||||
|
||||
#: ../js/ui/userMenu.js:759
|
||||
#: ../js/ui/userMenu.js:764
|
||||
msgid "Log Out"
|
||||
msgstr "注销"
|
||||
|
||||
#: ../js/ui/userMenu.js:764
|
||||
#: ../js/ui/userMenu.js:769
|
||||
msgid "Lock"
|
||||
msgstr "锁定"
|
||||
|
||||
#: ../js/ui/userMenu.js:779
|
||||
#: ../js/ui/userMenu.js:784
|
||||
msgid "Install Updates & Restart"
|
||||
msgstr "安装更新并重启"
|
||||
|
||||
#: ../js/ui/userMenu.js:797
|
||||
#: ../js/ui/userMenu.js:802
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "您的聊天状态将被设置为忙碌"
|
||||
|
||||
#: ../js/ui/userMenu.js:798
|
||||
#: ../js/ui/userMenu.js:803
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user