Compare commits
340 Commits
Author | SHA1 | Date | |
---|---|---|---|
36eb51b594 | |||
04f03ee7d8 | |||
d144f5d7df | |||
aec4c6a388 | |||
63f6800115 | |||
f52c5fc4fe | |||
717aedec5d | |||
66fa24c340 | |||
7e73a52505 | |||
42366ab025 | |||
69a63f208e | |||
98c3f6b3bf | |||
406db1902c | |||
37c7c04efb | |||
af0ec7e089 | |||
ae28bf7c25 | |||
29c8add696 | |||
ecb9c881be | |||
4cf79088a5 | |||
05800773bc | |||
2237f66c44 | |||
2c51d42acf | |||
49809d1e64 | |||
2605e49591 | |||
40abd98840 | |||
a64c84395f | |||
39d2202521 | |||
4edd77cd1f | |||
bdfff20ec2 | |||
bdd05aba3b | |||
89c2538ff1 | |||
7680819108 | |||
d79e8b84c9 | |||
731317230a | |||
5046938913 | |||
0e8fd45559 | |||
6099a5dbc3 | |||
2daa98a694 | |||
5d2c6496fa | |||
817dbbe73f | |||
29c89c82f8 | |||
0b714bd479 | |||
8c94a5afb9 | |||
aeb117c9d1 | |||
a2d4f133b7 | |||
b833aff3c8 | |||
6601e4ddba | |||
815da2d0ec | |||
ddd35b3653 | |||
8a32894c83 | |||
49d8e6da40 | |||
8089f24c81 | |||
b6aab53d10 | |||
55a4517cd1 | |||
b095319a16 | |||
5ea5806730 | |||
bfbf812148 | |||
168e9eeac1 | |||
dd79c1a79a | |||
fe3402589b | |||
74dcaff21c | |||
0a7968a2e5 | |||
00091a2acb | |||
c5aa834b6a | |||
b1bde46694 | |||
49e4fa494e | |||
4622c52b71 | |||
e9ac5dd5f4 | |||
7570c43d11 | |||
4332e7ec49 | |||
9f26f1e225 | |||
0c0319c415 | |||
c16dbd7607 | |||
7b1f10a5fe | |||
dce74749b7 | |||
1ba88b8c42 | |||
9c50b57d46 | |||
900bd3ee97 | |||
b4affe00a7 | |||
ca49c84bc1 | |||
2cddf60226 | |||
d9c3951f02 | |||
aa5997d975 | |||
c51acf7c2a | |||
348044bc8a | |||
7dbdf2aa07 | |||
c933731ead | |||
e7da715994 | |||
6d82aefad4 | |||
8a11ab7d96 | |||
f465086405 | |||
70313a8b79 | |||
71679c38be | |||
addd943074 | |||
0b8470421c | |||
bcf7c0f006 | |||
2b87bb015c | |||
07e10fa03e | |||
bf992989c7 | |||
00400e354d | |||
19a49d34ce | |||
e8badac282 | |||
282a60fcab | |||
e76a28ded5 | |||
b22543ab66 | |||
d5165cdc08 | |||
1c0549f468 | |||
a7316b0594 | |||
634eeaf74c | |||
1299e196be | |||
92c325230d | |||
827a466a5c | |||
89b38b1361 | |||
140de6dd60 | |||
e64ff5832e | |||
17b1543d44 | |||
043e79a570 | |||
5d036e3d54 | |||
9d2a638988 | |||
7943993fcb | |||
026ddc2d9b | |||
384c7e2c17 | |||
700f706428 | |||
0a4deb2a9b | |||
5b8abe6809 | |||
2c5005c1ea | |||
c2b3022163 | |||
644abb2dc9 | |||
48b53c30f7 | |||
bf3818eb22 | |||
b3358aeed7 | |||
a7d4c7d8de | |||
369c1b0a41 | |||
21636f3f29 | |||
bf428312d7 | |||
6218209dcb | |||
1b7ead3455 | |||
3a252a1b41 | |||
fc7e6470b5 | |||
3813a03117 | |||
e59c29993c | |||
92d2ebc3f9 | |||
67ef448471 | |||
207abe9a2c | |||
05863227a6 | |||
ac05cb323c | |||
066d44636a | |||
3dbf06420d | |||
1983097d3a | |||
1c60aa58ae | |||
1626d9f9a4 | |||
c7182589d2 | |||
ceb17dc713 | |||
46c0360b03 | |||
0ebddfcf50 | |||
36d20eb1b8 | |||
db4b266874 | |||
63cf470e07 | |||
1f87eb4157 | |||
9bb9999b46 | |||
60e6349963 | |||
581d1c5db1 | |||
cf0b6dda25 | |||
8a5faa3d2e | |||
09607787cc | |||
0aad74a670 | |||
985f28bbea | |||
22e1abbaff | |||
21e8097b9c | |||
14d267c246 | |||
9420174477 | |||
fb4878bb7c | |||
c856cbb523 | |||
2e42eb6bad | |||
4f87e86603 | |||
3c6737f738 | |||
b2bc73c3fe | |||
30ca25e978 | |||
ecdd0875df | |||
d05d748fe2 | |||
8db193a172 | |||
c064973c9d | |||
01c66eaf0c | |||
c2fdec188e | |||
d7e2b0a771 | |||
06354a8c9a | |||
7c25dead17 | |||
f4d3153e91 | |||
7030d59b2f | |||
6eae036ac3 | |||
b6b6ed0e2f | |||
51b5825665 | |||
1c2629595e | |||
e91f4e88b5 | |||
bdb7dbdd00 | |||
7092521253 | |||
47f7fcd4fe | |||
93a004b016 | |||
2fad9d73d4 | |||
252eb24522 | |||
b7964e9efb | |||
23e7a9e710 | |||
36804a60c9 | |||
73270345f5 | |||
e1ffe06709 | |||
3dd240bdbb | |||
b58425d7d7 | |||
a197ce6f53 | |||
9dcdaf05b5 | |||
c827cccdf3 | |||
6805f2d71e | |||
0ea690a2f2 | |||
d68ff69c7a | |||
f1f2bc28a2 | |||
5f0389c07c | |||
c2f304f3bc | |||
ce9c1a1f7a | |||
203382e007 | |||
d2ba9eb967 | |||
59ebec25f3 | |||
b864b03a65 | |||
c7a37660ce | |||
02aae631d8 | |||
d542f63d3f | |||
74694a6e23 | |||
a5baeac428 | |||
e23e04953c | |||
fa9f923697 | |||
797e201946 | |||
156a642d28 | |||
96379b7517 | |||
9b5bb62aa7 | |||
895745ac14 | |||
6cde2d8db4 | |||
a277f8e0e1 | |||
cf5c5d06e1 | |||
722f45fa58 | |||
c97390b9c6 | |||
124c461a56 | |||
4ac352637c | |||
00cf62acfb | |||
ee0c2a1152 | |||
f32ab20267 | |||
1316f93b21 | |||
52d72fe8a1 | |||
0406aaa591 | |||
8f56660cfc | |||
402cc6b90c | |||
b8c14ad64e | |||
1f9c83d88b | |||
319667a25c | |||
b047a37a80 | |||
31af220483 | |||
40d51ea59f | |||
284cf83935 | |||
5ba04a7478 | |||
2b87051022 | |||
a901f2dc5d | |||
bd6f1f2c6d | |||
ca612872a6 | |||
feb33a6a28 | |||
ff92d962f3 | |||
79ca0d579c | |||
c61ac862ba | |||
64ce622f83 | |||
772638c78e | |||
24badb46fe | |||
87d54b37e4 | |||
98aa61e2a4 | |||
bea5c6f4e6 | |||
7d29e691a4 | |||
b0d161faad | |||
4c74fa81d1 | |||
556a3e08db | |||
e3fb77c051 | |||
3ee07d0e82 | |||
72c486cb3e | |||
e37574510e | |||
f4b58f35ba | |||
01696f19e8 | |||
1f5a27d5c5 | |||
81476dedcb | |||
90b08acbf1 | |||
f967fd21f8 | |||
8d854d5f1a | |||
fde5932b45 | |||
eb84227f78 | |||
550d595034 | |||
24cc4b49d6 | |||
5f130d1925 | |||
4f05787338 | |||
a98db33c18 | |||
a5d78f2943 | |||
46ebe9ffc5 | |||
e2b80658ca | |||
0a586c5c92 | |||
aa5d352a06 | |||
760da64a4c | |||
714ffc5ef1 | |||
fd4d645687 | |||
24ad59ea37 | |||
15f881f967 | |||
d5285674ae | |||
bb862e20c0 | |||
be3eb308b9 | |||
e7f0b1dc59 | |||
336cec8b2a | |||
fad0b96f24 | |||
d2aab9d6a6 | |||
4005863e3d | |||
70cdb67f31 | |||
a9aec6956d | |||
d871eda6be | |||
49d620a414 | |||
2e2e3281da | |||
37cbfe29cf | |||
a1f88fc17f | |||
0065da61bd | |||
d2b0706c40 | |||
a95e585e39 | |||
7d39fa76dd | |||
ddf27c1a84 | |||
87e46f3ff1 | |||
33a6fda6c3 | |||
7cc1bdb35d | |||
60557f4e0f | |||
914441218a | |||
e322d98886 | |||
ba1e5f8f71 | |||
517075c605 | |||
540e970170 | |||
d0fd5641c1 | |||
caaa21dec0 | |||
22c606326f | |||
00ed2973b2 | |||
3837fc0a87 | |||
07b95d3436 | |||
1f5dd9c397 | |||
007736a234 | |||
c2a9f7fbb2 |
165
NEWS
165
NEWS
@ -1,7 +1,164 @@
|
||||
3.4.2
|
||||
=====
|
||||
* Mirror Evolution calendar settings into our own schema [Owen; #674424]
|
||||
* gdm: don't fail if fprintd unavailable [Ray; #675006]
|
||||
* Fix broken extension loading [Owen, Alexandre; #670477]
|
||||
* Fix filtering of Empathy notifications [Guillaume; #675370]
|
||||
* telepathyClient: Ignore invalidated channels [Guillaume; #677457]
|
||||
* popupMenu: Fix freeze when appMenu is not populated in one go [Alban; #676447]
|
||||
* mount-operation: fix exceptions when showing password entry [Cosimo; #678428]
|
||||
* Misc. fixes [Guillaume, Jasper, Rico; #677441, #676175]
|
||||
|
||||
Contributors:
|
||||
Alban Browaeys, Cosimo Cecchi, Guillaume Desmottes, Alexandre Rostovtsev,
|
||||
Jasper St. Pierre, Ray Strode, Owen Taylor, Rico Tzschichholz
|
||||
|
||||
Translations:
|
||||
OKANO Takayoshi [ja], Changwoo Ryu [ko], Jonh Wendell [pt_BR],
|
||||
Luca Ferretti [it], Sandeep Sheshrao Shedmake [mr], Takanori MATSUURA [ja],
|
||||
Andika Triwidada [id], Mantas Kriaučiūnas [lt], Nilamdyuti Goswami [as]
|
||||
|
||||
3.4.1
|
||||
=====
|
||||
* Fix crash that occurred when an icon theme change caused unexpected
|
||||
reentrancy in the icon loading code [Jasper; #673512]
|
||||
* Don't show system and other disabled users in the GDM user list
|
||||
[Adel; #673784]
|
||||
* Make gnome-shell-calendar-server initialize GTK+ so it can display
|
||||
password prompts if needed [#673608; Owen, Rico]
|
||||
* Adapt to Mutter API change for keybinding addition [Florian; #673014]
|
||||
* Fix crash when an extension was installed as both a user extension
|
||||
and a system extension [#673613; Jasper]
|
||||
* Fix bug where chat entry could end up partially offscreen [Joost, 661944]
|
||||
* Fix problem where icons weren't updating when theme was changed
|
||||
[#672941; Florian]
|
||||
* Look for Evolution calendar settings in GSettings, not GConf [#673610; Owen]
|
||||
* Add <super>F10 for the application menu [#672909; Florian]
|
||||
* Fix %Id format characters to work in translations [#673106; Cosimo]
|
||||
(were already used in fa translation)
|
||||
* Fix error when NetworkManager restarts [#673043; Giovanni]
|
||||
* Improve efficiency of overview redraws by working around Clutter issue
|
||||
[Stefano; #670636]
|
||||
* Misc bug fixes [Florian, Giovanni, Jasper, Rui, Stefano;
|
||||
#672592, #672641, #672719, #673187, #673233, #673656]
|
||||
|
||||
Contributors:
|
||||
Giovanni Campagna, Cosimo Cecchi, Stefano Facchini, Adel Gadllah, Rui Matos,
|
||||
Florian Müllner, Jasper St. Pierre, Owen Taylor, Rico Tzschichholz,
|
||||
Joost Verdoorn
|
||||
|
||||
Translations:
|
||||
Khaled Hosny [ar], Ihar Hrachyshka [be], Alexander Shopov [bg], Gil Forcada,
|
||||
Jordi Serratosa [ca], Petr Kovar [cs], Bruce Cowan [en_GB],
|
||||
Carles Ferrando [ca@valencia], Wolfgang Stöggl [de], Daniel Mustieles [es],
|
||||
Arash Mousavi [fa], Bruno Brouard [fr], Fran Diéguez [gl],
|
||||
Sweta Kothari [gu], Yaron Shahrabani [he], Gabor Kelemen [hu],
|
||||
Shankar Prasad [kn], Žygimantas Beručka [lt], Rudolfs Mazurs [lv],
|
||||
Sandeep Sheshrao Shedmake [mr], Kjartan Maraas [nb], Piotr Drąg [pl],
|
||||
Yuri Myasoedov [ru], Daniel Nylander [se], Matej Urbančič [sl],
|
||||
Miroslav Nikolić [sr], Sasi Bhushan, Praveen Illa [te], Yinghua Wang [zh_CN]
|
||||
|
||||
3.4.0
|
||||
=====
|
||||
* Don't crash when taking screenshots [Jasper; #672775]
|
||||
* Fix dialog-resizing problem [Florian; #672543]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner, Jasper St. Pierre
|
||||
|
||||
Translations:
|
||||
Khaled Hosny, Abderrahim Kitouni [ar], Ihar Hrachyshka [be],
|
||||
Alexander Shopov [bg], Marek Černocký [cs], Jiri Grönroos, Timo Jyrinki [fi],
|
||||
Bruno Brouard [fr], Fran Diéguez [gl], Yaron Shahrabani [he],
|
||||
Gabor Kelemen [hu], Jiro Matsuzawa [ja], Kenneth Nielsen [dk],
|
||||
Mattias Põldaru [et], Changwoo Ryu [ko], Rudolfs Mazurs [lv],
|
||||
Jonh Wendell [pt_BR], Yuri Myasoedov[ru], Daniel Korostil [uk],
|
||||
Nguyễn Thái Ngọc Duy [vi], Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
3.3.92
|
||||
======
|
||||
* Add shell-dialogs for GNOME Keyring prompts [Stef; #652459, #652460, #671034]
|
||||
* When the user returns from idle, bring up the message tray if there were
|
||||
messages while they were away [Marina; #643014]
|
||||
* https://live.gnome.org/EveryDetailMatters
|
||||
- Make the workspace thumbnails clickable all the way to the edge of the
|
||||
screen [Stefano; #643319]
|
||||
- Don't slide out the workspace thumbnails if the mouse is over them when
|
||||
entering the overview [Joost, #651092]
|
||||
- Fix placeholder jumps while dragging a dash item [Joost; #651842]
|
||||
- Don't favorite apps if they are dropped back at the same position
|
||||
[Jean-Philippe; #656333]
|
||||
- To avoid confusion, don't allow removing running apps from favorites
|
||||
[Florian; #644853]
|
||||
- Fix creation of new workspaces by dragging application launchers
|
||||
[Stefano; #664202]
|
||||
- Make it easier to drag dash items without triggering the menu
|
||||
[Florian; #637103]
|
||||
* Accessibility [Alejandro]
|
||||
- Add StWidget API for easily adding accessible states and setting roles,
|
||||
names [#668366, #667432, #671378]
|
||||
- Set accessibility information on UI elements
|
||||
[#644255, #667432, #668361, #672047, #670308, #670312, #670719, #671404]
|
||||
* Improve key-navigation in the overview [Rui, Florian; #663901]
|
||||
* Key navigation bug fixes [Rui, Florian; #662493, #663437, #665215, #671998]
|
||||
* Honor a 'org.gnome.shell.overrides.dynamic-workspaces' setting that
|
||||
determines whether the workspace count is dynamic and unsaved in GSettings
|
||||
or static and saved. [Florian; #671568]
|
||||
* Avoid saving user presence to GSettings when not necessary
|
||||
[Florian; #665701, #668214]
|
||||
* Save screencasts in the users Videos/ directory [Adel; #670749]
|
||||
Use a "human readable" filename [Florian, Adel, Ray; #670753]
|
||||
* Allow dragging from the empty part of the top panel to unmaximize a window
|
||||
[Florian; #666359]
|
||||
* Fix hangs that could occur when switching away to a VT [Ray; #653833]
|
||||
* Fix problems with installing from extensions.gnome.org [Giovanni; #671134]
|
||||
* Fix locking the screen when suspending via menu [David, Gert; #670820]
|
||||
* Fix browser plugin with Konqueror and Opera [Jasper]
|
||||
* Fix shell restart not to bring up failure screen [Giovanni; #648384]
|
||||
* Reorganize and clean up CSS theming [Allan; #668209]
|
||||
* Improve appearance of modal dialogs [Allan, Florian; #670227, #668209]
|
||||
* Update the calendar code to use ECalClient [Giovanni; #671177]
|
||||
* Update jhbuild script to use the main moduleset [Owen, Will; #668440]
|
||||
* StTextureCache: code cleanup, evict unused icons, merge together
|
||||
simulataneous requests for the same icon [Jasper; #670771, #671656, #672273]
|
||||
* Clean up St for recent Clutter changes and fix bugs. StContainer and
|
||||
StGroup are removed [Jasper, Florian; #670034, #670640, #670904]
|
||||
* Code cleanup [Adel, Jasper, Rui; #613194, #671086, #671103]
|
||||
* Misc bug fixes
|
||||
[Adel, Colin G, Cosimo, Florian, Giovanni, Jasper, Marius, Rui, Stefano;
|
||||
#651130, #658946, #667552, #670076, #671001, #670979, #671410, #671411,
|
||||
#671556, #671656, #671657, #672011, #672024, #672240, #672265, #672270,
|
||||
#672321, #672326, #672413, #672471]
|
||||
|
||||
Contributors:
|
||||
Jean-Philippe Braun, Giovanni Campagna, Cosimo Cecchi, Allan Day,
|
||||
Stefano Facchini, David Foerster, Adel Gadllah, Marius Gedminas,
|
||||
Colin Guthrie, Gert Michael Kulyk, William Lachance, Rui Matos,
|
||||
Florian Müllner, Alejandro Piñeiro, Jan Alexander Steffens,
|
||||
Jasper St. Pierre, Ray Strode, Owen Taylor, Joost Verdoorn, Stef Walter,
|
||||
Marina Zhurakhinskaya
|
||||
|
||||
Translations:
|
||||
Nilamdyuti Goswami [as], Ihar Hrachyshka, Kasia Bondarava [be],
|
||||
Alexander Shopov, Ivaylo Valkov [bg], Gil Forcada [ca], Marek Černocký [cs],
|
||||
Mario Blättermann [de], Kris Thomsen [dk], Bruce Cowan [en_GB],
|
||||
Kristjan Schmidt [eo], Daniel Mustieles [es], Mattias Põldaru [et],
|
||||
Inaki Larranaga Murgoitio [eu], Arash Mousavi [fa], Timo Jyrinki [fi],
|
||||
Bruno Brouard [fr], Fran Diéguez [gl], Sweta Kothari [gu],
|
||||
Yaron Shahrabani [he], Gabor Kelemen [hu], Jiro Matsuzawa [ja],
|
||||
Baurzhan Muftakhidinov [kk], Seong-ho Cho [ko], Žygimantas Beručka [lt],
|
||||
Anita Reitere [lv], Anish A, Praveen Arimbrathodiyil, Mohammed Sadiq [ml],
|
||||
fKjartan Maraas [nb], Wouter Bolsterlee [nl], A S Alam [pa], Piotr Drąg [pl],
|
||||
Duarte Loreto [pt], Jonh Wendell [pt_BR], Yuri Myasoedov [ru],
|
||||
Matej Urbančič [sl], Miroslav Nikolić [sr], Tirumurti Vasudevan [ta],
|
||||
Sasi Bhushan, Krishnababu Krothapalli [te], Daniel Korostil [uk],
|
||||
Nguyễn Thái Ngọc Duy [vi], YunQiang Su, Yinghua Wang [zh_CN],
|
||||
Chao-Hsiung Liao [zh_HK, zh_TW]
|
||||
|
||||
3.3.90
|
||||
======
|
||||
|
||||
* All other applications to implement search providers via D-Bus
|
||||
* Allow other applications to implement search providers via D-Bus
|
||||
[Florian; #663125, #670148]
|
||||
* Remove "Recent Items" search, as replaced by Documents search
|
||||
[Florian; #663125]
|
||||
@ -32,7 +189,7 @@ Contributors:
|
||||
Will Thompson, Stef Walter
|
||||
|
||||
Translations:
|
||||
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cz],
|
||||
Ihar Hrachyshka [be], Marek Černocký, Adam Matoušek [cs],
|
||||
Kenneth Nielsen [dk], Daniel Mustieles [es], Mattias Põldaru [et],
|
||||
Fran Diéguez [gl], Yaron Shahrabani [he], Luca Ferretti [it],
|
||||
Baurzhan Muftakhidinov [kk], Aurimas Černius [lt], Kjartan Maraas [nb],
|
||||
@ -163,7 +320,7 @@ Contributors:
|
||||
Marina Zhurakhinskaya
|
||||
|
||||
Translations:
|
||||
Petr Kovar [cz], Kris Thomsen [dk], Daniel Mustieles [es],
|
||||
Petr Kovar [cs], Kris Thomsen [dk], Daniel Mustieles [es],
|
||||
Ville-Pekka Vainio [fi], Yaron Shahrabani [he], Luca Ferretti [it],
|
||||
Hideki Yamane [ja], Žygimantas Beručka [lt], Jovan Naumovski [mk],
|
||||
Kjartan Maraas [nb], "Andreas N" [nn], Lucian Adrian Grijincu [ro],
|
||||
@ -326,7 +483,7 @@ Contributors:
|
||||
Translations:
|
||||
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
|
||||
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
|
||||
Petr Kovar [cz], Mario Blättermann [de], Kris Thomsen [dk],
|
||||
Petr Kovar [cs], Mario Blättermann [de], Kris Thomsen [dk],
|
||||
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
|
||||
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
|
||||
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],
|
||||
|
@ -153,6 +153,8 @@ 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));
|
||||
|
12
configure.ac
12
configure.ac
@ -1,5 +1,5 @@
|
||||
AC_PREREQ(2.63)
|
||||
AC_INIT([gnome-shell],[3.3.90],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
AC_INIT([gnome-shell],[3.4.2],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([src/shell-global.c])
|
||||
@ -60,10 +60,10 @@ fi
|
||||
|
||||
AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
|
||||
|
||||
CLUTTER_MIN_VERSION=1.9.11
|
||||
CLUTTER_MIN_VERSION=1.9.16
|
||||
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
|
||||
GJS_MIN_VERSION=1.29.18
|
||||
MUTTER_MIN_VERSION=3.3.5
|
||||
MUTTER_MIN_VERSION=3.4.1
|
||||
FOLKS_MIN_VERSION=0.5.2
|
||||
GTK_MIN_VERSION=3.3.9
|
||||
GIO_MIN_VERSION=2.31.6
|
||||
@ -74,6 +74,7 @@ TELEPATHY_GLIB_MIN_VERSION=0.17.5
|
||||
TELEPATHY_LOGGER_MIN_VERSION=0.2.4
|
||||
POLKIT_MIN_VERSION=0.100
|
||||
STARTUP_NOTIFICATION_MIN_VERSION=0.11
|
||||
GCR_MIN_VERSION=3.3.90
|
||||
|
||||
# Collect more than 20 libraries for a prize!
|
||||
PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||
@ -93,7 +94,8 @@ PKG_CHECK_MODULES(GNOME_SHELL, gio-unix-2.0 >= $GIO_MIN_VERSION
|
||||
telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION
|
||||
telepathy-logger-0.2 >= $TELEPATHY_LOGGER_MIN_VERSION
|
||||
polkit-agent-1 >= $POLKIT_MIN_VERSION xfixes
|
||||
libnm-glib libnm-util gnome-keyring-1)
|
||||
libnm-glib libnm-util gnome-keyring-1
|
||||
gcr-3 >= $GCR_MIN_VERSION)
|
||||
|
||||
PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0)
|
||||
|
||||
@ -210,7 +212,7 @@ GTK_DOC_CHECK([1.15], [--flavour no-tmpl])
|
||||
# minimum/yes/maximum are the same, however.
|
||||
AC_ARG_ENABLE(compile_warnings,
|
||||
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],[Turn on compiler warnings]),,
|
||||
enable_compile_warnings=maximum)
|
||||
enable_compile_warnings=error)
|
||||
|
||||
changequote(,)dnl
|
||||
if test "$enable_compile_warnings" != no ; then
|
||||
|
@ -53,7 +53,7 @@ dist_theme_DATA = \
|
||||
theme/ws-switch-arrow-up.svg \
|
||||
theme/ws-switch-arrow-down.svg
|
||||
|
||||
gsettings_SCHEMAS = org.gnome.shell.gschema.xml
|
||||
gsettings_SCHEMAS = org.gnome.shell.gschema.xml org.gnome.shell.evolution.calendar.gschema.xml
|
||||
|
||||
@INTLTOOL_XML_NOMERGE_RULE@
|
||||
@GSETTINGS_RULES@
|
||||
@ -80,6 +80,7 @@ EXTRA_DIST = \
|
||||
$(menu_DATA) \
|
||||
$(shaders_DATA) \
|
||||
$(convert_DATA) \
|
||||
org.gnome.shell.evolution.calendar.gschema.xml.in \
|
||||
org.gnome.shell.gschema.xml.in
|
||||
|
||||
CLEANFILES = \
|
||||
|
@ -13,4 +13,4 @@ NoDisplay=true
|
||||
X-GNOME-Autostart-Phase=WindowManager
|
||||
X-GNOME-Provides=panel;windowmanager;
|
||||
X-GNOME-Autostart-Notify=true
|
||||
X-GNOME-AutoRestart=true
|
||||
X-GNOME-AutoRestart=false
|
||||
|
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
21
data/org.gnome.shell.evolution.calendar.gschema.xml.in
Normal file
@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- NOTE: This schema is a GNOME 3.4 workaround - it uses the same path
|
||||
as org.gnome.evolution.calendar, but avoids us requiring Evolution
|
||||
be installed. In GNOME 3.6 the selected state will become a flag
|
||||
on the calendar. Because the translations are in Evolution,
|
||||
this is untranslated and in POTFILES.skip.
|
||||
-->
|
||||
<schemalist>
|
||||
<schema path="/org/gnome/evolution/calendar/" id="org.gnome.shell.evolution.calendar" gettext-domain="evolution">
|
||||
<key type="as" name="selected-calendars">
|
||||
<default>[]</default>
|
||||
<summary>List of selected calendars</summary>
|
||||
<description>List of calendars to load</description>
|
||||
</key>
|
||||
<key type="as" name="selected-tasks">
|
||||
<default>[]</default>
|
||||
<summary>List of selected task lists</summary>
|
||||
<description>List of task lists to load</description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
@ -64,6 +64,7 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
<child name="clock" schema="org.gnome.shell.clock"/>
|
||||
<child name="calendar" schema="org.gnome.shell.calendar"/>
|
||||
<child name="recorder" schema="org.gnome.shell.recorder"/>
|
||||
<child name="keybindings" schema="org.gnome.shell.keybindings"/>
|
||||
<child name="keyboard" schema="org.gnome.shell.keyboard"/>
|
||||
</schema>
|
||||
|
||||
@ -78,6 +79,17 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.keybindings" path="/org/gnome/shell/keybindings/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="open-application-menu" type="as">
|
||||
<default>["<Super>F10"]</default>
|
||||
<_summary>Keybinding to open the application menu</_summary>
|
||||
<_description>
|
||||
Keybinding to open the application menu.
|
||||
</_description>
|
||||
</key>
|
||||
</schema>
|
||||
|
||||
<schema id="org.gnome.shell.keyboard" path="/org/gnome/shell/keyboard/"
|
||||
gettext-domain="@GETTEXT_PACKAGE@">
|
||||
<key name="keyboard-type" type="s">
|
||||
@ -172,6 +184,14 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
|
||||
</description>
|
||||
</key>
|
||||
|
||||
<key name="dynamic-workspaces" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces are managed dynamically</summary>
|
||||
<description>
|
||||
This key overrides the key in org.gnome.mutter when running GNOME Shell.
|
||||
</description>
|
||||
</key>
|
||||
|
||||
<key name="workspaces-only-on-primary" type="b">
|
||||
<default>true</default>
|
||||
<summary>Workspaces only on primary monitor</summary>
|
||||
|
@ -17,10 +17,16 @@
|
||||
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
/* Text Styles */
|
||||
|
||||
/* default text style */
|
||||
stage {
|
||||
font-family: cantarell, sans-serif;
|
||||
font-size: 11pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* links */
|
||||
.shell-link {
|
||||
color: #0000ff;
|
||||
text-decoration: underline;
|
||||
@ -30,10 +36,28 @@ stage {
|
||||
color: #0000e0;
|
||||
}
|
||||
|
||||
.label-shadow {
|
||||
color: rgba(0,0,0,0.5);
|
||||
/* small */
|
||||
.app-well-menu,
|
||||
.contact-details-status,
|
||||
.run-dialog-label,
|
||||
.run-dialog-error-label {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
/* small bold */
|
||||
.dash-label,
|
||||
.window-caption,
|
||||
.switcher-list,
|
||||
.source-title,
|
||||
.app-well-app > .overview-icon,
|
||||
.remove-favorite > .overview-icon,
|
||||
.search-result-content > .overview-icon {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* Scroll Bars */
|
||||
|
||||
StScrollBar
|
||||
{
|
||||
padding: 0px;
|
||||
@ -44,6 +68,11 @@ StScrollView.vfade
|
||||
-st-vfade-offset: 68px;
|
||||
}
|
||||
|
||||
StScrollView.hfade
|
||||
{
|
||||
-st-hfade-offset: 68px;
|
||||
}
|
||||
|
||||
StScrollView StScrollBar
|
||||
{
|
||||
min-width: 16px;
|
||||
@ -79,6 +108,8 @@ StScrollBar StButton#vhandle:hover
|
||||
background-color: #292929;
|
||||
}
|
||||
|
||||
/* Check Boxes */
|
||||
|
||||
.check-box ShellGenericContainer {
|
||||
spacing: .8em;
|
||||
}
|
||||
@ -113,8 +144,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.popup-menu {
|
||||
color: #ffffff;
|
||||
font-size: 10.5pt;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
||||
@ -153,8 +182,6 @@ StScrollBar StButton#vhandle:hover
|
||||
.popup-combo-menu {
|
||||
background-color: rgba(0,0,0,0.9);
|
||||
padding: 1em 0em;
|
||||
color: #ffffff;
|
||||
font-size: 10.5pt;
|
||||
border: 1px solid #5f5f5f;
|
||||
border-radius: 9px;
|
||||
}
|
||||
@ -224,10 +251,10 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.popup-menu-icon {
|
||||
icon-size: 1.14em;
|
||||
icon-size: 1.09em;
|
||||
}
|
||||
|
||||
/* Switches (to be used in menus) */
|
||||
/* Switches */
|
||||
.toggle-switch {
|
||||
width: 65px;
|
||||
height: 22px;
|
||||
@ -255,35 +282,48 @@ StScrollBar StButton#vhandle:hover
|
||||
spacing: .5em;
|
||||
}
|
||||
|
||||
/* Shared button properties */
|
||||
/* Buttons */
|
||||
|
||||
.dash-search-button, .notification-button, .notification-icon-button,
|
||||
.hotplug-notification-item, .hotplug-resident-eject-button,
|
||||
.dash-search-button,
|
||||
.notification-button,
|
||||
.notification-icon-button,
|
||||
.hotplug-notification-item,
|
||||
.hotplug-resident-eject-button,
|
||||
.modal-dialog-button {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
border: 1px solid #8b8b8b;
|
||||
background-gradient-direction: vertical;
|
||||
background-gradient-start: rgba(255, 255, 255, 0.2);
|
||||
background-gradient-end: rgba(255, 255, 255, 0);
|
||||
}
|
||||
|
||||
.dash-search-button:hover, .notification-button:hover,
|
||||
.notification-icon-button:hover, .hotplug-notification-item:hover,
|
||||
.hotplug-resident-eject-button:hover, .modal-dialog-button:hover {
|
||||
.dash-search-button:hover,
|
||||
.notification-button:hover,
|
||||
.notification-icon-button:hover,
|
||||
.hotplug-notification-item:hover,
|
||||
.hotplug-resident-eject-button:hover,
|
||||
.modal-dialog-button:hover {
|
||||
background-gradient-start: rgba(255, 255, 255, 0.3);
|
||||
background-gradient-end: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.dash-search-button:selected, .notification-button:focus,
|
||||
.notification-icon-button:focus, .hotplug-notification-item:focus,
|
||||
.dash-search-button:selected,
|
||||
.dash-search-button:focus,
|
||||
.notification-button:focus,
|
||||
.notification-icon-button:focus,
|
||||
.hotplug-notification-item:focus,
|
||||
.modal-dialog-button:focus {
|
||||
border: 2px solid #8b8b8b;
|
||||
}
|
||||
|
||||
.dash-search-button:active, .dash-search-button:pressed,
|
||||
.notification-button:active, .notification-icon-button:active,
|
||||
.hotplug-notification-item:active, .hotplug-resident-eject-button:active,
|
||||
.modal-dialog-button:active, .modal-dialog-button:pressed {
|
||||
.dash-search-button:active,
|
||||
.dash-search-button:pressed,
|
||||
.notification-button:active,
|
||||
.notification-icon-button:active,
|
||||
.hotplug-notification-item:active,
|
||||
.hotplug-resident-eject-button:active,
|
||||
.modal-dialog-button:active,
|
||||
.modal-dialog-button:pressed {
|
||||
background-gradient-start: rgba(255, 255, 255, 0);
|
||||
background-gradient-end: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
@ -291,9 +331,7 @@ StScrollBar StButton#vhandle:hover
|
||||
/* Panel */
|
||||
|
||||
#panel {
|
||||
color: #ffffff;
|
||||
background-color: black;
|
||||
font-size: 10.5pt;
|
||||
font-weight: bold;
|
||||
height: 1.86em;
|
||||
}
|
||||
@ -335,6 +373,11 @@ StScrollBar StButton#vhandle:hover
|
||||
spacing: 4px;
|
||||
}
|
||||
|
||||
/* used for the app menu header only */
|
||||
.label-shadow {
|
||||
color: rgba(0,0,0,0.5);
|
||||
}
|
||||
|
||||
.panel-button #appMenuIcon {
|
||||
app-icon-bottom-clip: 1px;
|
||||
}
|
||||
@ -388,6 +431,8 @@ StScrollBar StButton#vhandle:hover
|
||||
-boxpointer-gap: 4px
|
||||
}
|
||||
|
||||
/* User Menu */
|
||||
|
||||
#panelUserMenu {
|
||||
spacing: 4px;
|
||||
}
|
||||
@ -427,8 +472,6 @@ StScrollBar StButton#vhandle:hover
|
||||
padding: .4em 0em;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #5f5f5f;
|
||||
color: #ffffff;
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
|
||||
.status-chooser-status-item,
|
||||
@ -437,7 +480,7 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.system-status-icon {
|
||||
icon-size: 1.14em;
|
||||
icon-size: 1.09em;
|
||||
}
|
||||
|
||||
/* Overview */
|
||||
@ -447,7 +490,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.window-caption {
|
||||
color: white;
|
||||
spacing: 25px;
|
||||
}
|
||||
|
||||
@ -481,8 +523,6 @@ StScrollBar StButton#vhandle:hover
|
||||
.window-caption {
|
||||
background: rgba(0,0,0,0.5);
|
||||
border-radius: 8px;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
padding: 4px 12px;
|
||||
-shell-caption-spacing: 12px;
|
||||
}
|
||||
@ -530,13 +570,14 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
#viewSelector {
|
||||
spacing: 1em;
|
||||
font-size: 12pt;
|
||||
}
|
||||
|
||||
#viewSelectorTabBar {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
/* Search Box */
|
||||
|
||||
#searchArea {
|
||||
padding: 0px 24px;
|
||||
}
|
||||
@ -544,6 +585,7 @@ StScrollBar StButton#vhandle:hover
|
||||
#searchEntry {
|
||||
padding: 4px 12px;
|
||||
border-radius: 17px;
|
||||
font-size: 12pt;
|
||||
color: rgb(128, 128, 128);
|
||||
border: 2px solid rgba(245,245,245,0.2);
|
||||
background-gradient-start: rgba(5,5,6,0.1);
|
||||
@ -580,8 +622,11 @@ StScrollBar StButton#vhandle:hover
|
||||
color: #8d8f8a;
|
||||
}
|
||||
|
||||
/* View Tabs */
|
||||
|
||||
.view-tab-title {
|
||||
color: #888a85;
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
padding: 0px 0.75em;
|
||||
height: 1.5em;
|
||||
@ -597,6 +642,8 @@ StScrollBar StButton#vhandle:hover
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
/* Search Results */
|
||||
|
||||
#searchResults {
|
||||
padding: 20px 10px 10px 10px;
|
||||
spacing: 18px;
|
||||
@ -621,7 +668,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.search-section-results {
|
||||
color: #ffffff;
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
@ -648,29 +694,22 @@ StScrollBar StButton#vhandle:hover
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.dash-search-button:focus,
|
||||
.dash-search-button:selected {
|
||||
padding-top: 3px;
|
||||
padding-bottom: 4px;
|
||||
width: 298px;
|
||||
}
|
||||
|
||||
.dash-search-button-label {
|
||||
color: white;
|
||||
font-size: 11pt;
|
||||
}
|
||||
|
||||
.dash-label {
|
||||
border-radius: 7px;
|
||||
padding: 4px 12px;
|
||||
background-color: rgba(0,0,0,0.5);
|
||||
color: #ffffff;
|
||||
font-size: 0.9em;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
-x-offset: 8px;
|
||||
}
|
||||
|
||||
/* Apps */
|
||||
/* Application Launchers and Grid */
|
||||
|
||||
.icon-grid {
|
||||
spacing: 36px;
|
||||
@ -678,12 +717,6 @@ StScrollBar StButton#vhandle:hover
|
||||
-shell-grid-vertical-item-size: 118px;
|
||||
}
|
||||
|
||||
.contact-grid {
|
||||
spacing: 36px;
|
||||
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
|
||||
-shell-grid-vertical-item-size: 118px;
|
||||
}
|
||||
|
||||
.icon-grid .overview-icon {
|
||||
icon-size: 96px;
|
||||
}
|
||||
@ -699,7 +732,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.app-filter {
|
||||
font-size: 10.5pt;
|
||||
font-weight: bold;
|
||||
height: 2.85em;
|
||||
color: #aaa;
|
||||
@ -744,13 +776,32 @@ StScrollBar StButton#vhandle:hover
|
||||
border-radius: 4px;
|
||||
padding: 3px;
|
||||
border: 1px rgba(0,0,0,0);
|
||||
font-size: 8pt;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
transition-duration: 100;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.app-well-app.running > .overview-icon {
|
||||
text-shadow: black 0px 2px 2px;
|
||||
background-image: url("running-indicator.svg");
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.app-well-app:hover > .overview-icon,
|
||||
.remove-favorite:hover > .overview-icon,
|
||||
.search-result-content:hover > .overview-icon {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
text-shadow: black 0px 2px 2px;
|
||||
transition-duration: 100;
|
||||
}
|
||||
|
||||
/* Contacts */
|
||||
|
||||
.contact-grid {
|
||||
spacing: 36px;
|
||||
-shell-grid-horizontal-item-size: 272px; /* 2 * -shell-grid-horizontal-item-size + spacing */
|
||||
-shell-grid-vertical-item-size: 118px;
|
||||
}
|
||||
|
||||
.contact {
|
||||
width: 272px; /* Same width as two normal results + spacing */
|
||||
height: 118px; /* Aspect ratio = 1.75. Normal US business card ratio */
|
||||
@ -782,10 +833,6 @@ StScrollBar StButton#vhandle:hover
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.contact-details-status {
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.contact-details-status-icon {
|
||||
padding-right: 4px;
|
||||
}
|
||||
@ -795,36 +842,15 @@ StScrollBar StButton#vhandle:hover
|
||||
transition-duration: 100;
|
||||
}
|
||||
|
||||
.app-well-app.running > .overview-icon {
|
||||
text-shadow: black 0px 2px 2px;
|
||||
background-image: url("running-indicator.svg");
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.contact:focus,
|
||||
.app-well-app:focus > .overview-icon,
|
||||
.search-result-content:focus > .overview-icon,
|
||||
.contact:selected,
|
||||
.app-well-app:selected > .overview-icon,
|
||||
.search-result-content:selected > .overview-icon {
|
||||
background-color: rgba(255,255,255,0.33);
|
||||
}
|
||||
|
||||
.app-well-app:hover > .overview-icon,
|
||||
.remove-favorite:hover > .overview-icon,
|
||||
.search-result-content:hover > .overview-icon {
|
||||
background-color: rgba(255,255,255,0.1);
|
||||
text-shadow: black 0px 2px 2px;
|
||||
transition-duration: 100;
|
||||
}
|
||||
|
||||
.contact:focus,
|
||||
.app-well-app:focus > .overview-icon,
|
||||
.search-result-content:focus > .overview-icon {
|
||||
border: 1px solid #cccccc;
|
||||
}
|
||||
|
||||
.app-well-menu {
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
/* LookingGlass */
|
||||
|
||||
#LookingGlassDialog
|
||||
@ -834,8 +860,6 @@ StScrollBar StButton#vhandle:hover
|
||||
padding: 4px;
|
||||
border: 2px solid grey;
|
||||
border-radius: 4px;
|
||||
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
#LookingGlassDialog > #Toolbar
|
||||
@ -875,14 +899,8 @@ StScrollBar StButton#vhandle:hover
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.lg-dialog StLabel
|
||||
{
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.lg-dialog StEntry
|
||||
{
|
||||
color: #ffffff;
|
||||
selection-background-color: #bbbbbb;
|
||||
selected-color: #333333;
|
||||
}
|
||||
@ -959,7 +977,6 @@ StScrollBar StButton#vhandle:hover
|
||||
border: 2px solid grey;
|
||||
border-radius: 4px;
|
||||
padding: 6px;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/* Calendar popup */
|
||||
@ -1038,7 +1055,6 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
.datemenu-date-label {
|
||||
padding: .4em 1.75em;
|
||||
font-size: 10.5pt;
|
||||
color: #cccccc;
|
||||
font-weight: bold;
|
||||
}
|
||||
@ -1185,11 +1201,9 @@ StScrollBar StButton#vhandle:hover
|
||||
background-gradient-start: rgba(0,0,0,0.01);
|
||||
background-gradient-end: rgba(0,0,0,0.82);
|
||||
height: 36px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#notification {
|
||||
font-size: 11pt;
|
||||
border-radius: 10px 10px 0px 0px;
|
||||
background: rgba(0,0,0,0.8);
|
||||
padding: 8px 8px 4px 8px;
|
||||
@ -1227,7 +1241,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.summary-boxpointer #summary-right-click-menu {
|
||||
font-size: 10.5pt;
|
||||
padding-top: 12px;
|
||||
padding-bottom: 12px;
|
||||
}
|
||||
@ -1277,7 +1290,6 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
.notification-button {
|
||||
border-radius: 18px;
|
||||
font-size: 11pt;
|
||||
padding: 4px 42px 5px;
|
||||
}
|
||||
|
||||
@ -1307,7 +1319,6 @@ StScrollBar StButton#vhandle:hover
|
||||
.hotplug-notification-item {
|
||||
padding: 2px 10px;
|
||||
border-radius: 18px;
|
||||
font-size: 10.5pt;
|
||||
}
|
||||
|
||||
.hotplug-notification-item:focus {
|
||||
@ -1450,7 +1461,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.summary-source-button {
|
||||
color: #fff;
|
||||
text-shadow: black 0px 2px 2px;
|
||||
}
|
||||
|
||||
@ -1503,8 +1513,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.source-title {
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
padding-left: 4px;
|
||||
}
|
||||
|
||||
@ -1524,9 +1532,6 @@ StScrollBar StButton#vhandle:hover
|
||||
border: 1px solid rgba(128,128,128,0.40);
|
||||
border-radius: 24px;
|
||||
padding: 20px;
|
||||
|
||||
font-size: 9pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.switcher-list-item-container {
|
||||
@ -1646,12 +1651,20 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
/* Modal Dialogs */
|
||||
|
||||
/* Dialog Subject Text Style */
|
||||
.show-processes-dialog-subject,
|
||||
.mount-question-dialog-subject,
|
||||
.end-session-dialog-subject {
|
||||
font-size: 14pt;
|
||||
font-weight: bold;
|
||||
color: #999999;
|
||||
}
|
||||
|
||||
.modal-dialog {
|
||||
font-size: 12pt;
|
||||
border-radius: 24px;
|
||||
background-color: rgba(0.0, 0.0, 0.0, 0.9);
|
||||
border: 2px solid #868686;
|
||||
color: #babdb6;
|
||||
|
||||
padding-right: 42px;
|
||||
padding-left: 42px;
|
||||
@ -1661,12 +1674,11 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
.modal-dialog-button-box {
|
||||
spacing: 21px;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.modal-dialog-button {
|
||||
border-radius: 18px;
|
||||
font-size: 11pt;
|
||||
color: white;
|
||||
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
@ -1682,15 +1694,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
/* Run Dialog */
|
||||
.run-dialog-label {
|
||||
font-size: 9pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.run-dialog-error-label {
|
||||
font-size: 9pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.run-dialog-error-box {
|
||||
padding-top: 15px;
|
||||
@ -1698,10 +1701,8 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.run-dialog-entry {
|
||||
font-size: 10.5pt;
|
||||
font-weight: bold;
|
||||
width: 23em;
|
||||
color: white;
|
||||
selection-background-color: white;
|
||||
selected-color: black;
|
||||
}
|
||||
@ -1729,12 +1730,8 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.end-session-dialog-subject {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
padding-top: 10px;
|
||||
padding-left: 17px;
|
||||
padding-bottom: 30px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
.end-session-dialog-subject:rtl {
|
||||
@ -1743,8 +1740,6 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.end-session-dialog-description {
|
||||
font-size: 10pt;
|
||||
color: white;
|
||||
padding-left: 17px;
|
||||
width: 28em;
|
||||
}
|
||||
@ -1761,6 +1756,7 @@ StScrollBar StButton#vhandle:hover
|
||||
}
|
||||
|
||||
.end-session-dialog-shutdown-icon {
|
||||
color: #bebebe;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
@ -1827,9 +1823,6 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
.show-processes-dialog-subject,
|
||||
.mount-question-dialog-subject {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
color: #666666;
|
||||
padding-top: 10px;
|
||||
padding-left: 17px;
|
||||
padding-bottom: 6px;
|
||||
@ -1847,8 +1840,6 @@ StScrollBar StButton#vhandle:hover
|
||||
|
||||
.show-processes-dialog-description,
|
||||
.mount-question-dialog-description {
|
||||
font-size: 10pt;
|
||||
color: white;
|
||||
padding-left: 17px;
|
||||
width: 28em;
|
||||
}
|
||||
@ -1920,11 +1911,6 @@ StScrollBar StButton#vhandle:hover
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
.prompt-dialog-description {
|
||||
font-size: 10pt;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.prompt-dialog-password-label:ltr {
|
||||
padding-right: 0.5em;
|
||||
}
|
||||
@ -1993,6 +1979,10 @@ StScrollBar StButton#vhandle:hover
|
||||
spacing-rows: 15px;
|
||||
}
|
||||
|
||||
.keyring-dialog-control-table {
|
||||
spacing-rows: 15px;
|
||||
}
|
||||
|
||||
/* Magnifier */
|
||||
|
||||
.magnifier-zoom-region {
|
||||
|
@ -9,7 +9,7 @@
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
width="65"
|
||||
height="22"
|
||||
id="svg3273"
|
||||
version="1.1"
|
||||
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
@ -9,7 +9,7 @@
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="64"
|
||||
width="65"
|
||||
height="22"
|
||||
id="svg3012"
|
||||
version="1.1"
|
||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
@ -20,7 +20,6 @@
|
||||
<title>Abstract classes and Interfaces</title>
|
||||
<xi:include href="xml/st-widget.xml"/>
|
||||
<xi:include href="xml/st-widget-accessible.xml"/>
|
||||
<xi:include href="xml/st-container.xml"/>
|
||||
<xi:include href="xml/st-scrollable.xml"/>
|
||||
</chapter>
|
||||
<chapter id="widgets">
|
||||
@ -35,7 +34,6 @@
|
||||
<title>Containers</title>
|
||||
<xi:include href="xml/st-bin.xml"/>
|
||||
<xi:include href="xml/st-box-layout.xml"/>
|
||||
<xi:include href="xml/st-group.xml"/>
|
||||
<xi:include href="xml/st-scroll-view.xml"/>
|
||||
<xi:include href="xml/st-table.xml"/>
|
||||
</chapter>
|
||||
|
@ -66,4 +66,11 @@ its dependencies to build from tarballs.</description>
|
||||
<gnome:userid>marinaz</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
<maintainer>
|
||||
<foaf:Person>
|
||||
<foaf:name>Florian Müllner</foaf:name>
|
||||
<foaf:mbox rdf:resource="mailto:fmuellner@gnome.org" />
|
||||
<gnome:userid>fmuellner</gnome:userid>
|
||||
</foaf:Person>
|
||||
</maintainer>
|
||||
</Project>
|
||||
|
@ -56,6 +56,7 @@ nobase_dist_js_DATA = \
|
||||
ui/flashspot.js \
|
||||
ui/iconGrid.js \
|
||||
ui/keyboard.js \
|
||||
ui/keyringPrompt.js \
|
||||
ui/layout.js \
|
||||
ui/lightbox.js \
|
||||
ui/link.js \
|
||||
|
@ -11,10 +11,17 @@ const FprintManagerIface = <interface name='net.reactivated.Fprint.Manager'>
|
||||
</method>
|
||||
</interface>;
|
||||
|
||||
const FprintManagerProxy = Gio.DBusProxy.makeProxyWrapper(FprintManagerIface);
|
||||
const FprintManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(FprintManagerIface);
|
||||
|
||||
function FprintManager() {
|
||||
return new FprintManagerProxy(Gio.DBus.system,
|
||||
'net.reactivated.Fprint',
|
||||
'/net/reactivated/Fprint/Manager');
|
||||
};
|
||||
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.system,
|
||||
g_interface_name: FprintManagerInfo.name,
|
||||
g_interface_info: FprintManagerInfo,
|
||||
g_name: 'net.reactivated.Fprint',
|
||||
g_object_path: '/net/reactivated/Fprint/Manager',
|
||||
g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
|
||||
Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
|
||||
|
||||
self.init(null);
|
||||
return self;
|
||||
}
|
||||
|
@ -488,6 +488,9 @@ const UserList = new Lang.Class({
|
||||
if (user.is_system_account())
|
||||
return;
|
||||
|
||||
if (user.locked)
|
||||
return;
|
||||
|
||||
let userName = user.get_user_name();
|
||||
|
||||
if (!userName)
|
||||
|
@ -33,10 +33,13 @@ const PowerMenuButton = new Lang.Class({
|
||||
|
||||
_init: function() {
|
||||
this.parent('system-shutdown', null);
|
||||
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
||||
this._systemdLoginManager = new Systemd.SystemdLoginManager();
|
||||
this._upClient = new UPowerGlib.Client();
|
||||
|
||||
if (Systemd.haveSystemd())
|
||||
this._systemdLoginManager = new Systemd.SystemdLoginManager();
|
||||
else
|
||||
this._consoleKitManager = new ConsoleKit.ConsoleKitManager();
|
||||
|
||||
this._createSubMenu();
|
||||
|
||||
this._upClient.connect('notify::can-suspend',
|
||||
|
@ -184,11 +184,11 @@ function scanExtensionsInDirectory(callback, dir, type) {
|
||||
|
||||
function scanExtensions(callback) {
|
||||
let systemDataDirs = GLib.get_system_data_dirs();
|
||||
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
|
||||
for (let i = 0; i < systemDataDirs.length; i++) {
|
||||
let dirPath = GLib.build_filenamev([systemDataDirs[i], 'gnome-shell', 'extensions']);
|
||||
let dir = Gio.file_new_for_path(dirPath);
|
||||
if (dir.query_exists(null))
|
||||
scanExtensionsInDirectory(callback, dir, ExtensionType.SYSTEM);
|
||||
}
|
||||
scanExtensionsInDirectory(callback, userExtensionsDir, ExtensionType.PER_USER);
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const ShellJS = imports.gi.ShellJS;
|
||||
|
||||
/*
|
||||
* This function is intended to extend the String object and provide
|
||||
* an String.format API for string formatting.
|
||||
@ -17,11 +19,16 @@ function format() {
|
||||
let i = 0;
|
||||
let args = arguments;
|
||||
|
||||
return str.replace(/%([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, widthGroup, precisionGroup, genericGroup) {
|
||||
return str.replace(/%(I+)?([0-9]+)?(?:\.([0-9]+))?(.)/g, function (str, flagsGroup, widthGroup, precisionGroup, genericGroup) {
|
||||
|
||||
if (precisionGroup != '' && genericGroup != 'f')
|
||||
throw new Error("Precision can only be specified for 'f'");
|
||||
|
||||
let hasAlternativeIntFlag = (flagsGroup.indexOf('I') != -1);
|
||||
|
||||
if (hasAlternativeIntFlag && genericGroup != 'd')
|
||||
throw new Error("Alternative output digits can only be specfied for 'd'");
|
||||
|
||||
let fillChar = (widthGroup[0] == '0') ? '0' : ' ';
|
||||
let width = parseInt(widthGroup, 10) || 0;
|
||||
|
||||
@ -41,7 +48,11 @@ function format() {
|
||||
s = args[i++].toString();
|
||||
break;
|
||||
case 'd':
|
||||
s = parseInt(args[i++]).toString();
|
||||
let intV = parseInt(args[i++]);
|
||||
if (hasAlternativeIntFlag)
|
||||
s = ShellJS.format_int_alternative_output(intV);
|
||||
else
|
||||
s = intV.toString();
|
||||
break;
|
||||
case 'x':
|
||||
s = parseInt(args[i++]).toString(16);
|
||||
|
@ -31,12 +31,12 @@ function Presence(initCallback, cancellable) {
|
||||
// change at runtime (changes always come in the form
|
||||
// of new inhibitors)
|
||||
const InhibitorIface = <interface name="org.gnome.SessionManager.Inhibitor">
|
||||
<property name="app_id" type="s" access="read" />
|
||||
<property name="client_id" type="s" access="read" />
|
||||
<property name="reason" type="s" access="read" />
|
||||
<property name="flags" type="u" access="read" />
|
||||
<property name="toplevel_xid" type="u" access="read" />
|
||||
<property name="cookie" type="u" access="read" />
|
||||
<method name="GetAppId">
|
||||
<arg type="s" direction="out" />
|
||||
</method>
|
||||
<method name="GetReason">
|
||||
<arg type="s" direction="out" />
|
||||
</method>
|
||||
</interface>;
|
||||
|
||||
var InhibitorProxy = Gio.DBusProxy.makeProxyWrapper(InhibitorIface);
|
||||
|
140
js/ui/altTab.js
140
js/ui/altTab.js
@ -2,12 +2,14 @@
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gdk = imports.gi.Gdk;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
@ -125,7 +127,7 @@ const AltTabPopup = new Lang.Class({
|
||||
if (childBox.x2 > primary.x + primary.width - rightPadding)
|
||||
childBox.x2 = primary.x + primary.width - rightPadding;
|
||||
childBox.y1 = this._appSwitcher.actor.allocation.y2 + spacing;
|
||||
this._thumbnails.addClones(primary.height - bottomPadding - childBox.y1);
|
||||
this._thumbnails.addClones(primary.y + primary.height - bottomPadding - childBox.y1);
|
||||
let [childMinHeight, childNaturalHeight] = this._thumbnails.actor.get_preferred_height(-1);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._thumbnails.actor.allocate(childBox, flags);
|
||||
@ -139,7 +141,7 @@ const AltTabPopup = new Lang.Class({
|
||||
|
||||
let screen = global.screen;
|
||||
let display = screen.get_display();
|
||||
let windows = display.get_tab_list(Meta.TabList.NORMAL, screen,
|
||||
let windows = display.get_tab_list(Meta.TabList.NORMAL_ALL, screen,
|
||||
screen.get_active_workspace());
|
||||
|
||||
// windows is only the windows on the current workspace. For
|
||||
@ -264,7 +266,7 @@ const AltTabPopup = new Lang.Class({
|
||||
|
||||
_keyPressEvent : function(actor, event) {
|
||||
let keysym = event.get_key_symbol();
|
||||
let event_state = Shell.get_event_state(event);
|
||||
let event_state = event.get_state();
|
||||
let backwards = event_state & Clutter.ModifierType.SHIFT_MASK;
|
||||
let action = global.display.get_keybinding_action(event.get_key_code(), event_state);
|
||||
|
||||
@ -517,6 +519,7 @@ const AltTabPopup = new Lang.Class({
|
||||
})
|
||||
});
|
||||
this._thumbnails = null;
|
||||
this._appSwitcher._items[this._currentApp].remove_accessible_state (Atk.StateType.EXPANDED);
|
||||
},
|
||||
|
||||
_createThumbnails : function() {
|
||||
@ -537,6 +540,8 @@ const AltTabPopup = new Lang.Class({
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; })
|
||||
});
|
||||
|
||||
this._appSwitcher._items[this._currentApp].add_accessible_state (Atk.StateType.EXPANDED);
|
||||
}
|
||||
});
|
||||
|
||||
@ -561,14 +566,14 @@ const SwitcherList = new Lang.Class({
|
||||
this._list.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this._list.connect('allocate', Lang.bind(this, this._allocate));
|
||||
|
||||
this._clipBin = new St.Bin({style_class: 'cbin'});
|
||||
this._clipBin.child = this._list;
|
||||
this.actor.add_actor(this._clipBin);
|
||||
this._scrollView = new St.ScrollView({ style_class: 'hfade',
|
||||
enable_mouse_scrolling: false });
|
||||
this._scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.NEVER);
|
||||
|
||||
this._leftGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-left', vertical: true});
|
||||
this._rightGradient = new St.BoxLayout({style_class: 'thumbnail-scroll-gradient-right', vertical: true});
|
||||
this.actor.add_actor(this._leftGradient);
|
||||
this.actor.add_actor(this._rightGradient);
|
||||
let scrollBox = new St.BoxLayout();
|
||||
scrollBox.add_actor(this._list);
|
||||
this._scrollView.add_actor(scrollBox);
|
||||
this.actor.add_actor(this._scrollView);
|
||||
|
||||
// Those arrows indicate whether scrolling in one direction is possible
|
||||
this._leftArrow = new St.DrawingArea({ style_class: 'switcher-arrow',
|
||||
@ -599,21 +604,9 @@ const SwitcherList = new Lang.Class({
|
||||
let childBox = new Clutter.ActorBox();
|
||||
let scrollable = this._minSize > box.x2 - box.x1;
|
||||
|
||||
this._clipBin.allocate(box, flags);
|
||||
|
||||
childBox.x1 = 0;
|
||||
childBox.y1 = 0;
|
||||
childBox.x2 = this._leftGradient.width;
|
||||
childBox.y2 = this.actor.height;
|
||||
this._leftGradient.allocate(childBox, flags);
|
||||
this._leftGradient.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
|
||||
|
||||
childBox.x1 = (this.actor.allocation.x2 - this.actor.allocation.x1) - this._rightGradient.width;
|
||||
childBox.y1 = 0;
|
||||
childBox.x2 = childBox.x1 + this._rightGradient.width;
|
||||
childBox.y2 = this.actor.height;
|
||||
this._rightGradient.allocate(childBox, flags);
|
||||
this._rightGradient.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
|
||||
box.y1 -= this.actor.get_theme_node().get_padding(St.Side.TOP);
|
||||
box.y2 += this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||
this._scrollView.allocate(box, flags);
|
||||
|
||||
let arrowWidth = Math.floor(leftPadding / 3);
|
||||
let arrowHeight = arrowWidth * 2;
|
||||
@ -622,7 +615,7 @@ const SwitcherList = new Lang.Class({
|
||||
childBox.x2 = childBox.x1 + arrowWidth;
|
||||
childBox.y2 = childBox.y1 + arrowHeight;
|
||||
this._leftArrow.allocate(childBox, flags);
|
||||
this._leftArrow.opacity = this._leftGradient.opacity;
|
||||
this._leftArrow.opacity = (this._scrollableLeft && scrollable) ? 255 : 0;
|
||||
|
||||
arrowWidth = Math.floor(rightPadding / 3);
|
||||
arrowHeight = arrowWidth * 2;
|
||||
@ -631,7 +624,7 @@ const SwitcherList = new Lang.Class({
|
||||
childBox.x2 = childBox.x1 + arrowWidth;
|
||||
childBox.y2 = childBox.y1 + arrowHeight;
|
||||
this._rightArrow.allocate(childBox, flags);
|
||||
this._rightArrow.opacity = this._rightGradient.opacity;
|
||||
this._rightArrow.opacity = (this._scrollableRight && scrollable) ? 255 : 0;
|
||||
},
|
||||
|
||||
addItem : function(item, label) {
|
||||
@ -648,6 +641,8 @@ const SwitcherList = new Lang.Class({
|
||||
bbox.label_actor = label;
|
||||
|
||||
this._items.push(bbox);
|
||||
|
||||
return bbox;
|
||||
},
|
||||
|
||||
_onItemClicked: function (index) {
|
||||
@ -679,47 +674,66 @@ const SwitcherList = new Lang.Class({
|
||||
this._items[this._highlighted].add_style_pseudo_class('selected');
|
||||
}
|
||||
|
||||
let adjustment = this._scrollView.hscroll.adjustment;
|
||||
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||
let [absItemX, absItemY] = this._items[index].get_transformed_position();
|
||||
let [result, posX, posY] = this.actor.transform_stage_point(absItemX, 0);
|
||||
let [containerWidth, containerHeight] = this.actor.get_transformed_size();
|
||||
if (posX + this._items[index].get_width() > containerWidth)
|
||||
this._scrollToRight();
|
||||
else if (posX < 0)
|
||||
else if (this._items[index].allocation.x1 - value < 0)
|
||||
this._scrollToLeft();
|
||||
|
||||
},
|
||||
|
||||
_scrollToLeft : function() {
|
||||
let x = this._items[this._highlighted].allocation.x1;
|
||||
let adjustment = this._scrollView.hscroll.adjustment;
|
||||
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||
|
||||
let item = this._items[this._highlighted];
|
||||
|
||||
if (item.allocation.x1 < value)
|
||||
value = Math.min(0, item.allocation.x1);
|
||||
else if (item.allocation.x2 > value + pageSize)
|
||||
value = Math.max(upper, item.allocation.x2 - pageSize);
|
||||
|
||||
this._scrollableRight = true;
|
||||
Tweener.addTween(this._list, { anchor_x: x,
|
||||
time: POPUP_SCROLL_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function () {
|
||||
if (this._highlighted == 0) {
|
||||
this._scrollableLeft = false;
|
||||
this.actor.queue_relayout();
|
||||
}
|
||||
})
|
||||
});
|
||||
Tweener.addTween(adjustment,
|
||||
{ value: value,
|
||||
time: POPUP_SCROLL_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function () {
|
||||
if (this._highlighted == 0) {
|
||||
this._scrollableLeft = false;
|
||||
this.actor.queue_relayout();
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
_scrollToRight : function() {
|
||||
let adjustment = this._scrollView.hscroll.adjustment;
|
||||
let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values();
|
||||
|
||||
let item = this._items[this._highlighted];
|
||||
|
||||
if (item.allocation.x1 < value)
|
||||
value = Math.max(0, item.allocation.x1);
|
||||
else if (item.allocation.x2 > value + pageSize)
|
||||
value = Math.min(upper, item.allocation.x2 - pageSize);
|
||||
|
||||
this._scrollableLeft = true;
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
let padding = this.actor.get_theme_node().get_horizontal_padding();
|
||||
let parentPadding = this.actor.get_parent().get_theme_node().get_horizontal_padding();
|
||||
let x = this._items[this._highlighted].allocation.x2 - monitor.width + padding + parentPadding;
|
||||
Tweener.addTween(this._list, { anchor_x: x,
|
||||
time: POPUP_SCROLL_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function () {
|
||||
if (this._highlighted == this._items.length - 1) {
|
||||
this._scrollableRight = false;
|
||||
this.actor.queue_relayout();
|
||||
}
|
||||
})
|
||||
});
|
||||
Tweener.addTween(adjustment,
|
||||
{ value: value,
|
||||
time: POPUP_SCROLL_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function () {
|
||||
if (this._highlighted == this._items.length - 1) {
|
||||
this._scrollableRight = false;
|
||||
this.actor.queue_relayout();
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
|
||||
_itemActivated: function(n) {
|
||||
@ -805,14 +819,6 @@ const SwitcherList = new Lang.Class({
|
||||
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
let parentRightPadding = this.actor.get_parent().get_theme_node().get_padding(St.Side.RIGHT);
|
||||
if (this.actor.allocation.x2 == primary.x + primary.width - parentRightPadding) {
|
||||
if (this._squareItems)
|
||||
childWidth = childHeight;
|
||||
else {
|
||||
let [childMin, childNat] = children[0].get_preferred_width(childHeight);
|
||||
childWidth = childMin;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (this._items.indexOf(children[i]) != -1) {
|
||||
@ -838,14 +844,6 @@ const SwitcherList = new Lang.Class({
|
||||
// we don't allocate it.
|
||||
}
|
||||
}
|
||||
|
||||
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
|
||||
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
|
||||
let topPadding = this.actor.get_theme_node().get_padding(St.Side.TOP);
|
||||
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
|
||||
|
||||
// Clip the area for scrolling
|
||||
this._clipBin.set_clip(0, -topPadding, (this.actor.allocation.x2 - this.actor.allocation.x1) - leftPadding - rightPadding, this.actor.height + bottomPadding);
|
||||
}
|
||||
});
|
||||
|
||||
@ -1025,7 +1023,7 @@ const AppSwitcher = new Lang.Class({
|
||||
|
||||
_addIcon : function(appIcon) {
|
||||
this.icons.push(appIcon);
|
||||
this.addItem(appIcon.actor, appIcon.label);
|
||||
let item = this.addItem(appIcon.actor, appIcon.label);
|
||||
|
||||
let n = this._arrows.length;
|
||||
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
|
||||
@ -1035,6 +1033,8 @@ const AppSwitcher = new Lang.Class({
|
||||
|
||||
if (appIcon.cachedWindows.length == 1)
|
||||
arrow.hide();
|
||||
else
|
||||
item.add_accessible_state (Atk.StateType.EXPANDABLE);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -10,6 +10,7 @@ const Signals = imports.signals;
|
||||
const Meta = imports.gi.Meta;
|
||||
const St = imports.gi.St;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const AppFavorites = imports.ui.appFavorites;
|
||||
const DND = imports.ui.dnd;
|
||||
@ -148,7 +149,9 @@ const ViewByCategories = new Lang.Class({
|
||||
this._categories = [];
|
||||
this._apps = null;
|
||||
|
||||
this._categoryBox = new St.BoxLayout({ vertical: true, reactive: true });
|
||||
this._categoryBox = new St.BoxLayout({ vertical: true,
|
||||
reactive: true,
|
||||
accessible_role: Atk.Role.LIST });
|
||||
this._categoryScroll = new St.ScrollView({ x_fill: false,
|
||||
y_fill: false,
|
||||
style_class: 'vfade' });
|
||||
@ -214,7 +217,8 @@ const ViewByCategories = new Lang.Class({
|
||||
let button = new St.Button({ label: GLib.markup_escape_text (name, -1),
|
||||
style_class: 'app-filter',
|
||||
x_align: St.Align.START,
|
||||
can_focus: true });
|
||||
can_focus: true ,
|
||||
accessible_role: Atk.Role.LIST_ITEM });
|
||||
button.connect('clicked', Lang.bind(this, function() {
|
||||
this._selectCategory(index);
|
||||
}));
|
||||
@ -339,7 +343,7 @@ const AppSearchProvider = new Lang.Class({
|
||||
timestamp: 0 });
|
||||
|
||||
let event = Clutter.get_current_event();
|
||||
let modifiers = event ? Shell.get_event_state(event) : 0;
|
||||
let modifiers = event ? event.get_state() : 0;
|
||||
let openNewWindow = modifiers & Clutter.ModifierType.CONTROL_MASK;
|
||||
|
||||
if (openNewWindow)
|
||||
@ -584,7 +588,7 @@ const AppWellIcon = new Lang.Class({
|
||||
|
||||
_onActivate: function (event) {
|
||||
this.emit('launching');
|
||||
let modifiers = Shell.get_event_state(event);
|
||||
let modifiers = event.get_state();
|
||||
|
||||
if (this._onActivateOverride) {
|
||||
this._onActivateOverride(event);
|
||||
@ -624,7 +628,7 @@ const AppIconMenu = new Lang.Class({
|
||||
|
||||
_init: function(source) {
|
||||
let side = St.Side.LEFT;
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
side = St.Side.RIGHT;
|
||||
|
||||
this.parent(source.actor, 0.5, side);
|
||||
|
@ -129,7 +129,7 @@ const AutomountManager = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_sessionActive: function() {
|
||||
isSessionActive: function() {
|
||||
// Return whether the current session is active, using the
|
||||
// right mechanism: either systemd if available or ConsoleKit
|
||||
// as fallback.
|
||||
@ -143,7 +143,7 @@ const AutomountManager = new Lang.Class({
|
||||
_onDriveConnected: function() {
|
||||
// if we're not in the current ConsoleKit session,
|
||||
// or screensaver is active, don't play sounds
|
||||
if (!this._sessionActive())
|
||||
if (!this.isSessionActive())
|
||||
return;
|
||||
|
||||
if (this._ssProxy.screenSaverActive)
|
||||
@ -155,7 +155,7 @@ const AutomountManager = new Lang.Class({
|
||||
_onDriveDisconnected: function() {
|
||||
// if we're not in the current ConsoleKit session,
|
||||
// or screensaver is active, don't play sounds
|
||||
if (!this._sessionActive())
|
||||
if (!this.isSessionActive())
|
||||
return;
|
||||
|
||||
if (this._ssProxy.screenSaverActive)
|
||||
@ -167,7 +167,7 @@ const AutomountManager = new Lang.Class({
|
||||
_onDriveEjectButton: function(monitor, drive) {
|
||||
// TODO: this code path is not tested, as the GVfs volume monitor
|
||||
// doesn't emit this signal just yet.
|
||||
if (!this._sessionActive())
|
||||
if (!this.isSessionActive())
|
||||
return;
|
||||
|
||||
// we force stop/eject in this case, so we don't have to pass a
|
||||
@ -206,7 +206,7 @@ const AutomountManager = new Lang.Class({
|
||||
if (params.checkSession) {
|
||||
// if we're not in the current ConsoleKit session,
|
||||
// don't attempt automount
|
||||
if (!this._sessionActive())
|
||||
if (!this.isSessionActive())
|
||||
return;
|
||||
|
||||
if (this._ssProxy.screenSaverActive) {
|
||||
|
@ -174,7 +174,7 @@ const AutorunManager = new Lang.Class({
|
||||
_onMountAdded: function(monitor, mount) {
|
||||
// don't do anything if our session is not the currently
|
||||
// active one
|
||||
if (!Main.automountManager.ckListener.sessionActive)
|
||||
if (!Main.automountManager.isSessionActive())
|
||||
return;
|
||||
|
||||
let discoverer = new ContentTypeDiscoverer(Lang.bind (this,
|
||||
|
@ -45,6 +45,21 @@ const BoxPointer = new Lang.Class({
|
||||
this._xPosition = 0;
|
||||
this._yPosition = 0;
|
||||
this._sourceAlignment = 0.5;
|
||||
this._capturedEventId = 0;
|
||||
this._muteInput();
|
||||
},
|
||||
|
||||
_muteInput: function() {
|
||||
if (this._capturedEventId == 0)
|
||||
this._capturedEventId = this.actor.connect('captured-event',
|
||||
function() { return true; });
|
||||
},
|
||||
|
||||
_unmuteInput: function() {
|
||||
if (this._capturedEventId != 0) {
|
||||
this.actor.disconnect(this._capturedEventId);
|
||||
this._capturedEventId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
show: function(animate, onComplete) {
|
||||
@ -75,7 +90,11 @@ const BoxPointer = new Lang.Class({
|
||||
xOffset: 0,
|
||||
yOffset: 0,
|
||||
transition: 'linear',
|
||||
onComplete: onComplete,
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this._unmuteInput();
|
||||
if (onComplete)
|
||||
onComplete();
|
||||
}),
|
||||
time: POPUP_ANIMATION_TIME });
|
||||
},
|
||||
|
||||
@ -102,6 +121,8 @@ const BoxPointer = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
this._muteInput();
|
||||
|
||||
Tweener.addTween(this, { opacity: 0,
|
||||
xOffset: xOffset,
|
||||
yOffset: yOffset,
|
||||
|
@ -42,6 +42,12 @@ const CheckBoxContainer = new Lang.Class({
|
||||
},
|
||||
|
||||
_getPreferredHeight: function(actor, forWidth, alloc) {
|
||||
/* FIXME: StBoxlayout currently does not handle
|
||||
height-for-width children correctly, so hard-code
|
||||
two lines for the label until that problem is fixed.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=672543 */
|
||||
/*
|
||||
let [minBoxHeight, natBoxHeight] =
|
||||
this._box.get_preferred_height(forWidth);
|
||||
let [minLabelHeight, natLabelHeight] =
|
||||
@ -49,6 +55,14 @@ const CheckBoxContainer = new Lang.Class({
|
||||
|
||||
alloc.min_size = Math.max(minBoxHeight, minLabelHeight);
|
||||
alloc.natural_size = Math.max(natBoxHeight, natLabelHeight);
|
||||
*/
|
||||
let [minBoxHeight, natBoxHeight] =
|
||||
this._box.get_preferred_height(-1);
|
||||
let [minLabelHeight, natLabelHeight] =
|
||||
this.label.get_preferred_height(-1);
|
||||
|
||||
alloc.min_size = Math.max(minBoxHeight, 2 * minLabelHeight);
|
||||
alloc.natural_size = Math.max(natBoxHeight, 2 * natLabelHeight);
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
@ -93,5 +107,9 @@ const CheckBox = new Lang.Class({
|
||||
|
||||
setLabel: function(label) {
|
||||
this._container.label.set_text(label);
|
||||
},
|
||||
|
||||
getLabelActor: function() {
|
||||
return this._container.label;
|
||||
}
|
||||
});
|
||||
|
@ -5,6 +5,7 @@ const Lang = imports.lang;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Util = imports.misc.util;
|
||||
const IconGrid = imports.ui.iconGrid;
|
||||
@ -29,7 +30,9 @@ const Contact = new Lang.Class({
|
||||
|
||||
this.actor = new St.Bin({ style_class: 'contact',
|
||||
reactive: true,
|
||||
track_hover: true });
|
||||
can_focus: true,
|
||||
track_hover: true,
|
||||
accessible_role: Atk.Role.PUSH_BUTTON });
|
||||
|
||||
let content = new St.BoxLayout( { style_class: 'contact-content',
|
||||
vertical: false });
|
||||
@ -68,6 +71,8 @@ const Contact = new Lang.Class({
|
||||
x_align: St.Align.START,
|
||||
y_align: St.Align.START });
|
||||
|
||||
this.actor.label_actor = aliasLabel;
|
||||
|
||||
let presence = this._createPresence(this.individual.presence_type);
|
||||
details.add(presence, { x_fill: false,
|
||||
y_fill: true,
|
||||
|
@ -233,7 +233,7 @@ const CtrlAltTabPopup = new Lang.Class({
|
||||
|
||||
_keyPressEvent : function(actor, event) {
|
||||
let keysym = event.get_key_symbol();
|
||||
let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK);
|
||||
let shift = (event.get_state() & Clutter.ModifierType.SHIFT_MASK);
|
||||
if (shift && keysym == Clutter.KEY_Tab)
|
||||
keysym = Clutter.ISO_Left_Tab;
|
||||
|
||||
|
@ -36,7 +36,7 @@ const DashItemContainer = new Lang.Class({
|
||||
Lang.bind(this, this._allocate));
|
||||
this.actor._delegate = this;
|
||||
|
||||
this._label = null;
|
||||
this.label = null;
|
||||
|
||||
this.child = null;
|
||||
this._childScale = 1;
|
||||
@ -91,32 +91,32 @@ const DashItemContainer = new Lang.Class({
|
||||
},
|
||||
|
||||
showLabel: function() {
|
||||
if (this._label == null)
|
||||
if (this.label == null)
|
||||
return;
|
||||
|
||||
this._label.opacity = 0;
|
||||
this._label.show();
|
||||
this.label.opacity = 0;
|
||||
this.label.show();
|
||||
|
||||
let [stageX, stageY] = this.actor.get_transformed_position();
|
||||
|
||||
let itemHeight = this.actor.allocation.y2 - this.actor.allocation.y1;
|
||||
|
||||
let labelHeight = this._label.get_height();
|
||||
let labelHeight = this.label.get_height();
|
||||
let yOffset = Math.floor((itemHeight - labelHeight) / 2)
|
||||
|
||||
let y = stageY + yOffset;
|
||||
|
||||
let node = this._label.get_theme_node();
|
||||
let node = this.label.get_theme_node();
|
||||
let xOffset = node.get_length('-x-offset');
|
||||
|
||||
let x;
|
||||
if (St.Widget.get_default_direction () == St.TextDirection.RTL)
|
||||
x = stageX - this._label.get_width() - xOffset;
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
x = stageX - this.label.get_width() - xOffset;
|
||||
else
|
||||
x = stageX + this.actor.get_width() + xOffset;
|
||||
|
||||
this._label.set_position(x, y);
|
||||
Tweener.addTween(this._label,
|
||||
this.label.set_position(x, y);
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 255,
|
||||
time: DASH_ITEM_LABEL_SHOW_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
@ -124,22 +124,22 @@ const DashItemContainer = new Lang.Class({
|
||||
},
|
||||
|
||||
setLabelText: function(text) {
|
||||
if (this._label == null)
|
||||
this._label = new St.Label({ style_class: 'dash-label'});
|
||||
if (this.label == null)
|
||||
this.label = new St.Label({ style_class: 'dash-label'});
|
||||
|
||||
this._label.set_text(text);
|
||||
Main.layoutManager.addChrome(this._label);
|
||||
this._label.hide();
|
||||
this.label.set_text(text);
|
||||
Main.layoutManager.addChrome(this.label);
|
||||
this.label.hide();
|
||||
},
|
||||
|
||||
hideLabel: function () {
|
||||
this._label.opacity = 255;
|
||||
Tweener.addTween(this._label,
|
||||
this.label.opacity = 255;
|
||||
Tweener.addTween(this.label,
|
||||
{ opacity: 0,
|
||||
time: DASH_ITEM_LABEL_HIDE_TIME,
|
||||
transition: 'easeOutQuad',
|
||||
onComplete: Lang.bind(this, function() {
|
||||
this._label.hide();
|
||||
this.label.hide();
|
||||
})
|
||||
});
|
||||
},
|
||||
@ -387,6 +387,7 @@ const Dash = new Lang.Class({
|
||||
let srcIsFavorite = (id in favorites);
|
||||
|
||||
if (srcIsFavorite &&
|
||||
app.get_state() != Shell.AppState.RUNNING &&
|
||||
dragEvent.source.actor &&
|
||||
this.actor.contains (dragEvent.source.actor) &&
|
||||
this._favRemoveTarget == null) {
|
||||
@ -439,6 +440,9 @@ const Dash = new Lang.Class({
|
||||
item.setChild(display.actor);
|
||||
|
||||
item.setLabelText(app.get_name());
|
||||
// Override default AppWellIcon label_actor
|
||||
display.actor.label_actor = item.label;
|
||||
|
||||
|
||||
display.icon.setIconSize(this.iconSize);
|
||||
display.actor.connect('notify::hover',
|
||||
@ -743,20 +747,10 @@ const Dash = new Lang.Class({
|
||||
numChildren--;
|
||||
}
|
||||
|
||||
let pos = Math.round(y * numChildren / boxHeight);
|
||||
let pos = Math.floor(y * numChildren / boxHeight);
|
||||
|
||||
if (pos != this._dragPlaceholderPos && pos <= numFavorites) {
|
||||
if (this._animatingPlaceholdersCount > 0) {
|
||||
let appChildren = children.filter(function(actor) {
|
||||
return actor._delegate &&
|
||||
actor._delegate.child &&
|
||||
actor._delegate.child._delegate &&
|
||||
actor._delegate.child._delegate.app;
|
||||
});
|
||||
this._dragPlaceholderPos = children.indexOf(appChildren[pos]);
|
||||
} else {
|
||||
this._dragPlaceholderPos = pos;
|
||||
}
|
||||
if (pos != this._dragPlaceholderPos && pos <= numFavorites && this._animatingPlaceholdersCount == 0) {
|
||||
this._dragPlaceholderPos = pos;
|
||||
|
||||
// Don't allow positioning before or after self
|
||||
if (favPos != -1 && (pos == favPos || pos == favPos + 1)) {
|
||||
@ -793,6 +787,14 @@ const Dash = new Lang.Class({
|
||||
this._dragPlaceholder.animateIn();
|
||||
}
|
||||
|
||||
// Remove the drag placeholder if we are not in the
|
||||
// "favorites zone"
|
||||
if (pos > numFavorites && this._dragPlaceholder) {
|
||||
this._clearDragPlaceholder();
|
||||
}
|
||||
if (!this._dragPlaceholder)
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
let srcIsFavorite = (favPos != -1);
|
||||
|
||||
if (srcIsFavorite)
|
||||
@ -835,6 +837,11 @@ const Dash = new Lang.Class({
|
||||
favPos++;
|
||||
}
|
||||
|
||||
// No drag placeholder means we don't wan't to favorite the app
|
||||
// and we are dragging it to its original position
|
||||
if (!this._dragPlaceholder)
|
||||
return true;
|
||||
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
|
||||
function () {
|
||||
let appFavorites = AppFavorites.getAppFavorites();
|
||||
|
@ -8,6 +8,7 @@ const Cairo = imports.cairo;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Params = imports.misc.params;
|
||||
const Util = imports.misc.util;
|
||||
@ -52,10 +53,15 @@ const DateMenuButton = new Lang.Class({
|
||||
let vbox;
|
||||
|
||||
let menuAlignment = 0.25;
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
menuAlignment = 1.0 - menuAlignment;
|
||||
this.parent(menuAlignment);
|
||||
|
||||
// At this moment calendar menu is not keyboard navigable at
|
||||
// all (so not accessible), so it doesn't make sense to set as
|
||||
// role ATK_ROLE_MENU like other elements of the panel.
|
||||
this.actor.accessible_role = Atk.Role.LABEL;
|
||||
|
||||
this._clock = new St.Label();
|
||||
this.actor.add_actor(this._clock);
|
||||
|
||||
|
24
js/ui/dnd.js
24
js/ui/dnd.js
@ -120,13 +120,7 @@ const _Draggable = new Lang.Class({
|
||||
return false;
|
||||
|
||||
this._buttonDown = true;
|
||||
// special case St.Button: grabbing the pointer would mess up the
|
||||
// internal state, so we start the drag manually on hover change
|
||||
if (this.actor instanceof St.Button)
|
||||
this.actor.connect('notify::hover',
|
||||
Lang.bind(this, this._onButtonHoverChanged));
|
||||
else
|
||||
this._grabActor();
|
||||
this._grabActor();
|
||||
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
this._dragStartX = stageX;
|
||||
@ -135,15 +129,6 @@ const _Draggable = new Lang.Class({
|
||||
return false;
|
||||
},
|
||||
|
||||
_onButtonHoverChanged: function(button) {
|
||||
if (button.hover || !button.pressed)
|
||||
return;
|
||||
|
||||
button.fake_release();
|
||||
this.startDrag(this._dragStartX, this._dragStartY,
|
||||
global.get_current_time());
|
||||
},
|
||||
|
||||
_grabActor: function() {
|
||||
Clutter.grab_pointer(this.actor);
|
||||
this._onEventId = this.actor.connect('event',
|
||||
@ -232,6 +217,13 @@ const _Draggable = new Lang.Class({
|
||||
currentDraggable = this;
|
||||
this._dragInProgress = true;
|
||||
|
||||
// Special-case St.Button: the pointer grab messes with the internal
|
||||
// state, so force a reset to a reasonable state here
|
||||
if (this.actor instanceof St.Button) {
|
||||
this.actor.fake_release();
|
||||
this.actor.hover = false;
|
||||
}
|
||||
|
||||
this.emit('drag-begin', time);
|
||||
if (this._onEventId)
|
||||
this._ungrabActor();
|
||||
|
@ -116,30 +116,12 @@ const DialogContent = {
|
||||
};
|
||||
|
||||
function findAppFromInhibitor(inhibitor) {
|
||||
let desktopFile = inhibitor.app_id;
|
||||
let [desktopFile] = inhibitor.GetAppIdSync();
|
||||
|
||||
if (!GLib.str_has_suffix(desktopFile, '.desktop'))
|
||||
desktopFile += '.desktop';
|
||||
desktopFile += '.desktop';
|
||||
|
||||
let candidateDesktopFiles = [];
|
||||
|
||||
candidateDesktopFiles.push(desktopFile);
|
||||
candidateDesktopFiles.push('gnome-' + desktopFile);
|
||||
|
||||
let appSystem = Shell.AppSystem.get_default();
|
||||
let app = null;
|
||||
for (let i = 0; i < candidateDesktopFiles.length; i++) {
|
||||
try {
|
||||
app = appSystem.lookup_app(candidateDesktopFiles[i]);
|
||||
|
||||
if (app)
|
||||
break;
|
||||
} catch(e) {
|
||||
// ignore errors
|
||||
}
|
||||
}
|
||||
|
||||
return app;
|
||||
return Shell.AppSystem.get_default().lookup_heuristic_basename(desktopFile);
|
||||
}
|
||||
|
||||
const ListItem = new Lang.Class({
|
||||
@ -482,7 +464,8 @@ const EndSessionDialog = new Lang.Class({
|
||||
let app = findAppFromInhibitor(inhibitor);
|
||||
|
||||
if (app) {
|
||||
let item = new ListItem(app, inhibitor.reason);
|
||||
let [reason] = inhibitor.GetReasonSync();
|
||||
let item = new ListItem(app, reason);
|
||||
item.connect('activate',
|
||||
Lang.bind(this, function() {
|
||||
this.close(global.get_current_time());
|
||||
@ -505,7 +488,7 @@ const EndSessionDialog = new Lang.Class({
|
||||
this._type = type;
|
||||
|
||||
if (!(this._type in DialogContent)) {
|
||||
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
|
||||
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.TypeError',
|
||||
"Unknown dialog type requested");
|
||||
return;
|
||||
}
|
||||
@ -521,7 +504,7 @@ const EndSessionDialog = new Lang.Class({
|
||||
this._updateButtons();
|
||||
|
||||
if (!this.open(timestamp)) {
|
||||
invocation.report_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
|
||||
invocation.return_dbus_error('org.gnome.Shell.ModalDialog.GrabError',
|
||||
"Cannot grab pointer and keyboard");
|
||||
return;
|
||||
}
|
||||
|
@ -48,11 +48,6 @@ function init() {
|
||||
window.C_ = Gettext.pgettext;
|
||||
window.ngettext = Gettext.ngettext;
|
||||
|
||||
// Set the default direction for St widgets (this needs to be done before any use of St)
|
||||
if (Gtk.Widget.get_default_direction() == Gtk.TextDirection.RTL) {
|
||||
St.Widget.set_default_direction(St.TextDirection.RTL);
|
||||
}
|
||||
|
||||
// Miscellaneous monkeypatching
|
||||
_patchContainerClass(St.BoxLayout);
|
||||
_patchContainerClass(St.Table);
|
||||
@ -64,10 +59,14 @@ function init() {
|
||||
let origToString = Object.prototype.toString;
|
||||
Object.prototype.toString = function() {
|
||||
let base = origToString.call(this);
|
||||
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
||||
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
||||
else
|
||||
try {
|
||||
if ('actor' in this && this.actor instanceof Clutter.Actor)
|
||||
return base.replace(/\]$/, ' delegate for ' + this.actor.toString().substring(1));
|
||||
else
|
||||
return base;
|
||||
} catch(e) {
|
||||
return base;
|
||||
}
|
||||
};
|
||||
|
||||
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
|
||||
|
@ -103,8 +103,6 @@ function uninstallExtensionFromUUID(uuid) {
|
||||
_signals.emit('extension-state-changed', extension);
|
||||
|
||||
delete ExtensionUtils.extensions[uuid];
|
||||
delete extensionStateObjs[uuid];
|
||||
delete errors[uuid];
|
||||
|
||||
FileUtils.recursivelyDeleteDir(Gio.file_new_for_path(extension.path));
|
||||
|
||||
@ -251,7 +249,8 @@ function loadExtension(dir, type, enabled) {
|
||||
let extension;
|
||||
|
||||
if (ExtensionUtils.extensions[uuid] != undefined) {
|
||||
throw new Error('extension already loaded');
|
||||
global.logError('Extension "%s" is already loaded'.format(uuid));
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
@ -430,13 +429,11 @@ const InstallExtensionDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
_onInstallButtonPressed: function(button, event) {
|
||||
let extension = { uuid: this._uuid,
|
||||
state: ExtensionState.DOWNLOADING,
|
||||
error: '' };
|
||||
let state = { uuid: this._uuid,
|
||||
state: ExtensionState.DOWNLOADING,
|
||||
error: '' };
|
||||
|
||||
ExtensionUtils.extensions[this._uuid] = extension;
|
||||
|
||||
_signals.emit('extension-state-changed', extension);
|
||||
_signals.emit('extension-state-changed', state);
|
||||
|
||||
let params = { version_tag: this._version_tag,
|
||||
shell_version: Config.PACKAGE_VERSION,
|
||||
|
@ -146,11 +146,6 @@ const BaseIcon = new Lang.Class({
|
||||
size = found ? len : ICON_SIZE;
|
||||
}
|
||||
|
||||
// don't create icons unnecessarily
|
||||
if (size == this.iconSize &&
|
||||
this._iconBin.child)
|
||||
return;
|
||||
|
||||
this._createIconTexture(size);
|
||||
}
|
||||
});
|
||||
@ -251,7 +246,7 @@ const IconGrid = new Lang.Class({
|
||||
let childYSpacing = Math.max(0, height - childNaturalHeight) / 2;
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||
let _x = box.x2 - (x + width);
|
||||
childBox.x1 = Math.floor(_x - childXSpacing);
|
||||
} else {
|
||||
|
@ -269,6 +269,11 @@ const Keyboard = new Lang.Class({
|
||||
|
||||
this._addKeys();
|
||||
|
||||
// Keys should be layout according to the group, not the
|
||||
// locale; as Caribou already provides the expected layout,
|
||||
// this means enforcing LTR for all locales.
|
||||
this.actor.text_direction = Clutter.TextDirection.LTR;
|
||||
|
||||
this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged));
|
||||
this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
|
||||
|
||||
|
207
js/ui/keyringPrompt.js
Normal file
207
js/ui/keyringPrompt.js
Normal file
@ -0,0 +1,207 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const St = imports.gi.St;
|
||||
const Pango = imports.gi.Pango;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GObject = imports.gi.GObject;
|
||||
const Gcr = imports.gi.Gcr;
|
||||
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
const ShellEntry = imports.ui.shellEntry;
|
||||
const CheckBox = imports.ui.checkBox;
|
||||
|
||||
let prompter = null;
|
||||
|
||||
const KeyringDialog = new Lang.Class({
|
||||
Name: 'KeyringDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function() {
|
||||
this.parent({ styleClass: 'prompt-dialog' });
|
||||
|
||||
this.prompt = new Shell.KeyringPrompt();
|
||||
this.prompt.connect('show-password', Lang.bind(this, this._onShowPassword));
|
||||
this.prompt.connect('show-confirm', Lang.bind(this, this._onShowConfirm));
|
||||
this.prompt.connect('hide-prompt', Lang.bind(this, this._onHidePrompt));
|
||||
|
||||
let mainContentBox = new St.BoxLayout({ style_class: 'prompt-dialog-main-layout',
|
||||
vertical: false });
|
||||
this.contentLayout.add(mainContentBox);
|
||||
|
||||
let icon = new St.Icon({ icon_name: 'dialog-password-symbolic' });
|
||||
mainContentBox.add(icon,
|
||||
{ x_fill: true,
|
||||
y_fill: false,
|
||||
x_align: St.Align.END,
|
||||
y_align: St.Align.START });
|
||||
|
||||
this._messageBox = new St.BoxLayout({ style_class: 'prompt-dialog-message-layout',
|
||||
vertical: true });
|
||||
mainContentBox.add(this._messageBox,
|
||||
{ y_align: St.Align.START, expand: true, x_fill: true, y_fill: true });
|
||||
|
||||
let subject = new St.Label({ style_class: 'prompt-dialog-headline' });
|
||||
this.prompt.bind_property('message', subject, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
this._messageBox.add(subject,
|
||||
{ y_fill: false,
|
||||
y_align: St.Align.START });
|
||||
|
||||
let description = new St.Label({ style_class: 'prompt-dialog-description' });
|
||||
description.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
description.clutter_text.line_wrap = true;
|
||||
this.prompt.bind_property('description', description, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
this._messageBox.add(description,
|
||||
{ y_fill: true,
|
||||
y_align: St.Align.START });
|
||||
|
||||
this._controlTable = null;
|
||||
|
||||
let buttons = [{ label: '',
|
||||
action: Lang.bind(this, this._onCancelButton),
|
||||
key: Clutter.Escape
|
||||
},
|
||||
{ label: '',
|
||||
action: Lang.bind(this, this._onContinueButton)
|
||||
}]
|
||||
|
||||
this.setButtons(buttons);
|
||||
this._cancelButton = buttons[0].button;
|
||||
this._continueButton = buttons[1].button;
|
||||
|
||||
this.prompt.bind_property('cancel-label', this._cancelButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||
this.prompt.bind_property('continue-label', this._continueButton, 'label', GObject.BindingFlags.SYNC_CREATE);
|
||||
},
|
||||
|
||||
_buildControlTable: function() {
|
||||
let table = new St.Table({ style_class: 'keyring-dialog-control-table' });
|
||||
let row = 0;
|
||||
|
||||
if (this.prompt.password_visible) {
|
||||
let label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
|
||||
label.set_text(_("Password:"));
|
||||
table.add(label, { row: row, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||
this._passwordEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||
text: '',
|
||||
can_focus: true});
|
||||
this._passwordEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
|
||||
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onPasswordActivate));
|
||||
table.add(this._passwordEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
|
||||
row++;
|
||||
} else {
|
||||
this._passwordEntry = null;
|
||||
}
|
||||
|
||||
if (this.prompt.confirm_visible) {
|
||||
var label = new St.Label(({ style_class: 'prompt-dialog-password-label' }));
|
||||
label.set_text(_("Type again:"));
|
||||
table.add(label, { row: row, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||
this._confirmEntry = new St.Entry({ style_class: 'prompt-dialog-password-entry',
|
||||
text: '',
|
||||
can_focus: true});
|
||||
this._confirmEntry.clutter_text.set_password_char('\u25cf'); // ● U+25CF BLACK CIRCLE
|
||||
ShellEntry.addContextMenu(this._confirmEntry, { isPassword: true });
|
||||
this._confirmEntry.clutter_text.connect('activate', Lang.bind(this, this._onConfirmActivate));
|
||||
table.add(this._confirmEntry, { row: row, col: 1, x_expand: true, x_fill: true, x_align: St.Align.START });
|
||||
row++;
|
||||
} else {
|
||||
this._confirmEntry = null;
|
||||
}
|
||||
|
||||
this.prompt.set_password_actor(this._passwordEntry ? this._passwordEntry.clutter_text : null);
|
||||
this.prompt.set_confirm_actor(this._confirmEntry ? this._confirmEntry.clutter_text : null);
|
||||
|
||||
if (this.prompt.choice_visible) {
|
||||
let choice = new CheckBox.CheckBox();
|
||||
this.prompt.bind_property('choice-label', choice.getLabelActor(), 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
this.prompt.bind_property('choice-chosen', choice.actor, 'checked', GObject.BindingFlags.SYNC_CREATE | GObject.BindingFlags.BIDIRECTIONAL);
|
||||
table.add(choice.actor, { row: row, col: 1, x_expand: false, x_fill: true, x_align: St.Align.START });
|
||||
row++;
|
||||
}
|
||||
|
||||
let warning = new St.Label({ style_class: 'prompt-dialog-error-label' });
|
||||
warning.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
warning.clutter_text.line_wrap = true;
|
||||
table.add(warning, { row: row, col: 1, x_expand: false, x_fill: false, x_align: St.Align.START });
|
||||
this.prompt.bind_property('warning-visible', warning, 'visible', GObject.BindingFlags.SYNC_CREATE);
|
||||
this.prompt.bind_property('warning', warning, 'text', GObject.BindingFlags.SYNC_CREATE);
|
||||
|
||||
if (this._controlTable) {
|
||||
this._controlTable.destroy_all_children();
|
||||
this._controlTable.destroy();
|
||||
}
|
||||
|
||||
this._controlTable = table;
|
||||
this._messageBox.add(table, { x_fill: true, y_fill: true });
|
||||
},
|
||||
|
||||
_ensureOpen: function() {
|
||||
// NOTE: ModalDialog.open() is safe to call if the dialog is
|
||||
// already open - it just returns true without side-effects
|
||||
if (this.open())
|
||||
return true;
|
||||
|
||||
// The above fail if e.g. unable to get input grab
|
||||
//
|
||||
// In an ideal world this wouldn't happen (because the
|
||||
// Shell is in complete control of the session) but that's
|
||||
// just not how things work right now.
|
||||
|
||||
log('keyringPrompt: Failed to show modal dialog.' +
|
||||
' Dismissing prompt request');
|
||||
this.prompt.cancel()
|
||||
return false;
|
||||
},
|
||||
|
||||
_onShowPassword: function(prompt) {
|
||||
this._buildControlTable();
|
||||
this._ensureOpen();
|
||||
this._passwordEntry.grab_key_focus();
|
||||
},
|
||||
|
||||
_onShowConfirm: function(prompt) {
|
||||
this._buildControlTable();
|
||||
this._ensureOpen();
|
||||
this._continueButton.grab_key_focus();
|
||||
},
|
||||
|
||||
_onHidePrompt: function(prompt) {
|
||||
this.close();
|
||||
},
|
||||
|
||||
_onPasswordActivate: function() {
|
||||
if (this.prompt.confirm_visible)
|
||||
this._confirmEntry.grab_key_focus();
|
||||
else
|
||||
this._onContinueButton();
|
||||
},
|
||||
|
||||
_onConfirmActivate: function() {
|
||||
this._onContinueButton();
|
||||
},
|
||||
|
||||
_onContinueButton: function() {
|
||||
this.prompt.complete()
|
||||
},
|
||||
|
||||
_onCancelButton: function() {
|
||||
this.prompt.cancel()
|
||||
},
|
||||
});
|
||||
|
||||
function init() {
|
||||
prompter = new Gcr.SystemPrompter();
|
||||
prompter.connect('new-prompt', function(prompter) {
|
||||
let dialog = new KeyringDialog();
|
||||
return dialog.prompt;
|
||||
});
|
||||
|
||||
let connection = Gio.DBus.session;
|
||||
prompter.register(connection);
|
||||
Gio.bus_own_name_on_connection (connection, 'org.gnome.keyring.SystemPrompter',
|
||||
Gio.BusNameOwnerFlags.REPLACE, null, null);
|
||||
}
|
@ -22,7 +22,7 @@ const LayoutManager = new Lang.Class({
|
||||
Name: 'LayoutManager',
|
||||
|
||||
_init: function () {
|
||||
this._rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
||||
this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||
this.monitors = [];
|
||||
this.primaryMonitor = null;
|
||||
this.primaryIndex = -1;
|
||||
@ -405,7 +405,7 @@ const HotCorner = new Lang.Class({
|
||||
|
||||
this.actor.add_actor(this._corner);
|
||||
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL) {
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||
this._corner.set_position(this.actor.width - this._corner.width, 0);
|
||||
this.actor.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||
} else {
|
||||
@ -457,7 +457,7 @@ const HotCorner = new Lang.Class({
|
||||
|
||||
ripple._opacity = startOpacity;
|
||||
|
||||
if (ripple.get_direction() == St.TextDirection.RTL)
|
||||
if (ripple.get_text_direction() == Clutter.TextDirection.RTL)
|
||||
ripple.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||
|
||||
ripple.visible = true;
|
||||
|
@ -400,7 +400,14 @@ const ObjInspector = new Lang.Class({
|
||||
button.connect('clicked', Lang.bind(this, this.close));
|
||||
hbox.add(button);
|
||||
if (typeof(obj) == typeof({})) {
|
||||
let properties = [];
|
||||
for (let propName in obj) {
|
||||
properties.push(propName);
|
||||
}
|
||||
properties.sort();
|
||||
|
||||
for (let i = 0; i < properties.length; i++) {
|
||||
let propName = properties[i];
|
||||
let valueStr;
|
||||
let link;
|
||||
try {
|
||||
@ -1140,7 +1147,7 @@ const LookingGlass = new Lang.Class({
|
||||
// Handle key events which are relevant for all tabs of the LookingGlass
|
||||
_globalKeyPressEvent : function(actor, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
let modifierState = Shell.get_event_state(event);
|
||||
let modifierState = event.get_state();
|
||||
if (symbol == Clutter.Escape) {
|
||||
if (this._objInspector.actor.visible) {
|
||||
this._objInspector.close();
|
||||
|
@ -15,6 +15,7 @@ const AutorunManager = imports.ui.autorunManager;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
const EndSessionDialog = imports.ui.endSessionDialog;
|
||||
const PolkitAuthenticationAgent = imports.ui.polkitAuthenticationAgent;
|
||||
const KeyringPrompt = imports.ui.keyringPrompt;
|
||||
const Environment = imports.ui.environment;
|
||||
const ExtensionSystem = imports.ui.extensionSystem;
|
||||
const Keyboard = imports.ui.keyboard;
|
||||
@ -37,6 +38,7 @@ const XdndHandler = imports.ui.xdndHandler;
|
||||
const StatusIconDispatcher = imports.ui.statusIconDispatcher;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
const OVERRIDES_SCHEMA = 'org.gnome.shell.overrides';
|
||||
const DEFAULT_BACKGROUND_COLOR = new Clutter.Color();
|
||||
DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff);
|
||||
|
||||
@ -70,6 +72,7 @@ let _startDate;
|
||||
let _defaultCssStylesheet = null;
|
||||
let _cssStylesheet = null;
|
||||
let _gdmCssStylesheet = null;
|
||||
let _overridesSettings = null;
|
||||
|
||||
let background = null;
|
||||
|
||||
@ -110,7 +113,9 @@ function _initRecorder() {
|
||||
} else {
|
||||
// read the parameters from GSettings always in case they have changed
|
||||
recorder.set_framerate(recorderSettings.get_int('framerate'));
|
||||
recorder.set_filename('shell-%d%u-%c.' + recorderSettings.get_string('file-extension'));
|
||||
/* Translators: this is a filename used for screencast recording */
|
||||
// xgettext:no-c-format
|
||||
recorder.set_filename(_("Screencast from %d %t") + '.' + recorderSettings.get_string('file-extension'));
|
||||
let pipeline = recorderSettings.get_string('pipeline');
|
||||
|
||||
if (!pipeline.match(/^\s*$/))
|
||||
@ -166,9 +171,11 @@ function start() {
|
||||
// and recalculate application associations, so to avoid
|
||||
// races for now we initialize it here. It's better to
|
||||
// be predictable anyways.
|
||||
Shell.WindowTracker.get_default();
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
Shell.AppUsage.get_default();
|
||||
|
||||
tracker.connect('startup-sequence-changed', _queueCheckWorkspaces);
|
||||
|
||||
// The stage is always covered so Clutter doesn't need to clear it; however
|
||||
// the color is used as the default contents for the Mutter root background
|
||||
// actor so set it anyways.
|
||||
@ -187,9 +194,16 @@ function start() {
|
||||
for (let i = 0; i < children.length; i++)
|
||||
children[i].allocate_preferred_size(flags);
|
||||
});
|
||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||
coordinate: Clutter.BindCoordinate.SIZE });
|
||||
uiGroup.add_constraint(constraint);
|
||||
uiGroup.connect('get-preferred-width',
|
||||
function(actor, forHeight, alloc) {
|
||||
let width = global.stage.width;
|
||||
[alloc.min_size, alloc.natural_size] = [width, width];
|
||||
});
|
||||
uiGroup.connect('get-preferred-height',
|
||||
function(actor, forWidth, alloc) {
|
||||
let height = global.stage.height;
|
||||
[alloc.min_size, alloc.natural_size] = [height, height];
|
||||
});
|
||||
global.window_group.reparent(uiGroup);
|
||||
global.overlay_group.reparent(uiGroup);
|
||||
global.stage.add_actor(uiGroup);
|
||||
@ -230,6 +244,9 @@ function start() {
|
||||
// Attempt to become a PolicyKit authentication agent
|
||||
PolkitAuthenticationAgent.init()
|
||||
|
||||
// Become a prompter for gnome keyring
|
||||
KeyringPrompt.init();
|
||||
|
||||
_startDate = new Date();
|
||||
|
||||
global.stage.connect('captured-event', _globalKeyPressHandler);
|
||||
@ -244,6 +261,9 @@ function start() {
|
||||
Scripting.runPerfScript(module, perfOutput);
|
||||
}
|
||||
|
||||
_overridesSettings = new Gio.Settings({ schema: OVERRIDES_SCHEMA });
|
||||
_overridesSettings.connect('changed::dynamic-workspaces', _queueCheckWorkspaces);
|
||||
|
||||
global.screen.connect('notify::n-workspaces', _nWorkspacesChanged);
|
||||
|
||||
global.screen.connect('window-entered-monitor', _windowEnteredMonitor);
|
||||
@ -268,17 +288,30 @@ function _checkWorkspaces() {
|
||||
let i;
|
||||
let emptyWorkspaces = [];
|
||||
|
||||
if (!Meta.prefs_get_dynamic_workspaces()) {
|
||||
_checkWorkspacesId = 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
for (i = 0; i < _workspaces.length; i++) {
|
||||
let lastRemoved = _workspaces[i]._lastRemovedWindow;
|
||||
if (lastRemoved &&
|
||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG))
|
||||
if ((lastRemoved &&
|
||||
(lastRemoved.get_window_type() == Meta.WindowType.SPLASHSCREEN ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.DIALOG ||
|
||||
lastRemoved.get_window_type() == Meta.WindowType.MODAL_DIALOG)) ||
|
||||
_workspaces[i]._keepAliveId)
|
||||
emptyWorkspaces[i] = false;
|
||||
else
|
||||
emptyWorkspaces[i] = true;
|
||||
}
|
||||
|
||||
let sequences = Shell.WindowTracker.get_default().get_startup_sequences();
|
||||
for (i = 0; i < sequences.length; i++) {
|
||||
let index = sequences[i].get_workspace();
|
||||
if (index >= 0 && index <= global.screen.n_workspaces)
|
||||
emptyWorkspaces[index] = false;
|
||||
}
|
||||
|
||||
let windows = global.get_window_actors();
|
||||
for (i = 0; i < windows.length; i++) {
|
||||
let win = windows[i];
|
||||
@ -326,6 +359,17 @@ function _checkWorkspaces() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function keepWorkspaceAlive(workspace, duration) {
|
||||
if (workspace._keepAliveId)
|
||||
Mainloop.source_remove(workspace._keepAliveId);
|
||||
|
||||
workspace._keepAliveId = Mainloop.timeout_add(duration, function() {
|
||||
workspace._keepAliveId = 0;
|
||||
_queueCheckWorkspaces();
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
function _windowRemoved(workspace, window) {
|
||||
workspace._lastRemovedWindow = window;
|
||||
_queueCheckWorkspaces();
|
||||
@ -570,7 +614,8 @@ function _globalKeyPressHandler(actor, event) {
|
||||
|
||||
let symbol = event.get_key_symbol();
|
||||
let keyCode = event.get_key_code();
|
||||
let modifierState = Shell.get_event_state(event);
|
||||
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);
|
||||
|
@ -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 Atk = imports.gi.Atk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
@ -261,7 +262,9 @@ const FocusGrabber = new Lang.Class({
|
||||
|
||||
this._hasFocus = true;
|
||||
|
||||
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
if (!this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false))
|
||||
this.actor.grab_key_focus();
|
||||
|
||||
this.emit('focus-grabbed');
|
||||
},
|
||||
|
||||
@ -423,7 +426,7 @@ const Notification = new Lang.Class({
|
||||
this._bannerBodyText = null;
|
||||
this._bannerBodyMarkup = false;
|
||||
this._titleFitsInBannerMode = true;
|
||||
this._titleDirection = St.TextDirection.NONE;
|
||||
this._titleDirection = Clutter.TextDirection.DEFAULT;
|
||||
this._spacing = 0;
|
||||
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
|
||||
this._imageBin = null;
|
||||
@ -433,7 +436,7 @@ const Notification = new Lang.Class({
|
||||
this.destroy(reason);
|
||||
}));
|
||||
|
||||
this.actor = new St.Button();
|
||||
this.actor = new St.Button({ accessible_role: Atk.Role.NOTIFICATION });
|
||||
this.actor._delegate = this;
|
||||
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
@ -544,9 +547,9 @@ const Notification = new Lang.Class({
|
||||
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
|
||||
|
||||
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
|
||||
this._titleDirection = St.TextDirection.RTL;
|
||||
this._titleDirection = Clutter.TextDirection.RTL;
|
||||
else
|
||||
this._titleDirection = St.TextDirection.LTR;
|
||||
this._titleDirection = Clutter.TextDirection.LTR;
|
||||
|
||||
// Let the title's text direction control the overall direction
|
||||
// of the notification - in case where different scripts are used
|
||||
@ -554,7 +557,7 @@ const Notification = new Lang.Class({
|
||||
// arguably for action buttons as well. Labels other than the title
|
||||
// will be allocated at the available width, so that their alignment
|
||||
// is done correctly automatically.
|
||||
this._table.set_direction(this._titleDirection);
|
||||
this._table.set_text_direction(this._titleDirection);
|
||||
|
||||
// Unless the notification has custom content, we save this._bannerBodyText
|
||||
// to add it to the content of the notification if the notification is
|
||||
@ -574,7 +577,7 @@ const Notification = new Lang.Class({
|
||||
|
||||
if (params.body)
|
||||
this.addBody(params.body, params.bodyMarkup);
|
||||
this._updated();
|
||||
this.updated();
|
||||
},
|
||||
|
||||
setIconVisible: function(visible) {
|
||||
@ -613,7 +616,7 @@ const Notification = new Lang.Class({
|
||||
}
|
||||
|
||||
this._contentArea.add(actor, style ? style : {});
|
||||
this._updated();
|
||||
this.updated();
|
||||
},
|
||||
|
||||
// addBody:
|
||||
@ -676,7 +679,7 @@ const Notification = new Lang.Class({
|
||||
this._table.add_style_class_name('multi-line-notification');
|
||||
this._table.add(this._actionArea, props);
|
||||
this._updateLastColumnSettings();
|
||||
this._updated();
|
||||
this.updated();
|
||||
},
|
||||
|
||||
_updateLastColumnSettings: function() {
|
||||
@ -757,7 +760,7 @@ const Notification = new Lang.Class({
|
||||
this._buttonFocusManager.add_group(this._buttonBox);
|
||||
button.connect('clicked', Lang.bind(this, this._onActionInvoked, id));
|
||||
|
||||
this._updated();
|
||||
this.updated();
|
||||
},
|
||||
|
||||
setUrgency: function(urgency) {
|
||||
@ -802,7 +805,7 @@ const Notification = new Lang.Class({
|
||||
|
||||
let titleBox = new Clutter.ActorBox();
|
||||
let titleBoxW = Math.min(titleNatW, availWidth);
|
||||
if (this._titleDirection == St.TextDirection.RTL) {
|
||||
if (this._titleDirection == Clutter.TextDirection.RTL) {
|
||||
titleBox.x1 = availWidth - titleBoxW;
|
||||
titleBox.x2 = availWidth;
|
||||
} else {
|
||||
@ -821,7 +824,7 @@ const Notification = new Lang.Class({
|
||||
} else {
|
||||
let bannerBox = new Clutter.ActorBox();
|
||||
|
||||
if (this._titleDirection == St.TextDirection.RTL) {
|
||||
if (this._titleDirection == Clutter.TextDirection.RTL) {
|
||||
bannerBox.x1 = 0;
|
||||
bannerBox.x2 = titleBox.x1 - this._spacing;
|
||||
|
||||
@ -853,7 +856,7 @@ const Notification = new Lang.Class({
|
||||
if (this._canExpandContent()) {
|
||||
this._addBannerBody();
|
||||
this._table.add_style_class_name('multi-line-notification');
|
||||
this._updated();
|
||||
this.updated();
|
||||
}
|
||||
return false;
|
||||
}));
|
||||
@ -864,7 +867,7 @@ const Notification = new Lang.Class({
|
||||
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
|
||||
},
|
||||
|
||||
_updated: function() {
|
||||
updated: function() {
|
||||
if (this.expanded)
|
||||
this.expand(false);
|
||||
},
|
||||
@ -1005,9 +1008,9 @@ const Source = new Lang.Class({
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._counterBin.get_preferred_size();
|
||||
let direction = this.actor.get_direction();
|
||||
let direction = this.actor.get_text_direction();
|
||||
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
// allocate on the right in LTR
|
||||
childBox.x1 = box.x2 - naturalWidth;
|
||||
childBox.x2 = box.x2;
|
||||
@ -1341,16 +1344,14 @@ const MessageTray = new Lang.Class({
|
||||
this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) {
|
||||
this._onStatusChanged(proxy.status);
|
||||
}));
|
||||
this._userStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
||||
this._busy = false;
|
||||
this._backFromAway = false;
|
||||
this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) {
|
||||
this._onStatusChanged(status);
|
||||
}));
|
||||
|
||||
this.actor = new St.Group({ name: 'message-tray',
|
||||
reactive: true,
|
||||
track_hover: true });
|
||||
this.actor = new St.Widget({ name: 'message-tray',
|
||||
reactive: true,
|
||||
track_hover: true });
|
||||
this.actor.connect('notify::hover', Lang.bind(this, this._onTrayHoverChanged));
|
||||
|
||||
this._notificationBin = new St.Bin();
|
||||
@ -1389,6 +1390,12 @@ const MessageTray = new Lang.Class({
|
||||
this._summaryItemTitleWidth = 0;
|
||||
this._pointerBarrier = 0;
|
||||
|
||||
this._unseenNotifications = [];
|
||||
this._idleMonitorWatchId = 0;
|
||||
this._backFromAway = false;
|
||||
|
||||
this.idleMonitor = new Shell.IdleMonitor();
|
||||
|
||||
// To simplify the summary item animation code, we pretend
|
||||
// that there's an invisible SummaryItem to the left of the
|
||||
// leftmost real summary item, and that it's expanded when all
|
||||
@ -1491,7 +1498,7 @@ const MessageTray = new Lang.Class({
|
||||
this._summaryBin.x = 0;
|
||||
this._summaryBin.width = monitor.width;
|
||||
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
this._corner.x = 0;
|
||||
else
|
||||
this._corner.x = Main.layoutManager.trayBox.width - 1;
|
||||
@ -1632,6 +1639,10 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_onNotificationDestroy: function(notification) {
|
||||
let unseenNotificationsIndex = this._unseenNotifications.indexOf(notification);
|
||||
if (unseenNotificationsIndex != -1)
|
||||
this._unseenNotifications.splice(unseenNotificationsIndex, 1);
|
||||
|
||||
if (this._notification == notification && (this._notificationState == State.SHOWN || this._notificationState == State.SHOWING)) {
|
||||
this._updateNotificationTimeout(0);
|
||||
this._notificationRemoved = true;
|
||||
@ -1915,16 +1926,10 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_onStatusChanged: function(status) {
|
||||
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
|
||||
this._userStatus = status;
|
||||
|
||||
if (status == GnomeSession.PresenceStatus.BUSY) {
|
||||
// remove notification and allow the summary to be closed now
|
||||
this._updateNotificationTimeout(0);
|
||||
if (this._summaryTimeoutId) {
|
||||
Mainloop.source_remove(this._summaryTimeoutId);
|
||||
this._summaryTimeoutId = 0;
|
||||
}
|
||||
this._unsetSummaryTimeout();
|
||||
this._busy = true;
|
||||
} else if (status != GnomeSession.PresenceStatus.IDLE) {
|
||||
// We preserve the previous value of this._busy if the status turns to IDLE
|
||||
@ -1954,6 +1959,7 @@ const MessageTray = new Lang.Class({
|
||||
this._pointerInTray = false;
|
||||
this._pointerInSummary = false;
|
||||
this._updateNotificationTimeout(0);
|
||||
this._unsetSummaryTimeout();
|
||||
this._updateState();
|
||||
}
|
||||
return false;
|
||||
@ -1964,6 +1970,7 @@ const MessageTray = new Lang.Class({
|
||||
this._pointerInTray = false;
|
||||
this._pointerInSummary = false;
|
||||
this._updateNotificationTimeout(0);
|
||||
this._unsetSummaryTimeout();
|
||||
this._updateState();
|
||||
},
|
||||
|
||||
@ -2009,15 +2016,13 @@ const MessageTray = new Lang.Class({
|
||||
|| notificationsVisible;
|
||||
|
||||
if (this._summaryState == State.HIDDEN && !mustHideSummary) {
|
||||
if (this._backFromAway) {
|
||||
// Immediately set this to false, so that we don't schedule a timeout later
|
||||
this._backFromAway = false;
|
||||
if (!this._busy)
|
||||
this._showSummary(LONGER_SUMMARY_TIMEOUT);
|
||||
} else if (notificationsDone && this._newSummaryItems.length > 0 && !this._busy) {
|
||||
this._showSummary(SUMMARY_TIMEOUT);
|
||||
} else if (summarySummoned) {
|
||||
if (summarySummoned) {
|
||||
this._showSummary(0);
|
||||
} else if (notificationsDone && !this._busy) {
|
||||
if (this._backFromAway && this._unseenNotifications.length > 0)
|
||||
this._showSummary(LONGER_SUMMARY_TIMEOUT);
|
||||
else if (this._newSummaryItems.length > 0)
|
||||
this._showSummary(SUMMARY_TIMEOUT);
|
||||
}
|
||||
} else if (this._summaryState == State.SHOWN) {
|
||||
if (!summaryPinned || mustHideSummary)
|
||||
@ -2106,8 +2111,32 @@ const MessageTray = new Lang.Class({
|
||||
});
|
||||
},
|
||||
|
||||
_onIdleMonitorWatch: function(monitor, id, userBecameIdle) {
|
||||
this.idleMonitor.remove_watch(this._idleMonitorWatchId);
|
||||
this._idleMonitorWatchId = 0;
|
||||
|
||||
if (userBecameIdle) {
|
||||
// The user became idle, which means the user was active while the notifications were
|
||||
// shown and we can unset this._unseenNotifications .
|
||||
this._unseenNotiications = [];
|
||||
} else if (this._unseenNotifications.length == 1 && this._unseenNotifications[0] == this._notification) {
|
||||
// The user became active while the only notification in this._unseenNotifications is being shown
|
||||
// as this._notification , so we can unset this._unseenNotifications .
|
||||
this._unseenNotifications = [];
|
||||
} else {
|
||||
// The user became active and we have one or more unseen notifications. We should show
|
||||
// the message tray to the user to inform the user about the missed notifications.
|
||||
this._backFromAway = true;
|
||||
this._updateState();
|
||||
}
|
||||
},
|
||||
|
||||
_showNotification: function() {
|
||||
this._notification = this._notificationQueue.shift();
|
||||
this._unseenNotifications.push(this._notification);
|
||||
if (this._idleMonitorWatchId == 0)
|
||||
this._idleMonitorWatchId = this.idleMonitor.add_watch(1000,
|
||||
Lang.bind(this, this._onIdleMonitorWatch));
|
||||
this._notificationClickedId = this._notification.connect('done-displaying',
|
||||
Lang.bind(this, this._escapeTray));
|
||||
this._notificationBin.child = this._notification.actor;
|
||||
@ -2186,6 +2215,13 @@ const MessageTray = new Lang.Class({
|
||||
Lang.bind(this, this._notificationTimeout));
|
||||
},
|
||||
|
||||
_unsetSummaryTimeout: function(timeout) {
|
||||
if (this._summaryTimeoutId) {
|
||||
Mainloop.source_remove(this._summaryTimeoutId);
|
||||
this._summaryTimeoutId = 0;
|
||||
}
|
||||
},
|
||||
|
||||
_notificationTimeout: function() {
|
||||
let [x, y, mods] = global.get_pointer();
|
||||
if (y > this._lastSeenMouseY + 10 && !this.actor.hover) {
|
||||
@ -2269,6 +2305,7 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_showSummary: function(timeout) {
|
||||
this._updateSeenSummaryItems();
|
||||
this._summaryBin.opacity = 0;
|
||||
this._summaryBin.y = this.actor.height;
|
||||
this._tween(this._summaryBin, '_summaryState', State.SHOWN,
|
||||
@ -2283,8 +2320,6 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_showSummaryCompleted: function(timeout) {
|
||||
this._newSummaryItems = [];
|
||||
|
||||
if (timeout != 0) {
|
||||
this._summaryTimeoutId =
|
||||
Mainloop.timeout_add(timeout * 1000,
|
||||
@ -2299,6 +2334,7 @@ const MessageTray = new Lang.Class({
|
||||
},
|
||||
|
||||
_hideSummary: function() {
|
||||
this._updateSeenSummaryItems();
|
||||
this._tween(this._summaryBin, '_summaryState', State.HIDDEN,
|
||||
{ opacity: 0,
|
||||
time: ANIMATION_TIME,
|
||||
@ -2306,13 +2342,20 @@ const MessageTray = new Lang.Class({
|
||||
onComplete: this._hideSummaryCompleted,
|
||||
onCompleteScope: this,
|
||||
});
|
||||
this._newSummaryItems = [];
|
||||
},
|
||||
|
||||
_hideSummaryCompleted: function() {
|
||||
this._setExpandedSummaryItem(null);
|
||||
},
|
||||
|
||||
_updateSeenSummaryItems: function() {
|
||||
if (this._backFromAway) {
|
||||
this._backFromAway = false;
|
||||
this._unseenNotifications = [];
|
||||
}
|
||||
this._newSummaryItems = [];
|
||||
},
|
||||
|
||||
_showSummaryBoxPointer: function() {
|
||||
this._summaryBoxPointerItem = this._clickedSummaryItem;
|
||||
this._summaryBoxPointerContentUpdatedId = this._summaryBoxPointerItem.connect('content-updated',
|
||||
|
@ -10,6 +10,7 @@ const Pango = imports.gi.Pango;
|
||||
const St = imports.gi.St;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Params = imports.misc.params;
|
||||
|
||||
@ -40,9 +41,10 @@ const ModalDialog = new Lang.Class({
|
||||
this._hasModal = false;
|
||||
this._shellReactive = params.shellReactive;
|
||||
|
||||
this._group = new St.Group({ visible: false,
|
||||
x: 0,
|
||||
y: 0 });
|
||||
this._group = new St.Widget({ visible: false,
|
||||
x: 0,
|
||||
y: 0,
|
||||
accessible_role: Atk.Role.DIALOG });
|
||||
Main.uiGroup.add_actor(this._group);
|
||||
|
||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||
@ -87,6 +89,7 @@ const ModalDialog = new Lang.Class({
|
||||
y_align: St.Align.START });
|
||||
|
||||
this._buttonLayout = new St.BoxLayout({ style_class: 'modal-dialog-button-box',
|
||||
visible: false,
|
||||
vertical: false });
|
||||
this._dialogLayout.add(this._buttonLayout,
|
||||
{ expand: true,
|
||||
@ -95,6 +98,7 @@ const ModalDialog = new Lang.Class({
|
||||
|
||||
global.focus_manager.add_group(this._dialogLayout);
|
||||
this._initialKeyFocus = this._dialogLayout;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
this._savedKeyFocus = null;
|
||||
},
|
||||
|
||||
@ -108,6 +112,8 @@ const ModalDialog = new Lang.Class({
|
||||
this._buttonLayout.destroy_all_children();
|
||||
this._actionKeys = {};
|
||||
|
||||
this._buttonLayout.visible = (buttons.length > 0);
|
||||
|
||||
for (let i = 0; i < buttons.length; i++) {
|
||||
let buttonInfo = buttons[i];
|
||||
let label = buttonInfo['label'];
|
||||
@ -129,8 +135,7 @@ const ModalDialog = new Lang.Class({
|
||||
else
|
||||
x_alignment = St.Align.MIDDLE;
|
||||
|
||||
if (this._initialKeyFocus == this._dialogLayout ||
|
||||
this._buttonLayout.contains(this._initialKeyFocus))
|
||||
if (!this._initialKeyFocusDestroyId)
|
||||
this._initialKeyFocus = buttonInfo.button;
|
||||
this._buttonLayout.add(buttonInfo.button,
|
||||
{ expand: true,
|
||||
@ -200,7 +205,15 @@ const ModalDialog = new Lang.Class({
|
||||
},
|
||||
|
||||
setInitialKeyFocus: function(actor) {
|
||||
if (this._initialKeyFocusDestroyId)
|
||||
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
|
||||
|
||||
this._initialKeyFocus = actor;
|
||||
|
||||
this._initialKeyFocusDestroyId = actor.connect('destroy', Lang.bind(this, function() {
|
||||
this._initialKeyFocus = this._dialogLayout;
|
||||
this._initialKeyFocusDestroyId = 0;
|
||||
}));
|
||||
},
|
||||
|
||||
open: function(timestamp) {
|
||||
|
@ -531,7 +531,8 @@ const VPNRequestHandler = new Lang.Class({
|
||||
let contentOverride;
|
||||
|
||||
try {
|
||||
keyfile.load_from_data(this._dataStdout.peek_buffer(), -1,
|
||||
let data = this._dataStdout.peek_buffer();
|
||||
keyfile.load_from_data(data.toString(), data.length,
|
||||
GLib.KeyFileFlags.NONE);
|
||||
|
||||
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)
|
||||
|
@ -221,12 +221,19 @@ const NotificationDaemon = new Lang.Class({
|
||||
let [appName, replacesId, icon, summary, body, actions, hints, timeout] = params;
|
||||
let id;
|
||||
|
||||
for (let hint in hints) {
|
||||
// unpack the variants
|
||||
hints[hint] = hints[hint].deep_unpack();
|
||||
}
|
||||
|
||||
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
|
||||
|
||||
// Filter out chat, presence, calls and invitation notifications from
|
||||
// Empathy, since we handle that information from telepathyClient.js
|
||||
if (appName == 'Empathy' && (hints['category'] == 'im.received' ||
|
||||
hints['category'] == 'x-empathy.im.room-invitation' ||
|
||||
hints['category'] == 'x-empathy.call.incoming' ||
|
||||
hints['category'] == 'x-empathy.call.incoming"' ||
|
||||
hints['category'] == 'x-empathy.transfer.incoming' ||
|
||||
hints['category'] == 'x-empathy.im.subscription-request' ||
|
||||
hints['category'] == 'presence.online' ||
|
||||
hints['category'] == 'presence.offline')) {
|
||||
@ -249,13 +256,6 @@ const NotificationDaemon = new Lang.Class({
|
||||
}
|
||||
}
|
||||
|
||||
for (let hint in hints) {
|
||||
// unpack the variants
|
||||
hints[hint] = hints[hint].deep_unpack();
|
||||
}
|
||||
|
||||
hints = Params.parse(hints, { urgency: Urgency.NORMAL }, true);
|
||||
|
||||
// Be compatible with the various hints for image data and image path
|
||||
// 'image-data' and 'image-path' are the latest name of these hints, introduced in 1.2
|
||||
|
||||
|
@ -126,8 +126,11 @@ const Overview = new Lang.Class({
|
||||
|
||||
this._spacing = 0;
|
||||
|
||||
this._group = new St.Group({ name: 'overview',
|
||||
reactive: true });
|
||||
/* Translators: This is the main view to select
|
||||
activities. See also note for "Activities" string. */
|
||||
this._group = new St.Widget({ name: 'overview',
|
||||
accessible_name: _("Overview"),
|
||||
reactive: true });
|
||||
this._group._delegate = this;
|
||||
this._group.connect('style-changed',
|
||||
Lang.bind(this, function() {
|
||||
@ -357,7 +360,7 @@ const Overview = new Lang.Class({
|
||||
let direction;
|
||||
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
||||
direction = stageX > this._dragStartX ? -1 : 1;
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
direction *= -1;
|
||||
} else {
|
||||
direction = stageY > this._dragStartY ? -1 : 1;
|
||||
@ -449,7 +452,7 @@ const Overview = new Lang.Class({
|
||||
return true;
|
||||
|
||||
if (this._scrollDirection == SwipeScrollDirection.HORIZONTAL) {
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
this._scrollAdjustment.value -= (dx / primary.width) * this._scrollAdjustment.page_size;
|
||||
else
|
||||
this._scrollAdjustment.value += (dx / primary.width) * this._scrollAdjustment.page_size;
|
||||
@ -490,7 +493,7 @@ const Overview = new Lang.Class({
|
||||
this.hide();
|
||||
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||
|
||||
let contentY = Main.panel.actor.height;
|
||||
let contentHeight = primary.height - contentY - Main.messageTray.actor.height;
|
||||
|
104
js/ui/panel.js
104
js/ui/panel.js
@ -4,12 +4,15 @@ const Cairo = imports.cairo;
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const Gio = imports.gi.Gio;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Meta = imports.gi.Meta;
|
||||
const Pango = imports.gi.Pango;
|
||||
const Shell = imports.gi.Shell;
|
||||
const St = imports.gi.St;
|
||||
const Signals = imports.signals;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Config = imports.misc.config;
|
||||
const CtrlAltTab = imports.ui.ctrlAltTab;
|
||||
@ -249,6 +252,8 @@ const AppMenuButton = new Lang.Class({
|
||||
_init: function(menuManager) {
|
||||
this.parent(0.0, null, true);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.MENU;
|
||||
|
||||
this._startingApps = [];
|
||||
|
||||
this._menuManager = menuManager;
|
||||
@ -299,7 +304,7 @@ const AppMenuButton = new Lang.Class({
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let appSys = Shell.AppSystem.get_default();
|
||||
tracker.connect('notify::focus-app', Lang.bind(this, this._sync));
|
||||
tracker.connect('notify::focus-app', Lang.bind(this, this._focusAppChanged));
|
||||
appSys.connect('app-state-changed', Lang.bind(this, this._onAppStateChanged));
|
||||
|
||||
global.window_manager.connect('switch-workspace', Lang.bind(this, this._sync));
|
||||
@ -313,11 +318,12 @@ const AppMenuButton = new Lang.Class({
|
||||
|
||||
this._visible = true;
|
||||
this.actor.show();
|
||||
this.actor.reactive = true;
|
||||
|
||||
if (!this._targetIsCurrent)
|
||||
return;
|
||||
|
||||
this.actor.reactive = true;
|
||||
|
||||
Tweener.removeTweens(this.actor);
|
||||
Tweener.addTween(this.actor,
|
||||
{ opacity: 255,
|
||||
@ -412,12 +418,12 @@ const AppMenuButton = new Lang.Class({
|
||||
|
||||
let [minWidth, minHeight, naturalWidth, naturalHeight] = this._iconBox.get_preferred_size();
|
||||
|
||||
let direction = this.actor.get_direction();
|
||||
let direction = this.actor.get_text_direction();
|
||||
|
||||
let yPadding = Math.floor(Math.max(0, allocHeight - naturalHeight) / 2);
|
||||
childBox.y1 = yPadding;
|
||||
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = childBox.x1 + Math.min(naturalWidth, allocWidth);
|
||||
} else {
|
||||
@ -434,7 +440,7 @@ const AppMenuButton = new Lang.Class({
|
||||
childBox.y1 = yPadding;
|
||||
childBox.y2 = childBox.y1 + Math.min(naturalHeight, allocHeight);
|
||||
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
childBox.x1 = Math.floor(iconWidth / 2);
|
||||
childBox.x2 = Math.min(childBox.x1 + naturalWidth, allocWidth);
|
||||
} else {
|
||||
@ -443,7 +449,7 @@ const AppMenuButton = new Lang.Class({
|
||||
}
|
||||
this._label.actor.allocate(childBox, flags);
|
||||
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
childBox.x1 = Math.floor(iconWidth / 2) + this._label.actor.width;
|
||||
childBox.x2 = childBox.x1 + this._spinner.actor.width;
|
||||
childBox.y1 = box.y1;
|
||||
@ -474,16 +480,9 @@ const AppMenuButton = new Lang.Class({
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
_focusAppChanged: function() {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let lastStartedApp = null;
|
||||
let workspace = global.screen.get_active_workspace();
|
||||
for (let i = 0; i < this._startingApps.length; i++)
|
||||
if (this._startingApps[i].is_on_workspace(workspace))
|
||||
lastStartedApp = this._startingApps[i];
|
||||
|
||||
let focusedApp = tracker.focus_app;
|
||||
|
||||
if (!focusedApp) {
|
||||
// If the app has just lost focus to the panel, pretend
|
||||
// nothing happened; otherwise you can't keynav to the
|
||||
@ -491,6 +490,17 @@ const AppMenuButton = new Lang.Class({
|
||||
if (global.stage_input_mode == Shell.StageInputMode.FOCUSED)
|
||||
return;
|
||||
}
|
||||
this._sync();
|
||||
},
|
||||
|
||||
_sync: function() {
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let focusedApp = tracker.focus_app;
|
||||
let lastStartedApp = null;
|
||||
let workspace = global.screen.get_active_workspace();
|
||||
for (let i = 0; i < this._startingApps.length; i++)
|
||||
if (this._startingApps[i].is_on_workspace(workspace))
|
||||
lastStartedApp = this._startingApps[i];
|
||||
|
||||
let targetApp = focusedApp != null ? focusedApp : lastStartedApp;
|
||||
|
||||
@ -600,6 +610,7 @@ const ActivitiesButton = new Lang.Class({
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0);
|
||||
this.actor.accessible_role = Atk.Role.TOGGLE_BUTTON;
|
||||
|
||||
let container = new Shell.GenericContainer();
|
||||
container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||
@ -613,6 +624,8 @@ const ActivitiesButton = new Lang.Class({
|
||||
this._label = new St.Label({ text: _("Activities") });
|
||||
container.add_actor(this._label);
|
||||
|
||||
this.actor.label_actor = this._label;
|
||||
|
||||
this._hotCorner = new Layout.HotCorner();
|
||||
container.add_actor(this._hotCorner.actor);
|
||||
|
||||
@ -628,10 +641,12 @@ const ActivitiesButton = new Lang.Class({
|
||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||
this.actor.add_style_pseudo_class('overview');
|
||||
this._escapeMenuGrab();
|
||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||
}));
|
||||
Main.overview.connect('hiding', Lang.bind(this, function() {
|
||||
this.actor.remove_style_pseudo_class('overview');
|
||||
this._escapeMenuGrab();
|
||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||
}));
|
||||
|
||||
this._xdndTimeOut = 0;
|
||||
@ -653,7 +668,7 @@ const ActivitiesButton = new Lang.Class({
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
let hotBox = new Clutter.ActorBox();
|
||||
let ok, x, y;
|
||||
if (actor.get_direction() == St.TextDirection.LTR) {
|
||||
if (actor.get_text_direction() == Clutter.TextDirection.LTR) {
|
||||
[ok, x, y] = actor.transform_stage_point(primary.x, primary.y)
|
||||
} else {
|
||||
[ok, x, y] = actor.transform_stage_point(primary.x + primary.width, primary.y);
|
||||
@ -807,7 +822,7 @@ const PanelCorner = new Lang.Class({
|
||||
|
||||
let rtlAwareContainer = this._box instanceof St.BoxLayout;
|
||||
if (rtlAwareContainer &&
|
||||
this._box.get_direction() == St.TextDirection.RTL) {
|
||||
this._box.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
if (this._side == St.Side.LEFT)
|
||||
side = St.Side.RIGHT;
|
||||
else if (this._side == St.Side.RIGHT)
|
||||
@ -928,14 +943,14 @@ const Panel = new Lang.Class({
|
||||
this._rightBox = new St.BoxLayout({ name: 'panelRight' });
|
||||
this.actor.add_actor(this._rightBox);
|
||||
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL)
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||
this._leftCorner = new PanelCorner(this._rightBox, St.Side.LEFT);
|
||||
else
|
||||
this._leftCorner = new PanelCorner(this._leftBox, St.Side.LEFT);
|
||||
|
||||
this.actor.add_actor(this._leftCorner.actor);
|
||||
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL)
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL)
|
||||
this._rightCorner = new PanelCorner(this._leftBox, St.Side.RIGHT);
|
||||
else
|
||||
this._rightCorner = new PanelCorner(this._rightBox, St.Side.RIGHT);
|
||||
@ -944,6 +959,7 @@ const Panel = new Lang.Class({
|
||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||
|
||||
/* Button on the left side of the panel. */
|
||||
if (global.session_type == Shell.SessionType.USER) {
|
||||
@ -1011,7 +1027,7 @@ const Panel = new Lang.Class({
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = allocWidth - Math.min(Math.floor(sideWidth),
|
||||
leftNaturalWidth);
|
||||
childBox.x2 = allocWidth;
|
||||
@ -1030,7 +1046,7 @@ const Panel = new Lang.Class({
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = Math.min(Math.floor(sideWidth),
|
||||
rightNaturalWidth);
|
||||
@ -1058,6 +1074,54 @@ const Panel = new Lang.Class({
|
||||
this._rightCorner.actor.allocate(childBox, flags);
|
||||
},
|
||||
|
||||
_onButtonPress: function(actor, event) {
|
||||
if (event.get_source() != actor)
|
||||
return false;
|
||||
|
||||
let button = event.get_button();
|
||||
if (button != 1)
|
||||
return false;
|
||||
|
||||
let focusWindow = global.display.focus_window;
|
||||
if (!focusWindow)
|
||||
return false;
|
||||
|
||||
let dragWindow = focusWindow.is_attached_dialog() ? focusWindow.get_transient_for()
|
||||
: focusWindow;
|
||||
if (!dragWindow)
|
||||
return false;
|
||||
|
||||
let rect = dragWindow.get_outer_rect();
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
|
||||
let allowDrag = dragWindow.maximized_vertically &&
|
||||
stageX > rect.x && stageX < rect.x + rect.width;
|
||||
|
||||
if (!allowDrag)
|
||||
return false;
|
||||
|
||||
global.display.begin_grab_op(global.screen,
|
||||
dragWindow,
|
||||
Meta.GrabOp.MOVING,
|
||||
false, /* pointer grab */
|
||||
true, /* frame action */
|
||||
button,
|
||||
event.get_state(),
|
||||
event.get_time(),
|
||||
stageX, stageY);
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
openAppMenu: function() {
|
||||
let menu = this._appMenu.menu;
|
||||
if (Main.overview.visible || menu.isOpen)
|
||||
return;
|
||||
|
||||
menu.open();
|
||||
menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
},
|
||||
|
||||
startStatusArea: function() {
|
||||
for (let i = 0; i < this._status_area_order.length; i++) {
|
||||
let role = this._status_area_order[i];
|
||||
|
@ -6,6 +6,7 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
@ -99,7 +100,8 @@ const Button = new Lang.Class({
|
||||
_init: function(menuAlignment, nameText, dontCreateMenu) {
|
||||
this.parent({ reactive: true,
|
||||
can_focus: true,
|
||||
track_hover: true });
|
||||
track_hover: true,
|
||||
accessible_role: Atk.Role.MENU });
|
||||
|
||||
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
|
||||
this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress));
|
||||
@ -147,15 +149,6 @@ const Button = new Lang.Class({
|
||||
if (!this.menu)
|
||||
return;
|
||||
|
||||
if (!this.menu.isOpen) {
|
||||
// Setting the max-height won't do any good if the minimum height of the
|
||||
// menu is higher then the screen; it's useful if part of the menu is
|
||||
// scrollable so the minimum height is smaller than the natural height
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
this.menu.actor.style = ('max-height: ' +
|
||||
Math.round(monitor.height - Main.panel.actor.height) +
|
||||
'px;');
|
||||
}
|
||||
this.menu.toggle();
|
||||
},
|
||||
|
||||
@ -198,6 +191,14 @@ const Button = new Lang.Class({
|
||||
this.actor.add_style_pseudo_class('active');
|
||||
else
|
||||
this.actor.remove_style_pseudo_class('active');
|
||||
|
||||
// Setting the max-height won't do any good if the minimum height of the
|
||||
// menu is higher then the screen; it's useful if part of the menu is
|
||||
// scrollable so the minimum height is smaller than the natural height
|
||||
let monitor = Main.layoutManager.primaryMonitor;
|
||||
this.menu.actor.style = ('max-height: ' +
|
||||
Math.round(monitor.height - Main.panel.actor.height) +
|
||||
'px;');
|
||||
},
|
||||
|
||||
destroy: function() {
|
||||
|
@ -9,6 +9,7 @@ const Lang = imports.lang;
|
||||
const Shell = imports.gi.Shell;
|
||||
const Signals = imports.signals;
|
||||
const St = imports.gi.St;
|
||||
const Atk = imports.gi.Atk;
|
||||
|
||||
const BoxPointer = imports.ui.boxpointer;
|
||||
const Main = imports.ui.main;
|
||||
@ -41,7 +42,8 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
this.actor = new Shell.GenericContainer({ style_class: 'popup-menu-item',
|
||||
reactive: params.reactive,
|
||||
track_hover: params.reactive,
|
||||
can_focus: params.reactive });
|
||||
can_focus: params.reactive,
|
||||
accessible_role: Atk.Role.MENU_ITEM});
|
||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
this.actor.connect('allocate', Lang.bind(this, this._allocate));
|
||||
@ -273,7 +275,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
let height = box.y2 - box.y1;
|
||||
let direction = this.actor.get_direction();
|
||||
let direction = this.actor.get_text_direction();
|
||||
|
||||
if (this._dot) {
|
||||
// The dot is placed outside box
|
||||
@ -283,7 +285,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
let dotBox = new Clutter.ActorBox();
|
||||
let dotWidth = Math.round(box.x1 / 2);
|
||||
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
dotBox.x1 = Math.round(box.x1 / 4);
|
||||
dotBox.x2 = dotBox.x1 + dotWidth;
|
||||
} else {
|
||||
@ -296,7 +298,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
}
|
||||
|
||||
let x;
|
||||
if (direction == St.TextDirection.LTR)
|
||||
if (direction == Clutter.TextDirection.LTR)
|
||||
x = box.x1;
|
||||
else
|
||||
x = box.x2;
|
||||
@ -311,7 +313,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
let availWidth, extraWidth;
|
||||
if (this._columnWidths) {
|
||||
if (child.span == -1) {
|
||||
if (direction == St.TextDirection.LTR)
|
||||
if (direction == Clutter.TextDirection.LTR)
|
||||
availWidth = box.x2 - x;
|
||||
else
|
||||
availWidth = x - box.x1;
|
||||
@ -323,7 +325,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
extraWidth = availWidth - naturalWidth;
|
||||
} else {
|
||||
if (child.span == -1) {
|
||||
if (direction == St.TextDirection.LTR)
|
||||
if (direction == Clutter.TextDirection.LTR)
|
||||
availWidth = box.x2 - x;
|
||||
else
|
||||
availWidth = x - box.x1;
|
||||
@ -333,7 +335,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
extraWidth = 0;
|
||||
}
|
||||
|
||||
if (direction == St.TextDirection.LTR) {
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
if (child.expand) {
|
||||
childBox.x1 = x;
|
||||
childBox.x2 = x + availWidth;
|
||||
@ -371,7 +373,7 @@ const PopupBaseMenuItem = new Lang.Class({
|
||||
|
||||
child.actor.allocate(childBox, flags);
|
||||
|
||||
if (direction == St.TextDirection.LTR)
|
||||
if (direction == Clutter.TextDirection.LTR)
|
||||
x += availWidth + this._spacing;
|
||||
else
|
||||
x -= availWidth + this._spacing;
|
||||
@ -444,6 +446,7 @@ const PopupAlternatingMenuItem = new Lang.Class({
|
||||
this.label = new St.Label({ text: text });
|
||||
this.state = PopupAlternatingMenuItemState.DEFAULT;
|
||||
this.addActor(this.label);
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
this.actor.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
||||
},
|
||||
@ -711,7 +714,8 @@ const Switch = new Lang.Class({
|
||||
Name: 'Switch',
|
||||
|
||||
_init: function(state) {
|
||||
this.actor = new St.Bin({ style_class: 'toggle-switch' });
|
||||
this.actor = new St.Bin({ style_class: 'toggle-switch',
|
||||
accessible_role: Atk.Role.CHECK_BOX});
|
||||
// Translators: this MUST be either "toggle-switch-us"
|
||||
// (for toggle switches containing the English words
|
||||
// "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
@ -744,6 +748,10 @@ const PopupSwitchMenuItem = new Lang.Class({
|
||||
this.label = new St.Label({ text: text });
|
||||
this._switch = new Switch(active);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||
this.checkAccessibleState();
|
||||
this.actor.label_actor = this.label;
|
||||
|
||||
this.addActor(this.label);
|
||||
|
||||
this._statusBin = new St.Bin({ x_align: St.Align.END });
|
||||
@ -762,11 +770,14 @@ const PopupSwitchMenuItem = new Lang.Class({
|
||||
this._statusBin.child = this._statusLabel;
|
||||
this.actor.reactive = false;
|
||||
this.actor.can_focus = false;
|
||||
this.actor.accessible_role = Atk.Role.MENU_ITEM;
|
||||
} else {
|
||||
this._statusBin.child = this._switch.actor;
|
||||
this.actor.reactive = true;
|
||||
this.actor.can_focus = true;
|
||||
this.actor.accessible_role = Atk.Role.CHECK_MENU_ITEM;
|
||||
}
|
||||
this.checkAccessibleState();
|
||||
},
|
||||
|
||||
activate: function(event) {
|
||||
@ -786,6 +797,7 @@ const PopupSwitchMenuItem = new Lang.Class({
|
||||
toggle: function() {
|
||||
this._switch.toggle();
|
||||
this.emit('toggled', this._switch.state);
|
||||
this.checkAccessibleState();
|
||||
},
|
||||
|
||||
get state() {
|
||||
@ -794,6 +806,20 @@ const PopupSwitchMenuItem = new Lang.Class({
|
||||
|
||||
setToggleState: function(state) {
|
||||
this._switch.setToggleState(state);
|
||||
this.checkAccessibleState();
|
||||
},
|
||||
|
||||
checkAccessibleState: function() {
|
||||
switch (this.actor.accessible_role) {
|
||||
case Atk.Role.CHECK_MENU_ITEM:
|
||||
if (this._switch.state)
|
||||
this.actor.add_accessible_state (Atk.StateType.CHECKED);
|
||||
else
|
||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||
break;
|
||||
default:
|
||||
this.actor.remove_accessible_state (Atk.StateType.CHECKED);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -1594,6 +1620,10 @@ const PopupComboMenu = new Lang.Class({
|
||||
this._activeItemPos = position;
|
||||
},
|
||||
|
||||
getActiveItem: function() {
|
||||
return this._getMenuItems()[this._activeItemPos];
|
||||
},
|
||||
|
||||
setItemVisible: function(position, visible) {
|
||||
if (!visible && position == this._activeItemPos) {
|
||||
log('Trying to hide the active menu item.');
|
||||
@ -1615,6 +1645,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
||||
_init: function (params) {
|
||||
this.parent(params);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.COMBO_BOX;
|
||||
|
||||
this._itemBox = new Shell.Stack();
|
||||
this.addActor(this._itemBox);
|
||||
|
||||
@ -1711,6 +1743,11 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
||||
Lang.bind(this, this._itemActivated, position));
|
||||
},
|
||||
|
||||
checkAccessibleLabel: function() {
|
||||
let activeItem = this._menu.getActiveItem();
|
||||
this.actor.label_actor = activeItem.label;
|
||||
},
|
||||
|
||||
setActiveItem: function(position) {
|
||||
let item = this._items[position];
|
||||
if (!item)
|
||||
@ -1721,6 +1758,8 @@ const PopupComboBoxMenuItem = new Lang.Class({
|
||||
this._activeItemPos = position;
|
||||
for (let i = 0; i < this._items.length; i++)
|
||||
this._items[i].visible = (i == this._activeItemPos);
|
||||
|
||||
this.checkAccessibleLabel();
|
||||
},
|
||||
|
||||
setItemVisible: function(position, visible) {
|
||||
@ -1878,7 +1917,7 @@ const RemoteMenu = new Lang.Class({
|
||||
while (k0 < currentItems.length && currentItems[k0]._ignored)
|
||||
k0++;
|
||||
// find the right menu item matching the model item
|
||||
for (j0 = 0; j0 < position; j0++, k0++) {
|
||||
for (j0 = 0; k0 < currentItems.length && j0 < position; j0++, k0++) {
|
||||
if (currentItems[k0]._ignored)
|
||||
k0++;
|
||||
}
|
||||
@ -1888,7 +1927,7 @@ const RemoteMenu = new Lang.Class({
|
||||
for (k = k0; k < currentItems.length; k++)
|
||||
currentItems[k].destroy();
|
||||
} else {
|
||||
for (j = j0, k = k0; j < j0 + removed; j++, k++) {
|
||||
for (j = j0, k = k0; k < currentItems.length && j < j0 + removed; j++, k++) {
|
||||
currentItems[k].destroy();
|
||||
|
||||
if (currentItems[k]._ignored)
|
||||
@ -1919,8 +1958,9 @@ const RemoteMenu = new Lang.Class({
|
||||
k++;
|
||||
}
|
||||
} else if (changeSignal) {
|
||||
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function() {
|
||||
this.actionGroup.disconnect(signalId);
|
||||
let signalId = this.actionGroup.connect(changeSignal, Lang.bind(this, function(actionGroup, actionName) {
|
||||
actionGroup.disconnect(signalId);
|
||||
if (this._actions[actionName]) return;
|
||||
|
||||
// force a full update
|
||||
this._modelChanged(model, 0, -1, model.get_n_items(), target);
|
||||
|
@ -59,13 +59,13 @@ function loadRemoteSearchProvidersFromDir(dir, addProviderCallback) {
|
||||
if (!keyfile.has_group(KEY_FILE_GROUP))
|
||||
continue;
|
||||
|
||||
let remoteProvider;
|
||||
let remoteProvider, title;
|
||||
try {
|
||||
let group = KEY_FILE_GROUP;
|
||||
let title = keyfile.get_locale_string(group, 'Title', null);
|
||||
let icon = keyfile.get_string(group, 'Icon');
|
||||
let busName = keyfile.get_string(group, 'BusName');
|
||||
let objectPath = keyfile.get_string(group, 'ObjectPath');
|
||||
title = keyfile.get_locale_string(group, 'Title', null);
|
||||
|
||||
remoteProvider = new RemoteSearchProvider(title,
|
||||
icon,
|
||||
|
@ -209,6 +209,8 @@ const RunDialog = new Lang.Class({
|
||||
let entry = new St.Entry({ style_class: 'run-dialog-entry' });
|
||||
ShellEntry.addContextMenu(entry);
|
||||
|
||||
entry.label_actor = label;
|
||||
|
||||
this._entryText = entry.clutter_text;
|
||||
this.contentLayout.add(entry, { y_align: St.Align.START });
|
||||
this.setInitialKeyFocus(this._entryText);
|
||||
@ -242,7 +244,7 @@ const RunDialog = new Lang.Class({
|
||||
let symbol = e.get_key_symbol();
|
||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||
this.popModal();
|
||||
if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK)
|
||||
if (e.get_state() & Clutter.ModifierType.CONTROL_MASK)
|
||||
this._run(o.get_text(), true);
|
||||
else
|
||||
this._run(o.get_text(), false);
|
||||
|
@ -29,7 +29,6 @@ const SearchResultDisplay = new Lang.Class({
|
||||
_init: function(provider) {
|
||||
this.provider = provider;
|
||||
this.actor = null;
|
||||
this.selectionIndex = -1;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -51,20 +50,10 @@ const SearchResultDisplay = new Lang.Class({
|
||||
|
||||
/**
|
||||
* clear:
|
||||
* Remove all results from this display and reset the selection index.
|
||||
* Remove all results from this display.
|
||||
*/
|
||||
clear: function() {
|
||||
this.actor.get_children().forEach(function (actor) { actor.destroy(); });
|
||||
this.selectionIndex = -1;
|
||||
},
|
||||
|
||||
/**
|
||||
* getSelectionIndex:
|
||||
*
|
||||
* Returns the index of the selected actor, or -1 if none.
|
||||
*/
|
||||
getSelectionIndex: function() {
|
||||
return this.selectionIndex;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -75,25 +64,6 @@ const SearchResultDisplay = new Lang.Class({
|
||||
getVisibleResultCount: function() {
|
||||
throw new Error('Not implemented');
|
||||
},
|
||||
|
||||
/**
|
||||
* selectIndex:
|
||||
* @index: Integer index
|
||||
*
|
||||
* Move selection to the given index.
|
||||
* Return true if successful, false if no more results
|
||||
* available.
|
||||
*/
|
||||
selectIndex: function() {
|
||||
throw new Error('Not implemented');
|
||||
},
|
||||
|
||||
/**
|
||||
* Activate the currently selected search result.
|
||||
*/
|
||||
activateSelected: function() {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -32,6 +32,7 @@ const SearchResult = new Lang.Class({
|
||||
if (content == null) {
|
||||
content = new St.Bin({ style_class: 'search-result-content',
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
track_hover: true });
|
||||
let icon = new IconGrid.BaseIcon(this.metaInfo['name'],
|
||||
{ createIcon: this.metaInfo['createIcon'] });
|
||||
@ -110,7 +111,6 @@ const GridSearchResults = new Lang.Class({
|
||||
this.actor = new St.Bin({ x_align: St.Align.START });
|
||||
|
||||
this.actor.set_child(this._grid.actor);
|
||||
this.selectionIndex = -1;
|
||||
this._width = 0;
|
||||
this.actor.connect('notify::width', Lang.bind(this, function() {
|
||||
this._width = this.actor.width;
|
||||
@ -163,32 +163,14 @@ const GridSearchResults = new Lang.Class({
|
||||
|
||||
clear: function () {
|
||||
this._grid.removeAll();
|
||||
this.selectionIndex = -1;
|
||||
this._pendingClear = false;
|
||||
},
|
||||
|
||||
selectIndex: function (index) {
|
||||
let nVisible = this.getVisibleResultCount();
|
||||
if (this.selectionIndex >= 0) {
|
||||
let prevActor = this._grid.getItemAtIndex(this.selectionIndex);
|
||||
prevActor._delegate.setSelected(false);
|
||||
}
|
||||
this.selectionIndex = -1;
|
||||
if (index >= nVisible)
|
||||
return false;
|
||||
else if (index < 0)
|
||||
return false;
|
||||
let targetActor = this._grid.getItemAtIndex(index);
|
||||
targetActor._delegate.setSelected(true);
|
||||
this.selectionIndex = index;
|
||||
return true;
|
||||
},
|
||||
|
||||
activateSelected: function() {
|
||||
if (this.selectionIndex < 0)
|
||||
return;
|
||||
let targetActor = this._grid.getItemAtIndex(this.selectionIndex);
|
||||
targetActor._delegate.activate();
|
||||
getFirstResult: function() {
|
||||
if (this.getVisibleResultCount() > 0)
|
||||
return this._grid.getItemAtIndex(0)._delegate;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
@ -230,7 +212,6 @@ const SearchResults = new Lang.Class({
|
||||
|
||||
this._statusText = new St.Label({ style_class: 'search-statustext' });
|
||||
this._content.add(this._statusText);
|
||||
this._selectedProvider = -1;
|
||||
this._providers = this._searchSystem.getProviders();
|
||||
this._providerMeta = [];
|
||||
this._providerMetaResults = {};
|
||||
@ -244,10 +225,12 @@ const SearchResults = new Lang.Class({
|
||||
this._openSearchProviders = [];
|
||||
this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons));
|
||||
this._updateOpenSearchProviderButtons();
|
||||
|
||||
this._highlightDefault = false;
|
||||
this._defaultResult = null;
|
||||
},
|
||||
|
||||
_updateOpenSearchProviderButtons: function() {
|
||||
this._selectedOpenSearchButton = -1;
|
||||
for (let i = 0; i < this._openSearchProviders.length; i++)
|
||||
this._openSearchProviders[i].actor.destroy();
|
||||
this._openSearchProviders = this._openSearchSystem.getProviders();
|
||||
@ -255,18 +238,10 @@ const SearchResults = new Lang.Class({
|
||||
this._createOpenSearchProviderButton(this._openSearchProviders[i]);
|
||||
},
|
||||
|
||||
_updateOpenSearchButtonState: function() {
|
||||
for (let i = 0; i < this._openSearchProviders.length; i++) {
|
||||
if (i == this._selectedOpenSearchButton)
|
||||
this._openSearchProviders[i].actor.add_style_pseudo_class('selected');
|
||||
else
|
||||
this._openSearchProviders[i].actor.remove_style_pseudo_class('selected');
|
||||
}
|
||||
},
|
||||
|
||||
_createOpenSearchProviderButton: function(provider) {
|
||||
let button = new St.Button({ style_class: 'dash-search-button',
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
x_fill: true,
|
||||
y_align: St.Align.MIDDLE });
|
||||
let bin = new St.Bin({ x_fill: false,
|
||||
@ -282,6 +257,17 @@ const SearchResults = new Lang.Class({
|
||||
button.set_child(bin);
|
||||
provider.actor = button;
|
||||
|
||||
button.setSelected = function(selected) {
|
||||
if (selected)
|
||||
button.add_style_pseudo_class('selected');
|
||||
else
|
||||
button.remove_style_pseudo_class('selected');
|
||||
};
|
||||
button.activate = Lang.bind(this, function() {
|
||||
this._openSearchSystem.activateResult(provider.id);
|
||||
});
|
||||
button.actor = button;
|
||||
|
||||
this._searchProvidersBox.add(button);
|
||||
},
|
||||
|
||||
@ -321,7 +307,6 @@ const SearchResults = new Lang.Class({
|
||||
},
|
||||
|
||||
_clearDisplay: function() {
|
||||
this._selectedProvider = -1;
|
||||
this._visibleResultsCount = 0;
|
||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||
let meta = this._providerMeta[i];
|
||||
@ -340,8 +325,6 @@ const SearchResults = new Lang.Class({
|
||||
this._searchSystem.reset();
|
||||
this._statusText.hide();
|
||||
this._clearDisplay();
|
||||
this._selectedOpenSearchButton = -1;
|
||||
this._updateOpenSearchButtonState();
|
||||
},
|
||||
|
||||
startingSearch: function() {
|
||||
@ -359,20 +342,34 @@ const SearchResults = new Lang.Class({
|
||||
},
|
||||
|
||||
_maybeSetInitialSelection: function() {
|
||||
if (this._selectedOpenSearchButton > -1 || this._selectedProvider > -1)
|
||||
return;
|
||||
let newDefaultResult = null;
|
||||
|
||||
for (let i = 0; i < this._providerMeta.length; i++) {
|
||||
let meta = this._providerMeta[i];
|
||||
if (meta.hasPendingResults)
|
||||
return;
|
||||
|
||||
if (meta.actor.visible)
|
||||
if (!meta.actor.visible)
|
||||
continue;
|
||||
|
||||
let firstResult = meta.resultDisplay.getFirstResult();
|
||||
if (firstResult) {
|
||||
newDefaultResult = firstResult;
|
||||
break; // select this one!
|
||||
}
|
||||
}
|
||||
|
||||
this.selectDown(false);
|
||||
this._initialSelectionSet = true;
|
||||
if (!newDefaultResult)
|
||||
newDefaultResult = this._searchProvidersBox.get_first_child();
|
||||
|
||||
if (newDefaultResult != this._defaultResult) {
|
||||
if (this._defaultResult)
|
||||
this._defaultResult.setSelected(false);
|
||||
if (newDefaultResult)
|
||||
newDefaultResult.setSelected(this._highlightDefault);
|
||||
|
||||
this._defaultResult = newDefaultResult;
|
||||
}
|
||||
},
|
||||
|
||||
_updateCurrentResults: function(searchSystem, results) {
|
||||
@ -410,6 +407,7 @@ const SearchResults = new Lang.Class({
|
||||
meta.resultDisplay.renderResults(metas);
|
||||
}
|
||||
}
|
||||
this._maybeSetInitialSelection();
|
||||
},
|
||||
|
||||
_updateResults: function(searchSystem, results) {
|
||||
@ -417,20 +415,15 @@ const SearchResults = new Lang.Class({
|
||||
this._statusText.set_text(_("No matching results."));
|
||||
this._statusText.show();
|
||||
} else {
|
||||
this._selectedOpenSearchButton = -1;
|
||||
this._updateOpenSearchButtonState();
|
||||
this._selectedProvider = -1;
|
||||
this._statusText.hide();
|
||||
}
|
||||
|
||||
let terms = searchSystem.getTerms();
|
||||
this._openSearchSystem.setSearchTerms(terms);
|
||||
|
||||
// To avoid CSS transitions causing flickering
|
||||
// of the selection when the first search result
|
||||
// stays the same, we hide the content while
|
||||
// filling in the results and setting the initial
|
||||
// selection.
|
||||
// To avoid CSS transitions causing flickering when the first search
|
||||
// result stays the same, we hide the content while filling in the
|
||||
// results.
|
||||
this._content.hide();
|
||||
|
||||
for (let i = 0; i < results.length; i++) {
|
||||
@ -441,97 +434,38 @@ const SearchResults = new Lang.Class({
|
||||
this._updateProviderResults(provider, providerResults, terms);
|
||||
}
|
||||
|
||||
this._maybeSetInitialSelection();
|
||||
this._content.show();
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_modifyActorSelection: function(resultDisplay, up) {
|
||||
let success;
|
||||
let index = resultDisplay.getSelectionIndex();
|
||||
if (up && index == -1)
|
||||
index = resultDisplay.getVisibleResultCount() - 1;
|
||||
else if (up)
|
||||
index = index - 1;
|
||||
else
|
||||
index = index + 1;
|
||||
return resultDisplay.selectIndex(index);
|
||||
activateDefault: function() {
|
||||
if (this._defaultResult)
|
||||
this._defaultResult.activate();
|
||||
},
|
||||
|
||||
selectUp: function(recursing) {
|
||||
if (this._selectedOpenSearchButton == -1) {
|
||||
for (let i = this._selectedProvider; i >= 0; i--) {
|
||||
let meta = this._providerMeta[i];
|
||||
if (!meta.actor.visible)
|
||||
continue;
|
||||
let success = this._modifyActorSelection(meta.resultDisplay, true);
|
||||
if (success) {
|
||||
this._selectedProvider = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this._selectedOpenSearchButton == -1)
|
||||
this._selectedOpenSearchButton = this._openSearchProviders.length;
|
||||
this._selectedOpenSearchButton--;
|
||||
this._updateOpenSearchButtonState();
|
||||
if (this._selectedOpenSearchButton >= 0)
|
||||
return;
|
||||
|
||||
if (this._providerMeta.length > 0 && !recursing) {
|
||||
this._selectedProvider = this._providerMeta.length - 1;
|
||||
this.selectUp(true);
|
||||
}
|
||||
highlightDefault: function(highlight) {
|
||||
this._highlightDefault = highlight;
|
||||
if (this._defaultResult)
|
||||
this._defaultResult.setSelected(highlight);
|
||||
},
|
||||
|
||||
selectDown: function(recursing) {
|
||||
let current = this._selectedProvider;
|
||||
if (this._selectedOpenSearchButton == -1) {
|
||||
if (current == -1)
|
||||
current = 0;
|
||||
for (let i = current; i < this._providerMeta.length; i++) {
|
||||
let meta = this._providerMeta[i];
|
||||
if (!meta.actor.visible)
|
||||
continue;
|
||||
let success = this._modifyActorSelection(meta.resultDisplay, false);
|
||||
if (success) {
|
||||
this._selectedProvider = i;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
this._selectedOpenSearchButton++;
|
||||
|
||||
if (this._selectedOpenSearchButton < this._openSearchProviders.length) {
|
||||
this._updateOpenSearchButtonState();
|
||||
navigateFocus: function(direction) {
|
||||
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
|
||||
if (direction == Gtk.DirectionType.TAB_BACKWARD ||
|
||||
direction == (rtl ? Gtk.DirectionType.RIGHT
|
||||
: Gtk.DirectionType.LEFT) ||
|
||||
direction == Gtk.DirectionType.UP) {
|
||||
this.actor.navigate_focus(null, direction, false);
|
||||
return;
|
||||
}
|
||||
|
||||
this._selectedOpenSearchButton = -1;
|
||||
this._updateOpenSearchButtonState();
|
||||
|
||||
if (this._providerMeta.length > 0 && !recursing) {
|
||||
this._selectedProvider = 0;
|
||||
this.selectDown(true);
|
||||
let from = this._defaultResult ? this._defaultResult.actor : null;
|
||||
this.actor.navigate_focus(from, direction, false);
|
||||
if (this._defaultResult) {
|
||||
// The default result appears focused, so navigate directly to the
|
||||
// next result.
|
||||
this.actor.navigate_focus(global.stage.key_focus, direction, false);
|
||||
}
|
||||
},
|
||||
|
||||
activateSelected: function() {
|
||||
if (this._selectedOpenSearchButton != -1) {
|
||||
let provider = this._openSearchProviders[this._selectedOpenSearchButton];
|
||||
this._openSearchSystem.activateResult(provider.id);
|
||||
Main.overview.hide();
|
||||
return;
|
||||
}
|
||||
|
||||
let current = this._selectedProvider;
|
||||
if (current < 0)
|
||||
return;
|
||||
let meta = this._providerMeta[current];
|
||||
let resultDisplay = meta.resultDisplay;
|
||||
resultDisplay.activateSelected();
|
||||
Main.overview.hide();
|
||||
}
|
||||
});
|
||||
|
@ -48,6 +48,11 @@ function _setLabelsForMessage(dialog, message) {
|
||||
_setLabelText(dialog.descriptionLabel, labels[1]);
|
||||
}
|
||||
|
||||
function _createIcon(gicon) {
|
||||
return new St.Icon({ gicon: gicon,
|
||||
style_class: 'shell-mount-operation-icon' })
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
const ListItem = new Lang.Class({
|
||||
@ -109,12 +114,11 @@ const ShellMountOperation = new Lang.Class({
|
||||
this.mountOp.connect('aborted',
|
||||
Lang.bind(this, this._onAborted));
|
||||
|
||||
this._icon = new St.Icon({ gicon: source.get_icon(),
|
||||
style_class: 'shell-mount-operation-icon' });
|
||||
this._gicon = source.get_icon();
|
||||
},
|
||||
|
||||
_onAskQuestion: function(op, message, choices) {
|
||||
this._dialog = new ShellMountQuestionDialog(this._icon);
|
||||
this._dialog = new ShellMountQuestionDialog(this._gicon);
|
||||
|
||||
this._dialog.connect('response',
|
||||
Lang.bind(this, function(object, choice) {
|
||||
@ -131,7 +135,7 @@ const ShellMountOperation = new Lang.Class({
|
||||
|
||||
_onAskPassword: function(op, message) {
|
||||
this._notificationShowing = true;
|
||||
this._source = new ShellMountPasswordSource(message, this._icon, this._reaskPassword);
|
||||
this._source = new ShellMountPasswordSource(message, this._gicon, this._reaskPassword);
|
||||
|
||||
this._source.connect('password-ready',
|
||||
Lang.bind(this, function(source, password) {
|
||||
@ -166,7 +170,7 @@ const ShellMountOperation = new Lang.Class({
|
||||
let message = op.get_show_processes_message();
|
||||
|
||||
if (!this._processesDialog) {
|
||||
this._processesDialog = new ShellProcessesDialog(this._icon);
|
||||
this._processesDialog = new ShellProcessesDialog(this._gicon);
|
||||
this._dialog = this._processesDialog;
|
||||
|
||||
this._processesDialog.connect('response',
|
||||
@ -192,14 +196,14 @@ const ShellMountQuestionDialog = new Lang.Class({
|
||||
Name: 'ShellMountQuestionDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(icon) {
|
||||
_init: function(gicon) {
|
||||
this.parent({ styleClass: 'mount-question-dialog' });
|
||||
|
||||
let mainContentLayout = new St.BoxLayout();
|
||||
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
||||
y_fill: false });
|
||||
|
||||
this._iconBin = new St.Bin({ child: icon });
|
||||
this._iconBin = new St.Bin({ child: _createIcon(gicon) });
|
||||
mainContentLayout.add(this._iconBin,
|
||||
{ x_fill: true,
|
||||
y_fill: false,
|
||||
@ -238,16 +242,21 @@ const ShellMountPasswordSource = new Lang.Class({
|
||||
Name: 'ShellMountPasswordSource',
|
||||
Extends: MessageTray.Source,
|
||||
|
||||
_init: function(message, icon, reaskPassword) {
|
||||
_init: function(message, gicon, reaskPassword) {
|
||||
this._gicon = gicon;
|
||||
|
||||
let strings = message.split('\n');
|
||||
this.parent(strings[0]);
|
||||
|
||||
this._notification = new ShellMountPasswordNotification(this, strings, icon, reaskPassword);
|
||||
this._notification = new ShellMountPasswordNotification(this, strings, reaskPassword);
|
||||
|
||||
// add ourselves as a source, and popup the notification
|
||||
Main.messageTray.add(this);
|
||||
this.notify(this._notification);
|
||||
},
|
||||
|
||||
createNotificationIcon: function() {
|
||||
return _createIcon(this._gicon);
|
||||
},
|
||||
});
|
||||
Signals.addSignalMethods(ShellMountPasswordSource.prototype);
|
||||
|
||||
@ -255,8 +264,8 @@ const ShellMountPasswordNotification = new Lang.Class({
|
||||
Name: 'ShellMountPasswordNotification',
|
||||
Extends: MessageTray.Notification,
|
||||
|
||||
_init: function(source, strings, icon, reaskPassword) {
|
||||
this.parent(source, strings[0], null, { customContent: true, icon: icon });
|
||||
_init: function(source, strings, reaskPassword) {
|
||||
this.parent(source, strings[0], null, { customContent: true });
|
||||
|
||||
// set the notification to transient and urgent, so that it
|
||||
// expands out
|
||||
@ -297,14 +306,14 @@ const ShellProcessesDialog = new Lang.Class({
|
||||
Name: 'ShellProcessesDialog',
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function(icon) {
|
||||
_init: function(gicon) {
|
||||
this.parent({ styleClass: 'show-processes-dialog' });
|
||||
|
||||
let mainContentLayout = new St.BoxLayout();
|
||||
this.contentLayout.add(mainContentLayout, { x_fill: true,
|
||||
y_fill: false });
|
||||
|
||||
this._iconBin = new St.Bin({ child: icon });
|
||||
this._iconBin = new St.Bin({ child: _createIcon(gicon) });
|
||||
mainContentLayout.add(this._iconBin,
|
||||
{ x_fill: true,
|
||||
y_fill: false,
|
||||
|
@ -181,7 +181,7 @@ const Indicator = new Lang.Class({
|
||||
|
||||
// update connected property
|
||||
if (device.can_connect)
|
||||
item._connectedMenuitem.setToggleState(device.connected);
|
||||
item._connectedMenuItem.setToggleState(device.connected);
|
||||
},
|
||||
|
||||
_createDeviceItem: function(device) {
|
||||
|
@ -41,7 +41,7 @@ const XKBIndicator = new Lang.Class({
|
||||
Extends: PanelMenu.Button,
|
||||
|
||||
_init: function() {
|
||||
this.parent(0.0);
|
||||
this.parent(0.0, _("Keyboard"));
|
||||
|
||||
this._container = new Shell.GenericContainer();
|
||||
this._container.connect('get-preferred-width', Lang.bind(this, this._containerGetPreferredWidth));
|
||||
|
@ -1844,7 +1844,7 @@ const NMApplet = new Lang.Class({
|
||||
if (a._type != NetworkManager.SETTING_VPN_SETTING_NAME) {
|
||||
// find a good device to be considered primary
|
||||
a._primaryDevice = null;
|
||||
let devices = a.get_devices();
|
||||
let devices = a.get_devices() || [];
|
||||
for (let j = 0; j < devices.length; j++) {
|
||||
let d = devices[j];
|
||||
if (d._delegate) {
|
||||
|
@ -132,6 +132,9 @@ const Client = new Lang.Class({
|
||||
let channel = channels[i];
|
||||
let [targetHandle, targetHandleType] = channel.get_handle();
|
||||
|
||||
if (Shell.is_channel_invalidated(channel))
|
||||
continue;
|
||||
|
||||
/* Only observe contact text channels */
|
||||
if ((!(channel instanceof Tp.TextChannel)) ||
|
||||
targetHandleType != Tp.HandleType.CONTACT)
|
||||
@ -181,6 +184,9 @@ const Client = new Lang.Class({
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Shell.is_channel_invalidated(channel))
|
||||
continue;
|
||||
|
||||
// 'notify' will be true when coming from an actual HandleChannels
|
||||
// call, and not when from a successful Claim call. The point is
|
||||
// we don't want to notify for a channel we just claimed which
|
||||
@ -231,12 +237,19 @@ const Client = new Lang.Class({
|
||||
let channel = channels[0];
|
||||
let chanType = channel.get_channel_type();
|
||||
|
||||
if (Shell.is_channel_invalidated(channel)) {
|
||||
Shell.decline_dispatch_op(context, 'Channel is invalidated');
|
||||
return;
|
||||
}
|
||||
|
||||
if (chanType == Tp.IFACE_CHANNEL_TYPE_TEXT)
|
||||
this._approveTextChannel(account, conn, channel, dispatchOp, context);
|
||||
else if (chanType == Tp.IFACE_CHANNEL_TYPE_CALL)
|
||||
this._approveCall(account, conn, channel, dispatchOp, context);
|
||||
else if (chanType == Tp.IFACE_CHANNEL_TYPE_FILE_TRANSFER)
|
||||
this._approveFileTransfer(account, conn, channel, dispatchOp, context);
|
||||
else
|
||||
Shell.decline_dispatch_op(context, 'Unsupported channel type');
|
||||
},
|
||||
|
||||
_approveTextChannel: function(account, conn, channel, dispatchOp, context) {
|
||||
@ -853,6 +866,8 @@ const ChatNotification = new Lang.Class({
|
||||
|
||||
this._lastGroupActor.add(body, props.childProps);
|
||||
|
||||
this.updated();
|
||||
|
||||
let timestamp = props.timestamp;
|
||||
this._history.unshift({ actor: body, time: timestamp,
|
||||
realMessage: group != 'meta' });
|
||||
|
@ -1,6 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const Clutter = imports.gi.Clutter;
|
||||
const GLib = imports.gi.GLib;
|
||||
const Lang = imports.lang;
|
||||
const Mainloop = imports.mainloop;
|
||||
const Shell = imports.gi.Shell;
|
||||
@ -209,9 +210,14 @@ const ClutterFrameTicker = new Lang.Class({
|
||||
|
||||
_init : function() {
|
||||
// We don't have a finite duration; tweener will tell us to stop
|
||||
// when we need to stop, so use 1000 seconds as "infinity"
|
||||
// when we need to stop, so use 1000 seconds as "infinity", and
|
||||
// set the timeline to loop. Doing this means we have to track
|
||||
// time ourselves, since clutter timeline's time will cycle
|
||||
// instead of strictly increase.
|
||||
this._timeline = new Clutter.Timeline({ duration: 1000*1000 });
|
||||
this._timeline.set_loop(true);
|
||||
this._startTime = -1;
|
||||
this._currentTime = -1;
|
||||
|
||||
this._timeline.connect('new-frame', Lang.bind(this,
|
||||
function(timeline, frame) {
|
||||
@ -234,17 +240,18 @@ const ClutterFrameTicker = new Lang.Class({
|
||||
// That looks bad, so we always start at the first frame of the
|
||||
// animation then only do frame dropping from there.
|
||||
if (this._startTime < 0)
|
||||
this._startTime = this._timeline.get_elapsed_time();
|
||||
this._startTime = GLib.get_monotonic_time() / 1000.0;
|
||||
|
||||
// currentTime is in milliseconds
|
||||
let perf_log = Shell.PerfLog.get_default();
|
||||
this._currentTime = GLib.get_monotonic_time() / 1000.0 - this._startTime;
|
||||
perf_log.event("tweener.framePrepareStart");
|
||||
this.emit('prepare-frame');
|
||||
perf_log.event("tweener.framePrepareDone");
|
||||
},
|
||||
|
||||
getTime : function() {
|
||||
return this._timeline.get_elapsed_time();
|
||||
return this._currentTime;
|
||||
},
|
||||
|
||||
start : function() {
|
||||
@ -257,6 +264,7 @@ const ClutterFrameTicker = new Lang.Class({
|
||||
stop : function() {
|
||||
this._timeline.stop();
|
||||
this._startTime = -1;
|
||||
this._currentTime = -1;
|
||||
global.end_work();
|
||||
}
|
||||
});
|
||||
|
@ -9,6 +9,7 @@ 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 GnomeSession = imports.misc.gnomeSession;
|
||||
const Main = imports.ui.main;
|
||||
@ -56,6 +57,7 @@ const IMStatusItem = new Lang.Class({
|
||||
this._icon.icon_name = iconName;
|
||||
|
||||
this.label = new St.Label({ text: label });
|
||||
this.actor.label_actor = this.label;
|
||||
this.addActor(this.label);
|
||||
}
|
||||
});
|
||||
@ -163,6 +165,8 @@ const IMStatusChooserItem = new Lang.Class({
|
||||
Lang.bind(this, this._IMAccountsChanged));
|
||||
this._accountMgr.connect('account-removed',
|
||||
Lang.bind(this, this._IMAccountsChanged));
|
||||
this._accountMgr.connect('account-validity-changed',
|
||||
Lang.bind(this, this._IMAccountsChanged));
|
||||
this._accountMgr.prepare_async(null, Lang.bind(this,
|
||||
function(mgr) {
|
||||
let [presence, status, msg] = mgr.get_most_available_presence();
|
||||
@ -388,8 +392,15 @@ const IMStatusChooserItem = new Lang.Class({
|
||||
if (!this._imPresenceRestored)
|
||||
return;
|
||||
|
||||
let savedStatus = global.settings.get_int('saved-session-presence');
|
||||
if (!this._sessionPresenceRestored) {
|
||||
let savedStatus = global.settings.get_int('saved-session-presence');
|
||||
|
||||
// We should never save/restore a status other than AVAILABLE
|
||||
// or BUSY
|
||||
if (savedStatus != GnomeSession.PresenceStatus.AVAILABLE &&
|
||||
savedStatus != GnomeSession.PresenceStatus.BUSY)
|
||||
savedStatus = GnomeSession.PresenceStatus.AVAILABLE;
|
||||
|
||||
if (sessionStatus != savedStatus) {
|
||||
this._presence.status = savedStatus;
|
||||
return;
|
||||
@ -397,7 +408,10 @@ const IMStatusChooserItem = new Lang.Class({
|
||||
this._sessionPresenceRestored = true;
|
||||
}
|
||||
|
||||
global.settings.set_int('saved-session-presence', sessionStatus);
|
||||
if ((sessionStatus == GnomeSession.PresenceStatus.AVAILABLE ||
|
||||
sessionStatus == GnomeSession.PresenceStatus.BUSY) &&
|
||||
savedStatus != sessionStatus)
|
||||
global.settings.set_int('saved-session-presence', sessionStatus);
|
||||
|
||||
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
|
||||
let newPresence, status;
|
||||
@ -423,6 +437,8 @@ const UserMenuButton = new Lang.Class({
|
||||
_init: function() {
|
||||
this.parent(0.0);
|
||||
|
||||
this.actor.accessible_role = Atk.Role.MENU;
|
||||
|
||||
let box = new St.BoxLayout({ name: 'panelUserMenu' });
|
||||
this.actor.add_actor(box);
|
||||
|
||||
@ -718,8 +734,8 @@ const UserMenuButton = new Lang.Class({
|
||||
|
||||
if (this._haveSuspend &&
|
||||
this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) {
|
||||
// Ensure we only suspend after the screensaver has activated
|
||||
this._screenSaverProxy.SetActiveRemote(true, Lang.bind(this, function() {
|
||||
// Ensure we only suspend after locking the screen
|
||||
this._screenSaverProxy.LockRemote(Lang.bind(this, function() {
|
||||
this._upClient.suspend_sync(null);
|
||||
}));
|
||||
} else {
|
||||
|
@ -133,14 +133,14 @@ const SearchTab = new Lang.Class({
|
||||
this._text.connect('text-changed', Lang.bind(this, this._onTextChanged));
|
||||
this._text.connect('key-press-event', Lang.bind(this, function (o, e) {
|
||||
// We can't connect to 'activate' here because search providers
|
||||
// might want to do something with the modifiers in activateSelected.
|
||||
// might want to do something with the modifiers in activateDefault.
|
||||
let symbol = e.get_key_symbol();
|
||||
if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) {
|
||||
if (this._searchTimeoutId > 0) {
|
||||
Mainloop.source_remove(this._searchTimeoutId);
|
||||
this._doSearch();
|
||||
}
|
||||
this._searchResults.activateSelected();
|
||||
this._searchResults.activateDefault();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@ -148,9 +148,33 @@ const SearchTab = new Lang.Class({
|
||||
|
||||
this._entry.connect('notify::mapped', Lang.bind(this, this._onMapped));
|
||||
|
||||
global.stage.connect('notify::key-focus', Lang.bind(this, this._updateCursorVisibility));
|
||||
global.stage.connect('notify::key-focus', Lang.bind(this, this._onStageKeyFocusChanged));
|
||||
|
||||
this._capturedEventId = 0;
|
||||
|
||||
this._text.connect('key-focus-in', Lang.bind(this, function() {
|
||||
this._searchResults.highlightDefault(true);
|
||||
}));
|
||||
this._text.connect('key-focus-out', Lang.bind(this, function() {
|
||||
this._searchResults.highlightDefault(false);
|
||||
}));
|
||||
|
||||
// Since the entry isn't inside the results container we install this
|
||||
// dummy widget as the last results container child so that we can
|
||||
// include the entry in the keynav tab path...
|
||||
this._focusTrap = new St.Bin({ can_focus: true });
|
||||
this._focusTrap.connect('key-focus-in', Lang.bind(this, function() {
|
||||
this._entry.grab_key_focus();
|
||||
}));
|
||||
// ... but make it unfocusable using arrow keys keynav by making its
|
||||
// bounding box always contain the possible focus source's bounding
|
||||
// box since StWidget's keynav logic won't ever select it as a target
|
||||
// in that case.
|
||||
this._focusTrap.add_constraint(new Clutter.BindConstraint({ source: this._searchResults.actor,
|
||||
coordinate: Clutter.BindCoordinate.ALL }));
|
||||
this._searchResults.actor.add_actor(this._focusTrap);
|
||||
|
||||
global.focus_manager.add_group(this._searchResults.actor);
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
@ -163,21 +187,29 @@ const SearchTab = new Lang.Class({
|
||||
// incorrectly when we remove focus
|
||||
// (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */
|
||||
if (this._text.text != '')
|
||||
this._reset();
|
||||
this.reset();
|
||||
},
|
||||
|
||||
_reset: function () {
|
||||
this._text.text = '';
|
||||
|
||||
reset: function () {
|
||||
global.stage.set_key_focus(null);
|
||||
|
||||
this._entry.text = '';
|
||||
|
||||
this._text.set_cursor_visible(true);
|
||||
this._text.set_selection(0, 0);
|
||||
},
|
||||
|
||||
_updateCursorVisibility: function() {
|
||||
_onStageKeyFocusChanged: function() {
|
||||
let focus = global.stage.get_key_focus();
|
||||
this._text.set_cursor_visible(focus == this._text);
|
||||
let appearFocused = (this._entry.contains(focus) ||
|
||||
this._searchResults.actor.contains(focus));
|
||||
|
||||
this._text.set_cursor_visible(appearFocused);
|
||||
|
||||
if (appearFocused)
|
||||
this._entry.add_style_pseudo_class('focus');
|
||||
else
|
||||
this._entry.remove_style_pseudo_class('focus');
|
||||
},
|
||||
|
||||
_onMapped: function() {
|
||||
@ -228,7 +260,7 @@ const SearchTab = new Lang.Class({
|
||||
if (this._iconClickedId == 0) {
|
||||
this._iconClickedId = this._entry.connect('secondary-icon-clicked',
|
||||
Lang.bind(this, function() {
|
||||
this._reset();
|
||||
this.reset();
|
||||
}));
|
||||
}
|
||||
this._activate();
|
||||
@ -254,25 +286,37 @@ const SearchTab = new Lang.Class({
|
||||
|
||||
_onKeyPress: function(entry, event) {
|
||||
let symbol = event.get_key_symbol();
|
||||
if (symbol == Clutter.Up) {
|
||||
if (!this.active)
|
||||
return true;
|
||||
this._searchResults.selectUp(false);
|
||||
|
||||
return true;
|
||||
} else if (symbol == Clutter.Down) {
|
||||
if (!this.active)
|
||||
return true;
|
||||
|
||||
this._searchResults.selectDown(false);
|
||||
return true;
|
||||
} else if (symbol == Clutter.Escape) {
|
||||
if (symbol == Clutter.Escape) {
|
||||
if (this._isActivated()) {
|
||||
this._reset();
|
||||
this.reset();
|
||||
return true;
|
||||
}
|
||||
} else if (this.active) {
|
||||
let arrowNext, nextDirection;
|
||||
if (entry.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
arrowNext = Clutter.Left;
|
||||
nextDirection = Gtk.DirectionType.LEFT;
|
||||
} else {
|
||||
arrowNext = Clutter.Right;
|
||||
nextDirection = Gtk.DirectionType.RIGHT;
|
||||
}
|
||||
|
||||
if (symbol == Clutter.Tab) {
|
||||
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_FORWARD);
|
||||
return true;
|
||||
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||
this._focusTrap.can_focus = false;
|
||||
this._searchResults.navigateFocus(Gtk.DirectionType.TAB_BACKWARD);
|
||||
this._focusTrap.can_focus = true;
|
||||
return true;
|
||||
} else if (symbol == Clutter.Down) {
|
||||
this._searchResults.navigateFocus(Gtk.DirectionType.DOWN);
|
||||
return true;
|
||||
} else if (symbol == arrowNext && this._text.position == -1) {
|
||||
this._searchResults.navigateFocus(nextDirection);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
@ -284,7 +328,7 @@ const SearchTab = new Lang.Class({
|
||||
// the user clicked outside after activating the entry, but
|
||||
// with no search term entered and no keyboard button pressed
|
||||
// - cancel the search
|
||||
this._reset();
|
||||
this.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@ -486,7 +530,7 @@ const ViewSelector = new Lang.Class({
|
||||
let childBox = new Clutter.ActorBox();
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = allocWidth - barNatWidth;
|
||||
childBox.x2 = allocWidth;
|
||||
} else {
|
||||
@ -495,7 +539,7 @@ const ViewSelector = new Lang.Class({
|
||||
}
|
||||
this._tabBox.allocate(childBox, flags);
|
||||
|
||||
if (this.actor.get_direction() == St.TextDirection.RTL) {
|
||||
if (this.actor.get_text_direction() == Clutter.TextDirection.RTL) {
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = searchNatWidth;
|
||||
} else {
|
||||
@ -511,24 +555,34 @@ const ViewSelector = new Lang.Class({
|
||||
},
|
||||
|
||||
_onStageKeyPress: function(actor, event) {
|
||||
let modifiers = Shell.get_event_state(event);
|
||||
let modifiers = event.get_state();
|
||||
let symbol = event.get_key_symbol();
|
||||
|
||||
if (symbol == Clutter.Escape) {
|
||||
Main.overview.hide();
|
||||
if (this._searchTab.active)
|
||||
this._searchTab.reset();
|
||||
else
|
||||
Main.overview.hide();
|
||||
return true;
|
||||
} else if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
|
||||
if (symbol == Clutter.Page_Up) {
|
||||
if (!this._searchTab.active)
|
||||
} else if (Clutter.keysym_to_unicode(symbol) ||
|
||||
(symbol == Clutter.BackSpace && this._searchTab.active)) {
|
||||
this._searchTab.startSearch(event);
|
||||
} else if (!this._searchTab.active) {
|
||||
if (modifiers & Clutter.ModifierType.CONTROL_MASK) {
|
||||
if (symbol == Clutter.Page_Up) {
|
||||
this._prevTab();
|
||||
return true;
|
||||
} else if (symbol == Clutter.Page_Down) {
|
||||
if (!this._searchTab.active)
|
||||
return true;
|
||||
} else if (symbol == Clutter.Page_Down) {
|
||||
this._nextTab();
|
||||
return true;
|
||||
}
|
||||
} else if (symbol == Clutter.Tab) {
|
||||
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
|
||||
return true;
|
||||
} else if (symbol == Clutter.ISO_Left_Tab) {
|
||||
this._activeTab.page.navigate_focus(null, Gtk.DirectionType.TAB_BACKWARD, false);
|
||||
return true;
|
||||
}
|
||||
} else if (Clutter.keysym_to_unicode(symbol)) {
|
||||
this._searchTab.startSearch(event);
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
@ -17,7 +17,7 @@ const FISH_NAME = 'wanda';
|
||||
const FISH_SPEED = 300;
|
||||
const FISH_COMMAND = 'fortune';
|
||||
|
||||
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/pixmaps';
|
||||
const GNOME_PANEL_PIXMAPDIR = '../gnome-panel/fish';
|
||||
const FISH_GROUP = 'Fish Animation';
|
||||
|
||||
const MAGIC_FISH_KEY = 'free the fish';
|
||||
|
@ -14,6 +14,12 @@ const WindowAttentionHandler = new Lang.Class({
|
||||
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
|
||||
},
|
||||
|
||||
_getTitleAndBanner: function(app, window) {
|
||||
let title = app.get_name();
|
||||
let banner = _("'%s' is ready").format(window.get_title());
|
||||
return [title, banner]
|
||||
},
|
||||
|
||||
_onWindowDemandsAttention : function(display, window) {
|
||||
// We don't want to show the notification when the window is already focused,
|
||||
// because this is rather pointless.
|
||||
@ -30,16 +36,15 @@ const WindowAttentionHandler = new Lang.Class({
|
||||
let source = new Source(app, window);
|
||||
Main.messageTray.add(source);
|
||||
|
||||
let banner = _("'%s' is ready").format(window.title);
|
||||
let title = app.get_name();
|
||||
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||
|
||||
let notification = new MessageTray.Notification(source, title, banner);
|
||||
source.notify(notification);
|
||||
|
||||
source.signalIDs.push(window.connect('notify::title',
|
||||
Lang.bind(this, function() {
|
||||
notification.update(title, banner);
|
||||
})));
|
||||
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function() {
|
||||
let [title, banner] = this._getTitleAndBanner(app, window);
|
||||
notification.update(title, banner);
|
||||
})));
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -13,6 +13,7 @@ const WorkspaceSwitcherPopup = imports.ui.workspaceSwitcherPopup;
|
||||
const Main = imports.ui.main;
|
||||
const Tweener = imports.ui.tweener;
|
||||
|
||||
const SHELL_KEYBINDINGS_SCHEMA = 'org.gnome.shell.keybindings';
|
||||
const WINDOW_ANIMATION_TIME = 0.25;
|
||||
const DIM_TIME = 0.500;
|
||||
const UNDIM_TIME = 0.250;
|
||||
@ -134,6 +135,10 @@ const WindowManager = new Lang.Class({
|
||||
Lang.bind(this, this._startAppSwitcher));
|
||||
Meta.keybindings_set_custom_handler('switch-panels',
|
||||
Lang.bind(this, this._startA11ySwitcher));
|
||||
global.display.add_keybinding('open-application-menu',
|
||||
new Gio.Settings({ schema: SHELL_KEYBINDINGS_SCHEMA }),
|
||||
Meta.KeyBindingFlags.NONE,
|
||||
Lang.bind(this, this._openAppMenu));
|
||||
|
||||
Main.overview.connect('showing', Lang.bind(this, function() {
|
||||
for (let i = 0; i < this._dimmedWindows.length; i++)
|
||||
@ -186,7 +191,7 @@ const WindowManager = new Lang.Class({
|
||||
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
let xDest = primary.x;
|
||||
if (St.Widget.get_default_direction() == St.TextDirection.RTL)
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
|
||||
xDest += primary.width;
|
||||
|
||||
Tweener.addTween(actor,
|
||||
@ -547,6 +552,10 @@ const WindowManager = new Lang.Class({
|
||||
Main.ctrlAltTabManager.popup(backwards, binding.get_mask());
|
||||
},
|
||||
|
||||
_openAppMenu : function(display, screen, window, event, binding) {
|
||||
Main.panel.openAppMenu();
|
||||
},
|
||||
|
||||
_showWorkspaceSwitcher : function(display, screen, window, binding) {
|
||||
if (screen.n_workspaces == 1)
|
||||
return;
|
||||
@ -567,7 +576,7 @@ const WindowManager = new Lang.Class({
|
||||
},
|
||||
|
||||
actionMoveWorkspaceLeft: function() {
|
||||
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
let indexToActivate = activeWorkspaceIndex;
|
||||
if (rtl && activeWorkspaceIndex < global.screen.n_workspaces - 1)
|
||||
@ -583,7 +592,7 @@ const WindowManager = new Lang.Class({
|
||||
},
|
||||
|
||||
actionMoveWorkspaceRight: function() {
|
||||
let rtl = (St.Widget.get_default_direction() == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL);
|
||||
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
|
||||
let indexToActivate = activeWorkspaceIndex;
|
||||
if (rtl && activeWorkspaceIndex > 0)
|
||||
|
@ -528,7 +528,7 @@ const WindowOverlay = new Lang.Class({
|
||||
|
||||
let settings = new Gio.Settings({ schema: BUTTON_LAYOUT_SCHEMA });
|
||||
let layout = settings.get_string(BUTTON_LAYOUT_KEY);
|
||||
let rtl = St.Widget.get_default_direction() == St.TextDirection.RTL;
|
||||
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||
|
||||
let split = layout.split(":");
|
||||
let side;
|
||||
|
@ -19,12 +19,12 @@ const WorkspaceSwitcherPopup = new Lang.Class({
|
||||
Name: 'WorkspaceSwitcherPopup',
|
||||
|
||||
_init : function() {
|
||||
this.actor = new St.Group({ reactive: true,
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: global.screen_width,
|
||||
height: global.screen_height,
|
||||
style_class: 'workspace-switcher-group' });
|
||||
this.actor = new St.Widget({ reactive: true,
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: global.screen_width,
|
||||
height: global.screen_height,
|
||||
style_class: 'workspace-switcher-group' });
|
||||
Main.uiGroup.add_actor(this.actor);
|
||||
|
||||
this._container = new St.BoxLayout({ style_class: 'workspace-switcher-container' });
|
||||
|
@ -25,6 +25,8 @@ const SLIDE_ANIMATION_TIME = 0.2;
|
||||
// placeholder exactly.
|
||||
const WORKSPACE_CUT_SIZE = 10;
|
||||
|
||||
const WORKSPACE_KEEP_ALIVE_TIME = 100;
|
||||
|
||||
const WindowClone = new Lang.Class({
|
||||
Name: 'WindowClone',
|
||||
|
||||
@ -156,24 +158,14 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
|
||||
this._removed = false;
|
||||
|
||||
this.actor = new St.Group({ reactive: true,
|
||||
clip_to_allocation: true,
|
||||
style_class: 'workspace-thumbnail' });
|
||||
this.actor = new St.Widget({ clip_to_allocation: true,
|
||||
style_class: 'workspace-thumbnail' });
|
||||
this.actor._delegate = this;
|
||||
|
||||
this._contents = new Clutter.Group();
|
||||
this.actor.add_actor(this._contents);
|
||||
|
||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||
this.actor.connect('button-press-event', Lang.bind(this,
|
||||
function(actor, event) {
|
||||
return true;
|
||||
}));
|
||||
this.actor.connect('button-release-event', Lang.bind(this,
|
||||
function(actor, event) {
|
||||
this._activate();
|
||||
return true;
|
||||
}));
|
||||
|
||||
this._background = Meta.BackgroundActor.new_for_screen(global.screen);
|
||||
this._contents.add_actor(this._background);
|
||||
@ -405,7 +397,9 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
let clone = new WindowClone(win);
|
||||
|
||||
clone.connect('selected',
|
||||
Lang.bind(this, this._activate));
|
||||
Lang.bind(this, function(clone, time) {
|
||||
this.activate(time);
|
||||
}));
|
||||
clone.connect('drag-begin',
|
||||
Lang.bind(this, function(clone) {
|
||||
Main.overview.beginWindowDrag();
|
||||
@ -430,7 +424,7 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
return clone;
|
||||
},
|
||||
|
||||
_activate : function (clone, time) {
|
||||
activate : function (time) {
|
||||
if (this.state > ThumbnailState.NORMAL)
|
||||
return;
|
||||
|
||||
@ -441,8 +435,8 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
this.metaWorkspace.activate(time);
|
||||
},
|
||||
|
||||
// Draggable target interface
|
||||
handleDragOver : function(source, actor, x, y, time) {
|
||||
// Draggable target interface used only by ThumbnailsBox
|
||||
handleDragOverInternal : function(source, time) {
|
||||
if (source == Main.xdndHandler) {
|
||||
this.metaWorkspace.activate(time);
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
@ -451,11 +445,6 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
if (this.state > ThumbnailState.NORMAL)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
let [w, h] = this.actor.get_transformed_size();
|
||||
// Bubble up if we're in the "workspace cut".
|
||||
if (y < WORKSPACE_CUT_SIZE || y > h - WORKSPACE_CUT_SIZE)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
||||
return DND.DragMotionResult.MOVE_DROP;
|
||||
if (source.shellWorkspaceLaunch)
|
||||
@ -464,7 +453,7 @@ const WorkspaceThumbnail = new Lang.Class({
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
},
|
||||
|
||||
acceptDrop : function(source, actor, x, y, time) {
|
||||
acceptDropInternal : function(source, time) {
|
||||
if (this.state > ThumbnailState.NORMAL)
|
||||
return false;
|
||||
|
||||
@ -502,7 +491,8 @@ const ThumbnailsBox = new Lang.Class({
|
||||
Name: 'ThumbnailsBox',
|
||||
|
||||
_init: function() {
|
||||
this.actor = new Shell.GenericContainer({ style_class: 'workspace-thumbnails',
|
||||
this.actor = new Shell.GenericContainer({ reactive: true,
|
||||
style_class: 'workspace-thumbnails',
|
||||
request_mode: Clutter.RequestMode.WIDTH_FOR_HEIGHT });
|
||||
this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth));
|
||||
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
|
||||
@ -531,6 +521,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
this._indicator = indicator;
|
||||
this.actor.add_actor(indicator);
|
||||
|
||||
this._dropWorkspace = -1;
|
||||
this._dropPlaceholderPos = -1;
|
||||
this._dropPlaceholder = new St.Bin({ style_class: 'placeholder' });
|
||||
this.actor.add_actor(this._dropPlaceholder);
|
||||
@ -548,6 +539,9 @@ const ThumbnailsBox = new Lang.Class({
|
||||
|
||||
this._thumbnails = [];
|
||||
|
||||
this.actor.connect('button-press-event', function() { return true; });
|
||||
this.actor.connect('button-release-event', Lang.bind(this, this._onButtonRelease));
|
||||
|
||||
Main.overview.connect('item-drag-begin',
|
||||
Lang.bind(this, this._onDragBegin));
|
||||
Main.overview.connect('item-drag-end',
|
||||
@ -562,6 +556,22 @@ const ThumbnailsBox = new Lang.Class({
|
||||
Lang.bind(this, this._onDragCancelled));
|
||||
},
|
||||
|
||||
_onButtonRelease: function(actor, event) {
|
||||
let [stageX, stageY] = event.get_coords();
|
||||
let [r, x, y] = this.actor.transform_stage_point(stageX, stageY);
|
||||
|
||||
for (let i = 0; i < this._thumbnails.length; i++) {
|
||||
let thumbnail = this._thumbnails[i]
|
||||
let [w, h] = thumbnail.actor.get_transformed_size();
|
||||
if (y >= thumbnail.actor.y && y <= thumbnail.actor.y + h) {
|
||||
thumbnail.activate(event.time);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_onDragBegin: function() {
|
||||
this._dragCancelled = false;
|
||||
this._dragMonitor = {
|
||||
@ -607,85 +617,108 @@ const ThumbnailsBox = new Lang.Class({
|
||||
|
||||
// Draggable target interface
|
||||
handleDragOver : function(source, actor, x, y, time) {
|
||||
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||
if (!source.realWindow && !source.shellWorkspaceLaunch && source != Main.xdndHandler)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
if (!Meta.prefs_get_dynamic_workspaces())
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
let spacing = this.actor.get_theme_node().get_length('spacing');
|
||||
let thumbHeight = this._porthole.height * this._scale;
|
||||
|
||||
let workspace = -1;
|
||||
let firstThumbY;
|
||||
this._dropWorkspace = -1;
|
||||
let placeholderPos = -1;
|
||||
let targetBase;
|
||||
if (this._dropPlaceholderPos == 0)
|
||||
firstThumbY = this._dropPlaceholder.y;
|
||||
targetBase = this._dropPlaceholder.y;
|
||||
else
|
||||
firstThumbY = this._thumbnails[0].actor.y;
|
||||
for (let i = 0; i < this._thumbnails.length; i ++) {
|
||||
let targetBase = firstThumbY + (thumbHeight + spacing) * i;
|
||||
|
||||
targetBase = this._thumbnails[0].actor.y;
|
||||
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
|
||||
let length = this._thumbnails.length;
|
||||
for (let i = 0; i < length; i ++) {
|
||||
// Allow the reorder target to have a 10px "cut" into
|
||||
// each side of the thumbnail, to make dragging onto the
|
||||
// placeholder easier
|
||||
let targetTop = targetBase - spacing - WORKSPACE_CUT_SIZE;
|
||||
let [w, h] = this._thumbnails[i].actor.get_transformed_size();
|
||||
let targetBottom = targetBase + WORKSPACE_CUT_SIZE;
|
||||
let nextTargetBase = targetBase + h + spacing;
|
||||
let nextTargetTop = nextTargetBase - spacing - ((i == length - 1) ? 0: WORKSPACE_CUT_SIZE);
|
||||
|
||||
// Expand the target to include the placeholder, if it exists.
|
||||
if (i == this._dropPlaceholderPos)
|
||||
targetBottom += this._dropPlaceholder.get_height();
|
||||
|
||||
if (y > targetTop && y <= targetBottom) {
|
||||
workspace = i;
|
||||
if (y > targetTop && y <= targetBottom && source != Main.xdndHandler) {
|
||||
placeholderPos = i;
|
||||
break;
|
||||
} else if (y > targetBottom && y <= nextTargetTop) {
|
||||
this._dropWorkspace = i;
|
||||
break
|
||||
}
|
||||
|
||||
targetBase = nextTargetBase;
|
||||
targetTop = nextTargetTop;
|
||||
}
|
||||
|
||||
if (this._dropPlaceholderPos != workspace) {
|
||||
this._dropPlaceholderPos = workspace;
|
||||
if (this._dropPlaceholderPos != placeholderPos) {
|
||||
this._dropPlaceholderPos = placeholderPos;
|
||||
this.actor.queue_relayout();
|
||||
}
|
||||
|
||||
if (workspace == -1)
|
||||
if (this._dropWorkspace != -1)
|
||||
return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, time);
|
||||
else if (this._dropPlaceholderPos != -1)
|
||||
return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
|
||||
else
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
return DND.DragMotionResult.MOVE_DROP;
|
||||
},
|
||||
|
||||
acceptDrop: function(source, actor, x, y, time) {
|
||||
if (this._dropPlaceholderPos == -1)
|
||||
return false;
|
||||
if (this._dropWorkspace != -1) {
|
||||
return this._thumbnails[this._dropWorkspace].acceptDropInternal(source, time);
|
||||
} else if (this._dropPlaceholderPos != -1) {
|
||||
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||
return false;
|
||||
|
||||
if (!source.realWindow && !source.shellWorkspaceLaunch)
|
||||
return false;
|
||||
let isWindow = !!source.realWindow;
|
||||
|
||||
let isWindow = !!source.realWindow;
|
||||
// To create a new workspace, we first slide all the windows on workspaces
|
||||
// below us to the next workspace, leaving a blank workspace for us to recycle.
|
||||
let newWorkspaceIndex;
|
||||
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||
|
||||
// To create a new workspace, we first slide all the windows on workspaces
|
||||
// below us to the next workspace, leaving a blank workspace for us to recycle.
|
||||
let newWorkspaceIndex;
|
||||
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||
// Nab all the windows below us.
|
||||
let windows = global.get_window_actors().filter(function(win) {
|
||||
if (isWindow)
|
||||
return win.get_workspace() >= newWorkspaceIndex && win != source;
|
||||
else
|
||||
return win.get_workspace() >= newWorkspaceIndex;
|
||||
});
|
||||
|
||||
// ... move them down one.
|
||||
windows.forEach(function(win) {
|
||||
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
|
||||
true, time);
|
||||
});
|
||||
|
||||
// Nab all the windows below us.
|
||||
let windows = global.get_window_actors().filter(function(win) {
|
||||
if (isWindow)
|
||||
return win.get_workspace() >= newWorkspaceIndex && win != source;
|
||||
else
|
||||
return win.get_workspace() >= newWorkspaceIndex;
|
||||
});
|
||||
// ... and bam, a workspace, good as new.
|
||||
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
|
||||
true, time);
|
||||
else if (source.shellWorkspaceLaunch) {
|
||||
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
||||
timestamp: time });
|
||||
// This new workspace will be automatically removed if the application fails
|
||||
// to open its first window within some time, as tracked by Shell.WindowTracker.
|
||||
// Here, we only add a very brief timeout to avoid the _immediate_ removal of the
|
||||
// workspace while we wait for the startup sequence to load.
|
||||
Main.keepWorkspaceAlive(global.screen.get_workspace_by_index(newWorkspaceIndex),
|
||||
WORKSPACE_KEEP_ALIVE_TIME);
|
||||
}
|
||||
|
||||
// ... move them down one.
|
||||
windows.forEach(function(win) {
|
||||
win.meta_window.change_workspace_by_index(win.get_workspace() + 1,
|
||||
true, time);
|
||||
});
|
||||
|
||||
if (isWindow)
|
||||
// ... and bam, a workspace, good as new.
|
||||
source.metaWindow.change_workspace_by_index(newWorkspaceIndex,
|
||||
true, time);
|
||||
else if (source.shellWorkspaceLaunch)
|
||||
source.shellWorkspaceLaunch({ workspace: newWorkspaceIndex,
|
||||
timestamp: time });
|
||||
|
||||
return true;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
show: function() {
|
||||
@ -952,7 +985,7 @@ const ThumbnailsBox = new Lang.Class({
|
||||
},
|
||||
|
||||
_allocate: function(actor, box, flags) {
|
||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
|
||||
// See comment about this._background in _init()
|
||||
let themeNode = this._background.get_theme_node();
|
||||
|
@ -29,7 +29,7 @@ const WorkspacesView = new Lang.Class({
|
||||
Name: 'WorkspacesView',
|
||||
|
||||
_init: function(workspaces) {
|
||||
this.actor = new St.Group({ style_class: 'workspaces-view' });
|
||||
this.actor = new St.Widget({ style_class: 'workspaces-view' });
|
||||
|
||||
// The actor itself isn't a drop target, so we don't want to pick on its area
|
||||
this.actor.set_size(0, 0);
|
||||
@ -509,6 +509,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._inDrag = false;
|
||||
this._cancelledDrag = false;
|
||||
|
||||
this._controlsInitiallyHovered = false;
|
||||
this._alwaysZoomOut = false;
|
||||
this._zoomOut = false;
|
||||
this._zoomFraction = 0;
|
||||
@ -543,6 +544,19 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
},
|
||||
|
||||
show: function() {
|
||||
if(!this._alwaysZoomOut) {
|
||||
let [mouseX, mouseY] = global.get_pointer();
|
||||
let [x, y] = this._controls.get_transformed_position();
|
||||
let [width, height] = this._controls.get_transformed_size();
|
||||
let visibleWidth = this._controls.get_theme_node().get_length('visible-width');
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
if(rtl)
|
||||
x = x + width - visibleWidth;
|
||||
if(mouseX > x - 0.5 && mouseX < x + visibleWidth + 0.5 &&
|
||||
mouseY > y - 0.5 && mouseY < y + height + 0.5)
|
||||
this._controlsInitiallyHovered = true;
|
||||
}
|
||||
|
||||
this._zoomOut = this._alwaysZoomOut;
|
||||
this._zoomFraction = this._alwaysZoomOut ? 1 : 0;
|
||||
this._updateZoom();
|
||||
@ -591,6 +605,9 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
this._controls.hide();
|
||||
this._thumbnailsBox.hide();
|
||||
|
||||
if (!this._alwaysZoomOut)
|
||||
this.zoomFraction = 0;
|
||||
|
||||
if (this._restackedNotifyId > 0){
|
||||
global.screen.disconnect(this._restackedNotifyId);
|
||||
this._restackedNotifyId = 0;
|
||||
@ -790,7 +807,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
let controlsVisible = this._controls.get_theme_node().get_length('visible-width');
|
||||
let controlsReserved = controlsVisible * (1 - this._zoomFraction) + controlsNatural * this._zoomFraction;
|
||||
|
||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
if (rtl) {
|
||||
childBox.x2 = controlsReserved;
|
||||
childBox.x1 = childBox.x2 - controlsNatural;
|
||||
@ -850,7 +867,7 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
|
||||
let [x, y] = this.actor.get_transformed_position();
|
||||
|
||||
let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL);
|
||||
let rtl = (Clutter.get_default_text_direction () == Clutter.TextDirection.RTL);
|
||||
|
||||
let clipWidth = width - controlsVisible;
|
||||
let clipHeight = (fullHeight / fullWidth) * clipWidth;
|
||||
@ -996,7 +1013,10 @@ const WorkspacesDisplay = new Lang.Class({
|
||||
},
|
||||
|
||||
_onControlsHoverChanged: function() {
|
||||
this._updateZoom();
|
||||
if(!this._controls.hover)
|
||||
this._controlsInitiallyHovered = false;
|
||||
if(!this._controlsInitiallyHovered)
|
||||
this._updateZoom();
|
||||
},
|
||||
|
||||
_dragBegin: function() {
|
||||
|
@ -36,6 +36,7 @@ ko
|
||||
ku
|
||||
lt
|
||||
lv
|
||||
ml
|
||||
mk
|
||||
mr
|
||||
ms
|
||||
|
@ -15,7 +15,9 @@ js/ui/dateMenu.js
|
||||
js/ui/endSessionDialog.js
|
||||
js/ui/extensionSystem.js
|
||||
js/ui/keyboard.js
|
||||
js/ui/keyringPrompt.js
|
||||
js/ui/lookingGlass.js
|
||||
js/ui/main.js
|
||||
js/ui/messageTray.js
|
||||
js/ui/networkAgent.js
|
||||
js/ui/notificationDaemon.js
|
||||
@ -44,6 +46,7 @@ src/main.c
|
||||
src/shell-app.c
|
||||
src/shell-app-system.c
|
||||
src/shell-global.c
|
||||
src/shell-keyring-prompt.c
|
||||
src/shell-mobile-providers.c
|
||||
src/shell-polkit-authentication-agent.c
|
||||
src/shell-util.c
|
||||
|
@ -1,2 +1,3 @@
|
||||
data/gnome-shell.desktop.in
|
||||
data/gnome-shell-extension-prefs.desktop.in
|
||||
data/org.gnome.shell.evolution.calendar.gschema.xml.in
|
||||
|
1148
po/ca@valencia.po
1148
po/ca@valencia.po
File diff suppressed because it is too large
Load Diff
475
po/da.po
475
po/da.po
@ -16,9 +16,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-02-20 23:16+0100\n"
|
||||
"PO-Revision-Date: 2012-02-18 14:59+0100\n"
|
||||
"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
|
||||
"POT-Creation-Date: 2012-03-22 15:47+0100\n"
|
||||
"PO-Revision-Date: 2012-03-22 13:02+0100\n"
|
||||
"Last-Translator: Kris Thomsen <lakristho@gmail.com>\n"
|
||||
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
|
||||
"Language: da\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -35,15 +35,20 @@ msgid "Window management and application launching"
|
||||
msgstr "Vindueshåndtering og åbning af programmer"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurér udvidelsesmoduler til GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgstr "Udvidelsesmodulindstillinger for GNOME Shell"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
@ -51,20 +56,11 @@ msgstr ""
|
||||
"Tillad adgang til interne fejlsøgnings- og overvågningsværktøjer med brug af "
|
||||
"dialogen Alt-F2."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||
msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
"Aktivér interne værktøjer, som er nyttige for udviklere og testere fra Alt-F2"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Filendelse til at gemme skærmoptagelser"
|
||||
msgid "Uuids of extensions to enable"
|
||||
msgstr "Uuid'er for udvidelser der aktiveres"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Billedfrekvens brugt til skærmoptagelser."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||
msgid ""
|
||||
"GNOME Shell extensions have a uuid property; this key lists extensions which "
|
||||
"should be loaded. Any extension that wants to be loaded needs to be in this "
|
||||
@ -76,43 +72,111 @@ msgstr ""
|
||||
"skal være i denne liste. Du kan også redigere denne liste med DBus-metoderne "
|
||||
"EnableExtension og DisableExtension ved org.shell.Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||
msgid "Whether to collect stats about applications usage"
|
||||
msgstr "Om der skal indsamles statistik om programmers brug"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.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 ""
|
||||
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
|
||||
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
|
||||
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
|
||||
"dette, vil det ikke fjerne de allerede gemte data."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Programmerne som passer til disse identifikatorer vil blive vist i "
|
||||
"favoritområdet."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||
msgid "disabled OpenSearch providers"
|
||||
msgstr "deaktiverede OpenSearch-udbydere"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||
msgid "History for command (Alt-F2) dialog"
|
||||
msgstr "Historik for kommandodialogen (Alt-F2)"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||
msgid "History for the looking glass dialog"
|
||||
msgstr "Historik for looking glass-dialogen"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Hvis sand vises sekunder i klokkeslæt."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:10
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||
msgid ""
|
||||
"Internally used to store the last IM presence explicitly set by the user. "
|
||||
"The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
"Brugt internt til at gemme den seneste IM-tilstedeværelse angivet direkte af "
|
||||
"brugeren. Værdien er er fra tællingen TpConnectionPresenceType."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
"Brugt internt til at gemme den seneste tilstand for sessionstilstedeværelse "
|
||||
"for brugeren. Værdien her er fra tællingen GsmPresenceStatus."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "Liste over skrivebordsfil-id'er til favoritprogrammer"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Vis ugenummer i kalenderen"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Hvis sand vises ISO-ugenummeret i kalenderen."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Hvilket tastatur bruges"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Tastaturtypen som bruges."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Vis tid med sekunder"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Hvis sand vises sekunder i klokkeslæt."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show date in clock"
|
||||
msgstr "Vis dato i uret"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Hvis sand vises datoen i uret, som tillæg til tiden."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Billedfrekvens brugt til skærmoptagelser."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
|
||||
"skærmoptager i billeder-per-sekund."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
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.h:26
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -137,27 +201,11 @@ msgstr ""
|
||||
"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.h:16
|
||||
msgid "Show date in clock"
|
||||
msgstr "Vis dato i uret"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Filendelse til at gemme skærmoptagelser"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Vis ugenummer i kalenderen"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Vis tid med sekunder"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgstr ""
|
||||
"Programmerne som passer til disse identifikatorer vil blive vist i "
|
||||
"favoritområdet."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
msgid ""
|
||||
"The filename for recorded screencasts will be a unique filename based on the "
|
||||
"current date, and use this extension. It should be changed when recording to "
|
||||
@ -167,50 +215,6 @@ msgstr ""
|
||||
"og bruge denne endelse. Det skal ændres når der optages i et andet "
|
||||
"containerformat."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
"Billedfrekvensen på den endelige skærmoptagelse, optaget af GNOME-Shells "
|
||||
"skærmoptager i billeder-per-sekund."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
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.h:23
|
||||
msgid ""
|
||||
"The shell normally monitors active applications in order to present the most "
|
||||
"used ones (e.g. in launchers). While this data will be kept private, you may "
|
||||
"want to disable this for privacy reasons. Please note that doing so won't "
|
||||
"remove already saved data."
|
||||
msgstr ""
|
||||
"Shell'ens overvåger normalt aktive programmer for at kunne vise de mest "
|
||||
"brugte (f.eks. i genveje). Selvom disse data er holdt private, vil du "
|
||||
"muligvis ønske at deaktivere dem af private grunde. Bemærk at selvom du gør "
|
||||
"dette, vil det ikke fjerne de allerede gemte data."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Tastaturtypen som bruges."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
msgid "Uuids of extensions to enable"
|
||||
msgstr "Uuid'er for udvidelser der aktiveres"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
msgid "Whether to collect stats about applications usage"
|
||||
msgstr "Om der skal indsamles statistik om programmers brug"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Hvilket tastatur bruges"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
msgid "disabled OpenSearch providers"
|
||||
msgstr "deaktiverede OpenSearch-udbydere"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
@ -247,8 +251,8 @@ msgstr "(eller indlæs fingeraftryk)"
|
||||
msgid "Not listed?"
|
||||
msgstr "Ikke listet?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "Annullér"
|
||||
@ -262,16 +266,16 @@ msgstr "Log ind"
|
||||
msgid "Login Window"
|
||||
msgstr "Indlogningsvindue"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||
msgid "Suspend"
|
||||
msgstr "Hviletilstand"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
#: ../js/gdm/powerMenu.js:160
|
||||
msgid "Restart"
|
||||
msgstr "Genstart"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
#: ../js/gdm/powerMenu.js:165
|
||||
msgid "Power Off"
|
||||
msgstr "Sluk"
|
||||
|
||||
@ -291,27 +295,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "Kørsel af \"%s\" mislykkedes:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:251
|
||||
#: ../js/ui/appDisplay.js:255
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
#: ../js/ui/appDisplay.js:310
|
||||
#: ../js/ui/appDisplay.js:314
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "PROGRAMMER"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:375
|
||||
msgid "SETTINGS"
|
||||
msgstr "INDSTILLINGER"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "New Window"
|
||||
msgstr "Nyt vindue"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:683
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Fjern fra favoritter"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:684
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Føj til favoritter"
|
||||
|
||||
@ -484,94 +488,90 @@ msgstr "Denne uge"
|
||||
msgid "Next week"
|
||||
msgstr "Næste uge"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||
msgid "Unknown"
|
||||
msgstr "Ukendt"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||
msgid "Available"
|
||||
msgstr "Tilgængelig"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||
msgid "Away"
|
||||
msgstr "Ikke tilstede"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||
msgid "Busy"
|
||||
msgstr "Optaget"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:97
|
||||
#: ../js/ui/contactDisplay.js:102
|
||||
msgid "Offline"
|
||||
msgstr "Offline"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:148
|
||||
#: ../js/ui/contactDisplay.js:153
|
||||
msgid "CONTACTS"
|
||||
msgstr "KONTAKTER"
|
||||
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||
msgid "Remove"
|
||||
msgstr "Fjern"
|
||||
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
#: ../js/ui/dateMenu.js:103
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Indstillinger for dato og tid"
|
||||
|
||||
#: ../js/ui/dateMenu.js:123
|
||||
#: ../js/ui/dateMenu.js:129
|
||||
msgid "Open Calendar"
|
||||
msgstr "Åbn kalender"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:181
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %e. %b, %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
#: ../js/ui/dateMenu.js:188
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %e. %b, %R"
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:186
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
#: ../js/ui/dateMenu.js:193
|
||||
msgid "%a %R"
|
||||
msgstr "%a %R"
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %e. %b, %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:195
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %e. %b, %l:%M %p"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:199
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
#: ../js/ui/dateMenu.js:206
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l:%M %p"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:211
|
||||
#: ../js/ui/dateMenu.js:217
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e. %B %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "SENESTE ELEMENTER"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
@ -660,23 +660,31 @@ msgstr[1] "Systemet vil genstarte automatisk om %d sekunder."
|
||||
msgid "Restarting the system."
|
||||
msgstr "Genstarter systemet."
|
||||
|
||||
#: ../js/ui/extensionSystem.js:405
|
||||
#: ../js/ui/extensionSystem.js:403
|
||||
msgid "Install"
|
||||
msgstr "Installér"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:409
|
||||
#: ../js/ui/extensionSystem.js:407
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Hent og installér \"%s\" fra extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:322
|
||||
#: ../js/ui/keyboard.js:327
|
||||
msgid "tray"
|
||||
msgstr "statusfelt"
|
||||
|
||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastatur"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Adgangskode:"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:101
|
||||
msgid "Type again:"
|
||||
msgstr "Indtast igen:"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
msgid "No extensions installed"
|
||||
msgstr "Ingen udvidelser er installeret"
|
||||
@ -725,19 +733,25 @@ msgstr "Vis kilde"
|
||||
msgid "Web Page"
|
||||
msgstr "Webside"
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:118
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Skærmoptagelse fra %d %t"
|
||||
|
||||
#: ../js/ui/messageTray.js:1200
|
||||
msgid "Open"
|
||||
msgstr "Åbn"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Unmute"
|
||||
msgstr "Slå lyd til"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Mute"
|
||||
msgstr "Slå lyd fra"
|
||||
|
||||
#: ../js/ui/messageTray.js:2447
|
||||
#: ../js/ui/messageTray.js:2490
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformation"
|
||||
|
||||
@ -826,31 +840,35 @@ msgstr "En adgangskode er påkrævet for at forbinde til \"%s\"."
|
||||
msgid "Undo"
|
||||
msgstr "Fortryd"
|
||||
|
||||
#: ../js/ui/overview.js:199
|
||||
#: ../js/ui/overview.js:132
|
||||
msgid "Overview"
|
||||
msgstr "Oversigt"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Windows"
|
||||
msgstr "Vinduer"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:205
|
||||
msgid "Applications"
|
||||
msgstr "Programmer"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:231
|
||||
msgid "Dash"
|
||||
msgstr "Favoritområde"
|
||||
|
||||
#: ../js/ui/panel.js:582
|
||||
#: ../js/ui/panel.js:591
|
||||
msgid "Quit"
|
||||
msgstr "Afslut"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:613
|
||||
#: ../js/ui/panel.js:623
|
||||
msgid "Activities"
|
||||
msgstr "Aktiviteter"
|
||||
|
||||
#: ../js/ui/panel.js:983
|
||||
#: ../js/ui/panel.js:998
|
||||
msgid "Top Bar"
|
||||
msgstr "Toppanel"
|
||||
|
||||
@ -891,16 +909,12 @@ msgstr "Godkend"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Beklager, godkendelse mislykkedes. Prøv igen."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Adgangskode:"
|
||||
|
||||
#. 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:720
|
||||
#: ../js/ui/popupMenu.js:724
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -908,11 +922,11 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Indtast en kommando:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:332
|
||||
msgid "Searching..."
|
||||
msgstr "Søger..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:414
|
||||
msgid "No matching results."
|
||||
msgstr "Ingen resultater fundet."
|
||||
|
||||
@ -1070,7 +1084,7 @@ msgstr "Giv altid adgang"
|
||||
msgid "Grant this time only"
|
||||
msgstr "Giv kun lov denne gang"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
||||
msgid "Reject"
|
||||
msgstr "Afvis"
|
||||
|
||||
@ -1347,39 +1361,39 @@ msgid "Invitation"
|
||||
msgstr "Invitation"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:273
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "Opkald"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:289
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "Filoverførsel"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:371
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "Godkendelsesforespørgsel"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:407
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "Forbindelsesfejl"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:665
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s er online."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:669
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s er offline."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:673
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s er ikke til stede."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:676
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s er optaget."
|
||||
@ -1387,35 +1401,35 @@ msgstr "%s er optaget."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:889
|
||||
#: ../js/ui/telepathyClient.js:887
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Sendt <b>%A</b> kl. <b>%H:%M</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/telepathyClient.js:895
|
||||
#: ../js/ui/telepathyClient.js:893
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/telepathyClient.js:900
|
||||
#: ../js/ui/telepathyClient.js:898
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Sendt <b>%A</b> den <b>%e. %B</b>, %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/telepathyClient.js:942
|
||||
#: ../js/ui/telepathyClient.js:940
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s kalder sig nu %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1044
|
||||
#: ../js/ui/telepathyClient.js:1042
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Invitation til %s"
|
||||
@ -1423,35 +1437,35 @@ msgstr "Invitation til %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1050
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s inviterer dig til at deltage i %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||
#: ../js/ui/telepathyClient.js:1231
|
||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
||||
#: ../js/ui/telepathyClient.js:1229
|
||||
msgid "Decline"
|
||||
msgstr "Afvis"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||
#: ../js/ui/telepathyClient.js:1232
|
||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1230
|
||||
msgid "Accept"
|
||||
msgstr "Acceptér"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1085
|
||||
#: ../js/ui/telepathyClient.js:1083
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Videoopkald fra %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1088
|
||||
#: ../js/ui/telepathyClient.js:1086
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Opkald fra %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/telepathyClient.js:1095
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
msgid "Answer"
|
||||
msgstr "Svar"
|
||||
|
||||
@ -1460,111 +1474,111 @@ msgstr "Svar"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/telepathyClient.js:1127
|
||||
#: ../js/ui/telepathyClient.js:1125
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s sender dig %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/telepathyClient.js:1196
|
||||
#: ../js/ui/telepathyClient.js:1194
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s vil gerne have tilladelse til at se, når du er online"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
#: ../js/ui/telepathyClient.js:1287
|
||||
msgid "Network error"
|
||||
msgstr "Netværksfejl"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
msgid "Authentication failed"
|
||||
msgstr "Godkendelse mislykkedes"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
msgid "Encryption error"
|
||||
msgstr "Krypteringsfejl"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Certifikat ikke angivet"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Utroværdigt certifikat"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certifikat udløbet"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certifikat ikke aktiveret"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Certifikat-værtsnavn stemmer ikke"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Certifikat-fingeraftryk stemmer ikke"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certifikat selv-underskrevet"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Status er angivet til offline"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Kryptering er ikke tilgængelig"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Ugyldigt certifikat"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Forbindelse er blevet afvist"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Forbindelse kan ikke oprettes"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Forbindelse er mistet"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Denne konto er allerede forbundet til serveren"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Forbindelsen er blevet erstattet af en ny forbindelse, som bruger samme "
|
||||
"ressource"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Kontoen findes allerede på serveren"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Serveren er i øjeblikket for travl til at behandle forbindelsen"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Certifikat er blevet påberåbt"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Certifikat bruger en usikker cipher-algoritme eller er kryptografisk svag"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -1572,74 +1586,74 @@ msgstr ""
|
||||
"Længden på servercertifikatet, eller dybden af servercertifikat-kæden, "
|
||||
"overskrider grænsen, som er fastsat af det kryptografiske-programbibliotek"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1335
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
msgid "Internal error"
|
||||
msgstr "Intern fejl"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1345
|
||||
#: ../js/ui/telepathyClient.js:1343
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Forbindelse til %s mislykkedes"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1354
|
||||
#: ../js/ui/telepathyClient.js:1352
|
||||
msgid "Reconnect"
|
||||
msgstr "Forbind igen"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1355
|
||||
#: ../js/ui/telepathyClient.js:1353
|
||||
msgid "Edit account"
|
||||
msgstr "Redigér konto"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1401
|
||||
#: ../js/ui/telepathyClient.js:1399
|
||||
msgid "Unknown reason"
|
||||
msgstr "Ukendt årsag"
|
||||
|
||||
#: ../js/ui/userMenu.js:133
|
||||
#: ../js/ui/userMenu.js:135
|
||||
msgid "Hidden"
|
||||
msgstr "Skjult"
|
||||
|
||||
#: ../js/ui/userMenu.js:139
|
||||
#: ../js/ui/userMenu.js:141
|
||||
msgid "Idle"
|
||||
msgstr "Tomgang"
|
||||
|
||||
#: ../js/ui/userMenu.js:142
|
||||
#: ../js/ui/userMenu.js:144
|
||||
msgid "Unavailable"
|
||||
msgstr "Utilgængelig"
|
||||
|
||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||
msgid "Power Off..."
|
||||
msgstr "Sluk..."
|
||||
|
||||
#: ../js/ui/userMenu.js:615
|
||||
#: ../js/ui/userMenu.js:631
|
||||
msgid "Notifications"
|
||||
msgstr "Beskeder"
|
||||
|
||||
#: ../js/ui/userMenu.js:623
|
||||
#: ../js/ui/userMenu.js:639
|
||||
msgid "Online Accounts"
|
||||
msgstr "Online konti"
|
||||
|
||||
#: ../js/ui/userMenu.js:627
|
||||
#: ../js/ui/userMenu.js:643
|
||||
msgid "System Settings"
|
||||
msgstr "Systemindstillinger"
|
||||
|
||||
#: ../js/ui/userMenu.js:634
|
||||
#: ../js/ui/userMenu.js:650
|
||||
msgid "Lock Screen"
|
||||
msgstr "Lås skærm"
|
||||
|
||||
#: ../js/ui/userMenu.js:639
|
||||
#: ../js/ui/userMenu.js:655
|
||||
msgid "Switch User"
|
||||
msgstr "Skift bruger"
|
||||
|
||||
#: ../js/ui/userMenu.js:644
|
||||
#: ../js/ui/userMenu.js:660
|
||||
msgid "Log Out..."
|
||||
msgstr "Log ud..."
|
||||
|
||||
#: ../js/ui/userMenu.js:672
|
||||
#: ../js/ui/userMenu.js:688
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Din chat-status vil blive angivet som optaget"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
#: ../js/ui/userMenu.js:689
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1678,7 +1692,7 @@ msgstr "Oraklet %s siger"
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Dit yndlingspåskeæg"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:33
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
msgid "'%s' is ready"
|
||||
msgstr "\"%s\" er klar"
|
||||
@ -1705,19 +1719,27 @@ msgstr[1] "%u inputs"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemlyde"
|
||||
|
||||
#: ../src/main.c:262
|
||||
#: ../src/main.c:255
|
||||
msgid "Print version"
|
||||
msgstr "Udskriv version"
|
||||
|
||||
#: ../src/main.c:268
|
||||
#: ../src/main.c:261
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Tilstand brugt af GDM til indlogningskærm"
|
||||
|
||||
#: ../src/shell-app.c:617
|
||||
#: ../src/shell-app.c:619
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Kunne ikke køre \"%s\""
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:708
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Adgangskoder er ikke ens."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:716
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "Adgangskode må ikke være tom"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "Storbritannien"
|
||||
@ -1752,6 +1774,9 @@ msgstr "Filsystem"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "SENESTE ELEMENTER"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||
|
1046
po/en_GB.po
1046
po/en_GB.po
File diff suppressed because it is too large
Load Diff
376
po/es.po
376
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-02-20 07:42+0000\n"
|
||||
"PO-Revision-Date: 2012-02-20 10:59+0100\n"
|
||||
"POT-Creation-Date: 2012-03-30 17:59+0000\n"
|
||||
"PO-Revision-Date: 2012-04-01 19:11+0200\n"
|
||||
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
|
||||
"Language-Team: Español <gnome-es-list@gnome.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -29,7 +29,7 @@ msgstr "Gestión de ventanas e inicio de aplicaciones"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Preferencias de las extensiones de GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
@ -133,34 +133,42 @@ msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Si es cierta, muestra la fecha de semana ISO en el calendario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
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.h:17
|
||||
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.h:18
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Qué teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "El tipo de teclado que usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Mostrar la hora con segundos"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Si es cierta, muestra los segundos en la hora."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "Show date in clock"
|
||||
msgstr "Mostrar la fecha en el reloj"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Tasa de fotogramas usada para grabar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -168,11 +176,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.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
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.h:26
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -187,22 +195,22 @@ msgid ""
|
||||
"thread count on the system."
|
||||
msgstr ""
|
||||
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
|
||||
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») "
|
||||
"desconectado donde grabar el vídeo que se está grabando. Generalmente tendrá "
|
||||
"un punto de origen desconectado; la salida de ese punto se escribirá en el "
|
||||
"archivo de salida. Sin embargo, la tubería también puede tomar parte en su "
|
||||
"propia salida; esto se puede usar para enviar la salida a un servidor "
|
||||
"«icecast» a través de shout2send o similar. Cuando no está establecido o lo "
|
||||
"está a un valor vacío, se usará la tubería predeterminada. Actualmente es "
|
||||
"«'vp8enc quality=8 speed=6 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."
|
||||
"sintaxis usada para gst-launch. La tubería debería tener un sumidero "
|
||||
"(«sink») desconectado donde grabar el vídeo que se está grabando. "
|
||||
"Generalmente tendrá un punto de origen desconectado; la salida de ese punto "
|
||||
"se escribirá en el archivo de salida. Sin embargo, la tubería también puede "
|
||||
"tomar parte en su propia salida; esto se puede usar para enviar la salida a "
|
||||
"un servidor «icecast» a través de shout2send o similar. Cuando no está "
|
||||
"establecido o lo está a un valor vacío, se usará la tubería predeterminada. "
|
||||
"Actualmente es «'vp8enc quality=8 speed=6 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.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||
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.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||
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,8 +256,8 @@ msgstr "(o pase el dedo)"
|
||||
msgid "Not listed?"
|
||||
msgstr "¿No está en la lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@ -263,16 +271,16 @@ msgstr "Iniciar sesión"
|
||||
msgid "Login Window"
|
||||
msgstr "Ventana de inicio de sesión"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
#: ../js/gdm/powerMenu.js:160
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
#: ../js/gdm/powerMenu.js:165
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -292,27 +300,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "Falló la ejecución de «%s»:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:251
|
||||
#: ../js/ui/appDisplay.js:255
|
||||
msgid "All"
|
||||
msgstr "Todas"
|
||||
|
||||
#: ../js/ui/appDisplay.js:310
|
||||
#: ../js/ui/appDisplay.js:314
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "APLICACIONES"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:375
|
||||
msgid "SETTINGS"
|
||||
msgstr "CONFIGURACIÓN"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "New Window"
|
||||
msgstr "Ventana nueva"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:683
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Quitar de los favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:684
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Añadir a los favoritos"
|
||||
|
||||
@ -485,94 +493,90 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "La semana que viene"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||
msgid "Unknown"
|
||||
msgstr "Desconocido"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||
msgid "Available"
|
||||
msgstr "Disponible"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||
msgid "Away"
|
||||
msgstr "Ausente"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||
msgid "Busy"
|
||||
msgstr "Ocupado"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:97
|
||||
#: ../js/ui/contactDisplay.js:102
|
||||
msgid "Offline"
|
||||
msgstr "Desconectado"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:148
|
||||
#: ../js/ui/contactDisplay.js:153
|
||||
msgid "CONTACTS"
|
||||
msgstr "CONTACTOS"
|
||||
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
#: ../js/ui/dateMenu.js:103
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Ajustes de hora y fecha"
|
||||
|
||||
#: ../js/ui/dateMenu.js:123
|
||||
#: ../js/ui/dateMenu.js:129
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir calendario"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:181
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %e de %b, %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
#: ../js/ui/dateMenu.js:188
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %e de %b, %R"
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:186
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
#: ../js/ui/dateMenu.js:193
|
||||
msgid "%a %R"
|
||||
msgstr "%a %R"
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %e de %b, %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:195
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %e de %b, %l:%M %p"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:199
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
#: ../js/ui/dateMenu.js:206
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l:%M %p"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:211
|
||||
#: ../js/ui/dateMenu.js:217
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %e de %B de %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "ELEMENTOS RECIENTES"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
@ -664,84 +668,98 @@ msgstr[1] "El sistema se reiniciará automáticamente en %d segundos."
|
||||
msgid "Restarting the system."
|
||||
msgstr "Reiniciando el sistema."
|
||||
|
||||
#: ../js/ui/extensionSystem.js:405
|
||||
#: ../js/ui/extensionSystem.js:403
|
||||
msgid "Install"
|
||||
msgstr "Instalar"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:409
|
||||
#: ../js/ui/extensionSystem.js:407
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:322
|
||||
#: ../js/ui/keyboard.js:327
|
||||
msgid "tray"
|
||||
msgstr "bandeja"
|
||||
|
||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Contraseña:"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:101
|
||||
msgid "Type again:"
|
||||
msgstr "Escriba de nuevo:"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:732
|
||||
msgid "No extensions installed"
|
||||
msgstr "No hay extensiones instaladas"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:779
|
||||
#: ../js/ui/lookingGlass.js:786
|
||||
#, c-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s no ha generado ningún error."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:785
|
||||
#: ../js/ui/lookingGlass.js:792
|
||||
msgid "Hide Errors"
|
||||
msgstr "Ocultar errores"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||
msgid "Show Errors"
|
||||
msgstr "Mostrar errores"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:798
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
msgid "Enabled"
|
||||
msgstr "Activado"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
|
||||
msgid "Disabled"
|
||||
msgstr "Desactivado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:803
|
||||
#: ../js/ui/lookingGlass.js:810
|
||||
msgid "Error"
|
||||
msgstr "Error"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
#: ../js/ui/lookingGlass.js:812
|
||||
msgid "Out of date"
|
||||
msgstr "Caducado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:807
|
||||
#: ../js/ui/lookingGlass.js:814
|
||||
msgid "Downloading"
|
||||
msgstr "Descargando"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:828
|
||||
#: ../js/ui/lookingGlass.js:835
|
||||
msgid "View Source"
|
||||
msgstr "Ver fuente"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:834
|
||||
#: ../js/ui/lookingGlass.js:841
|
||||
msgid "Web Page"
|
||||
msgstr "Página web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:118
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Screencast desde %d %t"
|
||||
|
||||
#: ../js/ui/messageTray.js:1200
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Unmute"
|
||||
msgstr "Dar voz"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Mute"
|
||||
msgstr "Silenciar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2447
|
||||
#: ../js/ui/messageTray.js:2490
|
||||
msgid "System Information"
|
||||
msgstr "Información del sistema"
|
||||
|
||||
@ -787,8 +805,8 @@ msgstr "La red inalámbrica requiere autenticación"
|
||||
#: ../js/ui/networkAgent.js:330
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network '%"
|
||||
"s'."
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
msgstr ""
|
||||
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
|
||||
"inalámbrica «%s»."
|
||||
@ -830,31 +848,35 @@ msgstr "Se requiere una contraseña para conectar a «%s»."
|
||||
msgid "Undo"
|
||||
msgstr "Deshacer"
|
||||
|
||||
#: ../js/ui/overview.js:199
|
||||
#: ../js/ui/overview.js:132
|
||||
msgid "Overview"
|
||||
msgstr "Vista general"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Windows"
|
||||
msgstr "Ventanas"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:205
|
||||
msgid "Applications"
|
||||
msgstr "Aplicaciones"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:231
|
||||
msgid "Dash"
|
||||
msgstr "Tablero"
|
||||
|
||||
#: ../js/ui/panel.js:582
|
||||
#: ../js/ui/panel.js:592
|
||||
msgid "Quit"
|
||||
msgstr "Salir"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:613
|
||||
#: ../js/ui/panel.js:624
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: ../js/ui/panel.js:983
|
||||
#: ../js/ui/panel.js:999
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@ -895,16 +917,12 @@ msgstr "Autenticar"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Inténtelo de nuevo,"
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Contraseña:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:720
|
||||
#: ../js/ui/popupMenu.js:724
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -912,11 +930,11 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Introduzca un comando:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:332
|
||||
msgid "Searching..."
|
||||
msgstr "Buscando…"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:414
|
||||
msgid "No matching results."
|
||||
msgstr "No se encontró ningún resultado coincidente."
|
||||
|
||||
@ -1074,7 +1092,7 @@ msgstr "Conceder acceso siempre"
|
||||
msgid "Grant this time only"
|
||||
msgstr "Conceder sólo esta vez"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
||||
msgid "Reject"
|
||||
msgstr "Rechazar"
|
||||
|
||||
@ -1351,39 +1369,39 @@ msgid "Invitation"
|
||||
msgstr "Invitación"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:273
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "Llamar"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:289
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "Transferencia de archivos"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:371
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "Solicitud de suscripción"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:407
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "Error de conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:665
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s está conectado/a."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:669
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s está desconectado/a."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:673
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s está ausente."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:676
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s está ocupado/a."
|
||||
@ -1391,35 +1409,35 @@ msgstr "%s está ocupado/a."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:889
|
||||
#: ../js/ui/telepathyClient.js:887
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/telepathyClient.js:895
|
||||
#: ../js/ui/telepathyClient.js:893
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
|
||||
#. shown when you get a chat message in a different year.
|
||||
#: ../js/ui/telepathyClient.js:900
|
||||
#: ../js/ui/telepathyClient.js:898
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/telepathyClient.js:942
|
||||
#: ../js/ui/telepathyClient.js:940
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Ahora %s se llama %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1044
|
||||
#: ../js/ui/telepathyClient.js:1042
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Invitación a %s"
|
||||
@ -1427,35 +1445,35 @@ msgstr "Invitación a %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1050
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s le está invitando a unirse a %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||
#: ../js/ui/telepathyClient.js:1231
|
||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
||||
#: ../js/ui/telepathyClient.js:1229
|
||||
msgid "Decline"
|
||||
msgstr "Rechazar"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||
#: ../js/ui/telepathyClient.js:1232
|
||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1230
|
||||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1085
|
||||
#: ../js/ui/telepathyClient.js:1083
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Videollamada de %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1088
|
||||
#: ../js/ui/telepathyClient.js:1086
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Llamada de %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/telepathyClient.js:1095
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
msgid "Answer"
|
||||
msgstr "Responder"
|
||||
|
||||
@ -1464,112 +1482,112 @@ msgstr "Responder"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/telepathyClient.js:1127
|
||||
#: ../js/ui/telepathyClient.js:1125
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s le está enviando %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/telepathyClient.js:1196
|
||||
#: ../js/ui/telepathyClient.js:1194
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s solicita permiso para ver cuándo está en línea"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
#: ../js/ui/telepathyClient.js:1287
|
||||
msgid "Network error"
|
||||
msgstr "Error de la red"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
msgid "Authentication failed"
|
||||
msgstr "Falló la autenticación"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
msgid "Encryption error"
|
||||
msgstr "Error de cifrado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Certificado no proporcionado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "No se confía en el certificado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certificado caducado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certificado no activado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "El nombre del servidor dle certificado no coincide"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "La huella del certificado no coincide"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certificado autofirmado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
msgid "Status is set to offline"
|
||||
msgstr "El estado está establecido a «desconectado»"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
msgid "Encryption is not available"
|
||||
msgstr "El cifrado no está disponible"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "El certificado no es válido"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Se ha rechazado la conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
msgid "Connection can't be established"
|
||||
msgstr "No se puede establecer la conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Se ha perdido la conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Esta cuenta ya está conectada al servidor"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "La cuenta ya existe en el servidor"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Se ha revocado el certificado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
|
||||
"débil"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -1578,74 +1596,74 @@ msgstr ""
|
||||
"certificado del servidor exceden los límites impuestos por la biblioteca de "
|
||||
"criptografía"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1335
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
msgid "Internal error"
|
||||
msgstr "Error interno"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1345
|
||||
#: ../js/ui/telepathyClient.js:1343
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Falló la conexión a %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1354
|
||||
#: ../js/ui/telepathyClient.js:1352
|
||||
msgid "Reconnect"
|
||||
msgstr "Reconectar"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1355
|
||||
#: ../js/ui/telepathyClient.js:1353
|
||||
msgid "Edit account"
|
||||
msgstr "Editar cuenta"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1401
|
||||
#: ../js/ui/telepathyClient.js:1399
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón desconocida"
|
||||
|
||||
#: ../js/ui/userMenu.js:133
|
||||
#: ../js/ui/userMenu.js:135
|
||||
msgid "Hidden"
|
||||
msgstr "Oculto"
|
||||
|
||||
#: ../js/ui/userMenu.js:139
|
||||
#: ../js/ui/userMenu.js:141
|
||||
msgid "Idle"
|
||||
msgstr "Inactivo"
|
||||
|
||||
#: ../js/ui/userMenu.js:142
|
||||
#: ../js/ui/userMenu.js:144
|
||||
msgid "Unavailable"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||
msgid "Power Off..."
|
||||
msgstr "Apagar…"
|
||||
|
||||
#: ../js/ui/userMenu.js:615
|
||||
#: ../js/ui/userMenu.js:631
|
||||
msgid "Notifications"
|
||||
msgstr "Notificaciones"
|
||||
|
||||
#: ../js/ui/userMenu.js:623
|
||||
#: ../js/ui/userMenu.js:639
|
||||
msgid "Online Accounts"
|
||||
msgstr "Cuentas en línea"
|
||||
|
||||
#: ../js/ui/userMenu.js:627
|
||||
#: ../js/ui/userMenu.js:643
|
||||
msgid "System Settings"
|
||||
msgstr "Configuración del sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:634
|
||||
#: ../js/ui/userMenu.js:650
|
||||
msgid "Lock Screen"
|
||||
msgstr "Bloquear la pantalla"
|
||||
|
||||
#: ../js/ui/userMenu.js:639
|
||||
#: ../js/ui/userMenu.js:655
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:644
|
||||
#: ../js/ui/userMenu.js:660
|
||||
msgid "Log Out..."
|
||||
msgstr "Cerrar la sesión…"
|
||||
|
||||
#: ../js/ui/userMenu.js:672
|
||||
#: ../js/ui/userMenu.js:688
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Su estado del chat se establecerá a «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
#: ../js/ui/userMenu.js:689
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1684,7 +1702,7 @@ msgstr "%s el oráculo dice"
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "Su mensaje oculto favorito"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:33
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
msgid "'%s' is ready"
|
||||
msgstr "«%s» está preparado"
|
||||
@ -1711,19 +1729,27 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sonidos del sistema"
|
||||
|
||||
#: ../src/main.c:262
|
||||
#: ../src/main.c:255
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:268
|
||||
#: ../src/main.c:261
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para la pantalla de inicio"
|
||||
|
||||
#: ../src/shell-app.c:617
|
||||
#: ../src/shell-app.c:619
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Falló al lanzar «%s»"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:708
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Las contraseñas no coinciden."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:716
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "La contraseña no puede estar vacía"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "Reino Unido"
|
||||
@ -1758,6 +1784,9 @@ msgstr "Sistema de archivos"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "ELEMENTOS RECIENTES"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||
@ -2030,8 +2059,8 @@ msgstr "%1$s: %2$s"
|
||||
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
|
||||
#~ "in time."
|
||||
#~ msgstr ""
|
||||
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos "
|
||||
#~ "en la hora."
|
||||
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
|
||||
#~ "segundos en la hora."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "This key specifies the format used by the panel clock when the format key "
|
||||
@ -2048,18 +2077,19 @@ msgstr "%1$s: %2$s"
|
||||
#~ msgid ""
|
||||
#~ "This key specifies the hour format used by the panel clock. Possible "
|
||||
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
|
||||
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-"
|
||||
#~ "01-01. If set to \"custom\", the clock will display time according to the "
|
||||
#~ "format specified in the custom_format key. Note that if set to either "
|
||||
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored."
|
||||
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
|
||||
#~ "1970-01-01. If set to \"custom\", the clock will display time according "
|
||||
#~ "to the format specified in the custom_format key. Note that if set to "
|
||||
#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
|
||||
#~ "ignored."
|
||||
#~ msgstr ""
|
||||
#~ "Esta clave especifica el formato de la hora especificado por el reloj del "
|
||||
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), "
|
||||
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará "
|
||||
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece "
|
||||
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la "
|
||||
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se "
|
||||
#~ "ignoran las claves «show_date» y «show_seconds»."
|
||||
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
|
||||
#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
|
||||
#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
|
||||
#~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
|
||||
#~ "especificado en la clave «custom_format». Note que si se establece a "
|
||||
#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
|
||||
|
||||
#~ msgid "Clock Format"
|
||||
#~ msgstr "Formato del reloj"
|
||||
|
48
po/et.po
48
po/et.po
@ -13,14 +13,14 @@ 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-02-18 00:47+0000\n"
|
||||
"PO-Revision-Date: 2012-02-18 02:56+0200\n"
|
||||
"POT-Creation-Date: 2012-03-21 04:50+0000\n"
|
||||
"PO-Revision-Date: 2012-03-21 10:34+0200\n"
|
||||
"Last-Translator: Mattias Põldaru <mahfiaz@gmail.com>\n"
|
||||
"Language-Team: Estonian <>\n"
|
||||
"Language: et\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-Poedit-Language: Estonian\n"
|
||||
"X-Poedit-Country: Estonia\n"
|
||||
@ -31,7 +31,7 @@ msgstr "GNOME Shell"
|
||||
msgid "Window management and application launching"
|
||||
msgstr "Aknahaldur ja rakenduste käivitaja"
|
||||
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "GNOME Shelli laienduste eelistused"
|
||||
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
@ -93,6 +93,20 @@ msgstr "Käsudialoogi (Alt-F2) ajalugu"
|
||||
msgid "History for the looking glass dialog"
|
||||
msgstr "Otsingudialoogi ajalugu"
|
||||
|
||||
msgid ""
|
||||
"Internally used to store the last IM presence explicitly set by the user. "
|
||||
"The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
|
||||
"salvestamiseks. See väärtus pärineb TpConnectionPresenceType nummerdusest."
|
||||
|
||||
msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
"Kasutatakse kasutaja poolt viimati vahetult määratud kiirsuhtluse oleku "
|
||||
"salvestamiseks. See väärtus pärineb GsmPresenceStatus nummerdusest."
|
||||
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Kalendris näidatakse kuupäeva nädalavormingus"
|
||||
|
||||
@ -448,9 +462,6 @@ msgstr "%a, %l:%M %p"
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A, %d. %B %Y"
|
||||
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "HILJUTISED DOKUMENDID"
|
||||
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
@ -541,6 +552,12 @@ msgstr "salv"
|
||||
msgid "Keyboard"
|
||||
msgstr "Klaviatuur"
|
||||
|
||||
msgid "Password:"
|
||||
msgstr "Parool:"
|
||||
|
||||
msgid "Type again:"
|
||||
msgstr "Sisesta uuesti:"
|
||||
|
||||
msgid "No extensions installed"
|
||||
msgstr "Ühtegi laiendust pole paigaldatud"
|
||||
|
||||
@ -578,6 +595,11 @@ msgstr "Kuva lähtekoodi"
|
||||
msgid "Web Page"
|
||||
msgstr "Veebileht"
|
||||
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Ekraanivideo %d %t"
|
||||
|
||||
msgid "Open"
|
||||
msgstr "Ava"
|
||||
|
||||
@ -654,6 +676,9 @@ msgstr "'%s' ühenduse loomiseks on vaja parooli."
|
||||
msgid "Undo"
|
||||
msgstr "Võta tagasi"
|
||||
|
||||
msgid "Overview"
|
||||
msgstr "Ülevaade"
|
||||
|
||||
msgid "Windows"
|
||||
msgstr "Aknad"
|
||||
|
||||
@ -705,9 +730,6 @@ msgstr "Autendi"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Kahjuks see ei sobinud. Palun proovi uuesti."
|
||||
|
||||
msgid "Password:"
|
||||
msgstr "Parool:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
@ -1350,6 +1372,12 @@ msgstr "Sisselogimise kuval kasutatav GDM-i režiim"
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "'%s' käivitamine nurjus"
|
||||
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Paroolid ei kattu."
|
||||
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "Parool ei saa olla tühi"
|
||||
|
||||
msgid "United Kingdom"
|
||||
msgstr "Suurbritannia"
|
||||
|
||||
|
347
po/gl.po
347
po/gl.po
@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-02-21 11:16+0100\n"
|
||||
"PO-Revision-Date: 2012-02-21 11:18+0100\n"
|
||||
"POT-Creation-Date: 2012-03-31 00:07+0200\n"
|
||||
"PO-Revision-Date: 2012-03-31 00:08+0200\n"
|
||||
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
|
||||
"Language-Team: Galician <gnome-l10n-gl@gnome.org>\n"
|
||||
"Language: gl\n"
|
||||
@ -33,8 +33,8 @@ msgstr "Xestor de xanelas e inicio de aplicativos"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgstr "Preferencias das extensións de GNOME Shell"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Preferencias de extensións de GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
@ -136,34 +136,42 @@ msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
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.h:17
|
||||
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.h:18
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Que teclado usar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "O tipo de teclado a usar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Mostrar a hora con segundos"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Se é certa, móstranse os segundos na hora."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "Show date in clock"
|
||||
msgstr "Mostrar a data no reloxo"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Se é certa, móstrase a data no reloxo, ademais da hora."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Taxa de marcos usada para gravar «screencast»."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -171,11 +179,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.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
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.h:26
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
#, no-c-format
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
@ -201,11 +209,11 @@ msgstr ""
|
||||
"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.h:27
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||
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.h:28
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||
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 "
|
||||
@ -251,8 +259,8 @@ msgstr "(ou pase o dedo)"
|
||||
msgid "Not listed?"
|
||||
msgstr "Non está na lista?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:401
|
||||
#: ../js/ui/extensionSystem.js:399 ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
@ -266,16 +274,16 @@ msgstr "Iniciar sesión"
|
||||
msgid "Login Window"
|
||||
msgstr "Xanela de inicio de sesión"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||
msgid "Suspend"
|
||||
msgstr "Suspender"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
#: ../js/gdm/powerMenu.js:160
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
#: ../js/gdm/powerMenu.js:165
|
||||
msgid "Power Off"
|
||||
msgstr "Apagar"
|
||||
|
||||
@ -295,27 +303,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "Produciuse un fallo na execución de «%s»:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:251
|
||||
#: ../js/ui/appDisplay.js:255
|
||||
msgid "All"
|
||||
msgstr "Todos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:310
|
||||
#: ../js/ui/appDisplay.js:314
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "APLICATIVOS"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:375
|
||||
msgid "SETTINGS"
|
||||
msgstr "CONFIGURACIÓN"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "New Window"
|
||||
msgstr "Xanela nova"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:683
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Eliminar dos favoritos"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:684
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Engadir aos favoritos"
|
||||
|
||||
@ -488,94 +496,90 @@ msgstr "Esta semana"
|
||||
msgid "Next week"
|
||||
msgstr "A vindeira semana"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||
msgid "Unknown"
|
||||
msgstr "Descoñecido"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||
msgid "Available"
|
||||
msgstr "Dispoñíbel"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||
msgid "Away"
|
||||
msgstr "Ausente"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||
msgid "Busy"
|
||||
msgstr "Ocupado"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:97
|
||||
#: ../js/ui/contactDisplay.js:102
|
||||
msgid "Offline"
|
||||
msgstr "Desconectado"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:148
|
||||
#: ../js/ui/contactDisplay.js:153
|
||||
msgid "CONTACTS"
|
||||
msgstr "CONTACTOS"
|
||||
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||
msgid "Remove"
|
||||
msgstr "Quitar"
|
||||
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
#: ../js/ui/dateMenu.js:103
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Opcións de data e hora"
|
||||
msgstr "Preferencias de data e hora"
|
||||
|
||||
#: ../js/ui/dateMenu.js:123
|
||||
#: ../js/ui/dateMenu.js:129
|
||||
msgid "Open Calendar"
|
||||
msgstr "Abrir o calendario"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:181
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %e de %b, %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
#: ../js/ui/dateMenu.js:188
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %e de %b, %R"
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:186
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
#: ../js/ui/dateMenu.js:193
|
||||
msgid "%a %R"
|
||||
msgstr "%a %R"
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %e de %b, %l:%M:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:195
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %e de %b, %l:%M %p"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:199
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
#: ../js/ui/dateMenu.js:206
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l:%M %p"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:211
|
||||
#: ../js/ui/dateMenu.js:217
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a, %e de %B, %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "ELEMENTOS RECENTES"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
@ -666,84 +670,98 @@ msgstr[1] "O seu computador reiniciarase automaticamente en %d segundos."
|
||||
msgid "Restarting the system."
|
||||
msgstr "Reiniciando o sistema."
|
||||
|
||||
#: ../js/ui/extensionSystem.js:405
|
||||
#: ../js/ui/extensionSystem.js:403
|
||||
msgid "Install"
|
||||
msgstr "Instalar"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:409
|
||||
#: ../js/ui/extensionSystem.js:407
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:322
|
||||
#: ../js/ui/keyboard.js:327
|
||||
msgid "tray"
|
||||
msgstr "área de notificación"
|
||||
|
||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "Teclado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Contrasinal:"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:101
|
||||
msgid "Type again:"
|
||||
msgstr "Escriba de novo:"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:732
|
||||
msgid "No extensions installed"
|
||||
msgstr "Non hai ningunha extensión instalada"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:779
|
||||
#: ../js/ui/lookingGlass.js:786
|
||||
#, c-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s non xerou ningún erro."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:785
|
||||
#: ../js/ui/lookingGlass.js:792
|
||||
msgid "Hide Errors"
|
||||
msgstr "Ocultar erros"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||
msgid "Show Errors"
|
||||
msgstr "Mostrar erros"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:798
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
msgid "Enabled"
|
||||
msgstr "Activado"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1093
|
||||
msgid "Disabled"
|
||||
msgstr "Desactivado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:803
|
||||
#: ../js/ui/lookingGlass.js:810
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
#: ../js/ui/lookingGlass.js:812
|
||||
msgid "Out of date"
|
||||
msgstr "Caducado"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:807
|
||||
#: ../js/ui/lookingGlass.js:814
|
||||
msgid "Downloading"
|
||||
msgstr "Descargando"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:828
|
||||
#: ../js/ui/lookingGlass.js:835
|
||||
msgid "View Source"
|
||||
msgstr "Ver fonte"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:834
|
||||
#: ../js/ui/lookingGlass.js:841
|
||||
msgid "Web Page"
|
||||
msgstr "Páxina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:118
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Screencast desde %d %t"
|
||||
|
||||
#: ../js/ui/messageTray.js:1200
|
||||
msgid "Open"
|
||||
msgstr "Abrir"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Unmute"
|
||||
msgstr "Desactivar silencio"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Mute"
|
||||
msgstr "Silenciar"
|
||||
|
||||
#: ../js/ui/messageTray.js:2447
|
||||
#: ../js/ui/messageTray.js:2490
|
||||
msgid "System Information"
|
||||
msgstr "Información do sistema"
|
||||
|
||||
@ -832,31 +850,35 @@ msgstr "Requírese un contrasinal para conectarse a «%s»."
|
||||
msgid "Undo"
|
||||
msgstr "Desfacer"
|
||||
|
||||
#: ../js/ui/overview.js:199
|
||||
#: ../js/ui/overview.js:132
|
||||
msgid "Overview"
|
||||
msgstr "Vista xeral"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Windows"
|
||||
msgstr "Xanelas"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:205
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:231
|
||||
msgid "Dash"
|
||||
msgstr "Taboleiro"
|
||||
|
||||
#: ../js/ui/panel.js:582
|
||||
#: ../js/ui/panel.js:592
|
||||
msgid "Quit"
|
||||
msgstr "Saír"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:613
|
||||
#: ../js/ui/panel.js:624
|
||||
msgid "Activities"
|
||||
msgstr "Actividades"
|
||||
|
||||
#: ../js/ui/panel.js:983
|
||||
#: ../js/ui/panel.js:999
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superior"
|
||||
|
||||
@ -897,16 +919,12 @@ msgstr "Autenticar"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Contrasinal:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:720
|
||||
#: ../js/ui/popupMenu.js:724
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -914,11 +932,11 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Escriba unha orde:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:332
|
||||
msgid "Searching..."
|
||||
msgstr "Buscando…"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:414
|
||||
msgid "No matching results."
|
||||
msgstr "Non hai resultados que coincidan."
|
||||
|
||||
@ -979,7 +997,7 @@ msgstr "Teclas do rato"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:83
|
||||
msgid "Universal Access Settings"
|
||||
msgstr "Opcións de acceso universal"
|
||||
msgstr "Preferencias do acceso universal"
|
||||
|
||||
#: ../js/ui/status/accessibility.js:117
|
||||
msgid "High Contrast"
|
||||
@ -1010,7 +1028,7 @@ msgstr "Configurar un dispositivo novo…"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:87
|
||||
msgid "Bluetooth Settings"
|
||||
msgstr "Opcións de Bluetooth"
|
||||
msgstr "Preferencias do Bluetooth"
|
||||
|
||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||
@ -1048,15 +1066,15 @@ msgstr "O dispositivo solicitado non pode explorarse, o erro é «%s»"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:268
|
||||
msgid "Keyboard Settings"
|
||||
msgstr "Opcións do teclado"
|
||||
msgstr "Preferencias do teclado"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:271
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Opcións do rato"
|
||||
msgstr "Preferencias do rato"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
||||
msgid "Sound Settings"
|
||||
msgstr "Opcións do son"
|
||||
msgstr "Preferencias do son"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:372
|
||||
#, c-format
|
||||
@ -1076,7 +1094,7 @@ msgstr "Conceder acceso sempre"
|
||||
msgid "Grant this time only"
|
||||
msgstr "Conceder só esta vez"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1093
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1091
|
||||
msgid "Reject"
|
||||
msgstr "Rexeitar"
|
||||
|
||||
@ -1227,7 +1245,7 @@ msgstr "Conexións VPN"
|
||||
|
||||
#: ../js/ui/status/network.js:1602
|
||||
msgid "Network Settings"
|
||||
msgstr "Opcións da rede"
|
||||
msgstr "Preferencias da rede"
|
||||
|
||||
#: ../js/ui/status/network.js:1739
|
||||
msgid "Connection failed"
|
||||
@ -1251,7 +1269,7 @@ msgstr "Batería"
|
||||
|
||||
#: ../js/ui/status/power.js:76
|
||||
msgid "Power Settings"
|
||||
msgstr "Opcións de enerxía"
|
||||
msgstr "Preferencias de enerxía"
|
||||
|
||||
#. 0 is reported when UPower does not have enough data
|
||||
#. to estimate battery life
|
||||
@ -1353,39 +1371,39 @@ msgid "Invitation"
|
||||
msgstr "Convite"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:273
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "Chamar"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:289
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "Transferencia de ficheiro"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:371
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "Solicitude de autorización"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:407
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "Erro de conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:665
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s está conectado/a."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:669
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s está desconectado/a."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:673
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s está ausente."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:676
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s está ocupado/a."
|
||||
@ -1393,35 +1411,35 @@ msgstr "%s está ocupado/a."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:889
|
||||
#: ../js/ui/telepathyClient.js:887
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Enviado ás <b>%X</b> o <b>%A</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/telepathyClient.js:895
|
||||
#: ../js/ui/telepathyClient.js:893
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Enviado ás <b>%X</b> o <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/telepathyClient.js:900
|
||||
#: ../js/ui/telepathyClient.js:898
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Enviado ás <b>%X</b> o <b>%B %d</b>, %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/telepathyClient.js:942
|
||||
#: ../js/ui/telepathyClient.js:940
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Agora %s chámase %s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1044
|
||||
#: ../js/ui/telepathyClient.js:1042
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "Convite a %s"
|
||||
@ -1429,35 +1447,35 @@ msgstr "Convite a %s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1050
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s estalle convidando a unirse a %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1054 ../js/ui/telepathyClient.js:1133
|
||||
#: ../js/ui/telepathyClient.js:1231
|
||||
#: ../js/ui/telepathyClient.js:1052 ../js/ui/telepathyClient.js:1131
|
||||
#: ../js/ui/telepathyClient.js:1229
|
||||
msgid "Decline"
|
||||
msgstr "Rexeitar"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1055 ../js/ui/telepathyClient.js:1134
|
||||
#: ../js/ui/telepathyClient.js:1232
|
||||
#: ../js/ui/telepathyClient.js:1053 ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1230
|
||||
msgid "Accept"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1085
|
||||
#: ../js/ui/telepathyClient.js:1083
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Videochamada de %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1088
|
||||
#: ../js/ui/telepathyClient.js:1086
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Chamada de %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/telepathyClient.js:1095
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
msgid "Answer"
|
||||
msgstr "Responder"
|
||||
|
||||
@ -1466,112 +1484,112 @@ msgstr "Responder"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/telepathyClient.js:1127
|
||||
#: ../js/ui/telepathyClient.js:1125
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s esta enviándolle %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/telepathyClient.js:1196
|
||||
#: ../js/ui/telepathyClient.js:1194
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s solicítalle permiso para ver cando está en liña"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
#: ../js/ui/telepathyClient.js:1287
|
||||
msgid "Network error"
|
||||
msgstr "Erro da rede"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
msgid "Authentication failed"
|
||||
msgstr "Fallou a autenticación"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
msgid "Encryption error"
|
||||
msgstr "Erro de cifrado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Certificado non fornecido"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Non se confía no certificado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
msgid "Certificate expired"
|
||||
msgstr "Certificado caducado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Certificado non activado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "O nome do servidor do certificado non coincide"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "A pegada do certificado non coincide"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Certificado autoasinado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
msgid "Status is set to offline"
|
||||
msgstr "O estado está definido a «desconectado»"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
msgid "Encryption is not available"
|
||||
msgstr "O cifrado non está dispoñíbel"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "O certificado non é válido"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Rexeitouse a conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Non é posíbel estabelecer a conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Perdeuse a conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Esta cuenta xa está conectada ao servidor"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
msgstr ""
|
||||
"Substituíuse a conexión por unha nova conexión empregando o mesmo recurso"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Esta conta xa existe no servidor"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr ""
|
||||
"Nestes intres o servidor está moi ocupado tentando xestionar a conexión"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Revogouse o certificado"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"O certificado usa un algoritmo de cifrado inseguro ou é criptográficamente "
|
||||
"débil"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
@ -1580,74 +1598,74 @@ msgstr ""
|
||||
"certificado do servidor excede os límites impostos pola biblioteca de "
|
||||
"criptografía."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1335
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
msgid "Internal error"
|
||||
msgstr "Erro interno"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1345
|
||||
#: ../js/ui/telepathyClient.js:1343
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "Fallou a conexión a %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1354
|
||||
#: ../js/ui/telepathyClient.js:1352
|
||||
msgid "Reconnect"
|
||||
msgstr "Reconectar"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1355
|
||||
#: ../js/ui/telepathyClient.js:1353
|
||||
msgid "Edit account"
|
||||
msgstr "Editar conta"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1401
|
||||
#: ../js/ui/telepathyClient.js:1399
|
||||
msgid "Unknown reason"
|
||||
msgstr "Razón descoñecida"
|
||||
|
||||
#: ../js/ui/userMenu.js:133
|
||||
#: ../js/ui/userMenu.js:135
|
||||
msgid "Hidden"
|
||||
msgstr "Oculto"
|
||||
|
||||
#: ../js/ui/userMenu.js:139
|
||||
#: ../js/ui/userMenu.js:141
|
||||
msgid "Idle"
|
||||
msgstr "Inactivo"
|
||||
|
||||
#: ../js/ui/userMenu.js:142
|
||||
#: ../js/ui/userMenu.js:144
|
||||
msgid "Unavailable"
|
||||
msgstr "Non dispoñíbel"
|
||||
|
||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||
msgid "Power Off..."
|
||||
msgstr "Apagar…"
|
||||
|
||||
#: ../js/ui/userMenu.js:615
|
||||
#: ../js/ui/userMenu.js:631
|
||||
msgid "Notifications"
|
||||
msgstr "Notificacións"
|
||||
|
||||
#: ../js/ui/userMenu.js:623
|
||||
#: ../js/ui/userMenu.js:639
|
||||
msgid "Online Accounts"
|
||||
msgstr "Contas en liña"
|
||||
|
||||
#: ../js/ui/userMenu.js:627
|
||||
#: ../js/ui/userMenu.js:643
|
||||
msgid "System Settings"
|
||||
msgstr "Opcións do sistema"
|
||||
msgstr "Preferencias do sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:634
|
||||
#: ../js/ui/userMenu.js:650
|
||||
msgid "Lock Screen"
|
||||
msgstr "Bloquear a pantalla"
|
||||
|
||||
#: ../js/ui/userMenu.js:639
|
||||
#: ../js/ui/userMenu.js:655
|
||||
msgid "Switch User"
|
||||
msgstr "Cambiar de usuario"
|
||||
|
||||
#: ../js/ui/userMenu.js:644
|
||||
#: ../js/ui/userMenu.js:660
|
||||
msgid "Log Out..."
|
||||
msgstr "Saír da sesión…"
|
||||
|
||||
#: ../js/ui/userMenu.js:672
|
||||
#: ../js/ui/userMenu.js:688
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "O seu estado do chat estabelecerase a «ocupado»"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
#: ../js/ui/userMenu.js:689
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1686,7 +1704,7 @@ msgstr "%s o oráculo dí"
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "A súa mensaxe oculta favorita"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:33
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
msgid "'%s' is ready"
|
||||
msgstr "«%s» está preparado"
|
||||
@ -1713,19 +1731,27 @@ msgstr[1] "%u entradas"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons do sistema"
|
||||
|
||||
#: ../src/main.c:262
|
||||
#: ../src/main.c:255
|
||||
msgid "Print version"
|
||||
msgstr "Imprimir versión"
|
||||
|
||||
#: ../src/main.c:268
|
||||
#: ../src/main.c:261
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modo usado por GDM para a pantalla de inicio"
|
||||
|
||||
#: ../src/shell-app.c:617
|
||||
#: ../src/shell-app.c:619
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Produciuse un fallo ao iniciar «%s»"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:708
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Os contrasinais non coinciden."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:716
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "O contrasinal non pode estar baleiro"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "Reino Unido"
|
||||
@ -1760,6 +1786,9 @@ msgstr "Sistema de ficheiros"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "ELEMENTOS RECENTES"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||
|
388
po/he.po
388
po/he.po
@ -8,8 +8,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2012-02-17 15:08+0200\n"
|
||||
"PO-Revision-Date: 2012-02-17 15:10+0200\n"
|
||||
"POT-Creation-Date: 2012-04-09 22:48+0300\n"
|
||||
"PO-Revision-Date: 2012-04-09 22:48+0200\n"
|
||||
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
|
||||
"Language-Team: Hebrew <sh.yaron@gmail.com>\n"
|
||||
"Language: he\n"
|
||||
@ -35,8 +35,8 @@ msgstr "הגדרת הרחבות GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgstr "העדפות הרחבות GNOME Shell"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "העדפות ההרחבות של GNOME Shell"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:1
|
||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
@ -79,63 +79,79 @@ msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "If true, display the ISO week date in the calendar."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:11
|
||||
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Keybinding to open the application menu"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Keybinding to open the application menu."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "List of desktop file IDs for favorite applications"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#, no-c-format
|
||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
msgid "Show date in clock"
|
||||
msgstr "Show date in clock"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Show the week date in the calendar"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Show time with seconds"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
msgstr "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||
msgstr "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "The gstreamer pipeline used to encode the screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||
msgstr "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "סוג המקלדת לשימוש."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||
msgid "Uuids of extensions to enable"
|
||||
msgstr "Uuids of extensions to enable"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
msgid "Whether to collect stats about applications usage"
|
||||
msgstr "Whether to collect stats about applications usage"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "באיזו מקלדת להשתמש"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||
msgid "disabled OpenSearch providers"
|
||||
msgstr "disabled OpenSearch providers"
|
||||
|
||||
@ -152,58 +168,58 @@ msgstr "<b>הרחבה</b>"
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr "יש לבחור את ההרחבה להגדרה באמצעות תיבת הבחירה המשולבת שלהלן."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:624
|
||||
#: ../js/gdm/loginDialog.js:627
|
||||
msgid "Session..."
|
||||
msgstr "הפעלה..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:786
|
||||
#: ../js/gdm/loginDialog.js:789
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "כניסה"
|
||||
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/loginDialog.js:831
|
||||
#: ../js/gdm/loginDialog.js:834
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(או להעביר אצבע)"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:852
|
||||
#: ../js/gdm/loginDialog.js:855
|
||||
msgid "Not listed?"
|
||||
msgstr "לא רשום?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020
|
||||
#: ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401
|
||||
#: ../js/gdm/loginDialog.js:1023
|
||||
#: ../js/ui/endSessionDialog.js:401
|
||||
#: ../js/ui/extensionSystem.js:400
|
||||
#: ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||
#: ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "ביטול"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1025
|
||||
#: ../js/gdm/loginDialog.js:1028
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "כניסה"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1377
|
||||
#: ../js/gdm/loginDialog.js:1380
|
||||
msgid "Login Window"
|
||||
msgstr "חלון כניסה"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:152
|
||||
#: ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583
|
||||
#: ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:155
|
||||
#: ../js/ui/userMenu.js:597
|
||||
#: ../js/ui/userMenu.js:599
|
||||
#: ../js/ui/userMenu.js:668
|
||||
msgid "Suspend"
|
||||
msgstr "השהיה"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
#: ../js/gdm/powerMenu.js:160
|
||||
msgid "Restart"
|
||||
msgstr "הפעלה מחדש"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
#: ../js/gdm/powerMenu.js:165
|
||||
msgid "Power Off"
|
||||
msgstr "כיבוי"
|
||||
|
||||
@ -223,27 +239,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "ההרצה של '%s' נכשלה:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:251
|
||||
#: ../js/ui/appDisplay.js:255
|
||||
msgid "All"
|
||||
msgstr "הכול"
|
||||
|
||||
#: ../js/ui/appDisplay.js:310
|
||||
#: ../js/ui/appDisplay.js:314
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "יישומים"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:375
|
||||
msgid "SETTINGS"
|
||||
msgstr "הגדרות"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "New Window"
|
||||
msgstr "חלון חדש"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:683
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "הסרה מהמועדפים"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:684
|
||||
msgid "Add to Favorites"
|
||||
msgstr "הוספה למועדפים"
|
||||
|
||||
@ -416,100 +432,96 @@ msgstr "השבוע"
|
||||
msgid "Next week"
|
||||
msgstr "בשבוע הבא"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63
|
||||
#: ../js/ui/contactDisplay.js:66
|
||||
#: ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215
|
||||
#: ../src/shell-app.c:372
|
||||
#: ../src/shell-app.c:374
|
||||
msgid "Unknown"
|
||||
msgstr "לא ידוע"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84
|
||||
#: ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:89
|
||||
#: ../js/ui/userMenu.js:129
|
||||
msgid "Available"
|
||||
msgstr "זמין"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89
|
||||
#: ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:94
|
||||
#: ../js/ui/userMenu.js:138
|
||||
msgid "Away"
|
||||
msgstr "מרוחק"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93
|
||||
#: ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:98
|
||||
#: ../js/ui/userMenu.js:132
|
||||
msgid "Busy"
|
||||
msgstr "עסוק"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:97
|
||||
#: ../js/ui/contactDisplay.js:102
|
||||
msgid "Offline"
|
||||
msgstr "מנותק"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:148
|
||||
#: ../js/ui/contactDisplay.js:153
|
||||
msgid "CONTACTS"
|
||||
msgstr "אנשי קשר"
|
||||
|
||||
#: ../js/ui/dash.js:229
|
||||
#: ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/messageTray.js:1207
|
||||
msgid "Remove"
|
||||
msgstr "הסרה"
|
||||
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
#: ../js/ui/dateMenu.js:103
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "הגדרות תאריך ושעה"
|
||||
|
||||
#: ../js/ui/dateMenu.js:123
|
||||
#: ../js/ui/dateMenu.js:129
|
||||
msgid "Open Calendar"
|
||||
msgstr "פתיחת היומן"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:181
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %b %e, %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
#: ../js/ui/dateMenu.js:188
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %b %e, %R"
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:186
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %R:%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
#: ../js/ui/dateMenu.js:193
|
||||
msgid "%a %R"
|
||||
msgstr "%a %R"
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %b %e, %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:195
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %b %e, %l:%M %p"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:199
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l:%M:%S %p"
|
||||
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
#: ../js/ui/dateMenu.js:206
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l:%M %p"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:211
|
||||
#: ../js/ui/dateMenu.js:217
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A ה־%e ב%B, %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "פריטים אחרונים"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
@ -603,87 +615,102 @@ msgstr[2] "המערכת תופעל מחדש בעוד 2 שניות."
|
||||
msgid "Restarting the system."
|
||||
msgstr "המערכת מופעלת מחדש"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:405
|
||||
#: ../js/ui/extensionSystem.js:404
|
||||
msgid "Install"
|
||||
msgstr "התקנה"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:409
|
||||
#: ../js/ui/extensionSystem.js:408
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "הורדה והתקנה של '%s' מ־extensions.gnome.org?"
|
||||
|
||||
#: ../js/ui/keyboard.js:322
|
||||
#: ../js/ui/keyboard.js:327
|
||||
msgid "tray"
|
||||
msgstr "מגש מערכת"
|
||||
|
||||
#: ../js/ui/keyboard.js:539
|
||||
#: ../js/ui/keyboard.js:544
|
||||
#: ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "מקלדת"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/keyringPrompt.js:85
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "ססמה:"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:101
|
||||
msgid "Type again:"
|
||||
msgstr "נא להקליד שוב:"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:732
|
||||
msgid "No extensions installed"
|
||||
msgstr "לא מותקנות הרחבות"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:779
|
||||
#: ../js/ui/lookingGlass.js:786
|
||||
#, c-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s לא העלה שגיאות כלשהן."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:785
|
||||
#: ../js/ui/lookingGlass.js:792
|
||||
msgid "Hide Errors"
|
||||
msgstr "הסתרת השגיאות"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:789
|
||||
#: ../js/ui/lookingGlass.js:840
|
||||
#: ../js/ui/lookingGlass.js:796
|
||||
#: ../js/ui/lookingGlass.js:847
|
||||
msgid "Show Errors"
|
||||
msgstr "הצגת השגיאות"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:798
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
msgid "Enabled"
|
||||
msgstr "פעיל"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:801
|
||||
#: ../src/gvc/gvc-mixer-control.c:1093
|
||||
#: ../js/ui/lookingGlass.js:808
|
||||
#: ../src/gvc/gvc-mixer-control.c:1082
|
||||
msgid "Disabled"
|
||||
msgstr "מנוטרל"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:803
|
||||
#: ../js/ui/lookingGlass.js:810
|
||||
msgid "Error"
|
||||
msgstr "שגיאה"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
#: ../js/ui/lookingGlass.js:812
|
||||
msgid "Out of date"
|
||||
msgstr "לא בתוקף"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:807
|
||||
#: ../js/ui/lookingGlass.js:814
|
||||
msgid "Downloading"
|
||||
msgstr "בהורדה"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:828
|
||||
#: ../js/ui/lookingGlass.js:835
|
||||
msgid "View Source"
|
||||
msgstr "צפייה במקור"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:834
|
||||
#: ../js/ui/lookingGlass.js:841
|
||||
msgid "Web Page"
|
||||
msgstr "דף אינטרנט"
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:118
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "צילום מסך מהקובץ %d %t"
|
||||
|
||||
#: ../js/ui/messageTray.js:1200
|
||||
msgid "Open"
|
||||
msgstr "פתיחה"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Unmute"
|
||||
msgstr "ביטול ההשתקה"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Mute"
|
||||
msgstr "השתקה"
|
||||
|
||||
#: ../js/ui/messageTray.js:2446
|
||||
#: ../js/ui/messageTray.js:2490
|
||||
msgid "System Information"
|
||||
msgstr "פרטי המערכת"
|
||||
|
||||
@ -771,31 +798,35 @@ msgstr "נדרשת ססמה כדי להתחבר אל '%s'."
|
||||
msgid "Undo"
|
||||
msgstr "ביטול"
|
||||
|
||||
#: ../js/ui/overview.js:199
|
||||
#: ../js/ui/overview.js:132
|
||||
msgid "Overview"
|
||||
msgstr "סקירה"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Windows"
|
||||
msgstr "חלונות"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:205
|
||||
msgid "Applications"
|
||||
msgstr "יישומים"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:231
|
||||
msgid "Dash"
|
||||
msgstr "חלונית"
|
||||
|
||||
#: ../js/ui/panel.js:582
|
||||
#: ../js/ui/panel.js:592
|
||||
msgid "Quit"
|
||||
msgstr "יציאה"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:613
|
||||
#: ../js/ui/panel.js:624
|
||||
msgid "Activities"
|
||||
msgstr "פעילויות"
|
||||
|
||||
#: ../js/ui/panel.js:983
|
||||
#: ../js/ui/panel.js:999
|
||||
msgid "Top Bar"
|
||||
msgstr "הסרגל העליון"
|
||||
|
||||
@ -836,16 +867,12 @@ msgstr "אימות"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "ססמה:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:720
|
||||
#: ../js/ui/popupMenu.js:724
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-intl"
|
||||
|
||||
@ -853,11 +880,11 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "נא להזין פקודה:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:332
|
||||
msgid "Searching..."
|
||||
msgstr "בחיפוש..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:415
|
||||
msgid "No matching results."
|
||||
msgstr "אין תוצאות תואמות."
|
||||
|
||||
@ -1024,7 +1051,7 @@ msgid "Grant this time only"
|
||||
msgstr "הענקת גישה הפעם בלבד"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:382
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
#: ../js/ui/telepathyClient.js:1091
|
||||
msgid "Reject"
|
||||
msgstr "סירוב"
|
||||
|
||||
@ -1311,39 +1338,39 @@ msgid "Invitation"
|
||||
msgstr "הזמנה"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:273
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "התקשרות"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:289
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "העברת קבצים"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:371
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "בקשת הרשמה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:407
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "שגיאת התחברות"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:665
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s התחבר/ה."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:669
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s התנתק/ה."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:673
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "'%s' מרוחק/ת."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:676
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s עסוק/ה."
|
||||
@ -1351,35 +1378,35 @@ msgstr "%s עסוק/ה."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:889
|
||||
#: ../js/ui/telepathyClient.js:887
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "נשלח ב־<b>%X</b> בשעה <b>%A</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/telepathyClient.js:895
|
||||
#: ../js/ui/telepathyClient.js:893
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "נשלח ב<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/telepathyClient.js:900
|
||||
#: ../js/ui/telepathyClient.js:898
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "נשלח ב<b>%A</b>, <b>ה־%d ב%B</b>, %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/telepathyClient.js:942
|
||||
#: ../js/ui/telepathyClient.js:940
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "השם של %s הוחלף ל־%s"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1044
|
||||
#: ../js/ui/telepathyClient.js:1042
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "הזמנה ל־%s"
|
||||
@ -1387,37 +1414,37 @@ msgstr "הזמנה ל־%s"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1050
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "הוזמנת על ידי %s להצטרף אל %s"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1054
|
||||
#: ../js/ui/telepathyClient.js:1133
|
||||
#: ../js/ui/telepathyClient.js:1231
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1131
|
||||
#: ../js/ui/telepathyClient.js:1229
|
||||
msgid "Decline"
|
||||
msgstr "דחייה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1055
|
||||
#: ../js/ui/telepathyClient.js:1134
|
||||
#: ../js/ui/telepathyClient.js:1232
|
||||
#: ../js/ui/telepathyClient.js:1053
|
||||
#: ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1230
|
||||
msgid "Accept"
|
||||
msgstr "אישור"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1085
|
||||
#: ../js/ui/telepathyClient.js:1083
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "שיחת וידאו מאת %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1088
|
||||
#: ../js/ui/telepathyClient.js:1086
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "שיחה מאת %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/telepathyClient.js:1095
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
msgid "Answer"
|
||||
msgstr "מענה"
|
||||
|
||||
@ -1426,179 +1453,179 @@ msgstr "מענה"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/telepathyClient.js:1127
|
||||
#: ../js/ui/telepathyClient.js:1125
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s שולח/ת אליך %s"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/telepathyClient.js:1196
|
||||
#: ../js/ui/telepathyClient.js:1194
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
#: ../js/ui/telepathyClient.js:1287
|
||||
msgid "Network error"
|
||||
msgstr "שגיאת רשת"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
msgid "Authentication failed"
|
||||
msgstr "האימות נכשל"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
msgid "Encryption error"
|
||||
msgstr "שגיאת הצפנה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
msgid "Certificate not provided"
|
||||
msgstr "לא סופק אישור"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "האישור אינו מהימן"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
msgid "Certificate expired"
|
||||
msgstr "האישור פג"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
msgid "Certificate not activated"
|
||||
msgstr "האישור לא מופעל"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "שם המארח באישור אינו תואם"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "חוסר התאמה בטביעת האצבע של האישור"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "אישור בחתימה עצמית"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
msgid "Status is set to offline"
|
||||
msgstr "המצב הוגדר ל'מנותק'"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
msgid "Encryption is not available"
|
||||
msgstr "ההצפנה אינה זמינה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "האישור אינו תקף"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
msgid "Connection has been refused"
|
||||
msgstr "ההתחברות נשללה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
msgid "Connection can't be established"
|
||||
msgstr "לא ניתן להפעיל את החיבור"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
msgid "Connection has been lost"
|
||||
msgstr "החיבור אבד"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "חשבון זה כבר מחובר לשרת"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
msgid "Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "החשבון כבר קיים בשרת"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "האישור נשלל"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr "אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי ספריית ההצפנה"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1335
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
msgid "Internal error"
|
||||
msgstr "שגיאה פנימית"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1345
|
||||
#: ../js/ui/telepathyClient.js:1343
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "החיבור אל %s נכשל"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1354
|
||||
#: ../js/ui/telepathyClient.js:1352
|
||||
msgid "Reconnect"
|
||||
msgstr "התחברות מחדש"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1355
|
||||
#: ../js/ui/telepathyClient.js:1353
|
||||
msgid "Edit account"
|
||||
msgstr "עריכת חשבון"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1401
|
||||
#: ../js/ui/telepathyClient.js:1399
|
||||
msgid "Unknown reason"
|
||||
msgstr "סיבה לא ידועה"
|
||||
|
||||
#: ../js/ui/userMenu.js:133
|
||||
#: ../js/ui/userMenu.js:135
|
||||
msgid "Hidden"
|
||||
msgstr "מוסתר"
|
||||
|
||||
#: ../js/ui/userMenu.js:139
|
||||
#: ../js/ui/userMenu.js:141
|
||||
msgid "Idle"
|
||||
msgstr "בהמתנה"
|
||||
|
||||
#: ../js/ui/userMenu.js:142
|
||||
#: ../js/ui/userMenu.js:144
|
||||
msgid "Unavailable"
|
||||
msgstr "לא זמין"
|
||||
|
||||
#: ../js/ui/userMenu.js:579
|
||||
#: ../js/ui/userMenu.js:583
|
||||
#: ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:595
|
||||
#: ../js/ui/userMenu.js:599
|
||||
#: ../js/ui/userMenu.js:669
|
||||
msgid "Power Off..."
|
||||
msgstr "כיבוי..."
|
||||
|
||||
#: ../js/ui/userMenu.js:615
|
||||
#: ../js/ui/userMenu.js:631
|
||||
msgid "Notifications"
|
||||
msgstr "התרעות"
|
||||
|
||||
#: ../js/ui/userMenu.js:623
|
||||
#: ../js/ui/userMenu.js:639
|
||||
msgid "Online Accounts"
|
||||
msgstr "חשבונות מקוונים"
|
||||
|
||||
#: ../js/ui/userMenu.js:627
|
||||
#: ../js/ui/userMenu.js:643
|
||||
msgid "System Settings"
|
||||
msgstr "הגדרות המערכת"
|
||||
|
||||
#: ../js/ui/userMenu.js:634
|
||||
#: ../js/ui/userMenu.js:650
|
||||
msgid "Lock Screen"
|
||||
msgstr "נעילת המסך"
|
||||
|
||||
#: ../js/ui/userMenu.js:639
|
||||
#: ../js/ui/userMenu.js:655
|
||||
msgid "Switch User"
|
||||
msgstr "החלפת משתמש"
|
||||
|
||||
#: ../js/ui/userMenu.js:644
|
||||
#: ../js/ui/userMenu.js:660
|
||||
msgid "Log Out..."
|
||||
msgstr "ניתוק..."
|
||||
|
||||
#: ../js/ui/userMenu.js:672
|
||||
#: ../js/ui/userMenu.js:688
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "מצב הצ׳אט שלך יוגדר ל'עסוק'"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
#: ../js/ui/userMenu.js:689
|
||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||
msgstr "ההתרעות כבויות כעת, לרבות הודעות צ׳אט. המצב המקוון שלך הותאם כדי לבשר לאחרים שיתכן שהודעותיהם לא יתקבלו באופן מיידי."
|
||||
|
||||
@ -1633,14 +1660,14 @@ msgstr "%s, כה אמרה האוראקל"
|
||||
msgid "Your favorite Easter Egg"
|
||||
msgstr "ביצת הפסחא האהובה עליך"
|
||||
|
||||
#: ../js/ui/windowAttentionHandler.js:33
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
msgid "'%s' is ready"
|
||||
msgstr "'%s' מוכן"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
||||
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||
#, c-format
|
||||
msgid "%u Output"
|
||||
msgid_plural "%u Outputs"
|
||||
@ -1650,7 +1677,7 @@ msgstr[2] "2 פלטים"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound inputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
||||
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||
#, c-format
|
||||
msgid "%u Input"
|
||||
msgid_plural "%u Inputs"
|
||||
@ -1658,23 +1685,31 @@ msgstr[0] "קלט אחד"
|
||||
msgstr[1] "%u קלטים"
|
||||
msgstr[2] "2 קלטים"
|
||||
|
||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
||||
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||
msgid "System Sounds"
|
||||
msgstr "צלילי מערכת"
|
||||
|
||||
#: ../src/main.c:262
|
||||
#: ../src/main.c:255
|
||||
msgid "Print version"
|
||||
msgstr "Print version"
|
||||
|
||||
#: ../src/main.c:268
|
||||
#: ../src/main.c:261
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "המצב בו GDM יעשה שימוש לצורך מסך הכניסה"
|
||||
|
||||
#: ../src/shell-app.c:617
|
||||
#: ../src/shell-app.c:619
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "אירע כשל בטעינת '%s'"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:708
|
||||
msgid "Passwords do not match."
|
||||
msgstr "הססמאות אינן תואמות."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:716
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "הססמה לא יכולה להישאר ריקה"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "בריטניה"
|
||||
@ -1683,7 +1718,7 @@ msgstr "בריטניה"
|
||||
msgid "Default"
|
||||
msgstr "בררת מחדל"
|
||||
|
||||
#: ../src/shell-polkit-authentication-agent.c:332
|
||||
#: ../src/shell-polkit-authentication-agent.c:339
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
|
||||
|
||||
@ -1709,6 +1744,9 @@ msgstr "מערכת הקבצים"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "פריטים אחרונים"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||
|
322
po/it.po
322
po/it.po
@ -10,10 +10,10 @@ 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-02-16 01:27+0000\n"
|
||||
"PO-Revision-Date: 2012-02-19 15:39+0100\n"
|
||||
"POT-Creation-Date: 2012-04-28 13:41+0000\n"
|
||||
"PO-Revision-Date: 2012-04-30 15:32+0200\n"
|
||||
"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
|
||||
"Language-Team: Italiano <tp@lists.linux.it>\n"
|
||||
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
@ -30,7 +30,7 @@ msgstr "Gestisce finestre e avvia applicazioni"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "Preferenze estensioni di GNOME Shell"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
@ -56,10 +56,6 @@ msgid "Uuids of extensions to enable"
|
||||
msgstr "UUID delle estensioni da abilitare"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:4
|
||||
#| msgid ""
|
||||
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#| "which should not be loaded. This setting overrides enabled-extensions for "
|
||||
#| "extensions that appear in both lists."
|
||||
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 "
|
||||
@ -115,42 +111,67 @@ msgid "History for the looking glass dialog"
|
||||
msgstr "Cronologia per il dialogo looking glass"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||
msgid ""
|
||||
"Internally used to store the last IM presence explicitly set by the user. "
|
||||
"The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
"Usato internamente per memorizzare l'ultimo stato di presenza IM impostato "
|
||||
"esplicitamente dall'utente. Il valore corrisponde alla enumerazione "
|
||||
"TpConnectionPresenceType."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
msgid ""
|
||||
"Internally used to store the last session presence status for the user. The "
|
||||
"value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
"Usato internamente per memorizzare lo stato di presenza dell'ultima sessione "
|
||||
"per l'utente. Il valore corrisponde alla enumerazione GsmPresenceStatus."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Mostra il giorno della settimana nel calendario"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Se VERO, mostra il giorno della settimana ISO nel calendario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
msgid "Keybinding to open the application menu"
|
||||
msgstr "Associazione tasti per aprire menù applicazioni"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
msgid "Keybinding to open the application menu."
|
||||
msgstr "Associazione di tasti per aprire il menù delle applicazioni."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Quale tastiera usare"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Il tipo di tastiera da usare."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Mostra l'ora con i secondi"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Se VERO, mostra i secondi nell'orario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "Show date in clock"
|
||||
msgstr "Mostra la data nell'orologio"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Se VERO, mostra nell'orologio la data, oltre all'orario."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Framerate per la registrazione di screencast."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
@ -158,24 +179,12 @@ msgstr ""
|
||||
"Il framerate in fotogrammi al secondo dello screencast registrato attraverso "
|
||||
"il registratore della GNOME Shell."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
#, no-c-format
|
||||
#| msgid ""
|
||||
#| "Sets the GStreamer pipeline used to encode recordings. It follows the "
|
||||
#| "syntax used for gst-launch. The pipeline should have an unconnected sink "
|
||||
#| "pad where the recorded video is recorded. It will normally have a "
|
||||
#| "unconnected source pad; output from that pad will be written into the "
|
||||
#| "output file. However the pipeline can also take care of its own output - "
|
||||
#| "this might be used to send the output to an icecast server via shout2send "
|
||||
#| "or similar. When unset or set to an empty value, the default pipeline "
|
||||
#| "will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 "
|
||||
#| "threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T "
|
||||
#| "is used as a placeholder for a guess at the optimal thread count on the "
|
||||
#| "system."
|
||||
msgid ""
|
||||
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
|
||||
"used for gst-launch. The pipeline should have an unconnected sink pad where "
|
||||
@ -200,11 +209,11 @@ msgstr ""
|
||||
"WEBM usando il codec VP8. %T è usato come un segnaposto per una stima del "
|
||||
"valore di thread ottimale per il sistema in uso."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:29
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Estensione del file utilizzato per salvare lo screencast"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:30
|
||||
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 "
|
||||
@ -230,53 +239,53 @@ msgstr ""
|
||||
"Selezionare una estensione da configurare usando la casella combinata qui "
|
||||
"sopra."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:624
|
||||
#: ../js/gdm/loginDialog.js:627
|
||||
msgid "Session..."
|
||||
msgstr "Sessione..."
|
||||
|
||||
#: ../js/gdm/loginDialog.js:786
|
||||
#: ../js/gdm/loginDialog.js:789
|
||||
msgctxt "title"
|
||||
msgid "Sign In"
|
||||
msgstr "Accesso"
|
||||
|
||||
#. Translators: this message is shown below the password entry field
|
||||
#. to indicate the user can swipe their finger instead
|
||||
#: ../js/gdm/loginDialog.js:831
|
||||
#: ../js/gdm/loginDialog.js:834
|
||||
msgid "(or swipe finger)"
|
||||
msgstr "(o passare il dito)"
|
||||
|
||||
#. translators: this message is shown below the user list on the
|
||||
#. login screen. It can be activated to reveal an entry for
|
||||
#. manually entering the username.
|
||||
#: ../js/gdm/loginDialog.js:852
|
||||
#: ../js/gdm/loginDialog.js:855
|
||||
msgid "Not listed?"
|
||||
msgstr "Non elencato?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:153
|
||||
#: ../js/gdm/loginDialog.js:1023 ../js/ui/endSessionDialog.js:401
|
||||
#: ../js/ui/extensionSystem.js:400 ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1025
|
||||
#: ../js/gdm/loginDialog.js:1028
|
||||
msgctxt "button"
|
||||
msgid "Sign In"
|
||||
msgstr "Accedi"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1377
|
||||
#: ../js/gdm/loginDialog.js:1380
|
||||
msgid "Login Window"
|
||||
msgstr "Finestra di accesso"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:152 ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:155 ../js/ui/userMenu.js:597
|
||||
#: ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:668
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
#: ../js/gdm/powerMenu.js:160
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
#: ../js/gdm/powerMenu.js:165
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
@ -296,27 +305,27 @@ msgid "Execution of '%s' failed:"
|
||||
msgstr "Esecuzione di «%s» non riuscita:"
|
||||
|
||||
#. Translators: Filter to display all applications
|
||||
#: ../js/ui/appDisplay.js:251
|
||||
#: ../js/ui/appDisplay.js:255
|
||||
msgid "All"
|
||||
msgstr "Tutte"
|
||||
|
||||
#: ../js/ui/appDisplay.js:310
|
||||
#: ../js/ui/appDisplay.js:314
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "APPLICAZIONI"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:375
|
||||
msgid "SETTINGS"
|
||||
msgstr "IMPOSTAZIONI"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "New Window"
|
||||
msgstr "Nuova finestra"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:683
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Rimuovi dai preferiti"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:684
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aggiungi ai preferiti"
|
||||
|
||||
@ -491,103 +500,97 @@ msgstr "Questa settimana"
|
||||
msgid "Next week"
|
||||
msgstr "Prossima settimana"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||
#: ../js/ui/contactDisplay.js:66 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:374
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:129
|
||||
msgid "Available"
|
||||
msgstr "Disponibile"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:94 ../js/ui/userMenu.js:138
|
||||
msgid "Away"
|
||||
msgstr "Assente"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:98 ../js/ui/userMenu.js:132
|
||||
msgid "Busy"
|
||||
msgstr "Non disponibile"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:97
|
||||
#: ../js/ui/contactDisplay.js:102
|
||||
msgid "Offline"
|
||||
msgstr "Fuori rete"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:148
|
||||
#: ../js/ui/contactDisplay.js:153
|
||||
msgid "CONTACTS"
|
||||
msgstr "CONTATTI"
|
||||
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1207
|
||||
msgid "Remove"
|
||||
msgstr "Rimuovi"
|
||||
|
||||
#: ../js/ui/dateMenu.js:97
|
||||
#: ../js/ui/dateMenu.js:103
|
||||
msgid "Date and Time Settings"
|
||||
msgstr "Impostazioni data e ora"
|
||||
|
||||
#: ../js/ui/dateMenu.js:123
|
||||
#: ../js/ui/dateMenu.js:129
|
||||
msgid "Open Calendar"
|
||||
msgstr "Apri calendario"
|
||||
|
||||
#. Translators: This is the time format with date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:181
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
msgid "%a %b %e, %R:%S"
|
||||
msgstr "%a %e %b, %k.%M.%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:182
|
||||
#: ../js/ui/dateMenu.js:188
|
||||
msgid "%a %b %e, %R"
|
||||
msgstr "%a %e %b, %k.%M"
|
||||
|
||||
#. Translators: This is the time format without date used
|
||||
#. in 24-hour mode.
|
||||
#: ../js/ui/dateMenu.js:186
|
||||
#: ../js/ui/dateMenu.js:192
|
||||
msgid "%a %R:%S"
|
||||
msgstr "%a %k.%M.%S"
|
||||
|
||||
#: ../js/ui/dateMenu.js:187
|
||||
#: ../js/ui/dateMenu.js:193
|
||||
msgid "%a %R"
|
||||
msgstr "%a %k.%M"
|
||||
|
||||
#. Translators: This is a time format with date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:194
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
msgid "%a %b %e, %l:%M:%S %p"
|
||||
msgstr "%a %e %b, %l.%M.%S %P"
|
||||
|
||||
#: ../js/ui/dateMenu.js:195
|
||||
#: ../js/ui/dateMenu.js:201
|
||||
msgid "%a %b %e, %l:%M %p"
|
||||
msgstr "%a %e %b, %l.%M %P"
|
||||
|
||||
#. Translators: This is a time format without date used
|
||||
#. for AM/PM.
|
||||
#: ../js/ui/dateMenu.js:199
|
||||
#: ../js/ui/dateMenu.js:205
|
||||
msgid "%a %l:%M:%S %p"
|
||||
msgstr "%a %l.%M.%S %P"
|
||||
|
||||
#: ../js/ui/dateMenu.js:200
|
||||
#: ../js/ui/dateMenu.js:206
|
||||
msgid "%a %l:%M %p"
|
||||
msgstr "%a %l.%M %P"
|
||||
|
||||
#. Translators: This is the date format to use when the calendar popup is
|
||||
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
|
||||
#.
|
||||
#: ../js/ui/dateMenu.js:211
|
||||
#: ../js/ui/dateMenu.js:217
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%a %e %B %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "ELEMENTI RECENTI"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
#| msgid "Log Out %s"
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Termina sessione di %s"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:62
|
||||
#| msgid "Log Out"
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Termina sessione"
|
||||
@ -623,7 +626,6 @@ msgid "Log Out"
|
||||
msgstr "Termina sessione"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:81
|
||||
#| msgid "Power Off"
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
@ -645,19 +647,16 @@ msgid "Powering off the system."
|
||||
msgstr "Spegnimento del sistema."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:90 ../js/ui/endSessionDialog.js:107
|
||||
#| msgid "Restart"
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:92
|
||||
#| msgid "Power Off"
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:98
|
||||
#| msgid "Restart"
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
@ -679,11 +678,11 @@ msgstr[1] "Il sistema verrà riavviato automaticamente tra %d secondi."
|
||||
msgid "Restarting the system."
|
||||
msgstr "Riavvio del sistema."
|
||||
|
||||
#: ../js/ui/extensionSystem.js:405
|
||||
#: ../js/ui/extensionSystem.js:404
|
||||
msgid "Install"
|
||||
msgstr "Installa"
|
||||
|
||||
#: ../js/ui/extensionSystem.js:409
|
||||
#: ../js/ui/extensionSystem.js:408
|
||||
#, c-format
|
||||
msgid "Download and install '%s' from extensions.gnome.org?"
|
||||
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||
@ -691,82 +690,92 @@ 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:322
|
||||
#: ../js/ui/keyboard.js:327
|
||||
msgid "tray"
|
||||
msgstr "nascondi"
|
||||
|
||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
||||
#: ../js/ui/keyboard.js:544 ../js/ui/status/keyboard.js:44
|
||||
#: ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "Tastiera"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:725
|
||||
#: ../js/ui/keyringPrompt.js:85 ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
#: ../js/ui/keyringPrompt.js:101
|
||||
msgid "Type again:"
|
||||
msgstr "Inserire di nuovo:"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:732
|
||||
msgid "No extensions installed"
|
||||
msgstr "Nessuna estensione installata"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: ../js/ui/lookingGlass.js:779
|
||||
#: ../js/ui/lookingGlass.js:786
|
||||
#, c-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "%s non ha emesso alcun errore."
|
||||
|
||||
#: ../js/ui/lookingGlass.js:785
|
||||
#| msgid "Error"
|
||||
#: ../js/ui/lookingGlass.js:792
|
||||
msgid "Hide Errors"
|
||||
msgstr "Nascondi errori"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
||||
#| msgid "Error"
|
||||
#: ../js/ui/lookingGlass.js:796 ../js/ui/lookingGlass.js:847
|
||||
msgid "Show Errors"
|
||||
msgstr "Mostra errori"
|
||||
|
||||
# (ndt) o abilitata?
|
||||
#: ../js/ui/lookingGlass.js:798
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
msgid "Enabled"
|
||||
msgstr "Abilitato"
|
||||
|
||||
# (ndt) o disabilitata?
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
||||
#: ../js/ui/lookingGlass.js:808 ../src/gvc/gvc-mixer-control.c:1082
|
||||
msgid "Disabled"
|
||||
msgstr "Disabilitato"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:803
|
||||
#: ../js/ui/lookingGlass.js:810
|
||||
msgid "Error"
|
||||
msgstr "Errore"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:805
|
||||
#: ../js/ui/lookingGlass.js:812
|
||||
msgid "Out of date"
|
||||
msgstr "Non aggiornato"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:807
|
||||
#: ../js/ui/lookingGlass.js:814
|
||||
msgid "Downloading"
|
||||
msgstr "Scaricamento"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:828
|
||||
#: ../js/ui/lookingGlass.js:835
|
||||
msgid "View Source"
|
||||
msgstr "Visualizza sorgente"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:834
|
||||
#: ../js/ui/lookingGlass.js:841
|
||||
msgid "Web Page"
|
||||
msgstr "Pagina web"
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:118
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr "Screencast da %d %t"
|
||||
|
||||
#: ../js/ui/messageTray.js:1200
|
||||
msgid "Open"
|
||||
msgstr "Apri"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#| msgid "minute"
|
||||
#| msgid_plural "minutes"
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Unmute"
|
||||
msgstr "Attiva audio"
|
||||
|
||||
#: ../js/ui/messageTray.js:1214
|
||||
#| msgid "Mouse"
|
||||
#: ../js/ui/messageTray.js:1217
|
||||
msgid "Mute"
|
||||
msgstr "Escludi audio"
|
||||
|
||||
#: ../js/ui/messageTray.js:2446
|
||||
#: ../js/ui/messageTray.js:2490
|
||||
msgid "System Information"
|
||||
msgstr "Informazione di sistema"
|
||||
|
||||
@ -812,8 +821,8 @@ msgstr "Richiesta autenticazione dalla rete wireless"
|
||||
#: ../js/ui/networkAgent.js:330
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"'%s'."
|
||||
"Passwords or encryption keys are required to access the wireless network '%"
|
||||
"s'."
|
||||
msgstr ""
|
||||
"È richiesta una password o una chiave di cifratura per accedere alla rete "
|
||||
"wireless «%s»."
|
||||
@ -855,33 +864,36 @@ msgstr "È richiesta una password per connettersi a «%s»."
|
||||
msgid "Undo"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: ../js/ui/overview.js:199
|
||||
#: ../js/ui/overview.js:132
|
||||
msgid "Overview"
|
||||
msgstr "Panoramica"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
msgid "Windows"
|
||||
msgstr "Finestre"
|
||||
|
||||
#: ../js/ui/overview.js:202
|
||||
#: ../js/ui/overview.js:205
|
||||
msgid "Applications"
|
||||
msgstr "Applicazioni"
|
||||
|
||||
# cruscotto?!?!?!?!?!?!?
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:231
|
||||
msgid "Dash"
|
||||
msgstr "Dash"
|
||||
|
||||
#: ../js/ui/panel.js:582
|
||||
#| msgid "Quit %s"
|
||||
#: ../js/ui/panel.js:592
|
||||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:613
|
||||
#: ../js/ui/panel.js:624
|
||||
msgid "Activities"
|
||||
msgstr "Attività"
|
||||
|
||||
#: ../js/ui/panel.js:983
|
||||
#: ../js/ui/panel.js:999
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superiore"
|
||||
|
||||
@ -923,16 +935,12 @@ msgstr "Autentica"
|
||||
msgid "Sorry, that didn't work. Please try again."
|
||||
msgstr "Errore nell'autenticazione. Provare di nuovo."
|
||||
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:272
|
||||
msgid "Password:"
|
||||
msgstr "Password:"
|
||||
|
||||
#. Translators: this MUST be either "toggle-switch-us"
|
||||
#. (for toggle switches containing the English words
|
||||
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
|
||||
#. switches containing "◯" and "|"). Other values will
|
||||
#. simply result in invisible toggle switches.
|
||||
#: ../js/ui/popupMenu.js:720
|
||||
#: ../js/ui/popupMenu.js:724
|
||||
msgid "toggle-switch-us"
|
||||
msgstr "toggle-switch-us"
|
||||
|
||||
@ -940,11 +948,11 @@ msgstr "toggle-switch-us"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Inserire un comando:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:332
|
||||
msgid "Searching..."
|
||||
msgstr "Ricerca..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:415
|
||||
msgid "No matching results."
|
||||
msgstr "Nessun risultato corrispondente."
|
||||
|
||||
@ -953,7 +961,6 @@ msgid "Copy"
|
||||
msgstr "Copia"
|
||||
|
||||
#: ../js/ui/shellEntry.js:31
|
||||
#| msgid "Panel"
|
||||
msgid "Paste"
|
||||
msgstr "Incolla"
|
||||
|
||||
@ -962,7 +969,6 @@ msgid "Show Text"
|
||||
msgstr "Mostra testo"
|
||||
|
||||
#: ../js/ui/shellEntry.js:79
|
||||
#| msgid "Large Text"
|
||||
msgid "Hide Text"
|
||||
msgstr "Nascondi testo"
|
||||
|
||||
@ -972,7 +978,6 @@ msgstr "Password errata, provare di nuovo"
|
||||
|
||||
# su Android è Rilevabile :P
|
||||
#: ../js/ui/status/accessibility.js:47
|
||||
#| msgid "Visibility"
|
||||
msgid "Accessibility"
|
||||
msgstr "Accessibilità"
|
||||
|
||||
@ -1236,7 +1241,6 @@ msgid "Auto wireless"
|
||||
msgstr "Wireless automatica"
|
||||
|
||||
#: ../js/ui/status/network.js:1541
|
||||
#| msgid "Network error"
|
||||
msgid "Network"
|
||||
msgstr "Rete"
|
||||
|
||||
@ -1390,41 +1394,41 @@ msgstr "Invito"
|
||||
|
||||
# A memora del test che ho fatto è "chiamata"... da verificare meglio
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:273
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "Chiamata"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:289
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "Trasferimento file"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:371
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "Richesta sottoscrizione"
|
||||
|
||||
# indica lo stato del device BT, per esempio gli auricolari
|
||||
# credo sia meglio l'aggettivo che il sostantivo
|
||||
#: ../js/ui/telepathyClient.js:407
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "Errore di connessione"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:665
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s è disponibile."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:669
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s è fuori rete."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:673
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s è assente."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:676
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s non è disponibile."
|
||||
@ -1581,7 +1585,6 @@ msgid "Connection has been lost"
|
||||
msgstr "Connessione persa"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
#| msgid "This resource is already connected to the server"
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Questo account è già connesso al server"
|
||||
|
||||
@ -1623,7 +1626,6 @@ msgstr ""
|
||||
# indica lo stato del device BT, per esempio gli auricolari
|
||||
# credo sia meglio l'aggettivo che il sostantivo
|
||||
#: ../js/ui/telepathyClient.js:1335
|
||||
#| msgid "Connection error"
|
||||
msgid "Internal error"
|
||||
msgstr "Errore interno"
|
||||
|
||||
@ -1646,52 +1648,52 @@ msgstr "Modifica account"
|
||||
msgid "Unknown reason"
|
||||
msgstr "Motivo sconosciuto"
|
||||
|
||||
#: ../js/ui/userMenu.js:133
|
||||
#: ../js/ui/userMenu.js:135
|
||||
msgid "Hidden"
|
||||
msgstr "Invisibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:139
|
||||
#: ../js/ui/userMenu.js:141
|
||||
msgid "Idle"
|
||||
msgstr "Inattivo"
|
||||
|
||||
#: ../js/ui/userMenu.js:142
|
||||
#: ../js/ui/userMenu.js:144
|
||||
msgid "Unavailable"
|
||||
msgstr "Non disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:595 ../js/ui/userMenu.js:599 ../js/ui/userMenu.js:669
|
||||
msgid "Power Off..."
|
||||
msgstr "Spegni..."
|
||||
|
||||
#: ../js/ui/userMenu.js:615
|
||||
#: ../js/ui/userMenu.js:631
|
||||
msgid "Notifications"
|
||||
msgstr "Notifiche"
|
||||
|
||||
#: ../js/ui/userMenu.js:623
|
||||
#: ../js/ui/userMenu.js:639
|
||||
msgid "Online Accounts"
|
||||
msgstr "Account online"
|
||||
|
||||
#: ../js/ui/userMenu.js:627
|
||||
#: ../js/ui/userMenu.js:643
|
||||
msgid "System Settings"
|
||||
msgstr "Impostazioni di sistema"
|
||||
|
||||
#: ../js/ui/userMenu.js:634
|
||||
#: ../js/ui/userMenu.js:650
|
||||
msgid "Lock Screen"
|
||||
msgstr "Blocca schermo"
|
||||
|
||||
#: ../js/ui/userMenu.js:639
|
||||
#: ../js/ui/userMenu.js:655
|
||||
msgid "Switch User"
|
||||
msgstr "Cambia utente"
|
||||
|
||||
#: ../js/ui/userMenu.js:644
|
||||
#: ../js/ui/userMenu.js:660
|
||||
msgid "Log Out..."
|
||||
msgstr "Termina sessione..."
|
||||
|
||||
# accorciato, altrimenti non si legge...
|
||||
#: ../js/ui/userMenu.js:672
|
||||
#: ../js/ui/userMenu.js:688
|
||||
msgid "Your chat status will be set to busy"
|
||||
msgstr "Stato per chat impostato a non disponibile"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
#: ../js/ui/userMenu.js:689
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
@ -1732,14 +1734,14 @@ msgid "Your favorite Easter Egg"
|
||||
msgstr "Il vostro Easter Egg preferito"
|
||||
|
||||
# (ndt) dovrebbe essere il nome dell'applicazione
|
||||
#: ../js/ui/windowAttentionHandler.js:33
|
||||
#: ../js/ui/windowAttentionHandler.js:19
|
||||
#, c-format
|
||||
msgid "'%s' is ready"
|
||||
msgstr "«%s» è pronto"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound outputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1100
|
||||
#: ../src/gvc/gvc-mixer-control.c:1089
|
||||
#, c-format
|
||||
msgid "%u Output"
|
||||
msgid_plural "%u Outputs"
|
||||
@ -1748,30 +1750,38 @@ msgstr[1] "%u uscite"
|
||||
|
||||
#. translators:
|
||||
#. * The number of sound inputs on a particular device
|
||||
#: ../src/gvc/gvc-mixer-control.c:1110
|
||||
#: ../src/gvc/gvc-mixer-control.c:1099
|
||||
#, c-format
|
||||
msgid "%u Input"
|
||||
msgid_plural "%u Inputs"
|
||||
msgstr[0] "%u ingresso"
|
||||
msgstr[1] "%u ingressi"
|
||||
|
||||
#: ../src/gvc/gvc-mixer-control.c:1408
|
||||
#: ../src/gvc/gvc-mixer-control.c:1397
|
||||
msgid "System Sounds"
|
||||
msgstr "Audio di sistema"
|
||||
|
||||
#: ../src/main.c:262
|
||||
#: ../src/main.c:255
|
||||
msgid "Print version"
|
||||
msgstr "Stampa la versione"
|
||||
|
||||
#: ../src/main.c:268
|
||||
#: ../src/main.c:261
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Modalità usata da GDM per la schermata d'accesso"
|
||||
|
||||
#: ../src/shell-app.c:617
|
||||
#: ../src/shell-app.c:619
|
||||
#, c-format
|
||||
msgid "Failed to launch '%s'"
|
||||
msgstr "Avvio di «%s» non riuscito"
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:708
|
||||
msgid "Passwords do not match."
|
||||
msgstr "Le password non corrispondono."
|
||||
|
||||
#: ../src/shell-keyring-prompt.c:716
|
||||
msgid "Password cannot be blank"
|
||||
msgstr "La password non può essere vuota"
|
||||
|
||||
#: ../src/shell-mobile-providers.c:80
|
||||
msgid "United Kingdom"
|
||||
msgstr "Regno Unito"
|
||||
@ -1780,14 +1790,13 @@ msgstr "Regno Unito"
|
||||
msgid "Default"
|
||||
msgstr "Predefinito"
|
||||
|
||||
#: ../src/shell-polkit-authentication-agent.c:332
|
||||
#: ../src/shell-polkit-authentication-agent.c:339
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Il dialogo di autenticazione è stato annullato dall'utente"
|
||||
|
||||
#. Translators: this is the same string as the one found in
|
||||
#. * nautilus
|
||||
#: ../src/shell-util.c:97
|
||||
#| msgid "Volume"
|
||||
msgid "Home"
|
||||
msgstr "Home"
|
||||
|
||||
@ -1808,6 +1817,9 @@ msgstr "File system"
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "ELEMENTI RECENTI"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "GNOME Shell extensions have a uuid property; this key lists extensions "
|
||||
#~ "which should be loaded. disabled-extensions overrides this setting for "
|
||||
|
435
po/kk.po
435
po/kk.po
@ -6,10 +6,9 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: 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-02-10 20:26+0000\n"
|
||||
"PO-Revision-Date: 2012-02-12 10:42+0600\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-02-26 17:09+0000\n"
|
||||
"PO-Revision-Date: 2012-02-27 13:18+0600\n"
|
||||
"Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
|
||||
"Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -28,9 +27,10 @@ msgid "Window management and application launching"
|
||||
msgstr "Терезелерді басқару мен қолданбаларды жөнелту"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:1
|
||||
#: ../js/extensionPrefs/main.js:154
|
||||
msgid "GNOME Shell Extensions Preferences"
|
||||
msgstr "GNOME Shell кеңейтулерінің баптаулары"
|
||||
#: ../js/extensionPrefs/main.js:153
|
||||
#| msgid "GNOME Shell Extensions Preferences"
|
||||
msgid "GNOME Shell Extension Preferences"
|
||||
msgstr "GNOME Shell кеңейту баптаулары"
|
||||
|
||||
#: ../data/gnome-shell-extension-prefs.desktop.in.in.h:2
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
@ -41,9 +41,7 @@ msgid "Enable internal tools useful for developers and testers from Alt-F2"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:2
|
||||
msgid ""
|
||||
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
|
||||
"dialog."
|
||||
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:3
|
||||
@ -51,11 +49,7 @@ msgid "Uuids of extensions to enable"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.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."
|
||||
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 ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:5
|
||||
@ -63,25 +57,15 @@ msgid "Whether to collect stats about applications usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.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 ""
|
||||
"Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін "
|
||||
"бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, "
|
||||
"қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін "
|
||||
"сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
|
||||
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
|
||||
msgstr "Қоршам әдетте белсенді қолданбаларды кеңінен қолданылатындарды анықтау үшін бақылап отырады (мыс. жөнелткіштер). Бұл мәлімет жеке болып қалып отырса да, қауіпсіздік мақсатында осыны сөндіре аласыз. Олай істесеңіз де, осыған дейін сақталған осындай мәлімет өшірілмейтінін ескеріңіз."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:7
|
||||
msgid "List of desktop file IDs for favorite applications"
|
||||
msgstr "Таңдамалы қолданбалар үшін desktop файлдары ID-нің тізімі"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:8
|
||||
msgid ""
|
||||
"The applications corresponding to these identifiers will be displayed in the "
|
||||
"favorites area."
|
||||
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:9
|
||||
@ -97,87 +81,80 @@ msgid "History for the looking glass dialog"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:12
|
||||
msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
msgid "Show the week date in the calendar"
|
||||
msgstr "Күнтізбеде апта күнін көрсету"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:13
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
msgid "If true, display the ISO week date in the calendar."
|
||||
msgstr "Ақиқат болса, күнтізбеде ISO апта күнін көрсетеді."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:14
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
msgid "Which keyboard to use"
|
||||
msgstr "Қолданылатын пернетақта"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:15
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
msgid "The type of keyboard to use."
|
||||
msgstr "Қолданылатын пернетақта түрі."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:16
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
msgid "Show time with seconds"
|
||||
msgstr "Уақытты секундтармен бірге көрсету"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:17
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
msgid "If true, display seconds in time."
|
||||
msgstr "Ақиқат болса, уақытта секундтар көрсетіледі. "
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:18
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
msgid "Show date in clock"
|
||||
msgstr "Сағатта күнді көрсету"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:19
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid "If true, display date in the clock, in addition to time."
|
||||
msgstr "Ақиқат болса, сағатта уақытқа қоса күн көрсетіледі."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:20
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "Framerate used for recording screencasts."
|
||||
msgstr "Скринкасттарды жазу үшін қолданылатын кадр/сек баптауы."
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:21
|
||||
msgid ""
|
||||
"The framerate of the resulting screencast recordered by GNOME Shell's "
|
||||
"screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:22
|
||||
msgid "The gstreamer pipeline used to encode the screencast"
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:23
|
||||
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:24
|
||||
#, 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 "The gstreamer pipeline used to encode the screencast"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:25
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
#, no-c-format
|
||||
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'vp8enc quality=8 speed=6 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:27
|
||||
msgid "File extension used for storing the screencast"
|
||||
msgstr "Скринкастты сақтау үшін қолданылатын файл кеңетуі"
|
||||
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:26
|
||||
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."
|
||||
#: ../data/org.gnome.shell.gschema.xml.in.h:28
|
||||
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
|
||||
msgstr ""
|
||||
|
||||
#: ../js/extensionPrefs/main.js:126
|
||||
#: ../js/extensionPrefs/main.js:125
|
||||
#, c-format
|
||||
msgid "There was an error loading the preferences dialog for %s:"
|
||||
msgstr "%s үшін баптаулар сұхбатын жүктеу кезінде қате орын алды:"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:166
|
||||
#: ../js/extensionPrefs/main.js:165
|
||||
msgid "<b>Extension</b>"
|
||||
msgstr "<b>Кеңейту</b>"
|
||||
|
||||
#: ../js/extensionPrefs/main.js:190
|
||||
#: ../js/extensionPrefs/main.js:189
|
||||
msgid "Select an extension to configure using the combobox above."
|
||||
msgstr ""
|
||||
|
||||
@ -203,9 +180,12 @@ msgstr ""
|
||||
msgid "Not listed?"
|
||||
msgstr "Тізімде жоқсыз ба?"
|
||||
|
||||
#: ../js/gdm/loginDialog.js:1020 ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401 ../js/ui/networkAgent.js:145
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175 ../js/ui/status/bluetooth.js:462
|
||||
#: ../js/gdm/loginDialog.js:1020
|
||||
#: ../js/ui/endSessionDialog.js:419
|
||||
#: ../js/ui/extensionSystem.js:401
|
||||
#: ../js/ui/networkAgent.js:153
|
||||
#: ../js/ui/polkitAuthenticationAgent.js:175
|
||||
#: ../js/ui/status/bluetooth.js:462
|
||||
msgid "Cancel"
|
||||
msgstr "Бас тарту"
|
||||
|
||||
@ -218,16 +198,18 @@ msgstr "Кіру"
|
||||
msgid "Login Window"
|
||||
msgstr "Жүйеге кіру терезесі"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:113 ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:652
|
||||
#: ../js/gdm/powerMenu.js:152
|
||||
#: ../js/ui/userMenu.js:581
|
||||
#: ../js/ui/userMenu.js:583
|
||||
#: ../js/ui/userMenu.js:652
|
||||
msgid "Suspend"
|
||||
msgstr "Ұйықтату"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:118
|
||||
#: ../js/gdm/powerMenu.js:157
|
||||
msgid "Restart"
|
||||
msgstr "Қайта қосу"
|
||||
|
||||
#: ../js/gdm/powerMenu.js:123
|
||||
#: ../js/gdm/powerMenu.js:162
|
||||
msgid "Power Off"
|
||||
msgstr "Сөндіру"
|
||||
|
||||
@ -255,19 +237,19 @@ msgstr "Барлық"
|
||||
msgid "APPLICATIONS"
|
||||
msgstr "Қолданбалар"
|
||||
|
||||
#: ../js/ui/appDisplay.js:366
|
||||
#: ../js/ui/appDisplay.js:371
|
||||
msgid "SETTINGS"
|
||||
msgstr "Баптаулар"
|
||||
|
||||
#: ../js/ui/appDisplay.js:666
|
||||
#: ../js/ui/appDisplay.js:676
|
||||
msgid "New Window"
|
||||
msgstr "Жаңа терезе"
|
||||
|
||||
#: ../js/ui/appDisplay.js:669
|
||||
#: ../js/ui/appDisplay.js:679
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Таңдамалылардан өшіру"
|
||||
|
||||
#: ../js/ui/appDisplay.js:670
|
||||
#: ../js/ui/appDisplay.js:680
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Таңдамалыларға қосу"
|
||||
|
||||
@ -440,20 +422,25 @@ msgstr "Осы аптада"
|
||||
msgid "Next week"
|
||||
msgstr "Келесі аптада"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:63 ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215 ../src/shell-app.c:372
|
||||
#: ../js/ui/contactDisplay.js:63
|
||||
#: ../js/ui/notificationDaemon.js:486
|
||||
#: ../js/ui/status/power.js:215
|
||||
#: ../src/shell-app.c:372
|
||||
msgid "Unknown"
|
||||
msgstr "Белгісіз"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:84 ../js/ui/userMenu.js:127
|
||||
#: ../js/ui/contactDisplay.js:84
|
||||
#: ../js/ui/userMenu.js:127
|
||||
msgid "Available"
|
||||
msgstr "Қолжетерлік"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:136
|
||||
#: ../js/ui/contactDisplay.js:89
|
||||
#: ../js/ui/userMenu.js:136
|
||||
msgid "Away"
|
||||
msgstr "Кетіп қалған"
|
||||
|
||||
#: ../js/ui/contactDisplay.js:93 ../js/ui/userMenu.js:130
|
||||
#: ../js/ui/contactDisplay.js:93
|
||||
#: ../js/ui/userMenu.js:130
|
||||
msgid "Busy"
|
||||
msgstr "Бос емес"
|
||||
|
||||
@ -465,7 +452,8 @@ msgstr "Желіде емес"
|
||||
msgid "CONTACTS"
|
||||
msgstr "Контакттар"
|
||||
|
||||
#: ../js/ui/dash.js:229 ../js/ui/messageTray.js:1204
|
||||
#: ../js/ui/dash.js:229
|
||||
#: ../js/ui/messageTray.js:1204
|
||||
msgid "Remove"
|
||||
msgstr "Өшіру"
|
||||
|
||||
@ -524,10 +512,6 @@ msgstr "%a %l:%M %p"
|
||||
msgid "%A %B %e, %Y"
|
||||
msgstr "%A %e %B, %Y"
|
||||
|
||||
#: ../js/ui/docDisplay.js:13
|
||||
msgid "RECENT ITEMS"
|
||||
msgstr "Соңғы нәрселер"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:61
|
||||
#, c-format
|
||||
msgctxt "title"
|
||||
@ -583,7 +567,8 @@ msgstr[0] "Жүйе %d секундтан кейін автоматты түрд
|
||||
msgid "Powering off the system."
|
||||
msgstr "Жүйені сөндіру."
|
||||
|
||||
#: ../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 "Қайта қосу"
|
||||
@ -600,8 +585,7 @@ msgstr "Қайта қосу"
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:99
|
||||
msgid "Click Restart to quit these applications and restart the system."
|
||||
msgstr ""
|
||||
"Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
|
||||
msgstr "Бұл қолданбалардан шығу мен жүйені қайта жүктеу үшін Қайта қосуды шертіңіз."
|
||||
|
||||
#: ../js/ui/endSessionDialog.js:101
|
||||
#, c-format
|
||||
@ -626,7 +610,8 @@ msgstr "extensions.gnome.org адресінен '%s' жүктеп алып, ор
|
||||
msgid "tray"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/keyboard.js:539 ../js/ui/status/power.js:203
|
||||
#: ../js/ui/keyboard.js:539
|
||||
#: ../js/ui/status/power.js:203
|
||||
msgid "Keyboard"
|
||||
msgstr "Пернетақта"
|
||||
|
||||
@ -644,7 +629,8 @@ msgstr ""
|
||||
msgid "Hide Errors"
|
||||
msgstr "Қателерді жасыру"
|
||||
|
||||
#: ../js/ui/lookingGlass.js:789 ../js/ui/lookingGlass.js:840
|
||||
#: ../js/ui/lookingGlass.js:789
|
||||
#: ../js/ui/lookingGlass.js:840
|
||||
msgid "Show Errors"
|
||||
msgstr "Қателерді көрсету"
|
||||
|
||||
@ -654,7 +640,8 @@ msgstr "Іске қосылған"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: ../js/ui/lookingGlass.js:801 ../src/gvc/gvc-mixer-control.c:1093
|
||||
#: ../js/ui/lookingGlass.js:801
|
||||
#: ../src/gvc/gvc-mixer-control.c:1093
|
||||
msgid "Disabled"
|
||||
msgstr "Сөндірулі"
|
||||
|
||||
@ -678,6 +665,12 @@ msgstr "Бастапқы кодын қарау"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб парағы"
|
||||
|
||||
#. Translators: this is a filename used for screencast recording
|
||||
#: ../js/ui/main.js:115
|
||||
#, no-c-format
|
||||
msgid "Screencast from %d %t"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/messageTray.js:1197
|
||||
msgid "Open"
|
||||
msgstr "Ашу"
|
||||
@ -690,85 +683,86 @@ msgstr "Дыбысты қайтару"
|
||||
msgid "Mute"
|
||||
msgstr "Дыбысын өшіру"
|
||||
|
||||
#: ../js/ui/messageTray.js:2446
|
||||
#: ../js/ui/messageTray.js:2447
|
||||
msgid "System Information"
|
||||
msgstr "Жүйелік ақпарат"
|
||||
|
||||
#: ../js/ui/networkAgent.js:140
|
||||
#: ../js/ui/networkAgent.js:148
|
||||
msgid "Connect"
|
||||
msgstr "Байланысу"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: ../js/ui/networkAgent.js:235 ../js/ui/networkAgent.js:247
|
||||
#: ../js/ui/networkAgent.js:274 ../js/ui/networkAgent.js:294
|
||||
#: ../js/ui/networkAgent.js:304
|
||||
#: ../js/ui/networkAgent.js:243
|
||||
#: ../js/ui/networkAgent.js:255
|
||||
#: ../js/ui/networkAgent.js:282
|
||||
#: ../js/ui/networkAgent.js:302
|
||||
#: ../js/ui/networkAgent.js:312
|
||||
msgid "Password: "
|
||||
msgstr "Пароль:"
|
||||
|
||||
#. static WEP
|
||||
#: ../js/ui/networkAgent.js:240
|
||||
#: ../js/ui/networkAgent.js:248
|
||||
msgid "Key: "
|
||||
msgstr "Кілт:"
|
||||
|
||||
#. TTLS and PEAP are actually much more complicated, but this complication
|
||||
#. is not visible here since we only care about phase2 authentication
|
||||
#. (and don't even care of which one)
|
||||
#: ../js/ui/networkAgent.js:272 ../js/ui/networkAgent.js:290
|
||||
#: ../js/ui/networkAgent.js:280
|
||||
#: ../js/ui/networkAgent.js:298
|
||||
msgid "Username: "
|
||||
msgstr "Пайдаланушы аты:"
|
||||
|
||||
#: ../js/ui/networkAgent.js:278
|
||||
#: ../js/ui/networkAgent.js:286
|
||||
msgid "Identity: "
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/networkAgent.js:280
|
||||
#: ../js/ui/networkAgent.js:288
|
||||
msgid "Private key password: "
|
||||
msgstr "Жеке кілт паролі:"
|
||||
|
||||
#: ../js/ui/networkAgent.js:292
|
||||
#: ../js/ui/networkAgent.js:300
|
||||
msgid "Service: "
|
||||
msgstr "Қызмет:"
|
||||
|
||||
#: ../js/ui/networkAgent.js:321
|
||||
#: ../js/ui/networkAgent.js:329
|
||||
msgid "Authentication required by wireless network"
|
||||
msgstr "Сымсыз желісі аутентификацияны талап етеді"
|
||||
|
||||
#: ../js/ui/networkAgent.js:322
|
||||
#: ../js/ui/networkAgent.js:330
|
||||
#, c-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network '%"
|
||||
"s'."
|
||||
msgid "Passwords or encryption keys are required to access the wireless network '%s'."
|
||||
msgstr "'%s' сымсыз желісіне қатынау үшін парольдер не шифрлеу кілттері керек."
|
||||
|
||||
#: ../js/ui/networkAgent.js:326
|
||||
#: ../js/ui/networkAgent.js:334
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Сымды 802.1X аутентификациясы"
|
||||
|
||||
#: ../js/ui/networkAgent.js:328
|
||||
#: ../js/ui/networkAgent.js:336
|
||||
msgid "Network name: "
|
||||
msgstr "Желі аты:"
|
||||
|
||||
#: ../js/ui/networkAgent.js:333
|
||||
#: ../js/ui/networkAgent.js:341
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL аутентификациясы"
|
||||
|
||||
#: ../js/ui/networkAgent.js:340
|
||||
#: ../js/ui/networkAgent.js:348
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN коды керек"
|
||||
|
||||
#: ../js/ui/networkAgent.js:341
|
||||
#: ../js/ui/networkAgent.js:349
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "Сымсыз кеңжолақты құрылғы үшін PIN коды керек"
|
||||
|
||||
#: ../js/ui/networkAgent.js:342
|
||||
#: ../js/ui/networkAgent.js:350
|
||||
msgid "PIN: "
|
||||
msgstr "PIN: "
|
||||
|
||||
#: ../js/ui/networkAgent.js:348
|
||||
#: ../js/ui/networkAgent.js:356
|
||||
msgid "Mobile broadband network password"
|
||||
msgstr "Сымсыз кеңжолақты желісінің паролі"
|
||||
|
||||
#: ../js/ui/networkAgent.js:349
|
||||
#: ../js/ui/networkAgent.js:357
|
||||
#, c-format
|
||||
msgid "A password is required to connect to '%s'."
|
||||
msgstr "'%s' үшін байланысты орнату үшін пароль керек."
|
||||
@ -787,21 +781,21 @@ msgstr "Қолданбалар"
|
||||
|
||||
#. Translators: this is the name of the dock/favorites area on
|
||||
#. the left of the overview
|
||||
#: ../js/ui/overview.js:226
|
||||
#: ../js/ui/overview.js:228
|
||||
msgid "Dash"
|
||||
msgstr ""
|
||||
|
||||
#: ../js/ui/panel.js:572
|
||||
#: ../js/ui/panel.js:582
|
||||
msgid "Quit"
|
||||
msgstr "Шығу"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: ../js/ui/panel.js:603
|
||||
#: ../js/ui/panel.js:613
|
||||
msgid "Activities"
|
||||
msgstr "Көрініс"
|
||||
|
||||
#: ../js/ui/panel.js:971
|
||||
#: ../js/ui/panel.js:983
|
||||
msgid "Top Bar"
|
||||
msgstr "Үстідегі панель"
|
||||
|
||||
@ -859,11 +853,11 @@ msgstr "toggle-switch-intl"
|
||||
msgid "Please enter a command:"
|
||||
msgstr "Команданы енгізіңіз:"
|
||||
|
||||
#: ../js/ui/searchDisplay.js:333
|
||||
#: ../js/ui/searchDisplay.js:349
|
||||
msgid "Searching..."
|
||||
msgstr "Іздеуде..."
|
||||
|
||||
#: ../js/ui/searchDisplay.js:356
|
||||
#: ../js/ui/searchDisplay.js:417
|
||||
msgid "No matching results."
|
||||
msgstr "Сәйкес келетін нәтижелер жоқ."
|
||||
|
||||
@ -934,10 +928,14 @@ msgstr "Жоғары контраст"
|
||||
msgid "Large Text"
|
||||
msgstr "Үлкен мәтін"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:31 ../js/ui/status/bluetooth.js:35
|
||||
#: ../js/ui/status/bluetooth.js:258 ../js/ui/status/bluetooth.js:341
|
||||
#: ../js/ui/status/bluetooth.js:371 ../js/ui/status/bluetooth.js:407
|
||||
#: ../js/ui/status/bluetooth.js:436 ../js/ui/status/network.js:893
|
||||
#: ../js/ui/status/bluetooth.js:31
|
||||
#: ../js/ui/status/bluetooth.js:35
|
||||
#: ../js/ui/status/bluetooth.js:258
|
||||
#: ../js/ui/status/bluetooth.js:341
|
||||
#: ../js/ui/status/bluetooth.js:371
|
||||
#: ../js/ui/status/bluetooth.js:407
|
||||
#: ../js/ui/status/bluetooth.js:436
|
||||
#: ../js/ui/status/network.js:893
|
||||
msgid "Bluetooth"
|
||||
msgstr "Bluetooth"
|
||||
|
||||
@ -958,7 +956,8 @@ msgid "Bluetooth Settings"
|
||||
msgstr "Bluetooth баптаулары"
|
||||
|
||||
#. TRANSLATORS: this means that bluetooth was disabled by hardware rfkill
|
||||
#: ../js/ui/status/bluetooth.js:107 ../js/ui/status/network.js:256
|
||||
#: ../js/ui/status/bluetooth.js:107
|
||||
#: ../js/ui/status/network.js:256
|
||||
msgid "hardware disabled"
|
||||
msgstr "құрылғы сөндірулі"
|
||||
|
||||
@ -966,11 +965,13 @@ msgstr "құрылғы сөндірулі"
|
||||
msgid "Connection"
|
||||
msgstr "Байланыс"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:214 ../js/ui/status/network.js:491
|
||||
#: ../js/ui/status/bluetooth.js:214
|
||||
#: ../js/ui/status/network.js:491
|
||||
msgid "disconnecting..."
|
||||
msgstr "байланысты үзу..."
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:227 ../js/ui/status/network.js:497
|
||||
#: ../js/ui/status/bluetooth.js:227
|
||||
#: ../js/ui/status/network.js:497
|
||||
msgid "connecting..."
|
||||
msgstr "байланысты орнату..."
|
||||
|
||||
@ -999,7 +1000,8 @@ msgstr "Пернетақта баптаулары"
|
||||
msgid "Mouse Settings"
|
||||
msgstr "Тышқан баптаулары"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:276 ../js/ui/status/volume.js:59
|
||||
#: ../js/ui/status/bluetooth.js:276
|
||||
#: ../js/ui/status/volume.js:59
|
||||
msgid "Sound Settings"
|
||||
msgstr "Дыбыс баптаулары"
|
||||
|
||||
@ -1021,7 +1023,8 @@ msgstr "Әрқашан рұқсат ету"
|
||||
msgid "Grant this time only"
|
||||
msgstr "Тек осы ретке рұқсат ету"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:382 ../js/ui/telepathyClient.js:1098
|
||||
#: ../js/ui/status/bluetooth.js:382
|
||||
#: ../js/ui/telepathyClient.js:1091
|
||||
msgid "Reject"
|
||||
msgstr "Болдырмау"
|
||||
|
||||
@ -1030,7 +1033,8 @@ msgstr "Болдырмау"
|
||||
msgid "Pairing confirmation for %s"
|
||||
msgstr "%s жіберген парлау растауы"
|
||||
|
||||
#: ../js/ui/status/bluetooth.js:414 ../js/ui/status/bluetooth.js:444
|
||||
#: ../js/ui/status/bluetooth.js:414
|
||||
#: ../js/ui/status/bluetooth.js:444
|
||||
#, c-format
|
||||
msgid "Device %s wants to pair with this computer"
|
||||
msgstr "%s құрылғысы бұл компьютермен пар болғысы кеп тұр"
|
||||
@ -1110,13 +1114,15 @@ msgstr "қолжетерсіз"
|
||||
msgid "connection failed"
|
||||
msgstr "байланысты орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/status/network.js:585 ../js/ui/status/network.js:1505
|
||||
#: ../js/ui/status/network.js:585
|
||||
#: ../js/ui/status/network.js:1505
|
||||
msgid "More..."
|
||||
msgstr "Көбірек..."
|
||||
|
||||
#. TRANSLATORS: this is the indication that a connection for another logged in user is active,
|
||||
#. and we cannot access its settings (including the name)
|
||||
#: ../js/ui/status/network.js:621 ../js/ui/status/network.js:1440
|
||||
#: ../js/ui/status/network.js:621
|
||||
#: ../js/ui/status/network.js:1440
|
||||
msgid "Connected (private)"
|
||||
msgstr "Байланысқан (жеке)"
|
||||
|
||||
@ -1133,7 +1139,8 @@ msgid "Auto dial-up"
|
||||
msgstr "Автоматты dial-up"
|
||||
|
||||
#. TRANSLATORS: this the automatic wireless connection name (including the network name)
|
||||
#: ../js/ui/status/network.js:879 ../js/ui/status/network.js:1452
|
||||
#: ../js/ui/status/network.js:879
|
||||
#: ../js/ui/status/network.js:1452
|
||||
#, c-format
|
||||
msgid "Auto %s"
|
||||
msgstr "Автоматты %s"
|
||||
@ -1232,7 +1239,8 @@ msgid "%d minute remaining"
|
||||
msgid_plural "%d minutes remaining"
|
||||
msgstr[0] "%d минут қалды"
|
||||
|
||||
#: ../js/ui/status/power.js:116 ../js/ui/status/power.js:186
|
||||
#: ../js/ui/status/power.js:116
|
||||
#: ../js/ui/status/power.js:186
|
||||
#, c-format
|
||||
msgctxt "percent of battery remaining"
|
||||
msgid "%d%%"
|
||||
@ -1279,7 +1287,8 @@ msgid "Computer"
|
||||
msgstr "Компьютер"
|
||||
|
||||
#. Translators: This is the label for audio volume
|
||||
#: ../js/ui/status/volume.js:25 ../js/ui/status/volume.js:39
|
||||
#: ../js/ui/status/volume.js:25
|
||||
#: ../js/ui/status/volume.js:39
|
||||
msgid "Volume"
|
||||
msgstr "Дыбыс деңгейі"
|
||||
|
||||
@ -1289,44 +1298,44 @@ msgstr "Микрофон"
|
||||
|
||||
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
|
||||
#. system-users for now as Empathy does.
|
||||
#: ../js/ui/telepathyClient.js:225
|
||||
#: ../js/ui/telepathyClient.js:220
|
||||
msgid "Invitation"
|
||||
msgstr "Шақыру"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:278
|
||||
#: ../js/ui/telepathyClient.js:271
|
||||
msgid "Call"
|
||||
msgstr "Қоңырау"
|
||||
|
||||
#. We got the TpContact
|
||||
#: ../js/ui/telepathyClient.js:294
|
||||
#: ../js/ui/telepathyClient.js:287
|
||||
msgid "File Transfer"
|
||||
msgstr "Файлдармен алмасу"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:376
|
||||
#: ../js/ui/telepathyClient.js:369
|
||||
msgid "Subscription request"
|
||||
msgstr "Жазылуға сұраным"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:412
|
||||
#: ../js/ui/telepathyClient.js:405
|
||||
msgid "Connection error"
|
||||
msgstr "Байланыс орнату қатесі"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:670
|
||||
#: ../js/ui/telepathyClient.js:663
|
||||
#, c-format
|
||||
msgid "%s is online."
|
||||
msgstr "%s желіде."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#: ../js/ui/telepathyClient.js:667
|
||||
#, c-format
|
||||
msgid "%s is offline."
|
||||
msgstr "%s желіде емес."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:678
|
||||
#: ../js/ui/telepathyClient.js:671
|
||||
#, c-format
|
||||
msgid "%s is away."
|
||||
msgstr "%s кетіп қалған."
|
||||
|
||||
#: ../js/ui/telepathyClient.js:681
|
||||
#: ../js/ui/telepathyClient.js:674
|
||||
#, c-format
|
||||
msgid "%s is busy."
|
||||
msgstr "%s бос емес."
|
||||
@ -1334,35 +1343,35 @@ msgstr "%s бос емес."
|
||||
#. Translators: this is a time format string followed by a date.
|
||||
#. If applicable, replace %X with a strftime format valid for your
|
||||
#. locale, without seconds.
|
||||
#: ../js/ui/telepathyClient.js:894
|
||||
#: ../js/ui/telepathyClient.js:887
|
||||
#, no-c-format
|
||||
msgid "Sent at <b>%X</b> on <b>%A</b>"
|
||||
msgstr "Жіберілген: <b>%A</b>, уақыты <b>%X</b>"
|
||||
|
||||
#. Translators: this is a time format in the style of "Wednesday, May 25",
|
||||
#. shown when you get a chat message in the same year.
|
||||
#: ../js/ui/telepathyClient.js:900
|
||||
#: ../js/ui/telepathyClient.js:893
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>"
|
||||
msgstr "Жіберілген: <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/telepathyClient.js:905
|
||||
#: ../js/ui/telepathyClient.js:898
|
||||
#, no-c-format
|
||||
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
|
||||
msgstr "Жіберілген: <b>%A</b>, <b>%d %B</b>, %Y"
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: ../js/ui/telepathyClient.js:947
|
||||
#: ../js/ui/telepathyClient.js:940
|
||||
#, c-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s енді %s ретінде белгілі"
|
||||
|
||||
#. translators: argument is a room name like
|
||||
#. * room@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1049
|
||||
#: ../js/ui/telepathyClient.js:1042
|
||||
#, c-format
|
||||
msgid "Invitation to %s"
|
||||
msgstr "%s ішіне шақыру"
|
||||
@ -1370,35 +1379,37 @@ msgstr "%s ішіне шақыру"
|
||||
#. translators: first argument is the name of a contact and the second
|
||||
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
|
||||
#. * for example.
|
||||
#: ../js/ui/telepathyClient.js:1057
|
||||
#: ../js/ui/telepathyClient.js:1050
|
||||
#, c-format
|
||||
msgid "%s is inviting you to join %s"
|
||||
msgstr "%s сізді %s ішіне қосылуды шақырады"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1059 ../js/ui/telepathyClient.js:1138
|
||||
#: ../js/ui/telepathyClient.js:1236
|
||||
#: ../js/ui/telepathyClient.js:1052
|
||||
#: ../js/ui/telepathyClient.js:1131
|
||||
#: ../js/ui/telepathyClient.js:1229
|
||||
msgid "Decline"
|
||||
msgstr "Тайдыру"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1060 ../js/ui/telepathyClient.js:1139
|
||||
#: ../js/ui/telepathyClient.js:1237
|
||||
#: ../js/ui/telepathyClient.js:1053
|
||||
#: ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1230
|
||||
msgid "Accept"
|
||||
msgstr "Қабылдау"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1090
|
||||
#: ../js/ui/telepathyClient.js:1083
|
||||
#, c-format
|
||||
msgid "Video call from %s"
|
||||
msgstr "Видео қоңырау: %s"
|
||||
|
||||
#. translators: argument is a contact name like Alice for example.
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
#: ../js/ui/telepathyClient.js:1086
|
||||
#, c-format
|
||||
msgid "Call from %s"
|
||||
msgstr "Қоңырау: %s"
|
||||
|
||||
#. translators: this is a button label (verb), not a noun
|
||||
#: ../js/ui/telepathyClient.js:1100
|
||||
#: ../js/ui/telepathyClient.js:1093
|
||||
msgid "Answer"
|
||||
msgstr "Жауап"
|
||||
|
||||
@ -1407,139 +1418,130 @@ msgstr "Жауап"
|
||||
#. * file name. The string will be something
|
||||
#. * like: "Alice is sending you test.ogg"
|
||||
#.
|
||||
#: ../js/ui/telepathyClient.js:1132
|
||||
#: ../js/ui/telepathyClient.js:1125
|
||||
#, c-format
|
||||
msgid "%s is sending you %s"
|
||||
msgstr "%s сізге %s жіберуде"
|
||||
|
||||
#. To translators: The parameter is the contact's alias
|
||||
#: ../js/ui/telepathyClient.js:1201
|
||||
#: ../js/ui/telepathyClient.js:1194
|
||||
#, c-format
|
||||
msgid "%s would like permission to see when you are online"
|
||||
msgstr "%s сіз қашан желіде болатыныңызды білу құқығын сұрап тұр"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1294
|
||||
#: ../js/ui/telepathyClient.js:1287
|
||||
msgid "Network error"
|
||||
msgstr "Желілік қате"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1296
|
||||
#: ../js/ui/telepathyClient.js:1289
|
||||
msgid "Authentication failed"
|
||||
msgstr "Аутентификация сәтсіз"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1298
|
||||
#: ../js/ui/telepathyClient.js:1291
|
||||
msgid "Encryption error"
|
||||
msgstr "Шифрлеу қатесі"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1300
|
||||
#: ../js/ui/telepathyClient.js:1293
|
||||
msgid "Certificate not provided"
|
||||
msgstr "Сертификат ұсынылмады"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1302
|
||||
#: ../js/ui/telepathyClient.js:1295
|
||||
msgid "Certificate untrusted"
|
||||
msgstr "Сертификат сенімсіз"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1304
|
||||
#: ../js/ui/telepathyClient.js:1297
|
||||
msgid "Certificate expired"
|
||||
msgstr "Сертификаттың мерзімі аяқталған"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1306
|
||||
#: ../js/ui/telepathyClient.js:1299
|
||||
msgid "Certificate not activated"
|
||||
msgstr "Сертификат белсендірілмеген"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1308
|
||||
#: ../js/ui/telepathyClient.js:1301
|
||||
msgid "Certificate hostname mismatch"
|
||||
msgstr "Сертификаттың хост аты сәйкес емес"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1310
|
||||
#: ../js/ui/telepathyClient.js:1303
|
||||
msgid "Certificate fingerprint mismatch"
|
||||
msgstr "Сертификаттың баспасы сәйкес емес"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1312
|
||||
#: ../js/ui/telepathyClient.js:1305
|
||||
msgid "Certificate self-signed"
|
||||
msgstr "Сертификат өздігінен қолтаңбаланған"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1314
|
||||
#: ../js/ui/telepathyClient.js:1307
|
||||
msgid "Status is set to offline"
|
||||
msgstr "Қалып-күй желіде емес етіп орнатылды"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1316
|
||||
#: ../js/ui/telepathyClient.js:1309
|
||||
msgid "Encryption is not available"
|
||||
msgstr "Шифрлеу қолжетерсіз"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1318
|
||||
#: ../js/ui/telepathyClient.js:1311
|
||||
msgid "Certificate is invalid"
|
||||
msgstr "Сертификат дұрыс емес"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1320
|
||||
#: ../js/ui/telepathyClient.js:1313
|
||||
msgid "Connection has been refused"
|
||||
msgstr "Сертификат тайдырылды"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1322
|
||||
#: ../js/ui/telepathyClient.js:1315
|
||||
msgid "Connection can't be established"
|
||||
msgstr "Байланысты орнату мүмкін емес"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1324
|
||||
#: ../js/ui/telepathyClient.js:1317
|
||||
msgid "Connection has been lost"
|
||||
msgstr "Байланыс жоғалтылды"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1326
|
||||
#: ../js/ui/telepathyClient.js:1319
|
||||
msgid "This account is already connected to the server"
|
||||
msgstr "Бұл тіркелгі серверге байланысқан болып тұр"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1328
|
||||
msgid ""
|
||||
"Connection has been replaced by a new connection using the same resource"
|
||||
#: ../js/ui/telepathyClient.js:1321
|
||||
msgid "Connection has been replaced by a new connection using the same resource"
|
||||
msgstr "Байланыс дәл сол ресурсты қолданып, жаңа байланыспен алмастырылды"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1330
|
||||
#: ../js/ui/telepathyClient.js:1323
|
||||
msgid "The account already exists on the server"
|
||||
msgstr "Бұл тіркелгі серверде бар болып тұр"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1332
|
||||
#: ../js/ui/telepathyClient.js:1325
|
||||
msgid "Server is currently too busy to handle the connection"
|
||||
msgstr "Сервер бұл байланысты өңдеу үшін тым бос емес"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1334
|
||||
#: ../js/ui/telepathyClient.js:1327
|
||||
msgid "Certificate has been revoked"
|
||||
msgstr "Сертификат қайта шақырылған"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1336
|
||||
msgid ""
|
||||
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr ""
|
||||
"Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы "
|
||||
"әлсіз"
|
||||
#: ../js/ui/telepathyClient.js:1329
|
||||
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
|
||||
msgstr "Сертификат қауіпсіз емес шифрлеу алгоритмін қолдануда немесе криптографиялы әлсіз"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1338
|
||||
msgid ""
|
||||
"The length of the server certificate, or the depth of the server certificate "
|
||||
"chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr ""
|
||||
"Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы "
|
||||
"криптографиялық жинақ ұсына алатын шегінен асып тұр"
|
||||
#: ../js/ui/telepathyClient.js:1331
|
||||
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
|
||||
msgstr "Сервер сертификатының ұзындығы, не ол сертификат тізбегінің ұзындығы криптографиялық жинақ ұсына алатын шегінен асып тұр"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1340
|
||||
#, fuzzy
|
||||
#: ../js/ui/telepathyClient.js:1333
|
||||
#| msgid "Connection error"
|
||||
msgid "Internal error"
|
||||
msgstr "Байланыс орнату қатесі"
|
||||
msgstr "Ішкі қате"
|
||||
|
||||
#. translators: argument is the account name, like
|
||||
#. * name@jabber.org for example.
|
||||
#: ../js/ui/telepathyClient.js:1350
|
||||
#: ../js/ui/telepathyClient.js:1343
|
||||
#, c-format
|
||||
msgid "Connection to %s failed"
|
||||
msgstr "%s үшін байланыс орнату сәтсіз"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1359
|
||||
#: ../js/ui/telepathyClient.js:1352
|
||||
msgid "Reconnect"
|
||||
msgstr "Қайта байланысу"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1360
|
||||
#: ../js/ui/telepathyClient.js:1353
|
||||
msgid "Edit account"
|
||||
msgstr "Тіркелгіні түзету"
|
||||
|
||||
#: ../js/ui/telepathyClient.js:1406
|
||||
#: ../js/ui/telepathyClient.js:1399
|
||||
msgid "Unknown reason"
|
||||
msgstr "Себебі белгісіз"
|
||||
|
||||
@ -1555,7 +1557,9 @@ msgstr "Іссіз"
|
||||
msgid "Unavailable"
|
||||
msgstr "Қолжетерсіз"
|
||||
|
||||
#: ../js/ui/userMenu.js:579 ../js/ui/userMenu.js:583 ../js/ui/userMenu.js:653
|
||||
#: ../js/ui/userMenu.js:579
|
||||
#: ../js/ui/userMenu.js:583
|
||||
#: ../js/ui/userMenu.js:653
|
||||
msgid "Power Off..."
|
||||
msgstr "Сөндіру..."
|
||||
|
||||
@ -1588,13 +1592,8 @@ msgid "Your chat status will be set to busy"
|
||||
msgstr "Сіздің чат күйіңіз бос емес етіп орнатылады"
|
||||
|
||||
#: ../js/ui/userMenu.js:673
|
||||
msgid ""
|
||||
"Notifications are now disabled, including chat messages. Your online status "
|
||||
"has been adjusted to let others know that you might not see their messages."
|
||||
msgstr ""
|
||||
"Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік "
|
||||
"қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың "
|
||||
"хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
|
||||
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
|
||||
msgstr "Хабарлаулар, чат хабарламаларымен қоса, сөндірулі тұр. Сіздің қолжетерлік қалып-күйіңіз осыған орай өзгертілді, басқалар енді сіз олардың хабарламаларын көрмеу мүмкін екеніңіз туралы білетін болады."
|
||||
|
||||
#. Translators: this is the text displayed
|
||||
#. in the search entry when no search is
|
||||
@ -1604,7 +1603,8 @@ msgstr ""
|
||||
msgid "Type to search..."
|
||||
msgstr "Іздеу үшін теріңіз..."
|
||||
|
||||
#: ../js/ui/viewSelector.js:131 ../src/shell-util.c:244
|
||||
#: ../js/ui/viewSelector.js:131
|
||||
#: ../src/shell-util.c:252
|
||||
msgid "Search"
|
||||
msgstr "Іздеу"
|
||||
|
||||
@ -1670,19 +1670,19 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr "Бастапқы"
|
||||
|
||||
#: ../src/shell-polkit-authentication-agent.c:332
|
||||
#: ../src/shell-polkit-authentication-agent.c:339
|
||||
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:89
|
||||
#: ../src/shell-util.c:97
|
||||
msgid "Home"
|
||||
msgstr "Үй бумасы"
|
||||
|
||||
#. Translators: this is the same string as the one found in
|
||||
#. * nautilus
|
||||
#: ../src/shell-util.c:98
|
||||
#: ../src/shell-util.c:106
|
||||
msgid "File System"
|
||||
msgstr "Файлдық жүйе"
|
||||
|
||||
@ -1691,7 +1691,10 @@ msgstr "Файлдық жүйе"
|
||||
#. * example, "Trash: some-directory". It means that the
|
||||
#. * directory called "some-directory" is in the trash.
|
||||
#.
|
||||
#: ../src/shell-util.c:294
|
||||
#: ../src/shell-util.c:302
|
||||
#, c-format
|
||||
msgid "%1$s: %2$s"
|
||||
msgstr "%1$s: %2$s"
|
||||
|
||||
#~ msgid "RECENT ITEMS"
|
||||
#~ msgstr "Соңғы нәрселер"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user