Compare commits
289 Commits
Author | SHA1 | Date | |
---|---|---|---|
7031449f01 | |||
06df79286d | |||
9297d87775 | |||
ef56b14553 | |||
30ff76272e | |||
52a7481ba6 | |||
14cfd74f08 | |||
fa97f7141b | |||
03bcd4c05b | |||
89574abc83 | |||
602078cbde | |||
96f63b08c2 | |||
d66cd0d206 | |||
ff13ad9e71 | |||
5e4b65d37e | |||
51fd0875d1 | |||
75f8903c7e | |||
124eb1ca18 | |||
b5d925817f | |||
c134091268 | |||
ff89693998 | |||
c26860dcb7 | |||
6757c7d20a | |||
751189253a | |||
21187a4cec | |||
b7db56ca9b | |||
261d36ba72 | |||
1e72874192 | |||
f29dbd1f18 | |||
b60836932a | |||
bf47d1b22d | |||
4ea0fca4fc | |||
809f820cd4 | |||
75235624b2 | |||
5ea54426b9 | |||
4aabcd9e7d | |||
918b3eeb42 | |||
482c655590 | |||
86b5a43008 | |||
d7cb2eeebc | |||
770231c2d7 | |||
ecdf62d63e | |||
d885486397 | |||
1524abc947 | |||
cb9842e4a4 | |||
140ab4dec1 | |||
845122497b | |||
d51a622fc0 | |||
e90466347a | |||
73f8c1c482 | |||
0ff75941ea | |||
e4bb2037ca | |||
481014ac9e | |||
6dbcb5f9da | |||
c1f06daf88 | |||
0717f76362 | |||
da738988cd | |||
e86e88ea47 | |||
ae338af1e8 | |||
3f9cc0ed37 | |||
8f8ecdb983 | |||
8f547c9d5d | |||
821f3e8ddf | |||
81be25bbd6 | |||
26d27fdbf8 | |||
c7e597cf72 | |||
e4db68a1da | |||
980a90f8fb | |||
87e4bf52b7 | |||
a368df61ac | |||
5e66b104dc | |||
08a5f41505 | |||
ec36762309 | |||
aa70020bc8 | |||
1e77e6fc79 | |||
68203e7091 | |||
cff0752bcc | |||
45d8e11123 | |||
5aee714b70 | |||
3c3c3b7c69 | |||
6ba2913075 | |||
75c4e1cd63 | |||
fb4a4ca4a2 | |||
4c2c1297be | |||
c5dbdad5fc | |||
4e05bcd3b6 | |||
3555550d5e | |||
8e05fa2728 | |||
d7c3050e2d | |||
89ba8562c3 | |||
82da73baff | |||
b2eeda9b46 | |||
0db41a3773 | |||
8d7f7e61dd | |||
3f4b253dac | |||
e4cbe5126a | |||
8357739ef8 | |||
6bef9334b7 | |||
8c49f45ac8 | |||
46600740fe | |||
c281e868a0 | |||
039431a73f | |||
d4f8ea1c53 | |||
96f5e2b33e | |||
93a542d52c | |||
f4fcba74ff | |||
cadbf7cd8b | |||
dd8e1aef51 | |||
15dc37a139 | |||
c23ad83c59 | |||
4a6f550acb | |||
8078d78c30 | |||
d7185d71c6 | |||
522ecba180 | |||
9b22f6183f | |||
b2c35e4fb0 | |||
af543daf1c | |||
baeb4079ee | |||
f91f9801b4 | |||
c5634335b0 | |||
2b4317349f | |||
96bfd1f8be | |||
33ab53068e | |||
40123ae6da | |||
df149524d4 | |||
f0ee9cdcf8 | |||
a3257e8df5 | |||
d2cf13eff4 | |||
8cd352b72b | |||
c210052dc6 | |||
0561af66e7 | |||
1e9b170d87 | |||
be02f76aa7 | |||
687928e7b7 | |||
ffdf3feb04 | |||
a60b8b3b50 | |||
3d6add68c7 | |||
85e055ffe3 | |||
1691e422e7 | |||
f442c9510e | |||
0de98eb772 | |||
30172b5625 | |||
8ae99a6898 | |||
5cfe5bf8c8 | |||
c790c01a3b | |||
d4a947b475 | |||
60d7999b6a | |||
c040d08b97 | |||
3a53b25873 | |||
d8e6f654a3 | |||
fdfcacf1db | |||
d3efbcce9b | |||
ac34dbe353 | |||
e0f3e13456 | |||
fdd9def922 | |||
771050f4d7 | |||
8451df977c | |||
ff55cf017e | |||
d36a180852 | |||
12c7f693d0 | |||
e0a8cb565e | |||
46547ae027 | |||
68745328df | |||
4582d7a183 | |||
cc5ed2fbf5 | |||
a2545d186a | |||
1ea22a5281 | |||
090057d2df | |||
b3aab7f401 | |||
8154728d09 | |||
5569090d1c | |||
fc3bc7678d | |||
8914a46669 | |||
e7ec373aee | |||
fe131f926d | |||
35d21c0bca | |||
b487846c0a | |||
7bbce1d5ad | |||
bf40d96a83 | |||
2d650e51a5 | |||
85d2837466 | |||
25985868e8 | |||
393c6c6805 | |||
775d6ec431 | |||
988f996407 | |||
315c8820ca | |||
8a89de04a2 | |||
63abfc163d | |||
f58cb34065 | |||
ece1329145 | |||
989118981b | |||
c511c469fe | |||
dac05c7e53 | |||
c90e7ce258 | |||
963f96292d | |||
989ee6593b | |||
2a8eea1ff5 | |||
55c287280b | |||
1fdd4ff313 | |||
3522338b3d | |||
61e3349dc7 | |||
dc27db0897 | |||
f09fbb19cf | |||
846fa77b37 | |||
b57bcf823f | |||
548e19a7cd | |||
4ae04d5aa8 | |||
5d5ca80d17 | |||
d81237b9d6 | |||
71b3b03b2f | |||
8c909e37e9 | |||
6508fa4349 | |||
ce8fb83c36 | |||
58ec607818 | |||
f06223df48 | |||
9a8ced9f5b | |||
67c45e5648 | |||
b88ed3f251 | |||
669b0f193a | |||
9cad7ae975 | |||
48e6a58250 | |||
d2583aa47b | |||
0ab34fe21f | |||
0f947d4ff9 | |||
9dc421875b | |||
9c3c9a155e | |||
faaed642a7 | |||
9b99b67fea | |||
693dd79d28 | |||
400d045a6a | |||
e20cf1ac78 | |||
8d4e650a95 | |||
82fd68b985 | |||
6ddd43f361 | |||
4e2ae30a47 | |||
32bc064d10 | |||
87606c6a6b | |||
955afb8711 | |||
3309031fd1 | |||
a2235c269a | |||
1cf2c9edd0 | |||
64a3ecf9b1 | |||
f144ed6e87 | |||
a47e0f9845 | |||
0737c8f416 | |||
fba350eaad | |||
6d5e93b00b | |||
f526e592fe | |||
751a94ab5d | |||
e0e128e207 | |||
137e6c8493 | |||
72751c2d92 | |||
b84fa852f6 | |||
d20961f323 | |||
5a01395a2b | |||
e59ca7053b | |||
6895592a7b | |||
eed27a2a4c | |||
43c6afa80f | |||
7d60f418e7 | |||
94dca1606f | |||
27774582b6 | |||
7dc08b06b1 | |||
a9d73b1017 | |||
25e4d0ba8b | |||
2d56395921 | |||
0ecddafc20 | |||
af34c8d2f4 | |||
5223599145 | |||
c96af776d6 | |||
34da48453e | |||
13dcd78be1 | |||
3bfa9916da | |||
b17017679b | |||
9d7832ea44 | |||
49605c7b00 | |||
bf8b9cecf5 | |||
c291291304 | |||
e08a4acd06 | |||
0397a104ba | |||
a41c1d4fda | |||
8ae3ed907a | |||
31cd8f738c | |||
a4cd9e0038 | |||
e06109c23c | |||
05485fe04c | |||
13062af7ef | |||
5e254666b0 | |||
d29eb8646a |
76
NEWS
76
NEWS
@ -1,3 +1,79 @@
|
||||
3.37.3
|
||||
======
|
||||
* Refactor and clean up window picker
|
||||
[Jonas D., Florian; !1297, !1298, !1305, !1345, !1353]
|
||||
* Move calendar events out of notifications list [Florian; !1282]
|
||||
* Refine app folder dialogs [Georges; !1301]
|
||||
* Hide switch-user button on lock screen if unsupported [Chingkai; #2687]
|
||||
* Refactor and clean up app picker pagination [Georges; !1271]
|
||||
* Add API to retrieve specified mimetypes from clipboards [Carlos; !1321]
|
||||
* Support prepending workspace with horizontal layouts [Florian; #2916]
|
||||
* Update microphone icon on input volume changes [fludixx; #2902]
|
||||
* Cache labels on GPU [Daniel; !1329]
|
||||
* Fix regressions in redesigned modal dialogs [Florian, Jonas D.; #2491, !1336]
|
||||
* Use GIcon for all application icons [Florian; !1342]
|
||||
* Support pre-authenticated logins in vmware environments [yun341; #1983]
|
||||
* Better support sandboxed apps with multiple .desktop files [Florian; #219]
|
||||
* Fix on-screen keyboard size in portrait orientation [Florian; #2349]
|
||||
* Plugged leaks [Sebastian, Daniel, Florian; !1306, !1319, !1341]
|
||||
* Misc. bug fixes and cleanups [Jonas D., Georges, Marco, Florian, Sebastian,
|
||||
MOZGIII, Daniel, Mariana, Jonas Å.; !1296, !1295, #2643, !1300, !1309,
|
||||
!1119, #2901, !1313, !1251, !1285, !1307, !1318, !1310, !1320, !1327, !1315,
|
||||
!1289, !1331, !1332, !1333, !1334, !1340, !1287, !1308, !1346, !1299, !1343,
|
||||
!1351, !1352, !1322]
|
||||
|
||||
Contributors:
|
||||
Marco Trevisan (Treviño), Chingkai, Jonas Dreßler, Carlos Garnacho,
|
||||
Sebastian Keller, MOZGIII, Florian Müllner, Georges Basile Stavracas Neto,
|
||||
Mariana Picolo, Daniel van Vugt, fludixx, yun341, Jonas Ådahl
|
||||
|
||||
Translators:
|
||||
Daniel Mustieles [es], Boyuan Yang [zh_CN], Yuri Chornoivan [uk],
|
||||
Jordi Mas [ca], sicklylife [ja], Emin Tufan Çetin [tr],
|
||||
Baurzhan Muftakhidinov [kk], Florentina Mușat [ro], Aurimas Černius [lt],
|
||||
Rūdolfs Mazurs [lv]
|
||||
|
||||
3.37.2
|
||||
======
|
||||
* Add support for "PrefersNonDefaultGPU" desktop key [Bastien; !1226]
|
||||
* Only start systemd units when running under systemd
|
||||
[Carlos, Florian; #2755, !1242, !1252]
|
||||
* Fix "ghost" media controls [Bryan; #2776]
|
||||
* Fix zombie sockets from extensions downloader [Michael; #2774]
|
||||
* Update world clocks offsets when timezone changes [Bryan; #2209]
|
||||
* Support scrolling anywhere in slider menu items [Peter; #2795]
|
||||
* Fix "Do Not Disturb" setting getting reset on startup [Florian; #2804]
|
||||
* Only allow updates for extensions that aren't cached [Florian; !1248]
|
||||
* Fix matching notifications by PID [Florian; #2592]
|
||||
* Indicate extension errors in Extensions app [Florian; #2337]
|
||||
* Add clipboard API for querying supported mimetypes [Andy; #2819]
|
||||
* Add preview to color picker [Florian; #451]
|
||||
* Improve world clocks styling [PrOF-kk; #2825]
|
||||
* Remove Frequent view from app picker [Georges; !880]
|
||||
* Fix pad OSD glitches [Carlos; !1290]
|
||||
* Expose actor tree in looking glass [Georges; !1292]
|
||||
* Fixed crashes [Jonas D., Florian; #2709, #2757]
|
||||
* Misc. bug fixes and cleanups [Florian, AsciiWolf, Michael, Piotr, Ting-Wei,
|
||||
Amr, Alexander, Bryan, Georges, Jonas D., Andy, Björn, Koki, Carlos; !1229,
|
||||
!1231, !1233, !1235, #2578, #2735, #2751, #2602, #2777, !1249, #2796, !1268,
|
||||
!1269, !1265, !1245, !1273, #2816, !1274, !1263, !1188, !1276, #2652, !1277,
|
||||
!1281, #2286, !1267, !1286, !1279, !1288, !1293, !1294, !1291]
|
||||
|
||||
Contributors:
|
||||
AsciiWolf, Michael Catanzaro, Björn Daase, Jonas Dreßler, Bryan Dunsmore,
|
||||
Koki Fukuda, Carlos Garnacho, Andy Holmes, Amr Ibrahim, Soslan Khubulov,
|
||||
Ting-Wei Lan, Michael Lass, Alexander Mikhaylenko, Florian Müllner,
|
||||
Georges Basile Stavracas Neto, Bastien Nocera, PrOF-kk, Peter Simonyi
|
||||
|
||||
Translators:
|
||||
Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Yuri Chornoivan [uk],
|
||||
Dušan Kazik [sk], Piotr Drąg [pl], Soslan Khubulov [os],
|
||||
Daniel Mustieles [es], Nathan Follens [nl], Bruce Cowan [en_GB],
|
||||
Florentina Mușat [ro], Milo Casagrande [it], Anders Jonsson [sv],
|
||||
Charles Monzat [fr], Danial Behzadi [fa], sicklylife [ja], Kukuh Syafaat [id],
|
||||
Jordi Mas [ca], Emin Tufan Çetin [tr], Jiri Grönroos [fi], Марко Костић [sr],
|
||||
Christian Kirbach [de], Changwoo Ryu [ko], Matej Urbančič [sl]
|
||||
|
||||
3.37.1
|
||||
======
|
||||
* Improve bluetooth submenu title [Mariana; #2340]
|
||||
|
@ -2,7 +2,6 @@
|
||||
<gresources>
|
||||
<gresource prefix="/org/gnome/shell/dbus-interfaces">
|
||||
<file preprocess="xml-stripblanks">net.hadess.SensorProxy.xml</file>
|
||||
<file preprocess="xml-stripblanks">net.hadess.SwitcherooControl.xml</file>
|
||||
<file preprocess="xml-stripblanks">org.freedesktop.Application.xml</file>
|
||||
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Device.xml</file>
|
||||
<file preprocess="xml-stripblanks">org.freedesktop.bolt1.Manager.xml</file>
|
||||
|
@ -6,6 +6,7 @@
|
||||
<file>checkbox-off-focused.svg</file>
|
||||
<file>checkbox-off.svg</file>
|
||||
<file>checkbox.svg</file>
|
||||
<file alias="icons/color-pick.svg">color-pick.svg</file>
|
||||
<file>dash-placeholder.svg</file>
|
||||
<file>gnome-shell.css</file>
|
||||
<file>gnome-shell-high-contrast.css</file>
|
||||
|
94
data/theme/color-pick.svg
Normal file
94
data/theme/color-pick.svg
Normal file
@ -0,0 +1,94 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
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="5.4116011mm"
|
||||
height="5.1374583mm"
|
||||
viewBox="0 0 5.4116011 5.1374583"
|
||||
version="1.1"
|
||||
id="svg5595"
|
||||
inkscape:version="0.92.4 (unknown)"
|
||||
sodipodi:docname="color-pick.svg">
|
||||
<defs
|
||||
id="defs5589">
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
x="-0.10291173"
|
||||
width="1.2058235"
|
||||
y="-0.065432459"
|
||||
height="1.1308649"
|
||||
id="filter5601"
|
||||
style="color-interpolation-filters:sRGB">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.610872"
|
||||
id="feGaussianBlur5603" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="15.839192"
|
||||
inkscape:cx="39.387731"
|
||||
inkscape:cy="12.554326"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1016"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0" />
|
||||
<metadata
|
||||
id="metadata5592">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-103.12753,-146.26461)">
|
||||
<circle
|
||||
r="8.4810486"
|
||||
cy="9.82623"
|
||||
cx="10.226647"
|
||||
id="circle7584"
|
||||
style="color:#000000;display:inline;overflow:visible;opacity:0.6;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;filter:url(#filter5601)"
|
||||
transform="matrix(0.26458333,0,0,0.26458333,103.12753,146.26461)" />
|
||||
<path
|
||||
style="color:#000000;display:inline;overflow:visible;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.26399338;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||
d="m 108.07728,148.64122 c 0,1.2393 -1.00465,2.24394 -2.24395,2.24394 -1.23929,0 -2.24716,-1.00465 -2.25221,-2.24394 l -0.009,-2.24458 2.26136,6.4e-4 c 1.2393,3.4e-4 2.24395,1.00464 2.24395,2.24394 z"
|
||||
id="path7523-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssscss" />
|
||||
<circle
|
||||
style="color:#000000;display:inline;overflow:visible;opacity:1;vector-effect:none;fill:#50dbb5;fill-opacity:1;stroke:none;stroke-width:0.36885914;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal"
|
||||
id="path7482-1"
|
||||
cx="105.83707"
|
||||
cy="148.64352"
|
||||
r="1.844296" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
@ -1,21 +1,15 @@
|
||||
/* App Grid */
|
||||
|
||||
$app_icon_size: 96px;
|
||||
$app_icon_padding: 24px;
|
||||
|
||||
// app icons
|
||||
.icon-grid {
|
||||
-shell-grid-horizontal-item-size: $app_icon_size + $app_icon_padding * 2;
|
||||
-shell-grid-vertical-item-size: $app_icon_size + $app_icon_padding * 2;
|
||||
spacing: $base_spacing * 6;
|
||||
|
||||
.overview-icon {
|
||||
icon-size: $app_icon_size;
|
||||
}
|
||||
row-spacing: $base_spacing * 6;
|
||||
column-spacing: $base_spacing * 6;
|
||||
max-row-spacing: $base_spacing * 12;
|
||||
max-column-spacing: $base_spacing * 12;
|
||||
}
|
||||
|
||||
//.app-display { spacing: 20px; }
|
||||
|
||||
/* App Icons */
|
||||
|
||||
$app_grid_fg_color: #fff;
|
||||
@ -44,8 +38,8 @@ $app_grid_fg_color: #fff;
|
||||
.app-folder-dialog {
|
||||
border-radius: $modal_radius * 1.5;
|
||||
border: 1px solid $osd_outer_borders_color;
|
||||
spacing: 12px;
|
||||
background-color: transparentize(darken($osd_bg_color,10%), 0.05);
|
||||
padding: 12px;
|
||||
|
||||
& .folder-name-container {
|
||||
padding: 24px 36px 0;
|
||||
@ -54,7 +48,7 @@ $app_grid_fg_color: #fff;
|
||||
& .folder-name-label,
|
||||
& .folder-name-entry {
|
||||
font-size: 18pt;
|
||||
font-weight: bold;
|
||||
font-weight: 800;
|
||||
}
|
||||
|
||||
& .folder-name-entry { width: 300px }
|
||||
@ -73,11 +67,24 @@ $app_grid_fg_color: #fff;
|
||||
& > StIcon { icon-size: 16px }
|
||||
}
|
||||
}
|
||||
|
||||
& .icon-grid {
|
||||
row-spacing: $base_spacing * 2;
|
||||
column-spacing: $base_spacing * 5;
|
||||
}
|
||||
|
||||
& .page-indicators {
|
||||
margin-bottom: 18px;
|
||||
|
||||
.page-indicator {
|
||||
padding: 15px 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.app-folder-dialog-container {
|
||||
padding: 12px;
|
||||
width: 800px;
|
||||
height: 600px;
|
||||
width: 620px;
|
||||
height: 620px;
|
||||
}
|
||||
|
||||
.app-folder-icon {
|
||||
@ -123,15 +130,11 @@ $app_grid_fg_color: #fff;
|
||||
}
|
||||
|
||||
// Some hacks I don't even know
|
||||
.all-apps,
|
||||
.frequent-apps > StBoxLayout {
|
||||
.all-apps {
|
||||
// horizontal padding to make sure scrollbars or dash don't overlap content
|
||||
padding: 0px 88px 10px 88px;
|
||||
}
|
||||
|
||||
// Label when no frequent apps
|
||||
.no-frequent-applications-label { @extend %status_text; }
|
||||
|
||||
// shutdown and other actions in the grid
|
||||
.system-action-icon {
|
||||
background-color: rgba(0,0,0,0.8);
|
||||
@ -139,44 +142,3 @@ $app_grid_fg_color: #fff;
|
||||
border-radius: 99px;
|
||||
icon-size: $app_icon_size * 0.5;
|
||||
}
|
||||
|
||||
/* Frequent | All toggle */
|
||||
|
||||
// container
|
||||
.app-view-controls {
|
||||
padding-bottom: 32px;
|
||||
}
|
||||
|
||||
// buttons
|
||||
.app-view-control {
|
||||
padding: 4px 32px;
|
||||
margin: 0 4px;
|
||||
|
||||
&, &:hover, &:checked {
|
||||
@include button(undecorated);
|
||||
color: darken($osd_fg_color, 25%);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $osd_fg_color;
|
||||
box-shadow: inset 0 -2px darken($osd_fg_color, 25%);
|
||||
}
|
||||
|
||||
&:active {
|
||||
box-shadow: inset 0 -2px $osd_fg_color;
|
||||
}
|
||||
|
||||
&:checked {
|
||||
color: $osd_fg_color;
|
||||
box-shadow: inset 0 -2px $selected_bg_color;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-right-width: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-radius: 0;
|
||||
}
|
||||
}
|
||||
|
@ -177,6 +177,32 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Events */
|
||||
.events-button {
|
||||
@include notification_bubble;
|
||||
padding: $base_padding * 2;
|
||||
|
||||
.events-box {
|
||||
spacing: $base_spacing;
|
||||
}
|
||||
|
||||
.events-list {
|
||||
spacing: 2 * $base_spacing;
|
||||
}
|
||||
|
||||
.events-title {
|
||||
color: desaturate(darken($fg_color,40%), 10%);
|
||||
font-weight: bold;
|
||||
margin-bottom: $base_margin;
|
||||
}
|
||||
|
||||
.event-time {
|
||||
color: darken($fg_color,20%);
|
||||
font-feature-settings: "tnum";
|
||||
@include fontsize($base_font_size - 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* World clocks */
|
||||
.world-clocks-button {
|
||||
@include notification_bubble;
|
||||
@ -204,7 +230,7 @@
|
||||
.world-clocks-time {
|
||||
font-weight: bold;
|
||||
color: $fg_color;
|
||||
font-feature-settings: "lnum";
|
||||
font-feature-settings: "tnum";
|
||||
@include fontsize($base_font_size);
|
||||
text-align: right;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
/* Looking Glass */
|
||||
|
||||
$text_fg_color: #ccc;
|
||||
|
||||
// Dialog
|
||||
#LookingGlassDialog {
|
||||
background-color: $osd_bg_color;
|
||||
@ -52,6 +54,11 @@
|
||||
&:hover { color: lighten($link_color, 10%); }
|
||||
&:active { color: darken($link_color, 10%); }
|
||||
}
|
||||
.actor-link {
|
||||
color: $text_fg_color;
|
||||
&:hover { color: lighten($text_fg_color, 20%); }
|
||||
&:active { color: darken($text_fg_color, 20%); }
|
||||
}
|
||||
}
|
||||
|
||||
.lg-completions-text {
|
||||
|
@ -54,6 +54,10 @@
|
||||
@extend %status_text;
|
||||
}
|
||||
|
||||
.grid-search-results {
|
||||
spacing: $base_spacing * 6;
|
||||
}
|
||||
|
||||
// Search results with icons
|
||||
.grid-search-result {
|
||||
@extend %app-well-app;
|
||||
|
@ -1,19 +1,20 @@
|
||||
/* Window Picker */
|
||||
|
||||
$window_picker_spacing: $base_spacing * 2; // 16px
|
||||
$window_picker_padding: $base_padding * 2; // 16px
|
||||
$window_picker_spacing: $base_spacing; // 6px
|
||||
$window_picker_padding: $base_padding * 2; // 12px
|
||||
|
||||
$window_thumbnail_border_color:transparentize($selected_fg_color, 0.65);
|
||||
|
||||
$window_close_button_size: 24px;
|
||||
$window_close_button_padding: 3px;
|
||||
|
||||
$window_clone_border_size: 6px;
|
||||
|
||||
// Window picker
|
||||
.window-picker {
|
||||
// Space between window thumbnails
|
||||
-horizontal-spacing: $window_picker_spacing;
|
||||
-vertical-spacing: $window_picker_spacing;
|
||||
spacing: $window_picker_spacing;
|
||||
|
||||
// Padding for container around window thumbnails
|
||||
padding: $window_picker_padding;
|
||||
|
||||
@ -22,7 +23,7 @@ $window_close_button_padding: 3px;
|
||||
|
||||
// Borders on window thumbnails
|
||||
.window-clone-border {
|
||||
border-width: 6px;
|
||||
border-width: $window_clone_border_size;
|
||||
border-style: solid;
|
||||
border-color: $window_thumbnail_border_color;
|
||||
border-radius: $base_border_radius + 2;
|
||||
@ -54,8 +55,6 @@ $window_close_button_padding: 3px;
|
||||
width: $window_close_button_size;
|
||||
box-shadow: -1px 1px 5px 0px rgba(0,0,0,0.5);
|
||||
|
||||
-shell-close-overlap: $window_close_button_size * 0.5;
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($selected_bg_color, 5%);
|
||||
}
|
||||
|
@ -9,6 +9,8 @@ const { ServiceImplementation } = imports.dbusService;
|
||||
const NotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
|
||||
const NotificationsProxy = Gio.DBusProxy.makeProxyWrapper(NotificationsIface);
|
||||
|
||||
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
|
||||
|
||||
var NotificationDaemon = class extends ServiceImplementation {
|
||||
constructor() {
|
||||
super(NotificationsIface, '/org/freedesktop/Notifications');
|
||||
@ -42,7 +44,15 @@ var NotificationDaemon = class extends ServiceImplementation {
|
||||
null, null);
|
||||
}
|
||||
|
||||
NotifyAsync(params, invocation) {
|
||||
async NotifyAsync(params, invocation) {
|
||||
const pid = await this._getSenderPid(invocation.get_sender());
|
||||
const hints = params[6];
|
||||
|
||||
params[6] = {
|
||||
...hints,
|
||||
'sender-pid': new GLib.Variant('u', pid),
|
||||
};
|
||||
|
||||
this._proxy.NotifyRemote(...params, (res, error) => {
|
||||
if (this._handleError(invocation, error))
|
||||
return;
|
||||
@ -77,4 +87,19 @@ var NotificationDaemon = class extends ServiceImplementation {
|
||||
invocation.return_value(new GLib.Variant('(ssss)', res));
|
||||
});
|
||||
}
|
||||
|
||||
async _getSenderPid(sender) {
|
||||
const res = await Gio.DBus.session.call(
|
||||
'org.freedesktop.DBus',
|
||||
'/',
|
||||
'org.freedesktop.DBus',
|
||||
'GetConnectionUnixProcessID',
|
||||
new GLib.Variant('(s)', [sender]),
|
||||
new GLib.VariantType('(u)'),
|
||||
Gio.DBusCallFlags.NONE,
|
||||
-1,
|
||||
null);
|
||||
const [pid] = res.deepUnpack();
|
||||
return pid;
|
||||
}
|
||||
};
|
||||
|
@ -71,7 +71,7 @@ var AuthPrompt = GObject.registerClass({
|
||||
this._userVerifier.connect('verification-complete', this._onVerificationComplete.bind(this));
|
||||
this._userVerifier.connect('reset', this._onReset.bind(this));
|
||||
this._userVerifier.connect('smartcard-status-changed', this._onSmartcardStatusChanged.bind(this));
|
||||
this._userVerifier.connect('ovirt-user-authenticated', this._onOVirtUserAuthenticated.bind(this));
|
||||
this._userVerifier.connect('credential-manager-authenticated', this._onCredentialManagerAuthenticated.bind(this));
|
||||
this.smartcardDetected = this._userVerifier.smartcardDetected;
|
||||
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
@ -242,7 +242,7 @@ var AuthPrompt = GObject.registerClass({
|
||||
this.emit('prompted');
|
||||
}
|
||||
|
||||
_onOVirtUserAuthenticated() {
|
||||
_onCredentialManagerAuthenticated() {
|
||||
if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED)
|
||||
this.reset();
|
||||
}
|
||||
|
24
js/gdm/credentialManager.js
Normal file
24
js/gdm/credentialManager.js
Normal file
@ -0,0 +1,24 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported CredentialManager */
|
||||
|
||||
class CredentialManager {
|
||||
constructor(service) {
|
||||
this._token = null;
|
||||
this._service = service;
|
||||
this._authenticatedSignalId = null;
|
||||
}
|
||||
|
||||
get token() {
|
||||
return this._token;
|
||||
}
|
||||
|
||||
set token(t) {
|
||||
this._token = t;
|
||||
if (this._token)
|
||||
this.emit('user-authenticated', this._token);
|
||||
}
|
||||
|
||||
get service() {
|
||||
return this._service;
|
||||
}
|
||||
}
|
@ -589,8 +589,8 @@ var LoginDialog = GObject.registerClass({
|
||||
return actorBox;
|
||||
}
|
||||
|
||||
vfunc_allocate(dialogBox, flags) {
|
||||
this.set_allocation(dialogBox, flags);
|
||||
vfunc_allocate(dialogBox) {
|
||||
this.set_allocation(dialogBox);
|
||||
|
||||
let themeNode = this.get_theme_node();
|
||||
dialogBox = themeNode.get_content_box(dialogBox);
|
||||
@ -719,19 +719,19 @@ var LoginDialog = GObject.registerClass({
|
||||
|
||||
// Finally hand out the allocations
|
||||
if (bannerAllocation)
|
||||
this._bannerView.allocate(bannerAllocation, flags);
|
||||
this._bannerView.allocate(bannerAllocation);
|
||||
|
||||
if (authPromptAllocation)
|
||||
this._authPrompt.allocate(authPromptAllocation, flags);
|
||||
this._authPrompt.allocate(authPromptAllocation);
|
||||
|
||||
if (userSelectionAllocation)
|
||||
this._userSelectionBox.allocate(userSelectionAllocation, flags);
|
||||
this._userSelectionBox.allocate(userSelectionAllocation);
|
||||
|
||||
if (logoAllocation)
|
||||
this._logoBin.allocate(logoAllocation, flags);
|
||||
this._logoBin.allocate(logoAllocation);
|
||||
|
||||
if (sessionMenuButtonAllocation)
|
||||
this._sessionMenuButton.allocate(sessionMenuButtonAllocation, flags);
|
||||
this._sessionMenuButton.allocate(sessionMenuButtonAllocation);
|
||||
}
|
||||
|
||||
_ensureUserListLoaded() {
|
||||
@ -810,8 +810,8 @@ var LoginDialog = GObject.registerClass({
|
||||
return;
|
||||
|
||||
this._logoBin.destroy_all_children();
|
||||
const [valid, resourceScale] = this._logoBin.get_resource_scale();
|
||||
if (this._logoFile && valid) {
|
||||
const resourceScale = this._logoBin.get_resource_scale();
|
||||
if (this._logoFile) {
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile,
|
||||
-1, -1,
|
||||
|
@ -3,6 +3,9 @@
|
||||
|
||||
const Gio = imports.gi.Gio;
|
||||
const Signals = imports.signals;
|
||||
const Credential = imports.gdm.credentialManager;
|
||||
|
||||
var SERVICE_NAME = 'gdm-ovirtcred';
|
||||
|
||||
const OVirtCredentialsIface = `
|
||||
<node>
|
||||
@ -28,30 +31,14 @@ function OVirtCredentials() {
|
||||
return self;
|
||||
}
|
||||
|
||||
var OVirtCredentialsManager = class {
|
||||
var OVirtCredentialsManager = class OVirtCredentialsManager extends Credential.CredentialManager {
|
||||
constructor() {
|
||||
this._token = null;
|
||||
|
||||
super(SERVICE_NAME);
|
||||
this._credentials = new OVirtCredentials();
|
||||
this._credentials.connectSignal('UserAuthenticated',
|
||||
this._onUserAuthenticated.bind(this));
|
||||
}
|
||||
|
||||
_onUserAuthenticated(proxy, sender, [token]) {
|
||||
this._token = token;
|
||||
this.emit('user-authenticated', token);
|
||||
}
|
||||
|
||||
hasToken() {
|
||||
return this._token != null;
|
||||
}
|
||||
|
||||
getToken() {
|
||||
return this._token;
|
||||
}
|
||||
|
||||
resetToken() {
|
||||
this._token = null;
|
||||
(proxy, sender, [token]) => {
|
||||
this.token = token;
|
||||
});
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(OVirtCredentialsManager.prototype);
|
||||
|
@ -8,6 +8,7 @@ const Signals = imports.signals;
|
||||
const Batch = imports.gdm.batch;
|
||||
const Fprint = imports.gdm.fingerprint;
|
||||
const OVirt = imports.gdm.oVirt;
|
||||
const Vmware = imports.gdm.vmware;
|
||||
const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
const SmartcardManager = imports.misc.smartcardManager;
|
||||
@ -24,7 +25,6 @@ Gio._promisify(Gdm.UserVerifierProxy.prototype,
|
||||
var PASSWORD_SERVICE_NAME = 'gdm-password';
|
||||
var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
|
||||
var SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
|
||||
var OVIRT_SERVICE_NAME = 'gdm-ovirtcred';
|
||||
var FADE_ANIMATION_TIME = 160;
|
||||
var CLONE_FADE_ANIMATION_TIME = 250;
|
||||
|
||||
@ -160,13 +160,20 @@ var ShellUserVerifier = class {
|
||||
|
||||
this._failCounter = 0;
|
||||
|
||||
this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager();
|
||||
this._credentialManagers = {};
|
||||
this._credentialManagers[OVirt.SERVICE_NAME] = OVirt.getOVirtCredentialsManager();
|
||||
this._credentialManagers[Vmware.SERVICE_NAME] = Vmware.getVmwareCredentialsManager();
|
||||
|
||||
if (this._oVirtCredentialsManager.hasToken())
|
||||
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
|
||||
for (let service in this._credentialManagers) {
|
||||
if (this._credentialManagers[service].token) {
|
||||
this._onCredentialManagerAuthenticated(this._credentialManagers[service],
|
||||
this._credentialManagers[service].token);
|
||||
}
|
||||
|
||||
this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated',
|
||||
this._oVirtUserAuthenticated.bind(this));
|
||||
this._credentialManagers[service]._authenticatedSignalId =
|
||||
this._credentialManagers[service].connect('user-authenticated',
|
||||
this._onCredentialManagerAuthenticated.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
begin(userName, hold) {
|
||||
@ -222,8 +229,11 @@ var ShellUserVerifier = class {
|
||||
this._smartcardManager.disconnect(this._smartcardRemovedId);
|
||||
this._smartcardManager = null;
|
||||
|
||||
this._oVirtCredentialsManager.disconnect(this._oVirtUserAuthenticatedId);
|
||||
this._oVirtCredentialsManager = null;
|
||||
for (let service in this._credentialManagers) {
|
||||
let credentialManager = this._credentialManagers[service];
|
||||
credentialManager.disconnect(credentialManager._authenticatedSignalId);
|
||||
credentialManager = null;
|
||||
}
|
||||
}
|
||||
|
||||
answerQuery(serviceName, answer) {
|
||||
@ -311,9 +321,9 @@ var ShellUserVerifier = class {
|
||||
});
|
||||
}
|
||||
|
||||
_oVirtUserAuthenticated(_token) {
|
||||
this._preemptingService = OVIRT_SERVICE_NAME;
|
||||
this.emit('ovirt-user-authenticated');
|
||||
_onCredentialManagerAuthenticated(credentialManager, _token) {
|
||||
this._preemptingService = credentialManager.service;
|
||||
this.emit('credential-manager-authenticated');
|
||||
}
|
||||
|
||||
_checkForSmartcard() {
|
||||
@ -490,9 +500,12 @@ var ShellUserVerifier = class {
|
||||
if (!this.serviceIsForeground(serviceName))
|
||||
return;
|
||||
|
||||
if (serviceName == OVIRT_SERVICE_NAME) {
|
||||
// The only question asked by this service is "Token?"
|
||||
this.answerQuery(serviceName, this._oVirtCredentialsManager.getToken());
|
||||
let token = null;
|
||||
if (this._credentialManagers[serviceName])
|
||||
token = this._credentialManagers[serviceName].token;
|
||||
|
||||
if (token) {
|
||||
this.answerQuery(serviceName, token);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -560,8 +573,10 @@ var ShellUserVerifier = class {
|
||||
// If the login failed with the preauthenticated oVirt credentials
|
||||
// then discard the credentials and revert to default authentication
|
||||
// mechanism.
|
||||
if (this.serviceIsForeground(OVIRT_SERVICE_NAME)) {
|
||||
this._oVirtCredentialsManager.resetToken();
|
||||
let foregroundService = Object.keys(this._credentialManagers).find(service =>
|
||||
this.serviceIsForeground(service));
|
||||
if (foregroundService) {
|
||||
this._credentialManagers[foregroundService].token = null;
|
||||
this._preemptingService = null;
|
||||
this._verificationFailed(false);
|
||||
return;
|
||||
|
54
js/gdm/vmware.js
Normal file
54
js/gdm/vmware.js
Normal file
@ -0,0 +1,54 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported getVmwareCredentialsManager */
|
||||
|
||||
const Gio = imports.gi.Gio;
|
||||
const Signals = imports.signals;
|
||||
const Credential = imports.gdm.credentialManager;
|
||||
|
||||
const dbusPath = '/org/vmware/viewagent/Credentials';
|
||||
const dbusInterface = 'org.vmware.viewagent.Credentials';
|
||||
|
||||
var SERVICE_NAME = 'gdm-vmwcred';
|
||||
|
||||
const VmwareCredentialsIface = '<node> \
|
||||
<interface name="' + dbusInterface + '"> \
|
||||
<signal name="UserAuthenticated"> \
|
||||
<arg type="s" name="token"/> \
|
||||
</signal> \
|
||||
</interface> \
|
||||
</node>';
|
||||
|
||||
|
||||
const VmwareCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(VmwareCredentialsIface);
|
||||
|
||||
let _vmwareCredentialsManager = null;
|
||||
|
||||
function VmwareCredentials() {
|
||||
var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
|
||||
g_interface_name: VmwareCredentialsInfo.name,
|
||||
g_interface_info: VmwareCredentialsInfo,
|
||||
g_name: dbusInterface,
|
||||
g_object_path: dbusPath,
|
||||
g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES });
|
||||
self.init(null);
|
||||
return self;
|
||||
}
|
||||
|
||||
var VmwareCredentialsManager = class VmwareCredentialsManager extends Credential.CredentialManager {
|
||||
constructor() {
|
||||
super(SERVICE_NAME);
|
||||
this._credentials = new VmwareCredentials();
|
||||
this._credentials.connectSignal('UserAuthenticated',
|
||||
(proxy, sender, [token]) => {
|
||||
this.token = token;
|
||||
});
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(VmwareCredentialsManager.prototype);
|
||||
|
||||
function getVmwareCredentialsManager() {
|
||||
if (!_vmwareCredentialsManager)
|
||||
_vmwareCredentialsManager = new VmwareCredentialsManager();
|
||||
|
||||
return _vmwareCredentialsManager;
|
||||
}
|
@ -6,6 +6,8 @@
|
||||
<file>gdm/fingerprint.js</file>
|
||||
<file>gdm/loginDialog.js</file>
|
||||
<file>gdm/oVirt.js</file>
|
||||
<file>gdm/credentialManager.js</file>
|
||||
<file>gdm/vmware.js</file>
|
||||
<file>gdm/realmd.js</file>
|
||||
<file>gdm/util.js</file>
|
||||
|
||||
@ -108,6 +110,7 @@
|
||||
<file>ui/windowAttentionHandler.js</file>
|
||||
<file>ui/windowMenu.js</file>
|
||||
<file>ui/windowManager.js</file>
|
||||
<file>ui/windowPreview.js</file>
|
||||
<file>ui/workspace.js</file>
|
||||
<file>ui/workspaceSwitcherPopup.js</file>
|
||||
<file>ui/workspaceThumbnail.js</file>
|
||||
|
@ -171,13 +171,13 @@ var IBusManager = class {
|
||||
this._panelService.connect('set-content-type', this._setContentType.bind(this));
|
||||
} catch (e) {
|
||||
}
|
||||
this._updateReadiness();
|
||||
|
||||
try {
|
||||
// If an engine is already active we need to get its properties
|
||||
const engine =
|
||||
await this._ibus.get_global_engine_async(-1, this._cancellable);
|
||||
this._engineChanged(this._ibus, engine.get_name());
|
||||
this._updateReadiness();
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ const SystemActions = GObject.registerClass({
|
||||
this._actions.set(LOGOUT_ACTION_ID, {
|
||||
// Translators: The name of the logout action in search
|
||||
name: C_("search-result", "Log Out"),
|
||||
iconName: 'application-exit-symbolic',
|
||||
iconName: 'system-log-out-symbolic',
|
||||
// Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
keywords: tokenizeKeywords(_('logout;log out;sign off')),
|
||||
available: false,
|
||||
|
@ -1,9 +1,9 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported findUrls, spawn, spawnCommandLine, spawnApp, trySpawnCommandLine,
|
||||
formatTime, formatTimeSpan, createTimeLabel, insertSorted,
|
||||
makeCloseButton, ensureActorVisibleInScrollView, wiggle */
|
||||
ensureActorVisibleInScrollView, wiggle */
|
||||
|
||||
const { Clutter, Gio, GLib, GObject, Shell, St, GnomeDesktop } = imports.gi;
|
||||
const { Clutter, Gio, GLib, Shell, St, GnomeDesktop } = imports.gi;
|
||||
const Gettext = imports.gettext;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
@ -363,51 +363,6 @@ function insertSorted(array, val, cmp) {
|
||||
return pos;
|
||||
}
|
||||
|
||||
var CloseButton = GObject.registerClass(
|
||||
class CloseButton extends St.Button {
|
||||
_init(boxpointer) {
|
||||
super._init({
|
||||
style_class: 'notification-close',
|
||||
x_expand: true,
|
||||
y_expand: true,
|
||||
x_align: Clutter.ActorAlign.END,
|
||||
y_align: Clutter.ActorAlign.START,
|
||||
});
|
||||
|
||||
this._boxPointer = boxpointer;
|
||||
if (boxpointer)
|
||||
this._boxPointer.connect('arrow-side-changed', this._sync.bind(this));
|
||||
}
|
||||
|
||||
_computeBoxPointerOffset() {
|
||||
if (!this._boxPointer || !this._boxPointer.get_stage())
|
||||
return 0;
|
||||
|
||||
let side = this._boxPointer.arrowSide;
|
||||
if (side == St.Side.TOP)
|
||||
return this._boxPointer.getArrowHeight();
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
_sync() {
|
||||
let themeNode = this.get_theme_node();
|
||||
|
||||
let offY = this._computeBoxPointerOffset();
|
||||
this.translation_x = themeNode.get_length('-shell-close-overlap-x');
|
||||
this.translation_y = themeNode.get_length('-shell-close-overlap-y') + offY;
|
||||
}
|
||||
|
||||
vfunc_style_changed() {
|
||||
this._sync();
|
||||
super.vfunc_style_changed();
|
||||
}
|
||||
});
|
||||
|
||||
function makeCloseButton(boxpointer) {
|
||||
return new CloseButton(boxpointer);
|
||||
}
|
||||
|
||||
function ensureActorVisibleInScrollView(scrollView, actor) {
|
||||
let adjustment = scrollView.vscroll.adjustment;
|
||||
let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values();
|
||||
|
@ -68,8 +68,8 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
|
||||
this._items = this._switcherList.icons;
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
super.vfunc_allocate(box);
|
||||
|
||||
// Allocate the thumbnails
|
||||
// We try to avoid overflowing the screen so we base the resulting size on
|
||||
@ -102,7 +102,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
|
||||
this._thumbnails.addClones(primary.y + primary.height - bottomPadding - childBox.y1);
|
||||
let [, childNaturalHeight] = this._thumbnails.get_preferred_height(-1);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._thumbnails.allocate(childBox, flags);
|
||||
this._thumbnails.allocate(childBox);
|
||||
}
|
||||
}
|
||||
|
||||
@ -749,9 +749,9 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
return super.vfunc_get_preferred_height(forWidth);
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_allocate(box) {
|
||||
// Allocate the main list items
|
||||
super.vfunc_allocate(box, flags);
|
||||
super.vfunc_allocate(box);
|
||||
|
||||
let contentBox = this.get_theme_node().get_content_box(box);
|
||||
|
||||
@ -766,7 +766,7 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
childBox.x2 = childBox.x1 + arrowWidth;
|
||||
childBox.y1 = contentBox.y1 + itemBox.y2 + arrowHeight;
|
||||
childBox.y2 = childBox.y1 + arrowHeight;
|
||||
this._arrows[i].allocate(childBox, flags);
|
||||
this._arrows[i].allocate(childBox);
|
||||
}
|
||||
}
|
||||
|
||||
@ -852,6 +852,9 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
|
||||
if (index === -1)
|
||||
return;
|
||||
|
||||
this._arrows[index].destroy();
|
||||
this._arrows.splice(index, 1);
|
||||
|
||||
this.icons.splice(index, 1);
|
||||
this.removeItem(index);
|
||||
}
|
||||
@ -1056,7 +1059,7 @@ class WindowSwitcher extends SwitcherPopup.SwitcherList {
|
||||
return [minHeight, natHeight];
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_allocate(box) {
|
||||
let themeNode = this.get_theme_node();
|
||||
let contentBox = themeNode.get_content_box(box);
|
||||
const labelHeight = this._label.height;
|
||||
@ -1064,20 +1067,20 @@ class WindowSwitcher extends SwitcherPopup.SwitcherList {
|
||||
labelHeight + themeNode.get_padding(St.Side.BOTTOM);
|
||||
|
||||
box.y2 -= totalLabelHeight;
|
||||
super.vfunc_allocate(box, flags);
|
||||
super.vfunc_allocate(box);
|
||||
|
||||
// Hooking up the parent vfunc will call this.set_allocation() with
|
||||
// the height without the label height, so call it again with the
|
||||
// correct size here.
|
||||
box.y2 += totalLabelHeight;
|
||||
this.set_allocation(box, flags);
|
||||
this.set_allocation(box);
|
||||
|
||||
const childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = contentBox.x1;
|
||||
childBox.x2 = contentBox.x2;
|
||||
childBox.y2 = contentBox.y2;
|
||||
childBox.y1 = childBox.y2 - labelHeight;
|
||||
this._label.allocate(childBox, flags);
|
||||
this._label.allocate(childBox);
|
||||
}
|
||||
|
||||
highlight(index, justOutline) {
|
||||
|
@ -60,7 +60,7 @@ class Animation extends St.Bin {
|
||||
}
|
||||
|
||||
_loadFile(file, width, height) {
|
||||
let [validResourceScale, resourceScale] = this.get_resource_scale();
|
||||
const resourceScale = this.get_resource_scale();
|
||||
let wasPlaying = this._isPlaying;
|
||||
|
||||
if (this._isPlaying)
|
||||
@ -69,12 +69,6 @@ class Animation extends St.Bin {
|
||||
this._isLoaded = false;
|
||||
this.destroy_all_children();
|
||||
|
||||
if (!validResourceScale) {
|
||||
if (wasPlaying)
|
||||
this.play();
|
||||
return;
|
||||
}
|
||||
|
||||
let textureCache = St.TextureCache.get_default();
|
||||
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
|
||||
this._animations = textureCache.load_sliced_image(file, width, height,
|
||||
|
1037
js/ui/appDisplay.js
1037
js/ui/appDisplay.js
File diff suppressed because it is too large
Load Diff
@ -13,6 +13,7 @@ const RENAMED_DESKTOP_IDS = {
|
||||
'cheese.desktop': 'org.gnome.Cheese.desktop',
|
||||
'dconf-editor.desktop': 'ca.desrt.dconf-editor.desktop',
|
||||
'empathy.desktop': 'org.gnome.Empathy.desktop',
|
||||
'eog.desktop': 'org.gnome.eog.desktop',
|
||||
'epiphany.desktop': 'org.gnome.Epiphany.desktop',
|
||||
'evolution.desktop': 'org.gnome.Evolution.desktop',
|
||||
'file-roller.desktop': 'org.gnome.FileRoller.desktop',
|
||||
|
@ -512,8 +512,8 @@ var SystemBackground = GObject.registerClass({
|
||||
super._init({
|
||||
meta_display: global.display,
|
||||
monitor: 0,
|
||||
background: _systemBackground,
|
||||
});
|
||||
this.content.background = _systemBackground;
|
||||
|
||||
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
|
||||
this.emit('loaded');
|
||||
@ -712,13 +712,18 @@ var BackgroundManager = class BackgroundManager {
|
||||
}
|
||||
|
||||
let newBackgroundActor = this._createBackgroundActor();
|
||||
newBackgroundActor.vignette_sharpness = this.backgroundActor.vignette_sharpness;
|
||||
newBackgroundActor.brightness = this.backgroundActor.brightness;
|
||||
|
||||
const oldContent = this.backgroundActor.content;
|
||||
const newContent = newBackgroundActor.content;
|
||||
|
||||
newContent.vignette_sharpness = oldContent.vignette_sharpness;
|
||||
newContent.brightness = oldContent.brightness;
|
||||
|
||||
newBackgroundActor.visible = this.backgroundActor.visible;
|
||||
|
||||
this._newBackgroundActor = newBackgroundActor;
|
||||
|
||||
let background = newBackgroundActor.background;
|
||||
const { background } = newBackgroundActor.content;
|
||||
|
||||
if (background.isLoaded) {
|
||||
this._swapBackgroundActor();
|
||||
@ -738,6 +743,8 @@ var BackgroundManager = class BackgroundManager {
|
||||
let backgroundActor = new Meta.BackgroundActor({
|
||||
meta_display: global.display,
|
||||
monitor: this._monitorIndex,
|
||||
});
|
||||
backgroundActor.content.set({
|
||||
background,
|
||||
vignette: this._vignette,
|
||||
vignette_sharpness: 0.5,
|
||||
|
@ -30,8 +30,8 @@ var BarLevel = GObject.registerClass({
|
||||
accessible_role: Atk.Role.LEVEL_BAR,
|
||||
};
|
||||
super._init(Object.assign(defaultParams, params));
|
||||
this.connect('allocation-changed', (actor, box) => {
|
||||
this._barLevelWidth = box.get_width();
|
||||
this.connect('notify::allocation', () => {
|
||||
this._barLevelWidth = this.allocation.get_width();
|
||||
});
|
||||
|
||||
this._customAccessible = St.GenericAccessible.new_for_actor(this);
|
||||
|
@ -196,13 +196,13 @@ var BoxPointer = GObject.registerClass({
|
||||
return themeNode.adjust_preferred_height(...height);
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_allocate(box) {
|
||||
if (this._sourceActor && this._sourceActor.mapped) {
|
||||
this._reposition(box);
|
||||
this._updateFlip(box);
|
||||
}
|
||||
|
||||
this.set_allocation(box, flags);
|
||||
this.set_allocation(box);
|
||||
|
||||
let themeNode = this.get_theme_node();
|
||||
let borderWidth = themeNode.get_length('-arrow-border-width');
|
||||
@ -214,7 +214,7 @@ var BoxPointer = GObject.registerClass({
|
||||
childBox.y1 = 0;
|
||||
childBox.x2 = availWidth;
|
||||
childBox.y2 = availHeight;
|
||||
this._border.allocate(childBox, flags);
|
||||
this._border.allocate(childBox);
|
||||
|
||||
childBox.x1 = borderWidth;
|
||||
childBox.y1 = borderWidth;
|
||||
@ -234,7 +234,7 @@ var BoxPointer = GObject.registerClass({
|
||||
childBox.x2 -= rise;
|
||||
break;
|
||||
}
|
||||
this.bin.allocate(childBox, flags);
|
||||
this.bin.allocate(childBox);
|
||||
}
|
||||
|
||||
_drawBorder(area) {
|
||||
|
@ -14,7 +14,6 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
var MSECS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||
var SHOW_WEEKDATE_KEY = 'show-weekdate';
|
||||
var ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
var MESSAGE_ICON_SIZE = -1; // pick up from CSS
|
||||
|
||||
@ -32,10 +31,6 @@ function sameDay(dateA, dateB) {
|
||||
return sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
|
||||
}
|
||||
|
||||
function isToday(date) {
|
||||
return sameDay(new Date(), date);
|
||||
}
|
||||
|
||||
function _isWorkDay(date) {
|
||||
/* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
|
||||
let days = C_('calendar-no-work', "06");
|
||||
@ -723,67 +718,6 @@ var Calendar = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
var EventMessage = GObject.registerClass(
|
||||
class EventMessage extends MessageList.Message {
|
||||
_init(event, date) {
|
||||
super._init('', '');
|
||||
|
||||
this._date = date;
|
||||
|
||||
this.update(event);
|
||||
|
||||
this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' });
|
||||
this.setIcon(this._icon);
|
||||
}
|
||||
|
||||
vfunc_style_changed() {
|
||||
let iconVisible = this.get_parent().has_style_pseudo_class('first-child');
|
||||
this._icon.opacity = iconVisible ? 255 : 0;
|
||||
super.vfunc_style_changed();
|
||||
}
|
||||
|
||||
update(event) {
|
||||
this._event = event;
|
||||
|
||||
this.setTitle(this._formatEventTime());
|
||||
this.setBody(event.summary);
|
||||
}
|
||||
|
||||
_formatEventTime() {
|
||||
let periodBegin = _getBeginningOfDay(this._date);
|
||||
let periodEnd = _getEndOfDay(this._date);
|
||||
let allDay = this._event.allDay || (this._event.date <= periodBegin &&
|
||||
this._event.end >= periodEnd);
|
||||
let title;
|
||||
if (allDay) {
|
||||
/* Translators: Shown in calendar event list for all day events
|
||||
* Keep it short, best if you can use less then 10 characters
|
||||
*/
|
||||
title = C_("event list time", "All Day");
|
||||
} else {
|
||||
let date = this._event.date >= periodBegin
|
||||
? this._event.date
|
||||
: this._event.end;
|
||||
title = Util.formatTime(date, { timeOnly: true });
|
||||
}
|
||||
|
||||
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||
if (this._event.date < periodBegin && !this._event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(title, ELLIPSIS_CHAR);
|
||||
else
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
}
|
||||
if (this._event.end > periodEnd && !this._event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
else
|
||||
title = '%s%s'.format(title, ELLIPSIS_CHAR);
|
||||
}
|
||||
return title;
|
||||
}
|
||||
});
|
||||
|
||||
var NotificationMessage = GObject.registerClass(
|
||||
class NotificationMessage extends MessageList.Message {
|
||||
_init(notification) {
|
||||
@ -849,149 +783,6 @@ class NotificationMessage extends MessageList.Message {
|
||||
}
|
||||
});
|
||||
|
||||
var EventsSection = GObject.registerClass(
|
||||
class EventsSection extends MessageList.MessageListSection {
|
||||
_init() {
|
||||
super._init();
|
||||
|
||||
this._desktopSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.interface' });
|
||||
this._desktopSettings.connect('changed', this._reloadEvents.bind(this));
|
||||
this._eventSource = new EmptyEventSource();
|
||||
|
||||
this._messageById = new Map();
|
||||
|
||||
this._title = new St.Button({ style_class: 'events-section-title',
|
||||
label: '',
|
||||
can_focus: true });
|
||||
this._title.child.x_align = Clutter.ActorAlign.START;
|
||||
this.insert_child_below(this._title, null);
|
||||
|
||||
this._title.connect('clicked', this._onTitleClicked.bind(this));
|
||||
this._title.connect('key-focus-in', this._onKeyFocusIn.bind(this));
|
||||
|
||||
this._appSys = Shell.AppSystem.get_default();
|
||||
this._appSys.connect('installed-changed',
|
||||
this._appInstalledChanged.bind(this));
|
||||
this._appInstalledChanged();
|
||||
}
|
||||
|
||||
setEventSource(eventSource) {
|
||||
if (!(eventSource instanceof EventSourceBase))
|
||||
throw new Error('Event source is not valid type');
|
||||
|
||||
this._eventSource = eventSource;
|
||||
this._eventSource.connect('changed', this._reloadEvents.bind(this));
|
||||
}
|
||||
|
||||
get allowed() {
|
||||
return Main.sessionMode.showCalendarEvents;
|
||||
}
|
||||
|
||||
_updateTitle() {
|
||||
this._title.visible = !isToday(this._date);
|
||||
|
||||
if (!this._title.visible)
|
||||
return;
|
||||
|
||||
let dayFormat;
|
||||
let now = new Date();
|
||||
if (sameYear(this._date, now)) {
|
||||
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
dayFormat = Shell.util_translate_time_string(NC_("calendar heading", "%A, %B %-d"));
|
||||
} else {
|
||||
/* Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
dayFormat = Shell.util_translate_time_string(NC_("calendar heading", "%A, %B %-d, %Y"));
|
||||
}
|
||||
this._title.label = this._date.toLocaleFormat(dayFormat);
|
||||
}
|
||||
|
||||
_reloadEvents() {
|
||||
if (this._eventSource.isLoading || this._reloading)
|
||||
return;
|
||||
|
||||
this._reloading = true;
|
||||
|
||||
let periodBegin = _getBeginningOfDay(this._date);
|
||||
let periodEnd = _getEndOfDay(this._date);
|
||||
let events = this._eventSource.getEvents(periodBegin, periodEnd);
|
||||
|
||||
let ids = events.map(e => e.id);
|
||||
this._messageById.forEach((message, id) => {
|
||||
if (ids.includes(id))
|
||||
return;
|
||||
this._messageById.delete(id);
|
||||
this.removeMessage(message);
|
||||
});
|
||||
|
||||
for (let i = 0; i < events.length; i++) {
|
||||
let event = events[i];
|
||||
|
||||
let message = this._messageById.get(event.id);
|
||||
if (!message) {
|
||||
message = new EventMessage(event, this._date);
|
||||
this._messageById.set(event.id, message);
|
||||
this.addMessage(message, false);
|
||||
} else {
|
||||
message.update(event);
|
||||
this.moveMessage(message, i, false);
|
||||
}
|
||||
}
|
||||
|
||||
this._reloading = false;
|
||||
this._sync();
|
||||
}
|
||||
|
||||
_appInstalledChanged() {
|
||||
this._calendarApp = undefined;
|
||||
this._title.reactive = this._getCalendarApp() != null;
|
||||
}
|
||||
|
||||
_getCalendarApp() {
|
||||
if (this._calendarApp !== undefined)
|
||||
return this._calendarApp;
|
||||
|
||||
let apps = Gio.AppInfo.get_recommended_for_type('text/calendar');
|
||||
if (apps && (apps.length > 0)) {
|
||||
let app = Gio.AppInfo.get_default_for_type('text/calendar', false);
|
||||
let defaultInRecommended = apps.some(a => a.equal(app));
|
||||
this._calendarApp = defaultInRecommended ? app : apps[0];
|
||||
} else {
|
||||
this._calendarApp = null;
|
||||
}
|
||||
return this._calendarApp;
|
||||
}
|
||||
|
||||
_onTitleClicked() {
|
||||
Main.overview.hide();
|
||||
Main.panel.closeCalendar();
|
||||
|
||||
let appInfo = this._getCalendarApp();
|
||||
if (appInfo.get_id() === 'org.gnome.Evolution.desktop') {
|
||||
let app = this._appSys.lookup_app('evolution-calendar.desktop');
|
||||
if (app)
|
||||
appInfo = app.app_info;
|
||||
}
|
||||
appInfo.launch([], global.create_app_launch_context(0, -1));
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
super.setDate(date);
|
||||
this._updateTitle();
|
||||
this._reloadEvents();
|
||||
}
|
||||
|
||||
_shouldShow() {
|
||||
return !this.empty || !isToday(this._date);
|
||||
}
|
||||
|
||||
_sync() {
|
||||
if (this._reloading)
|
||||
return;
|
||||
|
||||
super._sync();
|
||||
}
|
||||
});
|
||||
|
||||
var TimeLabel = GObject.registerClass(
|
||||
class NotificationTimeLabel extends St.Label {
|
||||
_init(datetime) {
|
||||
@ -1088,10 +879,6 @@ class NotificationSection extends MessageList.MessageListSection {
|
||||
});
|
||||
super.vfunc_map();
|
||||
}
|
||||
|
||||
_shouldShow() {
|
||||
return !this.empty && isToday(this._date);
|
||||
}
|
||||
});
|
||||
|
||||
var Placeholder = GObject.registerClass(
|
||||
@ -1100,41 +887,13 @@ class Placeholder extends St.BoxLayout {
|
||||
super._init({ style_class: 'message-list-placeholder', vertical: true });
|
||||
this._date = new Date();
|
||||
|
||||
let todayFile = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/no-notifications.svg');
|
||||
let otherFile = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/no-events.svg');
|
||||
this._todayIcon = new Gio.FileIcon({ file: todayFile });
|
||||
this._otherIcon = new Gio.FileIcon({ file: otherFile });
|
||||
|
||||
this._icon = new St.Icon();
|
||||
const file = Gio.File.new_for_uri(
|
||||
'resource:///org/gnome/shell/theme/no-notifications.svg');
|
||||
this._icon = new St.Icon({ gicon: new Gio.FileIcon({ file }) });
|
||||
this.add_actor(this._icon);
|
||||
|
||||
this._label = new St.Label();
|
||||
this._label = new St.Label({ text: _('No Notifications') });
|
||||
this.add_actor(this._label);
|
||||
|
||||
this._sync();
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
if (sameDay(this._date, date))
|
||||
return;
|
||||
this._date = date;
|
||||
this._sync();
|
||||
}
|
||||
|
||||
_sync() {
|
||||
let today = isToday(this._date);
|
||||
if (today && this._icon.gicon == this._todayIcon)
|
||||
return;
|
||||
if (!today && this._icon.gicon == this._otherIcon)
|
||||
return;
|
||||
|
||||
if (today) {
|
||||
this._icon.gicon = this._todayIcon;
|
||||
this._label.text = _("No Notifications");
|
||||
} else {
|
||||
this._icon.gicon = this._otherIcon;
|
||||
this._label.text = _("No Events");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -1199,8 +958,8 @@ class CalendarMessageList extends St.Widget {
|
||||
child: this._dndSwitch,
|
||||
label_actor: dndLabel,
|
||||
});
|
||||
this._dndButton.bind_property('checked',
|
||||
this._dndSwitch, 'state',
|
||||
this._dndSwitch.bind_property('state',
|
||||
this._dndButton, 'checked',
|
||||
GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE);
|
||||
hbox.add_child(this._dndButton);
|
||||
|
||||
@ -1235,9 +994,6 @@ class CalendarMessageList extends St.Widget {
|
||||
this._notificationSection = new NotificationSection();
|
||||
this._addSection(this._notificationSection);
|
||||
|
||||
this._eventsSection = new EventsSection();
|
||||
this._addSection(this._eventsSection);
|
||||
|
||||
Main.sessionMode.connect('updated', this._sync.bind(this));
|
||||
}
|
||||
|
||||
@ -1273,13 +1029,4 @@ class CalendarMessageList extends St.Widget {
|
||||
let canClear = sections.some(s => s.canClear && s.visible);
|
||||
this._clearButton.reactive = canClear;
|
||||
}
|
||||
|
||||
setEventSource(eventSource) {
|
||||
this._eventsSection.setEventSource(eventSource);
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
this._sectionList.get_children().forEach(s => s.setDate(date));
|
||||
this._placeholder.setDate(date);
|
||||
}
|
||||
});
|
||||
|
@ -292,11 +292,11 @@ class DashActor extends St.Widget {
|
||||
});
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_allocate(box) {
|
||||
let contentBox = this.get_theme_node().get_content_box(box);
|
||||
let availWidth = contentBox.x2 - contentBox.x1;
|
||||
|
||||
this.set_allocation(box, flags);
|
||||
this.set_allocation(box);
|
||||
|
||||
let [appIcons, showAppsButton] = this.get_children();
|
||||
let [, showAppsNatHeight] = showAppsButton.get_preferred_height(availWidth);
|
||||
@ -306,11 +306,11 @@ class DashActor extends St.Widget {
|
||||
childBox.y1 = contentBox.y1;
|
||||
childBox.x2 = contentBox.x2;
|
||||
childBox.y2 = contentBox.y2 - showAppsNatHeight;
|
||||
appIcons.allocate(childBox, flags);
|
||||
appIcons.allocate(childBox);
|
||||
|
||||
childBox.y1 = contentBox.y2 - showAppsNatHeight;
|
||||
childBox.y2 = contentBox.y2;
|
||||
showAppsButton.allocate(childBox, flags);
|
||||
showAppsButton.allocate(childBox);
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
@ -815,7 +815,12 @@ var Dash = GObject.registerClass({
|
||||
else
|
||||
pos = 0; // always insert at the top when dash is empty
|
||||
|
||||
if (pos != this._dragPlaceholderPos && pos <= numFavorites && this._animatingPlaceholdersCount == 0) {
|
||||
// Put the placeholder after the last favorite if we are not
|
||||
// in the favorites zone
|
||||
if (pos > numFavorites)
|
||||
pos = numFavorites;
|
||||
|
||||
if (pos !== this._dragPlaceholderPos && this._animatingPlaceholdersCount === 0) {
|
||||
this._dragPlaceholderPos = pos;
|
||||
|
||||
// Don't allow positioning before or after self
|
||||
@ -843,11 +848,6 @@ var Dash = GObject.registerClass({
|
||||
this._dragPlaceholder.show(fadeIn);
|
||||
}
|
||||
|
||||
// Remove the drag placeholder if we are not in the
|
||||
// "favorites zone"
|
||||
if (pos > numFavorites)
|
||||
this._clearDragPlaceholder();
|
||||
|
||||
if (!this._dragPlaceholder)
|
||||
return DND.DragMotionResult.NO_DROP;
|
||||
|
||||
|
@ -13,7 +13,11 @@ const System = imports.system;
|
||||
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
const NC_ = (context, str) => '%s\u0004%s'.format(context, str);
|
||||
const T_ = Shell.util_translate_time_string;
|
||||
|
||||
const MAX_FORECASTS = 5;
|
||||
const ELLIPSIS_CHAR = '\u2026';
|
||||
|
||||
const ClocksIntegrationIface = loadInterfaceXML('org.gnome.Shell.ClocksIntegration');
|
||||
const ClocksProxy = Gio.DBusProxy.makeProxyWrapper(ClocksIntegrationIface);
|
||||
@ -84,6 +88,188 @@ class TodayButton extends St.Button {
|
||||
}
|
||||
});
|
||||
|
||||
var EventsSection = GObject.registerClass(
|
||||
class EventsSection extends St.Button {
|
||||
_init() {
|
||||
super._init({
|
||||
style_class: 'events-button',
|
||||
can_focus: true,
|
||||
x_expand: true,
|
||||
child: new St.BoxLayout({
|
||||
style_class: 'events-box',
|
||||
vertical: true,
|
||||
x_expand: true,
|
||||
}),
|
||||
});
|
||||
|
||||
this._startDate = null;
|
||||
this._endDate = null;
|
||||
|
||||
this._eventSource = null;
|
||||
this._calendarApp = null;
|
||||
|
||||
this._title = new St.Label({
|
||||
style_class: 'events-title',
|
||||
});
|
||||
this.child.add_child(this._title);
|
||||
|
||||
this._eventsList = new St.BoxLayout({
|
||||
style_class: 'events-list',
|
||||
vertical: true,
|
||||
x_expand: true,
|
||||
});
|
||||
this.child.add_child(this._eventsList);
|
||||
|
||||
this._appSys = Shell.AppSystem.get_default();
|
||||
this._appSys.connect('installed-changed',
|
||||
this._appInstalledChanged.bind(this));
|
||||
this._appInstalledChanged();
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
const day = [date.getFullYear(), date.getMonth(), date.getDate()];
|
||||
this._startDate = new Date(...day);
|
||||
this._endDate = new Date(...day, 23, 59, 59, 999);
|
||||
|
||||
this._updateTitle();
|
||||
this._reloadEvents();
|
||||
}
|
||||
|
||||
setEventSource(eventSource) {
|
||||
if (!(eventSource instanceof Calendar.EventSourceBase))
|
||||
throw new Error('Event source is not valid type');
|
||||
|
||||
this._eventSource = eventSource;
|
||||
this._eventSource.connect('changed', this._reloadEvents.bind(this));
|
||||
this._eventSource.connect('notify::has-calendars',
|
||||
this._sync.bind(this));
|
||||
this._sync();
|
||||
}
|
||||
|
||||
_updateTitle() {
|
||||
/* Translators: Shown on calendar heading when selected day occurs on current year */
|
||||
const sameYearFormat = T_(NC_('calendar heading', '%B %-d'));
|
||||
|
||||
/* Translators: Shown on calendar heading when selected day occurs on different year */
|
||||
const otherYearFormat = T_(NC_('calendar heading', '%B %-d %Y'));
|
||||
|
||||
const timeSpanDay = GLib.TIME_SPAN_DAY / 1000;
|
||||
const now = new Date();
|
||||
|
||||
if (this._startDate <= now && now <= this._endDate)
|
||||
this._title.text = _('Today');
|
||||
else if (this._endDate < now && now - this._endDate < timeSpanDay)
|
||||
this._title.text = _('Yesterday');
|
||||
else if (this._startDate > now && this._startDate - now < timeSpanDay)
|
||||
this._title.text = _('Tomorrow');
|
||||
else if (this._startDate.getFullYear() === now.getFullYear())
|
||||
this._title.text = this._startDate.toLocaleFormat(sameYearFormat);
|
||||
else
|
||||
this._title.text = this._startDate.toLocaleFormat(otherYearFormat);
|
||||
}
|
||||
|
||||
_formatEventTime(event) {
|
||||
const allDay = event.allDay ||
|
||||
(event.date <= this._startDate && event.end >= this._endDate);
|
||||
|
||||
let title;
|
||||
if (allDay) {
|
||||
/* Translators: Shown in calendar event list for all day events
|
||||
* Keep it short, best if you can use less then 10 characters
|
||||
*/
|
||||
title = C_('event list time', 'All Day');
|
||||
} else {
|
||||
let date = event.date >= this._startDate ? event.date : event.end;
|
||||
title = Util.formatTime(date, { timeOnly: true });
|
||||
}
|
||||
|
||||
const rtl = Clutter.get_default_text_direction() === Clutter.TextDirection.RTL;
|
||||
if (event.date < this._startDate && !event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(title, ELLIPSIS_CHAR);
|
||||
else
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
}
|
||||
if (event.end > this._endDate && !event.allDay) {
|
||||
if (rtl)
|
||||
title = '%s%s'.format(ELLIPSIS_CHAR, title);
|
||||
else
|
||||
title = '%s%s'.format(title, ELLIPSIS_CHAR);
|
||||
}
|
||||
return title;
|
||||
}
|
||||
|
||||
_reloadEvents() {
|
||||
if (this._eventSource.isLoading || this._reloading)
|
||||
return;
|
||||
|
||||
this._reloading = true;
|
||||
|
||||
[...this._eventsList].forEach(c => c.destroy());
|
||||
|
||||
const events =
|
||||
this._eventSource.getEvents(this._startDate, this._endDate);
|
||||
|
||||
for (let event of events) {
|
||||
const box = new St.BoxLayout({
|
||||
style_class: 'event-box',
|
||||
vertical: true,
|
||||
});
|
||||
box.add(new St.Label({
|
||||
text: event.summary,
|
||||
style_class: 'event-summary',
|
||||
}));
|
||||
box.add(new St.Label({
|
||||
text: this._formatEventTime(event),
|
||||
style_class: 'event-time',
|
||||
}));
|
||||
this._eventsList.add_child(box);
|
||||
}
|
||||
|
||||
if (this._eventsList.get_n_children() === 0) {
|
||||
const placeholder = new St.Label({
|
||||
text: _('No Events'),
|
||||
style_class: 'event-placeholder',
|
||||
});
|
||||
this._eventsList.add_child(placeholder);
|
||||
}
|
||||
|
||||
this._reloading = false;
|
||||
this._sync();
|
||||
}
|
||||
|
||||
vfunc_clicked() {
|
||||
Main.overview.hide();
|
||||
Main.panel.closeCalendar();
|
||||
|
||||
let appInfo = this._calendarApp;
|
||||
if (appInfo.get_id() === 'org.gnome.Evolution.desktop') {
|
||||
const app = this._appSys.lookup_app('evolution-calendar.desktop');
|
||||
if (app)
|
||||
appInfo = app.app_info;
|
||||
}
|
||||
appInfo.launch([], global.create_app_launch_context(0, -1));
|
||||
}
|
||||
|
||||
_appInstalledChanged() {
|
||||
const apps = Gio.AppInfo.get_recommended_for_type('text/calendar');
|
||||
if (apps && (apps.length > 0)) {
|
||||
const app = Gio.AppInfo.get_default_for_type('text/calendar', false);
|
||||
const defaultInRecommended = apps.some(a => a.equal(app));
|
||||
this._calendarApp = defaultInRecommended ? app : apps[0];
|
||||
} else {
|
||||
this._calendarApp = null;
|
||||
}
|
||||
|
||||
return this._sync();
|
||||
}
|
||||
|
||||
_sync() {
|
||||
this.visible = this._eventSource && this._eventSource.hasCalendars;
|
||||
this.reactive = this._calendarApp !== null;
|
||||
}
|
||||
});
|
||||
|
||||
var WorldClocksSection = GObject.registerClass(
|
||||
class WorldClocksSection extends St.Button {
|
||||
_init() {
|
||||
@ -94,6 +280,7 @@ class WorldClocksSection extends St.Button {
|
||||
});
|
||||
this._clock = new GnomeDesktop.WallClock();
|
||||
this._clockNotifyId = 0;
|
||||
this._tzNotifyId = 0;
|
||||
|
||||
this._locations = [];
|
||||
|
||||
@ -166,8 +353,6 @@ class WorldClocksSection extends St.Button {
|
||||
layout.attach(header, 0, 0, 2, 1);
|
||||
this.label_actor = header;
|
||||
|
||||
let localOffset = GLib.DateTime.new_now_local().get_utc_offset();
|
||||
|
||||
for (let i = 0; i < this._locations.length; i++) {
|
||||
let l = this._locations[i].location;
|
||||
|
||||
@ -180,21 +365,8 @@ class WorldClocksSection extends St.Button {
|
||||
|
||||
let time = new St.Label({ style_class: 'world-clocks-time' });
|
||||
|
||||
const utcOffset = this._getTimeAtLocation(l).get_utc_offset();
|
||||
const offsetCurrentTz = utcOffset - localOffset;
|
||||
const offsetHours = Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR;
|
||||
const offsetMinutes =
|
||||
(Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) /
|
||||
GLib.TIME_SPAN_MINUTE;
|
||||
|
||||
const prefix = offsetCurrentTz >= 0 ? '+' : '-';
|
||||
const text = offsetMinutes === 0
|
||||
? '%s%d'.format(prefix, offsetHours)
|
||||
: '%s%d\u2236%d'.format(prefix, offsetHours, offsetMinutes);
|
||||
|
||||
const tz = new St.Label({
|
||||
style_class: 'world-clocks-timezone',
|
||||
text,
|
||||
x_align: Clutter.ActorAlign.END,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
});
|
||||
@ -212,32 +384,65 @@ class WorldClocksSection extends St.Button {
|
||||
layout.attach(tz, 2, i + 1, 1, 1);
|
||||
}
|
||||
|
||||
this._locations[i].actor = time;
|
||||
this._locations[i].timeLabel = time;
|
||||
this._locations[i].tzLabel = tz;
|
||||
}
|
||||
|
||||
if (this._grid.get_n_children() > 1) {
|
||||
if (!this._clockNotifyId) {
|
||||
this._clockNotifyId =
|
||||
this._clock.connect('notify::clock', this._updateLabels.bind(this));
|
||||
this._clock.connect('notify::clock', this._updateTimeLabels.bind(this));
|
||||
}
|
||||
this._updateLabels();
|
||||
if (!this._tzNotifyId) {
|
||||
this._tzNotifyId =
|
||||
this._clock.connect('notify::timezone', this._updateTimezoneLabels.bind(this));
|
||||
}
|
||||
this._updateTimeLabels();
|
||||
this._updateTimezoneLabels();
|
||||
} else {
|
||||
if (this._clockNotifyId)
|
||||
this._clock.disconnect(this._clockNotifyId);
|
||||
this._clockNotifyId = 0;
|
||||
|
||||
if (this._tzNotifyId)
|
||||
this._clock.disconnect(this._tzNotifyId);
|
||||
this._tzNotifyId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
_getTimezoneOffsetAtLocation(location) {
|
||||
const localOffset = GLib.DateTime.new_now_local().get_utc_offset();
|
||||
const utcOffset = this._getTimeAtLocation(location).get_utc_offset();
|
||||
const offsetCurrentTz = utcOffset - localOffset;
|
||||
const offsetHours = Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR;
|
||||
const offsetMinutes =
|
||||
(Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) /
|
||||
GLib.TIME_SPAN_MINUTE;
|
||||
|
||||
const prefix = offsetCurrentTz >= 0 ? '+' : '-';
|
||||
const text = offsetMinutes === 0
|
||||
? '%s%d'.format(prefix, offsetHours)
|
||||
: '%s%d\u2236%d'.format(prefix, offsetHours, offsetMinutes);
|
||||
return text;
|
||||
}
|
||||
|
||||
_getTimeAtLocation(location) {
|
||||
let tz = GLib.TimeZone.new(location.get_timezone().get_tzid());
|
||||
return GLib.DateTime.new_now(tz);
|
||||
}
|
||||
|
||||
_updateLabels() {
|
||||
_updateTimeLabels() {
|
||||
for (let i = 0; i < this._locations.length; i++) {
|
||||
let l = this._locations[i];
|
||||
let now = this._getTimeAtLocation(l.location);
|
||||
l.actor.text = Util.formatTime(now, { timeOnly: true });
|
||||
l.timeLabel.text = Util.formatTime(now, { timeOnly: true });
|
||||
}
|
||||
}
|
||||
|
||||
_updateTimezoneLabels() {
|
||||
for (let i = 0; i < this._locations.length; i++) {
|
||||
let l = this._locations[i];
|
||||
l.tzLabel.text = this._getTimezoneOffsetAtLocation(l.location);
|
||||
}
|
||||
}
|
||||
|
||||
@ -466,7 +671,6 @@ class MessagesIndicator extends St.Icon {
|
||||
|
||||
this._sources = [];
|
||||
this._count = 0;
|
||||
this._doNotDisturb = false;
|
||||
|
||||
this._settings = new Gio.Settings({
|
||||
schema_id: 'org.gnome.desktop.notifications',
|
||||
@ -547,8 +751,8 @@ class FreezableBinLayout extends Clutter.BinLayout {
|
||||
return this._savedHeight;
|
||||
}
|
||||
|
||||
vfunc_allocate(container, allocation, flags) {
|
||||
super.vfunc_allocate(container, allocation, flags);
|
||||
vfunc_allocate(container, allocation) {
|
||||
super.vfunc_allocate(container, allocation);
|
||||
|
||||
let [width, height] = allocation.get_size();
|
||||
this._savedWidth = [width, width];
|
||||
@ -580,6 +784,7 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
|
||||
this._clockDisplay = new St.Label({ style_class: 'clock' });
|
||||
this._clockDisplay.clutter_text.y_align = Clutter.ActorAlign.CENTER;
|
||||
this._clockDisplay.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
|
||||
this._indicator = new MessagesIndicator();
|
||||
|
||||
@ -614,7 +819,7 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
this._calendar.connect('selected-date-changed', (_calendar, datetime) => {
|
||||
let date = _gDateTimeToDate(datetime);
|
||||
layout.frozen = !_isToday(date);
|
||||
this._messageList.setDate(date);
|
||||
this._eventsItem.setDate(date);
|
||||
});
|
||||
|
||||
this.menu.connect('open-state-changed', (menu, isOpen) => {
|
||||
@ -623,7 +828,7 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
let now = new Date();
|
||||
this._calendar.setDate(now);
|
||||
this._date.setDate(now);
|
||||
this._messageList.setDate(now);
|
||||
this._eventsItem.setDate(now);
|
||||
}
|
||||
});
|
||||
|
||||
@ -654,6 +859,9 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
style_class: 'datemenu-displays-box' });
|
||||
this._displaysSection.add_actor(displaysBox);
|
||||
|
||||
this._eventsItem = new EventsSection();
|
||||
displaysBox.add_child(this._eventsItem);
|
||||
|
||||
this._clocksItem = new WorldClocksSection();
|
||||
displaysBox.add_child(this._clocksItem);
|
||||
|
||||
@ -679,7 +887,7 @@ class DateMenuButton extends PanelMenu.Button {
|
||||
this._eventSource.destroy();
|
||||
|
||||
this._calendar.setEventSource(eventSource);
|
||||
this._messageList.setEventSource(eventSource);
|
||||
this._eventsItem.setEventSource(eventSource);
|
||||
|
||||
this._eventSource = eventSource;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported Dialog, MessageDialogContent, ListSection, ListSectionItem */
|
||||
|
||||
const { Clutter, GObject, Meta, Pango, St } = imports.gi;
|
||||
const { Clutter, GLib, GObject, Meta, Pango, St } = imports.gi;
|
||||
|
||||
function _setLabel(label, value) {
|
||||
label.set({
|
||||
@ -221,13 +221,16 @@ var MessageDialogContent = GObject.registerClass({
|
||||
this._updateTitleStyleLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||
this._updateTitleStyleLater = 0;
|
||||
this._title.add_style_class_name('leightweight');
|
||||
return false;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
set title(title) {
|
||||
if (this._title.text === title)
|
||||
return;
|
||||
|
||||
_setLabel(this._title, title);
|
||||
|
||||
this._title.remove_style_class_name('leightweight');
|
||||
@ -237,6 +240,9 @@ var MessageDialogContent = GObject.registerClass({
|
||||
}
|
||||
|
||||
set description(description) {
|
||||
if (this._description.text === description)
|
||||
return;
|
||||
|
||||
_setLabel(this._description, description);
|
||||
this.notify('description');
|
||||
}
|
||||
|
44
js/ui/dnd.js
44
js/ui/dnd.js
@ -375,19 +375,30 @@ var _Draggable = class _Draggable {
|
||||
|
||||
this._dragActorSource = undefined;
|
||||
this._dragOrigParent = this.actor.get_parent();
|
||||
this._dragOrigX = this._dragActor.x;
|
||||
this._dragOrigY = this._dragActor.y;
|
||||
this._dragActorHadFixedPos = this._dragActor.fixed_position_set;
|
||||
this._dragOrigX = this._dragActor.allocation.x1;
|
||||
this._dragOrigY = this._dragActor.allocation.y1;
|
||||
this._dragOrigWidth = this._dragActor.allocation.get_width();
|
||||
this._dragOrigHeight = this._dragActor.allocation.get_height();
|
||||
this._dragOrigScale = this._dragActor.scale_x;
|
||||
|
||||
// When the actor gets reparented to the uiGroup, it will be
|
||||
// allocated its preferred size, so use that size instead of the
|
||||
// current allocation size.
|
||||
const [, newAllocatedWidth] = this._dragActor.get_preferred_width(-1);
|
||||
const [, newAllocatedHeight] = this._dragActor.get_preferred_height(-1);
|
||||
|
||||
const transformedAllocation =
|
||||
Shell.util_get_transformed_allocation(this._dragActor);
|
||||
|
||||
// Set the actor's scale such that it will keep the same
|
||||
// transformed size when it's reparented to the uiGroup
|
||||
let [scaledWidth, scaledHeight] = this.actor.get_transformed_size();
|
||||
this._dragActor.set_scale(scaledWidth / this.actor.width,
|
||||
scaledHeight / this.actor.height);
|
||||
this._dragActor.set_scale(
|
||||
transformedAllocation.get_width() / newAllocatedWidth,
|
||||
transformedAllocation.get_height() / newAllocatedHeight);
|
||||
|
||||
let [actorStageX, actorStageY] = this.actor.get_transformed_position();
|
||||
this._dragOffsetX = actorStageX - this._dragStartX;
|
||||
this._dragOffsetY = actorStageY - this._dragStartY;
|
||||
this._dragOffsetX = transformedAllocation.x1 - this._dragStartX;
|
||||
this._dragOffsetY = transformedAllocation.y1 - this._dragStartY;
|
||||
|
||||
this._dragOrigParent.remove_actor(this._dragActor);
|
||||
Main.uiGroup.add_child(this._dragActor);
|
||||
@ -417,6 +428,10 @@ var _Draggable = class _Draggable {
|
||||
this._dragOffsetX -= transX;
|
||||
this._dragOffsetY -= transY;
|
||||
|
||||
this._dragActor.set_position(
|
||||
this._dragX + this._dragOffsetX,
|
||||
this._dragY + this._dragOffsetY);
|
||||
|
||||
if (this._dragActorMaxSize != undefined) {
|
||||
let [scaledWidth, scaledHeight] = this._dragActor.get_transformed_size();
|
||||
let currentSize = Math.max(scaledWidth, scaledHeight);
|
||||
@ -635,9 +650,15 @@ var _Draggable = class _Draggable {
|
||||
if (parentWidth != 0)
|
||||
parentScale = parentScaledWidth / parentWidth;
|
||||
|
||||
// Also adjust for the difference in the original actor width
|
||||
// and the width it is now (children of uiGroup always get
|
||||
// allocated their preferred size)
|
||||
const childScaleX =
|
||||
this._dragOrigWidth / this._dragActor.allocation.get_width();
|
||||
|
||||
x = parentX + parentScale * this._dragOrigX;
|
||||
y = parentY + parentScale * this._dragOrigY;
|
||||
scale = this._dragOrigScale * parentScale;
|
||||
scale = this._dragOrigScale * parentScale * childScaleX;
|
||||
} else {
|
||||
// Snap back actor to its original stage position
|
||||
x = this._snapBackX;
|
||||
@ -718,7 +739,10 @@ var _Draggable = class _Draggable {
|
||||
Main.uiGroup.remove_child(this._dragActor);
|
||||
this._dragOrigParent.add_actor(this._dragActor);
|
||||
dragActor.set_scale(this._dragOrigScale, this._dragOrigScale);
|
||||
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
||||
if (this._dragActorHadFixedPos)
|
||||
dragActor.set_position(this._dragOrigX, this._dragOrigY);
|
||||
else
|
||||
dragActor.fixed_position_set = false;
|
||||
} else {
|
||||
dragActor.destroy();
|
||||
}
|
||||
|
@ -285,6 +285,11 @@ function init() {
|
||||
_easeActorProperty(this, 'value', target, params);
|
||||
};
|
||||
|
||||
Clutter.Actor.prototype[Symbol.iterator] = function* () {
|
||||
for (let c = this.get_first_child(); c; c = c.get_next_sibling())
|
||||
yield c;
|
||||
};
|
||||
|
||||
Clutter.Actor.prototype.toString = function () {
|
||||
return St.describe_actor(this);
|
||||
};
|
||||
@ -357,6 +362,10 @@ function init() {
|
||||
const Format = imports.format;
|
||||
|
||||
String.prototype.format = Format.format;
|
||||
|
||||
Math.clamp = function (x, lower, upper) {
|
||||
return Math.min(Math.max(x, lower), upper);
|
||||
};
|
||||
}
|
||||
|
||||
// adjustAnimationTime:
|
||||
|
@ -238,7 +238,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
|
||||
});
|
||||
|
||||
function init() {
|
||||
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
|
||||
_httpSession = new Soup.Session({ ssl_use_system_ca_file: true });
|
||||
|
||||
// See: https://bugzilla.gnome.org/show_bug.cgi?id=655189 for context.
|
||||
// _httpSession.add_feature(new Soup.ProxyResolverDefault());
|
||||
|
@ -26,6 +26,7 @@ var ExtensionManager = class {
|
||||
this._updateNotified = false;
|
||||
|
||||
this._extensions = new Map();
|
||||
this._unloadedExtensions = new Map();
|
||||
this._enabledExtensions = [];
|
||||
this._extensionOrder = [];
|
||||
|
||||
@ -102,18 +103,18 @@ var ExtensionManager = class {
|
||||
}
|
||||
}
|
||||
|
||||
if (extension.stylesheet) {
|
||||
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
||||
theme.unload_stylesheet(extension.stylesheet);
|
||||
delete extension.stylesheet;
|
||||
}
|
||||
|
||||
try {
|
||||
extension.stateObj.disable();
|
||||
} catch (e) {
|
||||
this.logExtensionError(uuid, e);
|
||||
}
|
||||
|
||||
if (extension.stylesheet) {
|
||||
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
|
||||
theme.unload_stylesheet(extension.stylesheet);
|
||||
delete extension.stylesheet;
|
||||
}
|
||||
|
||||
for (let i = 0; i < order.length; i++) {
|
||||
let otherUuid = order[i];
|
||||
try {
|
||||
@ -259,7 +260,8 @@ var ExtensionManager = class {
|
||||
if (!extension)
|
||||
return;
|
||||
|
||||
let message = error.toString();
|
||||
const message = error instanceof Error
|
||||
? error.message : error.toString();
|
||||
|
||||
extension.error = message;
|
||||
extension.state = ExtensionState.ERROR;
|
||||
@ -268,6 +270,7 @@ var ExtensionManager = class {
|
||||
extension.errors.push(message);
|
||||
|
||||
logError(error, 'Extension %s'.format(uuid));
|
||||
this._updateCanChange(extension);
|
||||
this.emit('extension-state-changed', extension);
|
||||
}
|
||||
|
||||
@ -317,6 +320,14 @@ var ExtensionManager = class {
|
||||
return extension;
|
||||
}
|
||||
|
||||
_canLoad(extension) {
|
||||
if (!this._unloadedExtensions.has(extension.uuid))
|
||||
return true;
|
||||
|
||||
const version = this._unloadedExtensions.get(extension.uuid);
|
||||
return extension.metadata.version === version;
|
||||
}
|
||||
|
||||
loadExtension(extension) {
|
||||
// Default to error, we set success as the last step
|
||||
extension.state = ExtensionState.ERROR;
|
||||
@ -325,6 +336,9 @@ var ExtensionManager = class {
|
||||
|
||||
if (checkVersion && ExtensionUtils.isOutOfDate(extension)) {
|
||||
extension.state = ExtensionState.OUT_OF_DATE;
|
||||
} else if (!this._canLoad(extension)) {
|
||||
this.logExtensionError(extension.uuid, new Error(
|
||||
'A different version was loaded previously. You need to log out for changes to take effect.'));
|
||||
} else {
|
||||
let enabled = this._enabledExtensions.includes(extension.uuid);
|
||||
if (enabled) {
|
||||
@ -335,6 +349,8 @@ var ExtensionManager = class {
|
||||
} else {
|
||||
extension.state = ExtensionState.INITIALIZED;
|
||||
}
|
||||
|
||||
this._unloadedExtensions.delete(extension.uuid);
|
||||
}
|
||||
|
||||
this._updateCanChange(extension);
|
||||
@ -342,15 +358,22 @@ var ExtensionManager = class {
|
||||
}
|
||||
|
||||
unloadExtension(extension) {
|
||||
const { uuid, type } = extension;
|
||||
|
||||
// Try to disable it -- if it's ERROR'd, we can't guarantee that,
|
||||
// but it will be removed on next reboot, and hopefully nothing
|
||||
// broke too much.
|
||||
this._callExtensionDisable(extension.uuid);
|
||||
this._callExtensionDisable(uuid);
|
||||
|
||||
extension.state = ExtensionState.UNINSTALLED;
|
||||
this.emit('extension-state-changed', extension);
|
||||
|
||||
this._extensions.delete(extension.uuid);
|
||||
// If we did install an importer, it is now cached and it's
|
||||
// impossible to load a different version
|
||||
if (type === ExtensionType.PER_USER && extension.imports)
|
||||
this._unloadedExtensions.set(uuid, extension.metadata.version);
|
||||
|
||||
this._extensions.delete(uuid);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
1797
js/ui/iconGrid.js
1797
js/ui/iconGrid.js
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/* exported InhibitShortcutsDialog */
|
||||
const { Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi;
|
||||
const { Clutter, Gio, GLib, GObject, Gtk, Meta, Pango, Shell, St } = imports.gi;
|
||||
|
||||
const Dialog = imports.ui.dialog;
|
||||
const ModalDialog = imports.ui.modalDialog;
|
||||
@ -90,6 +90,8 @@ var InhibitShortcutsDialog = GObject.registerClass({
|
||||
text: _('You can restore shortcuts by pressing %s.').format(restoreAccel),
|
||||
style_class: 'message-dialog-description',
|
||||
});
|
||||
restoreLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
|
||||
restoreLabel.clutter_text.line_wrap = true;
|
||||
content.add_child(restoreLabel);
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,25 @@ class AspectContainer extends St.Widget {
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
let [min, nat] = super.vfunc_get_preferred_width(forHeight);
|
||||
|
||||
if (forHeight > 0)
|
||||
nat = forHeight * this._ratio;
|
||||
|
||||
return [min, nat];
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
let [min, nat] = super.vfunc_get_preferred_height(forWidth);
|
||||
|
||||
if (forWidth > 0)
|
||||
nat = forWidth / this._ratio;
|
||||
|
||||
return [min, nat];
|
||||
}
|
||||
|
||||
vfunc_allocate(box) {
|
||||
if (box.get_width() > 0 && box.get_height() > 0) {
|
||||
let sizeRatio = box.get_width() / box.get_height();
|
||||
|
||||
@ -79,7 +97,7 @@ class AspectContainer extends St.Widget {
|
||||
}
|
||||
}
|
||||
|
||||
super.vfunc_allocate(box, flags);
|
||||
super.vfunc_allocate(box);
|
||||
}
|
||||
});
|
||||
|
||||
@ -1608,7 +1626,9 @@ class Keyboard extends St.BoxLayout {
|
||||
* we allow the OSK being smaller than 1/3rd of the monitor height
|
||||
* there.
|
||||
*/
|
||||
this.height = Math.min(maxHeight, this.get_preferred_height(monitor.width));
|
||||
const forWidth = this.get_theme_node().adjust_for_width(monitor.width);
|
||||
const [, natHeight] = this.get_preferred_height(forWidth);
|
||||
this.height = Math.min(maxHeight, natHeight);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -246,7 +246,7 @@ var LayoutManager = GObject.registerClass({
|
||||
vertical: true });
|
||||
this.addChrome(this.panelBox, { affectsStruts: true,
|
||||
trackFullscreen: true });
|
||||
this.panelBox.connect('allocation-changed',
|
||||
this.panelBox.connect('notify::allocation',
|
||||
this._panelBoxChanged.bind(this));
|
||||
|
||||
this.modalDialogGroup = new St.Widget({ name: 'modalDialogGroup',
|
||||
@ -1204,7 +1204,8 @@ class HotCorner extends Clutter.Actor {
|
||||
|
||||
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL) {
|
||||
this._corner.set_position(this.width - this._corner.width, 0);
|
||||
this.set_anchor_point_from_gravity(Clutter.Gravity.NORTH_EAST);
|
||||
this.set_pivot_point(1.0, 0.0);
|
||||
this.translation_x = -this.width;
|
||||
} else {
|
||||
this._corner.set_position(0, 0);
|
||||
}
|
||||
|
@ -554,8 +554,8 @@ var Inspector = GObject.registerClass({
|
||||
this._lookingGlass = lookingGlass;
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
if (!this._eventHandler)
|
||||
return;
|
||||
@ -570,7 +570,7 @@ var Inspector = GObject.registerClass({
|
||||
childBox.x2 = childBox.x1 + natWidth;
|
||||
childBox.y1 = primary.y + Math.floor((primary.height - natHeight) / 2);
|
||||
childBox.y2 = childBox.y1 + natHeight;
|
||||
this._eventHandler.allocate(childBox, flags);
|
||||
this._eventHandler.allocate(childBox);
|
||||
}
|
||||
|
||||
_close() {
|
||||
@ -802,6 +802,191 @@ var Extensions = GObject.registerClass({
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
var ActorLink = GObject.registerClass({
|
||||
Signals: {
|
||||
'inspect-actor': {},
|
||||
},
|
||||
}, class ActorLink extends St.Button {
|
||||
_init(actor) {
|
||||
this._arrow = new St.Icon({
|
||||
icon_name: 'pan-end-symbolic',
|
||||
icon_size: 8,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
pivot_point: new Graphene.Point({ x: 0.5, y: 0.5 }),
|
||||
});
|
||||
|
||||
const label = new St.Label({
|
||||
text: actor.toString(),
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
});
|
||||
|
||||
const inspectButton = new St.Button({
|
||||
child: new St.Icon({
|
||||
icon_name: 'insert-object-symbolic',
|
||||
icon_size: 12,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
}),
|
||||
reactive: true,
|
||||
x_expand: true,
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
});
|
||||
inspectButton.connect('clicked', () => this.emit('inspect-actor'));
|
||||
|
||||
const box = new St.BoxLayout();
|
||||
box.add_child(this._arrow);
|
||||
box.add_child(label);
|
||||
box.add_child(inspectButton);
|
||||
|
||||
super._init({
|
||||
reactive: true,
|
||||
track_hover: true,
|
||||
toggle_mode: true,
|
||||
style_class: 'actor-link',
|
||||
child: box,
|
||||
x_align: Clutter.ActorAlign.START,
|
||||
});
|
||||
|
||||
this._actor = actor;
|
||||
}
|
||||
|
||||
vfunc_clicked() {
|
||||
this._arrow.ease({
|
||||
rotation_angle_z: this.checked ? 90 : 0,
|
||||
duration: 250,
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
var ActorTreeViewer = GObject.registerClass(
|
||||
class ActorTreeViewer extends St.BoxLayout {
|
||||
_init(lookingGlass) {
|
||||
super._init();
|
||||
|
||||
this._lookingGlass = lookingGlass;
|
||||
this._actorData = new Map();
|
||||
}
|
||||
|
||||
_showActorChildren(actor) {
|
||||
const data = this._actorData.get(actor);
|
||||
if (!data || data.visible)
|
||||
return;
|
||||
|
||||
data.visible = true;
|
||||
data.actorAddedId = actor.connect('actor-added', (container, child) => {
|
||||
this._addActor(data.children, child);
|
||||
});
|
||||
data.actorRemovedId = actor.connect('actor-removed', (container, child) => {
|
||||
this._removeActor(child);
|
||||
});
|
||||
|
||||
for (let child of actor)
|
||||
this._addActor(data.children, child);
|
||||
}
|
||||
|
||||
_hideActorChildren(actor) {
|
||||
const data = this._actorData.get(actor);
|
||||
if (!data || !data.visible)
|
||||
return;
|
||||
|
||||
for (let child of actor)
|
||||
this._removeActor(child);
|
||||
|
||||
data.visible = false;
|
||||
if (data.actorAddedId > 0) {
|
||||
actor.disconnect(data.actorAddedId);
|
||||
data.actorAddedId = 0;
|
||||
}
|
||||
if (data.actorRemovedId > 0) {
|
||||
actor.disconnect(data.actorRemovedId);
|
||||
data.actorRemovedId = 0;
|
||||
}
|
||||
data.children.remove_all_children();
|
||||
}
|
||||
|
||||
_addActor(container, actor) {
|
||||
if (this._actorData.has(actor))
|
||||
return;
|
||||
|
||||
if (actor === this._lookingGlass)
|
||||
return;
|
||||
|
||||
const button = new ActorLink(actor);
|
||||
button.connect('notify::checked', () => {
|
||||
this._lookingGlass.setBorderPaintTarget(actor);
|
||||
if (button.checked)
|
||||
this._showActorChildren(actor);
|
||||
else
|
||||
this._hideActorChildren(actor);
|
||||
});
|
||||
button.connect('inspect-actor', () => {
|
||||
this._lookingGlass.inspectObject(actor, button);
|
||||
});
|
||||
|
||||
const mainContainer = new St.BoxLayout({ vertical: true });
|
||||
const childrenContainer = new St.BoxLayout({
|
||||
vertical: true,
|
||||
style: 'padding: 0 0 0 18px',
|
||||
});
|
||||
|
||||
mainContainer.add_child(button);
|
||||
mainContainer.add_child(childrenContainer);
|
||||
|
||||
this._actorData.set(actor, {
|
||||
button,
|
||||
container: mainContainer,
|
||||
children: childrenContainer,
|
||||
visible: false,
|
||||
actorAddedId: 0,
|
||||
actorRemovedId: 0,
|
||||
actorDestroyedId: actor.connect('destroy', () => this._removeActor(actor)),
|
||||
});
|
||||
|
||||
let belowChild = null;
|
||||
const nextSibling = actor.get_next_sibling();
|
||||
if (nextSibling && this._actorData.has(nextSibling))
|
||||
belowChild = this._actorData.get(nextSibling).container;
|
||||
|
||||
container.insert_child_above(mainContainer, belowChild);
|
||||
}
|
||||
|
||||
_removeActor(actor) {
|
||||
const data = this._actorData.get(actor);
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
for (let child of actor)
|
||||
this._removeActor(child);
|
||||
|
||||
if (data.actorAddedId > 0) {
|
||||
actor.disconnect(data.actorAddedId);
|
||||
data.actorAddedId = 0;
|
||||
}
|
||||
if (data.actorRemovedId > 0) {
|
||||
actor.disconnect(data.actorRemovedId);
|
||||
data.actorRemovedId = 0;
|
||||
}
|
||||
if (data.actorDestroyedId > 0) {
|
||||
actor.disconnect(data.actorDestroyedId);
|
||||
data.actorDestroyedId = 0;
|
||||
}
|
||||
data.container.destroy();
|
||||
this._actorData.delete(actor);
|
||||
}
|
||||
|
||||
vfunc_map() {
|
||||
super.vfunc_map();
|
||||
this._addActor(this, global.stage);
|
||||
}
|
||||
|
||||
vfunc_unmap() {
|
||||
super.vfunc_unmap();
|
||||
this._removeActor(global.stage);
|
||||
}
|
||||
});
|
||||
|
||||
var LookingGlass = GObject.registerClass(
|
||||
class LookingGlass extends St.BoxLayout {
|
||||
_init() {
|
||||
@ -833,9 +1018,9 @@ class LookingGlass extends St.BoxLayout {
|
||||
Main.uiGroup.add_actor(this);
|
||||
Main.uiGroup.set_child_below_sibling(this,
|
||||
Main.layoutManager.panelBox);
|
||||
Main.layoutManager.panelBox.connect('allocation-changed',
|
||||
Main.layoutManager.panelBox.connect('notify::allocation',
|
||||
this._queueResize.bind(this));
|
||||
Main.layoutManager.keyboardBox.connect('allocation-changed',
|
||||
Main.layoutManager.keyboardBox.connect('notify::allocation',
|
||||
this._queueResize.bind(this));
|
||||
|
||||
this._objInspector = new ObjInspector(this);
|
||||
@ -917,6 +1102,9 @@ class LookingGlass extends St.BoxLayout {
|
||||
this._extensions = new Extensions(this);
|
||||
notebook.appendPage('Extensions', this._extensions);
|
||||
|
||||
this._actorTreeViewer = new ActorTreeViewer(this);
|
||||
notebook.appendPage('Actors', this._actorTreeViewer);
|
||||
|
||||
this._entry.clutter_text.connect('activate', (o, _e) => {
|
||||
// Hide any completions we are currently showing
|
||||
this._hideCompletions();
|
||||
|
@ -489,7 +489,10 @@ var Magnifier = class Magnifier {
|
||||
_updateMouseSprite() {
|
||||
this._updateSpriteTexture();
|
||||
let [xHot, yHot] = this._cursorTracker.get_hot();
|
||||
this._mouseSprite.set_anchor_point(xHot, yHot);
|
||||
this._mouseSprite.set({
|
||||
translation_x: -xHot,
|
||||
translation_y: -yHot,
|
||||
});
|
||||
}
|
||||
|
||||
_updateSpriteTexture() {
|
||||
|
@ -4,7 +4,6 @@ const { Atk, Clutter, Gio, GLib,
|
||||
const Main = imports.ui.main;
|
||||
const MessageTray = imports.ui.messageTray;
|
||||
|
||||
const Calendar = imports.ui.calendar;
|
||||
const Util = imports.misc.util;
|
||||
|
||||
var MESSAGE_ANIMATION_TIME = 100;
|
||||
@ -285,12 +284,12 @@ var LabelExpanderLayout = GObject.registerClass({
|
||||
return [min, nat];
|
||||
}
|
||||
|
||||
vfunc_allocate(container, box, flags) {
|
||||
vfunc_allocate(container, box) {
|
||||
for (let i = 0; i < container.get_n_children(); i++) {
|
||||
let child = container.get_child_at_index(i);
|
||||
|
||||
if (child.visible)
|
||||
child.allocate(box, flags);
|
||||
child.allocate(box);
|
||||
}
|
||||
|
||||
}
|
||||
@ -572,7 +571,6 @@ var MessageListSection = GObject.registerClass({
|
||||
Main.sessionMode.disconnect(id);
|
||||
});
|
||||
|
||||
this._date = new Date();
|
||||
this._empty = true;
|
||||
this._canClear = false;
|
||||
this._sync();
|
||||
@ -598,13 +596,6 @@ var MessageListSection = GObject.registerClass({
|
||||
return true;
|
||||
}
|
||||
|
||||
setDate(date) {
|
||||
if (Calendar.sameDay(date, this._date))
|
||||
return;
|
||||
this._date = date;
|
||||
this._sync();
|
||||
}
|
||||
|
||||
addMessage(message, animate) {
|
||||
this.addMessageAtIndex(message, -1, animate);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported NotificationPolicy, NotificationGenericPolicy,
|
||||
NotificationApplicationPolicy, Source, SourceActor, SourceActorWithLabel,
|
||||
NotificationApplicationPolicy, Source, SourceActor,
|
||||
SystemNotificationSource, MessageTray */
|
||||
|
||||
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||
@ -162,6 +162,10 @@ var NotificationPolicy = GObject.registerClass({
|
||||
this.run_dispose();
|
||||
}
|
||||
|
||||
get enable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
get enableSound() {
|
||||
return true;
|
||||
}
|
||||
@ -651,77 +655,6 @@ class SourceActor extends St.Widget {
|
||||
}
|
||||
});
|
||||
|
||||
var SourceActorWithLabel = GObject.registerClass(
|
||||
class SourceActorWithLabel extends SourceActor {
|
||||
_init(source, size) {
|
||||
super._init(source, size);
|
||||
|
||||
this._counterLabel = new St.Label({ x_align: Clutter.ActorAlign.CENTER,
|
||||
x_expand: true,
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
y_expand: true });
|
||||
|
||||
this._counterBin = new St.Bin({ style_class: 'summary-source-counter',
|
||||
child: this._counterLabel,
|
||||
layout_manager: new Clutter.BinLayout() });
|
||||
this._counterBin.hide();
|
||||
|
||||
this._counterBin.connect('style-changed', () => {
|
||||
let themeNode = this._counterBin.get_theme_node();
|
||||
this._counterBin.translation_x = themeNode.get_length('-shell-counter-overlap-x');
|
||||
this._counterBin.translation_y = themeNode.get_length('-shell-counter-overlap-y');
|
||||
});
|
||||
|
||||
this.add_actor(this._counterBin);
|
||||
|
||||
this._countUpdatedId = this._source.connect('notify::count', this._updateCount.bind(this));
|
||||
this._updateCount();
|
||||
|
||||
this.connect('destroy', () => {
|
||||
this._source.disconnect(this._countUpdatedId);
|
||||
});
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
let [, , naturalWidth, naturalHeight] = this._counterBin.get_preferred_size();
|
||||
let direction = this.get_text_direction();
|
||||
|
||||
if (direction == Clutter.TextDirection.LTR) {
|
||||
// allocate on the right in LTR
|
||||
childBox.x1 = box.x2 - naturalWidth;
|
||||
childBox.x2 = box.x2;
|
||||
} else {
|
||||
// allocate on the left in RTL
|
||||
childBox.x1 = 0;
|
||||
childBox.x2 = naturalWidth;
|
||||
}
|
||||
|
||||
childBox.y1 = box.y2 - naturalHeight;
|
||||
childBox.y2 = box.y2;
|
||||
|
||||
this._counterBin.allocate(childBox, flags);
|
||||
}
|
||||
|
||||
_updateCount() {
|
||||
if (this._actorDestroyed)
|
||||
return;
|
||||
|
||||
this._counterBin.visible = this._source.countVisible;
|
||||
|
||||
let text;
|
||||
if (this._source.count < 100)
|
||||
text = this._source.count.toString();
|
||||
else
|
||||
text = String.fromCharCode(0x22EF); // midline horizontal ellipsis
|
||||
|
||||
this._counterLabel.set_text(text);
|
||||
}
|
||||
});
|
||||
|
||||
var Source = GObject.registerClass({
|
||||
Properties: {
|
||||
'count': GObject.ParamSpec.int(
|
||||
|
@ -2,7 +2,6 @@
|
||||
const { Gio, GObject, Shell, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Calendar = imports.ui.calendar;
|
||||
const Main = imports.ui.main;
|
||||
const MessageList = imports.ui.messageList;
|
||||
|
||||
@ -173,6 +172,11 @@ var MprisPlayer = class MprisPlayer {
|
||||
if (!this._mprisProxy.g_name_owner)
|
||||
this._close();
|
||||
});
|
||||
// It is possible for the bus to disappear before the previous signal
|
||||
// is connected, so we must ensure that the bus still exists at this
|
||||
// point.
|
||||
if (!this._mprisProxy.g_name_owner)
|
||||
this._close();
|
||||
}
|
||||
|
||||
_onPlayerProxyReady() {
|
||||
@ -247,10 +251,6 @@ class MediaSection extends MessageList.MessageListSection {
|
||||
this._onProxyReady.bind(this));
|
||||
}
|
||||
|
||||
_shouldShow() {
|
||||
return !this.empty && Calendar.isToday(this._date);
|
||||
}
|
||||
|
||||
get allowed() {
|
||||
return !Main.sessionMode.isGreeter;
|
||||
}
|
||||
|
@ -10,13 +10,6 @@ const Params = imports.misc.params;
|
||||
|
||||
const { loadInterfaceXML } = imports.misc.fileUtils;
|
||||
|
||||
// Should really be defined in Gio.js
|
||||
const BusIface = loadInterfaceXML('org.freedesktop.DBus');
|
||||
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
|
||||
function Bus() {
|
||||
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
|
||||
}
|
||||
|
||||
const FdoNotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
|
||||
|
||||
var NotificationClosedReason = {
|
||||
@ -49,9 +42,7 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
||||
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
|
||||
|
||||
this._sources = [];
|
||||
this._senderToPid = {};
|
||||
this._notifications = {};
|
||||
this._busProxy = new Bus();
|
||||
|
||||
this._nextNotificationId = 1;
|
||||
|
||||
@ -116,12 +107,9 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
||||
//
|
||||
// If no existing source is found, a new source is created as long as
|
||||
// pid is provided.
|
||||
//
|
||||
// Either a pid or ndata.notification is needed to retrieve or
|
||||
// create a source.
|
||||
_getSource(title, pid, ndata, sender) {
|
||||
if (!pid && !(ndata && ndata.notification))
|
||||
return null;
|
||||
throw new Error('Either a pid or ndata.notification is needed');
|
||||
|
||||
// We use notification's source for the notifications we still have
|
||||
// around that are getting replaced because we don't keep sources
|
||||
@ -218,42 +206,10 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
|
||||
this._notifications[id] = ndata;
|
||||
|
||||
let sender = invocation.get_sender();
|
||||
let pid = this._senderToPid[sender];
|
||||
let pid = hints['sender-pid'];
|
||||
|
||||
let source = this._getSource(appName, pid, ndata, sender, null);
|
||||
|
||||
if (source) {
|
||||
this._notifyForSource(source, ndata);
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
|
||||
if (replacesId) {
|
||||
// There's already a pending call to GetConnectionUnixProcessID,
|
||||
// which will see the new notification data when it finishes,
|
||||
// so we don't have to do anything.
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
|
||||
this._busProxy.GetConnectionUnixProcessIDRemote(sender, (result, excp) => {
|
||||
// The app may have updated or removed the notification
|
||||
ndata = this._notifications[id];
|
||||
if (!ndata)
|
||||
return;
|
||||
|
||||
if (excp) {
|
||||
logError(excp, 'Call to GetConnectionUnixProcessID failed');
|
||||
return;
|
||||
}
|
||||
|
||||
[pid] = result;
|
||||
source = this._getSource(appName, pid, ndata, sender, null);
|
||||
|
||||
this._senderToPid[sender] = pid;
|
||||
source.connect('destroy', () => {
|
||||
delete this._senderToPid[sender];
|
||||
});
|
||||
this._notifyForSource(source, ndata);
|
||||
});
|
||||
this._notifyForSource(source, ndata);
|
||||
|
||||
return invocation.return_value(GLib.Variant.new('(u)', [id]));
|
||||
}
|
||||
@ -417,12 +373,11 @@ var FdoNotificationDaemonSource = GObject.registerClass(
|
||||
class FdoNotificationDaemonSource extends MessageTray.Source {
|
||||
_init(title, pid, sender, appId) {
|
||||
this.pid = pid;
|
||||
this.initialTitle = title;
|
||||
this.app = this._getApp(appId);
|
||||
|
||||
super._init(title);
|
||||
|
||||
this.initialTitle = title;
|
||||
|
||||
if (this.app)
|
||||
this.title = this.app.get_name();
|
||||
else
|
||||
@ -470,19 +425,20 @@ class FdoNotificationDaemonSource extends MessageTray.Source {
|
||||
}
|
||||
|
||||
_getApp(appId) {
|
||||
const appSys = Shell.AppSystem.get_default();
|
||||
let app;
|
||||
|
||||
app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
|
||||
if (app != null)
|
||||
return app;
|
||||
|
||||
if (appId) {
|
||||
app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId));
|
||||
if (app != null)
|
||||
return app;
|
||||
}
|
||||
if (appId)
|
||||
app = appSys.lookup_app('%s.desktop'.format(appId));
|
||||
|
||||
return null;
|
||||
if (!app)
|
||||
app = appSys.lookup_app('%s.desktop'.format(this.initialTitle));
|
||||
|
||||
return app;
|
||||
}
|
||||
|
||||
setTitle(title) {
|
||||
|
@ -4,6 +4,10 @@
|
||||
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
// Time for initial animation going into Overview mode;
|
||||
// this is defined here to make it available in imports.
|
||||
var ANIMATION_TIME = 250;
|
||||
|
||||
const Background = imports.ui.background;
|
||||
const DND = imports.ui.dnd;
|
||||
const LayoutManager = imports.ui.layout;
|
||||
@ -14,9 +18,6 @@ const OverviewControls = imports.ui.overviewControls;
|
||||
const Params = imports.misc.params;
|
||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
|
||||
// Time for initial animation going into Overview mode
|
||||
var ANIMATION_TIME = 250;
|
||||
|
||||
// Must be less than ANIMATION_TIME, since we switch to
|
||||
// or from the overview completely after ANIMATION_TIME,
|
||||
// and don't want the shading animation to get cut off
|
||||
@ -244,11 +245,11 @@ var Overview = class {
|
||||
_unshadeBackgrounds() {
|
||||
let backgrounds = this._backgroundGroup.get_children();
|
||||
for (let i = 0; i < backgrounds.length; i++) {
|
||||
backgrounds[i].ease_property('brightness', 1.0, {
|
||||
backgrounds[i].ease_property('@content.brightness', 1.0, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
backgrounds[i].ease_property('vignette-sharpness', 0.0, {
|
||||
backgrounds[i].ease_property('@content.vignette-sharpness', 0.0, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
@ -258,14 +259,16 @@ var Overview = class {
|
||||
_shadeBackgrounds() {
|
||||
let backgrounds = this._backgroundGroup.get_children();
|
||||
for (let i = 0; i < backgrounds.length; i++) {
|
||||
backgrounds[i].ease_property('brightness', Lightbox.VIGNETTE_BRIGHTNESS, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
backgrounds[i].ease_property('vignette-sharpness', Lightbox.VIGNETTE_SHARPNESS, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
backgrounds[i].ease_property('@content.brightness',
|
||||
Lightbox.VIGNETTE_BRIGHTNESS, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
backgrounds[i].ease_property('@content.vignette-sharpness',
|
||||
Lightbox.VIGNETTE_SHARPNESS, {
|
||||
duration: SHADE_ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,19 +440,19 @@ var Overview = class {
|
||||
this.emit('windows-restacked', stackIndices);
|
||||
}
|
||||
|
||||
beginItemDrag(_source) {
|
||||
this.emit('item-drag-begin');
|
||||
beginItemDrag(source) {
|
||||
this.emit('item-drag-begin', source);
|
||||
this._inItemDrag = true;
|
||||
}
|
||||
|
||||
cancelledItemDrag(_source) {
|
||||
this.emit('item-drag-cancelled');
|
||||
cancelledItemDrag(source) {
|
||||
this.emit('item-drag-cancelled', source);
|
||||
}
|
||||
|
||||
endItemDrag(_source) {
|
||||
endItemDrag(source) {
|
||||
if (!this._inItemDrag)
|
||||
return;
|
||||
this.emit('item-drag-end');
|
||||
this.emit('item-drag-end', source);
|
||||
this._inItemDrag = false;
|
||||
}
|
||||
|
||||
@ -575,7 +578,7 @@ var Overview = class {
|
||||
this._activationTime = GLib.get_monotonic_time() / GLib.USEC_PER_SEC;
|
||||
|
||||
Meta.disable_unredirect_for_display(global.display);
|
||||
this.viewSelector.show();
|
||||
this.viewSelector.animateToOverview();
|
||||
|
||||
this._overview.opacity = 0;
|
||||
this._overview.ease({
|
||||
|
@ -8,8 +8,9 @@ const Main = imports.ui.main;
|
||||
const Params = imports.misc.params;
|
||||
const ViewSelector = imports.ui.viewSelector;
|
||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||
const Overview = imports.ui.overview;
|
||||
|
||||
var SIDE_CONTROLS_ANIMATION_TIME = 160;
|
||||
var SIDE_CONTROLS_ANIMATION_TIME = Overview.ANIMATION_TIME;
|
||||
|
||||
function getRtlSlideDirection(direction, actor) {
|
||||
let rtl = actor.text_direction == Clutter.TextDirection.RTL;
|
||||
@ -51,7 +52,7 @@ var SlideLayout = GObject.registerClass({
|
||||
return [minWidth, natWidth];
|
||||
}
|
||||
|
||||
vfunc_allocate(container, box, flags) {
|
||||
vfunc_allocate(container, box) {
|
||||
let child = container.get_first_child();
|
||||
|
||||
let availWidth = Math.round(box.x2 - box.x1);
|
||||
@ -72,7 +73,7 @@ var SlideLayout = GObject.registerClass({
|
||||
actorBox.y1 = box.y1;
|
||||
actorBox.y2 = actorBox.y1 + availHeight;
|
||||
|
||||
child.allocate(actorBox, flags);
|
||||
child.allocate(actorBox);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
@ -394,10 +395,10 @@ class DashSpacer extends St.Widget {
|
||||
});
|
||||
|
||||
var ControlsLayout = GObject.registerClass({
|
||||
Signals: { 'allocation-changed': { flags: GObject.SignalFlags.RUN_LAST } },
|
||||
Signals: { 'allocation-changed': {} },
|
||||
}, class ControlsLayout extends Clutter.BinLayout {
|
||||
vfunc_allocate(container, box, flags) {
|
||||
super.vfunc_allocate(container, box, flags);
|
||||
vfunc_allocate(container, box) {
|
||||
super.vfunc_allocate(container, box);
|
||||
this.emit('allocation-changed');
|
||||
}
|
||||
});
|
||||
@ -422,6 +423,7 @@ class ControlsManager extends St.Widget {
|
||||
let activeWorkspaceIndex = workspaceManager.get_active_workspace_index();
|
||||
|
||||
this._workspaceAdjustment = new St.Adjustment({
|
||||
actor: this,
|
||||
value: activeWorkspaceIndex,
|
||||
lower: 0,
|
||||
page_increment: 1,
|
||||
@ -453,8 +455,6 @@ class ControlsManager extends St.Widget {
|
||||
this._group.add_child(this.viewSelector);
|
||||
this._group.add_actor(this._thumbnailsSlider);
|
||||
|
||||
layout.connect('allocation-changed', this._updateWorkspacesGeometry.bind(this));
|
||||
|
||||
Main.overview.connect('showing', this._updateSpacerVisibility.bind(this));
|
||||
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
@ -477,26 +477,6 @@ class ControlsManager extends St.Widget {
|
||||
this._workspaceAdjustment.value = activeIndex;
|
||||
}
|
||||
|
||||
_updateWorkspacesGeometry() {
|
||||
let [x, y] = this.get_transformed_position();
|
||||
let [width, height] = this.get_transformed_size();
|
||||
let geometry = { x, y, width, height };
|
||||
|
||||
let spacing = this.get_theme_node().get_length('spacing');
|
||||
let dashWidth = this._dashSlider.getVisibleWidth() + spacing;
|
||||
let thumbnailsWidth = this._thumbnailsSlider.getNonExpandedWidth() + spacing;
|
||||
|
||||
geometry.width -= dashWidth;
|
||||
geometry.width -= thumbnailsWidth;
|
||||
|
||||
if (this.get_text_direction() == Clutter.TextDirection.LTR)
|
||||
geometry.x += dashWidth;
|
||||
else
|
||||
geometry.x += thumbnailsWidth;
|
||||
|
||||
this.viewSelector.setWorkspacesFullGeometry(geometry);
|
||||
}
|
||||
|
||||
_setVisibility() {
|
||||
// Ignore the case when we're leaving the overview, since
|
||||
// actors will be made visible again when entering the overview
|
||||
|
161
js/ui/padOsd.js
161
js/ui/padOsd.js
@ -2,7 +2,7 @@
|
||||
/* exported PadOsd, PadOsdService */
|
||||
|
||||
const { Atk, Clutter, GDesktopEnums, Gio,
|
||||
GLib, GObject, Gtk, Meta, Rsvg, St } = imports.gi;
|
||||
GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi;
|
||||
const Signals = imports.signals;
|
||||
|
||||
const Main = imports.ui.main;
|
||||
@ -329,6 +329,7 @@ var PadDiagram = GObject.registerClass({
|
||||
|
||||
this._imagePath = imagePath;
|
||||
this._handle = this._composeStyledDiagram();
|
||||
this._initLabels();
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
@ -343,6 +344,26 @@ var PadDiagram = GObject.registerClass({
|
||||
this.add_actor(actor);
|
||||
}
|
||||
|
||||
_initLabels() {
|
||||
let i = 0;
|
||||
for (i = 0; ; i++) {
|
||||
if (!this._addLabel(Meta.PadActionType.BUTTON, i))
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; ; i++) {
|
||||
if (!this._addLabel(Meta.PadActionType.RING, i, CW) ||
|
||||
!this._addLabel(Meta.PadActionType.RING, i, CCW))
|
||||
break;
|
||||
}
|
||||
|
||||
for (i = 0; ; i++) {
|
||||
if (!this._addLabel(Meta.PadActionType.STRIP, i, UP) ||
|
||||
!this._addLabel(Meta.PadActionType.STRIP, i, DOWN))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
_wrappingSvgHeader() {
|
||||
return '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
|
||||
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
|
||||
@ -362,10 +383,8 @@ var PadDiagram = GObject.registerClass({
|
||||
|
||||
for (let i = 0; i < this._activeButtons.length; i++) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
|
||||
css += '.%s {'.format(ch);
|
||||
css += ' stroke: %s !important;'.format(ACTIVE_COLOR);
|
||||
css += ' fill: %s !important;'.format(ACTIVE_COLOR);
|
||||
css += '}';
|
||||
css += '.%s.Leader { stroke: %s !important; }'.format(ch, ACTIVE_COLOR);
|
||||
css += '.%s.Button { stroke: %s !important; fill: %s !important; }'.format(ch, ACTIVE_COLOR, ACTIVE_COLOR);
|
||||
}
|
||||
|
||||
return css;
|
||||
@ -390,9 +409,6 @@ var PadDiagram = GObject.registerClass({
|
||||
}
|
||||
|
||||
_updateDiagramScale() {
|
||||
if (this._handle == null)
|
||||
return;
|
||||
|
||||
[this._actorWidth, this._actorHeight] = this.get_size();
|
||||
let dimensions = this._handle.get_dimensions();
|
||||
let scaleX = this._actorWidth / dimensions.width;
|
||||
@ -405,6 +421,11 @@ var PadDiagram = GObject.registerClass({
|
||||
let [, natWidth] = child.get_preferred_width(natHeight);
|
||||
let childBox = new Clutter.ActorBox();
|
||||
|
||||
// I miss Cairo.Matrix
|
||||
let dimensions = this._handle.get_dimensions();
|
||||
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
|
||||
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
|
||||
|
||||
if (direction == LTR) {
|
||||
childBox.x1 = x;
|
||||
childBox.x2 = x + natWidth;
|
||||
@ -415,22 +436,23 @@ var PadDiagram = GObject.registerClass({
|
||||
|
||||
childBox.y1 = y - natHeight / 2;
|
||||
childBox.y2 = y + natHeight / 2;
|
||||
child.allocate(childBox, 0);
|
||||
child.allocate(childBox);
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
super.vfunc_allocate(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
super.vfunc_allocate(box);
|
||||
if (this._handle === null)
|
||||
return;
|
||||
|
||||
this._updateDiagramScale();
|
||||
|
||||
for (let i = 0; i < this._labels.length; i++) {
|
||||
let [label, action, idx, dir] = this._labels[i];
|
||||
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
|
||||
const { label, x, y, arrangement } = this._labels[i];
|
||||
this._allocateChild(label, x, y, arrangement);
|
||||
}
|
||||
|
||||
if (this._editorActor && this._curEdited) {
|
||||
let [label_, action, idx, dir] = this._curEdited;
|
||||
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
|
||||
const { x, y, arrangement } = this._curEdited;
|
||||
this._allocateChild(this._editorActor, x, y, arrangement);
|
||||
}
|
||||
}
|
||||
@ -457,17 +479,6 @@ var PadDiagram = GObject.registerClass({
|
||||
cr.$dispose();
|
||||
}
|
||||
|
||||
_transformPoint(x, y) {
|
||||
if (this._handle == null || this._scale == null)
|
||||
return [x, y];
|
||||
|
||||
// I miss Cairo.Matrix
|
||||
let dimensions = this._handle.get_dimensions();
|
||||
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
|
||||
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
|
||||
return [Math.round(x), Math.round(y)];
|
||||
}
|
||||
|
||||
_getItemLabelCoords(labelName, leaderName) {
|
||||
if (this._handle == null)
|
||||
return [false];
|
||||
@ -495,44 +506,39 @@ var PadDiagram = GObject.registerClass({
|
||||
pos.y = this._imageHeight - pos.y;
|
||||
}
|
||||
|
||||
let [x, y] = this._transformPoint(pos.x, pos.y);
|
||||
|
||||
return [true, x, y, direction];
|
||||
return [true, pos.x, pos.y, direction];
|
||||
}
|
||||
|
||||
getButtonLabelCoords(button) {
|
||||
_getButtonLabels(button) {
|
||||
let ch = String.fromCharCode('A'.charCodeAt() + button);
|
||||
let labelName = 'Label%s'.format(ch);
|
||||
let leaderName = 'Leader%s'.format(ch);
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
return [labelName, leaderName];
|
||||
}
|
||||
|
||||
getRingLabelCoords(number, dir) {
|
||||
_getRingLabels(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == CW ? 'CW' : 'CCW';
|
||||
let labelName = 'LabelRing%s%s'.format(numStr, dirStr);
|
||||
let leaderName = 'LeaderRing%s%s'.format(numStr, dirStr);
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
return [labelName, leaderName];
|
||||
}
|
||||
|
||||
getStripLabelCoords(number, dir) {
|
||||
_getStripLabels(number, dir) {
|
||||
let numStr = number > 0 ? (number + 1).toString() : '';
|
||||
let dirStr = dir == UP ? 'Up' : 'Down';
|
||||
let labelName = 'LabelStrip%s%s'.format(numStr, dirStr);
|
||||
let leaderName = 'LeaderStrip%s%s'.format(numStr, dirStr);
|
||||
|
||||
return this._getItemLabelCoords(labelName, leaderName);
|
||||
return [labelName, leaderName];
|
||||
}
|
||||
|
||||
getLabelCoords(action, idx, dir) {
|
||||
_getLabelCoords(action, idx, dir) {
|
||||
if (action == Meta.PadActionType.BUTTON)
|
||||
return this.getButtonLabelCoords(idx);
|
||||
return this._getItemLabelCoords(...this._getButtonLabels(idx));
|
||||
else if (action == Meta.PadActionType.RING)
|
||||
return this.getRingLabelCoords(idx, dir);
|
||||
return this._getItemLabelCoords(...this._getRingLabels(idx, dir));
|
||||
else if (action == Meta.PadActionType.STRIP)
|
||||
return this.getStripLabelCoords(idx, dir);
|
||||
return this._getItemLabelCoords(...this._getStripLabels(idx, dir));
|
||||
|
||||
return [false];
|
||||
}
|
||||
@ -557,26 +563,30 @@ var PadDiagram = GObject.registerClass({
|
||||
this._invalidateSvg();
|
||||
}
|
||||
|
||||
addLabel(label, type, idx, dir) {
|
||||
this._labels.push([label, type, idx, dir]);
|
||||
_addLabel(action, idx, dir) {
|
||||
let [found, x, y, arrangement] = this._getLabelCoords(action, idx, dir);
|
||||
if (!found)
|
||||
return false;
|
||||
|
||||
let label = new St.Label();
|
||||
this._labels.push({ label, action, idx, dir, x, y, arrangement });
|
||||
this.add_actor(label);
|
||||
return true;
|
||||
}
|
||||
|
||||
updateLabels(getText) {
|
||||
for (let i = 0; i < this._labels.length; i++) {
|
||||
let [label, action, idx, dir] = this._labels[i];
|
||||
const { label, action, idx, dir } = this._labels[i];
|
||||
let str = getText(action, idx, dir);
|
||||
label.set_text(str);
|
||||
}
|
||||
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
_applyLabel(label, action, idx, dir, str) {
|
||||
if (str != null) {
|
||||
if (str !== null)
|
||||
label.set_text(str);
|
||||
|
||||
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
|
||||
this._allocateChild(label, x, y, arrangement);
|
||||
}
|
||||
label.show();
|
||||
}
|
||||
|
||||
@ -584,18 +594,20 @@ var PadDiagram = GObject.registerClass({
|
||||
this._editorActor.hide();
|
||||
|
||||
if (this._prevEdited) {
|
||||
let [label, action, idx, dir] = this._prevEdited;
|
||||
const { label, action, idx, dir } = this._prevEdited;
|
||||
this._applyLabel(label, action, idx, dir, str);
|
||||
this._prevEdited = null;
|
||||
}
|
||||
|
||||
if (this._curEdited) {
|
||||
let [label, action, idx, dir] = this._curEdited;
|
||||
const { label, action, idx, dir } = this._curEdited;
|
||||
this._applyLabel(label, action, idx, dir, str);
|
||||
if (continues)
|
||||
this._prevEdited = this._curEdited;
|
||||
this._curEdited = null;
|
||||
}
|
||||
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
startEdition(action, idx, dir) {
|
||||
@ -605,21 +617,19 @@ var PadDiagram = GObject.registerClass({
|
||||
return;
|
||||
|
||||
for (let i = 0; i < this._labels.length; i++) {
|
||||
let [label, itemAction, itemIdx, itemDir] = this._labels[i];
|
||||
if (action == itemAction && idx == itemIdx && dir == itemDir) {
|
||||
if (action == this._labels[i].action &&
|
||||
idx == this._labels[i].idx && dir == this._labels[i].dir) {
|
||||
this._curEdited = this._labels[i];
|
||||
editedLabel = label;
|
||||
editedLabel = this._curEdited.label;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (this._curEdited == null)
|
||||
return;
|
||||
let [found] = this.getLabelCoords(action, idx, dir);
|
||||
if (!found)
|
||||
return;
|
||||
this._editorActor.show();
|
||||
editedLabel.hide();
|
||||
this.queue_relayout();
|
||||
}
|
||||
});
|
||||
|
||||
@ -693,6 +703,7 @@ var PadOsd = GObject.registerClass({
|
||||
|
||||
this._titleLabel = new St.Label({ style: 'font-side: larger; font-weight: bold;',
|
||||
x_align: Clutter.ActorAlign.CENTER });
|
||||
this._titleLabel.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE);
|
||||
this._titleLabel.clutter_text.set_text(padDevice.get_device_name());
|
||||
labelBox.add_actor(this._titleLabel);
|
||||
|
||||
@ -710,31 +721,7 @@ var PadOsd = GObject.registerClass({
|
||||
x_expand: true,
|
||||
y_expand: true });
|
||||
this.add_actor(this._padDiagram);
|
||||
|
||||
// FIXME: Fix num buttons.
|
||||
let i = 0;
|
||||
for (i = 0; i < 50; i++) {
|
||||
let [found] = this._padDiagram.getButtonLabelCoords(i);
|
||||
if (!found)
|
||||
break;
|
||||
this._createLabel(Meta.PadActionType.BUTTON, i);
|
||||
}
|
||||
|
||||
for (i = 0; i < padDevice.get_n_rings(); i++) {
|
||||
let [found] = this._padDiagram.getRingLabelCoords(i, CW);
|
||||
if (!found)
|
||||
break;
|
||||
this._createLabel(Meta.PadActionType.RING, i, CW);
|
||||
this._createLabel(Meta.PadActionType.RING, i, CCW);
|
||||
}
|
||||
|
||||
for (i = 0; i < padDevice.get_n_strips(); i++) {
|
||||
let [found] = this._padDiagram.getStripLabelCoords(i, UP);
|
||||
if (!found)
|
||||
break;
|
||||
this._createLabel(Meta.PadActionType.STRIP, i, UP);
|
||||
this._createLabel(Meta.PadActionType.STRIP, i, DOWN);
|
||||
}
|
||||
this._updateActionLabels();
|
||||
|
||||
let buttonBox = new St.Widget({ layout_manager: new Clutter.BinLayout(),
|
||||
x_expand: true,
|
||||
@ -787,11 +774,6 @@ var PadOsd = GObject.registerClass({
|
||||
return str ? str : _("None");
|
||||
}
|
||||
|
||||
_createLabel(type, number, dir) {
|
||||
let label = new St.Label({ text: this._getActionText(type, number) });
|
||||
this._padDiagram.addLabel(label, type, number, dir);
|
||||
}
|
||||
|
||||
_updateActionLabels() {
|
||||
this._padDiagram.updateLabels(this._getActionText.bind(this));
|
||||
}
|
||||
@ -867,8 +849,7 @@ var PadOsd = GObject.registerClass({
|
||||
this._tipLabel.set_text(_("Press any key to exit"));
|
||||
}
|
||||
|
||||
this._titleLabel.clutter_text.set_markup(
|
||||
'<span size="larger"><b>%s</b></span>'.format(title));
|
||||
this._titleLabel.set_text(title);
|
||||
}
|
||||
|
||||
_isEditedAction(type, number, dir) {
|
||||
|
@ -120,6 +120,10 @@ var PageIndicators = GObject.registerClass({
|
||||
for (let i = 0; i < children.length; i++)
|
||||
this._updateIndicator(children[i], i);
|
||||
}
|
||||
|
||||
get nPages() {
|
||||
return this._nPages;
|
||||
}
|
||||
});
|
||||
|
||||
var AnimatedPageIndicators = GObject.registerClass(
|
||||
|
@ -214,7 +214,10 @@ var AppMenuButton = GObject.registerClass({
|
||||
this._onIconThemeChanged.bind(this));
|
||||
|
||||
let iconEffect = new Clutter.DesaturateEffect();
|
||||
this._iconBox = new St.Bin({ style_class: 'app-menu-icon' });
|
||||
this._iconBox = new St.Bin({
|
||||
style_class: 'app-menu-icon',
|
||||
y_align: Clutter.ActorAlign.CENTER,
|
||||
});
|
||||
this._iconBox.add_effect(iconEffect);
|
||||
this._container.add_actor(this._iconBox);
|
||||
|
||||
@ -672,7 +675,7 @@ class PanelCorner extends St.DrawingArea {
|
||||
let borderWidth = node.get_length('-panel-corner-border-width');
|
||||
|
||||
this.set_size(cornerRadius, borderWidth + cornerRadius);
|
||||
this.set_anchor_point(0, borderWidth);
|
||||
this.translation_y = -borderWidth;
|
||||
}
|
||||
});
|
||||
|
||||
@ -839,8 +842,8 @@ class Panel extends St.Widget {
|
||||
return [0, 0];
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let allocWidth = box.x2 - box.x1;
|
||||
let allocHeight = box.y2 - box.y1;
|
||||
@ -876,13 +879,13 @@ class Panel extends St.Widget {
|
||||
childBox.x2 = Math.min(Math.floor(sideWidth),
|
||||
leftNaturalWidth);
|
||||
}
|
||||
this._leftBox.allocate(childBox, flags);
|
||||
this._leftBox.allocate(childBox);
|
||||
|
||||
childBox.x1 = Math.ceil(sideWidth);
|
||||
childBox.y1 = 0;
|
||||
childBox.x2 = childBox.x1 + centerWidth;
|
||||
childBox.y2 = allocHeight;
|
||||
this._centerBox.allocate(childBox, flags);
|
||||
this._centerBox.allocate(childBox);
|
||||
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = allocHeight;
|
||||
@ -896,7 +899,7 @@ class Panel extends St.Widget {
|
||||
0);
|
||||
childBox.x2 = allocWidth;
|
||||
}
|
||||
this._rightBox.allocate(childBox, flags);
|
||||
this._rightBox.allocate(childBox);
|
||||
|
||||
let cornerWidth, cornerHeight;
|
||||
|
||||
@ -906,7 +909,7 @@ class Panel extends St.Widget {
|
||||
childBox.x2 = cornerWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
childBox.y2 = allocHeight + cornerHeight;
|
||||
this._leftCorner.allocate(childBox, flags);
|
||||
this._leftCorner.allocate(childBox);
|
||||
|
||||
[, cornerWidth] = this._rightCorner.get_preferred_width(-1);
|
||||
[, cornerHeight] = this._rightCorner.get_preferred_height(-1);
|
||||
@ -914,7 +917,7 @@ class Panel extends St.Widget {
|
||||
childBox.x2 = allocWidth;
|
||||
childBox.y1 = allocHeight;
|
||||
childBox.y2 = allocHeight + cornerHeight;
|
||||
this._rightCorner.allocate(childBox, flags);
|
||||
this._rightCorner.allocate(childBox);
|
||||
}
|
||||
|
||||
_tryDragWindow(event) {
|
||||
|
@ -59,8 +59,8 @@ class ButtonBox extends St.Widget {
|
||||
return [0, 0];
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let child = this.get_first_child();
|
||||
if (!child)
|
||||
@ -83,7 +83,7 @@ class ButtonBox extends St.Widget {
|
||||
childBox.y1 = 0;
|
||||
childBox.y2 = availHeight;
|
||||
|
||||
child.allocate(childBox, flags);
|
||||
child.allocate(childBox);
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
|
@ -1,7 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported ScreenshotService */
|
||||
|
||||
const { Clutter, Graphene, Gio, GObject, GLib, Meta, Shell, St } = imports.gi;
|
||||
const { Clutter, Gio, GObject, GLib, Meta, Shell, St } = imports.gi;
|
||||
|
||||
const GrabHelper = imports.ui.grabHelper;
|
||||
const Lightbox = imports.ui.lightbox;
|
||||
@ -37,7 +37,9 @@ var ScreenshotService = class {
|
||||
|
||||
let sender = invocation.get_sender();
|
||||
if (this._screenShooter.has(sender) || lockedDown) {
|
||||
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
|
||||
invocation.return_error_literal(
|
||||
Gio.IOErrorEnum, Gio.IOErrorEnum.BUSY,
|
||||
'There is an ongoing operation for this sender');
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -259,15 +261,13 @@ var ScreenshotService = class {
|
||||
}
|
||||
|
||||
async PickColorAsync(params, invocation) {
|
||||
let pickPixel = new PickPixel();
|
||||
const screenshot = this._createScreenshot(invocation, false);
|
||||
if (!screenshot)
|
||||
return;
|
||||
|
||||
const pickPixel = new PickPixel(screenshot);
|
||||
try {
|
||||
const coords = await pickPixel.pickAsync();
|
||||
|
||||
let screenshot = this._createScreenshot(invocation, false);
|
||||
if (!screenshot)
|
||||
return;
|
||||
|
||||
const [color] = await screenshot.pick_color(coords.x, coords.y);
|
||||
const color = await pickPixel.pickAsync();
|
||||
const { red, green, blue } = color;
|
||||
const retval = GLib.Variant.new('(a{sv})', [{
|
||||
color: GLib.Variant.new('(ddd)', [
|
||||
@ -276,12 +276,13 @@ var ScreenshotService = class {
|
||||
blue / 255.0,
|
||||
]),
|
||||
}]);
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
invocation.return_value(retval);
|
||||
} catch (e) {
|
||||
invocation.return_error_literal(
|
||||
Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
|
||||
'Operation was cancelled');
|
||||
} finally {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -379,12 +380,145 @@ class SelectArea extends St.Widget {
|
||||
}
|
||||
});
|
||||
|
||||
var RecolorEffect = GObject.registerClass({
|
||||
Properties: {
|
||||
color: GObject.ParamSpec.boxed(
|
||||
'color', 'color', 'replacement color',
|
||||
GObject.ParamFlags.WRITABLE,
|
||||
Clutter.Color.$gtype),
|
||||
chroma: GObject.ParamSpec.boxed(
|
||||
'chroma', 'chroma', 'color to replace',
|
||||
GObject.ParamFlags.WRITABLE,
|
||||
Clutter.Color.$gtype),
|
||||
threshold: GObject.ParamSpec.float(
|
||||
'threshold', 'threshold', 'threshold',
|
||||
GObject.ParamFlags.WRITABLE,
|
||||
0.0, 1.0, 0.0),
|
||||
smoothing: GObject.ParamSpec.float(
|
||||
'smoothing', 'smoothing', 'smoothing',
|
||||
GObject.ParamFlags.WRITABLE,
|
||||
0.0, 1.0, 0.0),
|
||||
},
|
||||
}, class RecolorEffect extends Shell.GLSLEffect {
|
||||
_init(params) {
|
||||
this._color = new Clutter.Color();
|
||||
this._chroma = new Clutter.Color();
|
||||
this._threshold = 0;
|
||||
this._smoothing = 0;
|
||||
|
||||
this._colorLocation = null;
|
||||
this._chromaLocation = null;
|
||||
this._thresholdLocation = null;
|
||||
this._smoothingLocation = null;
|
||||
|
||||
super._init(params);
|
||||
|
||||
this._colorLocation = this.get_uniform_location('recolor_color');
|
||||
this._chromaLocation = this.get_uniform_location('chroma_color');
|
||||
this._thresholdLocation = this.get_uniform_location('threshold');
|
||||
this._smoothingLocation = this.get_uniform_location('smoothing');
|
||||
|
||||
this._updateColorUniform(this._colorLocation, this._color);
|
||||
this._updateColorUniform(this._chromaLocation, this._chroma);
|
||||
this._updateFloatUniform(this._thresholdLocation, this._threshold);
|
||||
this._updateFloatUniform(this._smoothingLocation, this._smoothing);
|
||||
}
|
||||
|
||||
_updateColorUniform(location, color) {
|
||||
if (!location)
|
||||
return;
|
||||
|
||||
this.set_uniform_float(location,
|
||||
3, [color.red / 255, color.green / 255, color.blue / 255]);
|
||||
this.queue_repaint();
|
||||
}
|
||||
|
||||
_updateFloatUniform(location, value) {
|
||||
if (!location)
|
||||
return;
|
||||
|
||||
this.set_uniform_float(location, 1, [value]);
|
||||
this.queue_repaint();
|
||||
}
|
||||
|
||||
set color(c) {
|
||||
if (this._color.equal(c))
|
||||
return;
|
||||
|
||||
this._color = c;
|
||||
this.notify('color');
|
||||
|
||||
this._updateColorUniform(this._colorLocation, this._color);
|
||||
}
|
||||
|
||||
set chroma(c) {
|
||||
if (this._chroma.equal(c))
|
||||
return;
|
||||
|
||||
this._chroma = c;
|
||||
this.notify('chroma');
|
||||
|
||||
this._updateColorUniform(this._chromaLocation, this._chroma);
|
||||
}
|
||||
|
||||
set threshold(value) {
|
||||
if (this._threshold === value)
|
||||
return;
|
||||
|
||||
this._threshold = value;
|
||||
this.notify('threshold');
|
||||
|
||||
this._updateFloatUniform(this._thresholdLocation, this._threshold);
|
||||
}
|
||||
|
||||
set smoothing(value) {
|
||||
if (this._smoothing === value)
|
||||
return;
|
||||
|
||||
this._smoothing = value;
|
||||
this.notify('smoothing');
|
||||
|
||||
this._updateFloatUniform(this._smoothingLocation, this._smoothing);
|
||||
}
|
||||
|
||||
vfunc_build_pipeline() {
|
||||
// Conversion parameters from https://en.wikipedia.org/wiki/YCbCr
|
||||
const decl = `
|
||||
vec3 rgb2yCrCb(vec3 c) { \n
|
||||
float y = 0.299 * c.r + 0.587 * c.g + 0.114 * c.b; \n
|
||||
float cr = 0.7133 * (c.r - y); \n
|
||||
float cb = 0.5643 * (c.b - y); \n
|
||||
return vec3(y, cr, cb); \n
|
||||
} \n
|
||||
\n
|
||||
uniform vec3 chroma_color; \n
|
||||
uniform vec3 recolor_color; \n
|
||||
uniform float threshold; \n
|
||||
uniform float smoothing; \n`;
|
||||
const src = `
|
||||
vec3 mask = rgb2yCrCb(chroma_color.rgb); \n
|
||||
vec3 yCrCb = rgb2yCrCb(cogl_color_out.rgb); \n
|
||||
float blend = \n
|
||||
smoothstep(threshold, \n
|
||||
threshold + smoothing, \n
|
||||
distance(yCrCb.gb, mask.gb)); \n
|
||||
cogl_color_out.rgb = \n
|
||||
mix(recolor_color, cogl_color_out.rgb, blend); \n`;
|
||||
|
||||
this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT, decl, src, false);
|
||||
}
|
||||
});
|
||||
|
||||
var PickPixel = GObject.registerClass(
|
||||
class PickPixel extends St.Widget {
|
||||
_init() {
|
||||
_init(screenshot) {
|
||||
super._init({ visible: false, reactive: true });
|
||||
|
||||
this._screenshot = screenshot;
|
||||
|
||||
this._result = null;
|
||||
this._color = null;
|
||||
this._inPick = false;
|
||||
|
||||
Main.uiGroup.add_actor(this);
|
||||
|
||||
@ -393,16 +527,44 @@ class PickPixel extends St.Widget {
|
||||
let constraint = new Clutter.BindConstraint({ source: global.stage,
|
||||
coordinate: Clutter.BindCoordinate.ALL });
|
||||
this.add_constraint(constraint);
|
||||
|
||||
const action = new Clutter.ClickAction();
|
||||
action.connect('clicked', async () => {
|
||||
await this._pickColor(...action.get_coords());
|
||||
this._result = this._color;
|
||||
this._grabHelper.ungrab();
|
||||
});
|
||||
this.add_action(action);
|
||||
|
||||
this._recolorEffect = new RecolorEffect({
|
||||
chroma: new Clutter.Color({
|
||||
red: 80,
|
||||
green: 219,
|
||||
blue: 181,
|
||||
}),
|
||||
threshold: 0.04,
|
||||
smoothing: 0.07,
|
||||
});
|
||||
this._previewCursor = new St.Icon({
|
||||
icon_name: 'color-pick',
|
||||
icon_size: Meta.prefs_get_cursor_size(),
|
||||
effect: this._recolorEffect,
|
||||
visible: false,
|
||||
});
|
||||
Main.uiGroup.add_actor(this._previewCursor);
|
||||
}
|
||||
|
||||
async pickAsync() {
|
||||
global.display.set_cursor(Meta.Cursor.CROSSHAIR);
|
||||
global.display.set_cursor(Meta.Cursor.BLANK);
|
||||
Main.uiGroup.set_child_above_sibling(this, null);
|
||||
this.show();
|
||||
|
||||
this._pickColor(...global.get_pointer());
|
||||
|
||||
await this._grabHelper.grabAsync({ actor: this });
|
||||
|
||||
global.display.set_cursor(Meta.Cursor.DEFAULT);
|
||||
this._previewCursor.destroy();
|
||||
|
||||
GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
|
||||
this.destroy();
|
||||
@ -412,10 +574,25 @@ class PickPixel extends St.Widget {
|
||||
return this._result;
|
||||
}
|
||||
|
||||
vfunc_button_release_event(buttonEvent) {
|
||||
let { x, y } = buttonEvent;
|
||||
this._result = new Graphene.Point({ x, y });
|
||||
this._grabHelper.ungrab();
|
||||
async _pickColor(x, y) {
|
||||
if (this._inPick)
|
||||
return;
|
||||
|
||||
this._inPick = true;
|
||||
this._previewCursor.set_position(x, y);
|
||||
[this._color] = await this._screenshot.pick_color(x, y);
|
||||
this._inPick = false;
|
||||
|
||||
if (!this._color)
|
||||
return;
|
||||
|
||||
this._recolorEffect.color = this._color;
|
||||
this._previewCursor.show();
|
||||
}
|
||||
|
||||
vfunc_motion_event(motionEvent) {
|
||||
const { x, y } = motionEvent;
|
||||
this._pickColor(x, y);
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
}
|
||||
});
|
||||
|
153
js/ui/search.js
153
js/ui/search.js
@ -13,11 +13,10 @@ const Util = imports.misc.util;
|
||||
const SEARCH_PROVIDERS_SCHEMA = 'org.gnome.desktop.search-providers';
|
||||
|
||||
var MAX_LIST_SEARCH_RESULTS_ROWS = 5;
|
||||
var MAX_GRID_SEARCH_RESULTS_ROWS = 1;
|
||||
|
||||
var MaxWidthBox = GObject.registerClass(
|
||||
class MaxWidthBox extends St.BoxLayout {
|
||||
vfunc_allocate(box, flags) {
|
||||
vfunc_allocate(box) {
|
||||
let themeNode = this.get_theme_node();
|
||||
let maxWidth = themeNode.get_max_width();
|
||||
let availWidth = box.x2 - box.x1;
|
||||
@ -29,7 +28,7 @@ class MaxWidthBox extends St.BoxLayout {
|
||||
adjustedBox.x2 -= Math.floor(excessWidth / 2);
|
||||
}
|
||||
|
||||
super.vfunc_allocate(adjustedBox, flags);
|
||||
super.vfunc_allocate(adjustedBox);
|
||||
}
|
||||
});
|
||||
|
||||
@ -349,18 +348,140 @@ class ListSearchResults extends SearchResultsBase {
|
||||
}
|
||||
});
|
||||
|
||||
var GridSearchResultsLayout = GObject.registerClass({
|
||||
Properties: {
|
||||
'spacing': GObject.ParamSpec.int('spacing', 'Spacing', 'Spacing',
|
||||
GObject.ParamFlags.READWRITE, 0, GLib.MAXINT32, 0),
|
||||
},
|
||||
}, class GridSearchResultsLayout extends Clutter.LayoutManager {
|
||||
_init() {
|
||||
super._init();
|
||||
this._spacing = 0;
|
||||
}
|
||||
|
||||
vfunc_set_container(container) {
|
||||
this._container = container;
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(container, forHeight) {
|
||||
let minWidth = 0;
|
||||
let natWidth = 0;
|
||||
let first = true;
|
||||
|
||||
for (let child of container) {
|
||||
if (!child.visible)
|
||||
continue;
|
||||
|
||||
const [childMinWidth, childNatWidth] = child.get_preferred_width(forHeight);
|
||||
|
||||
minWidth = Math.max(minWidth, childMinWidth);
|
||||
natWidth += childNatWidth;
|
||||
|
||||
if (first)
|
||||
first = false;
|
||||
else
|
||||
natWidth += this._spacing;
|
||||
}
|
||||
|
||||
return [minWidth, natWidth];
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(container, forWidth) {
|
||||
let minHeight = 0;
|
||||
let natHeight = 0;
|
||||
|
||||
for (let child of container) {
|
||||
if (!child.visible)
|
||||
continue;
|
||||
|
||||
const [childMinHeight, childNatHeight] = child.get_preferred_height(forWidth);
|
||||
|
||||
minHeight = Math.max(minHeight, childMinHeight);
|
||||
natHeight = Math.max(natHeight, childNatHeight);
|
||||
}
|
||||
|
||||
return [minHeight, natHeight];
|
||||
}
|
||||
|
||||
vfunc_allocate(container, box) {
|
||||
const width = box.get_width();
|
||||
|
||||
const childBox = new Clutter.ActorBox();
|
||||
childBox.x1 = 0;
|
||||
childBox.y1 = 0;
|
||||
|
||||
let first = true;
|
||||
for (let child of container) {
|
||||
if (!child.visible)
|
||||
continue;
|
||||
|
||||
if (first)
|
||||
first = false;
|
||||
else
|
||||
childBox.x1 += this._spacing;
|
||||
|
||||
const [childWidth] = child.get_preferred_width(-1);
|
||||
const [childHeight] = child.get_preferred_height(-1);
|
||||
childBox.set_size(childWidth, childHeight);
|
||||
|
||||
if (childBox.x1 + childWidth > width)
|
||||
return;
|
||||
|
||||
child.allocate(childBox);
|
||||
|
||||
childBox.x1 += childWidth;
|
||||
}
|
||||
}
|
||||
|
||||
columnsForWidth(width) {
|
||||
if (!this._container)
|
||||
return -1;
|
||||
|
||||
const [minWidth] = this.get_preferred_width(this._container, -1);
|
||||
|
||||
if (minWidth === 0)
|
||||
return -1;
|
||||
|
||||
let nCols = 0;
|
||||
while (width > minWidth) {
|
||||
width -= minWidth;
|
||||
if (nCols > 0)
|
||||
width -= this._spacing;
|
||||
nCols++;
|
||||
}
|
||||
|
||||
return nCols;
|
||||
}
|
||||
|
||||
get spacing() {
|
||||
return this._spacing;
|
||||
}
|
||||
|
||||
set spacing(v) {
|
||||
if (this._spacing === v)
|
||||
return;
|
||||
this._spacing = v;
|
||||
this.layout_changed();
|
||||
}
|
||||
});
|
||||
|
||||
var GridSearchResults = GObject.registerClass(
|
||||
class GridSearchResults extends SearchResultsBase {
|
||||
_init(provider, resultsView) {
|
||||
super._init(provider, resultsView);
|
||||
|
||||
this._grid = new IconGrid.IconGrid({ rowLimit: MAX_GRID_SEARCH_RESULTS_ROWS,
|
||||
xAlign: St.Align.START });
|
||||
this._grid = new St.Widget({ style_class: 'grid-search-results' });
|
||||
this._grid.layout_manager = new GridSearchResultsLayout();
|
||||
|
||||
this._bin = new St.Bin({ x_align: Clutter.ActorAlign.CENTER });
|
||||
this._bin.set_child(this._grid);
|
||||
this._grid.connect('style-changed', () => {
|
||||
const node = this._grid.get_theme_node();
|
||||
this._grid.layout_manager.spacing = node.get_length('spacing');
|
||||
});
|
||||
|
||||
this._resultDisplayBin.set_child(this._bin);
|
||||
this._resultDisplayBin.set_child(new St.Bin({
|
||||
child: this._grid,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
}));
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
@ -400,12 +521,11 @@ class GridSearchResults extends SearchResultsBase {
|
||||
if (width == 0)
|
||||
return -1;
|
||||
|
||||
let nCols = this._grid.columnsForWidth(width);
|
||||
return nCols * this._grid.getRowLimit();
|
||||
return this._grid.layout_manager.columnsForWidth(width);
|
||||
}
|
||||
|
||||
_clearResultDisplay() {
|
||||
this._grid.removeAll();
|
||||
this._grid.remove_all_children();
|
||||
}
|
||||
|
||||
_createResultDisplay(meta) {
|
||||
@ -414,14 +534,15 @@ class GridSearchResults extends SearchResultsBase {
|
||||
}
|
||||
|
||||
_addItem(display) {
|
||||
this._grid.addItem(display);
|
||||
this._grid.add_child(display);
|
||||
}
|
||||
|
||||
getFirstResult() {
|
||||
if (this._grid.visibleItemsCount() > 0)
|
||||
return this._grid.getItemAtIndex(0);
|
||||
else
|
||||
return null;
|
||||
for (let child of this._grid) {
|
||||
if (child.visible)
|
||||
return child;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -48,7 +48,9 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
this._item.connect('key-press-event', (actor, event) => {
|
||||
return this._slider.emit('key-press-event', event);
|
||||
});
|
||||
|
||||
this._item.connect('scroll-event', (actor, event) => {
|
||||
return this._slider.emit('scroll-event', event);
|
||||
});
|
||||
}
|
||||
|
||||
_sliderChanged() {
|
||||
|
@ -805,8 +805,8 @@ class InputSourceIndicatorContainer extends St.Widget {
|
||||
}, [0, 0]);
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
// translate box to (0, 0)
|
||||
box.x2 -= box.x1;
|
||||
@ -815,7 +815,7 @@ class InputSourceIndicatorContainer extends St.Widget {
|
||||
box.y1 = 0;
|
||||
|
||||
this.get_children().forEach(c => {
|
||||
c.allocate_align_fill(box, 0.5, 0.5, false, false, flags);
|
||||
c.allocate_align_fill(box, 0.5, 0.5, false, false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
@ -225,10 +225,6 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
}
|
||||
});
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
|
||||
var AppAuthorizer = class {
|
||||
constructor(desktopId, reqAccuracyLevel, permStoreProxy, maxAccuracyLevel) {
|
||||
this.desktopId = desktopId;
|
||||
@ -313,9 +309,8 @@ var AppAuthorizer = class {
|
||||
|
||||
_completeAuth() {
|
||||
if (this._accuracyLevel != GeoclueAccuracyLevel.NONE) {
|
||||
this._accuracyLevel = clamp(this._accuracyLevel,
|
||||
0,
|
||||
this._maxAccuracyLevel);
|
||||
this._accuracyLevel = Math.clamp(this._accuracyLevel,
|
||||
0, this._maxAccuracyLevel);
|
||||
}
|
||||
this._saveToPermissionStore();
|
||||
|
||||
|
@ -112,12 +112,12 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
let chargingState = this._proxy.State == UPower.DeviceState.CHARGING
|
||||
? '-charging' : '';
|
||||
let fillLevel = 10 * Math.floor(this._proxy.Percentage / 10);
|
||||
let icon;
|
||||
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED ||
|
||||
fillLevel === 100)
|
||||
icon = 'battery-level-100-charged-symbolic';
|
||||
else
|
||||
icon = 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState);
|
||||
const charged =
|
||||
this._proxy.State === UPower.DeviceState.FULLY_CHARGED ||
|
||||
(this._proxy.State === UPower.DeviceState.CHARGING && fillLevel === 100);
|
||||
const icon = charged
|
||||
? 'battery-level-100-charged-symbolic'
|
||||
: 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState);
|
||||
|
||||
// Make sure we fall back to fallback-icon-name and not GThemedIcon's
|
||||
// default fallbacks
|
||||
@ -139,7 +139,7 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
label = _("%d\u2009%%").format(100);
|
||||
else
|
||||
label = _("%d\u2009%%").format(this._proxy.Percentage);
|
||||
this._percentageLabel.clutter_text.set_markup('<span size="smaller">' + label + '</span>');
|
||||
this._percentageLabel.text = label;
|
||||
|
||||
// The status label
|
||||
this._item.label.text = this._getStatus();
|
||||
|
@ -56,9 +56,13 @@ var StreamSlider = class {
|
||||
this.item.connect('key-press-event', (actor, event) => {
|
||||
return this._slider.emit('key-press-event', event);
|
||||
});
|
||||
this.item.connect('scroll-event', (actor, event) => {
|
||||
return this._slider.emit('scroll-event', event);
|
||||
});
|
||||
|
||||
this._stream = null;
|
||||
this._volumeCancellable = null;
|
||||
this._icons = [];
|
||||
}
|
||||
|
||||
get stream() {
|
||||
@ -179,24 +183,15 @@ var StreamSlider = class {
|
||||
if (!this._stream)
|
||||
return null;
|
||||
|
||||
let icons = ["audio-volume-muted-symbolic",
|
||||
"audio-volume-low-symbolic",
|
||||
"audio-volume-medium-symbolic",
|
||||
"audio-volume-high-symbolic",
|
||||
"audio-volume-overamplified-symbolic"];
|
||||
|
||||
let volume = this._stream.volume;
|
||||
let n;
|
||||
if (this._stream.is_muted || volume <= 0) {
|
||||
n = 0;
|
||||
} else {
|
||||
n = Math.ceil(3 * volume / this._control.get_vol_max_norm());
|
||||
if (n < 1)
|
||||
n = 1;
|
||||
else if (n > 3)
|
||||
n = 4;
|
||||
n = Math.clamp(n, 1, this._icons.length - 1);
|
||||
}
|
||||
return icons[n];
|
||||
return this._icons[n];
|
||||
}
|
||||
|
||||
getLevel() {
|
||||
@ -220,6 +215,13 @@ var OutputStreamSlider = class extends StreamSlider {
|
||||
constructor(control) {
|
||||
super(control);
|
||||
this._slider.accessible_name = _("Volume");
|
||||
this._icons = [
|
||||
'audio-volume-muted-symbolic',
|
||||
'audio-volume-low-symbolic',
|
||||
'audio-volume-medium-symbolic',
|
||||
'audio-volume-high-symbolic',
|
||||
'audio-volume-overamplified-symbolic',
|
||||
];
|
||||
}
|
||||
|
||||
_connectStream(stream) {
|
||||
@ -271,6 +273,12 @@ var InputStreamSlider = class extends StreamSlider {
|
||||
this._control.connect('stream-added', this._maybeShowInput.bind(this));
|
||||
this._control.connect('stream-removed', this._maybeShowInput.bind(this));
|
||||
this._icon.icon_name = 'audio-input-microphone-symbolic';
|
||||
this._icons = [
|
||||
'microphone-sensitivity-muted-symbolic',
|
||||
'microphone-sensitivity-low-symbolic',
|
||||
'microphone-sensitivity-medium-symbolic',
|
||||
'microphone-sensitivity-high-symbolic',
|
||||
];
|
||||
}
|
||||
|
||||
_connectStream(stream) {
|
||||
@ -316,7 +324,7 @@ var VolumeMenu = class extends PopupMenu.PopupMenuSection {
|
||||
|
||||
this._output = new OutputStreamSlider(this._control);
|
||||
this._output.connect('stream-updated', () => {
|
||||
this.emit('icon-changed');
|
||||
this.emit('output-icon-changed');
|
||||
});
|
||||
this.addMenuItem(this._output.item);
|
||||
|
||||
@ -324,6 +332,9 @@ var VolumeMenu = class extends PopupMenu.PopupMenuSection {
|
||||
this._input.item.connect('notify::visible', () => {
|
||||
this.emit('input-visible-changed');
|
||||
});
|
||||
this._input.connect('stream-updated', () => {
|
||||
this.emit('input-icon-changed');
|
||||
});
|
||||
this.addMenuItem(this._input.item);
|
||||
|
||||
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
|
||||
@ -340,7 +351,7 @@ var VolumeMenu = class extends PopupMenu.PopupMenuSection {
|
||||
this._readInput();
|
||||
this._readOutput();
|
||||
} else {
|
||||
this.emit('icon-changed');
|
||||
this.emit('output-icon-changed');
|
||||
}
|
||||
}
|
||||
|
||||
@ -352,10 +363,14 @@ var VolumeMenu = class extends PopupMenu.PopupMenuSection {
|
||||
this._input.stream = this._control.get_default_source();
|
||||
}
|
||||
|
||||
getIcon() {
|
||||
getOutputIcon() {
|
||||
return this._output.getIcon();
|
||||
}
|
||||
|
||||
getInputIcon() {
|
||||
return this._input.getIcon();
|
||||
}
|
||||
|
||||
getLevel() {
|
||||
return this._output.getLevel();
|
||||
}
|
||||
@ -379,21 +394,24 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
|
||||
this._control = getMixerControl();
|
||||
this._volumeMenu = new VolumeMenu(this._control);
|
||||
this._volumeMenu.connect('icon-changed', () => {
|
||||
let icon = this._volumeMenu.getIcon();
|
||||
this._volumeMenu.connect('output-icon-changed', () => {
|
||||
let icon = this._volumeMenu.getOutputIcon();
|
||||
|
||||
if (icon != null)
|
||||
this._primaryIndicator.icon_name = icon;
|
||||
this._primaryIndicator.visible = icon !== null;
|
||||
});
|
||||
|
||||
this._inputIndicator.set({
|
||||
icon_name: 'audio-input-microphone-symbolic',
|
||||
visible: this._volumeMenu.getInputVisible(),
|
||||
});
|
||||
this._inputIndicator.visible = this._volumeMenu.getInputVisible();
|
||||
this._volumeMenu.connect('input-visible-changed', () => {
|
||||
this._inputIndicator.visible = this._volumeMenu.getInputVisible();
|
||||
});
|
||||
this._volumeMenu.connect('input-icon-changed', () => {
|
||||
let icon = this._volumeMenu.getInputIcon();
|
||||
|
||||
if (icon !== null)
|
||||
this._inputIndicator.icon_name = icon;
|
||||
});
|
||||
|
||||
this.menu.addMenuItem(this._volumeMenu);
|
||||
}
|
||||
@ -403,7 +421,7 @@ class Indicator extends PanelMenu.SystemIndicator {
|
||||
if (result == Clutter.EVENT_PROPAGATE || this.menu.actor.mapped)
|
||||
return result;
|
||||
|
||||
let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getIcon() });
|
||||
let gicon = new Gio.ThemedIcon({ name: this._volumeMenu.getOutputIcon() });
|
||||
let level = this._volumeMenu.getLevel();
|
||||
let maxLevel = this._volumeMenu.getMaxLevel();
|
||||
Main.osdWindowManager.show(-1, gicon, null, level, maxLevel);
|
||||
|
@ -28,10 +28,6 @@ const State = {
|
||||
SCROLLING: 1,
|
||||
};
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return Math.max(min, Math.min(max, value));
|
||||
}
|
||||
|
||||
const TouchpadSwipeGesture = GObject.registerClass({
|
||||
Properties: {
|
||||
'enabled': GObject.ParamSpec.boolean(
|
||||
@ -558,8 +554,8 @@ var SwipeTracker = GObject.registerClass({
|
||||
|
||||
let firstPoint = this._snapPoints[0];
|
||||
let lastPoint = this._snapPoints[this._snapPoints.length - 1];
|
||||
this._progress = clamp(this._progress, firstPoint, lastPoint);
|
||||
this._progress = clamp(this._progress,
|
||||
this._progress = Math.clamp(this._progress, firstPoint, lastPoint);
|
||||
this._progress = Math.clamp(this._progress,
|
||||
this._initialProgress - 1, this._initialProgress + 1);
|
||||
|
||||
this.emit('update', this._progress);
|
||||
@ -606,7 +602,7 @@ var SwipeTracker = GObject.registerClass({
|
||||
|
||||
let duration = Math.abs((this._progress - endProgress) / velocity * DURATION_MULTIPLIER);
|
||||
if (duration > 0) {
|
||||
duration = clamp(duration,
|
||||
duration = Math.clamp(duration,
|
||||
MIN_ANIMATION_DURATION, MAX_ANIMATION_DURATION);
|
||||
}
|
||||
|
||||
|
@ -66,8 +66,8 @@ var SwitcherPopup = GObject.registerClass({
|
||||
this._disableHover();
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let childBox = new Clutter.ActorBox();
|
||||
let primary = Main.layoutManager.primaryMonitor;
|
||||
@ -84,7 +84,7 @@ var SwitcherPopup = GObject.registerClass({
|
||||
childBox.x2 = Math.min(primary.x + primary.width - rightPadding, childBox.x1 + childNaturalWidth);
|
||||
childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2);
|
||||
childBox.y2 = childBox.y1 + childNaturalHeight;
|
||||
this._switcherList.allocate(childBox, flags);
|
||||
this._switcherList.allocate(childBox);
|
||||
}
|
||||
|
||||
_initialSelection(backward, _binding) {
|
||||
@ -591,8 +591,8 @@ var SwitcherList = GObject.registerClass({
|
||||
return themeNode.adjust_preferred_height(maxChildMin, maxChildNat);
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let contentBox = this.get_theme_node().get_content_box(box);
|
||||
let width = contentBox.x2 - contentBox.x1;
|
||||
@ -606,7 +606,7 @@ var SwitcherList = GObject.registerClass({
|
||||
let childBox = new Clutter.ActorBox();
|
||||
let scrollable = minListWidth > width;
|
||||
|
||||
this._scrollView.allocate(contentBox, flags);
|
||||
this._scrollView.allocate(contentBox);
|
||||
|
||||
let arrowWidth = Math.floor(leftPadding / 3);
|
||||
let arrowHeight = arrowWidth * 2;
|
||||
@ -614,7 +614,7 @@ var SwitcherList = GObject.registerClass({
|
||||
childBox.y1 = this.height / 2 - arrowWidth;
|
||||
childBox.x2 = childBox.x1 + arrowWidth;
|
||||
childBox.y2 = childBox.y1 + arrowHeight;
|
||||
this._leftArrow.allocate(childBox, flags);
|
||||
this._leftArrow.allocate(childBox);
|
||||
this._leftArrow.opacity = this._scrollableLeft && scrollable ? 255 : 0;
|
||||
|
||||
arrowWidth = Math.floor(rightPadding / 3);
|
||||
@ -623,7 +623,7 @@ var SwitcherList = GObject.registerClass({
|
||||
childBox.y1 = this.height / 2 - arrowWidth;
|
||||
childBox.x2 = childBox.x1 + arrowWidth;
|
||||
childBox.y2 = childBox.y1 + arrowHeight;
|
||||
this._rightArrow.allocate(childBox, flags);
|
||||
this._rightArrow.allocate(childBox);
|
||||
this._rightArrow.opacity = this._scrollableRight && scrollable ? 255 : 0;
|
||||
}
|
||||
});
|
||||
|
@ -405,7 +405,7 @@ class UnlockDialogLayout extends Clutter.LayoutManager {
|
||||
return this._stack.get_preferred_height(forWidth);
|
||||
}
|
||||
|
||||
vfunc_allocate(container, box, flags) {
|
||||
vfunc_allocate(container, box) {
|
||||
let [width, height] = box.get_size();
|
||||
|
||||
let tenthOfHeight = height / 10.0;
|
||||
@ -432,7 +432,7 @@ class UnlockDialogLayout extends Clutter.LayoutManager {
|
||||
actorBox.x2 = columnX1 + columnWidth;
|
||||
actorBox.y2 = actorBox.y1 + maxNotificationsHeight;
|
||||
|
||||
this._notifications.allocate(actorBox, flags);
|
||||
this._notifications.allocate(actorBox);
|
||||
|
||||
// Authentication Box
|
||||
let stackY = Math.min(
|
||||
@ -444,7 +444,7 @@ class UnlockDialogLayout extends Clutter.LayoutManager {
|
||||
actorBox.x2 = columnX1 + columnWidth;
|
||||
actorBox.y2 = stackY + stackHeight;
|
||||
|
||||
this._stack.allocate(actorBox, flags);
|
||||
this._stack.allocate(actorBox);
|
||||
|
||||
// Switch User button
|
||||
if (this._switchUserButton.visible) {
|
||||
@ -461,7 +461,7 @@ class UnlockDialogLayout extends Clutter.LayoutManager {
|
||||
actorBox.x2 = actorBox.x1 + natWidth;
|
||||
actorBox.y2 = actorBox.y1 + natHeight;
|
||||
|
||||
this._switchUserButton.allocate(actorBox, flags);
|
||||
this._switchUserButton.allocate(actorBox);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -485,6 +485,7 @@ var UnlockDialog = GObject.registerClass({
|
||||
this._gdmClient = new Gdm.Client();
|
||||
|
||||
this._adjustment = new St.Adjustment({
|
||||
actor: this,
|
||||
lower: 0,
|
||||
upper: 2,
|
||||
page_size: 1,
|
||||
@ -524,6 +525,10 @@ var UnlockDialog = GObject.registerClass({
|
||||
|
||||
this._bgManagers = [];
|
||||
|
||||
const themeContext = St.ThemeContext.get_for_stage(global.stage);
|
||||
this._scaleChangedId = themeContext.connect('notify::scale-factor',
|
||||
() => this._updateBackgroundEffects());
|
||||
|
||||
this._updateBackgrounds();
|
||||
this._monitorsChangedId =
|
||||
Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this));
|
||||
@ -566,9 +571,15 @@ var UnlockDialog = GObject.registerClass({
|
||||
this._otherUserButton.set_pivot_point(0.5, 0.5);
|
||||
this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this));
|
||||
|
||||
let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
|
||||
screenSaverSettings.bind('user-switch-enabled',
|
||||
this._otherUserButton, 'visible', Gio.SettingsBindFlags.GET);
|
||||
this._screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
|
||||
|
||||
this._userSwitchEnabledId = this._screenSaverSettings.connect('changed::user-switch-enabled',
|
||||
this._updateUserSwitchVisibility.bind(this));
|
||||
|
||||
this._userLoadedId = this._user.connect('notify::is-loaded',
|
||||
this._updateUserSwitchVisibility.bind(this));
|
||||
|
||||
this._updateUserSwitchVisibility();
|
||||
|
||||
// Main Box
|
||||
let mainBox = new St.Widget();
|
||||
@ -618,6 +629,7 @@ var UnlockDialog = GObject.registerClass({
|
||||
y: monitor.y,
|
||||
width: monitor.width,
|
||||
height: monitor.height,
|
||||
effect: new Shell.BlurEffect({ name: 'blur' }),
|
||||
});
|
||||
|
||||
let bgManager = new Background.BackgroundManager({
|
||||
@ -629,19 +641,17 @@ var UnlockDialog = GObject.registerClass({
|
||||
this._bgManagers.push(bgManager);
|
||||
|
||||
this._backgroundGroup.add_child(widget);
|
||||
}
|
||||
|
||||
_updateBackgroundEffects() {
|
||||
const themeContext = St.ThemeContext.get_for_stage(global.stage);
|
||||
|
||||
let effect = new Shell.BlurEffect({
|
||||
brightness: BLUR_BRIGHTNESS,
|
||||
sigma: BLUR_SIGMA * themeContext.scale_factor,
|
||||
});
|
||||
|
||||
this._scaleChangedId = themeContext.connect('notify::scale-factor', () => {
|
||||
effect.sigma = BLUR_SIGMA * themeContext.scale_factor;
|
||||
});
|
||||
|
||||
widget.add_effect(effect);
|
||||
for (const widget of this._backgroundGroup) {
|
||||
widget.get_effect('blur').set({
|
||||
brightness: BLUR_BRIGHTNESS,
|
||||
sigma: BLUR_SIGMA * themeContext.scale_factor,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_updateBackgrounds() {
|
||||
@ -653,6 +663,7 @@ var UnlockDialog = GObject.registerClass({
|
||||
|
||||
for (let i = 0; i < Main.layoutManager.monitors.length; i++)
|
||||
this._createBackground(i);
|
||||
this._updateBackgroundEffects();
|
||||
}
|
||||
|
||||
_ensureAuthPrompt() {
|
||||
@ -828,6 +839,21 @@ var UnlockDialog = GObject.registerClass({
|
||||
this._gdmClient = null;
|
||||
delete this._gdmClient;
|
||||
}
|
||||
|
||||
if (this._userLoadedId) {
|
||||
this._user.disconnect(this._userLoadedId);
|
||||
this._userLoadedId = 0;
|
||||
}
|
||||
|
||||
if (this._userSwitchEnabledId) {
|
||||
this._screenSaverSettings.disconnect(this._userSwitchEnabledId);
|
||||
this._userSwitchEnabledId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
_updateUserSwitchVisibility() {
|
||||
this._otherUserButton.visible = this._userManager.can_switch() &&
|
||||
this._screenSaverSettings.get_boolean('user-switch-enabled');
|
||||
}
|
||||
|
||||
cancel() {
|
||||
|
@ -144,8 +144,8 @@ class UserWidgetLabel extends St.Widget {
|
||||
}
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let availWidth = box.x2 - box.x1;
|
||||
let availHeight = box.y2 - box.y1;
|
||||
@ -164,7 +164,7 @@ class UserWidgetLabel extends St.Widget {
|
||||
childBox.x2 = availWidth;
|
||||
childBox.y2 = availHeight;
|
||||
|
||||
this._currentLabel.allocate(childBox, flags);
|
||||
this._currentLabel.allocate(childBox);
|
||||
}
|
||||
|
||||
vfunc_paint(paintContext) {
|
||||
|
@ -132,6 +132,7 @@ var ViewSelector = GObject.registerClass({
|
||||
super._init({
|
||||
name: 'viewSelector',
|
||||
x_expand: true,
|
||||
visible: false,
|
||||
});
|
||||
|
||||
this._showAppsButton = showAppsButton;
|
||||
@ -271,9 +272,10 @@ var ViewSelector = GObject.registerClass({
|
||||
Main.overview.show();
|
||||
}
|
||||
|
||||
show() {
|
||||
animateToOverview() {
|
||||
this.show();
|
||||
this.reset();
|
||||
this._workspacesDisplay.show(this._showAppsButton.checked);
|
||||
this._workspacesDisplay.animateToOverview(this._showAppsButton.checked);
|
||||
this._activePage = null;
|
||||
if (this._showAppsButton.checked)
|
||||
this._showPage(this._appsPage);
|
||||
@ -297,13 +299,11 @@ var ViewSelector = GObject.registerClass({
|
||||
Main.overview.fadeInDesktop();
|
||||
}
|
||||
|
||||
setWorkspacesFullGeometry(geom) {
|
||||
this._workspacesDisplay.setWorkspacesFullGeometry(geom);
|
||||
}
|
||||
|
||||
hide() {
|
||||
vfunc_hide() {
|
||||
this.reset();
|
||||
this._workspacesDisplay.hide();
|
||||
|
||||
super.vfunc_hide();
|
||||
}
|
||||
|
||||
_addPage(actor, name, a11yIcon, params) {
|
||||
|
@ -900,35 +900,47 @@ var WindowManager = class {
|
||||
|
||||
global.display.connect('init-xserver', (display, task) => {
|
||||
IBusManager.getIBusManager().restartDaemon(['--xim']);
|
||||
Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail');
|
||||
|
||||
/* Leave this watchdog timeout so don't block indefinitely here */
|
||||
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
|
||||
Gio.DBus.session.unwatch_name(watchId);
|
||||
log('Warning: Failed to start gsd-xsettings');
|
||||
task.return_boolean(true);
|
||||
timeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
try {
|
||||
if (!Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail'))
|
||||
log('Not starting gsd-xsettings; waiting for gnome-session to do so');
|
||||
|
||||
/* When gsd-xsettings daemon is started, we are good to resume */
|
||||
let watchId = Gio.DBus.session.watch_name(
|
||||
'org.gnome.SettingsDaemon.XSettings',
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
() => {
|
||||
/* Leave this watchdog timeout so don't block indefinitely here */
|
||||
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
|
||||
Gio.DBus.session.unwatch_name(watchId);
|
||||
if (timeoutId > 0) {
|
||||
task.return_boolean(true);
|
||||
GLib.source_remove(timeoutId);
|
||||
}
|
||||
},
|
||||
null);
|
||||
log('Warning: Failed to start gsd-xsettings');
|
||||
task.return_boolean(true);
|
||||
timeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
|
||||
/* When gsd-xsettings daemon is started, we are good to resume */
|
||||
let watchId = Gio.DBus.session.watch_name(
|
||||
'org.gnome.SettingsDaemon.XSettings',
|
||||
Gio.BusNameWatcherFlags.NONE,
|
||||
() => {
|
||||
Gio.DBus.session.unwatch_name(watchId);
|
||||
if (timeoutId > 0) {
|
||||
task.return_boolean(true);
|
||||
GLib.source_remove(timeoutId);
|
||||
}
|
||||
},
|
||||
null);
|
||||
} catch (e) {
|
||||
log('Error starting gsd-xsettings: %s'.format(e.message));
|
||||
task.return_boolean(true);
|
||||
}
|
||||
|
||||
return true;
|
||||
});
|
||||
global.display.connect('x11-display-closing', () => {
|
||||
if (!Meta.is_wayland_compositor())
|
||||
return;
|
||||
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
|
||||
try {
|
||||
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
|
||||
} catch (e) {
|
||||
log('Error stopping gsd-xsettings: %s'.format(e.message));
|
||||
}
|
||||
IBusManager.getIBusManager().restartDaemon();
|
||||
});
|
||||
|
||||
@ -1266,13 +1278,13 @@ var WindowManager = class {
|
||||
}
|
||||
|
||||
_sizeChangeWindow(shellwm, actor, whichChange, oldFrameRect, _oldBufferRect) {
|
||||
let types = [Meta.WindowType.NORMAL];
|
||||
if (!this._shouldAnimateActor(actor, types)) {
|
||||
shellwm.completed_size_change(actor);
|
||||
return;
|
||||
}
|
||||
const types = [Meta.WindowType.NORMAL];
|
||||
const shouldAnimate =
|
||||
this._shouldAnimateActor(actor, types) &&
|
||||
oldFrameRect.width > 0 &&
|
||||
oldFrameRect.height > 0;
|
||||
|
||||
if (oldFrameRect.width > 0 && oldFrameRect.height > 0)
|
||||
if (shouldAnimate)
|
||||
this._prepareAnimationInfo(shellwm, actor, oldFrameRect, whichChange);
|
||||
else
|
||||
shellwm.completed_size_change(actor);
|
||||
@ -1287,17 +1299,24 @@ var WindowManager = class {
|
||||
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
|
||||
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
|
||||
|
||||
if (this._clearAnimationInfo(actor))
|
||||
actor.freeze();
|
||||
|
||||
if (this._clearAnimationInfo(actor)) {
|
||||
log('Old animationInfo removed from actor %s'.format(actor));
|
||||
this._shellwm.completed_size_change(actor);
|
||||
}
|
||||
|
||||
let destroyId = actor.connect('destroy', () => {
|
||||
this._clearAnimationInfo(actor);
|
||||
});
|
||||
|
||||
this._resizePending.add(actor);
|
||||
actor.__animationInfo = { clone: actorClone,
|
||||
oldRect: oldFrameRect,
|
||||
destroyId };
|
||||
actor.__animationInfo = {
|
||||
clone: actorClone,
|
||||
oldRect: oldFrameRect,
|
||||
frozen: true,
|
||||
destroyId,
|
||||
};
|
||||
}
|
||||
|
||||
_sizeChangedWindow(shellwm, actor) {
|
||||
@ -1350,13 +1369,17 @@ var WindowManager = class {
|
||||
// Now unfreeze actor updates, to get it to the new size.
|
||||
// It's important that we don't wait until the animation is completed to
|
||||
// do this, otherwise our scale will be applied to the old texture size.
|
||||
shellwm.completed_size_change(actor);
|
||||
actor.thaw();
|
||||
actor.__animationInfo.frozen = false;
|
||||
}
|
||||
|
||||
_clearAnimationInfo(actor) {
|
||||
if (actor.__animationInfo) {
|
||||
actor.__animationInfo.clone.destroy();
|
||||
actor.disconnect(actor.__animationInfo.destroyId);
|
||||
if (actor.__animationInfo.frozen)
|
||||
actor.thaw();
|
||||
|
||||
delete actor.__animationInfo;
|
||||
return true;
|
||||
}
|
||||
@ -1371,10 +1394,13 @@ var WindowManager = class {
|
||||
actor.translation_x = 0;
|
||||
actor.translation_y = 0;
|
||||
this._clearAnimationInfo(actor);
|
||||
this._shellwm.completed_size_change(actor);
|
||||
}
|
||||
|
||||
if (this._resizePending.delete(actor))
|
||||
if (this._resizePending.delete(actor)) {
|
||||
this._clearAnimationInfo(actor);
|
||||
this._shellwm.completed_size_change(actor);
|
||||
}
|
||||
}
|
||||
|
||||
_hasAttachedDialogs(window, ignoreWindow) {
|
||||
@ -1774,8 +1800,7 @@ var WindowManager = class {
|
||||
w.window.get_parent().remove_child(w.window);
|
||||
w.parent.add_child(w.window);
|
||||
|
||||
if (w.window.get_meta_window().get_workspace() !=
|
||||
global.workspace_manager.get_active_workspace())
|
||||
if (!w.window.get_meta_window().get_workspace().active)
|
||||
w.window.hide();
|
||||
}
|
||||
switchData.container.destroy();
|
||||
@ -1959,7 +1984,7 @@ var WindowManager = class {
|
||||
duration,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
|
||||
onComplete: () => {
|
||||
if (newWs !== activeWorkspace)
|
||||
if (!newWs.active)
|
||||
this.actionMoveWorkspace(newWs);
|
||||
this._finishWorkspaceSwitch(switchData);
|
||||
},
|
||||
@ -2089,8 +2114,16 @@ var WindowManager = class {
|
||||
newWs = workspaceManager.get_workspace_by_index(workspaceManager.n_workspaces - 1);
|
||||
} else if (isNaN(target)) {
|
||||
// Prepend a new workspace dynamically
|
||||
if (workspaceManager.get_active_workspace_index() == 0 &&
|
||||
action == 'move' && target == 'up' && this._isWorkspacePrepended == false) {
|
||||
let prependTarget;
|
||||
if (vertical)
|
||||
prependTarget = 'up';
|
||||
else if (rtl)
|
||||
prependTarget = 'right';
|
||||
else
|
||||
prependTarget = 'left';
|
||||
if (workspaceManager.get_active_workspace_index() === 0 &&
|
||||
action === 'move' && target === prependTarget &&
|
||||
this._isWorkspacePrepended === false) {
|
||||
this.insertWorkspace(0);
|
||||
this._isWorkspacePrepended = true;
|
||||
}
|
||||
@ -2151,10 +2184,7 @@ var WindowManager = class {
|
||||
if (!Main.sessionMode.hasWorkspaces)
|
||||
return;
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
|
||||
if (activeWorkspace != workspace)
|
||||
if (!workspace.active)
|
||||
workspace.activate(global.get_current_time());
|
||||
}
|
||||
|
||||
@ -2162,10 +2192,7 @@ var WindowManager = class {
|
||||
if (!Main.sessionMode.hasWorkspaces)
|
||||
return;
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
|
||||
if (activeWorkspace != workspace) {
|
||||
if (!workspace.active) {
|
||||
// This won't have any effect for "always sticky" windows
|
||||
// (like desktop windows or docks)
|
||||
|
||||
|
771
js/ui/windowPreview.js
Normal file
771
js/ui/windowPreview.js
Normal file
@ -0,0 +1,771 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
/* exported WindowPreview */
|
||||
|
||||
const { Atk, Clutter, GLib, GObject,
|
||||
Graphene, Meta, Pango, Shell, St } = imports.gi;
|
||||
|
||||
const DND = imports.ui.dnd;
|
||||
|
||||
var WINDOW_DND_SIZE = 256;
|
||||
|
||||
var WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT = 750;
|
||||
var WINDOW_OVERLAY_FADE_TIME = 200;
|
||||
|
||||
var DRAGGING_WINDOW_OPACITY = 100;
|
||||
|
||||
var WindowPreviewLayout = GObject.registerClass({
|
||||
Properties: {
|
||||
'bounding-box': GObject.ParamSpec.boxed(
|
||||
'bounding-box', 'Bounding box', 'Bounding box',
|
||||
GObject.ParamFlags.READABLE,
|
||||
Clutter.ActorBox.$gtype),
|
||||
},
|
||||
}, class WindowPreviewLayout extends Clutter.LayoutManager {
|
||||
_init() {
|
||||
super._init();
|
||||
|
||||
this._container = null;
|
||||
this._boundingBox = new Clutter.ActorBox();
|
||||
this._windows = new Map();
|
||||
}
|
||||
|
||||
_layoutChanged() {
|
||||
let frameRect;
|
||||
|
||||
for (const windowInfo of this._windows.values()) {
|
||||
const frame = windowInfo.metaWindow.get_frame_rect();
|
||||
frameRect = frameRect ? frameRect.union(frame) : frame;
|
||||
}
|
||||
|
||||
if (!frameRect)
|
||||
frameRect = new Meta.Rectangle();
|
||||
|
||||
const oldBox = this._boundingBox.copy();
|
||||
this._boundingBox.set_origin(frameRect.x, frameRect.y);
|
||||
this._boundingBox.set_size(frameRect.width, frameRect.height);
|
||||
|
||||
if (!this._boundingBox.equal(oldBox))
|
||||
this.notify('bounding-box');
|
||||
|
||||
// Always call layout_changed(), a size or position change of an
|
||||
// attached dialog might not affect the boundingBox
|
||||
this.layout_changed();
|
||||
}
|
||||
|
||||
vfunc_set_container(container) {
|
||||
this._container = container;
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(_container, _forWidth) {
|
||||
return [0, this._boundingBox.get_height()];
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(_container, _forHeight) {
|
||||
return [0, this._boundingBox.get_width()];
|
||||
}
|
||||
|
||||
vfunc_allocate(container, box) {
|
||||
// If the scale isn't 1, we weren't allocated our preferred size
|
||||
// and have to scale the children allocations accordingly.
|
||||
const scaleX = this._boundingBox.get_width() > 0
|
||||
? box.get_width() / this._boundingBox.get_width()
|
||||
: 1;
|
||||
const scaleY = this._boundingBox.get_height() > 0
|
||||
? box.get_height() / this._boundingBox.get_height()
|
||||
: 1;
|
||||
|
||||
const childBox = new Clutter.ActorBox();
|
||||
|
||||
for (const child of container) {
|
||||
if (!child.visible)
|
||||
continue;
|
||||
|
||||
const windowInfo = this._windows.get(child);
|
||||
if (windowInfo) {
|
||||
const bufferRect = windowInfo.metaWindow.get_buffer_rect();
|
||||
childBox.set_origin(
|
||||
bufferRect.x - this._boundingBox.x1,
|
||||
bufferRect.y - this._boundingBox.y1);
|
||||
|
||||
const [, , natWidth, natHeight] = child.get_preferred_size();
|
||||
childBox.set_size(natWidth, natHeight);
|
||||
|
||||
childBox.x1 *= scaleX;
|
||||
childBox.x2 *= scaleX;
|
||||
childBox.y1 *= scaleY;
|
||||
childBox.y2 *= scaleY;
|
||||
|
||||
child.allocate(childBox);
|
||||
} else {
|
||||
child.allocate_preferred_size(0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* addWindow:
|
||||
* @param {Meta.Window} window: the MetaWindow instance
|
||||
*
|
||||
* Creates a ClutterActor drawing the texture of @window and adds it
|
||||
* to the container. If @window is already part of the preview, this
|
||||
* function will do nothing.
|
||||
*
|
||||
* @returns {Clutter.Actor} The newly created actor drawing @window
|
||||
*/
|
||||
addWindow(window) {
|
||||
const index = [...this._windows.values()].findIndex(info =>
|
||||
info.metaWindow === window);
|
||||
|
||||
if (index !== -1)
|
||||
return null;
|
||||
|
||||
const windowActor = window.get_compositor_private();
|
||||
const actor = new Clutter.Clone({ source: windowActor });
|
||||
|
||||
this._windows.set(actor, {
|
||||
metaWindow: window,
|
||||
windowActor,
|
||||
sizeChangedId: window.connect('size-changed', () =>
|
||||
this._layoutChanged()),
|
||||
positionChangedId: window.connect('position-changed', () =>
|
||||
this._layoutChanged()),
|
||||
windowActorDestroyId: windowActor.connect('destroy', () =>
|
||||
actor.destroy()),
|
||||
destroyId: actor.connect('destroy', () =>
|
||||
this.removeWindow(window)),
|
||||
});
|
||||
|
||||
this._container.add_child(actor);
|
||||
|
||||
this._layoutChanged();
|
||||
|
||||
return actor;
|
||||
}
|
||||
|
||||
/**
|
||||
* removeWindow:
|
||||
* @param {Meta.Window} window: the window to remove from the preview
|
||||
*
|
||||
* Removes a MetaWindow @window from the preview which has been added
|
||||
* previously using addWindow(). If @window is not part of preview,
|
||||
* this function will do nothing.
|
||||
*/
|
||||
removeWindow(window) {
|
||||
const entry = [...this._windows].find(
|
||||
([, i]) => i.metaWindow === window);
|
||||
|
||||
if (!entry)
|
||||
return;
|
||||
|
||||
const [actor, windowInfo] = entry;
|
||||
|
||||
windowInfo.metaWindow.disconnect(windowInfo.sizeChangedId);
|
||||
windowInfo.metaWindow.disconnect(windowInfo.positionChangedId);
|
||||
windowInfo.windowActor.disconnect(windowInfo.windowActorDestroyId);
|
||||
actor.disconnect(windowInfo.destroyId);
|
||||
|
||||
this._windows.delete(actor);
|
||||
this._container.remove_child(actor);
|
||||
|
||||
this._layoutChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* getWindows:
|
||||
*
|
||||
* Gets an array of all MetaWindows that were added to the layout
|
||||
* using addWindow(), ordered by the insertion order.
|
||||
*
|
||||
* @returns {Array} An array including all windows
|
||||
*/
|
||||
getWindows() {
|
||||
return [...this._windows.values()].map(i => i.metaWindow);
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
get bounding_box() {
|
||||
return this._boundingBox;
|
||||
}
|
||||
});
|
||||
|
||||
var WindowPreview = GObject.registerClass({
|
||||
Properties: {
|
||||
'overlay-enabled': GObject.ParamSpec.boolean(
|
||||
'overlay-enabled', 'overlay-enabled', 'overlay-enabled',
|
||||
GObject.ParamFlags.READWRITE,
|
||||
true),
|
||||
},
|
||||
Signals: {
|
||||
'drag-begin': {},
|
||||
'drag-cancelled': {},
|
||||
'drag-end': {},
|
||||
'selected': { param_types: [GObject.TYPE_UINT] },
|
||||
'show-chrome': {},
|
||||
'size-changed': {},
|
||||
},
|
||||
}, class WindowPreview extends St.Widget {
|
||||
_init(metaWindow, workspace) {
|
||||
this.metaWindow = metaWindow;
|
||||
this.metaWindow._delegate = this;
|
||||
this._windowActor = metaWindow.get_compositor_private();
|
||||
this._workspace = workspace;
|
||||
|
||||
super._init({
|
||||
reactive: true,
|
||||
can_focus: true,
|
||||
accessible_role: Atk.Role.PUSH_BUTTON,
|
||||
offscreen_redirect: Clutter.OffscreenRedirect.AUTOMATIC_FOR_OPACITY,
|
||||
});
|
||||
|
||||
this._windowContainer = new Clutter.Actor();
|
||||
// gjs currently can't handle setting an actors layout manager during
|
||||
// the initialization of the actor if that layout manager keeps track
|
||||
// of its container, so set the layout manager after creating the
|
||||
// container
|
||||
this._windowContainer.layout_manager = new WindowPreviewLayout();
|
||||
this.add_child(this._windowContainer);
|
||||
|
||||
this._addWindow(metaWindow);
|
||||
|
||||
this._delegate = this;
|
||||
|
||||
this._stackAbove = null;
|
||||
|
||||
this._windowContainer.layout_manager.connect(
|
||||
'notify::bounding-box', layout => {
|
||||
// A bounding box of 0x0 means all windows were removed
|
||||
if (layout.bounding_box.get_area() > 0)
|
||||
this.emit('size-changed');
|
||||
});
|
||||
|
||||
this._windowDestroyId =
|
||||
this._windowActor.connect('destroy', () => this.destroy());
|
||||
|
||||
this._updateAttachedDialogs();
|
||||
|
||||
let clickAction = new Clutter.ClickAction();
|
||||
clickAction.connect('clicked', () => this._activate());
|
||||
clickAction.connect('long-press', this._onLongPress.bind(this));
|
||||
this.add_action(clickAction);
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
|
||||
this._draggable = DND.makeDraggable(this,
|
||||
{ restoreOnSuccess: true,
|
||||
manualMode: true,
|
||||
dragActorMaxSize: WINDOW_DND_SIZE,
|
||||
dragActorOpacity: DRAGGING_WINDOW_OPACITY });
|
||||
this._draggable.connect('drag-begin', this._onDragBegin.bind(this));
|
||||
this._draggable.connect('drag-cancelled', this._onDragCancelled.bind(this));
|
||||
this._draggable.connect('drag-end', this._onDragEnd.bind(this));
|
||||
this.inDrag = false;
|
||||
|
||||
this._selected = false;
|
||||
this._overlayEnabled = true;
|
||||
this._closeRequested = false;
|
||||
this._idleHideOverlayId = 0;
|
||||
|
||||
this._border = new St.Widget({
|
||||
visible: false,
|
||||
style_class: 'window-clone-border',
|
||||
});
|
||||
this._borderConstraint = new Clutter.BindConstraint({
|
||||
source: this._windowContainer,
|
||||
coordinate: Clutter.BindCoordinate.SIZE,
|
||||
});
|
||||
this._border.add_constraint(this._borderConstraint);
|
||||
this._border.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._windowContainer,
|
||||
align_axis: Clutter.AlignAxis.BOTH,
|
||||
factor: 0.5,
|
||||
}));
|
||||
this._borderCenter = new Clutter.Actor();
|
||||
this._border.bind_property('visible', this._borderCenter, 'visible',
|
||||
GObject.BindingFlags.SYNC_CREATE);
|
||||
this._borderCenterConstraint = new Clutter.BindConstraint({
|
||||
source: this._windowContainer,
|
||||
coordinate: Clutter.BindCoordinate.SIZE,
|
||||
});
|
||||
this._borderCenter.add_constraint(this._borderCenterConstraint);
|
||||
this._borderCenter.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._windowContainer,
|
||||
align_axis: Clutter.AlignAxis.BOTH,
|
||||
factor: 0.5,
|
||||
}));
|
||||
this._border.connect('style-changed',
|
||||
this._onBorderStyleChanged.bind(this));
|
||||
|
||||
this._title = new St.Label({
|
||||
visible: false,
|
||||
style_class: 'window-caption',
|
||||
text: this._getCaption(),
|
||||
reactive: true,
|
||||
});
|
||||
this._title.add_constraint(new Clutter.BindConstraint({
|
||||
source: this._borderCenter,
|
||||
coordinate: Clutter.BindCoordinate.POSITION,
|
||||
}));
|
||||
this._title.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._borderCenter,
|
||||
align_axis: Clutter.AlignAxis.X_AXIS,
|
||||
factor: 0.5,
|
||||
}));
|
||||
this._title.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._borderCenter,
|
||||
align_axis: Clutter.AlignAxis.Y_AXIS,
|
||||
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
|
||||
factor: 1,
|
||||
}));
|
||||
this._title.clutter_text.ellipsize = Pango.EllipsizeMode.END;
|
||||
this.label_actor = this._title;
|
||||
this._updateCaptionId = this.metaWindow.connect('notify::title', () => {
|
||||
this._title.text = this._getCaption();
|
||||
});
|
||||
|
||||
const layout = Meta.prefs_get_button_layout();
|
||||
this._closeButtonSide =
|
||||
layout.left_buttons.includes(Meta.ButtonFunction.CLOSE)
|
||||
? St.Side.LEFT : St.Side.RIGHT;
|
||||
|
||||
this._closeButton = new St.Button({
|
||||
visible: false,
|
||||
style_class: 'window-close',
|
||||
child: new St.Icon({ icon_name: 'window-close-symbolic' }),
|
||||
});
|
||||
this._closeButton.add_constraint(new Clutter.BindConstraint({
|
||||
source: this._borderCenter,
|
||||
coordinate: Clutter.BindCoordinate.POSITION,
|
||||
}));
|
||||
this._closeButton.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._borderCenter,
|
||||
align_axis: Clutter.AlignAxis.X_AXIS,
|
||||
pivot_point: new Graphene.Point({ x: 0.5, y: -1 }),
|
||||
factor: this._closeButtonSide === St.Side.LEFT ? 0 : 1,
|
||||
}));
|
||||
this._closeButton.add_constraint(new Clutter.AlignConstraint({
|
||||
source: this._borderCenter,
|
||||
align_axis: Clutter.AlignAxis.Y_AXIS,
|
||||
pivot_point: new Graphene.Point({ x: -1, y: 0.5 }),
|
||||
factor: 0,
|
||||
}));
|
||||
this._closeButton.connect('clicked', () => this._deleteAll());
|
||||
|
||||
this.add_child(this._borderCenter);
|
||||
this.add_child(this._border);
|
||||
this.add_child(this._title);
|
||||
this.add_child(this._closeButton);
|
||||
|
||||
this.connect('notify::realized', () => {
|
||||
if (!this.realized)
|
||||
return;
|
||||
|
||||
this._border.ensure_style();
|
||||
this._title.ensure_style();
|
||||
});
|
||||
}
|
||||
|
||||
vfunc_get_preferred_width(forHeight) {
|
||||
const themeNode = this.get_theme_node();
|
||||
|
||||
// Only include window previews in size request, not chrome
|
||||
const [minWidth, natWidth] =
|
||||
this._windowContainer.get_preferred_width(
|
||||
themeNode.adjust_for_height(forHeight));
|
||||
|
||||
return themeNode.adjust_preferred_width(minWidth, natWidth);
|
||||
}
|
||||
|
||||
vfunc_get_preferred_height(forWidth) {
|
||||
const themeNode = this.get_theme_node();
|
||||
const [minHeight, natHeight] =
|
||||
this._windowContainer.get_preferred_height(
|
||||
themeNode.adjust_for_width(forWidth));
|
||||
|
||||
return themeNode.adjust_preferred_height(minHeight, natHeight);
|
||||
}
|
||||
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
for (const child of this)
|
||||
child.allocate_available_size(0, 0, box.get_width(), box.get_height());
|
||||
}
|
||||
|
||||
_onBorderStyleChanged() {
|
||||
let borderNode = this._border.get_theme_node();
|
||||
this._borderSize = borderNode.get_border_width(St.Side.TOP);
|
||||
|
||||
// Increase the size of the border actor so the border outlines
|
||||
// the bounding box
|
||||
this._borderConstraint.offset = this._borderSize * 2;
|
||||
this._borderCenterConstraint.offset = this._borderSize;
|
||||
}
|
||||
|
||||
_windowCanClose() {
|
||||
return this.metaWindow.can_close() &&
|
||||
!this._hasAttachedDialogs();
|
||||
}
|
||||
|
||||
_getCaption() {
|
||||
if (this.metaWindow.title)
|
||||
return this.metaWindow.title;
|
||||
|
||||
let tracker = Shell.WindowTracker.get_default();
|
||||
let app = tracker.get_window_app(this.metaWindow);
|
||||
return app.get_name();
|
||||
}
|
||||
|
||||
chromeHeights() {
|
||||
const [, closeButtonHeight] = this._closeButton.get_preferred_height(-1);
|
||||
const [, titleHeight] = this._title.get_preferred_height(-1);
|
||||
|
||||
const topOversize = (this._borderSize / 2) + (closeButtonHeight / 2);
|
||||
const bottomOversize = Math.max(
|
||||
this._borderSize,
|
||||
(titleHeight / 2) + (this._borderSize / 2));
|
||||
|
||||
return [topOversize, bottomOversize];
|
||||
}
|
||||
|
||||
chromeWidths() {
|
||||
const [, closeButtonWidth] = this._closeButton.get_preferred_width(-1);
|
||||
|
||||
const leftOversize = this._closeButtonSide === St.Side.LEFT
|
||||
? (this._borderSize / 2) + (closeButtonWidth / 2)
|
||||
: this._borderSize;
|
||||
const rightOversize = this._closeButtonSide === St.Side.LEFT
|
||||
? this._borderSize
|
||||
: (this._borderSize / 2) + (closeButtonWidth / 2);
|
||||
|
||||
return [leftOversize, rightOversize];
|
||||
}
|
||||
|
||||
showOverlay(animate) {
|
||||
if (!this._overlayEnabled)
|
||||
return;
|
||||
|
||||
const ongoingTransition = this._border.get_transition('opacity');
|
||||
|
||||
// Don't do anything if we're fully visible already
|
||||
if (this._border.visible && !ongoingTransition)
|
||||
return;
|
||||
|
||||
// If we're supposed to animate and an animation in our direction
|
||||
// is already happening, let that one continue
|
||||
if (animate &&
|
||||
ongoingTransition &&
|
||||
ongoingTransition.get_interval().peek_final_value() === 255)
|
||||
return;
|
||||
|
||||
const toShow = this._windowCanClose()
|
||||
? [this._border, this._title, this._closeButton]
|
||||
: [this._border, this._title];
|
||||
|
||||
toShow.forEach(a => {
|
||||
a.opacity = 0;
|
||||
a.show();
|
||||
a.ease({
|
||||
opacity: 255,
|
||||
duration: animate ? WINDOW_OVERLAY_FADE_TIME : 0,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
});
|
||||
|
||||
this.emit('show-chrome');
|
||||
}
|
||||
|
||||
hideOverlay(animate) {
|
||||
const ongoingTransition = this._border.get_transition('opacity');
|
||||
|
||||
// Don't do anything if we're fully hidden already
|
||||
if (!this._border.visible && !ongoingTransition)
|
||||
return;
|
||||
|
||||
// If we're supposed to animate and an animation in our direction
|
||||
// is already happening, let that one continue
|
||||
if (animate &&
|
||||
ongoingTransition &&
|
||||
ongoingTransition.get_interval().peek_final_value() === 0)
|
||||
return;
|
||||
|
||||
[this._border, this._title, this._closeButton].forEach(a => {
|
||||
a.opacity = 255;
|
||||
a.ease({
|
||||
opacity: 0,
|
||||
duration: animate ? WINDOW_OVERLAY_FADE_TIME : 0,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
onComplete: () => a.hide(),
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
_addWindow(metaWindow) {
|
||||
const clone = this._windowContainer.layout_manager.addWindow(metaWindow);
|
||||
|
||||
// We expect this to be used for all interaction rather than
|
||||
// the ClutterClone; as the former is reactive and the latter
|
||||
// is not, this just works for most cases. However, for DND all
|
||||
// actors are picked, so DND operations would operate on the clone.
|
||||
// To avoid this, we hide it from pick.
|
||||
Shell.util_set_hidden_from_pick(clone, true);
|
||||
}
|
||||
|
||||
vfunc_has_overlaps() {
|
||||
return this._hasAttachedDialogs();
|
||||
}
|
||||
|
||||
_deleteAll() {
|
||||
const windows = this._windowContainer.layout_manager.getWindows();
|
||||
|
||||
// Delete all windows, starting from the bottom-most (most-modal) one
|
||||
for (const window of windows.reverse())
|
||||
window.delete(global.get_current_time());
|
||||
|
||||
this._closeRequested = true;
|
||||
}
|
||||
|
||||
addDialog(win) {
|
||||
let parent = win.get_transient_for();
|
||||
while (parent.is_attached_dialog())
|
||||
parent = parent.get_transient_for();
|
||||
|
||||
// Display dialog if it is attached to our metaWindow
|
||||
if (win.is_attached_dialog() && parent == this.metaWindow)
|
||||
this._addWindow(win);
|
||||
|
||||
// The dialog popped up after the user tried to close the window,
|
||||
// assume it's a close confirmation and leave the overview
|
||||
if (this._closeRequested)
|
||||
this._activate();
|
||||
}
|
||||
|
||||
_hasAttachedDialogs() {
|
||||
return this._windowContainer.layout_manager.getWindows().length > 1;
|
||||
}
|
||||
|
||||
_updateAttachedDialogs() {
|
||||
let iter = win => {
|
||||
let actor = win.get_compositor_private();
|
||||
|
||||
if (!actor)
|
||||
return false;
|
||||
if (!win.is_attached_dialog())
|
||||
return false;
|
||||
|
||||
this._addWindow(win);
|
||||
win.foreach_transient(iter);
|
||||
return true;
|
||||
};
|
||||
this.metaWindow.foreach_transient(iter);
|
||||
}
|
||||
|
||||
get boundingBox() {
|
||||
const box = this._windowContainer.layout_manager.bounding_box;
|
||||
|
||||
return {
|
||||
x: box.x1,
|
||||
y: box.y1,
|
||||
width: box.get_width(),
|
||||
height: box.get_height(),
|
||||
};
|
||||
}
|
||||
|
||||
get windowCenter() {
|
||||
const box = this._windowContainer.layout_manager.bounding_box;
|
||||
|
||||
return new Graphene.Point({
|
||||
x: box.get_x() + box.get_width() / 2,
|
||||
y: box.get_y() + box.get_height() / 2,
|
||||
});
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
get overlay_enabled() {
|
||||
return this._overlayEnabled;
|
||||
}
|
||||
|
||||
// eslint-disable-next-line camelcase
|
||||
set overlay_enabled(enabled) {
|
||||
if (this._overlayEnabled === enabled)
|
||||
return;
|
||||
|
||||
this._overlayEnabled = enabled;
|
||||
this.notify('overlay-enabled');
|
||||
|
||||
if (!enabled)
|
||||
this.hideOverlay(false);
|
||||
else if (this['has-pointer'] || global.stage.key_focus === this)
|
||||
this.showOverlay(true);
|
||||
}
|
||||
|
||||
// Find the actor just below us, respecting reparenting done by DND code
|
||||
_getActualStackAbove() {
|
||||
if (this._stackAbove == null)
|
||||
return null;
|
||||
|
||||
if (this.inDrag) {
|
||||
if (this._stackAbove._delegate)
|
||||
return this._stackAbove._delegate._getActualStackAbove();
|
||||
else
|
||||
return null;
|
||||
} else {
|
||||
return this._stackAbove;
|
||||
}
|
||||
}
|
||||
|
||||
setStackAbove(actor) {
|
||||
this._stackAbove = actor;
|
||||
if (this.inDrag)
|
||||
// We'll fix up the stack after the drag
|
||||
return;
|
||||
|
||||
let parent = this.get_parent();
|
||||
let actualAbove = this._getActualStackAbove();
|
||||
if (actualAbove == null)
|
||||
parent.set_child_below_sibling(this, null);
|
||||
else
|
||||
parent.set_child_above_sibling(this, actualAbove);
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
this._windowActor.disconnect(this._windowDestroyId);
|
||||
|
||||
this.metaWindow._delegate = null;
|
||||
this._delegate = null;
|
||||
|
||||
this.metaWindow.disconnect(this._updateCaptionId);
|
||||
|
||||
if (this._longPressLater) {
|
||||
Meta.later_remove(this._longPressLater);
|
||||
delete this._longPressLater;
|
||||
}
|
||||
|
||||
if (this._idleHideOverlayId > 0) {
|
||||
GLib.source_remove(this._idleHideOverlayId);
|
||||
this._idleHideOverlayId = 0;
|
||||
}
|
||||
|
||||
if (this.inDrag) {
|
||||
this.emit('drag-end');
|
||||
this.inDrag = false;
|
||||
}
|
||||
}
|
||||
|
||||
_activate() {
|
||||
this._selected = true;
|
||||
this.emit('selected', global.get_current_time());
|
||||
}
|
||||
|
||||
vfunc_enter_event(crossingEvent) {
|
||||
this.showOverlay(true);
|
||||
return super.vfunc_enter_event(crossingEvent);
|
||||
}
|
||||
|
||||
vfunc_leave_event(crossingEvent) {
|
||||
if (this._idleHideOverlayId > 0)
|
||||
GLib.source_remove(this._idleHideOverlayId);
|
||||
|
||||
this._idleHideOverlayId = GLib.timeout_add(
|
||||
GLib.PRIORITY_DEFAULT,
|
||||
WINDOW_OVERLAY_IDLE_HIDE_TIMEOUT, () => {
|
||||
if (this._closeButton['has-pointer'] ||
|
||||
this._title['has-pointer'])
|
||||
return GLib.SOURCE_CONTINUE;
|
||||
|
||||
if (!this['has-pointer'])
|
||||
this.hideOverlay(true);
|
||||
|
||||
this._idleHideOverlayId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
|
||||
GLib.Source.set_name_by_id(this._idleHideOverlayId, '[gnome-shell] this._idleHideOverlayId');
|
||||
|
||||
return super.vfunc_leave_event(crossingEvent);
|
||||
}
|
||||
|
||||
vfunc_key_focus_in() {
|
||||
super.vfunc_key_focus_in();
|
||||
this.showOverlay(true);
|
||||
}
|
||||
|
||||
vfunc_key_focus_out() {
|
||||
super.vfunc_key_focus_out();
|
||||
this.hideOverlay(true);
|
||||
}
|
||||
|
||||
vfunc_key_press_event(keyEvent) {
|
||||
let symbol = keyEvent.keyval;
|
||||
let isEnter = symbol == Clutter.KEY_Return || symbol == Clutter.KEY_KP_Enter;
|
||||
if (isEnter) {
|
||||
this._activate();
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.vfunc_key_press_event(keyEvent);
|
||||
}
|
||||
|
||||
_onLongPress(action, actor, state) {
|
||||
// Take advantage of the Clutter policy to consider
|
||||
// a long-press canceled when the pointer movement
|
||||
// exceeds dnd-drag-threshold to manually start the drag
|
||||
if (state == Clutter.LongPressState.CANCEL) {
|
||||
let event = Clutter.get_current_event();
|
||||
this._dragTouchSequence = event.get_event_sequence();
|
||||
|
||||
if (this._longPressLater)
|
||||
return true;
|
||||
|
||||
// A click cancels a long-press before any click handler is
|
||||
// run - make sure to not start a drag in that case
|
||||
this._longPressLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||
delete this._longPressLater;
|
||||
if (this._selected)
|
||||
return;
|
||||
let [x, y] = action.get_coords();
|
||||
action.release();
|
||||
this._draggable.startDrag(x, y, global.get_current_time(), this._dragTouchSequence, event.get_device());
|
||||
});
|
||||
} else {
|
||||
this.showOverlay(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
_onDragBegin(_draggable, _time) {
|
||||
this.inDrag = true;
|
||||
this.hideOverlay(false);
|
||||
this.emit('drag-begin');
|
||||
}
|
||||
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
return this._workspace.handleDragOver(source, actor, x, y, time);
|
||||
}
|
||||
|
||||
acceptDrop(source, actor, x, y, time) {
|
||||
return this._workspace.acceptDrop(source, actor, x, y, time);
|
||||
}
|
||||
|
||||
_onDragCancelled(_draggable, _time) {
|
||||
this.emit('drag-cancelled');
|
||||
}
|
||||
|
||||
_onDragEnd(_draggable, _time, _snapback) {
|
||||
this.inDrag = false;
|
||||
|
||||
// We may not have a parent if DnD completed successfully, in
|
||||
// which case our clone will shortly be destroyed and replaced
|
||||
// with a new one on the target workspace.
|
||||
let parent = this.get_parent();
|
||||
if (parent !== null) {
|
||||
if (this._stackAbove == null)
|
||||
parent.set_child_below_sibling(this, null);
|
||||
else
|
||||
parent.set_child_above_sibling(this, this._stackAbove);
|
||||
}
|
||||
|
||||
if (this['has-pointer'])
|
||||
this.showOverlay(true);
|
||||
|
||||
this.emit('drag-end');
|
||||
}
|
||||
});
|
1938
js/ui/workspace.js
1938
js/ui/workspace.js
File diff suppressed because it is too large
Load Diff
@ -86,8 +86,8 @@ class WorkspaceSwitcherPopupList extends St.Widget {
|
||||
return this._getSizeForOppositeOrientation();
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let themeNode = this.get_theme_node();
|
||||
box = themeNode.get_content_box(box);
|
||||
@ -111,7 +111,7 @@ class WorkspaceSwitcherPopupList extends St.Widget {
|
||||
} else {
|
||||
y += this._childHeight + this._itemSpacing;
|
||||
}
|
||||
child.allocate(childBox, flags);
|
||||
child.allocate(childBox);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -549,9 +549,7 @@ var WorkspaceThumbnail = GObject.registerClass({
|
||||
return;
|
||||
|
||||
// a click on the already current workspace should go back to the main view
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
if (this.metaWorkspace == activeWorkspace)
|
||||
if (this.metaWorkspace.active)
|
||||
Main.overview.hide();
|
||||
else
|
||||
this.metaWorkspace.activate(time);
|
||||
@ -567,7 +565,8 @@ var WorkspaceThumbnail = GObject.registerClass({
|
||||
if (this.state > ThumbnailState.NORMAL)
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
|
||||
if (source.realWindow && !this._isMyWindow(source.realWindow))
|
||||
if (source.metaWindow &&
|
||||
!this._isMyWindow(source.metaWindow.get_compositor_private()))
|
||||
return DND.DragMotionResult.MOVE_DROP;
|
||||
if (source.app && source.app.can_open_new_window())
|
||||
return DND.DragMotionResult.COPY_DROP;
|
||||
@ -581,8 +580,8 @@ var WorkspaceThumbnail = GObject.registerClass({
|
||||
if (this.state > ThumbnailState.NORMAL)
|
||||
return false;
|
||||
|
||||
if (source.realWindow) {
|
||||
let win = source.realWindow;
|
||||
if (source.metaWindow) {
|
||||
let win = source.metaWindow.get_compositor_private();
|
||||
if (this._isMyWindow(win))
|
||||
return false;
|
||||
|
||||
@ -795,7 +794,7 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
|
||||
// Draggable target interface
|
||||
handleDragOver(source, actor, x, y, time) {
|
||||
if (!source.realWindow &&
|
||||
if (!source.metaWindow &&
|
||||
(!source.app || !source.app.can_open_new_window()) &&
|
||||
(source.app || !source.shellWorkspaceLaunch) &&
|
||||
source != Main.xdndHandler)
|
||||
@ -846,7 +845,7 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
if (this._dropWorkspace != -1)
|
||||
return this._thumbnails[this._dropWorkspace].handleDragOverInternal(source, actor, time);
|
||||
else if (this._dropPlaceholderPos != -1)
|
||||
return source.realWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
|
||||
return source.metaWindow ? DND.DragMotionResult.MOVE_DROP : DND.DragMotionResult.COPY_DROP;
|
||||
else
|
||||
return DND.DragMotionResult.CONTINUE;
|
||||
}
|
||||
@ -855,12 +854,12 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
if (this._dropWorkspace != -1) {
|
||||
return this._thumbnails[this._dropWorkspace].acceptDropInternal(source, actor, time);
|
||||
} else if (this._dropPlaceholderPos != -1) {
|
||||
if (!source.realWindow &&
|
||||
if (!source.metaWindow &&
|
||||
(!source.app || !source.app.can_open_new_window()) &&
|
||||
(source.app || !source.shellWorkspaceLaunch))
|
||||
return false;
|
||||
|
||||
let isWindow = !!source.realWindow;
|
||||
let isWindow = !!source.metaWindow;
|
||||
|
||||
let newWorkspaceIndex;
|
||||
[newWorkspaceIndex, this._dropPlaceholderPos] = [this._dropPlaceholderPos, -1];
|
||||
@ -1204,8 +1203,8 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
this.queue_relayout();
|
||||
}
|
||||
|
||||
vfunc_allocate(box, flags) {
|
||||
this.set_allocation(box, flags);
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
|
||||
|
||||
@ -1299,7 +1298,7 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
childBox.x2 = x2;
|
||||
childBox.y1 = Math.round(y);
|
||||
childBox.y2 = Math.round(y + placeholderHeight);
|
||||
this._dropPlaceholder.allocate(childBox, flags);
|
||||
this._dropPlaceholder.allocate(childBox);
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||
this._dropPlaceholder.show();
|
||||
});
|
||||
@ -1331,7 +1330,7 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
childBox.y2 = y1 + portholeHeight;
|
||||
|
||||
thumbnail.set_scale(roundedHScale, roundedVScale);
|
||||
thumbnail.allocate(childBox, flags);
|
||||
thumbnail.allocate(childBox);
|
||||
|
||||
// We round the collapsing portion so that we don't get thumbnails resizing
|
||||
// during an animation due to differences in rounded, but leave the uncollapsed
|
||||
@ -1355,6 +1354,6 @@ var ThumbnailsBox = GObject.registerClass({
|
||||
childBox.x2 += indicatorRightFullBorder;
|
||||
childBox.y1 = indicatorY1 - indicatorTopFullBorder;
|
||||
childBox.y2 = indicatorY2 + indicatorBottomFullBorder;
|
||||
this._indicator.allocate(childBox, flags);
|
||||
this._indicator.allocate(childBox);
|
||||
}
|
||||
});
|
||||
|
@ -7,7 +7,9 @@ const Main = imports.ui.main;
|
||||
const SwipeTracker = imports.ui.swipeTracker;
|
||||
const Workspace = imports.ui.workspace;
|
||||
|
||||
var { ANIMATION_TIME } = imports.ui.overview;
|
||||
var WORKSPACE_SWITCH_TIME = 250;
|
||||
var SCROLL_TIMEOUT_TIME = 150;
|
||||
|
||||
var AnimationType = {
|
||||
ZOOM: 0,
|
||||
@ -20,18 +22,18 @@ var WorkspacesViewBase = GObject.registerClass({
|
||||
GTypeFlags: GObject.TypeFlags.ABSTRACT,
|
||||
}, class WorkspacesViewBase extends St.Widget {
|
||||
_init(monitorIndex) {
|
||||
super._init({ style_class: 'workspaces-view', reactive: true });
|
||||
const { x, y, width, height } =
|
||||
Main.layoutManager.getWorkAreaForMonitor(monitorIndex);
|
||||
|
||||
super._init({
|
||||
style_class: 'workspaces-view',
|
||||
x, y, width, height,
|
||||
});
|
||||
this.connect('destroy', this._onDestroy.bind(this));
|
||||
global.focus_manager.add_group(this);
|
||||
|
||||
// The actor itself isn't a drop target, so we don't want to pick on its area
|
||||
this.set_size(0, 0);
|
||||
|
||||
this._monitorIndex = monitorIndex;
|
||||
|
||||
this._fullGeometry = null;
|
||||
this._actualGeometry = null;
|
||||
|
||||
this._inDrag = false;
|
||||
this._windowDragBeginId = Main.overview.connect('window-drag-begin', this._dragBegin.bind(this));
|
||||
this._windowDragEndId = Main.overview.connect('window-drag-end', this._dragEnd.bind(this));
|
||||
@ -50,24 +52,19 @@ var WorkspacesViewBase = GObject.registerClass({
|
||||
}
|
||||
}
|
||||
|
||||
_dragBegin(overview, window) {
|
||||
_dragBegin() {
|
||||
this._inDrag = true;
|
||||
this._setReservedSlot(window);
|
||||
}
|
||||
|
||||
_dragEnd() {
|
||||
this._inDrag = false;
|
||||
this._setReservedSlot(null);
|
||||
}
|
||||
|
||||
setFullGeometry(geom) {
|
||||
this._fullGeometry = geom;
|
||||
this._syncFullGeometry();
|
||||
}
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
setActualGeometry(geom) {
|
||||
this._actualGeometry = geom;
|
||||
this._syncActualGeometry();
|
||||
for (const child of this)
|
||||
child.allocate_available_size(0, 0, box.get_width(), box.get_height());
|
||||
}
|
||||
});
|
||||
|
||||
@ -82,9 +79,8 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
this._gestureActive = false; // touch(pad) gestures
|
||||
|
||||
this._scrollAdjustment = scrollAdjustment;
|
||||
this._onScrollId =
|
||||
this._scrollAdjustment.connect('notify::value',
|
||||
this._onScroll.bind(this));
|
||||
this._onScrollId = this._scrollAdjustment.connect('notify::value',
|
||||
this._updateScrollPosition.bind(this));
|
||||
|
||||
this._workspaces = [];
|
||||
this._updateWorkspaces();
|
||||
@ -96,34 +92,42 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
this._workspaces.sort((a, b) => {
|
||||
return a.metaWorkspace.index() - b.metaWorkspace.index();
|
||||
});
|
||||
this._updateWorkspaceActors(false);
|
||||
this._workspaces.forEach(
|
||||
(ws, i) => this.set_child_at_index(ws, i));
|
||||
});
|
||||
|
||||
|
||||
this._overviewShownId =
|
||||
Main.overview.connect('shown', () => {
|
||||
this.set_clip(this._fullGeometry.x, this._fullGeometry.y,
|
||||
this._fullGeometry.width, this._fullGeometry.height);
|
||||
});
|
||||
this._overviewShownId = Main.overview.connect('shown', () => {
|
||||
this.clip_to_allocation = true;
|
||||
});
|
||||
|
||||
this._switchWorkspaceNotifyId =
|
||||
global.window_manager.connect('switch-workspace',
|
||||
this._activeWorkspaceChanged.bind(this));
|
||||
}
|
||||
|
||||
_setReservedSlot(window) {
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setReservedSlot(window);
|
||||
}
|
||||
vfunc_allocate(box) {
|
||||
this.set_allocation(box);
|
||||
|
||||
_syncFullGeometry() {
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setFullGeometry(this._fullGeometry);
|
||||
}
|
||||
if (this.get_n_children() === 0)
|
||||
return;
|
||||
|
||||
_syncActualGeometry() {
|
||||
for (let i = 0; i < this._workspaces.length; i++)
|
||||
this._workspaces[i].setActualGeometry(this._actualGeometry);
|
||||
const { workspaceManager } = global;
|
||||
const { nWorkspaces } = workspaceManager;
|
||||
|
||||
const vertical = workspaceManager.layout_rows === -1;
|
||||
const rtl = this.text_direction === Clutter.TextDirection.RTL;
|
||||
|
||||
this._workspaces.forEach((child, index) => {
|
||||
if (rtl && !vertical)
|
||||
index = nWorkspaces - index - 1;
|
||||
|
||||
const x = vertical ? 0 : index * this.width;
|
||||
const y = vertical ? index * this.height : 0;
|
||||
|
||||
child.allocate_available_size(x, y, box.get_width(), box.get_height());
|
||||
});
|
||||
|
||||
this._updateScrollPosition();
|
||||
}
|
||||
|
||||
getActiveWorkspace() {
|
||||
@ -139,11 +143,11 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
else
|
||||
this._workspaces[w].fadeToOverview();
|
||||
}
|
||||
this._updateWorkspaceActors(false);
|
||||
this._updateScrollPosition();
|
||||
}
|
||||
|
||||
animateFromOverview(animationType) {
|
||||
this.remove_clip();
|
||||
this.clip_to_allocation = false;
|
||||
|
||||
for (let w = 0; w < this._workspaces.length; w++) {
|
||||
if (animationType == AnimationType.ZOOM)
|
||||
@ -158,49 +162,22 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
this._workspaces[i].syncStacking(stackIndices);
|
||||
}
|
||||
|
||||
// Update workspace actors parameters
|
||||
// @showAnimation: iff %true, transition between states
|
||||
_updateWorkspaceActors(showAnimation) {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let active = workspaceManager.get_active_workspace_index();
|
||||
_scrollToActive() {
|
||||
const { workspaceManager } = global;
|
||||
const active = workspaceManager.get_active_workspace_index();
|
||||
|
||||
this._animating = showAnimation;
|
||||
this._animating = true;
|
||||
this._updateVisibility();
|
||||
|
||||
for (let w = 0; w < this._workspaces.length; w++) {
|
||||
let workspace = this._workspaces[w];
|
||||
|
||||
workspace.remove_all_transitions();
|
||||
|
||||
let params = {};
|
||||
if (workspaceManager.layout_rows == -1)
|
||||
params.y = (w - active) * this._fullGeometry.height;
|
||||
else if (this.text_direction == Clutter.TextDirection.RTL)
|
||||
params.x = (active - w) * this._fullGeometry.width;
|
||||
else
|
||||
params.x = (w - active) * this._fullGeometry.width;
|
||||
|
||||
if (showAnimation) {
|
||||
let easeParams = Object.assign(params, {
|
||||
duration: WORKSPACE_SWITCH_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
|
||||
});
|
||||
// we have to call _updateVisibility() once before the
|
||||
// animation and once afterwards - it does not really
|
||||
// matter which tween we use, so we pick the first one ...
|
||||
if (w == 0) {
|
||||
this._updateVisibility();
|
||||
easeParams.onComplete = () => {
|
||||
this._animating = false;
|
||||
this._updateVisibility();
|
||||
};
|
||||
}
|
||||
workspace.ease(easeParams);
|
||||
} else {
|
||||
workspace.set(params);
|
||||
if (w == 0)
|
||||
this._updateVisibility();
|
||||
}
|
||||
}
|
||||
this._scrollAdjustment.remove_transition('value');
|
||||
this._scrollAdjustment.ease(active, {
|
||||
duration: WORKSPACE_SWITCH_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
|
||||
onComplete: () => {
|
||||
this._animating = false;
|
||||
this._updateVisibility();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
_updateVisibility() {
|
||||
@ -241,19 +218,14 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
}
|
||||
}
|
||||
|
||||
if (this._fullGeometry) {
|
||||
this._updateWorkspaceActors(false);
|
||||
this._syncFullGeometry();
|
||||
}
|
||||
if (this._actualGeometry)
|
||||
this._syncActualGeometry();
|
||||
this._updateScrollPosition();
|
||||
}
|
||||
|
||||
_activeWorkspaceChanged(_wm, _from, _to, _direction) {
|
||||
if (this._scrolling)
|
||||
return;
|
||||
|
||||
this._updateWorkspaceActors(true);
|
||||
this._scrollToActive();
|
||||
}
|
||||
|
||||
_onDestroy() {
|
||||
@ -275,21 +247,25 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
this._gestureActive = false;
|
||||
|
||||
// Make sure title captions etc are shown as necessary
|
||||
this._updateWorkspaceActors(true);
|
||||
this._scrollToActive();
|
||||
this._updateVisibility();
|
||||
}
|
||||
|
||||
// sync the workspaces' positions to the value of the scroll adjustment
|
||||
// and change the active workspace if appropriate
|
||||
_onScroll(adj) {
|
||||
if (adj.get_transition('value') !== null && !this._gestureActive)
|
||||
_updateScrollPosition() {
|
||||
if (!this.has_allocation())
|
||||
return;
|
||||
|
||||
const adj = this._scrollAdjustment;
|
||||
const allowSwitch =
|
||||
adj.get_transition('value') === null && !this._gestureActive;
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let active = workspaceManager.get_active_workspace_index();
|
||||
let current = Math.round(adj.value);
|
||||
|
||||
if (active != current && !this._gestureActive) {
|
||||
if (allowSwitch && active !== current) {
|
||||
if (!this._workspaces[current]) {
|
||||
// The current workspace was destroyed. This could happen
|
||||
// when you are on the last empty workspace, and consolidate
|
||||
@ -306,36 +282,16 @@ class WorkspacesView extends WorkspacesViewBase {
|
||||
if (adj.upper == 1)
|
||||
return;
|
||||
|
||||
let last = this._workspaces.length - 1;
|
||||
const vertical = workspaceManager.layout_rows === -1;
|
||||
const rtl = this.text_direction === Clutter.TextDirection.RTL;
|
||||
const progress = vertical || !rtl
|
||||
? adj.value : adj.upper - adj.value;
|
||||
|
||||
if (workspaceManager.layout_rows == -1) {
|
||||
let firstWorkspaceY = this._workspaces[0].y;
|
||||
let lastWorkspaceY = this._workspaces[last].y;
|
||||
let workspacesHeight = lastWorkspaceY - firstWorkspaceY;
|
||||
|
||||
let currentY = firstWorkspaceY;
|
||||
let newY = -Math.round(adj.value / (adj.upper - 1) * workspacesHeight);
|
||||
|
||||
let dy = newY - currentY;
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++) {
|
||||
this._workspaces[i].visible = Math.abs(i - adj.value) <= 1;
|
||||
this._workspaces[i].y += dy;
|
||||
}
|
||||
} else {
|
||||
let firstWorkspaceX = this._workspaces[0].x;
|
||||
let lastWorkspaceX = this._workspaces[last].x;
|
||||
let workspacesWidth = lastWorkspaceX - firstWorkspaceX;
|
||||
|
||||
let currentX = firstWorkspaceX;
|
||||
let newX = -Math.round(adj.value / (adj.upper - 1) * workspacesWidth);
|
||||
|
||||
let dx = newX - currentX;
|
||||
|
||||
for (let i = 0; i < this._workspaces.length; i++) {
|
||||
this._workspaces[i].visible = Math.abs(i - adj.value) <= 1;
|
||||
this._workspaces[i].x += dx;
|
||||
}
|
||||
for (const ws of this._workspaces) {
|
||||
if (vertical)
|
||||
ws.translation_y = -progress * this.height;
|
||||
else
|
||||
ws.translation_x = -progress * this.width;
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -348,18 +304,6 @@ class ExtraWorkspaceView extends WorkspacesViewBase {
|
||||
this.add_actor(this._workspace);
|
||||
}
|
||||
|
||||
_setReservedSlot(window) {
|
||||
this._workspace.setReservedSlot(window);
|
||||
}
|
||||
|
||||
_syncFullGeometry() {
|
||||
this._workspace.setFullGeometry(this._fullGeometry);
|
||||
}
|
||||
|
||||
_syncActualGeometry() {
|
||||
this._workspace.setActualGeometry(this._actualGeometry);
|
||||
}
|
||||
|
||||
getActiveWorkspace() {
|
||||
return this._workspace;
|
||||
}
|
||||
@ -392,7 +336,10 @@ class ExtraWorkspaceView extends WorkspacesViewBase {
|
||||
var WorkspacesDisplay = GObject.registerClass(
|
||||
class WorkspacesDisplay extends St.Widget {
|
||||
_init(scrollAdjustment) {
|
||||
super._init({ clip_to_allocation: true });
|
||||
super._init({
|
||||
visible: false,
|
||||
clip_to_allocation: true,
|
||||
});
|
||||
this.connect('notify::allocation', this._updateWorkspacesActualGeometry.bind(this));
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
@ -434,6 +381,8 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._windowDragEndId =
|
||||
Main.overview.connect('window-drag-begin',
|
||||
this._windowDragEnd.bind(this));
|
||||
this._overviewShownId = Main.overview.connect('shown',
|
||||
this._syncWorkspacesActualGeometry.bind(this));
|
||||
|
||||
this._primaryIndex = Main.layoutManager.primaryIndex;
|
||||
this._workspacesViews = [];
|
||||
@ -448,8 +397,9 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._scrollEventId = 0;
|
||||
this._keyPressEventId = 0;
|
||||
this._scrollTimeoutId = 0;
|
||||
this._syncActualGeometryLater = 0;
|
||||
|
||||
this._fullGeometry = null;
|
||||
this._actualGeometry = null;
|
||||
this._inWindowDrag = false;
|
||||
|
||||
this._gestureActive = false; // touch(pad) gestures
|
||||
@ -471,6 +421,11 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._parentSetLater = 0;
|
||||
}
|
||||
|
||||
if (this._syncActualGeometryLater) {
|
||||
Meta.later_remove(this._syncActualGeometryLater);
|
||||
this._syncActualGeometryLater = 0;
|
||||
}
|
||||
|
||||
if (this._scrollTimeoutId !== 0) {
|
||||
GLib.source_remove(this._scrollTimeoutId);
|
||||
this._scrollTimeoutId = 0;
|
||||
@ -480,6 +435,7 @@ class WorkspacesDisplay extends St.Widget {
|
||||
global.workspace_manager.disconnect(this._reorderWorkspacesdId);
|
||||
Main.overview.disconnect(this._windowDragBeginId);
|
||||
Main.overview.disconnect(this._windowDragEndId);
|
||||
Main.overview.disconnect(this._overviewShownId);
|
||||
}
|
||||
|
||||
_windowDragBegin() {
|
||||
@ -503,25 +459,11 @@ class WorkspacesDisplay extends St.Widget {
|
||||
workspaceManager.get_active_workspace_index();
|
||||
}
|
||||
|
||||
_activeWorkspaceChanged(_wm, _from, _to, _direction) {
|
||||
_activeWorkspaceChanged(_wm, _from, to, _direction) {
|
||||
if (this._gestureActive)
|
||||
return;
|
||||
|
||||
this._scrollToActive();
|
||||
}
|
||||
|
||||
_scrollToActive() {
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let active = workspaceManager.get_active_workspace_index();
|
||||
|
||||
this._updateScrollAdjustment(active);
|
||||
}
|
||||
|
||||
_updateScrollAdjustment(index) {
|
||||
if (this._gestureActive)
|
||||
return;
|
||||
|
||||
this._scrollAdjustment.ease(index, {
|
||||
this._scrollAdjustment.ease(to, {
|
||||
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
|
||||
duration: WORKSPACE_SWITCH_TIME,
|
||||
});
|
||||
@ -559,11 +501,8 @@ class WorkspacesDisplay extends St.Widget {
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].startTouchGesture();
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
let geometry = monitor === this._primaryIndex
|
||||
? this._fullGeometry : monitors[monitor];
|
||||
let distance = global.workspace_manager.layout_rows === -1
|
||||
? geometry.height : geometry.width;
|
||||
? this.height : this.width;
|
||||
|
||||
let progress = adjustment.value / adjustment.page_size;
|
||||
let points = Array.from(
|
||||
@ -583,14 +522,13 @@ class WorkspacesDisplay extends St.Widget {
|
||||
this._clickAction.release();
|
||||
|
||||
let workspaceManager = global.workspace_manager;
|
||||
let activeWorkspace = workspaceManager.get_active_workspace();
|
||||
let newWs = workspaceManager.get_workspace_by_index(endProgress);
|
||||
|
||||
this._scrollAdjustment.ease(endProgress, {
|
||||
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
|
||||
duration,
|
||||
onComplete: () => {
|
||||
if (newWs !== activeWorkspace)
|
||||
if (!newWs.active)
|
||||
newWs.activate(global.get_current_time());
|
||||
this._endTouchGesture();
|
||||
},
|
||||
@ -607,15 +545,22 @@ class WorkspacesDisplay extends St.Widget {
|
||||
return this._getPrimaryView().navigate_focus(from, direction, false);
|
||||
}
|
||||
|
||||
show(fadeOnPrimary) {
|
||||
animateToOverview(fadeOnPrimary) {
|
||||
this.show();
|
||||
this._updateWorkspacesViews();
|
||||
for (let i = 0; i < this._workspacesViews.length; i++) {
|
||||
let animationType;
|
||||
if (fadeOnPrimary && i == this._primaryIndex)
|
||||
animationType = AnimationType.FADE;
|
||||
else
|
||||
animationType = AnimationType.ZOOM;
|
||||
this._workspacesViews[i].animateToOverview(animationType);
|
||||
|
||||
if (this._actualGeometry) {
|
||||
for (let i = 0; i < this._workspacesViews.length; i++) {
|
||||
let animationType;
|
||||
if (fadeOnPrimary && i == this._primaryIndex)
|
||||
animationType = AnimationType.FADE;
|
||||
else
|
||||
animationType = AnimationType.ZOOM;
|
||||
this._workspacesViews[i].animateToOverview(animationType);
|
||||
}
|
||||
|
||||
if (!fadeOnPrimary)
|
||||
this._syncWorkspacesActualGeometry();
|
||||
}
|
||||
|
||||
this._restackedNotifyId =
|
||||
@ -637,9 +582,18 @@ class WorkspacesDisplay extends St.Widget {
|
||||
animationType = AnimationType.ZOOM;
|
||||
this._workspacesViews[i].animateFromOverview(animationType);
|
||||
}
|
||||
|
||||
const { primaryIndex } = Main.layoutManager;
|
||||
const { x, y, width, height } =
|
||||
Main.layoutManager.getWorkAreaForMonitor(primaryIndex);
|
||||
this._getPrimaryView().ease({
|
||||
x, y, width, height,
|
||||
duration: fadeOnPrimary ? 0 : ANIMATION_TIME,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
}
|
||||
|
||||
hide() {
|
||||
vfunc_hide() {
|
||||
if (this._restackedNotifyId > 0) {
|
||||
Main.overview.disconnect(this._restackedNotifyId);
|
||||
this._restackedNotifyId = 0;
|
||||
@ -655,6 +609,8 @@ class WorkspacesDisplay extends St.Widget {
|
||||
for (let i = 0; i < this._workspacesViews.length; i++)
|
||||
this._workspacesViews[i].destroy();
|
||||
this._workspacesViews = [];
|
||||
|
||||
super.vfunc_hide();
|
||||
}
|
||||
|
||||
_workspacesOnlyOnPrimaryChanged() {
|
||||
@ -664,6 +620,7 @@ class WorkspacesDisplay extends St.Widget {
|
||||
return;
|
||||
|
||||
this._updateWorkspacesViews();
|
||||
this._syncWorkspacesActualGeometry();
|
||||
}
|
||||
|
||||
_updateWorkspacesViews() {
|
||||
@ -680,17 +637,9 @@ class WorkspacesDisplay extends St.Widget {
|
||||
else
|
||||
view = new WorkspacesView(i, this._scrollAdjustment);
|
||||
|
||||
// HACK: Avoid spurious allocation changes while updating views
|
||||
view.hide();
|
||||
|
||||
this._workspacesViews.push(view);
|
||||
Main.layoutManager.overviewGroup.add_actor(view);
|
||||
}
|
||||
|
||||
this._workspacesViews.forEach(v => v.show());
|
||||
|
||||
this._updateWorkspacesFullGeometry();
|
||||
this._updateWorkspacesActualGeometry();
|
||||
}
|
||||
|
||||
_getMonitorIndexForEvent(event) {
|
||||
@ -737,40 +686,35 @@ class WorkspacesDisplay extends St.Widget {
|
||||
});
|
||||
}
|
||||
|
||||
// This geometry should always be the fullest geometry
|
||||
// the workspaces switcher can ever be allocated, as if
|
||||
// the sliding controls were never slid in at all.
|
||||
setWorkspacesFullGeometry(geom) {
|
||||
this._fullGeometry = geom;
|
||||
this._updateWorkspacesFullGeometry();
|
||||
}
|
||||
|
||||
_updateWorkspacesFullGeometry() {
|
||||
if (!this._workspacesViews.length)
|
||||
return;
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
let geometry = i == this._primaryIndex ? this._fullGeometry : monitors[i];
|
||||
this._workspacesViews[i].setFullGeometry(geometry);
|
||||
}
|
||||
}
|
||||
|
||||
_updateWorkspacesActualGeometry() {
|
||||
if (!this._workspacesViews.length)
|
||||
const [x, y] = this.get_transformed_position();
|
||||
const width = this.allocation.get_width();
|
||||
const height = this.allocation.get_height();
|
||||
|
||||
this._actualGeometry = { x, y, width, height };
|
||||
|
||||
if (this._syncActualGeometryLater > 0)
|
||||
return;
|
||||
|
||||
let [x, y] = this.get_transformed_position();
|
||||
let allocation = this.allocation;
|
||||
let width = allocation.x2 - allocation.x1;
|
||||
let height = allocation.y2 - allocation.y1;
|
||||
let primaryGeometry = { x, y, width, height };
|
||||
this._syncActualGeometryLater =
|
||||
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
|
||||
this._syncWorkspacesActualGeometry();
|
||||
|
||||
let monitors = Main.layoutManager.monitors;
|
||||
for (let i = 0; i < monitors.length; i++) {
|
||||
let geometry = i == this._primaryIndex ? primaryGeometry : monitors[i];
|
||||
this._workspacesViews[i].setActualGeometry(geometry);
|
||||
}
|
||||
this._syncActualGeometryLater = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
});
|
||||
}
|
||||
|
||||
_syncWorkspacesActualGeometry() {
|
||||
const primaryView = this._getPrimaryView();
|
||||
if (!primaryView)
|
||||
return;
|
||||
|
||||
primaryView.ease({
|
||||
...this._actualGeometry,
|
||||
duration: Main.overview.animationInProgress ? ANIMATION_TIME : 0,
|
||||
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
|
||||
});
|
||||
}
|
||||
|
||||
_onRestacked(overview, stackIndices) {
|
||||
@ -815,7 +759,7 @@ class WorkspacesDisplay extends St.Widget {
|
||||
|
||||
this._canScroll = false;
|
||||
this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
|
||||
WORKSPACE_SWITCH_TIME, () => {
|
||||
SCROLL_TIMEOUT_TIME, () => {
|
||||
this._canScroll = true;
|
||||
this._scrollTimeoutId = 0;
|
||||
return GLib.SOURCE_REMOVE;
|
||||
|
@ -1,5 +1,5 @@
|
||||
project('gnome-shell', 'c',
|
||||
version: '3.37.1',
|
||||
version: '3.37.3',
|
||||
meson_version: '>= 0.53.0',
|
||||
license: 'GPLv2+'
|
||||
)
|
||||
@ -25,7 +25,7 @@ gio_req = '>= 2.56.0'
|
||||
gi_req = '>= 1.49.1'
|
||||
gjs_req = '>= 1.65.1'
|
||||
gtk_req = '>= 3.15.0'
|
||||
mutter_req = '>= 3.37.1'
|
||||
mutter_req = '>= 3.37.3'
|
||||
polkit_req = '>= 0.100'
|
||||
schemas_req = '>= 3.33.1'
|
||||
startup_req = '>= 0.11'
|
||||
|
@ -56,6 +56,7 @@ nl
|
||||
nn
|
||||
oc
|
||||
or
|
||||
os
|
||||
pa
|
||||
pl
|
||||
pt
|
||||
|
439
po/de.po
439
po/de.po
@ -22,9 +22,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-20 06:42+0100\n"
|
||||
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
|
||||
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
|
||||
"PO-Revision-Date: 2020-05-24 00:19+0200\n"
|
||||
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
|
||||
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@ -409,68 +409,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Netzwerkanmeldung"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Erweiterungen"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Ihre GNOME-Erweiterungen verwalten"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"GNOME-Erweiterungen dient der Aktualisierung von Erweiterungen, dem "
|
||||
"Konfigurieren der Voreinstellungen von Erweiterungen und dem Entfernen oder "
|
||||
"Deaktivieren nicht gewünschter Erweiterungen."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME-Shell-Erweiterungen einrichten"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "»%s« entfernen?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Wenn Sie die Erweiterung entfernen, müssen Sie sie erneut herunterladen, um "
|
||||
"sie wieder zu aktivieren"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Tim Sabsch <tim@sabsch.com>\n"
|
||||
"Christian Kirbach <christian.kirbach@gmail.com>, 2020"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Etwas ist schiefgelaufen"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -480,106 +424,25 @@ msgstr ""
|
||||
"Erweiterung können nicht angezeigt werden. Wir empfehlen, dass Sie diesen "
|
||||
"Fehler den Autoren der Erweiterung melden."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Technische Details"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Kopierfehler"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Homepage"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Internetseite der Erweiterung besuchen"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert."
|
||||
msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Entfernen …"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Info zu Erweiterungen"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Besuchen Sie <a href=\"https://extensions.gnome.org\">extensions.gnome.org</"
|
||||
"a>, um Erweiterungen zu finden und hinzuzufügen."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Warnung"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Erweiterungen können Probleme am System verursachen, darunter auch "
|
||||
"Leistungsprobleme. Sollten Sie auf Probleme mit Ihrem System stoßen, wird "
|
||||
"die Deaktivierung aller Erweiterungen empfohlen."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manuell installiert"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Mitgeliefert"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Keine installierten Erweiterungen"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Tut uns sehr leid, wir konnten keine Liste der installierten Erweiterungen "
|
||||
"aufstellen. Stellen Sie sicher, dass Sie in GNOME angemeldet sind und "
|
||||
"versuchen Sie es dann erneut."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Abmelden …"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Abbrechen"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -631,71 +494,71 @@ msgid "(or swipe finger)"
|
||||
msgstr "(oder wischen Sie mit einem Finger)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Ausschalten"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "ausschalten;herunterfahren;neustarten;halten;stoppen"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Bildschirm sperren"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "Bildschirm sperren"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Abmelden"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "abmelden;verlassen"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Bereitschaft"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "Bereitschaft;Schlafen"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Benutzer wechseln"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "Benutzer wechseln"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr "Hochformat;Querformat;sperren;entsperren;Bildschirm;Drehung;drehen"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Bildschirmdrehung entsperren"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Bildschirmdrehung sperren"
|
||||
@ -861,54 +724,54 @@ msgstr "Zugriff verhindern"
|
||||
msgid "Grant Access"
|
||||
msgstr "Zugriff gewähren"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Unbenannter Ordner"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Häufig genutzte Anwendungen erscheinen hier"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Häufig"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Alle"
|
||||
|
||||
# Fensterüberschrift
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Offene Fenster"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Neues Fenster"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Mit dedizierter Grafikkarte starten"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Aus Favoriten entfernen"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Zu Favoriten hinzufügen"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Details anzeigen"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s wurde zu Ihren Favoriten hinzugefügt."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s wurde aus Ihren Favoriten entfernt."
|
||||
@ -929,7 +792,7 @@ msgstr "Kopfhörer"
|
||||
msgid "Headset"
|
||||
msgstr "Headset"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
@ -1070,7 +933,7 @@ msgstr "Keine Termine"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Nicht stören"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Leeren"
|
||||
|
||||
@ -1223,7 +1086,7 @@ msgstr ""
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s heißt jetzt %s"
|
||||
@ -1268,23 +1131,23 @@ msgstr "Weltuhren hinzufügen …"
|
||||
msgid "World Clocks"
|
||||
msgstr "Weltuhren"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Wetter"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Ort auswählen …"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Wird geladen …"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Wetterinformationen sind momentan nicht verfügbar"
|
||||
|
||||
@ -1425,35 +1288,35 @@ msgid "Other users are logged in"
|
||||
msgstr "Andere Benutzer sind angemeldet"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (Entfernt)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (Konsole)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Installieren"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Erweiterung installieren"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Aktualisierungen für Erweiterungen verfügbar"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Aktualisierungen für Erweiterungen stehen bereit zur Installation."
|
||||
|
||||
@ -1602,11 +1465,11 @@ msgstr "Quelle zeigen"
|
||||
msgid "Web Page"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Als privilegierter Benutzer angemeldet"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1615,23 +1478,23 @@ msgstr ""
|
||||
"Sicherheitsgründen unterlassen werden. Falls möglich, melden Sie sich bitte "
|
||||
"als normaler Benutzer an."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Bildschirmsperre deaktiviert"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Die Sperrung des Bildschirms erfordert den GNOME Display-Manager."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformationen"
|
||||
|
||||
#: js/ui/mpris.js:199
|
||||
#: js/ui/mpris.js:204
|
||||
msgid "Unknown artist"
|
||||
msgstr "Unbekannter Künstler"
|
||||
|
||||
#: js/ui/mpris.js:209
|
||||
#: js/ui/mpris.js:214
|
||||
msgid "Unknown title"
|
||||
msgstr "Unbekannter Titel"
|
||||
|
||||
@ -1703,16 +1566,16 @@ msgstr "Beenden"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitäten"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Oberes Panel"
|
||||
|
||||
@ -1743,11 +1606,11 @@ msgstr "GNOME muss den Bildschirm sperren"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Sperrung fehlgeschlagen"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Sperrung wurde von einer Anwendung blockiert"
|
||||
|
||||
@ -1830,13 +1693,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "Die PIM muss eine Nummer oder leer sein."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "%s konnte nicht gestartet werden"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Die Anwendung %s konnte nicht gefunden werden"
|
||||
@ -2320,11 +2183,11 @@ msgstr "Thunderbolt-Legitimierungsfehler"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Das Thunderbolt-Gerät %s konnte nicht legitimiert werden"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Lautstärke geändert"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Lautstärke"
|
||||
|
||||
@ -2358,23 +2221,23 @@ msgstr "Nur eingebaut"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A, %d. %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Nach oben wischen zum Entsperren"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Durch Mausklick oder Tastendruck entsperren"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Fenster entsperren"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Als anderer Benutzer anmelden"
|
||||
|
||||
@ -2407,7 +2270,7 @@ msgstr "Zurücksetzen"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Beibehalten"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2417,7 +2280,7 @@ msgstr[1] ""
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2512,12 +2375,12 @@ msgstr ""
|
||||
msgid "List possible modes"
|
||||
msgstr "Die möglichen Modi auflisten"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "»%s« konnte nicht gestartet werden"
|
||||
@ -2534,6 +2397,143 @@ msgstr "Es muss ein Passwort angegeben werden"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Der Dialog zur Anmeldung wurde vom Benutzer geschlossen"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Erweiterungen"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Ihre GNOME-Erweiterungen verwalten"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"GNOME-Erweiterungen dient der Aktualisierung von Erweiterungen, dem "
|
||||
"Konfigurieren der Voreinstellungen von Erweiterungen und dem Entfernen oder "
|
||||
"Deaktivieren nicht gewünschter Erweiterungen."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "GNOME-Shell-Erweiterungen einrichten"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "»%s« entfernen?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Wenn Sie die Erweiterung entfernen, müssen Sie sie erneut herunterladen, um "
|
||||
"sie wieder zu aktivieren"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Entfernen"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Tim Sabsch <tim@sabsch.com>\n"
|
||||
"Christian Kirbach <christian.kirbach@gmail.com>, 2020"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert."
|
||||
msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Webseite"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Entfernen …"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hilfe"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Info zu Erweiterungen"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Besuchen Sie <a href=\"https://extensions.gnome.org\">extensions.gnome.org</"
|
||||
"a>, um Erweiterungen zu finden und hinzuzufügen."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Warnung"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Erweiterungen können Probleme am System verursachen, darunter auch "
|
||||
"Leistungsprobleme. Sollten Sie auf Probleme mit Ihrem System stoßen, wird "
|
||||
"die Deaktivierung aller Erweiterungen empfohlen."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manuell installiert"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Mitgeliefert"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Keine installierten Erweiterungen"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Tut uns sehr leid, wir konnten keine Liste der installierten Erweiterungen "
|
||||
"aufstellen. Stellen Sie sicher, dass Sie in GNOME angemeldet sind und "
|
||||
"versuchen Sie es dann erneut."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Aktualisierungen für Erweiterungen stehen bereit"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Abmelden …"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2872,6 +2872,9 @@ msgstr[1] "%u Eingänge"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemklänge"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Kopierfehler"
|
||||
|
||||
#~ msgid "Username…"
|
||||
#~ msgstr "Benutzername …"
|
||||
|
||||
|
521
po/en_GB.po
521
po/en_GB.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-02-21 09:52+0000\n"
|
||||
"PO-Revision-Date: 2020-02-23 12:49+0000\n"
|
||||
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
|
||||
"PO-Revision-Date: 2020-05-06 19:54+0100\n"
|
||||
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Language-Team: English - United Kingdom <en@li.org>\n"
|
||||
"Language: en_GB\n"
|
||||
@ -19,7 +19,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Gtranslator 3.34.0\n"
|
||||
"X-Generator: Gtranslator 3.36.0\n"
|
||||
"X-Project-Style: gnome\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
@ -46,15 +46,6 @@ msgstr "Show all applications"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Open the application menu"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Extensions"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configure GNOME Shell Extensions"
|
||||
|
||||
#: data/org.gnome.Shell.desktop.in.in:4
|
||||
msgid "GNOME Shell"
|
||||
msgstr "GNOME Shell"
|
||||
@ -395,49 +386,12 @@ msgstr "Delay focus changes in mouse mode until the pointer stops moving"
|
||||
msgid "Network Login"
|
||||
msgstr "Network Login"
|
||||
|
||||
#: js/extensionPrefs/main.js:140
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Remove “%s”?"
|
||||
|
||||
#: js/extensionPrefs/main.js:141
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
|
||||
#: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#: js/extensionPrefs/main.js:145
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
|
||||
#: js/extensionPrefs/main.js:217
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Philip Withnall <philip@tecnocode.co.uk>\n"
|
||||
"Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Chris Leonard <cjl@laptop.org>\n"
|
||||
"David King <amigadave@amigadave.com>\n"
|
||||
"Zander Brown <zbrown@gnome.org>"
|
||||
|
||||
#: js/extensionPrefs/main.js:219
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Manage your GNOME Extensions"
|
||||
|
||||
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Something’s gone wrong"
|
||||
|
||||
#: js/extensionPrefs/main.js:268
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -447,113 +401,32 @@ msgstr ""
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
"extension authors."
|
||||
|
||||
#: js/extensionPrefs/main.js:275
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Technical Details"
|
||||
|
||||
#: js/extensionPrefs/main.js:310
|
||||
msgid "Copy Error"
|
||||
msgstr "Copy Error"
|
||||
|
||||
#: js/extensionPrefs/main.js:337
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Homepage"
|
||||
|
||||
#: js/extensionPrefs/main.js:338
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Visit extension homepage"
|
||||
|
||||
#: js/extensionPrefs/main.js:449
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d extension will be updated on next login."
|
||||
msgstr[1] "%d extensions will be updated on next login."
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Author"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Remove…"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "About Extensions"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Warning"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:133
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manually Installed"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:157
|
||||
msgid "Built-In"
|
||||
msgstr "Built-In"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:198
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "No Installed Extensions"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:234
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:287
|
||||
msgid "Log Out…"
|
||||
msgstr "Log Out…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Cancel"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:236 js/ui/components/networkAgent.js:202
|
||||
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
|
||||
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
|
||||
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
#| msgid "Password:"
|
||||
msgid "Password"
|
||||
msgstr "Password"
|
||||
|
||||
@ -575,9 +448,8 @@ msgstr "(e.g., user or %s)"
|
||||
#. 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/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
|
||||
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
|
||||
#| msgid "Username: "
|
||||
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
||||
msgid "Username"
|
||||
msgstr "Username"
|
||||
|
||||
@ -758,7 +630,7 @@ msgstr "%A, %H∶%M"
|
||||
#: js/misc/util.js:255
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %H∶%M"
|
||||
msgstr "%d %B, %H∶%M"
|
||||
msgstr "%-d %B, %H∶%M"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 24h format.
|
||||
@ -766,7 +638,7 @@ msgstr "%d %B, %H∶%M"
|
||||
#: js/misc/util.js:261
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %H∶%M"
|
||||
msgstr "%d %B %Y, %H∶%M"
|
||||
msgstr "%-d %B %Y, %H∶%M"
|
||||
|
||||
#. Show only the time if date is on today
|
||||
#. eslint-disable-line no-lonely-if
|
||||
@ -795,7 +667,7 @@ msgstr "%A, %l:%M %p"
|
||||
#: js/misc/util.js:284
|
||||
#, no-c-format
|
||||
msgid "%B %-d, %l∶%M %p"
|
||||
msgstr "%d %B, %l∶%M %p"
|
||||
msgstr "%-d %B, %l∶%M %p"
|
||||
|
||||
#. Translators: this is the month name, day number, year
|
||||
#. number followed by a time string in 12h format.
|
||||
@ -803,7 +675,7 @@ msgstr "%d %B, %l∶%M %p"
|
||||
#: js/misc/util.js:290
|
||||
#, no-c-format
|
||||
msgid "%B %-d %Y, %l∶%M %p"
|
||||
msgstr "%d %B %Y, %l∶%M %p"
|
||||
msgstr "%-d %B %Y, %l∶%M %p"
|
||||
|
||||
#. TRANSLATORS: this is the title of the wifi captive portal login window
|
||||
#: js/portalHelper/main.js:41
|
||||
@ -828,44 +700,44 @@ msgstr "Deny Access"
|
||||
msgid "Grant Access"
|
||||
msgstr "Grant Access"
|
||||
|
||||
#: js/ui/appDisplay.js:906
|
||||
#: js/ui/appDisplay.js:932
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Unnamed Folder"
|
||||
|
||||
#: js/ui/appDisplay.js:929
|
||||
#: js/ui/appDisplay.js:955
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Frequently used applications will appear here"
|
||||
|
||||
#: js/ui/appDisplay.js:1064
|
||||
#: js/ui/appDisplay.js:1090
|
||||
msgid "Frequent"
|
||||
msgstr "Frequent"
|
||||
|
||||
#: js/ui/appDisplay.js:1071
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "All"
|
||||
msgstr "All"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Open Windows"
|
||||
|
||||
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "New Window"
|
||||
|
||||
#: js/ui/appDisplay.js:2481
|
||||
#: js/ui/appDisplay.js:2504
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Launch using Dedicated Graphics Card"
|
||||
|
||||
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Remove from Favourites"
|
||||
|
||||
#: js/ui/appDisplay.js:2515
|
||||
#: js/ui/appDisplay.js:2538
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Add to Favourites"
|
||||
|
||||
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Show Details"
|
||||
|
||||
@ -895,7 +767,7 @@ msgstr "Headphones"
|
||||
msgid "Headset"
|
||||
msgstr "Headset"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Microphone"
|
||||
|
||||
@ -1013,30 +885,30 @@ msgid "All Day"
|
||||
msgstr "All Day"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: js/ui/calendar.js:867
|
||||
#: js/ui/calendar.js:868
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d"
|
||||
msgstr "%A, %d %B"
|
||||
msgstr "%A, %-d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: js/ui/calendar.js:870
|
||||
#: js/ui/calendar.js:871
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d, %Y"
|
||||
msgstr "%A, %d %B, %Y"
|
||||
msgstr "%A, %-d %B, %Y"
|
||||
|
||||
#: js/ui/calendar.js:1096
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "No Notifications"
|
||||
|
||||
#: js/ui/calendar.js:1099
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "No Events"
|
||||
|
||||
#: js/ui/calendar.js:1153
|
||||
#: js/ui/calendar.js:1157
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Do Not Disturb"
|
||||
|
||||
#: js/ui/calendar.js:1167
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Clear"
|
||||
|
||||
@ -1083,43 +955,39 @@ msgstr "The installed udisks version does not support the PIM setting"
|
||||
msgid "Open with %s"
|
||||
msgstr "Open with %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:89
|
||||
#: js/ui/components/networkAgent.js:91
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
|
||||
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
|
||||
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
|
||||
#: js/ui/status/network.js:314 js/ui/status/network.js:916
|
||||
msgid "Connect"
|
||||
msgstr "Connect"
|
||||
|
||||
#: js/ui/components/networkAgent.js:208
|
||||
#| msgid "Key: "
|
||||
#: js/ui/components/networkAgent.js:210
|
||||
msgid "Key"
|
||||
msgstr "Key"
|
||||
|
||||
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
|
||||
#| msgid "Private key password: "
|
||||
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
|
||||
msgid "Private key password"
|
||||
msgstr "Private key password"
|
||||
|
||||
#: js/ui/components/networkAgent.js:267
|
||||
#| msgid "Identity: "
|
||||
#: js/ui/components/networkAgent.js:269
|
||||
msgid "Identity"
|
||||
msgstr "Identity"
|
||||
|
||||
#: js/ui/components/networkAgent.js:281
|
||||
#| msgid "Service: "
|
||||
#: js/ui/components/networkAgent.js:283
|
||||
msgid "Service"
|
||||
msgstr "Service"
|
||||
|
||||
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Authentication required"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
|
||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1128,44 +996,42 @@ msgstr ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
|
||||
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "Wired 802.1X authentication"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317
|
||||
#| msgid "Network name: "
|
||||
#: js/ui/components/networkAgent.js:319
|
||||
msgid "Network name"
|
||||
msgstr "Network name"
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL authentication"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
|
||||
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN code required"
|
||||
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
|
||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "PIN code is needed for the mobile broadband device"
|
||||
|
||||
#: js/ui/components/networkAgent.js:331
|
||||
#| msgid "PIN: "
|
||||
#: js/ui/components/networkAgent.js:333
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
|
||||
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
|
||||
#: js/ui/components/networkAgent.js:711
|
||||
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "A password is required to connect to “%s”."
|
||||
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
|
||||
msgid "Network Manager"
|
||||
msgstr "Network Manager"
|
||||
|
||||
#: js/ui/components/networkAgent.js:710
|
||||
#: js/ui/components/networkAgent.js:704
|
||||
msgid "VPN password"
|
||||
msgstr "VPN password"
|
||||
|
||||
@ -1191,7 +1057,7 @@ msgstr "Sorry, that didn’t work. Please try again."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s is now known as %s"
|
||||
@ -1217,7 +1083,7 @@ msgstr "Dash"
|
||||
#.
|
||||
#: js/ui/dateMenu.js:75
|
||||
msgid "%B %-d %Y"
|
||||
msgstr "%e %B %Y"
|
||||
msgstr "%-d %B %Y"
|
||||
|
||||
#. Translators: This is the accessible name of the date button shown
|
||||
#. * below the time in the shell; it should combine the weekday and the
|
||||
@ -1235,106 +1101,106 @@ msgstr "Add world clocks…"
|
||||
msgid "World Clocks"
|
||||
msgstr "World Clocks"
|
||||
|
||||
#: js/ui/dateMenu.js:276
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Weather"
|
||||
|
||||
#: js/ui/dateMenu.js:391
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Select a location…"
|
||||
|
||||
#: js/ui/dateMenu.js:404
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Loading…"
|
||||
|
||||
#: js/ui/dateMenu.js:414
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Go online for weather information"
|
||||
|
||||
#: js/ui/dateMenu.js:416
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Weather information is currently unavailable"
|
||||
|
||||
#: js/ui/endSessionDialog.js:37
|
||||
#: js/ui/endSessionDialog.js:39
|
||||
#, javascript-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Log Out %s"
|
||||
|
||||
#: js/ui/endSessionDialog.js:38
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Log Out"
|
||||
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#: js/ui/endSessionDialog.js:42
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] "%s will be logged out automatically in %d second."
|
||||
msgstr[1] "%s will be logged out automatically in %d seconds."
|
||||
|
||||
#: js/ui/endSessionDialog.js:45
|
||||
#: js/ui/endSessionDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
msgstr[0] "You will be logged out automatically in %d second."
|
||||
msgstr[1] "You will be logged out automatically in %d seconds."
|
||||
|
||||
#: js/ui/endSessionDialog.js:51
|
||||
#: js/ui/endSessionDialog.js:53
|
||||
msgctxt "button"
|
||||
msgid "Log Out"
|
||||
msgstr "Log Out"
|
||||
|
||||
#: js/ui/endSessionDialog.js:56
|
||||
#: js/ui/endSessionDialog.js:58
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Power Off"
|
||||
|
||||
#: js/ui/endSessionDialog.js:57
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
msgctxt "title"
|
||||
msgid "Install Updates & Power Off"
|
||||
msgstr "Install Updates & Power Off"
|
||||
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#: js/ui/endSessionDialog.js:61
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
msgstr[0] "The system will power off automatically in %d second."
|
||||
msgstr[1] "The system will power off automatically in %d seconds."
|
||||
|
||||
#: js/ui/endSessionDialog.js:63
|
||||
#: js/ui/endSessionDialog.js:65
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Install pending software updates"
|
||||
|
||||
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
|
||||
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: js/ui/endSessionDialog.js:68
|
||||
#: js/ui/endSessionDialog.js:70
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Power Off"
|
||||
|
||||
#: js/ui/endSessionDialog.js:74
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Restart"
|
||||
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#: js/ui/endSessionDialog.js:78
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgstr[0] "The system will restart automatically in %d second."
|
||||
msgstr[1] "The system will restart automatically in %d seconds."
|
||||
|
||||
#: js/ui/endSessionDialog.js:89
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Restart & Install Updates"
|
||||
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#: js/ui/endSessionDialog.js:93
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
@ -1344,22 +1210,22 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
"The system will automatically restart and install updates in %d seconds."
|
||||
|
||||
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
|
||||
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Restart & Install"
|
||||
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
#: js/ui/endSessionDialog.js:100
|
||||
msgctxt "button"
|
||||
msgid "Install & Power Off"
|
||||
msgstr "Install & Power Off"
|
||||
|
||||
#: js/ui/endSessionDialog.js:99
|
||||
#: js/ui/endSessionDialog.js:101
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Power off after updates are installed"
|
||||
|
||||
#: js/ui/endSessionDialog.js:106
|
||||
#: js/ui/endSessionDialog.js:108
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Upgrade"
|
||||
msgstr "Restart & Install Upgrade"
|
||||
@ -1367,7 +1233,7 @@ msgstr "Restart & Install Upgrade"
|
||||
#. Translators: This is the text displayed for system upgrades in the
|
||||
#. shut down dialog. First %s gets replaced with the distro name and
|
||||
#. second %s with the distro version to upgrade to
|
||||
#: js/ui/endSessionDialog.js:111
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
@ -1376,15 +1242,15 @@ msgstr ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
"time: ensure that you have backed up and that the computer is plugged in."
|
||||
|
||||
#: js/ui/endSessionDialog.js:259
|
||||
#: js/ui/endSessionDialog.js:261
|
||||
msgid "Running on battery power: Please plug in before installing updates."
|
||||
msgstr "Running on battery power: Please plug in before installing updates."
|
||||
|
||||
#: js/ui/endSessionDialog.js:268
|
||||
#: js/ui/endSessionDialog.js:270
|
||||
msgid "Some applications are busy or have unsaved work"
|
||||
msgstr "Some applications are busy or have unsaved work"
|
||||
|
||||
#: js/ui/endSessionDialog.js:273
|
||||
#: js/ui/endSessionDialog.js:275
|
||||
msgid "Other users are logged in"
|
||||
msgstr "Other users are logged in"
|
||||
|
||||
@ -1400,24 +1266,24 @@ msgstr "%s (remote)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (console)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:169
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Install"
|
||||
|
||||
#: js/ui/extensionDownloader.js:175
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Install Extension"
|
||||
|
||||
#: js/ui/extensionDownloader.js:176
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Download and install “%s” from extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:233
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Extension Updates Available"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:234
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Extension updates are ready to be installed."
|
||||
|
||||
@ -1564,11 +1430,11 @@ msgstr "View Source"
|
||||
msgid "Web Page"
|
||||
msgstr "Web Page"
|
||||
|
||||
#: js/ui/main.js:269
|
||||
#: js/ui/main.js:277
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Logged in as a privileged user"
|
||||
|
||||
#: js/ui/main.js:270
|
||||
#: js/ui/main.js:278
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1576,15 +1442,15 @@ msgstr ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
|
||||
#: js/ui/main.js:276
|
||||
#: js/ui/main.js:317
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Screen Lock disabled"
|
||||
|
||||
#: js/ui/main.js:277
|
||||
#: js/ui/main.js:318
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Screen Locking requires the GNOME display manager."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1551
|
||||
msgid "System Information"
|
||||
msgstr "System Information"
|
||||
|
||||
@ -1611,7 +1477,6 @@ msgstr "Overview"
|
||||
#. active; it should not exceed ~30
|
||||
#. characters.
|
||||
#: js/ui/overview.js:107
|
||||
#| msgid "Type to search…"
|
||||
msgid "Type to search"
|
||||
msgstr "Type to search"
|
||||
|
||||
@ -1669,12 +1534,12 @@ msgstr "Quit"
|
||||
msgid "Activities"
|
||||
msgstr "Activities"
|
||||
|
||||
#: js/ui/panel.js:707
|
||||
#: js/ui/panel.js:713
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: js/ui/panel.js:820
|
||||
#: js/ui/panel.js:826
|
||||
msgid "Top Bar"
|
||||
msgstr "Top Bar"
|
||||
|
||||
@ -1769,7 +1634,6 @@ msgstr ""
|
||||
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
|
||||
|
||||
#: js/ui/shellMountOperation.js:306
|
||||
#| msgid "Enter PIM Number…"
|
||||
msgid "PIM Number"
|
||||
msgstr "PIM Number"
|
||||
|
||||
@ -1792,13 +1656,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "The PIM must be a number or empty."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Unable to start %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Couldn’t find the %s application"
|
||||
@ -2271,11 +2135,11 @@ msgstr "Thunderbolt authorisation error"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Could not authorise the Thunderbolt device: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume changed"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -2309,24 +2173,26 @@ msgstr "Built-in Only"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:372
|
||||
#| msgctxt "calendar heading"
|
||||
#| msgid "%A, %B %-d"
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:378
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Swipe up to unlock"
|
||||
|
||||
#: js/ui/unlockDialog.js:379
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Click or press a key to unlock"
|
||||
|
||||
#: js/ui/unlockDialog.js:552
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Unlock Window"
|
||||
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Log in as another user"
|
||||
|
||||
#: js/ui/viewSelector.js:181
|
||||
msgid "Applications"
|
||||
msgstr "Applications"
|
||||
@ -2442,19 +2308,19 @@ msgstr "Close"
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Evolution Calendar"
|
||||
|
||||
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
|
||||
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
|
||||
msgid "Print version"
|
||||
msgstr "Print version"
|
||||
|
||||
#: src/main.c:466
|
||||
#: src/main.c:464
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "Mode used by GDM for login screen"
|
||||
|
||||
#: src/main.c:472
|
||||
#: src/main.c:470
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Use a specific mode, e.g. “gdm” for login screen"
|
||||
|
||||
#: src/main.c:478
|
||||
#: src/main.c:476
|
||||
msgid "List possible modes"
|
||||
msgstr "List possible modes"
|
||||
|
||||
@ -2480,6 +2346,140 @@ msgstr "Password cannot be blank"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Authentication dialogue was dismissed by the user"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Manage your GNOME Extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configure GNOME Shell Extensions"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Remove “%s”?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Remove"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Philip Withnall <philip@tecnocode.co.uk>\n"
|
||||
"Bruce Cowan <bruce@bcowan.me.uk>\n"
|
||||
"Chris Leonard <cjl@laptop.org>\n"
|
||||
"David King <amigadave@amigadave.com>\n"
|
||||
"Zander Brown <zbrown@gnome.org>"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d extension will be updated on next login."
|
||||
msgstr[1] "%d extensions will be updated on next login."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Author"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Remove…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Help"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "About Extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Warning"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manually Installed"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Built-In"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "No Installed Extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Log Out…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2627,7 +2627,6 @@ msgid "Show extensions with preferences"
|
||||
msgstr "Show extensions with preferences"
|
||||
|
||||
#: subprojects/extensions-tool/src/command-list.c:140
|
||||
#| msgid "Show extensions with preferences"
|
||||
msgid "Show extensions with updates"
|
||||
msgstr "Show extensions with updates"
|
||||
|
||||
@ -2818,6 +2817,9 @@ msgstr[1] "%u Inputs"
|
||||
msgid "System Sounds"
|
||||
msgstr "System Sounds"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Copy Error"
|
||||
|
||||
#~ msgid "Next"
|
||||
#~ msgstr "Next"
|
||||
|
||||
@ -2844,9 +2846,6 @@ msgstr "System Sounds"
|
||||
#~ msgstr[0] "%d new notification"
|
||||
#~ msgstr[1] "%d new notifications"
|
||||
|
||||
#~ msgid "Log in as another user"
|
||||
#~ msgstr "Log in as another user"
|
||||
|
||||
#~| msgid "Shell Extensions"
|
||||
#~ msgid "org.gnome.Extensions"
|
||||
#~ msgstr "org.gnome.Extensions"
|
||||
|
254
po/fa.po
254
po/fa.po
@ -2,15 +2,15 @@
|
||||
# Copyright (C) 2010-2011 Iranian Free Software Users Group (IFSUG.org)translation team.
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
# Mahyar Moghimi <mahyar.moqimi@gmail.com>, 2010.
|
||||
# Arash Mousavi <mousavi.arash@gmail.com>, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017.
|
||||
# Danial behzadi <dani.behzi@ubuntu.com>, 2018, 2019, 2020.
|
||||
# Arash Mousavi <mousavi.arash@gmail.com>, 2010-2017.
|
||||
# Danial behzadi <dani.behzi@ubuntu.com>, 2018-2020.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-04-09 14:00+0000\n"
|
||||
"PO-Revision-Date: 2020-04-25 00:31+0430\n"
|
||||
"POT-Creation-Date: 2020-05-12 14:15+0000\n"
|
||||
"PO-Revision-Date: 2020-05-12 14:22+0000\n"
|
||||
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
|
||||
"Language-Team: Persian <>\n"
|
||||
"Language: fa\n"
|
||||
@ -396,7 +396,7 @@ msgstr "مشاهدهٔ صفحهٔ خانگی افزونه"
|
||||
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:369 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:917 subprojects/extensions-app/js/main.js:148
|
||||
#: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:149
|
||||
msgid "Cancel"
|
||||
msgstr "لغو"
|
||||
|
||||
@ -419,7 +419,7 @@ msgstr "فهرست نشده؟"
|
||||
|
||||
#. Translators: this message is shown below the username entry field
|
||||
#. to clue the user in on how to login to the local network realm
|
||||
#: js/gdm/loginDialog.js:912
|
||||
#: js/gdm/loginDialog.js:913
|
||||
#, javascript-format
|
||||
msgid "(e.g., user or %s)"
|
||||
msgstr "(برای مثال, کاربر یا %s)"
|
||||
@ -427,12 +427,12 @@ msgstr "(برای مثال, کاربر یا %s)"
|
||||
#. 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/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:241
|
||||
#: js/gdm/loginDialog.js:918 js/ui/components/networkAgent.js:241
|
||||
#: js/ui/components/networkAgent.js:264 js/ui/components/networkAgent.js:282
|
||||
msgid "Username"
|
||||
msgstr "نامکاربری"
|
||||
|
||||
#: js/gdm/loginDialog.js:1253
|
||||
#: js/gdm/loginDialog.js:1254
|
||||
msgid "Login Window"
|
||||
msgstr "پنجرهٔ ورود به سامانه"
|
||||
|
||||
@ -450,71 +450,71 @@ msgid "(or swipe finger)"
|
||||
msgstr "(یا انگشتتان را بکشید)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "خاموش کردن"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "power off;shutdown;reboot;restart;خاموش;توقف"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "صفحهٔ قفل"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "قفل کردن صفحه"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "خروج"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "logout;log out;sign off;خروج;خارج"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "تعلیق"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "suspend;sleep;تعلیق;خواب"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "تعویض کاربر"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "تعویض کاربر"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr "lock orientation;screen;rotation;قفل;جهت;چرخش;صفحه"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "قفلگشایی چرخش صفحه"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "قفل چرخش صفحه"
|
||||
@ -679,53 +679,57 @@ msgstr "رد دسترسی"
|
||||
msgid "Grant Access"
|
||||
msgstr "پذیرفتن دسترسی"
|
||||
|
||||
#: js/ui/appDisplay.js:950
|
||||
#: js/ui/appDisplay.js:944
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "پوشهٔ بینام"
|
||||
|
||||
#: js/ui/appDisplay.js:973
|
||||
#: js/ui/appDisplay.js:967
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "برنامههای بیشتر استفاده شده در اینجا نمایش داده میشود"
|
||||
|
||||
#: js/ui/appDisplay.js:1108
|
||||
#: js/ui/appDisplay.js:1102
|
||||
msgid "Frequent"
|
||||
msgstr "پُر استفاده"
|
||||
|
||||
#: js/ui/appDisplay.js:1115
|
||||
#: js/ui/appDisplay.js:1109
|
||||
msgid "All"
|
||||
msgstr "همه"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2506 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2486 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "پنجرههای باز"
|
||||
|
||||
#: js/ui/appDisplay.js:2526 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2505 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "پنجرهٔ جدید"
|
||||
|
||||
#: js/ui/appDisplay.js:2537
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "اجرا با کارت گرافیک اختصاصی"
|
||||
#: js/ui/appDisplay.js:2521
|
||||
msgid "Launch using Integrated Graphics Card"
|
||||
msgstr "اجرا با کارت گرافیک یکپارچه"
|
||||
|
||||
#: js/ui/appDisplay.js:2565 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2522
|
||||
msgid "Launch using Discrete Graphics Card"
|
||||
msgstr "اجرا با کارت گرافیک جداگانه"
|
||||
|
||||
#: js/ui/appDisplay.js:2550 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "حذف از مورد پسندها"
|
||||
|
||||
#: js/ui/appDisplay.js:2571
|
||||
#: js/ui/appDisplay.js:2556
|
||||
msgid "Add to Favorites"
|
||||
msgstr "افزودن به مورد پسندها"
|
||||
|
||||
#: js/ui/appDisplay.js:2581 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2566 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "نمایش جزییات"
|
||||
|
||||
#: js/ui/appFavorites.js:163
|
||||
#: js/ui/appFavorites.js:164
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s به مورد پسندهایتان اضافه شد."
|
||||
|
||||
#: js/ui/appFavorites.js:196
|
||||
#: js/ui/appFavorites.js:197
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s ازمورد پسندهایتان حذف شد."
|
||||
@ -820,7 +824,7 @@ msgstr "ش"
|
||||
#. * "%OB" is the new format specifier introduced in glibc 2.27,
|
||||
#. * in most cases you should not change it.
|
||||
#.
|
||||
#: js/ui/calendar.js:372
|
||||
#: js/ui/calendar.js:397
|
||||
msgid "%OB"
|
||||
msgstr "%OB"
|
||||
|
||||
@ -833,61 +837,61 @@ msgstr "%OB"
|
||||
#. * in most cases you should not use the old "%B" here unless you
|
||||
#. * absolutely know what you are doing.
|
||||
#.
|
||||
#: js/ui/calendar.js:382
|
||||
#: js/ui/calendar.js:407
|
||||
msgid "%OB %Y"
|
||||
msgstr "%OB %Y"
|
||||
|
||||
#: js/ui/calendar.js:441
|
||||
#: js/ui/calendar.js:466
|
||||
msgid "Previous month"
|
||||
msgstr "ماه پیش"
|
||||
|
||||
#: js/ui/calendar.js:456
|
||||
#: js/ui/calendar.js:481
|
||||
msgid "Next month"
|
||||
msgstr "ماه بعد"
|
||||
|
||||
#: js/ui/calendar.js:606
|
||||
#: js/ui/calendar.js:631
|
||||
#, no-javascript-format
|
||||
msgctxt "date day number format"
|
||||
msgid "%d"
|
||||
msgstr "%Od"
|
||||
|
||||
#: js/ui/calendar.js:662
|
||||
#: js/ui/calendar.js:687
|
||||
msgid "Week %V"
|
||||
msgstr "هفته %OV"
|
||||
|
||||
#. Translators: Shown in calendar event list for all day events
|
||||
#. * Keep it short, best if you can use less then 10 characters
|
||||
#.
|
||||
#: js/ui/calendar.js:731
|
||||
#: js/ui/calendar.js:762
|
||||
msgctxt "event list time"
|
||||
msgid "All Day"
|
||||
msgstr "تمام روز"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: js/ui/calendar.js:869
|
||||
#: js/ui/calendar.js:900
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d"
|
||||
msgstr "%A %-Od %OB"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: js/ui/calendar.js:872
|
||||
#: js/ui/calendar.js:903
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d, %Y"
|
||||
msgstr "%A %-Od %OB %Y"
|
||||
|
||||
#: js/ui/calendar.js:1101
|
||||
#: js/ui/calendar.js:1133
|
||||
msgid "No Notifications"
|
||||
msgstr "بدون آگاهی"
|
||||
|
||||
#: js/ui/calendar.js:1104
|
||||
#: js/ui/calendar.js:1136
|
||||
msgid "No Events"
|
||||
msgstr "بدون رویداد"
|
||||
|
||||
#: js/ui/calendar.js:1158
|
||||
#: js/ui/calendar.js:1190
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "مزاحم نشوید"
|
||||
|
||||
#: js/ui/calendar.js:1177
|
||||
#: js/ui/calendar.js:1209
|
||||
msgid "Clear"
|
||||
msgstr "پاکسازی"
|
||||
|
||||
@ -929,7 +933,7 @@ msgstr "ناتوانی در قفلگشایی حجم"
|
||||
msgid "The installed udisks version does not support the PIM setting"
|
||||
msgstr "نگارش نصبشدهٔ udisk از تنظیمات PIM پشتیبانی نمیکند"
|
||||
|
||||
#: js/ui/components/autorunManager.js:333
|
||||
#: js/ui/components/autorunManager.js:332
|
||||
#, javascript-format
|
||||
msgid "Open with %s"
|
||||
msgstr "گشودن با %s"
|
||||
@ -939,7 +943,7 @@ msgid "Alternatively you can connect by pushing the “WPS” button on your rou
|
||||
msgstr "به عنوان جایگزین میتوانید با فشردن دکمهٔ WPS روی مسیریابتان، وصل شوید."
|
||||
|
||||
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:227
|
||||
#: js/ui/status/network.js:318 js/ui/status/network.js:920
|
||||
#: js/ui/status/network.js:318 js/ui/status/network.js:919
|
||||
msgid "Connect"
|
||||
msgstr "اتّصال"
|
||||
|
||||
@ -1001,7 +1005,7 @@ msgstr "پین"
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "برای اتصال به «%s» گذرواژه لازم است."
|
||||
|
||||
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1695
|
||||
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1694
|
||||
msgid "Network Manager"
|
||||
msgstr "مدیر شبکه"
|
||||
|
||||
@ -1336,13 +1340,13 @@ msgid "Leave On"
|
||||
msgstr "روشن گذاشتن"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156
|
||||
#: js/ui/status/network.js:1292
|
||||
#: js/ui/status/network.js:1291
|
||||
msgid "Turn On"
|
||||
msgstr "روشن کردن"
|
||||
|
||||
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156
|
||||
#: js/ui/status/network.js:135 js/ui/status/network.js:319
|
||||
#: js/ui/status/network.js:1292 js/ui/status/network.js:1404
|
||||
#: js/ui/status/network.js:1291 js/ui/status/network.js:1403
|
||||
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
|
||||
#: js/ui/status/rfkill.js:108
|
||||
msgid "Turn Off"
|
||||
@ -1356,59 +1360,59 @@ msgstr "خاموش گذاشتن"
|
||||
msgid "Region & Language Settings"
|
||||
msgstr "تنظیمات ناحیه و زبان"
|
||||
|
||||
#: js/ui/lookingGlass.js:665
|
||||
#: js/ui/lookingGlass.js:664
|
||||
msgid "No extensions installed"
|
||||
msgstr "هیچ افزونهای نصب نشده است"
|
||||
|
||||
#. Translators: argument is an extension UUID.
|
||||
#: js/ui/lookingGlass.js:720
|
||||
#: js/ui/lookingGlass.js:719
|
||||
#, javascript-format
|
||||
msgid "%s has not emitted any errors."
|
||||
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
|
||||
|
||||
#: js/ui/lookingGlass.js:726
|
||||
#: js/ui/lookingGlass.js:725
|
||||
msgid "Hide Errors"
|
||||
msgstr "مخفی کردن خطاها"
|
||||
|
||||
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
|
||||
#: js/ui/lookingGlass.js:729 js/ui/lookingGlass.js:794
|
||||
msgid "Show Errors"
|
||||
msgstr "نمایش خطاها"
|
||||
|
||||
#: js/ui/lookingGlass.js:739
|
||||
#: js/ui/lookingGlass.js:738
|
||||
msgid "Enabled"
|
||||
msgstr "به کار انداختن"
|
||||
|
||||
#. translators:
|
||||
#. * The device has been disabled
|
||||
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
|
||||
#: js/ui/lookingGlass.js:741 subprojects/gvc/gvc-mixer-control.c:1892
|
||||
msgid "Disabled"
|
||||
msgstr "از کار انداختن"
|
||||
|
||||
#: js/ui/lookingGlass.js:744
|
||||
#: js/ui/lookingGlass.js:743
|
||||
msgid "Error"
|
||||
msgstr "خطا"
|
||||
|
||||
#: js/ui/lookingGlass.js:746
|
||||
#: js/ui/lookingGlass.js:745
|
||||
msgid "Out of date"
|
||||
msgstr "قدیمی"
|
||||
|
||||
#: js/ui/lookingGlass.js:748
|
||||
#: js/ui/lookingGlass.js:747
|
||||
msgid "Downloading"
|
||||
msgstr "در حال بارگیری"
|
||||
|
||||
#: js/ui/lookingGlass.js:777
|
||||
#: js/ui/lookingGlass.js:776
|
||||
msgid "View Source"
|
||||
msgstr "نمایش منبع"
|
||||
|
||||
#: js/ui/lookingGlass.js:786
|
||||
#: js/ui/lookingGlass.js:785
|
||||
msgid "Web Page"
|
||||
msgstr "صفحهٔ وب"
|
||||
|
||||
#: js/ui/main.js:284
|
||||
#: js/ui/main.js:297
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "واردشده به عنوان کاربری ممتاز"
|
||||
|
||||
#: js/ui/main.js:285
|
||||
#: js/ui/main.js:298
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security reasons. If "
|
||||
"possible, you should log in as a normal user."
|
||||
@ -1416,15 +1420,15 @@ msgstr ""
|
||||
"به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت "
|
||||
"امکان، با کاربری عادی وارد شوید."
|
||||
|
||||
#: js/ui/main.js:324
|
||||
#: js/ui/main.js:337
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "قفل صفحه از کار افتاده"
|
||||
|
||||
#: js/ui/main.js:325
|
||||
#: js/ui/main.js:338
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "قفل صفحه نیاز به مدیر نمایش گنوم دارد."
|
||||
|
||||
#: js/ui/messageTray.js:1551
|
||||
#: js/ui/messageTray.js:1547
|
||||
msgid "System Information"
|
||||
msgstr "اطلاعات سامانه"
|
||||
|
||||
@ -1504,16 +1508,16 @@ msgstr "خروج"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:432
|
||||
#: js/ui/panel.js:435
|
||||
msgid "Activities"
|
||||
msgstr "فعّالیتها"
|
||||
|
||||
#: js/ui/panel.js:711
|
||||
#: js/ui/panel.js:714
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "سامانه"
|
||||
|
||||
#: js/ui/panel.js:824
|
||||
#: js/ui/panel.js:827
|
||||
msgid "Top Bar"
|
||||
msgstr "نوار بالا"
|
||||
|
||||
@ -1544,23 +1548,23 @@ msgstr "لازم است گنوم صفحه را قفل کند"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:602
|
||||
msgid "Unable to lock"
|
||||
msgstr "نمیتوان قفل کرد"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "قفل توسط یک برنامه مسدود شده بود"
|
||||
|
||||
#: js/ui/search.js:703
|
||||
#: js/ui/search.js:702
|
||||
msgid "Searching…"
|
||||
msgstr "درحال جستوجو…"
|
||||
|
||||
#: js/ui/search.js:705
|
||||
#: js/ui/search.js:704
|
||||
msgid "No results."
|
||||
msgstr "بدون نتیجه."
|
||||
|
||||
#: js/ui/search.js:831
|
||||
#: js/ui/search.js:830
|
||||
#, javascript-format
|
||||
msgid "%d more"
|
||||
msgid_plural "%d more"
|
||||
@ -1776,7 +1780,7 @@ msgid "<unknown>"
|
||||
msgstr "<ناشناخته>"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:424 js/ui/status/network.js:1321
|
||||
#: js/ui/status/network.js:424 js/ui/status/network.js:1320
|
||||
#, javascript-format
|
||||
msgid "%s Off"
|
||||
msgstr "%s خاموش است"
|
||||
@ -1802,7 +1806,7 @@ msgid "%s Disconnecting"
|
||||
msgstr "درحال قطع ارتباط %s"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:442 js/ui/status/network.js:1313
|
||||
#: js/ui/status/network.js:442 js/ui/status/network.js:1312
|
||||
#, javascript-format
|
||||
msgid "%s Connecting"
|
||||
msgstr "درحال اتصال %s"
|
||||
@ -1842,7 +1846,7 @@ msgid "Mobile Broadband Settings"
|
||||
msgstr "تنظیمات پهنباند همراه"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:562 js/ui/status/network.js:1318
|
||||
#: js/ui/status/network.js:562 js/ui/status/network.js:1317
|
||||
#, javascript-format
|
||||
msgid "%s Hardware Disabled"
|
||||
msgstr "سختافزار %s از کار افتاده"
|
||||
@ -1858,121 +1862,121 @@ msgstr "%s از کار افتاده"
|
||||
msgid "Connect to Internet"
|
||||
msgstr "وصل شدن به اینترنت"
|
||||
|
||||
#: js/ui/status/network.js:812
|
||||
#: js/ui/status/network.js:811
|
||||
msgid "Airplane Mode is On"
|
||||
msgstr "حالت هواپیمایی روشن است"
|
||||
|
||||
#: js/ui/status/network.js:813
|
||||
#: js/ui/status/network.js:812
|
||||
msgid "Wi-Fi is disabled when airplane mode is on."
|
||||
msgstr "در زمان روشن بودن حالت هواپیمایی، وایفای از کار میافتد."
|
||||
|
||||
#: js/ui/status/network.js:814
|
||||
#: js/ui/status/network.js:813
|
||||
msgid "Turn Off Airplane Mode"
|
||||
msgstr "خاموش کردن حالت هواپیمایی"
|
||||
|
||||
#: js/ui/status/network.js:823
|
||||
#: js/ui/status/network.js:822
|
||||
msgid "Wi-Fi is Off"
|
||||
msgstr "وایفای خاموش است"
|
||||
|
||||
#: js/ui/status/network.js:824
|
||||
#: js/ui/status/network.js:823
|
||||
msgid "Wi-Fi needs to be turned on in order to connect to a network."
|
||||
msgstr "برای وصل شدن به شبکه باید وایفای روشن شود."
|
||||
|
||||
#: js/ui/status/network.js:825
|
||||
#: js/ui/status/network.js:824
|
||||
msgid "Turn On Wi-Fi"
|
||||
msgstr "روشن کردن وایفای"
|
||||
|
||||
#: js/ui/status/network.js:850
|
||||
#: js/ui/status/network.js:849
|
||||
msgid "Wi-Fi Networks"
|
||||
msgstr "شبکههای وایفای"
|
||||
|
||||
#: js/ui/status/network.js:852
|
||||
#: js/ui/status/network.js:851
|
||||
msgid "Select a network"
|
||||
msgstr "شبکهای برگزینید"
|
||||
|
||||
#: js/ui/status/network.js:884
|
||||
#: js/ui/status/network.js:883
|
||||
msgid "No Networks"
|
||||
msgstr "هیچ شبکهای نیست"
|
||||
|
||||
#: js/ui/status/network.js:905 js/ui/status/rfkill.js:106
|
||||
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:106
|
||||
msgid "Use hardware switch to turn off"
|
||||
msgstr "برای خاموش کردن از کلید سختافزاری استفاده کنید"
|
||||
|
||||
#: js/ui/status/network.js:1182
|
||||
#: js/ui/status/network.js:1181
|
||||
msgid "Select Network"
|
||||
msgstr "گزینش شبکه"
|
||||
|
||||
#: js/ui/status/network.js:1188
|
||||
#: js/ui/status/network.js:1187
|
||||
msgid "Wi-Fi Settings"
|
||||
msgstr "تنظیمات وایفای"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1309
|
||||
#: js/ui/status/network.js:1308
|
||||
#, javascript-format
|
||||
msgid "%s Hotspot Active"
|
||||
msgstr "%s نقطهٔ داغ فعال"
|
||||
|
||||
#. Translators: %s is a network identifier
|
||||
#: js/ui/status/network.js:1324
|
||||
#: js/ui/status/network.js:1323
|
||||
#, javascript-format
|
||||
msgid "%s Not Connected"
|
||||
msgstr "%s متصل نشد"
|
||||
|
||||
#: js/ui/status/network.js:1421
|
||||
#: js/ui/status/network.js:1420
|
||||
msgid "connecting…"
|
||||
msgstr "درحال اتّصال…"
|
||||
|
||||
#. Translators: this is for network connections that require some kind of key or password
|
||||
#: js/ui/status/network.js:1424
|
||||
#: js/ui/status/network.js:1423
|
||||
msgid "authentication required"
|
||||
msgstr "تایید هویت لازم است"
|
||||
|
||||
#: js/ui/status/network.js:1426
|
||||
#: js/ui/status/network.js:1425
|
||||
msgid "connection failed"
|
||||
msgstr "اتصال شکست خورد"
|
||||
|
||||
#: js/ui/status/network.js:1477
|
||||
#: js/ui/status/network.js:1476
|
||||
msgid "VPN Settings"
|
||||
msgstr "تنظیمات ویپیان"
|
||||
|
||||
#: js/ui/status/network.js:1494
|
||||
#: js/ui/status/network.js:1493
|
||||
msgid "VPN"
|
||||
msgstr "ویپیان"
|
||||
|
||||
#: js/ui/status/network.js:1504
|
||||
#: js/ui/status/network.js:1503
|
||||
msgid "VPN Off"
|
||||
msgstr "ویپیان خاموش است"
|
||||
|
||||
#: js/ui/status/network.js:1565 js/ui/status/rfkill.js:84
|
||||
#: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84
|
||||
msgid "Network Settings"
|
||||
msgstr "تنظیمات شبکه"
|
||||
|
||||
#: js/ui/status/network.js:1594
|
||||
#: js/ui/status/network.js:1593
|
||||
#, javascript-format
|
||||
msgid "%s Wired Connection"
|
||||
msgid_plural "%s Wired Connections"
|
||||
msgstr[0] "اتّصال سیمی %s"
|
||||
msgstr[1] "اتّصال سیمی %s"
|
||||
|
||||
#: js/ui/status/network.js:1598
|
||||
#: js/ui/status/network.js:1597
|
||||
#, javascript-format
|
||||
msgid "%s Wi-Fi Connection"
|
||||
msgid_plural "%s Wi-Fi Connections"
|
||||
msgstr[0] "اتّصال وایفای %s"
|
||||
msgstr[1] "اتّصال وایفای %s"
|
||||
|
||||
#: js/ui/status/network.js:1602
|
||||
#: js/ui/status/network.js:1601
|
||||
#, javascript-format
|
||||
msgid "%s Modem Connection"
|
||||
msgid_plural "%s Modem Connections"
|
||||
msgstr[0] "اتّصال مودم %s"
|
||||
msgstr[1] "اتّصال مودم %s"
|
||||
|
||||
#: js/ui/status/network.js:1736
|
||||
#: js/ui/status/network.js:1735
|
||||
msgid "Connection failed"
|
||||
msgstr "اتصال شکست خورد"
|
||||
|
||||
#: js/ui/status/network.js:1737
|
||||
#: js/ui/status/network.js:1736
|
||||
msgid "Activation of network connection failed"
|
||||
msgstr "فعاّلسازی اتّصال شبکه شکست خورد"
|
||||
|
||||
@ -2027,11 +2031,11 @@ msgstr "%Id∶%I02d تا شارژ کامل (%Id٪)"
|
||||
msgid "%d %%"
|
||||
msgstr "%Id٪"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:44
|
||||
#: js/ui/status/remoteAccess.js:43
|
||||
msgid "Screen is Being Shared"
|
||||
msgstr "صفحه همرسانی میشود"
|
||||
|
||||
#: js/ui/status/remoteAccess.js:46
|
||||
#: js/ui/status/remoteAccess.js:45
|
||||
msgid "Turn off"
|
||||
msgstr "خاموش کردن"
|
||||
|
||||
@ -2042,27 +2046,27 @@ msgstr "خاموش کردن"
|
||||
msgid "Airplane Mode On"
|
||||
msgstr "حالت هواپیمایی روشن است"
|
||||
|
||||
#: js/ui/status/system.js:103
|
||||
#: js/ui/status/system.js:102
|
||||
msgid "Lock"
|
||||
msgstr "قفل کردن"
|
||||
|
||||
#: js/ui/status/system.js:116
|
||||
#: js/ui/status/system.js:115
|
||||
msgid "Power Off / Log Out"
|
||||
msgstr "خاموش کردن / خروج"
|
||||
|
||||
#: js/ui/status/system.js:119
|
||||
#: js/ui/status/system.js:118
|
||||
msgid "Log Out"
|
||||
msgstr "خروج"
|
||||
|
||||
#: js/ui/status/system.js:131
|
||||
#: js/ui/status/system.js:130
|
||||
msgid "Switch User…"
|
||||
msgstr "تعویض کاربر…"
|
||||
|
||||
#: js/ui/status/system.js:145
|
||||
#: js/ui/status/system.js:144
|
||||
msgid "Suspend"
|
||||
msgstr "تعلیق"
|
||||
|
||||
#: js/ui/status/system.js:157
|
||||
#: js/ui/status/system.js:156
|
||||
msgid "Power Off…"
|
||||
msgstr "خاموش کردن…"
|
||||
|
||||
@ -2186,7 +2190,7 @@ msgstr "بازنشانی تنظیمات"
|
||||
msgid "Keep Changes"
|
||||
msgstr "نگهداری تغییرات"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2195,7 +2199,7 @@ msgstr[1] "تغییرات تنظیمات در %Id ثانیه بازنشانی م
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%Id × %Id"
|
||||
@ -2312,13 +2316,13 @@ msgstr "محاوره تایید هویت از طرف کاربر رد شد"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "افزونهها"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
#: subprojects/extensions-app/js/main.js:184
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "مدیریت افزونههای پوستهٔ گنوم"
|
||||
|
||||
@ -2338,26 +2342,26 @@ msgstr ""
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "پیکربندی افزونههای پوستهٔ گنوم"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "برداشتن «%s»؟"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
#: subprojects/extensions-app/js/main.js:146
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want to "
|
||||
"enable it again"
|
||||
msgstr "اگر افزونه را بردارید، باید برای به کار انداختن دوبارهاش، بارگیریش کنید"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
#: subprojects/extensions-app/js/main.js:150
|
||||
msgid "Remove"
|
||||
msgstr "حذف"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
msgid "translator-credits"
|
||||
msgstr "دانیال بهزادی <dani.behzi@ubuntu.com>"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:313
|
||||
#: subprojects/extensions-app/js/main.js:314
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
@ -2435,6 +2439,10 @@ msgstr ""
|
||||
"متأسّفیم، ولی امکان گرفتن فهرست افزونههای نصبشده نبود. مطمئن شوید که به گنوم وارد "
|
||||
"شدهاید و دوباره تلاش کنید."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "بهروز رسانیهای افزونه آمادهاند"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "خروج…"
|
||||
|
150
po/fi.po
150
po/fi.po
@ -25,8 +25,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-04-02 09:45+0000\n"
|
||||
"PO-Revision-Date: 2020-04-13 18:02+0300\n"
|
||||
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
|
||||
"PO-Revision-Date: 2020-05-16 14:02+0300\n"
|
||||
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
|
||||
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
|
||||
"Language: fi\n"
|
||||
@ -421,7 +421,7 @@ msgid "Network Login"
|
||||
msgstr "Verkkokirjautuminen"
|
||||
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Jokin meni pieleen"
|
||||
|
||||
@ -448,7 +448,7 @@ msgstr "Käy laajennuksen verkkosivulla"
|
||||
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
@ -504,74 +504,74 @@ msgid "(or swipe finger)"
|
||||
msgstr "(tai pyyhkäise sormella)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Sammuta"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr ""
|
||||
"power off;shutdown;reboot;restart;halt;stop;sammuta;käynnistä uudelleen"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Lukitse näyttö"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "lock screen"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Kirjaudu ulos"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "logout;log out;sign off;kirjaudu ulos;uloskirjautuminen;poistu"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Valmiustila"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "suspend;sleep"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Vaihda käyttäjää"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "switch user"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr ""
|
||||
"lock orientation;unlock orientation;screen;rotation;lukitse kierto;lukitse "
|
||||
"suunta;suunta;kääntö"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Vapauta näytön kierto"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Lukitse näytön kierto"
|
||||
@ -736,53 +736,53 @@ msgstr "Estä pääsy"
|
||||
msgid "Grant Access"
|
||||
msgstr "Salli pääsy"
|
||||
|
||||
#: js/ui/appDisplay.js:937
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Nimetön kansio"
|
||||
|
||||
#: js/ui/appDisplay.js:960
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Usein käytetyt sovellukset ilmestyvät tänne"
|
||||
|
||||
#: js/ui/appDisplay.js:1095
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Käytetyimmät"
|
||||
|
||||
#: js/ui/appDisplay.js:1102
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Kaikki"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2478 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Avoimet ikkunat"
|
||||
|
||||
#: js/ui/appDisplay.js:2498 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Uusi ikkuna"
|
||||
|
||||
#: js/ui/appDisplay.js:2509
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
|
||||
|
||||
#: js/ui/appDisplay.js:2537 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Poista suosikeista"
|
||||
|
||||
#: js/ui/appDisplay.js:2543
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Lisää suosikkeihin"
|
||||
|
||||
#: js/ui/appDisplay.js:2553 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Näytä tiedot"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s on lisätty suosikkeihin."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s on poistettu suosikeista."
|
||||
@ -1155,74 +1155,74 @@ msgstr "Yhdistä verkkoon saadaksesi säätietoja"
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Säätiedot eivät ole juuri nyt saatavilla"
|
||||
|
||||
#: js/ui/endSessionDialog.js:39
|
||||
#: js/ui/endSessionDialog.js:37
|
||||
#, javascript-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Kirjaa %s ulos"
|
||||
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#: js/ui/endSessionDialog.js:38
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Kirjaudu ulos"
|
||||
|
||||
#: js/ui/endSessionDialog.js:42
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua."
|
||||
msgstr[1] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua."
|
||||
|
||||
#: js/ui/endSessionDialog.js:47
|
||||
#: js/ui/endSessionDialog.js:45
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
msgstr[0] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua."
|
||||
msgstr[1] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua."
|
||||
|
||||
#: js/ui/endSessionDialog.js:53
|
||||
#: js/ui/endSessionDialog.js:51
|
||||
msgctxt "button"
|
||||
msgid "Log Out"
|
||||
msgstr "Kirjaudu ulos"
|
||||
|
||||
#: js/ui/endSessionDialog.js:58
|
||||
#: js/ui/endSessionDialog.js:56
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Sammuta"
|
||||
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#: js/ui/endSessionDialog.js:57
|
||||
msgctxt "title"
|
||||
msgid "Install Updates & Power Off"
|
||||
msgstr "Asenna päivitykset ja sammuta"
|
||||
|
||||
#: js/ui/endSessionDialog.js:61
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
msgstr[0] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua."
|
||||
msgstr[1] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua."
|
||||
|
||||
#: js/ui/endSessionDialog.js:65
|
||||
#: js/ui/endSessionDialog.js:63
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Asenna odottavat ohjelmistopäivitykset"
|
||||
|
||||
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
|
||||
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Käynnistä uudelleen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:70
|
||||
#: js/ui/endSessionDialog.js:68
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Sammuta"
|
||||
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#: js/ui/endSessionDialog.js:74
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Käynnistä uudelleen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:78
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
@ -1231,12 +1231,12 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
"Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua."
|
||||
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#: js/ui/endSessionDialog.js:89
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Käynnistä uudelleen ja asenna päivitykset"
|
||||
|
||||
#: js/ui/endSessionDialog.js:93
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
@ -1248,22 +1248,22 @@ msgstr[1] ""
|
||||
"Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d "
|
||||
"sekunnin kuluttua."
|
||||
|
||||
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
|
||||
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Käynnistä uudelleen ja asenna"
|
||||
|
||||
#: js/ui/endSessionDialog.js:100
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
msgctxt "button"
|
||||
msgid "Install & Power Off"
|
||||
msgstr "Asenna ja sammuta"
|
||||
|
||||
#: js/ui/endSessionDialog.js:101
|
||||
#: js/ui/endSessionDialog.js:99
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Sammuta päivitysten asennuksen jälkeen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:108
|
||||
#: js/ui/endSessionDialog.js:106
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Upgrade"
|
||||
msgstr "Käynnistä uudelleen ja asenna päivitys"
|
||||
@ -1271,7 +1271,7 @@ msgstr "Käynnistä uudelleen ja asenna päivitys"
|
||||
#. Translators: This is the text displayed for system upgrades in the
|
||||
#. shut down dialog. First %s gets replaced with the distro name and
|
||||
#. second %s with the distro version to upgrade to
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
#: js/ui/endSessionDialog.js:111
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
@ -1281,27 +1281,27 @@ msgstr ""
|
||||
"voi kestää kauan: varmista varmuuskopioidesi ajantasaisuus ja toimivuus. "
|
||||
"Kiinnitä kone myös verkkovirtaan."
|
||||
|
||||
#: js/ui/endSessionDialog.js:261
|
||||
#: js/ui/endSessionDialog.js:259
|
||||
msgid "Running on battery power: Please plug in before installing updates."
|
||||
msgstr ""
|
||||
"Laite käy akkuvirralla: kiinnitä verkkovirtaan ennen päivitysten asennusta."
|
||||
|
||||
#: js/ui/endSessionDialog.js:270
|
||||
#: js/ui/endSessionDialog.js:268
|
||||
msgid "Some applications are busy or have unsaved work"
|
||||
msgstr "Jotkin sovellukset ovat kiireisiä tai sisältävät tallentamatonta työtä"
|
||||
|
||||
#: js/ui/endSessionDialog.js:275
|
||||
#: js/ui/endSessionDialog.js:273
|
||||
msgid "Other users are logged in"
|
||||
msgstr "Muita käyttäjiä on kirjautuneena"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (etä)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konsoli)"
|
||||
@ -1319,11 +1319,11 @@ msgstr "Asenna laajennus"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:233
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Laajennusten päivityksiä saatavilla"
|
||||
|
||||
#: js/ui/extensionSystem.js:234
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Laajennusten päivitykset ovat valmiina asennettavaksi."
|
||||
|
||||
@ -1492,15 +1492,15 @@ msgstr "Näytön lukitus pois käytöstä"
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan."
|
||||
|
||||
#: js/ui/messageTray.js:1551
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Järjestelmän tiedot"
|
||||
|
||||
#: js/ui/mpris.js:199
|
||||
#: js/ui/mpris.js:204
|
||||
msgid "Unknown artist"
|
||||
msgstr "Tuntematon esittäjä"
|
||||
|
||||
#: js/ui/mpris.js:209
|
||||
#: js/ui/mpris.js:214
|
||||
msgid "Unknown title"
|
||||
msgstr "Tuntematon kappale"
|
||||
|
||||
@ -1574,16 +1574,16 @@ msgstr "Lopeta"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Toiminnot"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Järjestelmä"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Yläpalkki"
|
||||
|
||||
@ -1614,11 +1614,11 @@ msgstr "Gnomen täytyy lukita näyttö"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Lukitus epäonnistui"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Lukitus estettiin sovelluksen toimesta"
|
||||
|
||||
@ -2266,7 +2266,7 @@ msgstr "Palauta asetukset"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Säilytä muutokset"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2275,7 +2275,7 @@ msgstr[1] "Asetusmuutokset palautetaan %d sekunnissa"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2368,12 +2368,12 @@ msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten"
|
||||
msgid "List possible modes"
|
||||
msgstr "Listaa mahdolliset tilat"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Tuntematon"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Sovelluksen “%s” käynnistäminen epäonnistui"
|
||||
@ -2496,19 +2496,19 @@ msgstr ""
|
||||
"Jos kohtaat ongelmia järjestelmän kanssa, on suositeltavaa poistaa kaikki "
|
||||
"laajennukset käytöstä."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manuaalisesti asennettu"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Sisäänrakennettu"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Ei asennettuja laajennuksia"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
@ -2516,7 +2516,11 @@ msgstr ""
|
||||
"Valitettavasti asennettujen laajennusten listaa ei voitu muodostaa. Varmista "
|
||||
"että olet kirjautunut Gnomeen ja yritä uudelleen."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Laajennuspäivitykset valmiina"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Kirjaudu ulos…"
|
||||
|
||||
|
466
po/fr.po
466
po/fr.po
@ -21,16 +21,16 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master fr\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-19 21:59+0100\n"
|
||||
"Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
|
||||
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
|
||||
"Language: fr_FR\n"
|
||||
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
|
||||
"PO-Revision-Date: 2020-05-12 15:16+0200\n"
|
||||
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
|
||||
"Language-Team: French <gnomefr@traduc.org>\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"X-Generator: Gtranslator 3.36.0\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
@ -415,80 +415,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Identification réseau"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Extensions"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Gérer vos extensions GNOME"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Extensions de GNOME gère la mise à jour des extensions, la configuration des "
|
||||
"préférences des extensions et la suppression ou la désactivation des "
|
||||
"extensions non désirées."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configurer les extensions Shell de GNOME"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Enlever « %s » ?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Si vous enlevez cette extension, vous devrez recommencer son téléchargement "
|
||||
"si vous souhaitez la réactiver plus tard"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Enlever"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Mathieu Bridon <bochecha@fedoraproject.org>\n"
|
||||
"Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
|
||||
"Bruno Brouard <annoa.b@gmail.com>\n"
|
||||
"Cyril Arnaud <cyril dot arnaud at gmail dot com>\n"
|
||||
"Luc Guillemin <luc.guillemin@gmail.com>\n"
|
||||
"Luc Pionchon <pionchon.luc@gmail.com>\n"
|
||||
"Pierre Henry <pierrehenry73@yahoo.fr>\n"
|
||||
"Alexandre Franke <alexandre.franke@gmail.com>\n"
|
||||
"Mathieu Stumpf <psychoslave@culture-libre.org>\n"
|
||||
"Alain Lojewski <allomervan@gmail.com>\n"
|
||||
"Erwan Georget <egeorget@opmbx.org>\n"
|
||||
"Julien Humbert <julroy67@gmail.com>\n"
|
||||
"Claude Paroz <claude@2xlibre.net>\n"
|
||||
"Charles Monzat <charles.monzat@free.fr>"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Quelque chose s’est mal passé"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -498,106 +430,25 @@ msgstr ""
|
||||
"extension ne peuvent être affichés. Nous vous recommandons de signaler ce "
|
||||
"problème aux auteurs de l’extension."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Détails techniques"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Copier l’erreur"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Site Web"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Visiter le site Web de l’extension"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d extension sera mise à jour à la prochaine connexion."
|
||||
msgstr[1] "%d extensions seront mises à jour à la prochaine connexion."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Site Web"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Enlever…"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Aide"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "À propos des extensions"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions."
|
||||
"gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Les extensions peuvent poser des problèmes au système, y compris au niveau "
|
||||
"des performances. Si vous pensez être dans ce cas, il est recommandé de "
|
||||
"désactiver toutes les extensions."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Installée manuellement"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Intégrée"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Aucune extension installée"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Nous sommes désolés, mais il n’est pas possible d’obtenir la liste des "
|
||||
"extensions installées. Vérifiez que vous êtes bien connecté à GNOME et "
|
||||
"essayez encore une fois."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Fermer la session…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -649,71 +500,71 @@ msgid "(or swipe finger)"
|
||||
msgstr "(ou faites glisser le doigt)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Éteindre"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "éteindre;fermer;débrancher;redémarrer;rallumer;reboot;arrêter;stop"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Verrouillage de l’écran"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "verrouillage;écran;"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Fermer la session"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "fermer;session;déconnecter;"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Mettre en veille"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "mettre en veille;sommeil;"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Changer d’utilisateur"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "changer;utilisateur;"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr "verrouillage;déverrouillage;orientation;écran;rotation"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Déverrouiller la rotation de l’écran"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Verrouiller la rotation de l’écran"
|
||||
@ -879,53 +730,53 @@ msgstr "Refuser l’accès"
|
||||
msgid "Grant Access"
|
||||
msgstr "Accorder l’accès"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Dossier sans nom"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Les applications fréquemment utilisées apparaîtront ici"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Fréquemment utilisées"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Toutes"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Fenêtres ouvertes"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Nouvelle fenêtre"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Démarrer en utilisant la carte graphique dédiée"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Enlever des favoris"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Ajouter aux favoris"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Afficher les détails"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s a été ajouté à vos favoris."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s a été supprimé de vos favoris."
|
||||
@ -946,7 +797,7 @@ msgstr "Casque audio"
|
||||
msgid "Headset"
|
||||
msgstr "Micro-casque"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Microphone"
|
||||
|
||||
@ -1102,7 +953,7 @@ msgstr "Aucun évènement"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Ne pas déranger"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Effacer"
|
||||
|
||||
@ -1252,7 +1103,7 @@ msgstr "Échec de l’authentification. Essayez à nouveau."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s est maintenant connu sous le nom de %s"
|
||||
@ -1308,23 +1159,23 @@ msgstr "Ajouter des horloges locales…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Horloges locales"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Météo"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Choisir un emplacement…"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Chargement…"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Chercher les informations météorologiques en ligne"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Les informations météorologiques ne sont pas disponibles actuellement"
|
||||
|
||||
@ -1464,35 +1315,35 @@ msgid "Other users are logged in"
|
||||
msgstr "D’autres utilisateurs sont connectés"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (distant)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (console)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Installer"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Installer l’extension"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Mises à jour d’extensions disponibles"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Des mises à jour d’extensions sont prêtes à être installées."
|
||||
|
||||
@ -1641,11 +1492,11 @@ msgstr "Afficher la source"
|
||||
msgid "Web Page"
|
||||
msgstr "Page Web"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Connecté en tant qu’utilisateur privilégié"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1654,16 +1505,16 @@ msgstr ""
|
||||
"des raisons de sécurité. Si possible, connectez-vous comme utilisateur "
|
||||
"normal."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Verrouillage d’écran désactivé"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr ""
|
||||
"Le verrouillage de l’écran nécessite le gestionnaire d’affichage GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Informations du système"
|
||||
|
||||
@ -1743,16 +1594,16 @@ msgstr "Quitter"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Activités"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Système"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Barre supérieure"
|
||||
|
||||
@ -1783,11 +1634,11 @@ msgstr "GNOME a besoin de verrouiller l’écran"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Impossible de verrouiller"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Le verrouillage a été bloqué par une application"
|
||||
|
||||
@ -1870,13 +1721,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "Le numéro PIM doit être un nombre ou être vide."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Impossible de démarrer %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Impossible de trouver l’application %s"
|
||||
@ -2352,11 +2203,11 @@ msgstr "Erreur d’autorisation Thunderbolt"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Impossible d’autoriser le périphérique Thunderbolt : %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume modifié"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -2390,23 +2241,23 @@ msgstr "Intégré seulement"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Faire glisser vers le haut pour déverrouiller"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Cliquer ou appuyer sur une touche pour déverrouiller"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Fenêtre de déverrouillage"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Se connecter en tant qu’autre utilisateur"
|
||||
|
||||
@ -2439,7 +2290,7 @@ msgstr "Restaurer les paramètres"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Conserver les modifications"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2448,7 +2299,7 @@ msgstr[1] "Les paramètres seront restaurés dans %d secondes"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2542,12 +2393,12 @@ msgstr ""
|
||||
msgid "List possible modes"
|
||||
msgstr "Lister les modes possibles"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Inconnu"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Impossible de lancer « %s »"
|
||||
@ -2564,6 +2415,156 @@ msgstr "Le mot de passe ne peut pas être vide"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "La fenêtre d’authentification a été écartée par l’utilisateur"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Gérer vos extensions GNOME"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Extensions de GNOME gère la mise à jour des extensions, la configuration des "
|
||||
"préférences des extensions et la suppression ou la désactivation des "
|
||||
"extensions non désirées."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configurer les extensions Shell de GNOME"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Enlever « %s » ?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Si vous enlevez cette extension, vous devrez recommencer son téléchargement "
|
||||
"si vous souhaitez la réactiver plus tard"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Enlever"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Mathieu Bridon <bochecha@fedoraproject.org>\n"
|
||||
"Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
|
||||
"Bruno Brouard <annoa.b@gmail.com>\n"
|
||||
"Cyril Arnaud <cyril dot arnaud at gmail dot com>\n"
|
||||
"Luc Guillemin <luc.guillemin@gmail.com>\n"
|
||||
"Luc Pionchon <pionchon.luc@gmail.com>\n"
|
||||
"Pierre Henry <pierrehenry73@yahoo.fr>\n"
|
||||
"Alexandre Franke <alexandre.franke@gmail.com>\n"
|
||||
"Mathieu Stumpf <psychoslave@culture-libre.org>\n"
|
||||
"Alain Lojewski <allomervan@gmail.com>\n"
|
||||
"Erwan Georget <egeorget@opmbx.org>\n"
|
||||
"Julien Humbert <julroy67@gmail.com>\n"
|
||||
"Claude Paroz <claude@2xlibre.net>\n"
|
||||
"Charles Monzat <charles.monzat@free.fr>"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d extension sera mise à jour à la prochaine connexion."
|
||||
msgstr[1] "%d extensions seront mises à jour à la prochaine connexion."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Description"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Site Web"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Enlever…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Aide"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "À propos des extensions"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions."
|
||||
"gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Les extensions peuvent poser des problèmes au système, y compris au niveau "
|
||||
"des performances. Si vous pensez être dans ce cas, il est recommandé de "
|
||||
"désactiver toutes les extensions."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Installée manuellement"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Intégrée"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Aucune extension installée"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Nous sommes désolés, mais il n’est pas possible d’obtenir la liste des "
|
||||
"extensions installées. Vérifiez que vous êtes bien connecté à GNOME et "
|
||||
"essayez encore une fois."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
#| msgid "Extension Updates Available"
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Mises à jour d’extensions prêtes"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Fermer la session…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2902,6 +2903,9 @@ msgstr[1] "%u entrées"
|
||||
msgid "System Sounds"
|
||||
msgstr "Sons système"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Copier l’erreur"
|
||||
|
||||
#~| msgid "Username: "
|
||||
#~ msgid "Username…"
|
||||
#~ msgstr "Nom d’utilisateur…"
|
||||
|
437
po/id.po
437
po/id.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-20 14:13+0700\n"
|
||||
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
|
||||
"PO-Revision-Date: 2020-05-14 16:29+0700\n"
|
||||
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
|
||||
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
|
||||
"Language: id\n"
|
||||
@ -20,7 +20,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"X-Generator: Poedit 2.3.1\n"
|
||||
"X-DamnedLies-Scope: partial\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
|
||||
@ -396,70 +396,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Log Masuk Jaringan"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Ekstensi"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Kelola Ekstensi GNOME Anda"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Ekstensi GNOME menangani pemutakhiran ekstensi, mengkonfigurasi preferensi "
|
||||
"ekstensi, dan menghapus atau menonaktifkan ekstensi yang tidak diinginkan."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurasi Ekstensi GNOME Shell"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Hapus \"%s\"?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
|
||||
"Anda ingin mengaktifkannya lagi"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Hapus"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n"
|
||||
"Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.\n"
|
||||
"Wibiharto <wibinem@yahoo.com>, 2011.\n"
|
||||
"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n"
|
||||
"Sucipto <sucipto@pm.me>, 2020."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Ada yang tidak beres"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -469,105 +411,25 @@ msgstr ""
|
||||
"tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada "
|
||||
"penulis ekstensi."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Detail Teknis"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Salin Galat"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Kunjungi halaman web ekstensi"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya."
|
||||
msgstr[1] "%d ekstensi akan diperbarui pada log masuk berikutnya."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Deskripsi"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versi"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Penulis"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Situs Web"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Hapus…"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Bantuan"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Tentang Ekstensi"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://"
|
||||
"extensions.gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Peringatan"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Ekstensi dapat menyebabkan masalah sistem, termasuk masalah kinerja. Jika "
|
||||
"Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan "
|
||||
"semua ekstensi."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Dipasang Secara Manual"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Bawaan"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Tidak Ada Ekstensi Terpasang"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang "
|
||||
"dipasang. Pastikan Anda masuk ke GNOME dan coba lagi."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Keluar…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Batal"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -619,71 +481,71 @@ msgid "(or swipe finger)"
|
||||
msgstr "(atau gesekkan jari)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Matikan"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "matikan;nyalakan ulang;berhenti"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Kunci Layar"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "kunci layar"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Keluar"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "keluar;logout;log out;sign off"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Suspensi"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "suspensi;tidur"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Ganti Pengguna"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "ganti pengguna"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr "kunci orientasi;buka kunci orientasi;layar;rotasi"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Buka Kunci Rotasi Layar"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Kunci Rotasi Layar"
|
||||
@ -849,53 +711,53 @@ msgstr "Tolak Akses"
|
||||
msgid "Grant Access"
|
||||
msgstr "Beri Akses"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Folder Tanpa Nama"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Sering"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Semua"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Buka Jendela"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Jendela Baru"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Hapus dari Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Tambah ke Favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Tampilkan Rincian"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s telah ditambahkan ke favorit Anda."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s telah dihapus dari favorit Anda."
|
||||
@ -916,7 +778,7 @@ msgstr "Headphone"
|
||||
msgid "Headset"
|
||||
msgstr "Headset"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
@ -1057,7 +919,7 @@ msgstr "Tak Ada Kejadian"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Jangan Ganggu"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Bersihkan"
|
||||
|
||||
@ -1207,7 +1069,7 @@ msgstr "Maaf, tidak berhasil. Silakan coba lagi."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s sekarang dikenal sebagai %s"
|
||||
@ -1251,23 +1113,23 @@ msgstr "Tambah jam dunia…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Jam Dunia"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Cuaca"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Pilih lokasi…"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Memuat…"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Pergi daring untuk informasi cuaca"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Informasi cuaca saat ini tidak tersedia"
|
||||
|
||||
@ -1409,35 +1271,35 @@ msgid "Other users are logged in"
|
||||
msgstr "Pengguna lain sedang log masuk"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (jarak jauh)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konsol)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Pasang"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Pasang Ekstensi"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Pemutakhiran Ekstensi Tersedia"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Pemutakhiran ekstensi siap dipasang."
|
||||
|
||||
@ -1584,11 +1446,11 @@ msgstr "Tilik Sumber"
|
||||
msgid "Web Page"
|
||||
msgstr "Halaman Web"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Masuk sebagai pengguna istimewa"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1596,15 +1458,15 @@ msgstr ""
|
||||
"Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan "
|
||||
"keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Kunci Layar dinonaktifkan"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Penguncian Layar memerlukan manajer tampilan GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Informasi Sistem"
|
||||
|
||||
@ -1684,16 +1546,16 @@ msgstr "Keluar"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Aktivitas"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistem"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Bar Atas"
|
||||
|
||||
@ -1724,11 +1586,11 @@ msgstr "GNOME perlu mengunci layar"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Tak bisa mengunci"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Kunci diblokir oleh suatu aplikasi"
|
||||
|
||||
@ -1811,13 +1673,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "PIM harus berupa angka atau kosong."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Tak bisa memulai %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Tak bisa menemukan aplikasi %s"
|
||||
@ -2290,11 +2152,11 @@ msgstr "Autorisasi Thunderbolt galat"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume diubah"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -2334,23 +2196,23 @@ msgstr "Hanya Bawaan"
|
||||
# %d: 1
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A, %d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Gesek ke atas untuk membuka kunci"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Klik atau tekan tombol untuk membuka kunci"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Buka Kunci Jendela"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Masuk sebagai pengguna lain"
|
||||
|
||||
@ -2383,7 +2245,7 @@ msgstr "Balikkan Tatanan"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Simpan Perubahan"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2392,7 +2254,7 @@ msgstr[1] "Perubahan tatanan akan dikembalikan dalam %d detik"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2485,12 +2347,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
|
||||
msgid "List possible modes"
|
||||
msgstr "Menampilkan mode yang mungkin"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Tak dikenal"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Gagal meluncurkan \"%s\""
|
||||
@ -2507,6 +2369,144 @@ msgstr "Kata sandi tidak boleh kosong"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Dialog autentikasi ditolak oleh pengguna"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Ekstensi"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Kelola Ekstensi GNOME Anda"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Ekstensi GNOME menangani pemutakhiran ekstensi, mengkonfigurasi preferensi "
|
||||
"ekstensi, dan menghapus atau menonaktifkan ekstensi yang tidak diinginkan."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurasi Ekstensi GNOME Shell"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Hapus \"%s\"?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
|
||||
"Anda ingin mengaktifkannya lagi"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Hapus"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n"
|
||||
"Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.\n"
|
||||
"Wibiharto <wibinem@yahoo.com>, 2011.\n"
|
||||
"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n"
|
||||
"Sucipto <sucipto@pm.me>, 2020."
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya."
|
||||
msgstr[1] "%d ekstensi akan diperbarui pada log masuk berikutnya."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Deskripsi"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versi"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Penulis"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Situs Web"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Hapus…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Bantuan"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Tentang Ekstensi"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://"
|
||||
"extensions.gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Peringatan"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Ekstensi dapat menyebabkan masalah sistem, termasuk masalah kinerja. Jika "
|
||||
"Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan "
|
||||
"semua ekstensi."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Dipasang Secara Manual"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Bawaan"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Tidak Ada Ekstensi Terpasang"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang "
|
||||
"dipasang. Pastikan Anda masuk ke GNOME dan coba lagi."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Pemutakhiran Ekstensi Siap"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Keluar…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2844,6 +2844,9 @@ msgstr[1] "%u Masukan"
|
||||
msgid "System Sounds"
|
||||
msgstr "Suara Sistem"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Salin Galat"
|
||||
|
||||
#~ msgid "Username…"
|
||||
#~ msgstr "Nama pengguna…"
|
||||
|
||||
|
428
po/it.po
428
po/it.po
@ -4,7 +4,7 @@
|
||||
# Copyright (C) 2019, 2020 the Free Software Foundation
|
||||
# This file is distributed under the same license as the gnome-shell package.
|
||||
#
|
||||
# Milo Casagrande <milo@milo.name>, 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019., 2020
|
||||
# Milo Casagrande <milo@milo.name>, 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
|
||||
# Luca Ferretti <elle.uca@infinito.it>, 2010, 2011, 2012, 2013, 2014.
|
||||
# Gianvito Cavasoli <gianvito@gmx.it>, 2016.
|
||||
#
|
||||
@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-19 16:08+0100\n"
|
||||
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
|
||||
"PO-Revision-Date: 2020-05-11 17:51+0200\n"
|
||||
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
|
||||
"Language-Team: Italiano <gnome-it-list@gnome.org>\n"
|
||||
"Language: it\n"
|
||||
@ -21,7 +21,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Poedit 2.2.4\n"
|
||||
"X-Generator: Poedit 2.3\n"
|
||||
"X-DamnedLies-Scope: partial\n"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
@ -406,66 +406,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Accesso di rete"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Estensioni"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Gestione delle Estensioni GNOME"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Estensioni GNOME gestisce l'aggiornamento e la configurazione delle "
|
||||
"preferenze delle estensioni e la rimozione o la disabilitazione di "
|
||||
"estensioni indesiderate."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configura le estensioni di GNOME Shell"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Rimuovere «%s»?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per "
|
||||
"abilitarla"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Rimuovi"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr "Milo Casagrande <milo@milo.name>"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Qualcosa è andato storto"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -475,105 +421,25 @@ msgstr ""
|
||||
"questa estensione. È consigliato segnalare il problema agli autori "
|
||||
"dell'estensione."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Dettagli tecnici"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Copia errore"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Sito web"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Sito web dell'estensione"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d estensione verrà aggiornata al prossimo accesso."
|
||||
msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versione"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autore"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Sito web"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Rimuovi…"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Aiuto"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Informazioni su Estensioni"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Per trovare e installare estensioni, visitare il sito web <a href=\"https://"
|
||||
"extensions.gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Attenzione"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Le estensioni possono causare problemi al sistema, compresi problemi di "
|
||||
"prestazioni. Nel caso si riscontrino dei problemi, è consigliato di "
|
||||
"disabilitare tutte le estensioni."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Installata manualmente"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Integrata"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Nessuna estensione installata"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di "
|
||||
"aver eseguire l'accesso a GNOME e riprovare."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Termina sessione…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -625,71 +491,71 @@ msgid "(or swipe finger)"
|
||||
msgstr "(o scorrere con il dito)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Spegni"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "spegni;arresta;ferma;stop;riavvia"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Blocca schermo"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "blocca schermo"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Termina sessione"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "esci;logout;termina sessione"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Sospendi"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "sospendi;riposo"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Cambia utente"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "cambia utente"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr "blocca orientazione;sblocca orientazione;schermo;rotazione"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Sblocca rotazione schermo"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Blocca rotazione schermo"
|
||||
@ -854,55 +720,55 @@ msgstr "Nega accesso"
|
||||
msgid "Grant Access"
|
||||
msgstr "Consenti accesso"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Cartella senza nome"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Frequenti"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Tutte"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Finestre aperte"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Nuova finestra"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Lancia utilizzando scheda grafica dedicata"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Rimuovi dai preferiti"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aggiungi ai preferiti"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Mostra dettagli"
|
||||
|
||||
# (ndt) e usare:
|
||||
# L'elemento %s è stato rimosso... ?
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s è stato aggiunto ai preferiti."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s è stato rimosso dai preferiti."
|
||||
@ -923,7 +789,7 @@ msgstr "Cuffie"
|
||||
msgid "Headset"
|
||||
msgstr "Cuffie con microfono"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Microfono"
|
||||
|
||||
@ -1064,7 +930,7 @@ msgstr "Nessun evento"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Non disturbare"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Pulisci"
|
||||
|
||||
@ -1213,7 +1079,7 @@ msgstr "Errore nell'autenticazione. Provare di nuovo."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s ha cambiato nome in %s"
|
||||
@ -1258,23 +1124,23 @@ msgstr "Aggiungi orologi mondiali…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Orologi mondiali"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Meteo"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Seleziona una posizione…"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Caricamento…"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Collegarsi a Internet per le informazioni meteo"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Le informazioni meteo non sono disponibili"
|
||||
|
||||
@ -1417,35 +1283,35 @@ msgid "Other users are logged in"
|
||||
msgstr "Altri utenti sono collegati"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (remoto)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (console)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Installa"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Installa estensione"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Disponibili aggiornamenti estensioni"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "È possibile installare gli aggiornamenti delle estensioni."
|
||||
|
||||
@ -1596,11 +1462,11 @@ msgstr "Visualizza sorgente"
|
||||
msgid "Web Page"
|
||||
msgstr "Pagina web"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Accesso eseguito come utente con privilegi"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1608,15 +1474,15 @@ msgstr ""
|
||||
"Per motivi di sicurezza, non è consigliato avviare una sessione con un "
|
||||
"utente con privilegi. Se possibile, accedere come utente normale."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Blocca scherma disabilitato"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Il blocco dello schermo richiede il gestore schermi di GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Informazione di sistema"
|
||||
|
||||
@ -1696,16 +1562,16 @@ 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:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Attività"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Sistema"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Barra superiore"
|
||||
|
||||
@ -1736,11 +1602,11 @@ msgstr "GNOME deve bloccare lo schermo"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Impossibile bloccare"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Il blocco è stato impedito da un'applicazione"
|
||||
|
||||
@ -1823,13 +1689,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "PIM deve essere un numero o vuoto."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Impossibile avviare %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Impossibile trovare l'applicazione %s"
|
||||
@ -2311,11 +2177,11 @@ msgstr "Errore autenticazione Thunderbolt"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Impossibile autorizzare il dispositivo Thunderbolt: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume modificato"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -2349,23 +2215,23 @@ msgstr "Solo integrato"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Scorrere per sbloccare"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Fare clic o premere un tasto per sbloccare"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Sblocca finestra"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Accedi come altro utente"
|
||||
|
||||
@ -2399,7 +2265,7 @@ msgstr "Ripristina impostazioni"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Mantieni modifiche"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2408,7 +2274,7 @@ msgstr[1] "Le modifiche alle impostazioni saranno ripristinate tra %d secondi"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2501,12 +2367,12 @@ msgstr "Usa una modalità specifica, per es. «gdm» per la schermata d'accesso"
|
||||
msgid "List possible modes"
|
||||
msgstr "Elenca le modalità possibili"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Avvio di «%s» non riuscito"
|
||||
@ -2523,6 +2389,140 @@ msgstr "La password non può essere vuota"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "La finestra di dialogo di autenticazione è stata annullata dall'utente"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Estensioni"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Gestione delle Estensioni GNOME"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Estensioni GNOME gestisce l'aggiornamento e la configurazione delle "
|
||||
"preferenze delle estensioni e la rimozione o la disabilitazione di "
|
||||
"estensioni indesiderate."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Configura le estensioni di GNOME Shell"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Rimuovere «%s»?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per "
|
||||
"abilitarla"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Rimuovi"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr "Milo Casagrande <milo@milo.name>"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d estensione verrà aggiornata al prossimo accesso."
|
||||
msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versione"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autore"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Sito web"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Rimuovi…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Aiuto"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Informazioni su Estensioni"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Per trovare e installare estensioni, visitare il sito web <a href=\"https://"
|
||||
"extensions.gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Attenzione"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Le estensioni possono causare problemi al sistema, compresi problemi di "
|
||||
"prestazioni. Nel caso si riscontrino dei problemi, è consigliato di "
|
||||
"disabilitare tutte le estensioni."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Installata manualmente"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Integrata"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Nessuna estensione installata"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di "
|
||||
"aver eseguire l'accesso a GNOME e riprovare."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Disponibili aggiornamenti estensioni"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Termina sessione…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
|
489
po/ko.po
489
po/ko.po
@ -20,8 +20,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-02-28 07:20+0000\n"
|
||||
"PO-Revision-Date: 2020-02-28 17:34+0900\n"
|
||||
"POT-Creation-Date: 2020-05-26 21:26+0000\n"
|
||||
"PO-Revision-Date: 2020-05-28 08:49+0900\n"
|
||||
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
|
||||
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
|
||||
"Language: ko\n"
|
||||
@ -54,15 +54,6 @@ msgstr "모든 프로그램 표시"
|
||||
msgid "Open the application menu"
|
||||
msgstr "프로그램 메뉴 열기"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "확장"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "그놈 셸 확장을 설정합니다"
|
||||
|
||||
#: data/org.gnome.Shell.desktop.in.in:4
|
||||
msgid "GNOME Shell"
|
||||
msgstr "그놈 셸"
|
||||
@ -391,45 +382,12 @@ msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을
|
||||
msgid "Network Login"
|
||||
msgstr "네트워크 로그인"
|
||||
|
||||
#: js/extensionPrefs/main.js:140
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "“%s” 확장을 제거하시겠습니까?"
|
||||
|
||||
#: js/extensionPrefs/main.js:141
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr "확장을 제거한 다음 다시 사용하려면 다시 다운로드해야 합니다"
|
||||
|
||||
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "취소"
|
||||
|
||||
#: js/extensionPrefs/main.js:145
|
||||
msgid "Remove"
|
||||
msgstr "제거"
|
||||
|
||||
#: js/extensionPrefs/main.js:217
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"차영호 <ganadist@gmail.com>\n"
|
||||
"조성호 <darkcircle.0426@gmail.com>\n"
|
||||
"류창우 <cwryu@debian.org>"
|
||||
|
||||
#: js/extensionPrefs/main.js:219
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "그놈 확장을 관리합니다"
|
||||
|
||||
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "무언가 잘못되었습니다"
|
||||
|
||||
#: js/extensionPrefs/main.js:268
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -438,110 +396,31 @@ msgstr ""
|
||||
"죄송하지만 문제가 발생했습니다. 이 확장의 설정을 표시할 수 없습니다. 확장 개"
|
||||
"발자에게 이 문제를 알려주시기를 추천합니다."
|
||||
|
||||
#: js/extensionPrefs/main.js:275
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "기술적 정보"
|
||||
|
||||
#: js/extensionPrefs/main.js:310
|
||||
msgid "Copy Error"
|
||||
msgstr "오류 메시지 복사"
|
||||
|
||||
#: js/extensionPrefs/main.js:337
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "홈페이지"
|
||||
|
||||
#: js/extensionPrefs/main.js:338
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "확장 홈페이지 보기"
|
||||
|
||||
#: js/extensionPrefs/main.js:449
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "다음 로그인에 확장 %d개를 업데이트할 예정입니다."
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "설명"
|
||||
|
||||
# 커맨드라인 옵션 설명
|
||||
#: js/extensionPrefs/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "버전"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "작성자"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "홈페이지"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "제거…"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "도움말"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "확장 정보"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"확장을 찾고 추가하려면, <a href=\"https://extensions.gnome.org\">extensions."
|
||||
"gnome.org</a> 사이트를 방문하십시오."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "주의"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"확장 때문에 성능 문제 등의 시스템 문제가 발생할 수 있습니다. 시스템에 문제를 "
|
||||
"발견할 경우, 모든 확장을 꺼 보기를 권합니다."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:133
|
||||
msgid "Manually Installed"
|
||||
msgstr "수동 설치"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:157
|
||||
msgid "Built-In"
|
||||
msgstr "내장"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:198
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "설치한 확장 없음"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:234
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"대단히 죄송합니다. 설치한 확장 기능의 목록을 가져올 수 없습니다. 그놈 데스크"
|
||||
"톱에 로그인했는지 확인하시고 다시 시도하십시오."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:287
|
||||
msgid "Log Out…"
|
||||
msgstr "로그아웃…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "취소"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202
|
||||
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
|
||||
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
|
||||
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "암호"
|
||||
@ -564,8 +443,8 @@ msgstr "(예를 들어, 사용자 또는 %s)"
|
||||
#. 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/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
|
||||
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
|
||||
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
||||
msgid "Username"
|
||||
msgstr "사용자 이름"
|
||||
|
||||
@ -587,76 +466,76 @@ msgid "(or swipe finger)"
|
||||
msgstr "(또는 지문을 문지르십시오)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "컴퓨터 끄기"
|
||||
|
||||
# 주의: 키워드 번역
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr ""
|
||||
"power off;shutdown;전원;끄기;셧다운;reboot;restart;재시작;다시;리부팅;halt;"
|
||||
"stop;중지;"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "화면 잠그기"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "화면 잠그기"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "로그아웃"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "logout;로그아웃;log out;로그 아웃;sign off;나가기"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "절전"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "suspend;sleep;절전;슬립;서스펜드"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "사용자 바꾸기"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "사용자 바꾸기"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr ""
|
||||
"lock orientation;방향 잠금;unlock orientation;방향 잠금 해제;screen;화면;"
|
||||
"rotation;회전"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "화면 회전 잠금 해제"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "화면 회전 잠금"
|
||||
@ -815,54 +694,54 @@ msgstr "접근 거부"
|
||||
msgid "Grant Access"
|
||||
msgstr "접근 허용"
|
||||
|
||||
#: js/ui/appDisplay.js:906
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "이름 없는 폴더"
|
||||
|
||||
#: js/ui/appDisplay.js:929
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "자주 사용하는 프로그램이 여기 나타납니다"
|
||||
|
||||
#: js/ui/appDisplay.js:1064
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "자주"
|
||||
|
||||
#: js/ui/appDisplay.js:1071
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "모두"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "열린 창"
|
||||
|
||||
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "새 창"
|
||||
|
||||
#: js/ui/appDisplay.js:2481
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "지정한 그래픽 카드를 사용해 시작"
|
||||
|
||||
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "즐겨찾기에서 제거"
|
||||
|
||||
#: js/ui/appDisplay.js:2515
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "즐겨찾기에 추가"
|
||||
|
||||
# 주의: "Show ..." 형태지만 보이기로 번역하지 않는다
|
||||
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "자세히 보기"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s 프로그램을 즐겨찾기에 추가했습니다."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다."
|
||||
@ -883,7 +762,7 @@ msgstr "헤드폰"
|
||||
msgid "Headset"
|
||||
msgstr "헤드셋"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "마이크"
|
||||
|
||||
@ -1001,30 +880,30 @@ msgid "All Day"
|
||||
msgstr "종일"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: js/ui/calendar.js:867
|
||||
#: js/ui/calendar.js:868
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d"
|
||||
msgstr "%B %-d일 %A"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: js/ui/calendar.js:870
|
||||
#: js/ui/calendar.js:871
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d, %Y"
|
||||
msgstr "%Y년 %B %-d일 %A"
|
||||
|
||||
#: js/ui/calendar.js:1096
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "알림 없음"
|
||||
|
||||
#: js/ui/calendar.js:1099
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "행사 없음"
|
||||
|
||||
#: js/ui/calendar.js:1153
|
||||
#: js/ui/calendar.js:1157
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "방해 금지"
|
||||
|
||||
#: js/ui/calendar.js:1167
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "지우기"
|
||||
|
||||
@ -1070,80 +949,80 @@ msgstr "설치한 버전의 udisks는 PIM 설정을 지원하지 않습니다"
|
||||
msgid "Open with %s"
|
||||
msgstr "%s 프로그램으로 열기"
|
||||
|
||||
#: js/ui/components/networkAgent.js:89
|
||||
#: js/ui/components/networkAgent.js:91
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr "다른 방법으로 라우터의 “WPS” 단추를 눌러서 연결할 수 있습니다."
|
||||
|
||||
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
|
||||
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
|
||||
#: js/ui/status/network.js:314 js/ui/status/network.js:916
|
||||
msgid "Connect"
|
||||
msgstr "연결"
|
||||
|
||||
#: js/ui/components/networkAgent.js:208
|
||||
#: js/ui/components/networkAgent.js:210
|
||||
msgid "Key"
|
||||
msgstr "키"
|
||||
|
||||
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
|
||||
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
|
||||
msgid "Private key password"
|
||||
msgstr "개인 키 암호"
|
||||
|
||||
#: js/ui/components/networkAgent.js:267
|
||||
#: js/ui/components/networkAgent.js:269
|
||||
msgid "Identity"
|
||||
msgstr "신원"
|
||||
|
||||
#: js/ui/components/networkAgent.js:281
|
||||
#: js/ui/components/networkAgent.js:283
|
||||
msgid "Service"
|
||||
msgstr "서비스"
|
||||
|
||||
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "인증 필요"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
|
||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
"“%s”."
|
||||
msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다."
|
||||
|
||||
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "유선 802.1X 인증"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317
|
||||
#: js/ui/components/networkAgent.js:319
|
||||
msgid "Network name"
|
||||
msgstr "네트워크 이름"
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "인증이 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
|
||||
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN 코드가 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
|
||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다"
|
||||
|
||||
#: js/ui/components/networkAgent.js:331
|
||||
#: js/ui/components/networkAgent.js:333
|
||||
msgid "PIN"
|
||||
msgstr "PIN"
|
||||
|
||||
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
|
||||
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
|
||||
#: js/ui/components/networkAgent.js:711
|
||||
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "“%s”에 연결하려면 암호가 필요합니다."
|
||||
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
|
||||
msgid "Network Manager"
|
||||
msgstr "네트워크 관리"
|
||||
|
||||
#: js/ui/components/networkAgent.js:710
|
||||
#: js/ui/components/networkAgent.js:704
|
||||
msgid "VPN password"
|
||||
msgstr "VPN 암호"
|
||||
|
||||
@ -1169,7 +1048,7 @@ msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s의 대화명이 이제 %s입니다"
|
||||
@ -1205,31 +1084,31 @@ msgstr "%Y년 %B %-d일"
|
||||
msgid "%A %B %e %Y"
|
||||
msgstr "%Y년 %B %e일 %A"
|
||||
|
||||
#: js/ui/dateMenu.js:161
|
||||
#: js/ui/dateMenu.js:162
|
||||
msgid "Add world clocks…"
|
||||
msgstr "세계 시계 추가…"
|
||||
|
||||
#: js/ui/dateMenu.js:162
|
||||
#: js/ui/dateMenu.js:163
|
||||
msgid "World Clocks"
|
||||
msgstr "세계 시계"
|
||||
|
||||
#: js/ui/dateMenu.js:276
|
||||
#: js/ui/dateMenu.js:308
|
||||
msgid "Weather"
|
||||
msgstr "날씨"
|
||||
|
||||
#: js/ui/dateMenu.js:391
|
||||
#: js/ui/dateMenu.js:437
|
||||
msgid "Select a location…"
|
||||
msgstr "위치를 선택하십시오…"
|
||||
|
||||
#: js/ui/dateMenu.js:404
|
||||
#: js/ui/dateMenu.js:445
|
||||
msgid "Loading…"
|
||||
msgstr "읽어들이는 중…"
|
||||
|
||||
#: js/ui/dateMenu.js:414
|
||||
#: js/ui/dateMenu.js:455
|
||||
msgid "Go online for weather information"
|
||||
msgstr "날씨 정보를 온라인으로 가져옵니다"
|
||||
|
||||
#: js/ui/dateMenu.js:416
|
||||
#: js/ui/dateMenu.js:457
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "날씨 정보를 현재 사용할 수 없습니다"
|
||||
|
||||
@ -1360,36 +1239,36 @@ msgid "Other users are logged in"
|
||||
msgstr "다른 사용자가 로그인 중입니다"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (원격)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (콘솔)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:169
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "설치"
|
||||
|
||||
#: js/ui/extensionDownloader.js:175
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "확장 설치"
|
||||
|
||||
#: js/ui/extensionDownloader.js:176
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "확장 업데이트가 있습니다"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "확장 업데이트 설치할 준비가 되었습니다."
|
||||
|
||||
@ -1535,11 +1414,11 @@ msgstr "소스 보기"
|
||||
msgid "Web Page"
|
||||
msgstr "웹페이지"
|
||||
|
||||
#: js/ui/main.js:269
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "관리자 권한으로 로그인"
|
||||
|
||||
#: js/ui/main.js:270
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1547,24 +1426,24 @@ msgstr ""
|
||||
"관리자 권한으로 세션을 시작하는 일은 보안 이유로 피해야 합니다. 할 수 있으면 "
|
||||
"일반 유저로 로그인해야 합니다."
|
||||
|
||||
#: js/ui/main.js:276
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "화면 잠금 사용하지 않음"
|
||||
|
||||
# GDM
|
||||
#: js/ui/main.js:277
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "화면 잠금은 그놈 디스플레이 관리자가 필요합니다."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "시스템 정보"
|
||||
|
||||
#: js/ui/mpris.js:199
|
||||
#: js/ui/mpris.js:204
|
||||
msgid "Unknown artist"
|
||||
msgstr "알 수 없는 음악가"
|
||||
|
||||
#: js/ui/mpris.js:209
|
||||
#: js/ui/mpris.js:214
|
||||
msgid "Unknown title"
|
||||
msgstr "알 수 없는 제목"
|
||||
|
||||
@ -1636,16 +1515,16 @@ msgstr "끝내기"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "현재 활동"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "시스템"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "위 막대"
|
||||
|
||||
@ -1676,11 +1555,11 @@ msgstr "그놈에서 화면을 잠궈야 합니다"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "잠글 수 없습니다"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "프로그램이 잠금을 막았습니다"
|
||||
|
||||
@ -1763,13 +1642,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "PIM은 숫자거나 비어 있어야 합니다."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "%s 프로그램을 시작할 수 없습니다"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "%s 프로그램을 찾을 수 없습니다"
|
||||
@ -2238,12 +2117,12 @@ msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "썬더볼트 장치에 권한을 부여할 수 없습니다: %s"
|
||||
|
||||
# 오디오 볼륨
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "볼륨 바꿈"
|
||||
|
||||
# 오디오 볼륨
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "볼륨"
|
||||
|
||||
@ -2277,23 +2156,23 @@ msgstr "내장만 사용"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%B %-d일 %A"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "잠금을 풀려면 위로 살짝 미십시오"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "잠금을 풀려면 마우스 단추 또는 키를 누르십시오"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "창 잠금 풀기"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "다른 사용자로 로그인"
|
||||
|
||||
@ -2326,7 +2205,7 @@ msgstr "설정 되돌리기"
|
||||
msgid "Keep Changes"
|
||||
msgstr "바뀐 사항 유지"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2334,7 +2213,7 @@ msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2412,28 +2291,28 @@ msgid "Evolution Calendar"
|
||||
msgstr "에볼루션 달력"
|
||||
|
||||
# 커맨드라인 옵션 설명
|
||||
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
|
||||
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
|
||||
msgid "Print version"
|
||||
msgstr "버전을 표시합니다"
|
||||
|
||||
#: src/main.c:466
|
||||
#: src/main.c:464
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "GDM에서 로그인 화면에 사용할 모드"
|
||||
|
||||
#: src/main.c:472
|
||||
#: src/main.c:470
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 “gdm”"
|
||||
|
||||
#: src/main.c:478
|
||||
#: src/main.c:476
|
||||
msgid "List possible modes"
|
||||
msgstr "가능한 모드 목록 표시"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "알 수 없음"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "“%s” 실행에 실패했습니다"
|
||||
@ -2450,6 +2329,137 @@ msgstr "빈 암호를 쓸 수 없습니다"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "인증 대화 창을 사용자가 닫았습니다"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "확장"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "그놈 확장을 관리합니다"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr "그놈 확장 관리자에서는 확장 기능의 업데이트, 확장 기능의 설정, 원하지 않는 확장 기능 제거 또는 사용 중지를 처리합니다."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "그놈 셸 확장을 설정합니다"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "“%s” 확장을 제거하시겠습니까?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr "확장을 제거한 다음 다시 사용하려면 다시 다운로드해야 합니다"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "제거"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"차영호 <ganadist@gmail.com>\n"
|
||||
"조성호 <darkcircle.0426@gmail.com>\n"
|
||||
"류창우 <cwryu@debian.org>"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "다음 로그인에 확장 %d개를 업데이트할 예정입니다."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "설명"
|
||||
|
||||
# 커맨드라인 옵션 설명
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "버전"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "작성자"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "홈페이지"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "제거…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "도움말"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "확장 정보"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"확장을 찾고 추가하려면, <a href=\"https://extensions.gnome.org\">extensions."
|
||||
"gnome.org</a> 사이트를 방문하십시오."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "주의"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"확장 때문에 성능 문제 등의 시스템 문제가 발생할 수 있습니다. 시스템에 문제를 "
|
||||
"발견할 경우, 모든 확장을 꺼 보기를 권합니다."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "수동 설치"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "내장"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "설치한 확장 없음"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"대단히 죄송합니다. 설치한 확장 기능의 목록을 가져올 수 없습니다. 그놈 데스크"
|
||||
"톱에 로그인했는지 확인하시고 다시 시도하십시오."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "확장 업데이트가 준비되었습니다"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "로그아웃…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2785,3 +2795,6 @@ msgstr[0] "%u개 입력"
|
||||
#: subprojects/gvc/gvc-mixer-control.c:2766
|
||||
msgid "System Sounds"
|
||||
msgstr "시스템 소리"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "오류 메시지 복사"
|
||||
|
486
po/nl.po
486
po/nl.po
@ -16,8 +16,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-02-24 12:37+0000\n"
|
||||
"PO-Revision-Date: 2020-02-24 23:33+0100\n"
|
||||
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
|
||||
"PO-Revision-Date: 2020-05-06 13:10+0200\n"
|
||||
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
|
||||
"Language-Team: Nederlands <gnome-nl-list@gnome.org>\n"
|
||||
"Language: nl\n"
|
||||
@ -52,15 +52,6 @@ msgstr "Alle toepassingen tonen"
|
||||
msgid "Open the application menu"
|
||||
msgstr "Toepassingenmenu openen"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Uitbreidingen"
|
||||
|
||||
#: data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Gnome Shell-uitbreidingen configureren"
|
||||
|
||||
#: data/org.gnome.Shell.desktop.in.in:4
|
||||
msgid "GNOME Shell"
|
||||
msgstr "Gnome Shell"
|
||||
@ -408,47 +399,12 @@ msgstr "Focus pas wijzigen nadat de muisaanwijzer is gestopt met bewegen"
|
||||
msgid "Network Login"
|
||||
msgstr "Netwerkaanmelding"
|
||||
|
||||
#: js/extensionPrefs/main.js:140
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "‘%s’ verwijderen?"
|
||||
|
||||
#: js/extensionPrefs/main.js:141
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Als u een uitbreiding verwijdert, zult u deze opnieuw moeten downloaden om "
|
||||
"ze opnieuw te gebruiken"
|
||||
|
||||
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
#: js/extensionPrefs/main.js:145
|
||||
msgid "Remove"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: js/extensionPrefs/main.js:217
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Nathan Follens <nthn@unseen.is>\n"
|
||||
"\n"
|
||||
"Meer info over Gnome-NL http://nl.gnome.org"
|
||||
|
||||
#: js/extensionPrefs/main.js:219
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Beheer uw Gnome-uitbreidingen"
|
||||
|
||||
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Er is iets misgegaan"
|
||||
|
||||
#: js/extensionPrefs/main.js:268
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -458,111 +414,31 @@ msgstr ""
|
||||
"uitbreiding kunnen niet worden weergegeven. We raden u aan dit probleem te "
|
||||
"melden aan de ontwikkelaars van de uitbreiding."
|
||||
|
||||
#: js/extensionPrefs/main.js:275
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Technische details"
|
||||
|
||||
#: js/extensionPrefs/main.js:310
|
||||
msgid "Copy Error"
|
||||
msgstr "Fout kopiëren"
|
||||
|
||||
#: js/extensionPrefs/main.js:337
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Startpagina"
|
||||
|
||||
#: js/extensionPrefs/main.js:338
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Website van uitbreiding openen"
|
||||
|
||||
#: js/extensionPrefs/main.js:449
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d uitbreiding wordt bijgewerkt bij de volgende aanmelding."
|
||||
msgstr[1] "%d uitbreidingen worden bijgewerkt bij de volgende aanmelding."
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beschrijving"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versie"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: js/extensionPrefs/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Verwijderen…"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hulp"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Over uitbreidingen"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Bezoek <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> om "
|
||||
"uitbreidingen te zoeken en installeren."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Uitbreidingen kunnen problemen veroorzaken, inclusief prestatieproblemen. "
|
||||
"Als u een probleem met uw systeem ondervindt, wordt het aanbevolen eerst "
|
||||
"alle uitbreidingen uit te schakelen."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:133
|
||||
msgid "Manually Installed"
|
||||
msgstr "Handmatig geïnstalleerd"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:157
|
||||
msgid "Built-In"
|
||||
msgstr "Ingebouwd"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:198
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Geen uitbreidingen geïnstalleerd"
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:234
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Sorry, we konden de lijst met geïnstalleerde uitbreidingen niet verkrijgen. "
|
||||
"Zorg dat u bij Gnome aangemeld bent, en probeer het opnieuw."
|
||||
|
||||
#: js/extensionPrefs/ui/extensions-window.ui:287
|
||||
msgid "Log Out…"
|
||||
msgstr "Afmelden…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202
|
||||
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
|
||||
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
|
||||
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
|
||||
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
|
||||
#: js/ui/shellMountOperation.js:326
|
||||
msgid "Password"
|
||||
msgstr "Wachtwoord"
|
||||
@ -585,8 +461,8 @@ msgstr "(bijv. gebruiker of %s)"
|
||||
#. 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/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
|
||||
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
|
||||
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
|
||||
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
|
||||
msgid "Username"
|
||||
msgstr "Gebruikersnaam"
|
||||
|
||||
@ -842,45 +718,45 @@ msgstr "Toegang weigeren"
|
||||
msgid "Grant Access"
|
||||
msgstr "Toegang verlenen"
|
||||
|
||||
#: js/ui/appDisplay.js:906
|
||||
#: js/ui/appDisplay.js:932
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Naamloze map"
|
||||
|
||||
#: js/ui/appDisplay.js:929
|
||||
#: js/ui/appDisplay.js:955
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Vaak gebruikte toepassingen verschijnen hier"
|
||||
|
||||
#: js/ui/appDisplay.js:1064
|
||||
#: js/ui/appDisplay.js:1090
|
||||
msgid "Frequent"
|
||||
msgstr "Vaak gebruikt"
|
||||
|
||||
#: js/ui/appDisplay.js:1071
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "All"
|
||||
msgstr "Alles"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Vensters openen"
|
||||
msgstr "Open vensters"
|
||||
|
||||
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Nieuw venster"
|
||||
|
||||
# Dedicated niet vertaald
|
||||
#: js/ui/appDisplay.js:2481
|
||||
#: js/ui/appDisplay.js:2504
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Met grafische kaart opstarten"
|
||||
|
||||
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Uit favorieten verwijderen"
|
||||
|
||||
#: js/ui/appDisplay.js:2515
|
||||
#: js/ui/appDisplay.js:2538
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Aan favorieten toevoegen"
|
||||
|
||||
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Details tonen"
|
||||
|
||||
@ -910,7 +786,7 @@ msgstr "Hoofdtelefoon"
|
||||
msgid "Headset"
|
||||
msgstr "Headset"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Microfoon"
|
||||
|
||||
@ -1028,30 +904,30 @@ msgid "All Day"
|
||||
msgstr "Gehele dag"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on current year
|
||||
#: js/ui/calendar.js:867
|
||||
#: js/ui/calendar.js:868
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#. Translators: Shown on calendar heading when selected day occurs on different year
|
||||
#: js/ui/calendar.js:870
|
||||
#: js/ui/calendar.js:871
|
||||
msgctxt "calendar heading"
|
||||
msgid "%A, %B %-d, %Y"
|
||||
msgstr "%A %-d %B %Y"
|
||||
|
||||
#: js/ui/calendar.js:1096
|
||||
#: js/ui/calendar.js:1100
|
||||
msgid "No Notifications"
|
||||
msgstr "Geen notificaties"
|
||||
|
||||
#: js/ui/calendar.js:1099
|
||||
#: js/ui/calendar.js:1103
|
||||
msgid "No Events"
|
||||
msgstr "Geen gebeurtenissen"
|
||||
|
||||
#: js/ui/calendar.js:1153
|
||||
#: js/ui/calendar.js:1157
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Niet storen"
|
||||
|
||||
#: js/ui/calendar.js:1167
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Wissen"
|
||||
|
||||
@ -1100,39 +976,39 @@ msgstr ""
|
||||
msgid "Open with %s"
|
||||
msgstr "Openen met %s"
|
||||
|
||||
#: js/ui/components/networkAgent.js:89
|
||||
#: js/ui/components/networkAgent.js:91
|
||||
msgid ""
|
||||
"Alternatively you can connect by pushing the “WPS” button on your router."
|
||||
msgstr ""
|
||||
"U kunt ook verbinding maken door op de ‘WPS’-knop op uw router te drukken."
|
||||
|
||||
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
|
||||
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
|
||||
#: js/ui/status/network.js:314 js/ui/status/network.js:916
|
||||
msgid "Connect"
|
||||
msgstr "Verbinden"
|
||||
|
||||
#: js/ui/components/networkAgent.js:208
|
||||
#: js/ui/components/networkAgent.js:210
|
||||
msgid "Key"
|
||||
msgstr "Sleutel"
|
||||
|
||||
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
|
||||
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
|
||||
msgid "Private key password"
|
||||
msgstr "Wachtwoord van privésleutel"
|
||||
|
||||
#: js/ui/components/networkAgent.js:267
|
||||
#: js/ui/components/networkAgent.js:269
|
||||
msgid "Identity"
|
||||
msgstr "Identiteit"
|
||||
|
||||
#: js/ui/components/networkAgent.js:281
|
||||
#: js/ui/components/networkAgent.js:283
|
||||
msgid "Service"
|
||||
msgstr "Dienst"
|
||||
|
||||
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
|
||||
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
|
||||
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
|
||||
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
|
||||
msgid "Authentication required"
|
||||
msgstr "Aanmelding vereist"
|
||||
|
||||
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
|
||||
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"Passwords or encryption keys are required to access the wireless network "
|
||||
@ -1141,42 +1017,42 @@ msgstr ""
|
||||
"Voor toegang tot het draadloze netwerk ‘%s’ is een wachtwoord of sleutel "
|
||||
"benodigd."
|
||||
|
||||
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
|
||||
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
|
||||
msgid "Wired 802.1X authentication"
|
||||
msgstr "802.1X-authenticatie (bekabeld)"
|
||||
|
||||
#: js/ui/components/networkAgent.js:317
|
||||
#: js/ui/components/networkAgent.js:319
|
||||
msgid "Network name"
|
||||
msgstr "Netwerknaam"
|
||||
|
||||
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
|
||||
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
|
||||
msgid "DSL authentication"
|
||||
msgstr "DSL-authenticatie"
|
||||
|
||||
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
|
||||
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
|
||||
msgid "PIN code required"
|
||||
msgstr "PIN-code vereist"
|
||||
|
||||
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
|
||||
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
|
||||
msgid "PIN code is needed for the mobile broadband device"
|
||||
msgstr "PIN-code vereist voor het apparaat voor mobiel breedband"
|
||||
|
||||
#: js/ui/components/networkAgent.js:331
|
||||
#: js/ui/components/networkAgent.js:333
|
||||
msgid "PIN"
|
||||
msgstr "Pincode"
|
||||
|
||||
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
|
||||
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
|
||||
#: js/ui/components/networkAgent.js:711
|
||||
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
|
||||
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
|
||||
#: js/ui/components/networkAgent.js:705
|
||||
#, javascript-format
|
||||
msgid "A password is required to connect to “%s”."
|
||||
msgstr "Er is een wachtwoord nodig om met ‘%s’ te verbinden."
|
||||
|
||||
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
|
||||
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
|
||||
msgid "Network Manager"
|
||||
msgstr "Netwerk-manager"
|
||||
|
||||
#: js/ui/components/networkAgent.js:710
|
||||
#: js/ui/components/networkAgent.js:704
|
||||
msgid "VPN password"
|
||||
msgstr "VPN-wachtwoord"
|
||||
|
||||
@ -1203,7 +1079,7 @@ msgstr "Helaas, dat werkte niet. Probeer het opnieuw."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s heet vanaf nu %s"
|
||||
@ -1248,106 +1124,106 @@ msgstr "Wereldklokken toevoegen…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Wereldklokken"
|
||||
|
||||
#: js/ui/dateMenu.js:276
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Weer"
|
||||
|
||||
#: js/ui/dateMenu.js:391
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Selecteer een locatie…"
|
||||
|
||||
#: js/ui/dateMenu.js:404
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Laden…"
|
||||
|
||||
#: js/ui/dateMenu.js:414
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Ga online voor informatie over het weer"
|
||||
|
||||
#: js/ui/dateMenu.js:416
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Informatie over het weer is momenteel niet beschikbaar"
|
||||
|
||||
#: js/ui/endSessionDialog.js:37
|
||||
#: js/ui/endSessionDialog.js:39
|
||||
#, javascript-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "%s afmelden"
|
||||
|
||||
#: js/ui/endSessionDialog.js:38
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Afmelden"
|
||||
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#: js/ui/endSessionDialog.js:42
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
msgstr[0] "%s wordt automatisch afgemeld over %d seconde."
|
||||
msgstr[1] "%s wordt automatisch afgemeld over %d seconden."
|
||||
|
||||
#: js/ui/endSessionDialog.js:45
|
||||
#: js/ui/endSessionDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
msgstr[0] "U wordt automatisch afgemeld over %d seconde."
|
||||
msgstr[1] "U wordt automatisch afgemeld over %d seconden."
|
||||
|
||||
#: js/ui/endSessionDialog.js:51
|
||||
#: js/ui/endSessionDialog.js:53
|
||||
msgctxt "button"
|
||||
msgid "Log Out"
|
||||
msgstr "Afmelden"
|
||||
|
||||
#: js/ui/endSessionDialog.js:56
|
||||
#: js/ui/endSessionDialog.js:58
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Uitschakelen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:57
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
msgctxt "title"
|
||||
msgid "Install Updates & Power Off"
|
||||
msgstr "Updates installeren en uitschakelen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#: js/ui/endSessionDialog.js:61
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
msgstr[0] "De computer wordt automatisch afgesloten over %d seconde."
|
||||
msgstr[1] "De computer wordt automatisch afgesloten over %d seconden."
|
||||
|
||||
#: js/ui/endSessionDialog.js:63
|
||||
#: js/ui/endSessionDialog.js:65
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Gereedstaande software-updates installeren"
|
||||
|
||||
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
|
||||
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Opnieuw opstarten"
|
||||
|
||||
#: js/ui/endSessionDialog.js:68
|
||||
#: js/ui/endSessionDialog.js:70
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Uitschakelen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:74
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Opnieuw opstarten"
|
||||
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#: js/ui/endSessionDialog.js:78
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
msgstr[0] "De computer wordt opnieuw opgestart over %d seconde."
|
||||
msgstr[1] "De computer wordt opnieuw opgestart over %d seconden."
|
||||
|
||||
#: js/ui/endSessionDialog.js:89
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Opnieuw opstarten en updates installeren"
|
||||
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#: js/ui/endSessionDialog.js:93
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
@ -1357,22 +1233,22 @@ msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
"De computer zal opnieuw opstarten en updates installeren over %d seconden."
|
||||
|
||||
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
|
||||
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Herstarten en installeren"
|
||||
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
#: js/ui/endSessionDialog.js:100
|
||||
msgctxt "button"
|
||||
msgid "Install & Power Off"
|
||||
msgstr "Installeren en uitschakelen"
|
||||
|
||||
#: js/ui/endSessionDialog.js:99
|
||||
#: js/ui/endSessionDialog.js:101
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Uitschakelen na installatie van updates"
|
||||
|
||||
#: js/ui/endSessionDialog.js:106
|
||||
#: js/ui/endSessionDialog.js:108
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Upgrade"
|
||||
msgstr "Opnieuw opstarten en upgrades installeren"
|
||||
@ -1380,7 +1256,7 @@ msgstr "Opnieuw opstarten en upgrades installeren"
|
||||
#. Translators: This is the text displayed for system upgrades in the
|
||||
#. shut down dialog. First %s gets replaced with the distro name and
|
||||
#. second %s with the distro version to upgrade to
|
||||
#: js/ui/endSessionDialog.js:111
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
@ -1390,17 +1266,17 @@ msgstr ""
|
||||
"kan lang duren: zorg ervoor dat u een reservekopie heeft gemaakt en dat de "
|
||||
"computer is aangesloten op netstroom."
|
||||
|
||||
#: js/ui/endSessionDialog.js:259
|
||||
#: js/ui/endSessionDialog.js:261
|
||||
msgid "Running on battery power: Please plug in before installing updates."
|
||||
msgstr ""
|
||||
"De computer gebruikt accustroom. Sluit de adapter aan alvorens de "
|
||||
"installatie te starten."
|
||||
|
||||
#: js/ui/endSessionDialog.js:268
|
||||
#: js/ui/endSessionDialog.js:270
|
||||
msgid "Some applications are busy or have unsaved work"
|
||||
msgstr "Sommige toepassingen zijn bezig of hebben niet-opgeslagen werk"
|
||||
|
||||
#: js/ui/endSessionDialog.js:273
|
||||
#: js/ui/endSessionDialog.js:275
|
||||
msgid "Other users are logged in"
|
||||
msgstr "Er zijn andere gebruikers aangemeld"
|
||||
|
||||
@ -1416,24 +1292,24 @@ msgstr "%s (op afstand)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (console)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:169
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Installeren"
|
||||
|
||||
#: js/ui/extensionDownloader.js:175
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Uitbreiding installeren"
|
||||
|
||||
#: js/ui/extensionDownloader.js:176
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "‘%s’ downloaden van extensions.gnome.org en daarna installeren?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:233
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Er zijn uitbreidingsupdates beschikbaar"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:234
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Uitbreidingsupdates zijn klaar voor installatie."
|
||||
|
||||
@ -1582,11 +1458,11 @@ msgstr "Broncode weergeven"
|
||||
msgid "Web Page"
|
||||
msgstr "Webpagina"
|
||||
|
||||
#: js/ui/main.js:269
|
||||
#: js/ui/main.js:277
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Aangemeld als gebruiker met extra rechten"
|
||||
|
||||
#: js/ui/main.js:270
|
||||
#: js/ui/main.js:278
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1595,15 +1471,15 @@ msgstr ""
|
||||
"als gebruiker met extra rechten vermijdt. Meld u, indien mogelijk, aan als "
|
||||
"een normale gebruiker."
|
||||
|
||||
#: js/ui/main.js:276
|
||||
#: js/ui/main.js:317
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Schermvergrendeling uitgeschakeld"
|
||||
|
||||
#: js/ui/main.js:277
|
||||
#: js/ui/main.js:318
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Schermvergrendeling vereist de Gnome-displaymanager."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1551
|
||||
msgid "System Information"
|
||||
msgstr "Systeeminformatie"
|
||||
|
||||
@ -1687,12 +1563,12 @@ msgstr "Afsluiten"
|
||||
msgid "Activities"
|
||||
msgstr "Activiteiten"
|
||||
|
||||
#: js/ui/panel.js:707
|
||||
#: js/ui/panel.js:713
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Systeem"
|
||||
|
||||
#: js/ui/panel.js:820
|
||||
#: js/ui/panel.js:826
|
||||
msgid "Top Bar"
|
||||
msgstr "Menubalk"
|
||||
|
||||
@ -1810,13 +1686,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "De PIM moet ofwel een getal ofwel leeg zijn."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Kan ‘%s’ niet starten"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Kon ‘%s’ niet vinden"
|
||||
@ -2291,11 +2167,11 @@ msgstr "Thunderbolt-autorisatiefout"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Kon het Thunderbolt-apparaat niet autoriseren: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volume gewijzigd"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volume"
|
||||
|
||||
@ -2329,23 +2205,23 @@ msgstr "Enkel ingebouwd"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Veeg omhoog om te ontgrendelen"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Klik of druk op een toets om te ontgrendelen"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Venster voor ontgrendelen"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Aanmelden als andere gebruiker"
|
||||
|
||||
@ -2464,19 +2340,19 @@ msgstr "Sluiten"
|
||||
msgid "Evolution Calendar"
|
||||
msgstr "Evolution-agenda"
|
||||
|
||||
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
|
||||
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
|
||||
msgid "Print version"
|
||||
msgstr "Versie weergeven"
|
||||
|
||||
#: src/main.c:466
|
||||
#: src/main.c:464
|
||||
msgid "Mode used by GDM for login screen"
|
||||
msgstr "De modus die door GDM voor het aanmeldscherm gebruikt wordt"
|
||||
|
||||
#: src/main.c:472
|
||||
#: src/main.c:470
|
||||
msgid "Use a specific mode, e.g. “gdm” for login screen"
|
||||
msgstr "Specifieke modus gebruiken, bijv. ‘gdm’ voor het aanmeldscherm"
|
||||
|
||||
#: src/main.c:478
|
||||
#: src/main.c:476
|
||||
msgid "List possible modes"
|
||||
msgstr "Mogelijke modi tonen"
|
||||
|
||||
@ -2502,6 +2378,139 @@ msgstr "Het wachtwoord mag niet leeg blijven"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Authenticatievenster is door de gebruiker afgesloten"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Uitbreidingen"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Beheer uw Gnome-uitbreidingen"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Gnome Uitbreidingen staat in voor het bijwerken van uitbreidingen, hun "
|
||||
"voorkeuren te configureren of ongewenste uitbreidingen te verwijderen of uit "
|
||||
"te schakelen."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Gnome Shell-uitbreidingen configureren"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "‘%s’ verwijderen?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Als u een uitbreiding verwijdert, zult u deze opnieuw moeten downloaden om "
|
||||
"ze opnieuw te gebruiken"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Verwijderen"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Nathan Follens <nthn@unseen.is>\n"
|
||||
"\n"
|
||||
"Meer info over Gnome-NL http://nl.gnome.org"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d uitbreiding wordt bijgewerkt bij de volgende aanmelding."
|
||||
msgstr[1] "%d uitbreidingen worden bijgewerkt bij de volgende aanmelding."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beschrijving"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Versie"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Website"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Verwijderen…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hulp"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Over uitbreidingen"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Bezoek <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> om "
|
||||
"uitbreidingen te zoeken en installeren."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Uitbreidingen kunnen problemen veroorzaken, inclusief prestatieproblemen. "
|
||||
"Als u een probleem met uw systeem ondervindt, wordt het aanbevolen eerst "
|
||||
"alle uitbreidingen uit te schakelen."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Handmatig geïnstalleerd"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Ingebouwd"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Geen uitbreidingen geïnstalleerd"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Sorry, we konden de lijst met geïnstalleerde uitbreidingen niet verkrijgen. "
|
||||
"Zorg dat u bij Gnome aangemeld bent, en probeer het opnieuw."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Afmelden…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2839,6 +2848,9 @@ msgstr[1] "%u invoerkanalen"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systeemgeluiden"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Fout kopiëren"
|
||||
|
||||
#~ msgid "Browse in Software"
|
||||
#~ msgstr "Bladeren in Software"
|
||||
|
||||
|
427
po/pl.po
427
po/pl.po
@ -10,8 +10,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-19 15:40+0100\n"
|
||||
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
|
||||
"PO-Revision-Date: 2020-05-02 21:42+0200\n"
|
||||
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
|
||||
"Language-Team: Polish <community-poland@mozilla.org>\n"
|
||||
"Language: pl\n"
|
||||
@ -394,69 +394,12 @@ msgstr ""
|
||||
msgid "Network Login"
|
||||
msgstr "Logowanie do sieci"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Rozszerzenia"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Zarządzanie rozszerzeniami GNOME"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Ten program obsługuje aktualizowanie, konfigurowanie preferencji oraz "
|
||||
"usuwanie i wyłączanie niechcianych rozszerzeń."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Usunąć rozszerzenie „%s”?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od "
|
||||
"nowa"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Piotr Drąg <piotrdrag@gmail.com>, 2009-2020\n"
|
||||
"Tomasz Dominikowski <dominikowski@gmail.com>, 2009\n"
|
||||
"Wojciech Szczęsny <wszczesny@aviary.pl>, 2013\n"
|
||||
"Aviary.pl <community-poland@mozilla.org>, 2009-2020"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Coś się nie powiodło"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -465,106 +408,25 @@ msgstr ""
|
||||
"Wystąpił problem: nie można wyświetlić ustawień tego rozszerzenia. Zalecamy "
|
||||
"zgłoszenie problemu autorom rozszerzenia."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Informacje techniczne"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Skopiuj błąd"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Strona WWW"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Otwiera stronę WWW rozszerzenia"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d rozszerzenie zostanie zaktualizowane po następnym zalogowaniu."
|
||||
msgstr[1] "%d rozszerzenia zostaną zaktualizowane po następnym zalogowaniu."
|
||||
msgstr[2] "%d rozszerzeń zostanie zaktualizowanych po następnym zalogowaniu."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Wersja"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Witryna"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Usuń…"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Pomoc"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "O programie"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Witryna <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> "
|
||||
"umożliwia wyszukiwanie i dodawanie rozszerzeń."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Rozszerzenia mogą powodować problemy z komputerem, w tym związane "
|
||||
"z wydajnością. W przypadku występowania problemów zalecane jest wyłączenie "
|
||||
"wszystkich rozszerzeń."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Ręcznie zainstalowane"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Wbudowane"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Brak zainstalowanych rozszerzeń"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Nie można wyświetlić listy zainstalowanych rozszerzeń. Proszę się upewnić, "
|
||||
"że zalogowano w środowisku GNOME i spróbować ponownie."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Wyloguj się…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -858,44 +720,44 @@ msgstr "Odmów dostępu"
|
||||
msgid "Grant Access"
|
||||
msgstr "Udziel dostępu"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:932
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Katalog bez nazwy"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:955
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "W tym miejscu pojawią się często używane programy"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1090
|
||||
msgid "Frequent"
|
||||
msgstr "Często używane"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "All"
|
||||
msgstr "Wszystkie"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Otwarte okna"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Nowe okno"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2504
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Uruchom za pomocą dedykowanej karty graficznej"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Usuń z ulubionych"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2538
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Dodaj do ulubionych"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Wyświetl szczegóły"
|
||||
|
||||
@ -925,7 +787,7 @@ msgstr "Słuchawki"
|
||||
msgid "Headset"
|
||||
msgstr "Słuchawki z mikrofonem"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
@ -1066,7 +928,7 @@ msgstr "Brak wydarzeń"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Nie przeszkadzać"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Wyczyść"
|
||||
|
||||
@ -1212,7 +1074,7 @@ msgstr "To nie zadziałało. Proszę spróbować ponownie."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "Użytkownik „%s” jest teraz znany jako „%s”"
|
||||
@ -1256,38 +1118,38 @@ msgstr "Dodaj zegar światowy…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Zegar światowy"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Pogoda"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Wybierz położenie…"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Wczytywanie…"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Prognoza pogody wymaga połączenia z Internetem"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Prognoza pogody jest obecnie niedostępna"
|
||||
|
||||
#: js/ui/endSessionDialog.js:37
|
||||
#: js/ui/endSessionDialog.js:39
|
||||
#, javascript-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Wylogowanie użytkownika %s"
|
||||
|
||||
#: js/ui/endSessionDialog.js:38
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Wylogowanie"
|
||||
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#: js/ui/endSessionDialog.js:42
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
@ -1295,7 +1157,7 @@ msgstr[0] "Użytkownik %s zostanie wylogowany za %d sekundę."
|
||||
msgstr[1] "Użytkownik %s zostanie wylogowany za %d sekundy."
|
||||
msgstr[2] "Użytkownik %s zostanie wylogowany za %d sekund."
|
||||
|
||||
#: js/ui/endSessionDialog.js:45
|
||||
#: js/ui/endSessionDialog.js:47
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
@ -1303,22 +1165,22 @@ msgstr[0] "Wylogowanie nastąpi za %d sekundę."
|
||||
msgstr[1] "Wylogowanie nastąpi za %d sekundy."
|
||||
msgstr[2] "Wylogowanie nastąpi za %d sekund."
|
||||
|
||||
#: js/ui/endSessionDialog.js:51
|
||||
#: js/ui/endSessionDialog.js:53
|
||||
msgctxt "button"
|
||||
msgid "Log Out"
|
||||
msgstr "Wyloguj się"
|
||||
|
||||
#: js/ui/endSessionDialog.js:56
|
||||
#: js/ui/endSessionDialog.js:58
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Wyłączenie komputera"
|
||||
|
||||
#: js/ui/endSessionDialog.js:57
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
msgctxt "title"
|
||||
msgid "Install Updates & Power Off"
|
||||
msgstr "Instalacja aktualizacji i wyłączenie komputera"
|
||||
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#: js/ui/endSessionDialog.js:61
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
@ -1326,27 +1188,27 @@ msgstr[0] "Wyłączenie komputera nastąpi za %d sekundę."
|
||||
msgstr[1] "Wyłączenie komputera nastąpi za %d sekundy."
|
||||
msgstr[2] "Wyłączenie komputera nastąpi za %d sekund."
|
||||
|
||||
#: js/ui/endSessionDialog.js:63
|
||||
#: js/ui/endSessionDialog.js:65
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Instalacja oczekujących aktualizacji oprogramowania"
|
||||
|
||||
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
|
||||
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Uruchom ponownie"
|
||||
|
||||
#: js/ui/endSessionDialog.js:68
|
||||
#: js/ui/endSessionDialog.js:70
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Wyłącz komputer"
|
||||
|
||||
#: js/ui/endSessionDialog.js:74
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Ponowne uruchomienie"
|
||||
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#: js/ui/endSessionDialog.js:78
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
@ -1354,12 +1216,12 @@ msgstr[0] "Ponowne uruchomienie komputera nastąpi za %d sekundę."
|
||||
msgstr[1] "Ponowne uruchomienie komputera nastąpi za %d sekundy."
|
||||
msgstr[2] "Ponowne uruchomienie komputera nastąpi za %d sekund."
|
||||
|
||||
#: js/ui/endSessionDialog.js:89
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Ponowne uruchomienie i instalacja aktualizacji"
|
||||
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#: js/ui/endSessionDialog.js:93
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
@ -1374,22 +1236,22 @@ msgstr[2] ""
|
||||
"Ponowne uruchomienie komputera i instalacja aktualizacji nastąpi za "
|
||||
"%d sekund."
|
||||
|
||||
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
|
||||
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Uruchom ponownie i zainstaluj"
|
||||
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
#: js/ui/endSessionDialog.js:100
|
||||
msgctxt "button"
|
||||
msgid "Install & Power Off"
|
||||
msgstr "Zainstaluj i wyłącz komputer"
|
||||
|
||||
#: js/ui/endSessionDialog.js:99
|
||||
#: js/ui/endSessionDialog.js:101
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Wyłączenie komputera po zainstalowaniu aktualizacji"
|
||||
|
||||
#: js/ui/endSessionDialog.js:106
|
||||
#: js/ui/endSessionDialog.js:108
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Upgrade"
|
||||
msgstr "Ponowne uruchomienie i instalacja aktualizacji"
|
||||
@ -1397,7 +1259,7 @@ msgstr "Ponowne uruchomienie i instalacja aktualizacji"
|
||||
#. Translators: This is the text displayed for system upgrades in the
|
||||
#. shut down dialog. First %s gets replaced with the distro name and
|
||||
#. second %s with the distro version to upgrade to
|
||||
#: js/ui/endSessionDialog.js:111
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
@ -1407,17 +1269,17 @@ msgstr ""
|
||||
"aktualizacji może zająć dużo czasu. Proszę się upewnić, że wykonano kopię "
|
||||
"zapasową danych i podłączono komputer do prądu."
|
||||
|
||||
#: js/ui/endSessionDialog.js:259
|
||||
#: js/ui/endSessionDialog.js:261
|
||||
msgid "Running on battery power: Please plug in before installing updates."
|
||||
msgstr ""
|
||||
"Działanie na zasilaniu z akumulatora: proszę podłączyć komputer do prądu "
|
||||
"przed instalowaniem aktualizacji."
|
||||
|
||||
#: js/ui/endSessionDialog.js:268
|
||||
#: js/ui/endSessionDialog.js:270
|
||||
msgid "Some applications are busy or have unsaved work"
|
||||
msgstr "Niektóre programy są używane lub mają niezapisane dane"
|
||||
|
||||
#: js/ui/endSessionDialog.js:273
|
||||
#: js/ui/endSessionDialog.js:275
|
||||
msgid "Other users are logged in"
|
||||
msgstr "Inni użytkownicy są zalogowani"
|
||||
|
||||
@ -1433,25 +1295,25 @@ msgstr "%s (zdalnie)"
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konsola)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Zainstaluj"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Instalacja rozszerzenia"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr ""
|
||||
"Pobrać i zainstalować rozszerzenie „%s” z witryny extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:233
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Dostępne są aktualizacje rozszerzeń"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:234
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Aktualizacje rozszerzeń są gotowe do zainstalowania."
|
||||
|
||||
@ -1598,11 +1460,11 @@ msgstr "Wyświetl źródło"
|
||||
msgid "Web Page"
|
||||
msgstr "Strona WWW"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:277
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Zalogowano jako uprawniony użytkownik"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:278
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1610,15 +1472,15 @@ msgstr ""
|
||||
"Należy unikać działania jako uprawniony użytkownik z powodów bezpieczeństwa. "
|
||||
"Jeśli to możliwe, należy zalogować się jako zwykły użytkownik."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:317
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Blokada ekranu jest wyłączona"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:318
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Blokowanie ekranu wymaga menedżera wyświetlania GNOME."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1551
|
||||
msgid "System Information"
|
||||
msgstr "Informacje systemowe"
|
||||
|
||||
@ -1826,13 +1688,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "PIM musi być numerem lub być pusty."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Nie można uruchomić programu %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Nie można odnaleźć programu %s"
|
||||
@ -2257,7 +2119,7 @@ msgstr "Zablokuj ekran"
|
||||
|
||||
#: js/ui/status/system.js:116
|
||||
msgid "Power Off / Log Out"
|
||||
msgstr "Wyłącz komputer/wyloguj się"
|
||||
msgstr "Wyłącz/wyloguj się"
|
||||
|
||||
#: js/ui/status/system.js:119
|
||||
msgid "Log Out"
|
||||
@ -2310,11 +2172,11 @@ msgstr "Błąd upoważnienia Thunderbolt"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Nie można upoważnić urządzenia Thunderbolt: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Zmieniono głośność"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Głośność"
|
||||
|
||||
@ -2348,23 +2210,23 @@ msgstr "Tylko wbudowany"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A, %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Przeciągnięcie w górę odblokuje"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Kliknięcie lub naciśnięcie klawisza odblokuje"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Okno odblokowania"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Zaloguj jako inny użytkownik"
|
||||
|
||||
@ -2522,6 +2384,140 @@ msgstr "Hasło nie może być puste"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Okno uwierzytelniania zostało odrzucone przez użytkownika"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Rozszerzenia"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Zarządzanie rozszerzeniami GNOME"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"Ten program obsługuje aktualizowanie, konfigurowanie preferencji oraz "
|
||||
"usuwanie i wyłączanie niechcianych rozszerzeń."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Usunąć rozszerzenie „%s”?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od "
|
||||
"nowa"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Piotr Drąg <piotrdrag@gmail.com>, 2009-2020\n"
|
||||
"Tomasz Dominikowski <dominikowski@gmail.com>, 2009\n"
|
||||
"Wojciech Szczęsny <wszczesny@aviary.pl>, 2013\n"
|
||||
"Aviary.pl <community-poland@mozilla.org>, 2009-2020"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d rozszerzenie zostanie zaktualizowane po następnym zalogowaniu."
|
||||
msgstr[1] "%d rozszerzenia zostaną zaktualizowane po następnym zalogowaniu."
|
||||
msgstr[2] "%d rozszerzeń zostanie zaktualizowanych po następnym zalogowaniu."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Wersja"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Witryna"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Usuń…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Pomoc"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "O programie"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"Witryna <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> "
|
||||
"umożliwia wyszukiwanie i dodawanie rozszerzeń."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Rozszerzenia mogą powodować problemy z komputerem, w tym związane "
|
||||
"z wydajnością. W przypadku występowania problemów zalecane jest wyłączenie "
|
||||
"wszystkich rozszerzeń."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Ręcznie zainstalowane"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Wbudowane"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Brak zainstalowanych rozszerzeń"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Nie można wyświetlić listy zainstalowanych rozszerzeń. Proszę się upewnić, "
|
||||
"że zalogowano w środowisku GNOME i spróbować ponownie."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Wyloguj się…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2860,6 +2856,9 @@ msgstr[2] "%u wejść"
|
||||
msgid "System Sounds"
|
||||
msgstr "Dźwięki systemowe"
|
||||
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Aktualizacje rozszerzeń są gotowe"
|
||||
|
||||
msgctxt "button"
|
||||
msgid "Boot Options"
|
||||
msgstr "Opcje uruchamiania"
|
||||
|
161
po/sr.po
161
po/sr.po
@ -12,8 +12,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell master\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
|
||||
"PO-Revision-Date: 2020-04-02 21:42+0200\n"
|
||||
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
|
||||
"PO-Revision-Date: 2020-05-17 21:22+0200\n"
|
||||
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
|
||||
"Language-Team: Serbian <gnome-sr@googlegroups.org>\n"
|
||||
"Language: sr\n"
|
||||
@ -28,7 +28,7 @@ msgstr ""
|
||||
|
||||
#: data/50-gnome-shell-system.xml:6
|
||||
msgid "System"
|
||||
msgstr "Упишите тражено"
|
||||
msgstr "Систем"
|
||||
|
||||
#: data/50-gnome-shell-system.xml:9
|
||||
msgid "Show the notification list"
|
||||
@ -391,7 +391,7 @@ msgid "Network Login"
|
||||
msgstr "Мрежна пријава"
|
||||
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Нешто је пошло наопако"
|
||||
|
||||
@ -418,7 +418,7 @@ msgstr "Посети матичну страну проширењ"
|
||||
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
@ -474,13 +474,13 @@ msgid "(or swipe finger)"
|
||||
msgstr "(или превуците прст)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Искључи"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr ""
|
||||
"power off;shutdown;искључи;угаси;гашење;isključi;ugasi;gašenje;iskljuci;"
|
||||
@ -488,55 +488,55 @@ msgstr ""
|
||||
"стоп"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Закључај екран"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "закључај екран"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Одјави ме"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr ""
|
||||
"изађи;одјави се;одлогуј се;izađi;odjavi se;odloguj se;izadji;logout;log out;"
|
||||
"sign off"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Обустави"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr ""
|
||||
"suspend;sleep;обустави;спавај;суспендуј;obustavi;spavaj;suspenduj;suspend;"
|
||||
"sleep"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Промени корисника"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "switch user;промени корисника;promeni korisnika;switch user"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr ""
|
||||
"lock orientation;screen;rotation;закључај окретање екрана;закључај "
|
||||
@ -544,12 +544,12 @@ msgstr ""
|
||||
"okretanje ekrana;екран;ekran;окретање;okretanje;lock orientation;screen;"
|
||||
"rotation"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Откључај окретање екрана"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Закључај окретање екрана"
|
||||
@ -726,53 +726,53 @@ msgstr "Забрани приступ"
|
||||
msgid "Grant Access"
|
||||
msgstr "Дозволи приступ"
|
||||
|
||||
#: js/ui/appDisplay.js:932
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Неименована фасцикла"
|
||||
|
||||
#: js/ui/appDisplay.js:955
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Често коришћени програми ће се појавити овде"
|
||||
|
||||
#: js/ui/appDisplay.js:1090
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Често"
|
||||
|
||||
#: js/ui/appDisplay.js:1097
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Све"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Отвори прозоре"
|
||||
|
||||
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Нови прозор"
|
||||
|
||||
#: js/ui/appDisplay.js:2504
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Покрени са намењеном графичком картицом"
|
||||
|
||||
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Уклони из омиљених"
|
||||
|
||||
#: js/ui/appDisplay.js:2538
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Додај у омиљене"
|
||||
|
||||
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Прикажи детаље"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "„%s“ је додат међу омиљене."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "„%s“ је уклоњен из омиљених."
|
||||
@ -1145,18 +1145,18 @@ msgstr "Идите на мрежу за податке о временској
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Подаци о временској прогнози тренутно нису доступни."
|
||||
|
||||
#: js/ui/endSessionDialog.js:39
|
||||
#: js/ui/endSessionDialog.js:37
|
||||
#, javascript-format
|
||||
msgctxt "title"
|
||||
msgid "Log Out %s"
|
||||
msgstr "Одјави корисника „%s“"
|
||||
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#: js/ui/endSessionDialog.js:38
|
||||
msgctxt "title"
|
||||
msgid "Log Out"
|
||||
msgstr "Одјави ме"
|
||||
|
||||
#: js/ui/endSessionDialog.js:42
|
||||
#: js/ui/endSessionDialog.js:40
|
||||
#, javascript-format
|
||||
msgid "%s will be logged out automatically in %d second."
|
||||
msgid_plural "%s will be logged out automatically in %d seconds."
|
||||
@ -1165,7 +1165,7 @@ msgstr[1] "%s ће бити одјављен за %d секунде."
|
||||
msgstr[2] "%s ће бити одјављен за %d секунди."
|
||||
msgstr[3] "%s ће бити одјављен за %d секунду."
|
||||
|
||||
#: js/ui/endSessionDialog.js:47
|
||||
#: js/ui/endSessionDialog.js:45
|
||||
#, javascript-format
|
||||
msgid "You will be logged out automatically in %d second."
|
||||
msgid_plural "You will be logged out automatically in %d seconds."
|
||||
@ -1174,22 +1174,22 @@ msgstr[1] "Бићете одјављени за %d секунде."
|
||||
msgstr[2] "Бићете одјављени за %d секунди."
|
||||
msgstr[3] "Бићете одјављени за %d секунду."
|
||||
|
||||
#: js/ui/endSessionDialog.js:53
|
||||
#: js/ui/endSessionDialog.js:51
|
||||
msgctxt "button"
|
||||
msgid "Log Out"
|
||||
msgstr "Одјави"
|
||||
|
||||
#: js/ui/endSessionDialog.js:58
|
||||
#: js/ui/endSessionDialog.js:56
|
||||
msgctxt "title"
|
||||
msgid "Power Off"
|
||||
msgstr "Искључи"
|
||||
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#: js/ui/endSessionDialog.js:57
|
||||
msgctxt "title"
|
||||
msgid "Install Updates & Power Off"
|
||||
msgstr "Инсталирај освежења и искључи"
|
||||
|
||||
#: js/ui/endSessionDialog.js:61
|
||||
#: js/ui/endSessionDialog.js:59
|
||||
#, javascript-format
|
||||
msgid "The system will power off automatically in %d second."
|
||||
msgid_plural "The system will power off automatically in %d seconds."
|
||||
@ -1198,27 +1198,27 @@ msgstr[1] "Рачунар ће се искључити за %d секунде."
|
||||
msgstr[2] "Рачунар ће се искључити за %d секунди."
|
||||
msgstr[3] "Рачунар ће се искључити за %d секунду."
|
||||
|
||||
#: js/ui/endSessionDialog.js:65
|
||||
#: js/ui/endSessionDialog.js:63
|
||||
msgctxt "checkbox"
|
||||
msgid "Install pending software updates"
|
||||
msgstr "Инсталирај освежења софтвера на чекању"
|
||||
|
||||
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
|
||||
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
|
||||
msgctxt "button"
|
||||
msgid "Restart"
|
||||
msgstr "Поново покрени"
|
||||
|
||||
#: js/ui/endSessionDialog.js:70
|
||||
#: js/ui/endSessionDialog.js:68
|
||||
msgctxt "button"
|
||||
msgid "Power Off"
|
||||
msgstr "Искључи"
|
||||
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#: js/ui/endSessionDialog.js:74
|
||||
msgctxt "title"
|
||||
msgid "Restart"
|
||||
msgstr "Поново покрени"
|
||||
|
||||
#: js/ui/endSessionDialog.js:78
|
||||
#: js/ui/endSessionDialog.js:76
|
||||
#, javascript-format
|
||||
msgid "The system will restart automatically in %d second."
|
||||
msgid_plural "The system will restart automatically in %d seconds."
|
||||
@ -1227,12 +1227,12 @@ msgstr[1] "Систем ће се поново покренути за %d сек
|
||||
msgstr[2] "Систем ће се поново покренути за %d секунди."
|
||||
msgstr[3] "Систем ће се поново покренути за %d секунду."
|
||||
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#: js/ui/endSessionDialog.js:89
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Updates"
|
||||
msgstr "Поново покрени и инсталирај ажурирања"
|
||||
|
||||
#: js/ui/endSessionDialog.js:93
|
||||
#: js/ui/endSessionDialog.js:91
|
||||
#, javascript-format
|
||||
msgid "The system will automatically restart and install updates in %d second."
|
||||
msgid_plural ""
|
||||
@ -1246,22 +1246,22 @@ msgstr[2] ""
|
||||
msgstr[3] ""
|
||||
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
|
||||
|
||||
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
|
||||
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
|
||||
msgctxt "button"
|
||||
msgid "Restart & Install"
|
||||
msgstr "Поново покрени и инсталирај"
|
||||
|
||||
#: js/ui/endSessionDialog.js:100
|
||||
#: js/ui/endSessionDialog.js:98
|
||||
msgctxt "button"
|
||||
msgid "Install & Power Off"
|
||||
msgstr "Инсталирај и искључи"
|
||||
|
||||
#: js/ui/endSessionDialog.js:101
|
||||
#: js/ui/endSessionDialog.js:99
|
||||
msgctxt "checkbox"
|
||||
msgid "Power off after updates are installed"
|
||||
msgstr "Искључи након инсталирања освежења"
|
||||
|
||||
#: js/ui/endSessionDialog.js:108
|
||||
#: js/ui/endSessionDialog.js:106
|
||||
msgctxt "title"
|
||||
msgid "Restart & Install Upgrade"
|
||||
msgstr "Поново покрени и инсталирај надоградњу"
|
||||
@ -1269,7 +1269,7 @@ msgstr "Поново покрени и инсталирај надоградњу
|
||||
#. Translators: This is the text displayed for system upgrades in the
|
||||
#. shut down dialog. First %s gets replaced with the distro name and
|
||||
#. second %s with the distro version to upgrade to
|
||||
#: js/ui/endSessionDialog.js:113
|
||||
#: js/ui/endSessionDialog.js:111
|
||||
#, javascript-format
|
||||
msgid ""
|
||||
"%s %s will be installed after restart. Upgrade installation can take a long "
|
||||
@ -1279,26 +1279,26 @@ msgstr ""
|
||||
"понекад може да потраје: проверите да ли сте направили резерву ваших важних "
|
||||
"података и да ли је рачунар прикључен на мрежно напајање."
|
||||
|
||||
#: js/ui/endSessionDialog.js:261
|
||||
#: js/ui/endSessionDialog.js:259
|
||||
msgid "Running on battery power: Please plug in before installing updates."
|
||||
msgstr "На батерији сте, прикључите мрежно напајање пре инсталирања ажурирања."
|
||||
|
||||
#: js/ui/endSessionDialog.js:270
|
||||
#: js/ui/endSessionDialog.js:268
|
||||
msgid "Some applications are busy or have unsaved work"
|
||||
msgstr "Неки програми су заузети или имају несачувани рад"
|
||||
|
||||
#: js/ui/endSessionDialog.js:275
|
||||
#: js/ui/endSessionDialog.js:273
|
||||
msgid "Other users are logged in"
|
||||
msgstr "Други корисници су пријављени"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (удаљено)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (љуска)"
|
||||
@ -1316,11 +1316,11 @@ msgstr "Инсталирај проширење"
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
|
||||
|
||||
#: js/ui/extensionSystem.js:233
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Доступна су ажурирања проширења"
|
||||
|
||||
#: js/ui/extensionSystem.js:234
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Ажурирања проширења су доступна за инсталирање."
|
||||
|
||||
@ -1467,11 +1467,11 @@ msgstr "Прикажи код"
|
||||
msgid "Web Page"
|
||||
msgstr "Веб страница"
|
||||
|
||||
#: js/ui/main.js:277
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Пријављен као повлашћен корисник"
|
||||
|
||||
#: js/ui/main.js:278
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1479,23 +1479,23 @@ msgstr ""
|
||||
"Покретање сесије под повлашћеним корисничким налогом треба избегавати из "
|
||||
"безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник."
|
||||
|
||||
#: js/ui/main.js:317
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Закључавање екрана онемогућено"
|
||||
|
||||
#: js/ui/main.js:318
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана."
|
||||
|
||||
#: js/ui/messageTray.js:1551
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Подаци о систему"
|
||||
|
||||
#: js/ui/mpris.js:199
|
||||
#: js/ui/mpris.js:204
|
||||
msgid "Unknown artist"
|
||||
msgstr "Непознат извођач"
|
||||
|
||||
#: js/ui/mpris.js:209
|
||||
#: js/ui/mpris.js:214
|
||||
msgid "Unknown title"
|
||||
msgstr "Непознат наслов"
|
||||
|
||||
@ -1567,16 +1567,16 @@ msgstr "Изађи"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Активности"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "Систем"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Горња трака"
|
||||
|
||||
@ -1607,11 +1607,11 @@ msgstr "Гном мора да закључа екран"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Не могу да закључам"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Неки програм је блокирао закључавање"
|
||||
|
||||
@ -2273,7 +2273,7 @@ msgstr "Врати подешавања"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Задржи измене"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2284,7 +2284,7 @@ msgstr[3] "Измене подешавања ће бити враћене за %
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2377,12 +2377,12 @@ msgstr "Користи нарочит режим, нпр. „gdm“ за екр
|
||||
msgid "List possible modes"
|
||||
msgstr "Исписује могуће режиме"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Непознат"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Нисам успео да покренем „%s“"
|
||||
@ -2512,19 +2512,19 @@ msgstr ""
|
||||
"Уколико приметите проблеме у раду, препоручујемо да онемогућите сва "
|
||||
"проширења."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Ручно инсталирана"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Уграђена"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Неинсталирана проширења"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
@ -2532,7 +2532,12 @@ msgstr ""
|
||||
"Нажалост, није било могуће добавити списак инсталираних проширења. Проверите "
|
||||
"да ли сте пријављени у Гном и пробајте поново."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
#| msgid "Extension Updates Available"
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Спремна су ажурирања проширења"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Одјава…"
|
||||
|
||||
|
431
po/sv.po
431
po/sv.po
@ -11,8 +11,8 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gnome-shell\n"
|
||||
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
|
||||
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
|
||||
"PO-Revision-Date: 2020-03-19 21:39+0100\n"
|
||||
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
|
||||
"PO-Revision-Date: 2020-05-12 00:34+0200\n"
|
||||
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
|
||||
"Language: sv\n"
|
||||
@ -387,69 +387,12 @@ msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
|
||||
msgid "Network Login"
|
||||
msgstr "Nätverksinloggning"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: js/extensionPrefs/js/main.js:242
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Tillägg"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: js/extensionPrefs/js/main.js:243
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Hantera dina GNOME-tillägg"
|
||||
|
||||
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"GNOME Tillägg hanterar uppdatering av tillägg, konfiguration av "
|
||||
"inställningar för tillägg samt att ta bort eller inaktivera oönskade tillägg."
|
||||
|
||||
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurera tillägg för GNOME-skal"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:164
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Ta bort ”%s”?"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:165
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Om du tar bort tillägget kommer du att behöva återvända för att hämta det om "
|
||||
"du vill aktivera det igen"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
|
||||
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
|
||||
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
|
||||
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
|
||||
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:169
|
||||
msgid "Remove"
|
||||
msgstr "Ta bort"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:241
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"\n"
|
||||
"Skicka synpunkter på översättningen till\n"
|
||||
"<tp-sv@listor.tp-sv.se>."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:285
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:223
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
|
||||
msgid "Something’s gone wrong"
|
||||
msgstr "Något har gått fel"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:292
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
|
||||
msgid ""
|
||||
"We’re very sorry, but there’s been a problem: the settings for this "
|
||||
"extension can’t be displayed. We recommend that you report the issue to the "
|
||||
@ -459,104 +402,25 @@ msgstr ""
|
||||
"tillägg kan inte visas. Vi rekommenderar att du rapporterar problemet till "
|
||||
"tilläggets skapare."
|
||||
|
||||
#: js/extensionPrefs/js/main.js:299
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
|
||||
msgid "Technical Details"
|
||||
msgstr "Tekniska detaljer"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:334
|
||||
msgid "Copy Error"
|
||||
msgstr "Kopiera fel"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:361
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
|
||||
msgid "Homepage"
|
||||
msgstr "Webbsida"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:362
|
||||
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
|
||||
msgid "Visit extension homepage"
|
||||
msgstr "Besök webbsida för tillägg"
|
||||
|
||||
#: js/extensionPrefs/js/main.js:479
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d inlägg kommer att uppdateras vid nästa inloggning."
|
||||
msgstr[1] "%d inlägg kommer att uppdateras vid nästa inloggning."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beskrivning"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Upphovsman"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Webbplats"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Ta bort…"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hjälp"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Om tillägg"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"För att hitta och lägga till tillägg, besök <a href=\"https://extensions."
|
||||
"gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Varning"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Tillägg kan orsaka systemproblem, även prestandaproblem. Om du stöter på "
|
||||
"problem med ditt system så rekommenderas du att inaktivera alla tillägg."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:134
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manuellt installerade"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:158
|
||||
msgid "Built-In"
|
||||
msgstr "Inbyggda"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:199
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Inga installerade tillägg"
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:235
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Vi är ledsna, men det var inte möjligt att erhålla listan över installerade "
|
||||
"tillägg. Säkerställ att du är inloggad i GNOME och försök igen."
|
||||
|
||||
#: js/extensionPrefs/data/ui/extensions-window.ui:288
|
||||
msgid "Log Out…"
|
||||
msgstr "Logga ut…"
|
||||
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
|
||||
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
|
||||
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
|
||||
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
|
||||
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#. Cisco LEAP
|
||||
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
|
||||
@ -608,73 +472,73 @@ msgid "(or swipe finger)"
|
||||
msgstr "(eller dra fingret)"
|
||||
|
||||
#. Translators: The name of the power-off action in search
|
||||
#: js/misc/systemActions.js:89
|
||||
#: js/misc/systemActions.js:93
|
||||
msgctxt "search-result"
|
||||
msgid "Power Off"
|
||||
msgstr "Stäng av"
|
||||
|
||||
#. Translators: A list of keywords that match the power-off action, separated by semicolons
|
||||
#: js/misc/systemActions.js:92
|
||||
#: js/misc/systemActions.js:96
|
||||
msgid "power off;shutdown;reboot;restart;halt;stop"
|
||||
msgstr "stäng av;stäng ner;stäng;starta om;omstart;halt;stopp"
|
||||
|
||||
#. Translators: The name of the lock screen action in search
|
||||
#: js/misc/systemActions.js:97
|
||||
#: js/misc/systemActions.js:101
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen"
|
||||
msgstr "Lås skärm"
|
||||
|
||||
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
|
||||
#: js/misc/systemActions.js:100
|
||||
#: js/misc/systemActions.js:104
|
||||
msgid "lock screen"
|
||||
msgstr "lås skärm"
|
||||
|
||||
#. Translators: The name of the logout action in search
|
||||
#: js/misc/systemActions.js:105
|
||||
#: js/misc/systemActions.js:109
|
||||
msgctxt "search-result"
|
||||
msgid "Log Out"
|
||||
msgstr "Logga ut"
|
||||
|
||||
#. Translators: A list of keywords that match the logout action, separated by semicolons
|
||||
#: js/misc/systemActions.js:108
|
||||
#: js/misc/systemActions.js:112
|
||||
msgid "logout;log out;sign off"
|
||||
msgstr "utloggning;logga ut"
|
||||
|
||||
#. Translators: The name of the suspend action in search
|
||||
#: js/misc/systemActions.js:113
|
||||
#: js/misc/systemActions.js:117
|
||||
msgctxt "search-result"
|
||||
msgid "Suspend"
|
||||
msgstr "Vänteläge"
|
||||
|
||||
#. Translators: A list of keywords that match the suspend action, separated by semicolons
|
||||
#: js/misc/systemActions.js:116
|
||||
#: js/misc/systemActions.js:120
|
||||
msgid "suspend;sleep"
|
||||
msgstr "vänteläge;vila"
|
||||
|
||||
#. Translators: The name of the switch user action in search
|
||||
#: js/misc/systemActions.js:121
|
||||
#: js/misc/systemActions.js:125
|
||||
msgctxt "search-result"
|
||||
msgid "Switch User"
|
||||
msgstr "Växla användare"
|
||||
|
||||
#. Translators: A list of keywords that match the switch user action, separated by semicolons
|
||||
#: js/misc/systemActions.js:124
|
||||
#: js/misc/systemActions.js:128
|
||||
msgid "switch user"
|
||||
msgstr "växla användare"
|
||||
|
||||
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
|
||||
#: js/misc/systemActions.js:131
|
||||
#: js/misc/systemActions.js:135
|
||||
msgid "lock orientation;unlock orientation;screen;rotation"
|
||||
msgstr ""
|
||||
"lås orientering;lås riktning;lås upp orientering;lås upp riktning;skärm;"
|
||||
"rotation"
|
||||
|
||||
#: js/misc/systemActions.js:251
|
||||
#: js/misc/systemActions.js:255
|
||||
msgctxt "search-result"
|
||||
msgid "Unlock Screen Rotation"
|
||||
msgstr "Lås upp skärmrotation"
|
||||
|
||||
#: js/misc/systemActions.js:252
|
||||
#: js/misc/systemActions.js:256
|
||||
msgctxt "search-result"
|
||||
msgid "Lock Screen Rotation"
|
||||
msgstr "Lås skärmrotation"
|
||||
@ -840,53 +704,53 @@ msgstr "Neka åtkomst"
|
||||
msgid "Grant Access"
|
||||
msgstr "Bevilja åtkomst"
|
||||
|
||||
#: js/ui/appDisplay.js:898
|
||||
#: js/ui/appDisplay.js:939
|
||||
msgid "Unnamed Folder"
|
||||
msgstr "Namnlös mapp"
|
||||
|
||||
#: js/ui/appDisplay.js:921
|
||||
#: js/ui/appDisplay.js:962
|
||||
msgid "Frequently used applications will appear here"
|
||||
msgstr "Ofta använda program kommer visas här"
|
||||
|
||||
#: js/ui/appDisplay.js:1056
|
||||
#: js/ui/appDisplay.js:1097
|
||||
msgid "Frequent"
|
||||
msgstr "Ofta använda"
|
||||
|
||||
#: js/ui/appDisplay.js:1063
|
||||
#: js/ui/appDisplay.js:1104
|
||||
msgid "All"
|
||||
msgstr "Alla"
|
||||
|
||||
#. Translators: This is the heading of a list of open windows
|
||||
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
|
||||
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
|
||||
msgid "Open Windows"
|
||||
msgstr "Öppna fönster"
|
||||
|
||||
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
|
||||
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
|
||||
msgid "New Window"
|
||||
msgstr "Nytt fönster"
|
||||
|
||||
#: js/ui/appDisplay.js:2477
|
||||
#: js/ui/appDisplay.js:2511
|
||||
msgid "Launch using Dedicated Graphics Card"
|
||||
msgstr "Kör med diskret grafikkort"
|
||||
|
||||
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
|
||||
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
|
||||
msgid "Remove from Favorites"
|
||||
msgstr "Ta bort från favoriter"
|
||||
|
||||
#: js/ui/appDisplay.js:2511
|
||||
#: js/ui/appDisplay.js:2545
|
||||
msgid "Add to Favorites"
|
||||
msgstr "Lägg till som favorit"
|
||||
|
||||
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
|
||||
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
|
||||
msgid "Show Details"
|
||||
msgstr "Visa detaljer"
|
||||
|
||||
#: js/ui/appFavorites.js:152
|
||||
#: js/ui/appFavorites.js:153
|
||||
#, javascript-format
|
||||
msgid "%s has been added to your favorites."
|
||||
msgstr "%s har lagts till i dina favoriter."
|
||||
|
||||
#: js/ui/appFavorites.js:185
|
||||
#: js/ui/appFavorites.js:186
|
||||
#, javascript-format
|
||||
msgid "%s has been removed from your favorites."
|
||||
msgstr "%s har tagits bort från dina favoriter."
|
||||
@ -907,7 +771,7 @@ msgstr "Hörlurar"
|
||||
msgid "Headset"
|
||||
msgstr "Mikrofonlur"
|
||||
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
|
||||
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
|
||||
msgid "Microphone"
|
||||
msgstr "Mikrofon"
|
||||
|
||||
@ -1048,7 +912,7 @@ msgstr "Inga händelser"
|
||||
msgid "Do Not Disturb"
|
||||
msgstr "Stör ej"
|
||||
|
||||
#: js/ui/calendar.js:1171
|
||||
#: js/ui/calendar.js:1176
|
||||
msgid "Clear"
|
||||
msgstr "Töm"
|
||||
|
||||
@ -1197,7 +1061,7 @@ msgstr "Tyvärr, det fungerade inte. Försök igen."
|
||||
|
||||
#. Translators: this is the other person changing their old IM name to their new
|
||||
#. IM name.
|
||||
#: js/ui/components/telepathyClient.js:787
|
||||
#: js/ui/components/telepathyClient.js:823
|
||||
#, javascript-format
|
||||
msgid "%s is now known as %s"
|
||||
msgstr "%s är nu känd som %s"
|
||||
@ -1241,23 +1105,23 @@ msgstr "Lägg till världsklockor…"
|
||||
msgid "World Clocks"
|
||||
msgstr "Världsklockor"
|
||||
|
||||
#: js/ui/dateMenu.js:279
|
||||
#: js/ui/dateMenu.js:289
|
||||
msgid "Weather"
|
||||
msgstr "Väder"
|
||||
|
||||
#: js/ui/dateMenu.js:394
|
||||
#: js/ui/dateMenu.js:418
|
||||
msgid "Select a location…"
|
||||
msgstr "Välj en plats…"
|
||||
|
||||
#: js/ui/dateMenu.js:407
|
||||
#: js/ui/dateMenu.js:426
|
||||
msgid "Loading…"
|
||||
msgstr "Läser in…"
|
||||
|
||||
#: js/ui/dateMenu.js:417
|
||||
#: js/ui/dateMenu.js:436
|
||||
msgid "Go online for weather information"
|
||||
msgstr "Anslut till nätet för väderinformation"
|
||||
|
||||
#: js/ui/dateMenu.js:419
|
||||
#: js/ui/dateMenu.js:438
|
||||
msgid "Weather information is currently unavailable"
|
||||
msgstr "Väderinformation är för närvarande inte tillgänglig"
|
||||
|
||||
@ -1400,35 +1264,35 @@ msgid "Other users are logged in"
|
||||
msgstr "Andra användare är inloggade"
|
||||
|
||||
#. Translators: Remote here refers to a remote session, like a ssh login
|
||||
#: js/ui/endSessionDialog.js:588
|
||||
#: js/ui/endSessionDialog.js:586
|
||||
#, javascript-format
|
||||
msgid "%s (remote)"
|
||||
msgstr "%s (fjärransluten)"
|
||||
|
||||
#. Translators: Console here refers to a tty like a VT console
|
||||
#: js/ui/endSessionDialog.js:591
|
||||
#: js/ui/endSessionDialog.js:589
|
||||
#, javascript-format
|
||||
msgid "%s (console)"
|
||||
msgstr "%s (konsol)"
|
||||
|
||||
#: js/ui/extensionDownloader.js:181
|
||||
#: js/ui/extensionDownloader.js:185
|
||||
msgid "Install"
|
||||
msgstr "Installera"
|
||||
|
||||
#: js/ui/extensionDownloader.js:187
|
||||
#: js/ui/extensionDownloader.js:191
|
||||
msgid "Install Extension"
|
||||
msgstr "Installera tillägg"
|
||||
|
||||
#: js/ui/extensionDownloader.js:188
|
||||
#: js/ui/extensionDownloader.js:192
|
||||
#, javascript-format
|
||||
msgid "Download and install “%s” from extensions.gnome.org?"
|
||||
msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
|
||||
|
||||
#: js/ui/extensionSystem.js:228
|
||||
#: js/ui/extensionSystem.js:252
|
||||
msgid "Extension Updates Available"
|
||||
msgstr "Uppdateringar för tillägg finns tillgängliga"
|
||||
|
||||
#: js/ui/extensionSystem.js:229
|
||||
#: js/ui/extensionSystem.js:253
|
||||
msgid "Extension updates are ready to be installed."
|
||||
msgstr "Uppdateringar för tillägg är redo att installeras."
|
||||
|
||||
@ -1576,11 +1440,11 @@ msgstr "Visa källa"
|
||||
msgid "Web Page"
|
||||
msgstr "Webbsida"
|
||||
|
||||
#: js/ui/main.js:274
|
||||
#: js/ui/main.js:279
|
||||
msgid "Logged in as a privileged user"
|
||||
msgstr "Inloggad som en privilegierad användare"
|
||||
|
||||
#: js/ui/main.js:275
|
||||
#: js/ui/main.js:280
|
||||
msgid ""
|
||||
"Running a session as a privileged user should be avoided for security "
|
||||
"reasons. If possible, you should log in as a normal user."
|
||||
@ -1588,15 +1452,15 @@ msgstr ""
|
||||
"Att köra en session som en privilegierad användare bör undvikas av "
|
||||
"säkerhetsskäl. Om möjligt bör du logga in som en normal användare."
|
||||
|
||||
#: js/ui/main.js:281
|
||||
#: js/ui/main.js:319
|
||||
msgid "Screen Lock disabled"
|
||||
msgstr "Skärmlås inaktiverat"
|
||||
|
||||
#: js/ui/main.js:282
|
||||
#: js/ui/main.js:320
|
||||
msgid "Screen Locking requires the GNOME display manager."
|
||||
msgstr "Skärmlås kräver GNOME:s displayhanterare."
|
||||
|
||||
#: js/ui/messageTray.js:1554
|
||||
#: js/ui/messageTray.js:1548
|
||||
msgid "System Information"
|
||||
msgstr "Systeminformation"
|
||||
|
||||
@ -1676,16 +1540,16 @@ msgstr "Avsluta"
|
||||
|
||||
#. Translators: If there is no suitable word for "Activities"
|
||||
#. in your language, you can use the word for "Overview".
|
||||
#: js/ui/panel.js:434
|
||||
#: js/ui/panel.js:437
|
||||
msgid "Activities"
|
||||
msgstr "Aktiviteter"
|
||||
|
||||
#: js/ui/panel.js:713
|
||||
#: js/ui/panel.js:716
|
||||
msgctxt "System menu in the top bar"
|
||||
msgid "System"
|
||||
msgstr "System"
|
||||
|
||||
#: js/ui/panel.js:826
|
||||
#: js/ui/panel.js:829
|
||||
msgid "Top Bar"
|
||||
msgstr "Systemrad"
|
||||
|
||||
@ -1716,11 +1580,11 @@ msgstr "GNOME behöver låsa skärmen"
|
||||
#.
|
||||
#. XXX: another option is to kick the user into the gdm login
|
||||
#. screen, where we're not affected by grabs
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
|
||||
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
|
||||
msgid "Unable to lock"
|
||||
msgstr "Kunde inte låsa"
|
||||
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
|
||||
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
|
||||
msgid "Lock was blocked by an application"
|
||||
msgstr "Låsning hindrades av ett program"
|
||||
|
||||
@ -1803,13 +1667,13 @@ msgid "The PIM must be a number or empty."
|
||||
msgstr "PIM måste vara ett tal eller tomt."
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:469
|
||||
#: js/ui/shellMountOperation.js:465
|
||||
#, javascript-format
|
||||
msgid "Unable to start %s"
|
||||
msgstr "Kunde inte starta %s"
|
||||
|
||||
#. Translators: %s is the Disks application
|
||||
#: js/ui/shellMountOperation.js:471
|
||||
#: js/ui/shellMountOperation.js:467
|
||||
#, javascript-format
|
||||
msgid "Couldn’t find the %s application"
|
||||
msgstr "Kunde inte hitta programmet %s"
|
||||
@ -2283,11 +2147,11 @@ msgstr "Thunderbolt-auktoriseringsfel"
|
||||
msgid "Could not authorize the Thunderbolt device: %s"
|
||||
msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s"
|
||||
|
||||
#: js/ui/status/volume.js:150
|
||||
#: js/ui/status/volume.js:151
|
||||
msgid "Volume changed"
|
||||
msgstr "Volymen ändrades"
|
||||
|
||||
#: js/ui/status/volume.js:221
|
||||
#: js/ui/status/volume.js:222
|
||||
msgid "Volume"
|
||||
msgstr "Volym"
|
||||
|
||||
@ -2321,23 +2185,23 @@ msgstr "Inbyggd skärm"
|
||||
|
||||
#. Translators: This is a time format for a date in
|
||||
#. long format
|
||||
#: js/ui/unlockDialog.js:370
|
||||
#: js/ui/unlockDialog.js:371
|
||||
msgid "%A %B %-d"
|
||||
msgstr "%A %-d %B"
|
||||
|
||||
#: js/ui/unlockDialog.js:376
|
||||
#: js/ui/unlockDialog.js:377
|
||||
msgid "Swipe up to unlock"
|
||||
msgstr "Svep uppåt för att låsa upp"
|
||||
|
||||
#: js/ui/unlockDialog.js:377
|
||||
#: js/ui/unlockDialog.js:378
|
||||
msgid "Click or press a key to unlock"
|
||||
msgstr "Klicka eller tryck på en tangent för att låsa upp"
|
||||
|
||||
#: js/ui/unlockDialog.js:549
|
||||
#: js/ui/unlockDialog.js:550
|
||||
msgid "Unlock Window"
|
||||
msgstr "Lås upp fönster"
|
||||
|
||||
#: js/ui/unlockDialog.js:558
|
||||
#: js/ui/unlockDialog.js:559
|
||||
msgid "Log in as another user"
|
||||
msgstr "Logga in som en annan användare"
|
||||
|
||||
@ -2370,7 +2234,7 @@ msgstr "Återställ inställningar"
|
||||
msgid "Keep Changes"
|
||||
msgstr "Behåll ändringar"
|
||||
|
||||
#: js/ui/windowManager.js:85
|
||||
#: js/ui/windowManager.js:86
|
||||
#, javascript-format
|
||||
msgid "Settings changes will revert in %d second"
|
||||
msgid_plural "Settings changes will revert in %d seconds"
|
||||
@ -2379,7 +2243,7 @@ msgstr[1] "Inställningarna kommer återställas om %d sekunder"
|
||||
|
||||
#. Translators: This represents the size of a window. The first number is
|
||||
#. * the width of the window and the second is the height.
|
||||
#: js/ui/windowManager.js:544
|
||||
#: js/ui/windowManager.js:546
|
||||
#, javascript-format
|
||||
msgid "%d × %d"
|
||||
msgstr "%d × %d"
|
||||
@ -2472,12 +2336,12 @@ msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm"
|
||||
msgid "List possible modes"
|
||||
msgstr "Lista möjliga lägen"
|
||||
|
||||
#: src/shell-app.c:279
|
||||
#: src/shell-app.c:286
|
||||
msgctxt "program"
|
||||
msgid "Unknown"
|
||||
msgstr "Okänt"
|
||||
|
||||
#: src/shell-app.c:530
|
||||
#: src/shell-app.c:537
|
||||
#, c-format
|
||||
msgid "Failed to launch “%s”"
|
||||
msgstr "Misslyckades med att starta ”%s”"
|
||||
@ -2494,6 +2358,142 @@ msgstr "Lösenordet får inte vara blankt"
|
||||
msgid "Authentication dialog was dismissed by the user"
|
||||
msgstr "Autentiseringsdialogen stängdes av användaren"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
|
||||
#: subprojects/extensions-app/js/main.js:182
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
|
||||
msgid "Extensions"
|
||||
msgstr "Tillägg"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
|
||||
#: subprojects/extensions-app/js/main.js:183
|
||||
msgid "Manage your GNOME Extensions"
|
||||
msgstr "Hantera dina GNOME-tillägg"
|
||||
|
||||
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
|
||||
msgid ""
|
||||
"GNOME Extensions handles updating extensions, configuring extension "
|
||||
"preferences and removing or disabling unwanted extensions."
|
||||
msgstr ""
|
||||
"GNOME Tillägg hanterar uppdatering av tillägg, konfiguration av "
|
||||
"inställningar för tillägg samt att ta bort eller inaktivera oönskade tillägg."
|
||||
|
||||
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
|
||||
msgid "Configure GNOME Shell Extensions"
|
||||
msgstr "Konfigurera tillägg för GNOME-skal"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:144
|
||||
#, javascript-format
|
||||
msgid "Remove “%s”?"
|
||||
msgstr "Ta bort ”%s”?"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:145
|
||||
msgid ""
|
||||
"If you remove the extension, you need to return to download it if you want "
|
||||
"to enable it again"
|
||||
msgstr ""
|
||||
"Om du tar bort tillägget kommer du att behöva återvända för att hämta det om "
|
||||
"du vill aktivera det igen"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:149
|
||||
msgid "Remove"
|
||||
msgstr "Ta bort"
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:181
|
||||
msgid "translator-credits"
|
||||
msgstr ""
|
||||
"Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
|
||||
"\n"
|
||||
"Skicka synpunkter på översättningen till\n"
|
||||
"<tp-sv@listor.tp-sv.se>."
|
||||
|
||||
#: subprojects/extensions-app/js/main.js:316
|
||||
#, javascript-format
|
||||
msgid "%d extension will be updated on next login."
|
||||
msgid_plural "%d extensions will be updated on next login."
|
||||
msgstr[0] "%d inlägg kommer att uppdateras vid nästa inloggning."
|
||||
msgstr[1] "%d inlägg kommer att uppdateras vid nästa inloggning."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:100
|
||||
#: subprojects/extensions-tool/src/command-create.c:211
|
||||
#: subprojects/extensions-tool/src/main.c:173
|
||||
msgid "Description"
|
||||
msgstr "Beskrivning"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:123
|
||||
#: subprojects/extensions-tool/src/main.c:185
|
||||
msgid "Version"
|
||||
msgstr "Version"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:151
|
||||
msgid "Author"
|
||||
msgstr "Upphovsman"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:175
|
||||
msgid "Website"
|
||||
msgstr "Webbplats"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extension-row.ui:192
|
||||
msgid "Remove…"
|
||||
msgstr "Ta bort…"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
|
||||
msgid "Help"
|
||||
msgstr "Hjälp"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
|
||||
msgid "About Extensions"
|
||||
msgstr "Om tillägg"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
|
||||
msgid ""
|
||||
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
|
||||
"\">extensions.gnome.org</a>."
|
||||
msgstr ""
|
||||
"För att hitta och lägga till tillägg, besök <a href=\"https://extensions."
|
||||
"gnome.org\">extensions.gnome.org</a>."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
|
||||
msgid "Warning"
|
||||
msgstr "Varning"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
|
||||
msgid ""
|
||||
"Extensions can cause system issues, including performance problems. If you "
|
||||
"encounter problems with your system, it is recommended to disable all "
|
||||
"extensions."
|
||||
msgstr ""
|
||||
"Tillägg kan orsaka systemproblem, även prestandaproblem. Om du stöter på "
|
||||
"problem med ditt system så rekommenderas du att inaktivera alla tillägg."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
|
||||
msgid "Manually Installed"
|
||||
msgstr "Manuellt installerade"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
|
||||
msgid "Built-In"
|
||||
msgstr "Inbyggda"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
|
||||
msgid "No Installed Extensions"
|
||||
msgstr "Inga installerade tillägg"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
|
||||
msgid ""
|
||||
"We’re very sorry, but it was not possible to get the list of installed "
|
||||
"extensions. Make sure you are logged into GNOME and try again."
|
||||
msgstr ""
|
||||
"Vi är ledsna, men det var inte möjligt att erhålla listan över installerade "
|
||||
"tillägg. Säkerställ att du är inloggad i GNOME och försök igen."
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
|
||||
msgid "Extension Updates Ready"
|
||||
msgstr "Uppdateringar för tillägg är redo"
|
||||
|
||||
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
|
||||
msgid "Log Out…"
|
||||
msgstr "Logga ut…"
|
||||
|
||||
#. Translators: a file path to an extension directory
|
||||
#: subprojects/extensions-tool/src/command-create.c:125
|
||||
#, c-format
|
||||
@ -2831,6 +2831,9 @@ msgstr[1] "%u ingångar"
|
||||
msgid "System Sounds"
|
||||
msgstr "Systemljud"
|
||||
|
||||
#~ msgid "Copy Error"
|
||||
#~ msgstr "Kopiera fel"
|
||||
|
||||
#~ msgid "Username…"
|
||||
#~ msgstr "Användarnamn…"
|
||||
|
||||
|
630
po/zh_CN.po
630
po/zh_CN.po
File diff suppressed because it is too large
Load Diff
718
po/zh_TW.po
718
po/zh_TW.po
File diff suppressed because it is too large
Load Diff
@ -695,10 +695,35 @@ app_stop_view (App *app,
|
||||
g_signal_handlers_disconnect_by_func (view, on_objects_removed, app);
|
||||
}
|
||||
|
||||
static void
|
||||
app_notify_has_calendars (App *app)
|
||||
{
|
||||
GVariantBuilder dict_builder;
|
||||
|
||||
g_variant_builder_init (&dict_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&dict_builder, "{sv}", "HasCalendars",
|
||||
g_variant_new_boolean (app_has_calendars (app)));
|
||||
|
||||
g_dbus_connection_emit_signal (app->connection,
|
||||
NULL,
|
||||
"/org/gnome/Shell/CalendarServer",
|
||||
"org.freedesktop.DBus.Properties",
|
||||
"PropertiesChanged",
|
||||
g_variant_new ("(sa{sv}as)",
|
||||
"org.gnome.Shell.CalendarServer",
|
||||
&dict_builder,
|
||||
NULL),
|
||||
NULL);
|
||||
g_variant_builder_clear (&dict_builder);
|
||||
}
|
||||
|
||||
static void
|
||||
app_update_views (App *app)
|
||||
{
|
||||
GSList *link, *clients;
|
||||
gboolean had_views, has_views;
|
||||
|
||||
had_views = app->live_views != NULL;
|
||||
|
||||
for (link = app->live_views; link; link = g_slist_next (link))
|
||||
{
|
||||
@ -723,31 +748,14 @@ app_update_views (App *app)
|
||||
app->live_views = g_slist_prepend (app->live_views, view);
|
||||
}
|
||||
|
||||
has_views = app->live_views != NULL;
|
||||
|
||||
if (has_views != had_views)
|
||||
app_notify_has_calendars (app);
|
||||
|
||||
g_slist_free_full (clients, g_object_unref);
|
||||
}
|
||||
|
||||
static void
|
||||
app_notify_has_calendars (App *app)
|
||||
{
|
||||
GVariantBuilder dict_builder;
|
||||
|
||||
g_variant_builder_init (&dict_builder, G_VARIANT_TYPE ("a{sv}"));
|
||||
g_variant_builder_add (&dict_builder, "{sv}", "HasCalendars",
|
||||
g_variant_new_boolean (app_has_calendars (app)));
|
||||
|
||||
g_dbus_connection_emit_signal (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL),
|
||||
NULL,
|
||||
"/org/gnome/Shell/CalendarServer",
|
||||
"org.freedesktop.DBus.Properties",
|
||||
"PropertiesChanged",
|
||||
g_variant_new ("(sa{sv}as)",
|
||||
"org.gnome.Shell.CalendarServer",
|
||||
&dict_builder,
|
||||
NULL),
|
||||
NULL);
|
||||
g_variant_builder_clear (&dict_builder);
|
||||
}
|
||||
|
||||
static void
|
||||
on_client_appeared_cb (CalendarSources *sources,
|
||||
ECalClient *client,
|
||||
|
@ -253,7 +253,9 @@ deep_count_one (DeepCountState *state,
|
||||
else
|
||||
{
|
||||
content_type = g_file_info_get_content_type (info);
|
||||
add_content_type_to_cache (state, content_type);
|
||||
|
||||
if (content_type)
|
||||
add_content_type_to_cache (state, content_type);
|
||||
}
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user