Compare commits

...

36 Commits

Author SHA1 Message Date
Mario Sanchez Prada
043f042cec altTab: Close the list of thumbnails in the switcher when closing an app
This makes sure that no thumbnails list is left open and empty, since both
the app's icon and all its thumbnails will be gone once the app is closed.

https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:30:26 +00:00
Mario Sanchez Prada
815302b4ac altTab: Don't activate an app it the icon is no longer available
https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:30:17 +00:00
Mario Sanchez Prada
e608d4f26b altTab: Use arrow functions for callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-12-01 21:29:49 +00:00
Florian Müllner
77c20e3b8e [appSwitcher] Add shortcut to quit application
Allow to quit the currently selected application by hitting Alt-q,
similar to the OS X switcher.

https://bugzilla.gnome.org/show_bug.cgi?id=620106
2017-11-30 16:58:18 +00:00
Yosef Or Boczko
ecd9fba514 Updated Hebrew tranlsation 2017-11-26 22:32:27 +02:00
Yosef Or Boczko
71585f37e4 Updated Hebrew tranlsation 2017-11-26 22:19:39 +02:00
Aurimas Černius
99e53a68b9 Updated Lithuanian translation 2017-11-25 21:53:01 +02:00
Marek Cernocky
69e22f849e Updated Czech translation 2017-11-22 10:17:51 +01:00
Jeremy Bicha
9bad2182dd systemActions: Add more keywords
https://bugzilla.gnome.org/show_bug.cgi?id=786987
2017-11-21 13:32:21 -05:00
Jeremy Bicha
32b2639052 systemActions: Use Title Case
Use Title Case for the new GNOME 3.26 System Action shortcuts,
to match basically everything else in the Activities Overview.

https://bugzilla.gnome.org/show_bug.cgi?id=786987
2017-11-21 13:29:51 -05:00
Gautier Pelloux-Prayer
35a9c3ec86 extension: log message if extension could not be installed
https://bugzilla.gnome.org/show_bug.cgi?id=776940
2017-11-21 13:15:05 -05:00
Marco Trevisan (Treviño)
a46af9edf0 status/keyboard: Reset menuItems and Label objects on change
In the current code it could happen that we've menuItems and indicatorLabels
for sources that aren't anymore around, because in case a source is removed
we don't cleanup the their container objects.
Also, we should nullify InputManager's _currentSource when sources change
or it might point to some invalid data again.

So it could happen that we try to access an invalid menuitem or label
if a source change happens mentioning a source that has been deleted.

https://bugzilla.gnome.org/show_bug.cgi?id=788931
2017-11-21 02:16:38 -05:00
Petr Kovar
9dc977e324 Update Czech translation 2017-11-19 12:36:17 +01:00
Carlos Garnacho
cdc212ff6e overview: Protect ::drag-end handlers
These end up emitting item-drag-end/window-drag-end pretty much
without checks. Given the MetaDnd object may end up emitting
::drag-leave as a result of the plugin ending its grab, this
would result on spurious emission of those events and subsequent
warnings.

For extra paranoia, the _inDrag variable has been split into
_inItemDrag/_inWindowDrag so we can't cross the streams.

https://bugzilla.gnome.org/show_bug.cgi?id=784545
2017-11-17 14:34:40 +01:00
Kjartan Maraas
c53557b4c6 Updated Norwegian bokmål translation. 2017-11-09 20:20:46 +01:00
Khaled Hosny
1af65c616a Update Arabic translation 2017-11-03 10:18:20 +02:00
Stefano Facchini
feed029ae4 panel: focus windows on Escape key press
https://bugzilla.gnome.org/show_bug.cgi?id=671121
2017-11-01 20:52:58 +01:00
Florian Müllner
93925c99b4 style: Fix left tile preview
Windows that are tiled to the left/right only use rounded corners
where they are attached to the edge, the preview should follow that.
2017-11-01 19:59:26 +01:00
Florian Müllner
e765e684c3 windowAttentionHandler: Fix typo
Gah, thanks Alessandro Bono for the quick catch ...
2017-10-26 19:54:50 +02:00
Florian Müllner
eecbd4dd42 windowAttentionHandler: Follow app policy for attention notifications
While window attention notifications are created by the shell itself
rather than applications (most likely as a result of focus stealing
prevention), users still commonly link them to the application for
which they are shown. It makes therefore sense to follow the appropriate
policy set by the user rather than showing them unconditionally.

https://bugzilla.gnome.org/show_bug.cgi?id=779974
2017-10-26 19:39:04 +02:00
Alessandro Bono
fa276a3349 theme: Restore drag effect between workspaces
When dragging a window between two workspaces a light effect used
to be present. The effect was lost probably during the theme revamp
in version 3.16.

https://bugzilla.gnome.org/show_bug.cgi?id=789103
2017-10-26 19:10:16 +02:00
Florian Müllner
100d6a7fa7 dialog: Reset initial focus on destroy
Since 0b02f757f8 we track the button that should have key focus
when the dialog is opened. However when the dialog is reused, the
button may get destroyed - clear the initial focus in that case to
allow setButton() to set a new one.

https://bugzilla.gnome.org/show_bug.cgi?id=788542
2017-10-26 18:14:52 +02:00
Hannie Dumoleyn
9537bb276b Update Dutch translation 2017-10-25 09:06:02 +00:00
Marco Trevisan (Treviño)
891bc45e36 main: use SA_NODEFER to track signals to being able to raise from alarm
After we receive one of the tracked signals, in case we get stuck inside
the gjs_dumpstack () call, we use an alarm to raise the previously emitted
signal, however without using SA_NODEFER, the raise inside the alarm handler
will be ignored.

To avoid to handle new signals caused by the handler calls, once we get the
first signal, we just ignore them all as they could only lead to dirty traces.

Also, cleaning up a bit the code, and disabling the shell log handler
in dump_gjs_stack_alarm_sigaction since this might lead to a new
gjs_dumpstack () request.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-24 14:18:45 +08:00
Marco Trevisan (Treviño)
f90b225eaa main: call gjs_dumpstack on aborts and traps and optionally on segfaults
In order to debug issues triggered by JS code we might need to
see the stack of it, this is not normally visible in static stack traces,
thus we need to call gjs_dumpstack () before dying the process.

Intercepting signals SIGABRT, SIGTRAP (needed for catching fatal glib
errors) SIGFPE and SIGIOT by default, while introducing a new
'backtrace-segfaults' flag for the SHELL_DEBUG environment variable to
do the same on SIGSEGV and SIGBUS (this is a precaution to avoid that we
corrupt the stack for automatic errors trackers).

In any case after dumping the stack we raise the signal again, in order
to make the system aware of it.

https://bugzilla.gnome.org/show_bug.cgi?id=789237
2017-10-23 05:05:51 -05:00
Marco Trevisan (Treviño)
f9569912df window-tracker: use generic meta_window_get_sandboxed_app_id
This is valid for both Flatpak's and snaps now, we can use a more generic
API then.

https://bugzilla.gnome.org/show_bug.cgi?id=789277
2017-10-21 13:37:13 -05:00
Mingcong Bai
29eefc06d7 Update zh_CN translation 2017-10-21 19:35:59 +08:00
Florian Müllner
aa0858529e network: Spawn wifi panel for further WPA enterprise configuration
Settings recently split Wi-Fi configuration from the Network panel,
so launch that instead.

https://bugzilla.gnome.org/show_bug.cgi?id=789231
2017-10-20 18:03:33 +02:00
Mario Sanchez Prada
fb3070981c bluetooth: Add missing 'BluetoothHardwareAirplaneMode' to D-Bus interface
This D-Bus property was never been added here, which caused inconsistencies
under some scenarios (e.g. coming back from suspend) if some devices were
previously paired, since _sync() would then make the bluetooth menu visible
unconditially, because of the proxied property evaluating to 'false'.

Adding this to the D-Bus interface makes sure that it's no longer undefined
and returns the right value, fixing the bug.

https://bugzilla.gnome.org/show_bug.cgi?id=789110
2017-10-17 20:16:38 +01:00
Florian Müllner
129690eed2 Bump version to 3.27.1
Update NEWS.
2017-10-17 17:47:51 +02:00
Florian Müllner
c12da66da8 popupMenu: Fix setting ImageMenuItem's icons via strings
Commit 28ca96064b added support for setting PopupImageMenuItem's icons
via GIcons as well as via strings. However as the check whether an object
implements the GIcon interface only works on GObjects, specifying an icon
name was broken. Fix that to actually allow both strings and GIcons.

https://bugzilla.gnome.org/show_bug.cgi?id=789018
2017-10-16 20:47:05 +02:00
Florian Müllner
01d8811913 gdm: Remove separate greeter universal access icon
The idea behind always showing the icon on the login screen is that
the users' needs aren't known at that point. However we can achieve
the same behavior by including the 'always-show-universal-access-status'
key in GDM's presets, so drop the special-case.

https://bugzilla.gnome.org/show_bug.cgi?id=788943
2017-10-13 16:53:54 +02:00
Fabio Tomat
e16eb55339 Update Friulian translation
(cherry picked from commit 43ec5280b4)
2017-10-11 06:35:39 +00:00
Matej Urbančič
f3f8ecff20 Updated Slovenian translation 2017-10-09 20:53:39 +02:00
Jonas Ådahl
db43c45b12 layout: Unset primary and bottom monitor when headless
We were handling being initially headless by only setting the primary
and bottom monitor if there was any primary monitor, then checking the
primary monitor reference before making calls assuming there was any
monitors.

What we didn't do was unset the primary and bottom monitor when going
headless, meaning that temporarly disconnecting a monitor while having
windows open caused an assert to be triggered due to various code paths
taking the path assuming there are valid monitors.

Unsetting both the primary and bottom monitor when going headless avoids
the code paths in the same way as they were avoided when starting
headless.

https://bugzilla.gnome.org/show_bug.cgi?id=788607
2017-10-06 20:31:14 -04:00
Xavi Ivars
fa8523db1e [l10n] Updated Catalan (Valencian) translation 2017-10-05 13:59:19 +02:00
32 changed files with 4695 additions and 2935 deletions

11
NEWS
View File

@@ -1,3 +1,14 @@
3.27.1
======
* Fix using icon-name strings with PopupImageMenuItems [Florian; #789018]
* Misc. bug fixes [Jonas, Florian; #788607, #788943]
Contributors:
Jonas Ådahl, Florian Müllner
Translations:
Xavi Ivars [ca@valencia], Matej Urbančič [sl], Fabio Tomat [fur]
3.26.1 3.26.1
====== ======
* Don't detach launched apps to not break pkexec and friends [Florian; #763531] * Don't detach launched apps to not break pkexec and friends [Florian; #763531]

View File

@@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; } border: 1px solid #215d9c; }
.tile-preview-left.on-primary { .tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; } border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary { .tile-preview-right.on-primary {
border-radius: 0 6px 0 0; } border-radius: 0 6px 0 0; }
@@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; } border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl { .workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; } border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator { .workspace-thumbnail-indicator {
border: 4px solid #215d9c; border: 4px solid #215d9c;

View File

@@ -647,7 +647,7 @@ StScrollBar {
border: 1px solid #215d9c; } border: 1px solid #215d9c; }
.tile-preview-left.on-primary { .tile-preview-left.on-primary {
border-radius: 6px 6px 0 0; } border-radius: 6px 0 0 0; }
.tile-preview-right.on-primary { .tile-preview-right.on-primary {
border-radius: 0 6px 0 0; } border-radius: 0 6px 0 0; }
@@ -1339,6 +1339,10 @@ StScrollBar {
border-radius: 9px 0 0 9px; } border-radius: 9px 0 0 9px; }
.workspace-thumbnails:rtl { .workspace-thumbnails:rtl {
border-radius: 0 9px 9px 0; } border-radius: 0 9px 9px 0; }
.workspace-thumbnails .placeholder {
background-image: url("resource:///org/gnome/shell/theme/dash-placeholder.svg");
background-size: contain;
height: 24px; }
.workspace-thumbnail-indicator { .workspace-thumbnail-indicator {
border: 4px solid #215d9c; border: 4px solid #215d9c;

View File

@@ -96,21 +96,21 @@ const SystemActions = new Lang.Class({
this._actions = new Map(); this._actions = new Map();
this._actions.set(POWER_OFF_ACTION_ID, this._actions.set(POWER_OFF_ACTION_ID,
{ // Translators: The name of the power-off action in search { // Translators: The name of the power-off action in search
name: C_("search-result", "Power off"), name: C_("search-result", "Power Off"),
iconName: 'system-shutdown-symbolic', iconName: 'system-shutdown-symbolic',
// Translators: A list of keywords that match the power-off action, separated by semicolons // Translators: A list of keywords that match the power-off action, separated by semicolons
keywords: _("power off;shutdown").split(';'), keywords: _("power off;shutdown;reboot;restart").split(';'),
available: false }); available: false });
this._actions.set(LOCK_SCREEN_ACTION_ID, this._actions.set(LOCK_SCREEN_ACTION_ID,
{ // Translators: The name of the lock screen action in search { // Translators: The name of the lock screen action in search
name: C_("search-result", "Lock screen"), name: C_("search-result", "Lock Screen"),
iconName: 'system-lock-screen-symbolic', iconName: 'system-lock-screen-symbolic',
// Translators: A list of keywords that match the lock screen action, separated by semicolons // Translators: A list of keywords that match the lock screen action, separated by semicolons
keywords: _("lock screen").split(';'), keywords: _("lock screen").split(';'),
available: false }); available: false });
this._actions.set(LOGOUT_ACTION_ID, this._actions.set(LOGOUT_ACTION_ID,
{ // Translators: The name of the logout action in search { // Translators: The name of the logout action in search
name: C_("search-result", "Log out"), name: C_("search-result", "Log Out"),
iconName: 'application-exit-symbolic', iconName: 'application-exit-symbolic',
// Translators: A list of keywords that match the logout action, separated by semicolons // Translators: A list of keywords that match the logout action, separated by semicolons
keywords: _("logout;sign off").split(';'), keywords: _("logout;sign off").split(';'),
@@ -124,17 +124,17 @@ const SystemActions = new Lang.Class({
available: false }); available: false });
this._actions.set(SWITCH_USER_ACTION_ID, this._actions.set(SWITCH_USER_ACTION_ID,
{ // Translators: The name of the switch user action in search { // Translators: The name of the switch user action in search
name: C_("search-result", "Switch user"), name: C_("search-result", "Switch User"),
iconName: 'system-switch-user-symbolic', iconName: 'system-switch-user-symbolic',
// Translators: A list of keywords that match the switch user action, separated by semicolons // Translators: A list of keywords that match the switch user action, separated by semicolons
keywords: _("switch user").split(';'), keywords: _("switch user").split(';'),
available: false }); available: false });
this._actions.set(LOCK_ORIENTATION_ACTION_ID, this._actions.set(LOCK_ORIENTATION_ACTION_ID,
{ // Translators: The name of the lock orientation action in search { // Translators: The name of the lock orientation action in search
name: C_("search-result", "Lock orientation"), name: C_("search-result", "Lock Orientation"),
iconName: '', iconName: '',
// Translators: A list of keywords that match the lock orientation action, separated by semicolons // Translators: A list of keywords that match the lock orientation action, separated by semicolons
keywords: _("lock orientation").split(';'), keywords: _("lock orientation;screen;rotation").split(';'),
available: false }); available: false });
this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._loginScreenSettings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA });

View File

@@ -156,6 +156,17 @@ var AppSwitcherPopup = new Lang.Class({
this._items[this._selectedIndex].cachedWindows.length); this._items[this._selectedIndex].cachedWindows.length);
}, },
_quitApplication: function(appIndex) {
let appIcon = this._items[appIndex];
if (!appIcon)
return;
// Make sure the list of thumbnails is hidden before quitting the
// application, not to keep an empty list of windows showing up.
this._select(appIndex, null, false);
appIcon.app.request_quit();
},
_keyPressHandler: function(keysym, action) { _keyPressHandler: function(keysym, action) {
if (action == Meta.KeyBindingAction.SWITCH_GROUP) { if (action == Meta.KeyBindingAction.SWITCH_GROUP) {
if (!this._thumbnailsFocused) if (!this._thumbnailsFocused)
@@ -175,6 +186,8 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._selectedIndex, this._nextWindow()); this._select(this._selectedIndex, this._nextWindow());
else if (keysym == Clutter.Up) else if (keysym == Clutter.Up)
this._select(this._selectedIndex, null, true); this._select(this._selectedIndex, null, true);
else if (keysym == Clutter.q)
this._quitApplication(this._selectedIndex);
else else
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
} else { } else {
@@ -184,6 +197,8 @@ var AppSwitcherPopup = new Lang.Class({
this._select(this._next()); this._select(this._next());
else if (keysym == Clutter.Down) else if (keysym == Clutter.Down)
this._select(this._selectedIndex, 0); this._select(this._selectedIndex, 0);
else if (keysym == Clutter.q)
this._quitApplication(this._selectedIndex);
else else
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
} }
@@ -250,11 +265,12 @@ var AppSwitcherPopup = new Lang.Class({
_finish : function(timestamp) { _finish : function(timestamp) {
let appIcon = this._items[this._selectedIndex]; let appIcon = this._items[this._selectedIndex];
if (this._currentWindow < 0) if (appIcon) {
appIcon.app.activate_window(appIcon.cachedWindows[0], timestamp); if (this._currentWindow < 0)
else appIcon.app.activate_window(appIcon.cachedWindows[0], timestamp);
Main.activateWindow(appIcon.cachedWindows[this._currentWindow], timestamp); else if (appIcon.cachedWindows[this._currentWindow])
Main.activateWindow(appIcon.cachedWindows[this._currentWindow], timestamp);
}
this.parent(); this.parent();
}, },
@@ -317,8 +333,7 @@ var AppSwitcherPopup = new Lang.Class({
} else if (this._items[this._selectedIndex].cachedWindows.length > 1 && } else if (this._items[this._selectedIndex].cachedWindows.length > 1 &&
!forceAppFocus) { !forceAppFocus) {
this._thumbnailTimeoutId = Mainloop.timeout_add ( this._thumbnailTimeoutId = Mainloop.timeout_add (
THUMBNAIL_POPUP_TIME, THUMBNAIL_POPUP_TIME, () => { this._timeoutPopupThumbnails(); });
Lang.bind(this, this._timeoutPopupThumbnails));
GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails'); GLib.Source.set_name_by_id(this._thumbnailTimeoutId, '[gnome-shell] this._timeoutPopupThumbnails');
} }
}, },
@@ -337,10 +352,11 @@ var AppSwitcherPopup = new Lang.Class({
{ opacity: 0, { opacity: 0,
time: THUMBNAIL_FADE_TIME, time: THUMBNAIL_FADE_TIME,
transition: 'easeOutQuad', transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() { onComplete: () => {
thumbnailsActor.destroy(); thumbnailsActor.destroy();
this.thumbnailsVisible = false; this.thumbnailsVisible = false;
}) },
onCompleteScope: this
}); });
this._thumbnails = null; this._thumbnails = null;
this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED); this._switcherList._items[this._selectedIndex].remove_accessible_state (Atk.StateType.EXPANDED);
@@ -348,8 +364,12 @@ var AppSwitcherPopup = new Lang.Class({
_createThumbnails : function() { _createThumbnails : function() {
this._thumbnails = new ThumbnailList (this._items[this._selectedIndex].cachedWindows); this._thumbnails = new ThumbnailList (this._items[this._selectedIndex].cachedWindows);
this._thumbnails.connect('item-activated', Lang.bind(this, this._windowActivated)); this._thumbnails.connect('item-activated', (thumbnailList, n) => { this._windowActivated(thumbnailList, n); });
this._thumbnails.connect('item-entered', Lang.bind(this, this._windowEntered)); this._thumbnails.connect('item-entered', (thumbnailList, n) => { this._windowEntered(thumbnailList, n); });
this._thumbnails.actor.connect('destroy', () => {
this._thumbnails = null;
this._thumbnailsFocused = false;
});
this.actor.add_actor(this._thumbnails.actor); this.actor.add_actor(this._thumbnails.actor);
@@ -362,7 +382,8 @@ var AppSwitcherPopup = new Lang.Class({
{ opacity: 255, { opacity: 255,
time: THUMBNAIL_FADE_TIME, time: THUMBNAIL_FADE_TIME,
transition: 'easeOutQuad', transition: 'easeOutQuad',
onComplete: Lang.bind(this, function () { this.thumbnailsVisible = true; }) onComplete: () => { this.thumbnailsVisible = true; },
onCompleteScope: this
}); });
this._switcherList._items[this._selectedIndex].add_accessible_state (Atk.StateType.EXPANDED); this._switcherList._items[this._selectedIndex].add_accessible_state (Atk.StateType.EXPANDED);
@@ -389,9 +410,8 @@ var CyclerHighlight = new Lang.Class({
this.actor.add_constraint(constraint); this.actor.add_constraint(constraint);
this.actor.connect('notify::allocation', this.actor.connect('notify::allocation', () => { this._onAllocationChanged(); });
Lang.bind(this, this._onAllocationChanged)); this.actor.connect('destroy', () => { this._onDestroy(); });
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
}, },
set window(w) { set window(w) {
@@ -449,7 +469,7 @@ var CyclerPopup = new Lang.Class({
// We don't show an actual popup, so just provide what SwitcherPopup // We don't show an actual popup, so just provide what SwitcherPopup
// expects instead of inheriting from SwitcherList // expects instead of inheriting from SwitcherList
this._switcherList = { actor: new St.Widget(), this._switcherList = { actor: new St.Widget(),
highlight: Lang.bind(this, this._highlightItem), highlight: (index, justOutline) => { this._highlightItem(index, justOutline); },
connect: function() {} }; connect: function() {} };
}, },
@@ -639,12 +659,15 @@ var AppSwitcher = new Lang.Class({
this._altTabPopup = altTabPopup; this._altTabPopup = altTabPopup;
this._mouseTimeOutId = 0; this._mouseTimeOutId = 0;
this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); this.actor.connect('destroy', () => { this._onDestroy(); });
}, },
_onDestroy: function() { _onDestroy: function() {
if (this._mouseTimeOutId != 0) if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId); Mainloop.source_remove(this._mouseTimeOutId);
for (let i = 0; i < this.icons.length; i++)
this.icons[i].app.disconnect(this.icons[i]._stateChangedId);
}, },
_setIconSize: function() { _setIconSize: function() {
@@ -719,12 +742,11 @@ var AppSwitcher = new Lang.Class({
if (this._mouseTimeOutId != 0) if (this._mouseTimeOutId != 0)
Mainloop.source_remove(this._mouseTimeOutId); Mainloop.source_remove(this._mouseTimeOutId);
if (this._altTabPopup.thumbnailsVisible) { if (this._altTabPopup.thumbnailsVisible) {
this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT, this._mouseTimeOutId = Mainloop.timeout_add(APP_ICON_HOVER_TIMEOUT, () => {
Lang.bind(this, function () { this._enterItem(index);
this._enterItem(index); this._mouseTimeOutId = 0;
this._mouseTimeOutId = 0; return GLib.SOURCE_REMOVE;
return GLib.SOURCE_REMOVE; });
}));
GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem'); GLib.Source.set_name_by_id(this._mouseTimeOutId, '[gnome-shell] this._enterItem');
} else } else
this._itemEntered(index); this._itemEntered(index);
@@ -767,6 +789,11 @@ var AppSwitcher = new Lang.Class({
this.icons.push(appIcon); this.icons.push(appIcon);
let item = this.addItem(appIcon.actor, appIcon.label); let item = this.addItem(appIcon.actor, appIcon.label);
appIcon._stateChangedId = appIcon.app.connect('notify::state', (app) => {
if (app.state != Shell.AppState.RUNNING)
this._removeIcon(app);
});
let n = this._arrows.length; let n = this._arrows.length;
let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' }); let arrow = new St.DrawingArea({ style_class: 'switcher-arrow' });
arrow.connect('repaint', function() { SwitcherPopup.drawArrow(arrow, St.Side.BOTTOM); }); arrow.connect('repaint', function() { SwitcherPopup.drawArrow(arrow, St.Side.BOTTOM); });
@@ -777,7 +804,22 @@ var AppSwitcher = new Lang.Class({
arrow.hide(); arrow.hide();
else else
item.add_accessible_state (Atk.StateType.EXPANDABLE); item.add_accessible_state (Atk.StateType.EXPANDABLE);
} },
_removeIcon: function(app) {
for (let i = 0; i < this.icons.length; i++)
if (this.icons[i].app == app) {
this.icons.splice(i, 1);
this.removeItem(i);
if (this._curApp == i)
this._curApp = SwitcherPopup.mod(i, this.icons.length);
if (this.icons.length > 0)
this.highlight(this._curApp);
else
this.actor.destroy();
return;
}
},
}); });
var ThumbnailList = new Lang.Class({ var ThumbnailList = new Lang.Class({
@@ -816,6 +858,8 @@ var ThumbnailList = new Lang.Class({
} }
} }
this.actor.connect('destroy', () => { this._onDestroy(); });
}, },
addClones : function (availHeight) { addClones : function (availHeight) {
@@ -840,12 +884,38 @@ var ThumbnailList = new Lang.Class({
let clone = _createWindowClone(mutterWindow, thumbnailSize); let clone = _createWindowClone(mutterWindow, thumbnailSize);
this._thumbnailBins[i].set_height(binHeight); this._thumbnailBins[i].set_height(binHeight);
this._thumbnailBins[i].add_actor(clone); this._thumbnailBins[i].add_actor(clone);
clone._destroyId = mutterWindow.connect('destroy', () => { this._removeThumbnail(clone); });
this._clones.push(clone); this._clones.push(clone);
} }
// Make sure we only do this once // Make sure we only do this once
this._thumbnailBins = new Array(); this._thumbnailBins = new Array();
} },
_removeThumbnail: function(source, clone) {
for (let i = 0; i < this._clones.length; i++)
if (this._clones[i] == clone) {
this._clones.splice(i, 1);
this._windows.splice(i, 1);
this._labels.splice(i, 1);
this.removeItem(i);
if (this._clones.length > 0)
this.highlight(SwitcherPopup.mod(i, this._clones.length));
else
this.actor.destroy();
return;
}
},
_onDestroy: function() {
for (let i = 0; i < this._clones.length; i++) {
if (this._clones[i].source)
this._clones[i].source.disconnect(this._clones[i]._destroyId);
}
},
}); });
var WindowIcon = new Lang.Class({ var WindowIcon = new Lang.Class({

View File

@@ -16,6 +16,7 @@ var Dialog = new Lang.Class({
this.connect('destroy', Lang.bind(this, this._onDestroy)); this.connect('destroy', Lang.bind(this, this._onDestroy));
this._initialKeyFocus = null; this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
this._pressedKey = null; this._pressedKey = null;
this._buttonKeys = {}; this._buttonKeys = {};
this._createDialog(); this._createDialog();
@@ -87,6 +88,18 @@ var Dialog = new Lang.Class({
return Clutter.EVENT_PROPAGATE; return Clutter.EVENT_PROPAGATE;
}, },
_setInitialKeyFocus: function(actor) {
if (this._initialKeyFocus)
this._initialKeyFocus.disconnect(this._initialKeyFocusDestroyId);
this._initialKeyFocus = actor;
this._initialKeyFocusDestroyId = actor.connect('destroy', () => {
this._initialKeyFocus = null;
this._initialKeyFocusDestroyId = 0;
});
},
get initialKeyFocus() { get initialKeyFocus() {
return this._initialKeyFocus || this; return this._initialKeyFocus || this;
}, },
@@ -122,7 +135,7 @@ var Dialog = new Lang.Class({
button.add_style_pseudo_class('default'); button.add_style_pseudo_class('default');
if (this._initialKeyFocus == null || isDefault) if (this._initialKeyFocus == null || isDefault)
this._initialKeyFocus = button; this._setInitialKeyFocus(button);
for (let i in keys) for (let i in keys)
this._buttonKeys[keys[i]] = buttonInfo; this._buttonKeys[keys[i]] = buttonInfo;

View File

@@ -233,7 +233,9 @@ var InstallExtensionDialog = new Lang.Class({
let dir = Gio.File.new_for_path(GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); let dir = Gio.File.new_for_path(GLib.build_filenamev([global.userdatadir, 'extensions', uuid]));
let invocation = this._invocation; let invocation = this._invocation;
function errback(code, message) { function errback(code, message) {
invocation.return_dbus_error('org.gnome.Shell.' + code, message ? message.toString() : ''); let msg = message ? message.toString() : '';
log('Error while installing %s: %s (%s)'.format(uuid, code, msg));
invocation.return_dbus_error('org.gnome.Shell.' + code, msg);
} }
function callback() { function callback() {

View File

@@ -351,6 +351,9 @@ var LayoutManager = new Lang.Class({
this._loadBackground(); this._loadBackground();
this._pendingLoadBackground = false; this._pendingLoadBackground = false;
} }
} else {
this.primaryMonitor = null;
this.bottomMonitor = null;
} }
}, },

View File

@@ -417,7 +417,7 @@ var Overview = new Lang.Class({
beginItemDrag: function(source) { beginItemDrag: function(source) {
this.emit('item-drag-begin'); this.emit('item-drag-begin');
this._inDrag = true; this._inItemDrag = true;
}, },
cancelledItemDrag: function(source) { cancelledItemDrag: function(source) {
@@ -425,13 +425,15 @@ var Overview = new Lang.Class({
}, },
endItemDrag: function(source) { endItemDrag: function(source) {
if (!this._inItemDrag)
return;
this.emit('item-drag-end'); this.emit('item-drag-end');
this._inDrag = false; this._inItemDrag = false;
}, },
beginWindowDrag: function(window) { beginWindowDrag: function(window) {
this.emit('window-drag-begin', window); this.emit('window-drag-begin', window);
this._inDrag = true; this._inWindowDrag = true;
}, },
cancelledWindowDrag: function(window) { cancelledWindowDrag: function(window) {
@@ -439,8 +441,10 @@ var Overview = new Lang.Class({
}, },
endWindowDrag: function(window) { endWindowDrag: function(window) {
if (!this._inWindowDrag)
return;
this.emit('window-drag-end', window); this.emit('window-drag-end', window);
this._inDrag = false; this._inWindowDrag = false;
}, },
focusSearch: function() { focusSearch: function() {
@@ -484,7 +488,7 @@ var Overview = new Lang.Class({
shouldToggleByCornerOrButton: function() { shouldToggleByCornerOrButton: function() {
if (this.animationInProgress) if (this.animationInProgress)
return false; return false;
if (this._inDrag) if (this._inItemDrag || this._inWindowDrag)
return false; return false;
if (this._activationTime == 0 || Date.now() / 1000 - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT) if (this._activationTime == 0 || Date.now() / 1000 - this._activationTime > OVERVIEW_ACTIVATION_TIMEOUT)
return true; return true;

View File

@@ -763,7 +763,6 @@ const PANEL_ITEM_IMPLEMENTATIONS = {
'appMenu': AppMenuButton, 'appMenu': AppMenuButton,
'dateMenu': imports.ui.dateMenu.DateMenuButton, 'dateMenu': imports.ui.dateMenu.DateMenuButton,
'a11y': imports.ui.status.accessibility.ATIndicator, 'a11y': imports.ui.status.accessibility.ATIndicator,
'a11yGreeter': imports.ui.status.accessibility.ATGreeterIndicator,
'keyboard': imports.ui.status.keyboard.InputSourceIndicator, 'keyboard': imports.ui.status.keyboard.InputSourceIndicator,
}; };
@@ -798,6 +797,7 @@ var Panel = new Lang.Class({
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight)); this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate)); this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress));
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
Main.overview.connect('showing', Lang.bind(this, function () { Main.overview.connect('showing', Lang.bind(this, function () {
this.actor.add_style_pseudo_class('overview'); this.actor.add_style_pseudo_class('overview');
@@ -965,6 +965,16 @@ var Panel = new Lang.Class({
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
}, },
_onKeyPress: function(actor, event) {
let symbol = event.get_key_symbol();
if (symbol == Clutter.KEY_Escape) {
global.screen.focus_default_window(event.get_time());
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
},
_toggleMenu: function(indicator) { _toggleMenu: function(indicator) {
if (!indicator) // menu not supported by current session mode if (!indicator) // menu not supported by current session mode
return; return;

View File

@@ -405,7 +405,7 @@ var PopupImageMenuItem = new Lang.Class({
setIcon: function(icon) { setIcon: function(icon) {
// The 'icon' parameter can be either a Gio.Icon or a string. // The 'icon' parameter can be either a Gio.Icon or a string.
if (GObject.type_is_a(icon, Gio.Icon)) if (icon instanceof GObject.Object && GObject.type_is_a(icon, Gio.Icon))
this._icon.gicon = icon; this._icon.gicon = icon;
else else
this._icon.icon_name = icon; this._icon.icon_name = icon;

View File

@@ -49,7 +49,7 @@ const _modes = {
panel: { panel: {
left: [], left: [],
center: ['dateMenu'], center: ['dateMenu'],
right: ['a11yGreeter', 'keyboard', 'aggregateMenu'], right: ['a11y', 'keyboard', 'aggregateMenu']
}, },
panelStyle: 'login-screen' panelStyle: 'login-screen'
}, },

View File

@@ -212,12 +212,3 @@ var ATIndicator = new Lang.Class({
return widget; return widget;
} }
}); });
var ATGreeterIndicator = new Lang.Class({
Name: 'ATGreeterIndicator',
Extends: ATIndicator,
// Override visibility handling to be always visible
_syncMenuVisibility: function() { },
_queueSyncMenuVisibility: function() { }
});

View File

@@ -15,6 +15,7 @@ const RfkillManagerInterface = '<node> \
<interface name="org.gnome.SettingsDaemon.Rfkill"> \ <interface name="org.gnome.SettingsDaemon.Rfkill"> \
<property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \ <property name="BluetoothAirplaneMode" type="b" access="readwrite" /> \
<property name="BluetoothHasAirplaneMode" type="b" access="read" /> \ <property name="BluetoothHasAirplaneMode" type="b" access="read" /> \
<property name="BluetoothHardwareAirplaneMode" type="b" access="readwrite" /> \
</interface> \ </interface> \
</node>'; </node>';

View File

@@ -529,6 +529,7 @@ var InputSourceManager = new Lang.Class({
let sources = this._settings.inputSources; let sources = this._settings.inputSources;
let nSources = sources.length; let nSources = sources.length;
this._currentSource = null;
this._inputSources = {}; this._inputSources = {};
this._ibusSources = {}; this._ibusSources = {};
@@ -827,6 +828,9 @@ var InputSourceIndicator = new Lang.Class({
for (let i in this._indicatorLabels) for (let i in this._indicatorLabels)
this._indicatorLabels[i].destroy(); this._indicatorLabels[i].destroy();
this._menuItems = {};
this._indicatorLabels = {};
let menuIndex = 0; let menuIndex = 0;
for (let i in this._inputSourceManager.inputSources) { for (let i in this._inputSourceManager.inputSources) {
let is = this._inputSourceManager.inputSources[i]; let is = this._inputSourceManager.inputSources[i];

View File

@@ -951,7 +951,7 @@ var NMWirelessDialog = new Lang.Class({
|| (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) { || (accessPoints[0]._secType == NMAccessPointSecurity.WPA_ENT)) {
// 802.1x-enabled APs require further configuration, so they're // 802.1x-enabled APs require further configuration, so they're
// handled in gnome-control-center // handled in gnome-control-center
Util.spawn(['gnome-control-center', 'network', 'connect-8021x-wifi', Util.spawn(['gnome-control-center', 'wifi', 'connect-8021x-wifi',
this._device.get_path(), accessPoints[0].dbus_path]); this._device.get_path(), accessPoints[0].dbus_path]);
} else { } else {
let connection = new NetworkManager.Connection(); let connection = new NetworkManager.Connection();

View File

@@ -418,6 +418,11 @@ var SwitcherList = new Lang.Class({
return bbox; return bbox;
}, },
removeItem: function(index) {
let item = this._items.splice(index, 1);
item[0].destroy();
},
_onItemClicked: function (index) { _onItemClicked: function (index) {
this._itemActivated(index); this._itemActivated(index);
}, },
@@ -432,7 +437,7 @@ var SwitcherList = new Lang.Class({
}, },
highlight: function(index, justOutline) { highlight: function(index, justOutline) {
if (this._highlighted != -1) { if (this._items[this._highlighted]) {
this._items[this._highlighted].remove_style_pseudo_class('outlined'); this._items[this._highlighted].remove_style_pseudo_class('outlined');
this._items[this._highlighted].remove_style_pseudo_class('selected'); this._items[this._highlighted].remove_style_pseudo_class('selected');
} }

View File

@@ -79,6 +79,15 @@ var Source = new Lang.Class({
this.signalIDs = []; this.signalIDs = [];
}, },
_createPolicy: function() {
if (this._app && this._app.get_app_info()) {
let id = this._app.get_id().replace(/\.desktop$/,'');
return new MessageTray.NotificationApplicationPolicy(id);
} else {
return new MessageTray.NotificationGenericPolicy();
}
},
createIcon : function(size) { createIcon : function(size) {
return this._app.create_icon_texture(size); return this._app.create_icon_texture(size);
}, },

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.26.1', version: '3.27.1',
meson_version: '>= 0.42.0', meson_version: '>= 0.42.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

1089
po/ar.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

116
po/cs.po
View File

@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n" "POT-Creation-Date: 2017-11-21 18:32+0000\n"
"PO-Revision-Date: 2017-08-22 18:56+0200\n" "PO-Revision-Date: 2017-11-22 10:16+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n" "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
@@ -399,18 +399,20 @@ msgstr "(nebo otiskněte prst)"
#. Translators: The name of the power-off action in search #. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:99 #: js/misc/systemActions.js:99
msgctxt "search-result" msgctxt "search-result"
msgid "Power off" msgid "Power Off"
msgstr "Vypnout" msgstr "Vypnout"
#. Translators: A list of keywords that match the power-off action, separated by semicolons #. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102 #: js/misc/systemActions.js:102
msgid "power off;shutdown" msgid "power off;shutdown;reboot;restart"
msgstr "vypnout;vypnutí;" msgstr ""
"vypnout;vypnutí;restart;restartování;restartovat;reboot;znovu zavést systém;"
"zavedení systému;natažení systému;"
#. Translators: The name of the lock screen action in search #. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106 #: js/misc/systemActions.js:106
msgctxt "search-result" msgctxt "search-result"
msgid "Lock screen" msgid "Lock Screen"
msgstr "Zamknout obrazovku" msgstr "Zamknout obrazovku"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons #. Translators: A list of keywords that match the lock screen action, separated by semicolons
@@ -425,7 +427,7 @@ msgstr ""
#. Translators: The name of the logout action in search #. Translators: The name of the logout action in search
#: js/misc/systemActions.js:113 #: js/misc/systemActions.js:113
msgctxt "search-result" msgctxt "search-result"
msgid "Log out" msgid "Log Out"
msgstr "Odhlásit se" msgstr "Odhlásit se"
#. Translators: A list of keywords that match the logout action, separated by semicolons #. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -447,7 +449,7 @@ msgstr "uspat do paměti;režim spánku;"
#. Translators: The name of the switch user action in search #. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:127 #: js/misc/systemActions.js:127
msgctxt "search-result" msgctxt "search-result"
msgid "Switch user" msgid "Switch User"
msgstr "Přepnout uživatele" msgstr "Přepnout uživatele"
#. Translators: A list of keywords that match the switch user action, separated by semicolons #. Translators: A list of keywords that match the switch user action, separated by semicolons
@@ -458,12 +460,12 @@ msgstr "přepnout uživatele;přepnutí uživatele;"
#. Translators: The name of the lock orientation action in search #. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134 #: js/misc/systemActions.js:134
msgctxt "search-result" msgctxt "search-result"
msgid "Lock orientation" msgid "Lock Orientation"
msgstr "Zamknout otočení" msgstr "Zamknout otočení"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons #. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137 #: js/misc/systemActions.js:137
msgid "lock orientation" msgid "lock orientation;screen;rotation"
msgstr "" msgstr ""
"zamknout otočení;zamknout orientaci;uzamknout otočení;uzamknout orientaci;" "zamknout otočení;zamknout orientaci;uzamknout otočení;uzamknout orientaci;"
"zamčít otočení;zamčít orientaci;uzamčít otočení;uzamčít orientaci;zamknutí " "zamčít otočení;zamčít orientaci;uzamčít otočení;uzamčít orientaci;zamknutí "
@@ -666,12 +668,12 @@ msgstr "Přidat mezi oblíbené"
msgid "Show Details" msgid "Show Details"
msgstr "Zobrazit podrobnosti" msgstr "Zobrazit podrobnosti"
#: js/ui/appFavorites.js:140 #: js/ui/appFavorites.js:141
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s byl přidán mezi oblíbené." msgstr "%s byl přidán mezi oblíbené."
#: js/ui/appFavorites.js:174 #: js/ui/appFavorites.js:175
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených." msgstr "%s byl odstraněn z oblíbených."
@@ -760,51 +762,51 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "So" msgstr "So"
#: js/ui/calendar.js:442 #: js/ui/calendar.js:449
msgid "Previous month" msgid "Previous month"
msgstr "Předchozí měsíc" msgstr "Předchozí měsíc"
#: js/ui/calendar.js:452 #: js/ui/calendar.js:459
msgid "Next month" msgid "Next month"
msgstr "Následující měsíc" msgstr "Následující měsíc"
#: js/ui/calendar.js:605 #: js/ui/calendar.js:612
#, no-javascript-format #, no-javascript-format
msgctxt "date day number format" msgctxt "date day number format"
msgid "%d" msgid "%d"
msgstr "%e" msgstr "%e"
#: js/ui/calendar.js:660 #: js/ui/calendar.js:667
msgid "Week %V" msgid "Week %V"
msgstr "%V. týden" msgstr "%V. týden"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. #.
#: js/ui/calendar.js:729 #: js/ui/calendar.js:736
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Celý den" msgstr "Celý den"
#: js/ui/calendar.js:862 #: js/ui/calendar.js:869
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %e. %B" msgstr "%A, %e. %B"
#: js/ui/calendar.js:866 #: js/ui/calendar.js:873
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y" msgstr "%A, %e. %B %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1093
msgid "No Notifications" msgid "No Notifications"
msgstr "Nejsou žádná upozornění" msgstr "Nejsou žádná upozornění"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1096
msgid "No Events" msgid "No Events"
msgstr "Nejsou žádné události" msgstr "Nejsou žádné události"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1124
msgid "Clear All" msgid "Clear All"
msgstr "Vymazat vše" msgstr "Vymazat vše"
@@ -838,7 +840,7 @@ msgstr "Externí svazek připojen"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Externí svazek odpojen" msgstr "Externí svazek odpojen"
#: js/ui/components/autorunManager.js:354 #: js/ui/components/autorunManager.js:358
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Otevřít pomocí %s" msgstr "Otevřít pomocí %s"
@@ -976,7 +978,7 @@ msgstr "Oblíbené"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
#: js/ui/dateMenu.js:75 #: js/ui/dateMenu.js:76
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%e. %B %Y" msgstr "%e. %B %Y"
@@ -985,19 +987,19 @@ msgstr "%e. %B %Y"
#. * below the time in the shell; it should combine the weekday and the #. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
#. #.
#: js/ui/dateMenu.js:82 #: js/ui/dateMenu.js:83
msgid "%A %B %e %Y" msgid "%A %B %e %Y"
msgstr "%A, %e. %B %Y" msgstr "%A, %e. %B %Y"
#: js/ui/dateMenu.js:144 #: js/ui/dateMenu.js:145
msgid "Add world clocks…" msgid "Add world clocks…"
msgstr "Přidat světový čas…" msgstr "Přidat světový čas…"
#: js/ui/dateMenu.js:145 #: js/ui/dateMenu.js:146
msgid "World Clocks" msgid "World Clocks"
msgstr "Světové hodiny" msgstr "Světové hodiny"
#: js/ui/dateMenu.js:224 #: js/ui/dateMenu.js:225
msgid "Weather" msgid "Weather"
msgstr "Počasí" msgstr "Počasí"
@@ -1005,7 +1007,7 @@ msgstr "Počasí"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:286 #: js/ui/dateMenu.js:289
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s celý den." msgstr "%s celý den."
@@ -1014,7 +1016,7 @@ msgstr "%s celý den."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:292 #: js/ui/dateMenu.js:295
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, později %s." msgstr "%s, později %s."
@@ -1023,30 +1025,30 @@ msgstr "%s, později %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:298 #: js/ui/dateMenu.js:301
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, pak %s a později %s." msgstr "%s, pak %s a později %s."
#: js/ui/dateMenu.js:309 #: js/ui/dateMenu.js:312
msgid "Select a location…" msgid "Select a location…"
msgstr "Vybrat místo…" msgstr "Vybrat místo…"
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:315
msgid "Loading…" msgid "Loading…"
msgstr "Načítá se…" msgstr "Načítá se…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318 #: js/ui/dateMenu.js:321
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Pocitově jako %s." msgstr "Pocitově jako %s."
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:324
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Připojit se kvůli informacím o počasí" msgstr "Připojit se kvůli informacím o počasí"
#: js/ui/dateMenu.js:323 #: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Informace o počasí nejsou nyní dostupné" msgstr "Informace o počasí nejsou nyní dostupné"
@@ -1239,7 +1241,7 @@ msgstr "Zamítnout"
msgid "Allow" msgid "Allow"
msgstr "Umožnit" msgstr "Umožnit"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782 #: js/ui/keyboard.js:738 js/ui/status/keyboard.js:783
msgid "Keyboard" msgid "Keyboard"
msgstr "Klávesnice" msgstr "Klávesnice"
@@ -1291,7 +1293,7 @@ msgstr "Zobrazit zdroj"
msgid "Web Page" msgid "Web Page"
msgstr "Webová stránka" msgstr "Webová stránka"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1494
msgid "System Information" msgid "System Information"
msgstr "Informace o systému" msgstr "Informace o systému"
@@ -1319,7 +1321,7 @@ msgstr "Přehled"
#. characters. #. characters.
#: js/ui/overview.js:240 #: js/ui/overview.js:240
msgid "Type to search…" msgid "Type to search…"
msgstr "vyhledávejte psaním…" msgstr "Vyhledávejte psaním…"
#: js/ui/padOsd.js:103 #: js/ui/padOsd.js:103
msgid "New shortcut…" msgid "New shortcut…"
@@ -1538,16 +1540,16 @@ msgstr "Vysoký kontrast"
msgid "Large Text" msgid "Large Text"
msgstr "Styl velkého textu" msgstr "Styl velkého textu"
#: js/ui/status/bluetooth.js:47 #: js/ui/status/bluetooth.js:48
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627 #: js/ui/status/bluetooth.js:57 js/ui/status/network.js:627
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Nastavení Bluetooth" msgstr "Nastavení Bluetooth"
#. Translators: this is the number of connected bluetooth devices #. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:136 #: js/ui/status/bluetooth.js:137
#, javascript-format #, javascript-format
msgid "%d Connected" msgid "%d Connected"
msgid_plural "%d Connected" msgid_plural "%d Connected"
@@ -1555,19 +1557,19 @@ msgstr[0] "%d připojené"
msgstr[1] "%d připojená" msgstr[1] "%d připojená"
msgstr[2] "%d připojených" msgstr[2] "%d připojených"
#: js/ui/status/bluetooth.js:138 #: js/ui/status/bluetooth.js:139
msgid "Off" msgid "Off"
msgstr "Vypnuto" msgstr "Vypnuto"
#: js/ui/status/bluetooth.js:140 #: js/ui/status/bluetooth.js:141
msgid "On" msgid "On"
msgstr "Zapnuto" msgstr "Zapnuto"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:1299
msgid "Turn On" msgid "Turn On"
msgstr "Zapnout" msgstr "Zapnout"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299 #: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47 #: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
@@ -1578,7 +1580,7 @@ msgstr "Vypnout"
msgid "Brightness" msgid "Brightness"
msgstr "Jas" msgstr "Jas"
#: js/ui/status/keyboard.js:805 #: js/ui/status/keyboard.js:806
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Zobrazit rozložení klávesnice" msgstr "Zobrazit rozložení klávesnice"
@@ -2064,19 +2066,19 @@ msgstr "Kalendář Evolution"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:380 #: src/main.c:437
msgid "Print version" msgid "Print version"
msgstr "Vypsat verzi" msgstr "Vypsat verzi"
#: src/main.c:386 #: src/main.c:443
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Režim použitý GDM pro přihlašovací obrazovku" msgstr "Režim použitý GDM pro přihlašovací obrazovku"
#: src/main.c:392 #: src/main.c:449
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“." msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“."
#: src/main.c:398 #: src/main.c:455
msgid "List possible modes" msgid "List possible modes"
msgstr "Vypsat možné režimy" msgstr "Vypsat možné režimy"
@@ -2125,3 +2127,15 @@ msgstr[2] "%u vstupů"
#: subprojects/gvc/gvc-mixer-control.c:2738 #: subprojects/gvc/gvc-mixer-control.c:2738
msgid "System Sounds" msgid "System Sounds"
msgstr "Systémové zvuky" msgstr "Systémové zvuky"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Vypnout"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Odhlásit se"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Přepnout uživatele"

View File

@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: video-subtitles master\n" "Project-Id-Version: video-subtitles master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n" "POT-Creation-Date: 2017-10-04 18:03+0000\n"
"PO-Revision-Date: 2017-08-23 17:01+0200\n" "PO-Revision-Date: 2017-10-11 08:34+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n" "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n" "Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n" "Language: fur\n"
@@ -659,12 +659,12 @@ msgstr "Zonte tai preferîts"
msgid "Show Details" msgid "Show Details"
msgstr "Mostre Detais" msgstr "Mostre Detais"
#: js/ui/appFavorites.js:140 #: js/ui/appFavorites.js:141
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s al è stât zontât tai tiei preferîts." msgstr "%s al è stât zontât tai tiei preferîts."
#: js/ui/appFavorites.js:174 #: js/ui/appFavorites.js:175
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s al è stât gjavât dai tiei preferîts." msgstr "%s al è stât gjavât dai tiei preferîts."
@@ -753,51 +753,51 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "S"
#: js/ui/calendar.js:442 #: js/ui/calendar.js:449
msgid "Previous month" msgid "Previous month"
msgstr "Mês indaûr" msgstr "Mês indaûr"
#: js/ui/calendar.js:452 #: js/ui/calendar.js:459
msgid "Next month" msgid "Next month"
msgstr "Prossim mês" msgstr "Prossim mês"
#: js/ui/calendar.js:605 #: js/ui/calendar.js:612
#, no-javascript-format #, no-javascript-format
msgctxt "date day number format" msgctxt "date day number format"
msgid "%d" msgid "%d"
msgstr "%d" msgstr "%d"
#: js/ui/calendar.js:660 #: js/ui/calendar.js:667
msgid "Week %V" msgid "Week %V"
msgstr "Setemane %V" msgstr "Setemane %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. #.
#: js/ui/calendar.js:729 #: js/ui/calendar.js:736
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Dut il dì" msgstr "Dut il dì"
#: js/ui/calendar.js:862 #: js/ui/calendar.js:869
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %d di %B" msgstr "%A, %d di %B"
#: js/ui/calendar.js:866 #: js/ui/calendar.js:873
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %d di %B dal %Y" msgstr "%A, %d di %B dal %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1093
msgid "No Notifications" msgid "No Notifications"
msgstr "Nissune notifiche" msgstr "Nissune notifiche"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1096
msgid "No Events" msgid "No Events"
msgstr "Nissun event" msgstr "Nissun event"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1124
msgid "Clear All" msgid "Clear All"
msgstr "Nete dut" msgstr "Nete dut"
@@ -831,7 +831,7 @@ msgstr "Dispositîf esterni tacât"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Dispositîf esterni distacât" msgstr "Dispositîf esterni distacât"
#: js/ui/components/autorunManager.js:354 #: js/ui/components/autorunManager.js:358
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Vierç cun %s" msgstr "Vierç cun %s"
@@ -968,7 +968,7 @@ msgstr "Dash"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
#: js/ui/dateMenu.js:75 #: js/ui/dateMenu.js:76
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%e di %B dal %Y" msgstr "%e di %B dal %Y"
@@ -976,19 +976,19 @@ msgstr "%e di %B dal %Y"
#. * below the time in the shell; it should combine the weekday and the #. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
#. #.
#: js/ui/dateMenu.js:82 #: js/ui/dateMenu.js:83
msgid "%A %B %e %Y" msgid "%A %B %e %Y"
msgstr "%A %e di %B dal %Y" msgstr "%A %e di %B dal %Y"
#: js/ui/dateMenu.js:144 #: js/ui/dateMenu.js:145
msgid "Add world clocks…" msgid "Add world clocks…"
msgstr "Zonte orlois mondiâi..." msgstr "Zonte orlois mondiâi..."
#: js/ui/dateMenu.js:145 #: js/ui/dateMenu.js:146
msgid "World Clocks" msgid "World Clocks"
msgstr "Orlois mondiâi" msgstr "Orlois mondiâi"
#: js/ui/dateMenu.js:224 #: js/ui/dateMenu.js:225
msgid "Weather" msgid "Weather"
msgstr "Timp" msgstr "Timp"
@@ -996,7 +996,7 @@ msgstr "Timp"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:286 #: js/ui/dateMenu.js:289
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s dut il dì." msgstr "%s dut il dì."
@@ -1005,7 +1005,7 @@ msgstr "%s dut il dì."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:292 #: js/ui/dateMenu.js:295
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, plui tart %s." msgstr "%s, plui tart %s."
@@ -1014,30 +1014,30 @@ msgstr "%s, plui tart %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:298 #: js/ui/dateMenu.js:301
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, chi di un pôc %s, e plui tart %s." msgstr "%s, chi di un pôc %s, e plui tart %s."
#: js/ui/dateMenu.js:309 #: js/ui/dateMenu.js:312
msgid "Select a location…" msgid "Select a location…"
msgstr "Selezione une posizion..." msgstr "Selezione une posizion..."
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:315
msgid "Loading…" msgid "Loading…"
msgstr "Daûr a cjariâ..." msgstr "Daûr a cjariâ..."
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318 #: js/ui/dateMenu.js:321
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Si sint %s." msgstr "Si sint %s."
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:324
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Va in rêt pes informazions sul timp" msgstr "Va in rêt pes informazions sul timp"
#: js/ui/dateMenu.js:323 #: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Lis informazions sul timp al moment no son disponibilis" msgstr "Lis informazions sul timp al moment no son disponibilis"
@@ -1276,7 +1276,7 @@ msgstr "Viôt sorzint"
msgid "Web Page" msgid "Web Page"
msgstr "Pagjine Web" msgstr "Pagjine Web"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1494
msgid "System Information" msgid "System Information"
msgstr "Informazion di sisteme" msgstr "Informazion di sisteme"
@@ -1449,12 +1449,11 @@ msgstr "Nissun risultât."
# o ancjemò %d # o ancjemò %d
#: js/ui/search.js:777 #: js/ui/search.js:777
#, fuzzy, javascript-format #, javascript-format
#| msgid "%d more"
msgid "%d more" msgid "%d more"
msgid_plural "%d more" msgid_plural "%d more"
msgstr[0] "Ancjemò %d" msgstr[0] "%d altri"
msgstr[1] "Ancjemò %d" msgstr[1] "%d altris"
#: js/ui/shellEntry.js:25 #: js/ui/shellEntry.js:25
msgid "Copy" msgid "Copy"

1618
po/he.po

File diff suppressed because it is too large Load Diff

131
po/lt.po
View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-22 11:17+0000\n" "POT-Creation-Date: 2017-11-21 18:32+0000\n"
"PO-Revision-Date: 2017-08-22 23:13+0300\n" "PO-Revision-Date: 2017-11-25 21:52+0200\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@@ -402,18 +402,21 @@ msgstr "(arba perbraukite pirštu)"
#: js/misc/systemActions.js:99 #: js/misc/systemActions.js:99
#| msgid "Power Off" #| msgid "Power Off"
msgctxt "search-result" msgctxt "search-result"
msgid "Power off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#. Translators: A list of keywords that match the power-off action, separated by semicolons #. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:102 #: js/misc/systemActions.js:102
msgid "power off;shutdown" #| msgid "power off;shutdown"
msgstr "išjungti" msgid "power off;shutdown;reboot;restart"
msgstr "išjungti;perleisti;perkrauti;"
#. Translators: The name of the lock screen action in search #. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:106 #: js/misc/systemActions.js:106
#| msgctxt "search-result"
#| msgid "Lock screen"
msgctxt "search-result" msgctxt "search-result"
msgid "Lock screen" msgid "Lock Screen"
msgstr "Užrakinti ekraną" msgstr "Užrakinti ekraną"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons #. Translators: A list of keywords that match the lock screen action, separated by semicolons
@@ -425,7 +428,7 @@ msgstr "užrakinti ekraną"
#: js/misc/systemActions.js:113 #: js/misc/systemActions.js:113
#| msgid "Log Out" #| msgid "Log Out"
msgctxt "search-result" msgctxt "search-result"
msgid "Log out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#. Translators: A list of keywords that match the logout action, separated by semicolons #. Translators: A list of keywords that match the logout action, separated by semicolons
@@ -435,14 +438,12 @@ msgstr "atsijungti"
#. Translators: The name of the suspend action in search #. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:120 #: js/misc/systemActions.js:120
#| msgid "Suspend"
msgctxt "search-result" msgctxt "search-result"
msgid "Suspend" msgid "Suspend"
msgstr "Pristabdyti" msgstr "Pristabdyti"
#. Translators: A list of keywords that match the suspend action, separated by semicolons #. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:123 #: js/misc/systemActions.js:123
#| msgid "Suspend"
msgid "suspend;sleep" msgid "suspend;sleep"
msgstr "pristabdyti;užmigdyti" msgstr "pristabdyti;užmigdyti"
@@ -450,27 +451,27 @@ msgstr "pristabdyti;užmigdyti"
#: js/misc/systemActions.js:127 #: js/misc/systemActions.js:127
#| msgid "Switch User" #| msgid "Switch User"
msgctxt "search-result" msgctxt "search-result"
msgid "Switch user" msgid "Switch User"
msgstr "Keisti naudotoją" msgstr "Keisti naudotoją"
#. Translators: A list of keywords that match the switch user action, separated by semicolons #. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:130 #: js/misc/systemActions.js:130
#| msgid "Switch User"
msgid "switch user" msgid "switch user"
msgstr "keisti naudotoją" msgstr "keisti naudotoją"
#. Translators: The name of the lock orientation action in search #. Translators: The name of the lock orientation action in search
#: js/misc/systemActions.js:134 #: js/misc/systemActions.js:134
#| msgid "Orientation Lock" #| msgctxt "search-result"
#| msgid "Lock orientation"
msgctxt "search-result" msgctxt "search-result"
msgid "Lock orientation" msgid "Lock Orientation"
msgstr "Orientacijos užrakinimas" msgstr "Užrakinti orientaciją"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons #. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:137 #: js/misc/systemActions.js:137
#| msgid "Orientation Lock" #| msgid "lock orientation"
msgid "lock orientation" msgid "lock orientation;screen;rotation"
msgstr "orientacijos užrakinimas" msgstr "orientacijos užrakinimas;ekranas;pasukimas"
#: js/misc/util.js:122 #: js/misc/util.js:122
msgid "Command not found" msgid "Command not found"
@@ -668,12 +669,12 @@ msgstr "Pridėti prie mėgstamų"
msgid "Show Details" msgid "Show Details"
msgstr "Rodyti detalią informaciją" msgstr "Rodyti detalią informaciją"
#: js/ui/appFavorites.js:140 #: js/ui/appFavorites.js:141
#, javascript-format #, javascript-format
msgid "%s has been added to your favorites." msgid "%s has been added to your favorites."
msgstr "%s pridėta prie jūsų mėgstamų." msgstr "%s pridėta prie jūsų mėgstamų."
#: js/ui/appFavorites.js:174 #: js/ui/appFavorites.js:175
#, javascript-format #, javascript-format
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s pašalinta iš jūsų mėgstamų." msgstr "%s pašalinta iš jūsų mėgstamų."
@@ -762,51 +763,51 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "Š" msgstr "Š"
#: js/ui/calendar.js:442 #: js/ui/calendar.js:449
msgid "Previous month" msgid "Previous month"
msgstr "Ankstesnis mėnuo" msgstr "Ankstesnis mėnuo"
#: js/ui/calendar.js:452 #: js/ui/calendar.js:459
msgid "Next month" msgid "Next month"
msgstr "Kitas mėnuo" msgstr "Kitas mėnuo"
#: js/ui/calendar.js:605 #: js/ui/calendar.js:612
#, no-javascript-format #, no-javascript-format
msgctxt "date day number format" msgctxt "date day number format"
msgid "%d" msgid "%d"
msgstr "%d" msgstr "%d"
#: js/ui/calendar.js:660 #: js/ui/calendar.js:667
msgid "Week %V" msgid "Week %V"
msgstr "Savaitė %V" msgstr "Savaitė %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. #.
#: js/ui/calendar.js:729 #: js/ui/calendar.js:736
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Visa diena" msgstr "Visa diena"
#: js/ui/calendar.js:862 #: js/ui/calendar.js:869
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%A, %B %d d." msgstr "%A, %B %d d."
#: js/ui/calendar.js:866 #: js/ui/calendar.js:873
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%A, %Y m. %B %d d." msgstr "%A, %Y m. %B %d d."
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1093
msgid "No Notifications" msgid "No Notifications"
msgstr "Nėra pranešimų" msgstr "Nėra pranešimų"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1096
msgid "No Events" msgid "No Events"
msgstr "Nėra įvykių" msgstr "Nėra įvykių"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1124
msgid "Clear All" msgid "Clear All"
msgstr "Viską išvalyti" msgstr "Viską išvalyti"
@@ -840,7 +841,7 @@ msgstr "Prijungta išorinė laikmena"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Atjungta išorinė laikmena" msgstr "Atjungta išorinė laikmena"
#: js/ui/components/autorunManager.js:354 #: js/ui/components/autorunManager.js:358
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Atverti su %s" msgstr "Atverti su %s"
@@ -977,7 +978,7 @@ msgstr "Paleidimo sritis"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
#: js/ui/dateMenu.js:75 #: js/ui/dateMenu.js:76
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%Y m. %B %d d." msgstr "%Y m. %B %d d."
@@ -985,19 +986,19 @@ msgstr "%Y m. %B %d d."
#. * below the time in the shell; it should combine the weekday and the #. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
#. #.
#: js/ui/dateMenu.js:82 #: js/ui/dateMenu.js:83
msgid "%A %B %e %Y" msgid "%A %B %e %Y"
msgstr "%A, %Y m. %B %d d." msgstr "%A, %Y m. %B %d d."
#: js/ui/dateMenu.js:144 #: js/ui/dateMenu.js:145
msgid "Add world clocks…" msgid "Add world clocks…"
msgstr "Pridėti pasaulio laikrodžius…" msgstr "Pridėti pasaulio laikrodžius…"
#: js/ui/dateMenu.js:145 #: js/ui/dateMenu.js:146
msgid "World Clocks" msgid "World Clocks"
msgstr "Pasaulio laikrodžiai" msgstr "Pasaulio laikrodžiai"
#: js/ui/dateMenu.js:224 #: js/ui/dateMenu.js:225
msgid "Weather" msgid "Weather"
msgstr "Orai" msgstr "Orai"
@@ -1005,7 +1006,7 @@ msgstr "Orai"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:286 #: js/ui/dateMenu.js:289
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "%s visą dieną." msgstr "%s visą dieną."
@@ -1014,7 +1015,7 @@ msgstr "%s visą dieną."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:292 #: js/ui/dateMenu.js:295
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, o vėliau %s." msgstr "%s, o vėliau %s."
@@ -1023,30 +1024,30 @@ msgstr "%s, o vėliau %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:298 #: js/ui/dateMenu.js:301
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, tuomet %s, o po to vėliau %s." msgstr "%s, tuomet %s, o po to vėliau %s."
#: js/ui/dateMenu.js:309 #: js/ui/dateMenu.js:312
msgid "Select a location…" msgid "Select a location…"
msgstr "Pasirinkite vietą…" msgstr "Pasirinkite vietą…"
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:315
msgid "Loading…" msgid "Loading…"
msgstr "Įkeliama…" msgstr "Įkeliama…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318 #: js/ui/dateMenu.js:321
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Jaučiama kaip %s." msgstr "Jaučiama kaip %s."
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:324
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Prisijunkite prie tinklo orų informacijai gauti" msgstr "Prisijunkite prie tinklo orų informacijai gauti"
#: js/ui/dateMenu.js:323 #: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Orų informacija šiuo metu yra neprieinama" msgstr "Orų informacija šiuo metu yra neprieinama"
@@ -1237,7 +1238,7 @@ msgstr "Neleisti"
msgid "Allow" msgid "Allow"
msgstr "Leisti" msgstr "Leisti"
#: js/ui/keyboard.js:738 js/ui/status/keyboard.js:782 #: js/ui/keyboard.js:738 js/ui/status/keyboard.js:783
msgid "Keyboard" msgid "Keyboard"
msgstr "Klaviatūra" msgstr "Klaviatūra"
@@ -1289,7 +1290,7 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1494
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
@@ -1536,16 +1537,16 @@ msgstr "Didelis kontrastas"
msgid "Large Text" msgid "Large Text"
msgstr "Didelis tekstas" msgstr "Didelis tekstas"
#: js/ui/status/bluetooth.js:47 #: js/ui/status/bluetooth.js:48
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627 #: js/ui/status/bluetooth.js:57 js/ui/status/network.js:627
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Bluetooth nustatymai" msgstr "Bluetooth nustatymai"
#. Translators: this is the number of connected bluetooth devices #. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:136 #: js/ui/status/bluetooth.js:137
#, javascript-format #, javascript-format
msgid "%d Connected" msgid "%d Connected"
msgid_plural "%d Connected" msgid_plural "%d Connected"
@@ -1553,19 +1554,19 @@ msgstr[0] "%d prijungtas"
msgstr[1] "%d prijungti" msgstr[1] "%d prijungti"
msgstr[2] "%d prijungta" msgstr[2] "%d prijungta"
#: js/ui/status/bluetooth.js:138 #: js/ui/status/bluetooth.js:139
msgid "Off" msgid "Off"
msgstr "Išjungta" msgstr "Išjungta"
#: js/ui/status/bluetooth.js:140 #: js/ui/status/bluetooth.js:141
msgid "On" msgid "On"
msgstr "Įjungta" msgstr "Įjungta"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:1299
msgid "Turn On" msgid "Turn On"
msgstr "Įjungti" msgstr "Įjungti"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299 #: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47 #: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117
@@ -1576,7 +1577,7 @@ msgstr "Išjungti"
msgid "Brightness" msgid "Brightness"
msgstr "Ryškumas" msgstr "Ryškumas"
#: js/ui/status/keyboard.js:805 #: js/ui/status/keyboard.js:806
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Rodyti klaviatūros išdėstymą" msgstr "Rodyti klaviatūros išdėstymą"
@@ -1912,7 +1913,6 @@ msgstr "Garsumas"
#. * Try to keep it under around 15 characters. #. * Try to keep it under around 15 characters.
#. #.
#: js/ui/switchMonitor.js:21 #: js/ui/switchMonitor.js:21
#| msgid "Error"
msgid "Mirror" msgid "Mirror"
msgstr "Veidrodis" msgstr "Veidrodis"
@@ -2061,19 +2061,19 @@ msgstr "Evolution kalendorius"
msgid "evolution" msgid "evolution"
msgstr "evolution" msgstr "evolution"
#: src/main.c:380 #: src/main.c:437
msgid "Print version" msgid "Print version"
msgstr "Išvesti versijos numerį" msgstr "Išvesti versijos numerį"
#: src/main.c:386 #: src/main.c:443
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Veiksena, naudojama GDM prisijungimo ekrane" msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
#: src/main.c:392 #: src/main.c:449
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui" msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
#: src/main.c:398 #: src/main.c:455
msgid "List possible modes" msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas" msgstr "Išvardinti galimas veiksenas"
@@ -2123,6 +2123,21 @@ msgstr[2] "%u įvesčių"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sistemos garsai" msgstr "Sistemos garsai"
#~| msgid "Power Off"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "Išjungti"
#~| msgid "Log Out"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "Atsijungti"
#~| msgid "Switch User"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "Keisti naudotoją"
#~ msgid "Hide tray" #~ msgid "Hide tray"
#~ msgstr "Slėpti dėklą" #~ msgstr "Slėpti dėklą"

583
po/nb.po

File diff suppressed because it is too large Load Diff

104
po/nl.po
View File

@@ -15,8 +15,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-s" "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-s"
"hell&keywords=I18N+L10N&component=general\n" "hell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2017-08-31 02:16+0000\n" "POT-Creation-Date: 2017-10-21 11:40+0000\n"
"PO-Revision-Date: 2017-09-01 10:25+0100\n" "PO-Revision-Date: 2017-10-25 11:05+0100\n"
"Last-Translator: Hannie Dumoleyn <hannie@ubuntu-nl.org>\n" "Last-Translator: Hannie Dumoleyn <hannie@ubuntu-nl.org>\n"
"Language-Team: Dutch <gnome-nl-list@gnome.org>\n" "Language-Team: Dutch <gnome-nl-list@gnome.org>\n"
"Language: nl\n" "Language: nl\n"
@@ -71,16 +71,16 @@ msgstr "Vensterbeheer en toepassingen starten"
#: data/org.gnome.shell.gschema.xml.in:6 #: data/org.gnome.shell.gschema.xml.in:6
msgid "Enable internal tools useful for developers and testers from Alt-F2" msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "" msgstr ""
"Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en" "Interne hulpprogramma's inschakelen die nuttig zijn voor ontwikkwlaars en "
" testers via Alt-F2" "testers via Alt-F2"
#: data/org.gnome.shell.gschema.xml.in:9 #: data/org.gnome.shell.gschema.xml.in:9
msgid "" msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 " "Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog." "dialog."
msgstr "" msgstr ""
"Geeft toegang tot interne debugging- en observatieprogramma's met behulp van" "Geeft toegang tot interne debugging- en observatieprogramma's met behulp van "
" het Alt-F2-dialoogvenster." "het Alt-F2-dialoogvenster."
#: data/org.gnome.shell.gschema.xml.in:16 #: data/org.gnome.shell.gschema.xml.in:16
msgid "UUIDs of extensions to enable" msgid "UUIDs of extensions to enable"
@@ -107,8 +107,8 @@ msgid ""
"Disable all extensions the user has enabled without affecting the “enabled-" "Disable all extensions the user has enabled without affecting the “enabled-"
"extension” setting." "extension” setting."
msgstr "" msgstr ""
"Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de" "Schakel alle door de gebruiker ingeschakelde uitbreidingen uit, zonder de "
" instelling enabled-extension te wijzigen." "instelling enabled-extension te wijzigen."
#: data/org.gnome.shell.gschema.xml.in:34 #: data/org.gnome.shell.gschema.xml.in:34
msgid "Disables the validation of extension version compatibility" msgid "Disables the validation of extension version compatibility"
@@ -122,8 +122,8 @@ msgid ""
msgstr "" msgstr ""
"Gnome Shell zal alleen uitbreidingen laden die aangeven de huidige versie te " "Gnome Shell zal alleen uitbreidingen laden die aangeven de huidige versie te "
"ondersteunen. Door deze optie in te schakelen wordt deze controle " "ondersteunen. Door deze optie in te schakelen wordt deze controle "
"overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die ze" "overgeslagen en worden alle uitbreidingen geladen, ongeacht de versies die "
" zouden moeten ondersteunen." "ze zouden moeten ondersteunen."
#: data/org.gnome.shell.gschema.xml.in:43 #: data/org.gnome.shell.gschema.xml.in:43
msgid "List of desktop file IDs for favorite applications" msgid "List of desktop file IDs for favorite applications"
@@ -134,8 +134,8 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the " "The applications corresponding to these identifiers will be displayed in the "
"favorites area." "favorites area."
msgstr "" msgstr ""
"De toepassingen die aan deze identifiers voldoen worden in het" "De toepassingen die aan deze identifiers voldoen worden in het "
" favorietengebied weergegeven." "favorietengebied weergegeven."
#: data/org.gnome.shell.gschema.xml.in:51 #: data/org.gnome.shell.gschema.xml.in:51
msgid "App Picker View" msgid "App Picker View"
@@ -171,8 +171,8 @@ msgstr ""
msgid "" msgid ""
"Whether to remember password for mounting encrypted or remote filesystems" "Whether to remember password for mounting encrypted or remote filesystems"
msgstr "" msgstr ""
"Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op" "Of wachtwoorden voor versleutelde bestandssystemen of bestandssystemen op "
" afstand onthouden moeten worden" "afstand onthouden moeten worden"
#: data/org.gnome.shell.gschema.xml.in:76 #: data/org.gnome.shell.gschema.xml.in:76
msgid "" msgid ""
@@ -310,8 +310,8 @@ msgstr "Deze waarde overschrijft de waarde in org.gnome.mutter in Gnome Shell."
#: data/org.gnome.shell.gschema.xml.in:206 #: data/org.gnome.shell.gschema.xml.in:206
msgid "Enable edge tiling when dropping windows on screen edges" msgid "Enable edge tiling when dropping windows on screen edges"
msgstr "" msgstr ""
"Vensters langs de randen positioneren bij verslepen naar de rand van het" "Vensters langs de randen positioneren bij verslepen naar de rand van het "
" scherm" "scherm"
#: data/org.gnome.shell.gschema.xml.in:214 #: data/org.gnome.shell.gschema.xml.in:214
msgid "Workspaces are managed dynamically" msgid "Workspaces are managed dynamically"
@@ -755,51 +755,51 @@ msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "Z" msgstr "Z"
#: js/ui/calendar.js:442 #: js/ui/calendar.js:449
msgid "Previous month" msgid "Previous month"
msgstr "Vorige maand" msgstr "Vorige maand"
#: js/ui/calendar.js:452 #: js/ui/calendar.js:459
msgid "Next month" msgid "Next month"
msgstr "Volgende maand" msgstr "Volgende maand"
#: js/ui/calendar.js:605 #: js/ui/calendar.js:612
#, no-javascript-format #, no-javascript-format
msgctxt "date day number format" msgctxt "date day number format"
msgid "%d" msgid "%d"
msgstr "%d" msgstr "%d"
#: js/ui/calendar.js:660 #: js/ui/calendar.js:667
msgid "Week %V" msgid "Week %V"
msgstr "Week %V" msgstr "Week %V"
#. Translators: Shown in calendar event list for all day events #. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters #. * Keep it short, best if you can use less then 10 characters
#. #.
#: js/ui/calendar.js:729 #: js/ui/calendar.js:736
msgctxt "event list time" msgctxt "event list time"
msgid "All Day" msgid "All Day"
msgstr "Gehele dag" msgstr "Gehele dag"
#: js/ui/calendar.js:862 #: js/ui/calendar.js:869
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d" msgid "%A, %B %d"
msgstr "%a %d %B" msgstr "%a %d %B"
#: js/ui/calendar.js:866 #: js/ui/calendar.js:873
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %d, %Y" msgid "%A, %B %d, %Y"
msgstr "%a %d %B %Y" msgstr "%a %d %B %Y"
#: js/ui/calendar.js:1086 #: js/ui/calendar.js:1093
msgid "No Notifications" msgid "No Notifications"
msgstr "Geen notificaties" msgstr "Geen notificaties"
#: js/ui/calendar.js:1089 #: js/ui/calendar.js:1096
msgid "No Events" msgid "No Events"
msgstr "Geen gebeurtenissen" msgstr "Geen gebeurtenissen"
#: js/ui/calendar.js:1117 #: js/ui/calendar.js:1124
msgid "Clear All" msgid "Clear All"
msgstr "Alles wissen" msgstr "Alles wissen"
@@ -814,8 +814,8 @@ msgid ""
"You may choose to wait a short while for it to continue or force the " "You may choose to wait a short while for it to continue or force the "
"application to quit entirely." "application to quit entirely."
msgstr "" msgstr ""
"U kan even wachten tot de toepassing weer reageert, of ze dwingen" "U kan even wachten tot de toepassing weer reageert, of ze dwingen "
" onmiddellijk af te sluiten." "onmiddellijk af te sluiten."
#: js/ui/closeDialog.js:61 #: js/ui/closeDialog.js:61
msgid "Force Quit" msgid "Force Quit"
@@ -833,7 +833,7 @@ msgstr "Verbinding met externe schijf gemaakt"
msgid "External drive disconnected" msgid "External drive disconnected"
msgstr "Verbinding met externe schijf verbroken" msgstr "Verbinding met externe schijf verbroken"
#: js/ui/components/autorunManager.js:354 #: js/ui/components/autorunManager.js:358
#, javascript-format #, javascript-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Openen met %s" msgstr "Openen met %s"
@@ -972,7 +972,7 @@ msgstr "Zijbalk"
#. Translators: This is the date format to use when the calendar popup is #. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. #.
#: js/ui/dateMenu.js:75 #: js/ui/dateMenu.js:76
msgid "%B %e %Y" msgid "%B %e %Y"
msgstr "%e %B %Y" msgstr "%e %B %Y"
@@ -980,19 +980,19 @@ msgstr "%e %B %Y"
#. * below the time in the shell; it should combine the weekday and the #. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015". #. * date, e.g. "Tuesday February 17 2015".
#. #.
#: js/ui/dateMenu.js:82 #: js/ui/dateMenu.js:83
msgid "%A %B %e %Y" msgid "%A %B %e %Y"
msgstr "%A %e %B %Y" msgstr "%A %e %B %Y"
#: js/ui/dateMenu.js:144 #: js/ui/dateMenu.js:145
msgid "Add world clocks…" msgid "Add world clocks…"
msgstr "Wereldklokken toevoegen…" msgstr "Wereldklokken toevoegen…"
#: js/ui/dateMenu.js:145 #: js/ui/dateMenu.js:146
msgid "World Clocks" msgid "World Clocks"
msgstr "Wereldklokken" msgstr "Wereldklokken"
#: js/ui/dateMenu.js:224 #: js/ui/dateMenu.js:225
msgid "Weather" msgid "Weather"
msgstr "Weer" msgstr "Weer"
@@ -1000,7 +1000,7 @@ msgstr "Weer"
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:286 #: js/ui/dateMenu.js:289
#, javascript-format #, javascript-format
msgid "%s all day." msgid "%s all day."
msgstr "De hele dag %s." msgstr "De hele dag %s."
@@ -1009,7 +1009,7 @@ msgstr "De hele dag %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:292 #: js/ui/dateMenu.js:295
#, javascript-format #, javascript-format
msgid "%s, then %s later." msgid "%s, then %s later."
msgstr "%s, daarna %s." msgstr "%s, daarna %s."
@@ -1018,30 +1018,30 @@ msgstr "%s, daarna %s."
#. libgweather for the possible condition strings. If at all #. libgweather for the possible condition strings. If at all
#. possible, the sentence should match the grammatical case etc. of #. possible, the sentence should match the grammatical case etc. of
#. the inserted conditions. #. the inserted conditions.
#: js/ui/dateMenu.js:298 #: js/ui/dateMenu.js:301
#, javascript-format #, javascript-format
msgid "%s, then %s, followed by %s later." msgid "%s, then %s, followed by %s later."
msgstr "%s, daarna %s, gevolgd door %s." msgstr "%s, daarna %s, gevolgd door %s."
#: js/ui/dateMenu.js:309 #: js/ui/dateMenu.js:312
msgid "Select a location…" msgid "Select a location…"
msgstr "Selecteer een locatie…" msgstr "Selecteer een locatie…"
#: js/ui/dateMenu.js:312 #: js/ui/dateMenu.js:315
msgid "Loading…" msgid "Loading…"
msgstr "Laden…" msgstr "Laden…"
#. Translators: %s is a temperature with unit, e.g. "23℃" #. Translators: %s is a temperature with unit, e.g. "23℃"
#: js/ui/dateMenu.js:318 #: js/ui/dateMenu.js:321
#, javascript-format #, javascript-format
msgid "Feels like %s." msgid "Feels like %s."
msgstr "Voelt aan als %s." msgstr "Voelt aan als %s."
#: js/ui/dateMenu.js:321 #: js/ui/dateMenu.js:324
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Ga online voor informatie over het weer" msgstr "Ga online voor informatie over het weer"
#: js/ui/dateMenu.js:323 #: js/ui/dateMenu.js:326
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Informatie over het weer is momenteel niet beschikbaar" msgstr "Informatie over het weer is momenteel niet beschikbaar"
@@ -1278,7 +1278,7 @@ msgstr "Broncode weergeven"
msgid "Web Page" msgid "Web Page"
msgstr "Webpagina" msgstr "Webpagina"
#: js/ui/messageTray.js:1493 #: js/ui/messageTray.js:1494
msgid "System Information" msgid "System Information"
msgstr "Systeeminformatie" msgstr "Systeeminformatie"
@@ -1367,9 +1367,9 @@ msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Systeem" msgstr "Systeem"
#: js/ui/panel.js:812 #: js/ui/panel.js:811
msgid "Top Bar" msgid "Top Bar"
msgstr "Bovenbalk" msgstr "Menubalk"
#. Translators: this MUST be either "toggle-switch-us" #. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words #. (for toggle switches containing the English words
@@ -1522,35 +1522,35 @@ msgstr "Hoog contrast"
msgid "Large Text" msgid "Large Text"
msgstr "Grote tekst" msgstr "Grote tekst"
#: js/ui/status/bluetooth.js:47 #: js/ui/status/bluetooth.js:48
msgid "Bluetooth" msgid "Bluetooth"
msgstr "Bluetooth" msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:56 js/ui/status/network.js:627 #: js/ui/status/bluetooth.js:57 js/ui/status/network.js:627
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
msgstr "Bluetooth-instellingen" msgstr "Bluetooth-instellingen"
#. Translators: this is the number of connected bluetooth devices #. Translators: this is the number of connected bluetooth devices
#: js/ui/status/bluetooth.js:136 #: js/ui/status/bluetooth.js:137
#, javascript-format #, javascript-format
msgid "%d Connected" msgid "%d Connected"
msgid_plural "%d Connected" msgid_plural "%d Connected"
msgstr[0] "%d verbonden apparaat" msgstr[0] "%d verbonden apparaat"
msgstr[1] "%d verbonden apparaten" msgstr[1] "%d verbonden apparaten"
#: js/ui/status/bluetooth.js:138 #: js/ui/status/bluetooth.js:139
msgid "Off" msgid "Off"
msgstr "Uit" msgstr "Uit"
#: js/ui/status/bluetooth.js:140 #: js/ui/status/bluetooth.js:141
msgid "On" msgid "On"
msgstr "Aan" msgstr "Aan"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:1299 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:1299
msgid "Turn On" msgid "Turn On"
msgstr "Inschakelen" msgstr "Inschakelen"
#: js/ui/status/bluetooth.js:142 js/ui/status/network.js:170 #: js/ui/status/bluetooth.js:143 js/ui/status/network.js:170
#: js/ui/status/network.js:356 js/ui/status/network.js:1299 #: js/ui/status/network.js:356 js/ui/status/network.js:1299
#: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47 #: js/ui/status/network.js:1418 js/ui/status/nightLight.js:47
#: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117 #: js/ui/status/rfkill.js:90 js/ui/status/rfkill.js:117

View File

@@ -363,7 +363,7 @@ msgstr "Izbor seje"
#. manually entering the username. #. manually entering the username.
#: js/gdm/loginDialog.js:458 #: js/gdm/loginDialog.js:458
msgid "Not listed?" msgid "Not listed?"
msgstr "Ali je ni na seznamu?" msgstr "Ali uporabniškeg imena ni na seznamu?"
#. Translators: this message is shown below the username entry field #. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm #. to clue the user in on how to login to the local network realm

File diff suppressed because it is too large Load Diff

View File

@@ -38,14 +38,17 @@ extern GType gnome_shell_plugin_get_type (void);
static gboolean is_gdm_mode = FALSE; static gboolean is_gdm_mode = FALSE;
static char *session_mode = NULL; static char *session_mode = NULL;
static int caught_signal = 0;
#define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
#define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
enum { enum {
SHELL_DEBUG_BACKTRACE_WARNINGS = 1, SHELL_DEBUG_BACKTRACE_WARNINGS = 1,
SHELL_DEBUG_BACKTRACE_SEGFAULTS = 2,
}; };
static int _shell_debug; static int _shell_debug;
static gboolean _tracked_signals[NSIG] = { 0 };
static void static void
shell_dbus_acquire_name (GDBusProxy *bus, shell_dbus_acquire_name (GDBusProxy *bus,
@@ -290,7 +293,8 @@ static void
shell_init_debug (const char *debug_env) shell_init_debug (const char *debug_env)
{ {
static const GDebugKey keys[] = { static const GDebugKey keys[] = {
{ "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS } { "backtrace-warnings", SHELL_DEBUG_BACKTRACE_WARNINGS },
{ "backtrace-segfaults", SHELL_DEBUG_BACKTRACE_SEGFAULTS },
}; };
_shell_debug = g_parse_debug_string (debug_env, keys, _shell_debug = g_parse_debug_string (debug_env, keys,
@@ -328,6 +332,59 @@ shut_up (const char *domain,
{ {
} }
static void
dump_gjs_stack_alarm_sigaction (int signo)
{
g_log_set_default_handler (g_log_default_handler, NULL);
g_warning ("Failed to dump Javascript stack, got stuck");
g_log_set_default_handler (default_log_handler, NULL);
raise (caught_signal);
}
static void
dump_gjs_stack_on_signal_handler (int signo)
{
struct sigaction sa = { 0 };
gsize i;
/* Ignore all the signals starting this point, a part the one we'll raise
* (which is implicitly ignored here through SA_RESETHAND), this is needed
* not to get this handler being called by other signals that we were
* tracking and that might be emitted by code called starting from now.
*/
for (i = 0; i < G_N_ELEMENTS (_tracked_signals); ++i)
{
if (_tracked_signals[i] && i != signo)
signal (i, SIG_IGN);
}
/* Waiting at least 5 seconds for the dumpstack, if it fails, we raise the error */
caught_signal = signo;
sa.sa_handler = dump_gjs_stack_alarm_sigaction;
sigemptyset (&sa.sa_mask);
sigaction (SIGALRM, &sa, NULL);
alarm (5);
gjs_dumpstack ();
alarm (0);
raise (signo);
}
static void
dump_gjs_stack_on_signal (int signo)
{
struct sigaction sa = { 0 };
sa.sa_flags = SA_RESETHAND | SA_NODEFER;
sa.sa_handler = dump_gjs_stack_on_signal_handler;
sigemptyset (&sa.sa_mask);
sigaction (signo, &sa, NULL);
_tracked_signals[signo] = TRUE;
}
static gboolean static gboolean
list_modes (const char *option_name, list_modes (const char *option_name,
const char *value, const char *value,
@@ -459,6 +516,17 @@ main (int argc, char **argv)
shell_prefs_init (); shell_prefs_init ();
dump_gjs_stack_on_signal (SIGABRT);
dump_gjs_stack_on_signal (SIGFPE);
dump_gjs_stack_on_signal (SIGIOT);
dump_gjs_stack_on_signal (SIGTRAP);
if ((_shell_debug & SHELL_DEBUG_BACKTRACE_SEGFAULTS))
{
dump_gjs_stack_on_signal (SIGBUS);
dump_gjs_stack_on_signal (SIGSEGV);
}
ecode = meta_run (); ecode = meta_run ();
g_debug ("Doing final cleanup"); g_debug ("Doing final cleanup");

View File

@@ -256,21 +256,21 @@ get_app_from_gapplication_id (MetaWindow *window)
} }
/* /*
* get_app_from_flatpak_id: * get_app_from_sandboxed_app_id:
* @window: a #MetaWindow * @window: a #MetaWindow
* *
* Looks only at the given window, and attempts to determine * Looks only at the given window, and attempts to determine
* an application based on its Flatpak ID. If one can't be determined, * an application based on its Flatpak or Snap ID. If one can't be determined,
* return %NULL. * return %NULL.
* *
* Return value: (transfer full): A newly-referenced #ShellApp, or %NULL * Return value: (transfer full): A newly-referenced #ShellApp, or %NULL
*/ */
static ShellApp * static ShellApp *
get_app_from_flatpak_id (MetaWindow *window) get_app_from_sandboxed_app_id (MetaWindow *window)
{ {
const char *id; const char *id;
id = meta_window_get_flatpak_id (window); id = meta_window_get_sandboxed_app_id (window);
if (!id) if (!id)
return NULL; return NULL;
@@ -395,10 +395,10 @@ get_app_for_window (ShellWindowTracker *tracker,
if (meta_window_is_remote (window)) if (meta_window_is_remote (window))
return _shell_app_new_for_window (window); return _shell_app_new_for_window (window);
/* Check if the window was opened from within a Flatpak sandbox; if this /* Check if the window was opened from within a sandbox; if this
* is the case, a corresponding .desktop file is guaranteed to match; * is the case, a corresponding .desktop file is guaranteed to match;
*/ */
result = get_app_from_flatpak_id (window); result = get_app_from_sandboxed_app_id (window);
if (result != NULL) if (result != NULL)
return result; return result;