Compare commits

..

7 Commits

Author SHA1 Message Date
Marco Trevisan (Treviño)
768c08ba9d main: Don't override DesktopAppInfo desktop if already GNOME
During the shell initialization we call the (deprecated) function to
override the Desktop environment in Gio DesktopAppInfo to make sure that
applications are correctly shown (as per commit b2fbf5a2), however this
might break the cases in which $XDG_CURRENT_DESKTOP is already set and
contains GNOME (given that is now a list).

In Ubuntu this is in fact set to: ubuntu:GNOME.
Now, if an application contains NotShowIn=ubuntu, the key will be ignored by
the shell, and the application is still listed everywhere.

So, override the DesktopAppInfo desktop environment only in the case that
the current desktop is not already GNOME.

At the current date I think we could just safely get rid of this override at
all, but there could be still cases where it still might be useful, like when
running as nested in some other environment, so keeping it.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1156


(cherry picked from commit a0def23940)
2020-04-01 03:58:56 +00:00
Danial Behzadi
69426cbfda Update Persian translation 2020-04-01 01:42:46 +00:00
Jonas Ådahl
9f968e7378 appDisplay: Clear animateLater callbacks when unmapping
In some situations we could end up not with lingering 'view-loaded'
handler. This could result in delayed spring animate-in being initiated,
e.g. after a minute after the activities overview was already closed.

Fix this by removing any lingering signal or later handlers when
unmapping.

Fixes: 5c33fe4a0a

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1155


(cherry picked from commit f49b58cf97)
2020-03-31 17:12:35 +00:00
Cheng-Chia Tseng
1ab5e6973a Update Chinese (Taiwan) translation 2020-03-31 16:07:19 +00:00
Fabio Tomat
1dea3341ec Update Friulian translation 2020-03-31 11:14:15 +00:00
Florian Müllner
8fda054dc5 Bump version to 3.36.1
Update NEWS.
2020-03-31 00:27:47 +02:00
Florian Müllner
e989684602 extensions-app/metainfo: Point screenshots to stable branch 2020-03-30 21:32:17 +02:00
43 changed files with 1226 additions and 1224 deletions

58
NEWS
View File

@@ -1,3 +1,61 @@
3.36.1
======
* Improve app folders [Jonas D.; !1011]
* Fix launching ibus daemon [Alynx; !1080]
* Do not shutdown ibus/xsettings on X11 compositor restart [Carlos; #2329]
* Hide hint text in entries when preedit is used [Carlos; !1084]
* Do not load app infos on main thread [Christian; #2282]
* Don't expose FDO Notifications interface on main bus name [Florian; !547]
* Fix icon of mobile broadband connections [Cosimo, Reik; !1097, !1105]
* Fix high-contrast/symbolic icon mix-up [Florian; #2414]
* Don't ellipsize times in world clock [Florian; !1090]
* Only check for extension updates if there are any extensions [Florian; !1100]
* Fix crash when trying to update removed extensions [Florian; #2343]
* Make Extensions app available as flatpak [Florian; !1081, !1106, !1087, !1133]
* Display fractional timezones as hours:minutes [Jonas D.; #2438]
* Fix assigning pad keybindings [Carlos; #2451]
* Handle embedded newlines in lock screen notifications [Florian; #2463]
* Fix OSK layout fallback for unsupported variants [Florian; #2471]
* Do not apply text color to color glyphs (emojis) [Carlos; #850]
* Check "Install pending software updates" by default [Michael; #2427]
* Do not warn about missing GDM on each login [Florian; #2432]
* Fix telepathy chat notifications [Marco; !1112]
* Fix offline updates support in end session dialog [Michael; #2276]
* Fix activating notifications by keyboard [Florian; #2319]
* Remove handling of 'blacklisted' extensions [Florian; !1132]
* Only update extensions if Extensions app is installed [Florian; #2346]
* Improve Norwegian on-screen-keyboard layout [Bjørn; !1073]
* Fix IM support for deleting surrounding text [Takao; !477]
* Fix blur effect with fractional scaling [Jonas D.; !1000]
* Use better location name in weather section [Florian; #2468]
* Fix glitch in sound feedback on volume changes [Florian; !1147]
* Fix on-screen keyboard regressions [Jonas D.; !1142]
* Improve screen-reader support [Luke; #2508, #2517]
* Fix password entry resize on login/lock screen [Florian; #2423]
* Fix crash when opening app picker [Jonas Å.; !1154]
* Misc. bug fixes and cleanups [Florian, Sebastian, Jan, Daniel, Philip, Mario,
Ray, Marco, Jonas D., Carlos, Georges; #2298, #2305, !1078, !1077, #2334,
#2381, !1093, !1098, #2386, !1108, !1109, !1114, !1076, !1072, !1115, !1088,
!1101, #2467, !1121, !1122, #2476, !1123, !1117, !1129, !1113, !1102, !1127,
#2238, !1131, !1135, !1136, !849, #2504, #2371, !1146, !1141, #2510, !1150]
Contributors:
Marco Trevisan (Treviño), Michael Catanzaro, Cosimo Cecchi, Jonas Dreßler,
Takao Fujiwara, Carlos Garnacho, Christian Hergert, Sebastian Keller,
Reik Keutterling, Bjørn Lie, Florian Müllner, Jwtiyar Nariman,
Georges Basile Stavracas Neto, Mario Sanchez Prada, Ray Strode, Jan Tojnar,
Daniel van Vugt, Philip Withnall, Luke Yelavich, Alynx Zhou, Jonas Ådahl
Translators:
Марко Костић [sr], Jordi Mas [ca], sicklylife [ja], Marek Černocký [cs],
Daniel Rusek [cs], Kjartan Maraas [nb], Tim Sabsch [de], Stas Solovey [ru],
Peter Mráz [sk], Rafael Fontenelle [pt_BR], Piotr Drąg [pl],
Milo Casagrande [it], Anders Jonsson [sv], Yuri Chornoivan [uk],
Kukuh Syafaat [id], Guillaume Bernard [fr], Daniel Mustieles [es],
Danial Behzadi [fa], Goran Vidović [hr], Yosef Or Boczko [he],
Emin Tufan Çetin [tr], Wolfgang Stöggl [de], Ibai Oihanguren Sala [eu],
Jwtiyar Nariman [ckb], Aurimas Černius [lt]
3.36.0 3.36.0
====== ======
* Fix off-by-1900 error in date conversions [Florian; !1061] * Fix off-by-1900 error in date conversions [Florian; !1061]

View File

@@ -2,7 +2,7 @@
/* exported BANNER_MESSAGE_KEY, BANNER_MESSAGE_TEXT_KEY, LOGO_KEY, /* exported BANNER_MESSAGE_KEY, BANNER_MESSAGE_TEXT_KEY, LOGO_KEY,
DISABLE_USER_LIST_KEY, fadeInActor, fadeOutActor, cloneAndFadeOutActor */ DISABLE_USER_LIST_KEY, fadeInActor, fadeOutActor, cloneAndFadeOutActor */
const { Clutter, Gdm, Gio, GLib } = imports.gi; const { Clutter, Gio, GLib } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Batch = imports.gdm.batch; const Batch = imports.gdm.batch;
@@ -12,15 +12,6 @@ const Main = imports.ui.main;
const Params = imports.misc.params; const Params = imports.misc.params;
const SmartcardManager = imports.misc.smartcardManager; const SmartcardManager = imports.misc.smartcardManager;
Gio._promisify(Gdm.Client.prototype,
'open_reauthentication_channel', 'open_reauthentication_channel_finish');
Gio._promisify(Gdm.Client.prototype,
'get_user_verifier', 'get_user_verifier_finish');
Gio._promisify(Gdm.UserVerifierProxy.prototype,
'call_begin_verification_for_user', 'call_begin_verification_for_user_finish');
Gio._promisify(Gdm.UserVerifierProxy.prototype,
'call_begin_verification', 'call_begin_verification_finish');
var PASSWORD_SERVICE_NAME = 'gdm-password'; var PASSWORD_SERVICE_NAME = 'gdm-password';
var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint'; var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
var SMARTCARD_SERVICE_NAME = 'gdm-smartcard'; var SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
@@ -177,12 +168,14 @@ var ShellUserVerifier = class {
this._checkForFingerprintReader(); this._checkForFingerprintReader();
// If possible, reauthenticate an already running session, if (userName) {
// so any session specific credentials get updated appropriately // If possible, reauthenticate an already running session,
if (userName) // so any session specific credentials get updated appropriately
this._openReauthenticationChannel(userName); this._client.open_reauthentication_channel(userName, this._cancellable,
else this._reauthenticationChannelOpened.bind(this));
this._getUserVerifier(); } else {
this._client.get_user_verifier(this._cancellable, this._userVerifierGot.bind(this));
}
} }
cancel() { cancel() {
@@ -346,11 +339,10 @@ var ShellUserVerifier = class {
this._verificationFailed(false); this._verificationFailed(false);
} }
async _openReauthenticationChannel(userName) { _reauthenticationChannelOpened(client, result) {
try { try {
this._clearUserVerifier(); this._clearUserVerifier();
this._userVerifier = await this._client.open_reauthentication_channel( this._userVerifier = client.open_reauthentication_channel_finish(result);
userName, this._cancellable);
} catch (e) { } catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return; return;
@@ -359,7 +351,8 @@ var ShellUserVerifier = class {
// Gdm emits org.freedesktop.DBus.Error.AccessDenied when there // Gdm emits org.freedesktop.DBus.Error.AccessDenied when there
// is no session to reauthenticate. Fall back to performing // is no session to reauthenticate. Fall back to performing
// verification from this login session // verification from this login session
this._getUserVerifier(); client.get_user_verifier(this._cancellable,
this._userVerifierGot.bind(this));
return; return;
} }
@@ -373,11 +366,10 @@ var ShellUserVerifier = class {
this._hold.release(); this._hold.release();
} }
async _getUserVerifier() { _userVerifierGot(client, result) {
try { try {
this._clearUserVerifier(); this._clearUserVerifier();
this._userVerifier = this._userVerifier = client.get_user_verifier_finish(result);
await this._client.get_user_verifier(this._cancellable);
} catch (e) { } catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return; return;
@@ -429,25 +421,35 @@ var ShellUserVerifier = class {
} }
} }
async _startService(serviceName) { _startService(serviceName) {
this._hold.acquire(); this._hold.acquire();
try { if (this._userName) {
if (this._userName) { this._userVerifier.call_begin_verification_for_user(serviceName, this._userName, this._cancellable, (obj, result) => {
await this._userVerifier.call_begin_verification_for_user( try {
serviceName, this._userName, this._cancellable); obj.call_begin_verification_for_user_finish(result);
} else { } catch (e) {
await this._userVerifier.call_begin_verification( if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
serviceName, this._cancellable); return;
} this._reportInitError('Failed to start verification for user', e);
} catch (e) { return;
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) }
return;
this._reportInitError(this._userName this._hold.release();
? 'Failed to start verification for user' });
: 'Failed to start verification', e); } else {
return; this._userVerifier.call_begin_verification(serviceName, this._cancellable, (obj, result) => {
try {
obj.call_begin_verification_finish(result);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
this._reportInitError('Failed to start verification', e);
return;
}
this._hold.release();
});
} }
this._hold.release();
} }
_beginVerification() { _beginVerification() {

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported ExtensionState, ExtensionType, getCurrentExtension, /* exported ExtensionState, ExtensionType, getCurrentExtension,
getSettings, initTranslations, openPrefs, isOutOfDate, getSettings, initTranslations, isOutOfDate, installImporter,
installImporter, serializeExtension, deserializeExtension */ serializeExtension, deserializeExtension */
// Common utils for the extension system and the extension // Common utils for the extension system and the extension
// preferences tool // preferences tool
@@ -153,27 +153,6 @@ function getSettings(schema) {
return new Gio.Settings({ settings_schema: schemaObj }); return new Gio.Settings({ settings_schema: schemaObj });
} }
/**
* openPrefs:
*
* Open the preference dialog of the current extension
*/
function openPrefs() {
const extension = getCurrentExtension();
if (!extension)
throw new Error('openPrefs() can only be called from extensions');
try {
const extensionManager = imports.ui.main.extensionManager;
extensionManager.openExtensionPrefs(extension.uuid, '', {});
} catch (e) {
if (e.name === 'ImportError')
throw new Error('openPrefs() cannot be called from preferences');
logError(e, 'Failed to open extension preferences');
}
}
/** /**
* versionCheck: * versionCheck:
* @param {string[]} required - an array of versions we're compatible with * @param {string[]} required - an array of versions we're compatible with

View File

@@ -6,15 +6,6 @@ const Signals = imports.signals;
const IBusCandidatePopup = imports.ui.ibusCandidatePopup; const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
Gio._promisify(IBus.Bus.prototype,
'list_engines_async', 'list_engines_async_finish');
Gio._promisify(IBus.Bus.prototype,
'request_name_async', 'request_name_async_finish');
Gio._promisify(IBus.Bus.prototype,
'get_global_engine_async', 'get_global_engine_async_finish');
Gio._promisify(IBus.Bus.prototype,
'set_global_engine_async', 'set_global_engine_async_finish');
// Ensure runtime version matches // Ensure runtime version matches
_checkIBusVersion(1, 5, 2); _checkIBusVersion(1, 5, 2);
@@ -111,14 +102,16 @@ var IBusManager = class {
_onConnected() { _onConnected() {
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
this._initEngines(); this._ibus.list_engines_async(-1, this._cancellable,
this._initPanelService(); this._initEngines.bind(this));
this._ibus.request_name_async(IBus.SERVICE_PANEL,
IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable,
this._initPanelService.bind(this));
} }
async _initEngines() { _initEngines(ibus, result) {
try { try {
const enginesList = let enginesList = this._ibus.list_engines_async_finish(result);
await this._ibus.list_engines_async(-1, this._cancellable);
for (let i = 0; i < enginesList.length; ++i) { for (let i = 0; i < enginesList.length; ++i) {
let name = enginesList[i].get_name(); let name = enginesList[i].get_name();
this._engines.set(name, enginesList[i]); this._engines.set(name, enginesList[i]);
@@ -133,10 +126,9 @@ var IBusManager = class {
} }
} }
async _initPanelService() { _initPanelService(ibus, result) {
try { try {
await this._ibus.request_name_async(IBus.SERVICE_PANEL, this._ibus.request_name_async_finish(result);
IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable);
} catch (e) { } catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
logError(e); logError(e);
@@ -171,15 +163,19 @@ var IBusManager = class {
this._panelService.connect('set-content-type', this._setContentType.bind(this)); this._panelService.connect('set-content-type', this._setContentType.bind(this));
} catch (e) { } catch (e) {
} }
// If an engine is already active we need to get its properties
try { this._ibus.get_global_engine_async(-1, this._cancellable, (_bus, res) => {
// If an engine is already active we need to get its properties let engine;
const engine = try {
await this._ibus.get_global_engine_async(-1, this._cancellable); engine = this._ibus.get_global_engine_async_finish(res);
if (!engine)
return;
} catch (e) {
return;
}
this._engineChanged(this._ibus, engine.get_name()); this._engineChanged(this._ibus, engine.get_name());
this._updateReadiness(); });
} catch (e) { this._updateReadiness();
}
} }
_updateReadiness() { _updateReadiness() {
@@ -227,7 +223,7 @@ var IBusManager = class {
return this._engines.get(id); return this._engines.get(id);
} }
async setEngine(id, callback) { setEngine(id, callback) {
// Send id even if id == this._currentEngineName // Send id even if id == this._currentEngineName
// because 'properties-registered' signal can be emitted // because 'properties-registered' signal can be emitted
// while this._ibusSources == null on a lock screen. // while this._ibusSources == null on a lock screen.
@@ -237,16 +233,18 @@ var IBusManager = class {
return; return;
} }
try { this._ibus.set_global_engine_async(id,
await this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
this._MAX_INPUT_SOURCE_ACTIVATION_TIME, this._cancellable, (_bus, res) => {
this._cancellable); try {
} catch (e) { this._ibus.set_global_engine_async_finish(res);
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) } catch (e) {
logError(e); if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
} logError(e);
if (callback) }
callback(); if (callback)
callback();
});
} }
preloadEngines(ids) { preloadEngines(ids) {

View File

@@ -4,9 +4,6 @@ const { Clutter, GLib, Gio, GObject, IBus } = imports.gi;
const Keyboard = imports.ui.status.keyboard; const Keyboard = imports.ui.status.keyboard;
Gio._promisify(IBus.Bus.prototype,
'create_input_context_async', 'create_input_context_async_finish');
var HIDE_PANEL_TIME = 50; var HIDE_PANEL_TIME = 50;
var InputMethod = GObject.registerClass( var InputMethod = GObject.registerClass(
@@ -49,11 +46,15 @@ class InputMethod extends Clutter.InputMethod {
this._currentSource = this._inputSourceManager.currentSource; this._currentSource = this._inputSourceManager.currentSource;
} }
async _onConnected() { _onConnected() {
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
this._ibus.create_input_context_async('gnome-shell', -1,
this._cancellable, this._setContext.bind(this));
}
_setContext(bus, res) {
try { try {
this._context = await this._ibus.create_input_context_async( this._context = this._ibus.create_input_context_async_finish(res);
'gnome-shell', -1, this._cancellable);
} catch (e) { } catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
logError(e); logError(e);

View File

@@ -50,22 +50,25 @@ function canLock() {
} }
async function registerSessionWithGDM() { function registerSessionWithGDM() {
log("Registering session with GDM"); log("Registering session with GDM");
try { Gio.DBus.system.call('org.gnome.DisplayManager',
await Gio.DBus.system.call( '/org/gnome/DisplayManager/Manager',
'org.gnome.DisplayManager', 'org.gnome.DisplayManager.Manager',
'/org/gnome/DisplayManager/Manager', 'RegisterSession',
'org.gnome.DisplayManager.Manager', GLib.Variant.new('(a{sv})', [{}]), null,
'RegisterSession', Gio.DBusCallFlags.NONE, -1, null,
GLib.Variant.new('(a{sv})', [{}]), null, (source, result) => {
Gio.DBusCallFlags.NONE, -1, null); try {
} catch (e) { source.call_finish(result);
if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD)) } catch (e) {
log(`Error registering session with GDM: ${e.message}`); if (!e.matches(Gio.DBusError, Gio.DBusError.UNKNOWN_METHOD))
else log(`Error registering session with GDM: ${e.message}`);
log('Not calling RegisterSession(): method not exported, GDM too old?'); else
} log("Not calling RegisterSession(): method not exported, GDM too old?");
}
}
);
} }
let _loginManager = null; let _loginManager = null;
@@ -171,19 +174,24 @@ var LoginManagerSystemd = class {
this._proxy.SuspendRemote(true); this._proxy.SuspendRemote(true);
} }
async inhibit(reason, callback) { inhibit(reason, callback) {
try { let inVariant = GLib.Variant.new('(ssss)',
const inVariant = new GLib.Variant('(ssss)', ['sleep',
['sleep', 'GNOME Shell', reason, 'delay']); 'GNOME Shell',
const [outVariant_, fdList] = reason,
await this._proxy.call_with_unix_fd_list('Inhibit', 'delay']);
inVariant, 0, -1, null, null); this._proxy.call_with_unix_fd_list('Inhibit', inVariant, 0, -1, null, null,
const [fd] = fdList.steal_fds(); (proxy, result) => {
callback(new Gio.UnixInputStream({ fd })); let fd = -1;
} catch (e) { try {
logError(e, 'Error getting systemd inhibitor'); let [outVariant_, fdList] = proxy.call_with_unix_fd_list_finish(result);
callback(null); fd = fdList.steal_fds()[0];
} callback(new Gio.UnixInputStream({ fd }));
} catch (e) {
logError(e, "Error getting systemd inhibitor");
callback(null);
}
});
} }
_prepareForSleep(proxy, sender, [aboutToSuspend]) { _prepareForSleep(proxy, sender, [aboutToSuspend]) {

View File

@@ -57,7 +57,9 @@ var ObjectManager = class {
// Start out inhibiting load until at least the proxy // Start out inhibiting load until at least the proxy
// manager is loaded and the remote objects are fetched // manager is loaded and the remote objects are fetched
this._numLoadInhibitors = 1; this._numLoadInhibitors = 1;
this._initManagerProxy(); this._managerProxy.init_async(GLib.PRIORITY_DEFAULT,
this._cancellable,
this._onManagerProxyLoaded.bind(this));
} }
_tryToCompleteLoad() { _tryToCompleteLoad() {
@@ -71,7 +73,7 @@ var ObjectManager = class {
} }
} }
async _addInterface(objectPath, interfaceName, onFinished) { _addInterface(objectPath, interfaceName, onFinished) {
let info = this._interfaceInfos[interfaceName]; let info = this._interfaceInfos[interfaceName];
if (!info) { if (!info) {
@@ -87,38 +89,40 @@ var ObjectManager = class {
g_interface_info: info, g_interface_info: info,
g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START }); g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START });
try { proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable, (initable, result) => {
await proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable); try {
} catch (e) { initable.init_finish(result);
logError(e, `could not initialize proxy for interface ${interfaceName}`); } catch (e) {
logError(e, `could not initialize proxy for interface ${interfaceName}`);
if (onFinished)
onFinished();
return;
}
let isNewObject;
if (!this._objects[objectPath]) {
this._objects[objectPath] = {};
isNewObject = true;
} else {
isNewObject = false;
}
this._objects[objectPath][interfaceName] = proxy;
if (!this._interfaces[interfaceName])
this._interfaces[interfaceName] = [];
this._interfaces[interfaceName].push(proxy);
if (isNewObject)
this.emit('object-added', objectPath);
this.emit('interface-added', interfaceName, proxy);
if (onFinished) if (onFinished)
onFinished(); onFinished();
return; });
}
let isNewObject;
if (!this._objects[objectPath]) {
this._objects[objectPath] = {};
isNewObject = true;
} else {
isNewObject = false;
}
this._objects[objectPath][interfaceName] = proxy;
if (!this._interfaces[interfaceName])
this._interfaces[interfaceName] = [];
this._interfaces[interfaceName].push(proxy);
if (isNewObject)
this.emit('object-added', objectPath);
this.emit('interface-added', interfaceName, proxy);
if (onFinished)
onFinished();
} }
_removeInterface(objectPath, interfaceName) { _removeInterface(objectPath, interfaceName) {
@@ -147,10 +151,9 @@ var ObjectManager = class {
} }
} }
async _initManagerProxy() { _onManagerProxyLoaded(initable, result) {
try { try {
await this._managerProxy.init_async( initable.init_finish(result);
GLib.PRIORITY_DEFAULT, this._cancellable);
} catch (e) { } catch (e) {
logError(e, `could not initialize object manager for object ${this._serviceName}`); logError(e, `could not initialize object manager for object ${this._serviceName}`);

View File

@@ -7,8 +7,6 @@ const PermissionStore = imports.misc.permissionStore;
const { loadInterfaceXML } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
Gio._promisify(Geoclue.Simple, 'new', 'new_finish');
const WeatherIntegrationIface = loadInterfaceXML('org.gnome.Shell.WeatherIntegration'); const WeatherIntegrationIface = loadInterfaceXML('org.gnome.Shell.WeatherIntegration');
const WEATHER_BUS_NAME = 'org.gnome.Weather'; const WEATHER_BUS_NAME = 'org.gnome.Weather';
@@ -81,7 +79,16 @@ var WeatherClient = class {
this._weatherApp = null; this._weatherApp = null;
this._weatherProxy = null; this._weatherProxy = null;
this._createWeatherProxy(); let nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface);
Gio.DBusProxy.new(
Gio.DBus.session,
Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES,
nodeInfo.lookup_interface(WEATHER_INTEGRATION_IFACE),
WEATHER_BUS_NAME,
WEATHER_OBJECT_PATH,
WEATHER_INTEGRATION_IFACE,
null,
this._onWeatherProxyReady.bind(this));
this._settings = new Gio.Settings({ this._settings = new Gio.Settings({
schema_id: 'org.gnome.shell.weather', schema_id: 'org.gnome.shell.weather',
@@ -139,17 +146,9 @@ var WeatherClient = class {
(!this._needsAuth || this._weatherAuthorized); (!this._needsAuth || this._weatherAuthorized);
} }
async _createWeatherProxy() { _onWeatherProxyReady(o, res) {
const nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface);
try { try {
this._weatherProxy = await Gio.DBusProxy.new( this._weatherProxy = Gio.DBusProxy.new_finish(res);
Gio.DBus.session,
Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES,
nodeInfo.lookup_interface(WEATHER_INTEGRATION_IFACE),
WEATHER_BUS_NAME,
WEATHER_OBJECT_PATH,
WEATHER_INTEGRATION_IFACE,
null);
} catch (e) { } catch (e) {
log(`Failed to create GNOME Weather proxy: ${e}`); log(`Failed to create GNOME Weather proxy: ${e}`);
return; return;
@@ -240,23 +239,25 @@ var WeatherClient = class {
} }
} }
async _startGClueService() { _startGClueService() {
if (this._gclueStarting) if (this._gclueStarting)
return; return;
this._gclueStarting = true; this._gclueStarting = true;
try { Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null,
this._gclueService = await Geoclue.Simple.new( (o, res) => {
'org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null); try {
} catch (e) { this._gclueService = Geoclue.Simple.new_finish(res);
log(`Failed to connect to Geoclue2 service: ${e.message}`); } catch (e) {
this._setLocation(this._mostRecentLocation); log(`Failed to connect to Geoclue2 service: ${e.message}`);
return; this._setLocation(this._mostRecentLocation);
} return;
this._gclueStarted = true; }
this._gclueService.get_client().distance_threshold = 100; this._gclueStarted = true;
this._updateLocationMonitoring(); this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
});
} }
_onGClueLocationChanged() { _onGClueLocationChanged() {

View File

@@ -157,10 +157,6 @@ var BaseAppView = GObject.registerClass({
this._items = new Map(); this._items = new Map();
this._orderedItems = []; this._orderedItems = [];
this._animateLaterId = 0;
this._viewLoadedHandlerId = 0;
this._viewIsReady = false;
} }
_childFocused(_actor) { _childFocused(_actor) {
@@ -196,6 +192,8 @@ var BaseAppView = GObject.registerClass({
this._items.set(icon.id, icon); this._items.set(icon.id, icon);
}); });
this._animateLaterId = 0;
this._viewLoadedHandlerId = 0;
this._viewIsReady = true; this._viewIsReady = true;
this.emit('view-loaded'); this.emit('view-loaded');
} }
@@ -414,6 +412,8 @@ var AllView = GObject.registerClass({
this._lastOvershootY = -1; this._lastOvershootY = -1;
this._lastOvershootTimeoutId = 0; this._lastOvershootTimeoutId = 0;
this._viewIsReady = false;
Main.overview.connect('hidden', () => this.goToPage(0)); Main.overview.connect('hidden', () => this.goToPage(0));
this._redisplayWorkId = Main.initializeDeferredWork(this, this._redisplay.bind(this)); this._redisplayWorkId = Main.initializeDeferredWork(this, this._redisplay.bind(this));
@@ -1376,12 +1376,12 @@ class FolderView extends BaseAppView {
}); });
layout.hookup_style(icon); layout.hookup_style(icon);
let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size); let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size);
let scale = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let numItems = this._orderedItems.length; let numItems = this._orderedItems.length;
let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL; let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL;
for (let i = 0; i < 4; i++) { for (let i = 0; i < 4; i++) {
const style = 'width: %dpx; height: %dpx;'.format(subSize, subSize); let bin = new St.Bin({ width: subSize * scale, height: subSize * scale });
let bin = new St.Bin({ style });
if (i < numItems) if (i < numItems)
bin.child = this._orderedItems[i].app.create_icon_texture(subSize); bin.child = this._orderedItems[i].app.create_icon_texture(subSize);
layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1); layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1);
@@ -2551,18 +2551,19 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) { if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
this._appendSeparator(); this._appendSeparator();
let item = this._appendMenuItem(_("Show Details")); let item = this._appendMenuItem(_("Show Details"));
item.connect('activate', async () => { item.connect('activate', () => {
let id = this._source.app.get_id(); let id = this._source.app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']); let args = GLib.Variant.new('(ss)', [id, '']);
const bus = await Gio.DBus.get(Gio.BusType.SESSION, null); Gio.DBus.get(Gio.BusType.SESSION, null, (o, res) => {
bus.call( let bus = Gio.DBus.get_finish(res);
'org.gnome.Software', bus.call('org.gnome.Software',
'/org/gnome/Software', '/org/gnome/Software',
'org.gtk.Actions', 'Activate', 'org.gtk.Actions', 'Activate',
new GLib.Variant.new( GLib.Variant.new('(sava{sv})',
'(sava{sv})', ['details', [args], null]), ['details', [args], null]),
null, 0, -1, null); null, 0, -1, null, null);
Main.overview.hide(); Main.overview.hide();
});
}); });
} }
} }

View File

@@ -199,47 +199,46 @@ class DBusEventSource extends EventSourceBase {
this._initialized = false; this._initialized = false;
this._dbusProxy = new CalendarServer(); this._dbusProxy = new CalendarServer();
this._initProxy(); this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, (object, result) => {
} let loaded = false;
async _initProxy() { try {
let loaded = false; this._dbusProxy.init_finish(result);
loaded = true;
try { } catch (e) {
await this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null); if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
loaded = true; // Ignore timeouts and install signals as normal, because with high
} catch (e) { // probability the service will appear later on, and we will get a
// Ignore timeouts and install signals as normal, because with high // NameOwnerChanged which will finish loading
// probability the service will appear later on, and we will get a //
// NameOwnerChanged which will finish loading // (But still _initialized to false, because the proxy does not know
// // about the HasCalendars property and would cause an exception trying
// (But still _initialized to false, because the proxy does not know // to read it)
// about the HasCalendars property and would cause an exception trying } else {
// to read it) log('Error loading calendars: %s'.format(e.message));
if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) { return;
log('Error loading calendars: %s'.format(e.message)); }
return;
} }
}
this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this)); this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this));
this._dbusProxy.connect('notify::g-name-owner', () => { this._dbusProxy.connect('notify::g-name-owner', () => {
if (this._dbusProxy.g_name_owner) if (this._dbusProxy.g_name_owner)
this._onNameAppeared();
else
this._onNameVanished();
});
this._dbusProxy.connect('g-properties-changed', () => {
this.notify('has-calendars');
});
this._initialized = loaded;
if (loaded) {
this.notify('has-calendars');
this._onNameAppeared(); this._onNameAppeared();
else }
this._onNameVanished();
}); });
this._dbusProxy.connect('g-properties-changed', () => {
this.notify('has-calendars');
});
this._initialized = loaded;
if (loaded) {
this.notify('has-calendars');
this._onNameAppeared();
}
} }
destroy() { destroy() {

View File

@@ -10,7 +10,6 @@ const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry; const ShellEntry = imports.ui.shellEntry;
Gio._promisify(Shell.NetworkAgent.prototype, 'init_async', 'init_finish');
Gio._promisify(Shell.NetworkAgent.prototype, Gio._promisify(Shell.NetworkAgent.prototype,
'search_vpn_plugin', 'search_vpn_plugin_finish'); 'search_vpn_plugin', 'search_vpn_plugin_finish');
@@ -483,37 +482,39 @@ var VPNRequestHandler = class {
} }
} }
async _readStdoutOldStyle() { _readStdoutOldStyle() {
const [line, len_] = this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, (stream, result) => {
await this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null); let [line, len_] = this._dataStdout.read_line_finish_utf8(result);
if (line === null) { if (line == null) {
// end of file // end of file
this._stdout.close(null); this._stdout.close(null);
return; return;
} }
this._vpnChildProcessLineOldStyle(line); this._vpnChildProcessLineOldStyle(line);
// try to read more! // try to read more!
this._readStdoutOldStyle(); this._readStdoutOldStyle();
});
} }
async _readStdoutNewStyle() { _readStdoutNewStyle() {
const cnt = this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null, (stream, result) => {
await this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null); let cnt = this._dataStdout.fill_finish(result);
if (cnt === 0) { if (cnt == 0) {
// end of file // end of file
this._showNewStyleDialog(); this._showNewStyleDialog();
this._stdout.close(null); this._stdout.close(null);
return; return;
} }
// Try to read more // Try to read more
this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size()); this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size());
this._readStdoutNewStyle(); this._readStdoutNewStyle();
});
} }
_showNewStyleDialog() { _showNewStyleDialog() {
@@ -620,17 +621,15 @@ var NetworkAgent = class {
this._native.connect('cancel-request', this._cancelRequest.bind(this)); this._native.connect('cancel-request', this._cancelRequest.bind(this));
this._initialized = false; this._initialized = false;
this._initNative(); this._native.init_async(GLib.PRIORITY_DEFAULT, null, (o, res) => {
} try {
this._native.init_finish(res);
async _initNative() { this._initialized = true;
try { } catch (e) {
await this._native.init_async(GLib.PRIORITY_DEFAULT, null); this._native = null;
this._initialized = true; logError(e, 'error initializing the NetworkManager Agent');
} catch (e) { }
this._native = null; });
logError(e, 'error initializing the NetworkManager Agent');
}
} }
enable() { enable() {

View File

@@ -7,14 +7,6 @@ var Tpl = null;
var Tp = null; var Tp = null;
try { try {
({ TelepathyGLib: Tp, TelepathyLogger: Tpl } = imports.gi); ({ TelepathyGLib: Tp, TelepathyLogger: Tpl } = imports.gi);
Gio._promisify(Tp.Channel.prototype, 'close_async', 'close_finish');
Gio._promisify(Tp.Channel.prototype,
'send_message_async', 'send_message_finish');
Gio._promisify(Tp.ChannelDispatchOperation.prototype,
'claim_with_async', 'claim_with_finish');
Gio._promisify(Tpl.LogManager.prototype,
'get_filtered_events_async', 'get_filtered_events_finish');
} catch (e) { } catch (e) {
log('Telepathy is not available, chat integration will be disabled.'); log('Telepathy is not available, chat integration will be disabled.');
} }
@@ -223,7 +215,7 @@ class TelepathyClient extends Tp.BaseClient {
// We can only handle text channel, so close any other channel // We can only handle text channel, so close any other channel
if (!(channel instanceof Tp.TextChannel)) { if (!(channel instanceof Tp.TextChannel)) {
channel.close_async(); channel.close_async(null);
continue; continue;
} }
@@ -269,7 +261,7 @@ class TelepathyClient extends Tp.BaseClient {
} }
} }
async _approveTextChannel(account, conn, channel, dispatchOp, context) { _approveTextChannel(account, conn, channel, dispatchOp, context) {
let [targetHandle_, targetHandleType] = channel.get_handle(); let [targetHandle_, targetHandleType] = channel.get_handle();
if (targetHandleType != Tp.HandleType.CONTACT) { if (targetHandleType != Tp.HandleType.CONTACT) {
@@ -278,15 +270,17 @@ class TelepathyClient extends Tp.BaseClient {
return; return;
} }
context.accept();
// Approve private text channels right away as we are going to handle it // Approve private text channels right away as we are going to handle it
try { dispatchOp.claim_with_async(this, (o, result) => {
await dispatchOp.claim_with_async(this); try {
this._handlingChannels(account, conn, [channel], false); dispatchOp.claim_with_finish(result);
} catch (err) { this._handlingChannels(account, conn, [channel], false);
log('Failed to Claim channel: %s'.format(err.toString())); } catch (err) {
} log('Failed to Claim channel: %s'.format(err.toString()));
}
});
context.accept();
} }
_delegatedChannelsCb(_client, _channels) { _delegatedChannelsCb(_client, _channels) {
@@ -447,14 +441,17 @@ class ChatSource extends MessageTray.Source {
} }
} }
async _getLogMessages() { _getLogMessages() {
let logManager = Tpl.LogManager.dup_singleton(); let logManager = Tpl.LogManager.dup_singleton();
let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT); let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
const [events] = await logManager.get_filtered_events_async( logManager.get_filtered_events_async(this._account, entity,
this._account, entity, Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES, null, this._displayPendingMessages.bind(this));
null); }
_displayPendingMessages(logManager, result) {
let [success_, events] = logManager.get_filtered_events_finish(result);
let logMessages = events.map(e => ChatMessage.newFromTplTextEvent(e)); let logMessages = events.map(e => ChatMessage.newFromTplTextEvent(e));
this._ensureNotification(); this._ensureNotification();
@@ -512,7 +509,9 @@ class ChatSource extends MessageTray.Source {
this._ackMessages(); this._ackMessages();
// The chat box has been destroyed so it can't // The chat box has been destroyed so it can't
// handle the channel any more. // handle the channel any more.
this._channel.close_async(); this._channel.close_async((channel, result) => {
channel.close_finish(result);
});
} else { } else {
// Don't indicate any unread messages when the notification // Don't indicate any unread messages when the notification
// that represents them has been destroyed. // that represents them has been destroyed.
@@ -610,7 +609,9 @@ class ChatSource extends MessageTray.Source {
} }
let msg = Tp.ClientMessage.new_text(type, text); let msg = Tp.ClientMessage.new_text(type, text);
this._channel.send_message_async(msg, 0); this._channel.send_message_async(msg, 0, (src, result) => {
this._channel.send_message_finish(result);
});
} }
setChatState(state) { setChatState(state) {

View File

@@ -29,6 +29,8 @@ const UserWidget = imports.ui.userWidget;
const { loadInterfaceXML } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
const _ITEM_ICON_SIZE = 64; const _ITEM_ICON_SIZE = 64;
const EndSessionDialogIface = loadInterfaceXML('org.gnome.SessionManager.EndSessionDialog'); const EndSessionDialogIface = loadInterfaceXML('org.gnome.SessionManager.EndSessionDialog');
@@ -278,7 +280,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog'); this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
} }
async _onPkOfflineProxyCreated(proxy, error) { _onPkOfflineProxyCreated(proxy, error) {
if (error) { if (error) {
log(error.message); log(error.message);
return; return;
@@ -293,12 +295,15 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
} }
// It only makes sense to check for this permission if PackageKit is available. // It only makes sense to check for this permission if PackageKit is available.
try { Polkit.Permission.new(
this._updatesPermission = await Polkit.Permission.new( 'org.freedesktop.packagekit.trigger-offline-update', null, null,
'org.freedesktop.packagekit.trigger-offline-update', null, null); (source, res) => {
} catch (e) { try {
log('No permission to trigger offline updates: %s'.format(e.toString())); this._updatesPermission = Polkit.Permission.new_finish(res);
} } catch (e) {
log('No permission to trigger offline updates: %s'.format(e.toString()));
}
});
} }
_onDestroy() { _onDestroy() {

View File

@@ -10,21 +10,10 @@ imports.gi.versions.Gtk = '3.0';
imports.gi.versions.TelepathyGLib = '0.12'; imports.gi.versions.TelepathyGLib = '0.12';
imports.gi.versions.TelepathyLogger = '0.2'; imports.gi.versions.TelepathyLogger = '0.2';
const { Clutter, Gio, GLib, GObject, Meta, Polkit, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Gettext = imports.gettext; const Gettext = imports.gettext;
const System = imports.system; const System = imports.system;
Gio._promisify(Gio.DataInputStream.prototype, 'fill_async', 'fill_finish');
Gio._promisify(Gio.DataInputStream.prototype,
'read_line_async', 'read_line_finish');
Gio._promisify(Gio.DBus, 'get', 'get_finish');
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
Gio._promisify(Gio.DBusProxy, 'new', 'new_finish');
Gio._promisify(Gio.DBusProxy.prototype, 'init_async', 'init_finish');
Gio._promisify(Gio.DBusProxy.prototype,
'call_with_unix_fd_list', 'call_with_unix_fd_list_finish');
Gio._promisify(Polkit.Permission, 'new', 'new_finish');
let _localTimeZone = null; let _localTimeZone = null;
// We can't import shell JS modules yet, because they may have // We can't import shell JS modules yet, because they may have

View File

@@ -215,24 +215,6 @@ var ExtensionManager = class {
return true; return true;
} }
openExtensionPrefs(uuid, parentWindow, options) {
const extension = this.lookup(uuid);
if (!extension || !extension.hasPrefs)
return false;
Gio.DBus.session.call(
'org.gnome.Shell.Extensions',
'/org/gnome/Shell/Extensions',
'org.gnome.Shell.Extensions',
'OpenExtensionPrefs',
new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]),
null,
Gio.DBusCallFlags.NONE,
-1,
null);
return true;
}
notifyExtensionUpdate(uuid) { notifyExtensionUpdate(uuid) {
let extension = this.lookup(uuid); let extension = this.lookup(uuid);
if (!extension) if (!extension)

View File

@@ -114,11 +114,8 @@ class BaseIcon extends St.Bin {
if (this._setSizeManually) { if (this._setSizeManually) {
size = this.iconSize; size = this.iconSize;
} else { } else {
const { scaleFactor } =
St.ThemeContext.get_for_stage(global.stage);
let [found, len] = node.lookup_length('icon-size', false); let [found, len] = node.lookup_length('icon-size', false);
size = found ? len / scaleFactor : ICON_SIZE; size = found ? len : ICON_SIZE;
} }
if (this.iconSize == size && this._iconBin.child) if (this.iconSize == size && this._iconBin.child)

View File

@@ -90,16 +90,18 @@ class AppMenu extends PopupMenu.PopupMenu {
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._detailsItem = this.addAction(_('Show Details'), async () => { this._detailsItem = this.addAction(_("Show Details"), () => {
let id = this._app.get_id(); let id = this._app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']); let args = GLib.Variant.new('(ss)', [id, '']);
const bus = await Gio.DBus.get(Gio.BusType.SESSION, null); Gio.DBus.get(Gio.BusType.SESSION, null, (o, res) => {
bus.call( let bus = Gio.DBus.get_finish(res);
'org.gnome.Software', bus.call('org.gnome.Software',
'/org/gnome/Software', '/org/gnome/Software',
'org.gtk.Actions', 'Activate', 'org.gtk.Actions', 'Activate',
new GLib.Variant('(sava{sv})', ['details', [args], null]), GLib.Variant.new('(sava{sv})',
null, 0, -1, null); ['details', [args], null]),
null, 0, -1, null, null);
});
}); });
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());

View File

@@ -204,7 +204,7 @@ var RemoteSearchProvider = class {
g_interface_info: proxyInfo, g_interface_info: proxyInfo,
g_interface_name: proxyInfo.name, g_interface_name: proxyInfo.name,
gFlags }); gFlags });
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null); this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
this.appInfo = appInfo; this.appInfo = appInfo;
this.id = appInfo.get_id(); this.id = appInfo.get_id();

View File

@@ -498,8 +498,6 @@ var ScreenShield = class {
if (Main.sessionMode.currentMode == 'unlock-dialog') if (Main.sessionMode.currentMode == 'unlock-dialog')
Main.sessionMode.popMode('unlock-dialog'); Main.sessionMode.popMode('unlock-dialog');
this.emit('wake-up-screen');
if (this._isGreeter) { if (this._isGreeter) {
// We don't want to "deactivate" any more than // We don't want to "deactivate" any more than
// this. In particular, we don't want to drop // this. In particular, we don't want to drop
@@ -521,9 +519,6 @@ var ScreenShield = class {
this._isModal = false; this._isModal = false;
} }
this._longLightbox.lightOff();
this._shortLightbox.lightOff();
this._lockDialogGroup.ease({ this._lockDialogGroup.ease({
translation_y: -global.screen_height, translation_y: -global.screen_height,
duration: Overview.ANIMATION_TIME, duration: Overview.ANIMATION_TIME,
@@ -538,6 +533,8 @@ var ScreenShield = class {
this._dialog = null; this._dialog = null;
} }
this._longLightbox.lightOff();
this._shortLightbox.lightOff();
this.actor.hide(); this.actor.hide();
if (this._becameActiveId != 0) { if (this._becameActiveId != 0) {

View File

@@ -7,13 +7,6 @@ const GrabHelper = imports.ui.grabHelper;
const Lightbox = imports.ui.lightbox; const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main; const Main = imports.ui.main;
Gio._promisify(Shell.Screenshot.prototype, 'pick_color', 'pick_color_finish');
Gio._promisify(Shell.Screenshot.prototype, 'screenshot', 'screenshot_finish');
Gio._promisify(Shell.Screenshot.prototype,
'screenshot_window', 'screenshot_window_finish');
Gio._promisify(Shell.Screenshot.prototype,
'screenshot_area', 'screenshot_area_finish');
const { loadInterfaceXML } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot'); const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot');
@@ -163,7 +156,7 @@ var ScreenshotService = class {
return [x, y, width, height]; return [x, y, width, height];
} }
async ScreenshotAreaAsync(params, invocation) { ScreenshotAreaAsync(params, invocation) {
let [x, y, width, height, flash, filename] = params; let [x, y, width, height, flash, filename] = params;
[x, y, width, height] = this._scaleArea(x, y, width, height); [x, y, width, height] = this._scaleArea(x, y, width, height);
if (!this._checkArea(x, y, width, height)) { if (!this._checkArea(x, y, width, height)) {
@@ -180,17 +173,21 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
try { screenshot.screenshot_area(x, y, width, height, stream,
let [area] = (o, res) => {
await screenshot.screenshot_area(x, y, width, height, stream); try {
this._onScreenshotComplete(area, stream, file, flash, invocation); let [success_, area] =
} catch (e) { screenshot.screenshot_area_finish(res);
this._removeShooterForSender(invocation.get_sender()); this._onScreenshotComplete(
invocation.return_value(new GLib.Variant('(bs)', [false, ''])); area, stream, file, flash, invocation);
} } catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
} }
async ScreenshotWindowAsync(params, invocation) { ScreenshotWindowAsync(params, invocation) {
let [includeFrame, includeCursor, flash, filename] = params; let [includeFrame, includeCursor, flash, filename] = params;
let screenshot = this._createScreenshot(invocation); let screenshot = this._createScreenshot(invocation);
if (!screenshot) if (!screenshot)
@@ -200,17 +197,21 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
try { screenshot.screenshot_window(includeFrame, includeCursor, stream,
let [area] = (o, res) => {
await screenshot.screenshot_window(includeFrame, includeCursor, stream); try {
this._onScreenshotComplete(area, stream, file, flash, invocation); let [success_, area] =
} catch (e) { screenshot.screenshot_window_finish(res);
this._removeShooterForSender(invocation.get_sender()); this._onScreenshotComplete(
invocation.return_value(new GLib.Variant('(bs)', [false, ''])); area, stream, file, flash, invocation);
} } catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
} }
async ScreenshotAsync(params, invocation) { ScreenshotAsync(params, invocation) {
let [includeCursor, flash, filename] = params; let [includeCursor, flash, filename] = params;
let screenshot = this._createScreenshot(invocation); let screenshot = this._createScreenshot(invocation);
if (!screenshot) if (!screenshot)
@@ -220,13 +221,18 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
try { screenshot.screenshot(includeCursor, stream,
let [area] = await screenshot.screenshot(includeCursor, stream); (o, res) => {
this._onScreenshotComplete(area, stream, file, flash, invocation); try {
} catch (e) { let [success_, area] =
this._removeShooterForSender(invocation.get_sender()); screenshot.screenshot_finish(res);
invocation.return_value(new GLib.Variant('(bs)', [false, ''])); this._onScreenshotComplete(
} area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
} }
async SelectAreaAsync(params, invocation) { async SelectAreaAsync(params, invocation) {
@@ -267,17 +273,19 @@ var ScreenshotService = class {
if (!screenshot) if (!screenshot)
return; return;
const [color] = await screenshot.pick_color(coords.x, coords.y); screenshot.pick_color(coords.x, coords.y, (_o, res) => {
const { red, green, blue } = color; let [success_, color] = screenshot.pick_color_finish(res);
const retval = GLib.Variant.new('(a{sv})', [{ let { red, green, blue } = color;
color: GLib.Variant.new('(ddd)', [ let retval = GLib.Variant.new('(a{sv})', [{
red / 255.0, color: GLib.Variant.new('(ddd)', [
green / 255.0, red / 255.0,
blue / 255.0, green / 255.0,
]), blue / 255.0,
}]); ]),
this._removeShooterForSender(invocation.get_sender()); }]);
invocation.return_value(retval); this._removeShooterForSender(invocation.get_sender());
invocation.return_value(retval);
});
} catch (e) { } catch (e) {
invocation.return_error_literal( invocation.return_error_literal(
Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED, Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,

View File

@@ -316,7 +316,17 @@ var GnomeShellExtensions = class {
} }
OpenExtensionPrefs(uuid, parentWindow, options) { OpenExtensionPrefs(uuid, parentWindow, options) {
Main.extensionManager.openExtensionPrefs(uuid, parentWindow, options); Gio.DBus.session.call(
'org.gnome.Shell.Extensions',
'/org/gnome/Shell/Extensions',
'org.gnome.Shell.Extensions',
'OpenExtensionPrefs',
new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]),
null,
Gio.DBusCallFlags.NONE,
-1,
null,
(conn, res) => conn.call_finish(res));
} }
ReloadExtensionAsync(params, invocation) { ReloadExtensionAsync(params, invocation) {

View File

@@ -72,45 +72,46 @@ class Indicator extends PanelMenu.SystemIndicator {
return null; return null;
} }
_getDeviceInfos(adapter) { // nDevices is the number of devices setup for the current default
// adapter if one exists and is powered. If unpowered or unavailable,
// nDevice is "1" if it had setup devices associated to it the last
// time it was seen, and "-1" if not.
//
// nConnectedDevices is the number of devices connected to the default
// adapter if one exists and is powered, or -1 if it's not available.
_getNDevices() {
let adapter = this._getDefaultAdapter();
if (!adapter) if (!adapter)
return []; return [this._hadSetupDevices ? 1 : -1, -1];
let deviceInfos = []; let nConnectedDevices = 0;
let nDevices = 0;
let [ret, iter] = this._model.iter_children(adapter); let [ret, iter] = this._model.iter_children(adapter);
while (ret) { while (ret) {
const isPaired = this._model.get_value(iter, let isConnected = this._model.get_value(iter,
GnomeBluetooth.Column.PAIRED); GnomeBluetooth.Column.CONNECTED);
const isTrusted = this._model.get_value(iter, if (isConnected)
GnomeBluetooth.Column.TRUSTED); nConnectedDevices++;
if (isPaired || isTrusted) {
deviceInfos.push({
connected: this._model.get_value(iter,
GnomeBluetooth.Column.CONNECTED),
name: this._model.get_value(iter,
GnomeBluetooth.Column.ALIAS),
});
}
let isPaired = this._model.get_value(iter,
GnomeBluetooth.Column.PAIRED);
let isTrusted = this._model.get_value(iter,
GnomeBluetooth.Column.TRUSTED);
if (isPaired || isTrusted)
nDevices++;
ret = this._model.iter_next(iter); ret = this._model.iter_next(iter);
} }
if (this._hadSetupDevices !== (deviceInfos.length > 0)) { if (this._hadSetupDevices != (nDevices > 0)) {
this._hadSetupDevices = !this._hadSetupDevices; this._hadSetupDevices = !this._hadSetupDevices;
global.settings.set_boolean(HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices); global.settings.set_boolean(HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices);
} }
return deviceInfos; return [nDevices, nConnectedDevices];
} }
_sync() { _sync() {
let adapter = this._getDefaultAdapter(); let [nDevices, nConnectedDevices] = this._getNDevices();
let devices = this._getDeviceInfos(adapter);
const connectedDevices = devices.filter(dev => dev.connected);
const nConnectedDevices = connectedDevices.length;
const nDevices = devices.length;
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter; let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive); this.menu.setSensitive(sensitive);
@@ -123,16 +124,14 @@ class Indicator extends PanelMenu.SystemIndicator {
else else
this._item.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode; this._item.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
if (nConnectedDevices > 1) if (nConnectedDevices > 0)
/* Translators: this is the number of connected bluetooth devices */ /* Translators: this is the number of connected bluetooth devices */
this._item.label.text = ngettext('%d Connected", "%d Connected', nConnectedDevices).format(nConnectedDevices); this._item.label.text = ngettext("%d Connected", "%d Connected", nConnectedDevices).format(nConnectedDevices);
else if (nConnectedDevices === 1) else if (nConnectedDevices == -1)
this._item.label.text = connectedDevices[0].name; this._item.label.text = _("Off");
else if (adapter === null)
this._item.label.text = _('Bluetooth Off');
else else
this._item.label.text = _('Bluetooth On'); this._item.label.text = _("On");
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _('Turn On') : _('Turn Off'); this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
} }
}); });

View File

@@ -199,36 +199,36 @@ var InputSourceSystemSettings = class extends InputSourceSettings {
this._reload.bind(this)); this._reload.bind(this));
} }
async _reload() { _reload() {
let props; Gio.DBus.system.call(this._BUS_NAME,
try { this._BUS_PATH,
const result = await Gio.DBus.system.call( this._BUS_PROPS_IFACE,
this._BUS_NAME, 'GetAll',
this._BUS_PATH, new GLib.Variant('(s)', [this._BUS_IFACE]),
this._BUS_PROPS_IFACE, null, Gio.DBusCallFlags.NONE, -1, null,
'GetAll', (conn, result) => {
new GLib.Variant('(s)', [this._BUS_IFACE]), let props;
null, Gio.DBusCallFlags.NONE, -1, null); try {
[props] = result.deep_unpack(); props = conn.call_finish(result).deep_unpack()[0];
} catch (e) { } catch (e) {
log('Could not get properties from %s'.format(this._BUS_NAME)); log('Could not get properties from %s'.format(this._BUS_NAME));
return; return;
} }
let layouts = props['X11Layout'].unpack();
let variants = props['X11Variant'].unpack();
let options = props['X11Options'].unpack();
const layouts = props['X11Layout'].unpack(); if (layouts != this._layouts ||
const variants = props['X11Variant'].unpack(); variants != this._variants) {
const options = props['X11Options'].unpack(); this._layouts = layouts;
this._variants = variants;
if (layouts !== this._layouts || this._emitInputSourcesChanged();
variants !== this._variants) { }
this._layouts = layouts; if (options != this._options) {
this._variants = variants; this._options = options;
this._emitInputSourcesChanged(); this._emitKeyboardOptionsChanged();
} }
if (options !== this._options) { });
this._options = options;
this._emitKeyboardOptionsChanged();
}
} }
get inputSources() { get inputSources() {

View File

@@ -15,10 +15,6 @@ const Util = imports.misc.util;
const { loadInterfaceXML } = imports.misc.fileUtils; const { loadInterfaceXML } = imports.misc.fileUtils;
Gio._promisify(NM.Client, 'new_async', 'new_finish');
Gio._promisify(NM.Client.prototype,
'check_connectivity_async', 'check_connectivity_finish');
const NMConnectionCategory = { const NMConnectionCategory = {
INVALID: 'invalid', INVALID: 'invalid',
WIRED: 'wired', WIRED: 'wired',
@@ -1631,11 +1627,11 @@ class Indicator extends PanelMenu.SystemIndicator {
this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN; this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN; this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
this._getClient(); NM.Client.new_async(null, this._clientGot.bind(this));
} }
async _getClient() { _clientGot(obj, result) {
this._client = await NM.Client.new_async(null); this._client = NM.Client.new_finish(result);
this._activeConnections = []; this._activeConnections = [];
this._connections = []; this._connections = [];
@@ -1986,7 +1982,7 @@ class Indicator extends PanelMenu.SystemIndicator {
} }
} }
async _portalHelperDone(proxy, emitter, parameters) { _portalHelperDone(proxy, emitter, parameters) {
let [path, result] = parameters; let [path, result] = parameters;
if (result == PortalHelperResult.CANCELLED) { if (result == PortalHelperResult.CANCELLED) {
@@ -1997,11 +1993,13 @@ class Indicator extends PanelMenu.SystemIndicator {
} else if (result == PortalHelperResult.COMPLETED) { } else if (result == PortalHelperResult.COMPLETED) {
this._closeConnectivityCheck(path); this._closeConnectivityCheck(path);
} else if (result == PortalHelperResult.RECHECK) { } else if (result == PortalHelperResult.RECHECK) {
try { this._client.check_connectivity_async(null, (client, res) => {
const state = await this._client.check_connectivity_async(null); try {
if (state >= NM.ConnectivityState.FULL) let state = client.check_connectivity_finish(res);
this._closeConnectivityCheck(path); if (state >= NM.ConnectivityState.FULL)
} catch (e) { } this._closeConnectivityCheck(path);
} catch (e) { }
});
} else { } else {
log('Invalid result from portal helper: %s'.format(result)); log('Invalid result from portal helper: %s'.format(result));
} }

View File

@@ -52,21 +52,22 @@ const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
var Client = class { var Client = class {
constructor() { constructor() {
this._proxy = null; this._proxy = null;
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
Gio.DBusProxy.new(Gio.DBus.system,
Gio.DBusProxyFlags.DO_NOT_AUTO_START,
nodeInfo.lookup_interface(BOLT_DBUS_CLIENT_IFACE),
BOLT_DBUS_NAME,
BOLT_DBUS_PATH,
BOLT_DBUS_CLIENT_IFACE,
null,
this._onProxyReady.bind(this));
this.probing = false; this.probing = false;
this._getProxy();
} }
async _getProxy() { _onProxyReady(o, res) {
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
try { try {
this._proxy = await Gio.DBusProxy.new( this._proxy = Gio.DBusProxy.new_finish(res);
Gio.DBus.system,
Gio.DBusProxyFlags.DO_NOT_AUTO_START,
nodeInfo.lookup_interface(BOLT_DBUS_CLIENT_IFACE),
BOLT_DBUS_NAME,
BOLT_DBUS_PATH,
BOLT_DBUS_CLIENT_IFACE,
null);
} catch (e) { } catch (e) {
log('error creating bolt proxy: %s'.format(e.message)); log('error creating bolt proxy: %s'.format(e.message));
return; return;
@@ -242,15 +243,14 @@ class Indicator extends PanelMenu.SystemIndicator {
this._source = null; this._source = null;
this._perm = null; this._perm = null;
this._createPermission();
}
async _createPermission() { Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null, (source, res) => {
try { try {
this._perm = await Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null); this._perm = Polkit.Permission.new_finish(res);
} catch (e) { } catch (e) {
log('Failed to get PolKit permission: %s'.format(e.toString())); log('Failed to get PolKit permission: %s'.format(e.toString()));
} }
});
} }
_onDestroy() { _onDestroy() {

View File

@@ -404,7 +404,7 @@ var WindowClone = GObject.registerClass({
return true; return true;
} }
return super.vfunc_key_press_event(keyEvent); return super.key_press_event(keyEvent);
} }
_onClicked() { _onClicked() {

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.37.0', version: '3.36.1',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

411
po/eu.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n" "POT-Creation-Date: 2020-03-21 18:07+0000\n"
"PO-Revision-Date: 2020-04-02 12:15+0100\n" "PO-Revision-Date: 2020-03-24 15:55+0100\n"
"Last-Translator: Ibai Oihanguren Sala <ibai@oihanguren.com>\n" "Last-Translator: Ibai Oihanguren Sala <ibai@oihanguren.com>\n"
"Language-Team: Basque <librezale@librezale.eus>\n" "Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n" "Language: eu\n"
@@ -392,12 +392,62 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Sareko saio-hasiera" msgstr "Sareko saio-hasiera"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/ui/extensions-window.ui:223 #: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:241
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Hedapenak"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:242
msgid "Manage your GNOME Extensions"
msgstr "Kudeatu zure GNOME hedapenak"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfiguratu GNOME Shell-eko gehigarriak"
#: js/extensionPrefs/js/main.js:163
#, javascript-format
msgid "Remove “%s”?"
msgstr "Kendu “%s”?"
#: js/extensionPrefs/js/main.js:164
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Hedapena kentzen bada, berriro deskargatu beharko da atzera gaitu nahi bada."
#: js/extensionPrefs/js/main.js:167 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Utzi"
#: js/extensionPrefs/js/main.js:168
msgid "Remove"
msgstr "Kendu"
#: js/extensionPrefs/js/main.js:240
msgid "translator-credits"
msgstr "translator-credits"
#: js/extensionPrefs/js/main.js:284
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Zerbait gaizki joan da" msgstr "Zerbait gaizki joan da"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48 #: js/extensionPrefs/js/main.js:291
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -406,25 +456,104 @@ msgstr ""
"Barkatu, arazo bat gertatu da: hedapen honen ezarpenak ezin dira erakutsi. " "Barkatu, arazo bat gertatu da: hedapen honen ezarpenak ezin dira erakutsi. "
"Arazoa hedapenaren egileei jakinarazi diezaiezun gomendatzen dizugu." "Arazoa hedapenaren egileei jakinarazi diezaiezun gomendatzen dizugu."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82 #: js/extensionPrefs/js/main.js:298
msgid "Technical Details" msgid "Technical Details"
msgstr "Xehetasun teknikoak" msgstr "Xehetasun teknikoak"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165 #: js/extensionPrefs/js/main.js:333
msgid "Copy Error"
msgstr "Kopiatze-errorea"
#: js/extensionPrefs/js/main.js:360
msgid "Homepage" msgid "Homepage"
msgstr "Webgune nagusia" msgstr "Webgune nagusia"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166 #: js/extensionPrefs/js/main.js:361
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Bisitatu hedapenaren webgunea" msgstr "Bisitatu hedapenaren webgunea"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57 #: js/extensionPrefs/js/main.js:478
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139 #, javascript-format
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181 msgid "%d extension will be updated on next login."
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 msgid_plural "%d extensions will be updated on next login."
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148 msgstr[0] "Hedapen %d eguneratuko da hurrengo saio-hasieran."
msgid "Cancel" msgstr[1] "%d hedapen eguneratuko dira hurrengo saio-hasieran."
msgstr "Utzi"
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Azalpena"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Bertsioa"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Egilea"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webgunea"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Kendu…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Laguntza"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Hedapenei buruz"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Hedapenak aurkitu eta gehitzeko, bisitatu <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Abisua"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Hedapenek arazoak sor ditzakete sisteman, errendimendu-arazoak barne. "
"Sisteman arazoak aurkitzen badituzu, desgaitu hedapen guztiak."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Eskuz instalatua"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Integratua"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Instalatu gabeko luzapenak"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Barkatu, ezin izan da instalatutako hedapenen zerrenda eskuratu. Ziurtatu "
"GNOMEn saioa hasi duzula eta saiatu berriro."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Amaitu saioa…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@@ -706,44 +835,44 @@ msgstr "Ukatu sarbidea"
msgid "Grant Access" msgid "Grant Access"
msgstr "Baimendu sarbidea" msgstr "Baimendu sarbidea"
#: js/ui/appDisplay.js:932 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Izenik gabeko karpeta" msgstr "Izenik gabeko karpeta"
#: js/ui/appDisplay.js:955 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Maiztasunez erabilitako aplikazioak hemen agertuko dira" msgstr "Maiztasunez erabilitako aplikazioak hemen agertuko dira"
#: js/ui/appDisplay.js:1090 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Erabilienak" msgstr "Erabilienak"
#: js/ui/appDisplay.js:1097 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Denak" msgstr "Denak"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Leiho irekiak" msgstr "Leiho irekiak"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "_Leiho berria" msgstr "_Leiho berria"
#: js/ui/appDisplay.js:2504 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Abiarazi eskainitako txartel grafikoa erabiliz" msgstr "Abiarazi eskainitako txartel grafikoa erabiliz"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Kendu gogokoetatik" msgstr "Kendu gogokoetatik"
#: js/ui/appDisplay.js:2538 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Gehitu gogokoei" msgstr "Gehitu gogokoei"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Erakutsi xehetasunak" msgstr "Erakutsi xehetasunak"
@@ -773,7 +902,7 @@ msgstr "Aurikularrak"
msgid "Headset" msgid "Headset"
msgstr "Aurikular+mikrofonoa" msgstr "Aurikular+mikrofonoa"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofonoa" msgstr "Mikrofonoa"
@@ -803,7 +932,7 @@ msgstr "06"
#: js/ui/calendar.js:70 #: js/ui/calendar.js:70
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "I" msgstr "S"
#. Translators: Calendar grid abbreviation for Monday #. Translators: Calendar grid abbreviation for Monday
#: js/ui/calendar.js:72 #: js/ui/calendar.js:72
@@ -827,7 +956,7 @@ msgstr "A"
#: js/ui/calendar.js:78 #: js/ui/calendar.js:78
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "O" msgstr "A"
#. Translators: Calendar grid abbreviation for Friday #. Translators: Calendar grid abbreviation for Friday
#: js/ui/calendar.js:80 #: js/ui/calendar.js:80
@@ -839,7 +968,7 @@ msgstr "O"
#: js/ui/calendar.js:82 #: js/ui/calendar.js:82
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "L" msgstr "S"
#. * #. *
#. * Translators: The header displaying just the month name #. * Translators: The header displaying just the month name
@@ -914,7 +1043,7 @@ msgstr "Gertaerarik ez"
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Ez gogaitu" msgstr "Ez gogaitu"
#: js/ui/calendar.js:1176 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Garbitu" msgstr "Garbitu"
@@ -1062,7 +1191,7 @@ msgstr "Huts egin du. Saiatu berriro."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: js/ui/components/telepathyClient.js:823 #: js/ui/components/telepathyClient.js:787
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s orain %s izenarekin ezagutzen da" msgstr "%s orain %s izenarekin ezagutzen da"
@@ -1110,102 +1239,102 @@ msgstr "Munduko erlojuak"
msgid "Weather" msgid "Weather"
msgstr "Eguraldia" msgstr "Eguraldia"
#: js/ui/dateMenu.js:418 #: js/ui/dateMenu.js:404
msgid "Select a location…" msgid "Select a location…"
msgstr "Hautatu kokalekua…" msgstr "Hautatu kokalekua…"
#: js/ui/dateMenu.js:426 #: js/ui/dateMenu.js:417
msgid "Loading…" msgid "Loading…"
msgstr "Kargatzen…" msgstr "Kargatzen…"
#: js/ui/dateMenu.js:436 #: js/ui/dateMenu.js:427
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Konektatu eguraldiaren informazioa lortzeko" msgstr "Konektatu eguraldiaren informazioa lortzeko"
#: js/ui/dateMenu.js:438 #: js/ui/dateMenu.js:429
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Eguraldiaren informazioa unean ez dago eskuragarri" msgstr "Eguraldiaren informazioa unean ez dago eskuragarri"
#: js/ui/endSessionDialog.js:39 #: js/ui/endSessionDialog.js:37
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Amaitu %s(r)en saioa" msgstr "Amaitu %s(r)en saioa"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:38
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Amaitu saioa" msgstr "Amaitu saioa"
#: js/ui/endSessionDialog.js:42 #: js/ui/endSessionDialog.js:40
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da." msgstr[0] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da."
msgstr[1] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da." msgstr[1] "%s erabiltzailearen saioa automatikoki %d segundotan amaituko da."
#: js/ui/endSessionDialog.js:47 #: js/ui/endSessionDialog.js:45
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Zure saioa automatikoki %d segundotan amaituko da." msgstr[0] "Zure saioa automatikoki %d segundotan amaituko da."
msgstr[1] "Zure saioa automatikoki %d segundotan amaituko da." msgstr[1] "Zure saioa automatikoki %d segundotan amaituko da."
#: js/ui/endSessionDialog.js:53 #: js/ui/endSessionDialog.js:51
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Amaitu saioa" msgstr "Amaitu saioa"
#: js/ui/endSessionDialog.js:58 #: js/ui/endSessionDialog.js:56
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Itzali" msgstr "Itzali"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:57
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "Instalatu eguneraketak eta itzali" msgstr "Instalatu eguneraketak eta itzali"
#: js/ui/endSessionDialog.js:61 #: js/ui/endSessionDialog.js:59
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Sistema automatikoki segundo %dean itzaliko da." msgstr[0] "Sistema automatikoki segundo %dean itzaliko da."
msgstr[1] "Sistema automatikoki %d segundotan itzaliko da." msgstr[1] "Sistema automatikoki %d segundotan itzaliko da."
#: js/ui/endSessionDialog.js:65 #: js/ui/endSessionDialog.js:63
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Instalatu falta diren softwareen eguneraketak" msgstr "Instalatu falta diren softwareen eguneraketak"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84 #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Berrabiarazi" msgstr "Berrabiarazi"
#: js/ui/endSessionDialog.js:70 #: js/ui/endSessionDialog.js:68
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Itzali" msgstr "Itzali"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:74
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Berrabiarazi" msgstr "Berrabiarazi"
#: js/ui/endSessionDialog.js:78 #: js/ui/endSessionDialog.js:76
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Sistema automatikoki segundo %dean berrabiaraziko da." msgstr[0] "Sistema automatikoki segundo %dean berrabiaraziko da."
msgstr[1] "Sistema automatikoki %d segundotan berrabiaraziko da." msgstr[1] "Sistema automatikoki %d segundotan berrabiaraziko da."
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:89
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Berrabiarazi eta instalatu eguneraketak" msgstr "Berrabiarazi eta instalatu eguneraketak"
#: js/ui/endSessionDialog.js:93 #: js/ui/endSessionDialog.js:91
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@@ -1217,22 +1346,22 @@ msgstr[1] ""
"Sistema automatikoki berrabiaraziko da eta eguneraketak instalatuko ditu %d " "Sistema automatikoki berrabiaraziko da eta eguneraketak instalatuko ditu %d "
"segundotan." "segundotan."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118 #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Berrabiarazi eta instalatu" msgstr "Berrabiarazi eta instalatu"
#: js/ui/endSessionDialog.js:100 #: js/ui/endSessionDialog.js:98
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "Instalatu eta itzali" msgstr "Instalatu eta itzali"
#: js/ui/endSessionDialog.js:101 #: js/ui/endSessionDialog.js:99
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Itzali eguneraketa guztiak instalatu ondoren" msgstr "Itzali eguneraketa guztiak instalatu ondoren"
#: js/ui/endSessionDialog.js:108 #: js/ui/endSessionDialog.js:106
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Berrabiarazi eta instalatu bertsio-berritzea" msgstr "Berrabiarazi eta instalatu bertsio-berritzea"
@@ -1240,7 +1369,7 @@ msgstr "Berrabiarazi eta instalatu bertsio-berritzea"
#. Translators: This is the text displayed for system upgrades in the #. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and #. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to #. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113 #: js/ui/endSessionDialog.js:111
#, javascript-format #, javascript-format
msgid "" msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long " "%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1250,15 +1379,15 @@ msgstr ""
"denbora luzea beharko du, ziurtatu zaitez babeskopia eginda daukazula eta " "denbora luzea beharko du, ziurtatu zaitez babeskopia eginda daukazula eta "
"ordenagailua entxufatuta dagoela." "ordenagailua entxufatuta dagoela."
#: js/ui/endSessionDialog.js:261 #: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates." msgid "Running on battery power: Please plug in before installing updates."
msgstr "Bateriarekin lanean: entxufatu eguneraketak instalatu aurretik." msgstr "Bateriarekin lanean: entxufatu eguneraketak instalatu aurretik."
#: js/ui/endSessionDialog.js:270 #: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "Aplikazio batzuk lanpetuta daude edo gorde gabeko lanak dituzte." msgstr "Aplikazio batzuk lanpetuta daude edo gorde gabeko lanak dituzte."
#: js/ui/endSessionDialog.js:275 #: js/ui/endSessionDialog.js:273
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Beste erabiltzaile batzuek saioa hasita dute." msgstr "Beste erabiltzaile batzuek saioa hasita dute."
@@ -1274,24 +1403,24 @@ msgstr "%s (urrunekoa)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (kontsola)" msgstr "%s (kontsola)"
#: js/ui/extensionDownloader.js:185 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Instalatu" msgstr "Instalatu"
#: js/ui/extensionDownloader.js:191 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Instalatu hedapena" msgstr "Instalatu hedapena"
#: js/ui/extensionDownloader.js:192 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Deskargatu eta instalatu “%s” extensions.gnome.org gunetik?" msgstr "Deskargatu eta instalatu “%s” extensions.gnome.org gunetik?"
#: js/ui/extensionSystem.js:233 #: js/ui/extensionSystem.js:228
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Hedapenen eguneraketak eskuragarri" msgstr "Hedapenen eguneraketak eskuragarri"
#: js/ui/extensionSystem.js:234 #: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Hedapenen eguneraketak instalatzeko prest daude." msgstr "Hedapenen eguneraketak instalatzeko prest daude."
@@ -1440,11 +1569,11 @@ msgstr "Ikusi iturburua"
msgid "Web Page" msgid "Web Page"
msgstr "Web orria" msgstr "Web orria"
#: js/ui/main.js:277 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Erabiltzaile pribilegiatu gisa saioa hasita" msgstr "Erabiltzaile pribilegiatu gisa saioa hasita"
#: js/ui/main.js:278 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1453,15 +1582,15 @@ msgstr ""
"litzateke segurtasuneko arrazoiak direla eta. Posible bada, erabiltzaile " "litzateke segurtasuneko arrazoiak direla eta. Posible bada, erabiltzaile "
"arrunt gisa hasi beharko zenuke saioa." "arrunt gisa hasi beharko zenuke saioa."
#: js/ui/main.js:317 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Pantailaren blokeoa desgaituta dago" msgstr "Pantailaren blokeoa desgaituta dago"
#: js/ui/main.js:318 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Pantaila blokeatzeko GNOMEren pantaila-kudeatzailea behar da." msgstr "Pantaila blokeatzeko GNOMEren pantaila-kudeatzailea behar da."
#: js/ui/messageTray.js:1551 #: js/ui/messageTray.js:1554
msgid "System Information" msgid "System Information"
msgstr "Sistemaren informazioa" msgstr "Sistemaren informazioa"
@@ -1668,13 +1797,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM balioak zenbaki bat izan behar du edo hutsik egon behar du." msgstr "PIM balioak zenbaki bat izan behar du edo hutsik egon behar du."
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465 #: js/ui/shellMountOperation.js:469
#, javascript-format #, javascript-format
msgid "Unable to start %s" msgid "Unable to start %s"
msgstr "Ezin da %s abiarazi" msgstr "Ezin da %s abiarazi"
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467 #: js/ui/shellMountOperation.js:471
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "Ez da %s aplikazioa aurkitu" msgstr "Ez da %s aplikazioa aurkitu"
@@ -2149,11 +2278,11 @@ msgstr "Thunderbolt baimen-errorea"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Ezin izan da Thunderbolt gailua baimendu: %s" msgstr "Ezin izan da Thunderbolt gailua baimendu: %s"
#: js/ui/status/volume.js:151 #: js/ui/status/volume.js:150
msgid "Volume changed" msgid "Volume changed"
msgstr "Bolumena aldatuta" msgstr "Bolumena aldatuta"
#: js/ui/status/volume.js:222 #: js/ui/status/volume.js:221
msgid "Volume" msgid "Volume"
msgstr "Bolumena" msgstr "Bolumena"
@@ -2187,23 +2316,23 @@ msgstr "Barnekoa soilik"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:371 #: js/ui/unlockDialog.js:370
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A %B %-d" msgstr "%A %B %-d"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Igaro hatza desblokeatzeko" msgstr "Igaro hatza desblokeatzeko"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Egin klik edo sakatu tekla bat desblokeatzeko" msgstr "Egin klik edo sakatu tekla bat desblokeatzeko"
#: js/ui/unlockDialog.js:550 #: js/ui/unlockDialog.js:549
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desblokeatu leihoa" msgstr "Desblokeatu leihoa"
#: js/ui/unlockDialog.js:559 #: js/ui/unlockDialog.js:558
msgid "Log in as another user" msgid "Log in as another user"
msgstr "Hasi saioa beste erabiltzaile baten gisan" msgstr "Hasi saioa beste erabiltzaile baten gisan"
@@ -2360,131 +2489,6 @@ msgstr "Pasahitza ezin da hutsa izan"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Erabiltzaileak autentifikatzeko elkarrizketa-koadroa itxi du" msgstr "Erabiltzaileak autentifikatzeko elkarrizketa-koadroa itxi du"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Hedapenak"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "Kudeatu zure GNOME hedapenak"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfiguratu GNOME Shell-eko gehigarriak"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Kendu “%s”?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Hedapena kentzen bada, berriro deskargatu beharko da atzera gaitu nahi bada."
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Kendu"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr "translator-credits"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "Hedapen %d eguneratuko da hurrengo saio-hasieran."
msgstr[1] "%d hedapen eguneratuko dira hurrengo saio-hasieran."
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Azalpena"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Bertsioa"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Egilea"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webgunea"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Kendu…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Laguntza"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Hedapenei buruz"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Hedapenak aurkitu eta gehitzeko, bisitatu <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Abisua"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Hedapenek arazoak sor ditzakete sisteman, errendimendu-arazoak barne. "
"Sisteman arazoak aurkitzen badituzu, desgaitu hedapen guztiak."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Eskuz instalatua"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Integratua"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Instalatu gabeko luzapenak"
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Barkatu, ezin izan da instalatutako hedapenen zerrenda eskuratu. Ziurtatu "
"GNOMEn saioa hasi duzula eta saiatu berriro."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Amaitu saioa…"
#. Translators: a file path to an extension directory #. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125 #: subprojects/extensions-tool/src/command-create.c:125
#, c-format #, c-format
@@ -2822,9 +2826,6 @@ msgstr[1] "%u sarrera"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sistemaren soinuak" msgstr "Sistemaren soinuak"
#~ msgid "Copy Error"
#~ msgstr "Kopiatze-errorea"
#~ msgid "Next" #~ msgid "Next"
#~ msgstr "Hurrengoa" #~ msgstr "Hurrengoa"

485
po/fi.po
View File

@@ -25,8 +25,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n" "POT-Creation-Date: 2020-02-21 09:52+0000\n"
"PO-Revision-Date: 2020-04-02 12:43+0300\n" "PO-Revision-Date: 2020-02-22 17:34+0200\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n" "Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n" "Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n" "Language: fi\n"
@@ -63,6 +63,15 @@ msgstr "Näytä kaikki sovellukset"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Avaa sovellusvalikko" msgstr "Avaa sovellusvalikko"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Laajennukset"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Hallitse Gnome Shell -laajennuksia"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "Gnome Shell" msgstr "Gnome Shell"
@@ -420,12 +429,44 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Verkkokirjautuminen" msgstr "Verkkokirjautuminen"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36 #: js/extensionPrefs/main.js:140
#: subprojects/extensions-app/data/ui/extensions-window.ui:223 #, javascript-format
msgid "Remove “%s”?"
msgstr "Poista “%s”?"
#: js/extensionPrefs/main.js:141
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Ota huomioon jos poistat laajennuksen; sinun tulee palata ja ladata se "
"uudelleen, jos haluat sen uudelleen käyttöön"
#: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Peru"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "Poista"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr "Jiri Grönroos"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "Hallitse Gnome-laajennuksia"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Jokin meni pieleen" msgstr "Jokin meni pieleen"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48 #: js/extensionPrefs/main.js:268
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -434,31 +475,111 @@ msgstr ""
"Ongelma havaittu: tämän laajennuksen asetuksia ei voi näyttää. Suosittelemme " "Ongelma havaittu: tämän laajennuksen asetuksia ei voi näyttää. Suosittelemme "
"ilmoittamaan ongelmasta laajennuksen tekijälle." "ilmoittamaan ongelmasta laajennuksen tekijälle."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82 #: js/extensionPrefs/main.js:275
msgid "Technical Details" msgid "Technical Details"
msgstr "Tekniset tiedot" msgstr "Tekniset tiedot"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165 #: js/extensionPrefs/main.js:310
msgid "Copy Error"
msgstr "Kopiointivirhe"
#: js/extensionPrefs/main.js:337
msgid "Homepage" msgid "Homepage"
msgstr "Verkkosivu" msgstr "Verkkosivu"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166 #: js/extensionPrefs/main.js:338
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Käy laajennuksen verkkosivulla" msgstr "Käy laajennuksen verkkosivulla"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57 #: js/extensionPrefs/main.js:449
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139 #, javascript-format
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181 msgid "%d extension will be updated on next login."
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 msgid_plural "%d extensions will be updated on next login."
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148 msgstr[0] "%d laajennus päivitetään seuraavan kerran, kun kirjaudut sisään."
msgid "Cancel" msgstr[1] "%d laajennusta päivitetään seuraavan kerran, kun kirjaudut sisään."
msgstr "Peru"
#: js/extensionPrefs/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Kuvaus"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versio"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "Tekijä"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "Verkkosivusto"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Poista…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "Tuki"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Tietoja - Laajennukset"
#: js/extensionPrefs/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Etsi ja asenna laajennuksia osoitteessa <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Varoitus"
#: js/extensionPrefs/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Laajennukset voivat aiheuttaa ongelmia järjestelmässä, myös suorituskykyyn. "
"Jos kohtaat ongelmia järjestelmän kanssa, on suositeltavaa poistaa kaikki "
"laajennukset käytöstä."
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "Manuaalisesti asennettu"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "Sisäänrakennettu"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "Ei asennettuja laajennuksia"
#: js/extensionPrefs/ui/extensions-window.ui:234
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Valitettavasti asennettujen laajennusten listaa ei voitu muodostaa. Varmista "
"että olet kirjautunut Gnomeen ja yritä uudelleen."
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "Kirjaudu ulos…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204 #: js/gdm/authPrompt.js:236 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244 #: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Salasana" msgstr "Salasana"
@@ -481,8 +602,8 @@ msgstr "(esim. käyttäjä tai %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username" msgid "Username"
msgstr "Käyttäjätunnus" msgstr "Käyttäjätunnus"
@@ -736,44 +857,44 @@ msgstr "Estä pääsy"
msgid "Grant Access" msgid "Grant Access"
msgstr "Salli pääsy" msgstr "Salli pääsy"
#: js/ui/appDisplay.js:932 #: js/ui/appDisplay.js:906
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Nimetön kansio" msgstr "Nimetön kansio"
#: js/ui/appDisplay.js:955 #: js/ui/appDisplay.js:929
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Usein käytetyt sovellukset ilmestyvät tänne" msgstr "Usein käytetyt sovellukset ilmestyvät tänne"
#: js/ui/appDisplay.js:1090 #: js/ui/appDisplay.js:1064
msgid "Frequent" msgid "Frequent"
msgstr "Käytetyimmät" msgstr "Käytetyimmät"
#: js/ui/appDisplay.js:1097 #: js/ui/appDisplay.js:1071
msgid "All" msgid "All"
msgstr "Kaikki" msgstr "Kaikki"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75 #: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Avoimet ikkunat" msgstr "Avoimet ikkunat"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82 #: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Uusi ikkuna" msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:2504 #: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen" msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239 #: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Poista suosikeista" msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:2538 #: js/ui/appDisplay.js:2515
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Lisää suosikkeihin" msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93 #: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Näytä tiedot" msgstr "Näytä tiedot"
@@ -803,7 +924,7 @@ msgstr "Kuulokkeet"
msgid "Headset" msgid "Headset"
msgstr "Headset-kuulokkeet" msgstr "Headset-kuulokkeet"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofoni" msgstr "Mikrofoni"
@@ -921,30 +1042,30 @@ msgid "All Day"
msgstr "Koko päivä" msgstr "Koko päivä"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:868 #: js/ui/calendar.js:867
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %-d. %Bta" msgstr "%A, %-d. %Bta"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:871 #: js/ui/calendar.js:870
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %-d. %Bta %Y" msgstr "%A, %-d. %Bta %Y"
#: js/ui/calendar.js:1100 #: js/ui/calendar.js:1096
msgid "No Notifications" msgid "No Notifications"
msgstr "Ei ilmoituksia" msgstr "Ei ilmoituksia"
#: js/ui/calendar.js:1103 #: js/ui/calendar.js:1099
msgid "No Events" msgid "No Events"
msgstr "Ei tapahtumia" msgstr "Ei tapahtumia"
#: js/ui/calendar.js:1157 #: js/ui/calendar.js:1153
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Älä häiritse" msgstr "Älä häiritse"
#: js/ui/calendar.js:1176 #: js/ui/calendar.js:1167
msgid "Clear" msgid "Clear"
msgstr "Tyhjennä" msgstr "Tyhjennä"
@@ -991,81 +1112,81 @@ msgstr "Asennettu udisks-versio ei tue PIM-asetusta"
msgid "Open with %s" msgid "Open with %s"
msgstr "Avaa käyttäen sovellusta %s" msgstr "Avaa käyttäen sovellusta %s"
#: js/ui/components/networkAgent.js:91 #: js/ui/components/networkAgent.js:89
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Vaihtoehtoisesti voit yhdistää painamalla reitittimesi “WPS”-painiketta." "Vaihtoehtoisesti voit yhdistää painamalla reitittimesi “WPS”-painiketta."
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Yhdistä" msgstr "Yhdistä"
#: js/ui/components/networkAgent.js:210 #: js/ui/components/networkAgent.js:208
msgid "Key" msgid "Key"
msgstr "Avain" msgstr "Avain"
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271 #: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password" msgid "Private key password"
msgstr "Yksityisen avaimen salasana" msgstr "Yksityisen avaimen salasana"
#: js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:267
msgid "Identity" msgid "Identity"
msgstr "Identiteetti" msgstr "Identiteetti"
#: js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:281
msgid "Service" msgid "Service"
msgstr "Palvelu" msgstr "Palvelu"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340 #: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required" msgid "Authentication required"
msgstr "Tunnistautuminen vaaditaan" msgstr "Tunnistautuminen vaaditaan"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
"“%s”." "“%s”."
msgstr "Langaton verkko \"%s\" vaatii salasanan tai salausavaimia." msgstr "Langaton verkko \"%s\" vaatii salasanan tai salausavaimia."
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684 #: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen" msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
#: js/ui/components/networkAgent.js:319 #: js/ui/components/networkAgent.js:317
msgid "Network name" msgid "Network name"
msgstr "Verkon nimi" msgstr "Verkon nimi"
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688 #: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-tunnistautuminen" msgstr "DSL-tunnistautuminen"
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693 #: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-koodi vaaditaan" msgstr "PIN-koodi vaaditaan"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobiililaajakaista vaatii PIN-koodin" msgstr "Mobiililaajakaista vaatii PIN-koodin"
#: js/ui/components/networkAgent.js:333 #: js/ui/components/networkAgent.js:331
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685 #: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701 #: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:705 #: js/ui/components/networkAgent.js:711
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi." msgstr "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi."
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Verkon hallinta" msgstr "Verkon hallinta"
#: js/ui/components/networkAgent.js:704 #: js/ui/components/networkAgent.js:710
msgid "VPN password" msgid "VPN password"
msgstr "VPN-salasana" msgstr "VPN-salasana"
@@ -1091,7 +1212,7 @@ msgstr "Kirjautuminen epäonnistui. Yritä uudelleen."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: js/ui/components/telepathyClient.js:823 #: js/ui/components/telepathyClient.js:787
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s on nyt nimeltään %s" msgstr "%s on nyt nimeltään %s"
@@ -1135,94 +1256,94 @@ msgstr "Lisää maailmankelloja…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Maailmankellot" msgstr "Maailmankellot"
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:276
msgid "Weather" msgid "Weather"
msgstr "Sää" msgstr "Sää"
#: js/ui/dateMenu.js:418 #: js/ui/dateMenu.js:391
msgid "Select a location…" msgid "Select a location…"
msgstr "Valitse sijainti…" msgstr "Valitse sijainti…"
#: js/ui/dateMenu.js:426 #: js/ui/dateMenu.js:404
msgid "Loading…" msgid "Loading…"
msgstr "Ladataan…" msgstr "Ladataan…"
#: js/ui/dateMenu.js:436 #: js/ui/dateMenu.js:414
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Yhdistä verkkoon saadaksesi säätietoja" msgstr "Yhdistä verkkoon saadaksesi säätietoja"
#: js/ui/dateMenu.js:438 #: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Säätiedot eivät ole juuri nyt saatavilla" msgstr "Säätiedot eivät ole juuri nyt saatavilla"
#: js/ui/endSessionDialog.js:39 #: js/ui/endSessionDialog.js:37
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Kirjaa %s ulos" msgstr "Kirjaa %s ulos"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:38
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:42 #: js/ui/endSessionDialog.js:40
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua." msgstr[0] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua."
msgstr[1] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua." msgstr[1] "%s - kirjaudutaan ulos automaattisesti %d sekunnin kuluttua."
#: js/ui/endSessionDialog.js:47 #: js/ui/endSessionDialog.js:45
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua." msgstr[0] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua."
msgstr[1] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua." msgstr[1] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua."
#: js/ui/endSessionDialog.js:53 #: js/ui/endSessionDialog.js:51
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:58 #: js/ui/endSessionDialog.js:56
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Sammuta" msgstr "Sammuta"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:57
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "Asenna päivitykset ja sammuta" msgstr "Asenna päivitykset ja sammuta"
#: js/ui/endSessionDialog.js:61 #: js/ui/endSessionDialog.js:59
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua." msgstr[0] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua."
msgstr[1] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua." msgstr[1] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua."
#: js/ui/endSessionDialog.js:65 #: js/ui/endSessionDialog.js:63
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Asenna odottavat ohjelmistopäivitykset" msgstr "Asenna odottavat ohjelmistopäivitykset"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84 #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Käynnistä uudelleen" msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:70 #: js/ui/endSessionDialog.js:68
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Sammuta" msgstr "Sammuta"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:74
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Käynnistä uudelleen" msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:78 #: js/ui/endSessionDialog.js:76
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
@@ -1231,12 +1352,12 @@ msgstr[0] ""
msgstr[1] "" msgstr[1] ""
"Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua." "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua."
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:89
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Käynnistä uudelleen ja asenna päivitykset" msgstr "Käynnistä uudelleen ja asenna päivitykset"
#: js/ui/endSessionDialog.js:93 #: js/ui/endSessionDialog.js:91
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@@ -1248,22 +1369,22 @@ msgstr[1] ""
"Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d " "Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d "
"sekunnin kuluttua." "sekunnin kuluttua."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118 #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Käynnistä uudelleen ja asenna" msgstr "Käynnistä uudelleen ja asenna"
#: js/ui/endSessionDialog.js:100 #: js/ui/endSessionDialog.js:98
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "Asenna ja sammuta" msgstr "Asenna ja sammuta"
#: js/ui/endSessionDialog.js:101 #: js/ui/endSessionDialog.js:99
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Sammuta päivitysten asennuksen jälkeen" msgstr "Sammuta päivitysten asennuksen jälkeen"
#: js/ui/endSessionDialog.js:108 #: js/ui/endSessionDialog.js:106
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Käynnistä uudelleen ja asenna päivitys" msgstr "Käynnistä uudelleen ja asenna päivitys"
@@ -1271,7 +1392,7 @@ msgstr "Käynnistä uudelleen ja asenna päivitys"
#. Translators: This is the text displayed for system upgrades in the #. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and #. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to #. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113 #: js/ui/endSessionDialog.js:111
#, javascript-format #, javascript-format
msgid "" msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long " "%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1281,16 +1402,16 @@ msgstr ""
"voi kestää kauan: varmista varmuuskopioidesi ajantasaisuus ja toimivuus. " "voi kestää kauan: varmista varmuuskopioidesi ajantasaisuus ja toimivuus. "
"Kiinnitä kone myös verkkovirtaan." "Kiinnitä kone myös verkkovirtaan."
#: js/ui/endSessionDialog.js:261 #: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates." msgid "Running on battery power: Please plug in before installing updates."
msgstr "" msgstr ""
"Laite käy akkuvirralla: kiinnitä verkkovirtaan ennen päivitysten asennusta." "Laite käy akkuvirralla: kiinnitä verkkovirtaan ennen päivitysten asennusta."
#: js/ui/endSessionDialog.js:270 #: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "Jotkin sovellukset ovat kiireisiä tai sisältävät tallentamatonta työtä" msgstr "Jotkin sovellukset ovat kiireisiä tai sisältävät tallentamatonta työtä"
#: js/ui/endSessionDialog.js:275 #: js/ui/endSessionDialog.js:273
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Muita käyttäjiä on kirjautuneena" msgstr "Muita käyttäjiä on kirjautuneena"
@@ -1306,24 +1427,24 @@ msgstr "%s (etä)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsoli)" msgstr "%s (konsoli)"
#: js/ui/extensionDownloader.js:185 #: js/ui/extensionDownloader.js:169
msgid "Install" msgid "Install"
msgstr "Asenna" msgstr "Asenna"
#: js/ui/extensionDownloader.js:191 #: js/ui/extensionDownloader.js:175
msgid "Install Extension" msgid "Install Extension"
msgstr "Asenna laajennus" msgstr "Asenna laajennus"
#: js/ui/extensionDownloader.js:192 #: js/ui/extensionDownloader.js:176
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?" msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
#: js/ui/extensionSystem.js:233 #: js/ui/extensionSystem.js:228
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Laajennusten päivityksiä saatavilla" msgstr "Laajennusten päivityksiä saatavilla"
#: js/ui/extensionSystem.js:234 #: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Laajennusten päivitykset ovat valmiina asennettavaksi." msgstr "Laajennusten päivitykset ovat valmiina asennettavaksi."
@@ -1472,11 +1593,11 @@ msgstr "Näytä lähde"
msgid "Web Page" msgid "Web Page"
msgstr "Verkkosivusto" msgstr "Verkkosivusto"
#: js/ui/main.js:277 #: js/ui/main.js:269
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Kirjautuneena etuoikeutettuna käyttäjänä" msgstr "Kirjautuneena etuoikeutettuna käyttäjänä"
#: js/ui/main.js:278 #: js/ui/main.js:270
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1484,15 +1605,15 @@ msgstr ""
"Istunnon suorittamista etuoikeutettuna käyttäjänä tulisi välttää " "Istunnon suorittamista etuoikeutettuna käyttäjänä tulisi välttää "
"tietoturvasyistä. Jos mahdollista, kirjaudu tavallisena käyttäjänä." "tietoturvasyistä. Jos mahdollista, kirjaudu tavallisena käyttäjänä."
#: js/ui/main.js:317 #: js/ui/main.js:276
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Näytön lukitus pois käytöstä" msgstr "Näytön lukitus pois käytöstä"
#: js/ui/main.js:318 #: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan." msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan."
#: js/ui/messageTray.js:1551 #: js/ui/messageTray.js:1554
msgid "System Information" msgid "System Information"
msgstr "Järjestelmän tiedot" msgstr "Järjestelmän tiedot"
@@ -1578,12 +1699,12 @@ msgstr "Lopeta"
msgid "Activities" msgid "Activities"
msgstr "Toiminnot" msgstr "Toiminnot"
#: js/ui/panel.js:713 #: js/ui/panel.js:707
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Järjestelmä" msgstr "Järjestelmä"
#: js/ui/panel.js:826 #: js/ui/panel.js:820
msgid "Top Bar" msgid "Top Bar"
msgstr "Yläpalkki" msgstr "Yläpalkki"
@@ -1699,13 +1820,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM tulee olla numeerinen tai tyhjä." msgstr "PIM tulee olla numeerinen tai tyhjä."
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465 #: js/ui/shellMountOperation.js:469
#, javascript-format #, javascript-format
msgid "Unable to start %s" msgid "Unable to start %s"
msgstr "Sovelluksen %s käynnistäminen ei onnistunut" msgstr "Sovelluksen %s käynnistäminen ei onnistunut"
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467 #: js/ui/shellMountOperation.js:471
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "Sovellusta %s ei löytynyt" msgstr "Sovellusta %s ei löytynyt"
@@ -2179,11 +2300,11 @@ msgstr "Thunderbolt-valtuutusvirhe"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s" msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s"
#: js/ui/status/volume.js:151 #: js/ui/status/volume.js:150
msgid "Volume changed" msgid "Volume changed"
msgstr "Äänenvoimakkuutta muutettu" msgstr "Äänenvoimakkuutta muutettu"
#: js/ui/status/volume.js:222 #: js/ui/status/volume.js:221
msgid "Volume" msgid "Volume"
msgstr "Äänenvoimakkuus" msgstr "Äänenvoimakkuus"
@@ -2217,26 +2338,25 @@ msgstr "Vain sisäinen"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:371 #: js/ui/unlockDialog.js:372
#, fuzzy
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A, %-e. %Bta" msgstr "%A, %-d. %Bta"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Vedä ylös avataksesi lukituksen" msgstr "Vedä ylös avataksesi lukituksen"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Napsauta tai paina näppäintä avataksesi lukituksen" msgstr "Napsauta tai paina näppäintä avataksesi lukituksen"
#: js/ui/unlockDialog.js:550 #: js/ui/unlockDialog.js:552
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Lukituksen avausikkuna" msgstr "Lukituksen avausikkuna"
#: js/ui/unlockDialog.js:559
msgid "Log in as another user"
msgstr "Kirjaudu toisena käyttäjänä"
#: js/ui/viewSelector.js:181 #: js/ui/viewSelector.js:181
msgid "Applications" msgid "Applications"
msgstr "Sovellukset" msgstr "Sovellukset"
@@ -2352,19 +2472,19 @@ msgstr "Sulje"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution-kalenteri" msgstr "Evolution-kalenteri"
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249 #: src/main.c:460 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Tulosta versio" msgstr "Tulosta versio"
#: src/main.c:464 #: src/main.c:466
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "GDM:n kirjautumisruudussa käyttämä tila" msgstr "GDM:n kirjautumisruudussa käyttämä tila"
#: src/main.c:470 #: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten" msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten"
#: src/main.c:476 #: src/main.c:478
msgid "List possible modes" msgid "List possible modes"
msgstr "Listaa mahdolliset tilat" msgstr "Listaa mahdolliset tilat"
@@ -2390,133 +2510,6 @@ msgstr "Salasana ei voi olla tyhjä"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Käyttäjä poistui tunnistautumisvalintaikkunasta" msgstr "Käyttäjä poistui tunnistautumisvalintaikkunasta"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Laajennukset"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "Hallitse Gnome-laajennuksia"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Hallitse Gnome Shell -laajennuksia"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Poista “%s”?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Ota huomioon jos poistat laajennuksen; sinun tulee palata ja ladata se "
"uudelleen, jos haluat sen uudelleen käyttöön"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Poista"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr "Jiri Grönroos"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d laajennus päivitetään seuraavan kerran, kun kirjaudut sisään."
msgstr[1] "%d laajennusta päivitetään seuraavan kerran, kun kirjaudut sisään."
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Kuvaus"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versio"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Tekijä"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Verkkosivusto"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Poista…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Tuki"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Tietoja - Laajennukset"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Etsi ja asenna laajennuksia osoitteessa <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Varoitus"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Laajennukset voivat aiheuttaa ongelmia järjestelmässä, myös suorituskykyyn. "
"Jos kohtaat ongelmia järjestelmän kanssa, on suositeltavaa poistaa kaikki "
"laajennukset käytöstä."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Manuaalisesti asennettu"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Sisäänrakennettu"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Ei asennettuja laajennuksia"
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Valitettavasti asennettujen laajennusten listaa ei voitu muodostaa. Varmista "
"että olet kirjautunut Gnomeen ja yritä uudelleen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Kirjaudu ulos…"
#. Translators: a file path to an extension directory #. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125 #: subprojects/extensions-tool/src/command-create.c:125
#, c-format #, c-format
@@ -2854,9 +2847,6 @@ msgstr[1] "%u sisääntuloa"
msgid "System Sounds" msgid "System Sounds"
msgstr "Järjestelmän äänet" msgstr "Järjestelmän äänet"
#~ msgid "Copy Error"
#~ msgstr "Kopiointivirhe"
#~ msgid "Username…" #~ msgid "Username…"
#~ msgstr "Käyttäjänimi…" #~ msgstr "Käyttäjänimi…"
@@ -2886,6 +2876,9 @@ msgstr "Järjestelmän äänet"
#~ msgstr[0] "%d uusi ilmoitus" #~ msgstr[0] "%d uusi ilmoitus"
#~ msgstr[1] "%d uutta ilmoitusta" #~ msgstr[1] "%d uutta ilmoitusta"
#~ msgid "Log in as another user"
#~ msgstr "Kirjaudu toisena käyttäjänä"
#~ msgid "Browse in Software" #~ msgid "Browse in Software"
#~ msgstr "Selaa ohjelmistokeskuksessa" #~ msgstr "Selaa ohjelmistokeskuksessa"

442
po/sr.po
View File

@@ -5,26 +5,25 @@
# Translators: # Translators:
# Милош Поповић <gpopac@gmail.com>, 2010—2011. # Милош Поповић <gpopac@gmail.com>, 2010—2011.
# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2017. # Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011—2017.
# Марко М. Костић <marko.m.kostic@gmail.com>, 2016.
# Борисав Живановић <borisavzivanovic@gmail.com>, 2017—2018. # Борисав Живановић <borisavzivanovic@gmail.com>, 2017—2018.
# Марко М. Костић <marko.m.kostic@gmail.com>, 2016-2020.
#
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n" "POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-04-02 21:42+0200\n" "PO-Revision-Date: 2020-03-21 15:30+0100\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n" "Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian <gnome-sr@googlegroups.org>\n" "Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n" "Language: sr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Poedit-Bookmarks: -1,167,-1,-1,-1,-1,-1,-1,-1,-1\n" "X-Poedit-Bookmarks: -1,167,-1,-1,-1,-1,-1,-1,-1,-1\n"
"X-Generator: Gtranslator 3.36.0\n" "X-Generator: Poedit 2.3\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
msgid "System" msgid "System"
@@ -68,7 +67,7 @@ msgid ""
"dialog." "dialog."
msgstr "" msgstr ""
"Дозвољава приступ унутрашњем отклањању грешака и алатима за праћење " "Дозвољава приступ унутрашњем отклањању грешака и алатима за праћење "
"коришћењем „Alt-F2“ прозорчета" "коришћењем „Alt-F2“ прозорчета."
#: 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"
@@ -390,12 +389,71 @@ msgstr "Застој првог плана се мења у режиму миш
msgid "Network Login" msgid "Network Login"
msgstr "Мрежна пријава" msgstr "Мрежна пријава"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/ui/extensions-window.ui:223 #: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:242
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Проширења"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Подесите проширења Гнома"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Гномова проширења руководе ажурирањем проширења, подешавањем поставки "
"проширења и уклањањем или онемогућавањем проширења."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Подесите проширења Гномове шкољке"
#: js/extensionPrefs/js/main.js:164
#, javascript-format
msgid "Remove “%s”?"
msgstr "Уклонити „%s“?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Уколико уклоните проширење, мораћете га поново преузети да бисте га поново "
"омогућили"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Откажи"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Уклони"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Милош Поповић <gpopac@gmail.com>\n"
"Борисав Живановић <borisavzivanovic@gmail.com>\n"
"Марко М. Костић <marko.m.kostic@gmail.com>\n"
"\n"
" https://гном.срб/ — превд пројекта Гном на српски језик"
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Нешто је пошло наопако" msgstr "Нешто је пошло наопако"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48 #: js/extensionPrefs/js/main.js:292
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -404,25 +462,107 @@ msgstr ""
"Веома нам је жао али се догодио проблем, не можемо приказати подешавања за " "Веома нам је жао али се догодио проблем, не можемо приказати подешавања за "
"ово проширење. Предлажемо вам да пријавите овај проблем творцима проширења." "ово проширење. Предлажемо вам да пријавите овај проблем творцима проширења."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82 #: js/extensionPrefs/js/main.js:299
msgid "Technical Details" msgid "Technical Details"
msgstr "Техничке појединости" msgstr "Техничке појединости"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165 #: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Грешка при копирању"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Матична страна" msgstr "Матична страна"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166 #: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Посети матичну страну проширењ" msgstr "Посети матичну страну проширењ"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57 #: js/extensionPrefs/js/main.js:479
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139 #, javascript-format
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181 msgid "%d extension will be updated on next login."
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 msgid_plural "%d extensions will be updated on next login."
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148 msgstr[0] "%d проширење биће ажурирано током следећег пријављивања."
msgid "Cancel" msgstr[1] "%d проширења биће ажурирана током следећег пријављивања."
msgstr "Откажи" msgstr[2] "%d проширења биће ажурирана током следећег пријављивања."
msgstr[3] "Једно проширење биће ажурирано током следећег пријављивања."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Опис"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Издање"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Творац"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Веб страница"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Уклони…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Помоћ"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "О Проширењима"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Да бисте пронашли и додали проширења, посетите страницу <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Упозорење"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Проширења могу утицати на стабилност система, укључујући и на делотворност. "
"Уколико приметите проблеме у раду, препоручујемо да онемогућите сва "
"проширења."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Ручно инсталирана"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Уграђена"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Неинсталирана проширења"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Нажалост, није било могуће добавити списак инсталираних проширења. Проверите "
"да ли сте пријављени у Гном и пробајте поново."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Одјава…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@@ -726,44 +866,44 @@ msgstr "Забрани приступ"
msgid "Grant Access" msgid "Grant Access"
msgstr "Дозволи приступ" msgstr "Дозволи приступ"
#: js/ui/appDisplay.js:932 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Неименована фасцикла" msgstr "Неименована фасцикла"
#: js/ui/appDisplay.js:955 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Често коришћени програми ће се појавити овде" msgstr "Често коришћени програми ће се појавити овде"
#: js/ui/appDisplay.js:1090 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Често" msgstr "Често"
#: js/ui/appDisplay.js:1097 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Све" msgstr "Све"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Отвори прозоре" msgstr "Отвори прозоре"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Нови прозор" msgstr "Нови прозор"
#: js/ui/appDisplay.js:2504 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Покрени са намењеном графичком картицом" msgstr "Покрени са намењеном графичком картицом"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Уклони из омиљених" msgstr "Уклони из омиљених"
#: js/ui/appDisplay.js:2538 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Додај у омиљене" msgstr "Додај у омиљене"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Прикажи детаље" msgstr "Прикажи детаље"
@@ -793,7 +933,7 @@ msgstr "Слушалице"
msgid "Headset" msgid "Headset"
msgstr "Слушалице са микрофоном" msgstr "Слушалице са микрофоном"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone" msgid "Microphone"
msgstr "Микрофон" msgstr "Микрофон"
@@ -934,7 +1074,7 @@ msgstr "Без догађаја"
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Не узнемиравај" msgstr "Не узнемиравај"
#: js/ui/calendar.js:1176 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Очисти" msgstr "Очисти"
@@ -1081,7 +1221,7 @@ msgstr "Погрешили сте! Покушајте поново."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: js/ui/components/telepathyClient.js:823 #: js/ui/components/telepathyClient.js:787
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "„%s“ је сада познат као „%s“" msgstr "„%s“ је сада познат као „%s“"
@@ -1125,38 +1265,38 @@ msgstr "Светски сатови…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Светски сатови" msgstr "Светски сатови"
#: js/ui/dateMenu.js:289 #: js/ui/dateMenu.js:279
msgid "Weather" msgid "Weather"
msgstr "Временска прогноза" msgstr "Временска прогноза"
#: js/ui/dateMenu.js:418 #: js/ui/dateMenu.js:394
msgid "Select a location…" msgid "Select a location…"
msgstr "Изаберите место…" msgstr "Изаберите место…"
#: js/ui/dateMenu.js:426 #: js/ui/dateMenu.js:407
msgid "Loading…" msgid "Loading…"
msgstr "Учитавам…" msgstr "Учитавам…"
#: js/ui/dateMenu.js:436 #: js/ui/dateMenu.js:417
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Идите на мрежу за податке о временској прогнози." msgstr "Идите на мрежу за податке о временској прогнози."
#: js/ui/dateMenu.js:438 #: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Подаци о временској прогнози тренутно нису доступни." msgstr "Подаци о временској прогнози тренутно нису доступни."
#: js/ui/endSessionDialog.js:39 #: js/ui/endSessionDialog.js:37
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Одјави корисника „%s“" msgstr "Одјави корисника „%s“"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:38
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Одјави ме" msgstr "Одјави ме"
#: js/ui/endSessionDialog.js:42 #: js/ui/endSessionDialog.js:40
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
@@ -1165,7 +1305,7 @@ msgstr[1] "%s ће бити одјављен за %d секунде."
msgstr[2] "%s ће бити одјављен за %d секунди." msgstr[2] "%s ће бити одјављен за %d секунди."
msgstr[3] "%s ће бити одјављен за %d секунду." msgstr[3] "%s ће бити одјављен за %d секунду."
#: js/ui/endSessionDialog.js:47 #: js/ui/endSessionDialog.js:45
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
@@ -1174,22 +1314,22 @@ msgstr[1] "Бићете одјављени за %d секунде."
msgstr[2] "Бићете одјављени за %d секунди." msgstr[2] "Бићете одјављени за %d секунди."
msgstr[3] "Бићете одјављени за %d секунду." msgstr[3] "Бићете одјављени за %d секунду."
#: js/ui/endSessionDialog.js:53 #: js/ui/endSessionDialog.js:51
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Одјави" msgstr "Одјави"
#: js/ui/endSessionDialog.js:58 #: js/ui/endSessionDialog.js:56
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Искључи" msgstr "Искључи"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:57
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "Инсталирај освежења и искључи" msgstr "Инсталирај освежења и искључи"
#: js/ui/endSessionDialog.js:61 #: js/ui/endSessionDialog.js:59
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
@@ -1198,27 +1338,27 @@ msgstr[1] "Рачунар ће се искључити за %d секунде."
msgstr[2] "Рачунар ће се искључити за %d секунди." msgstr[2] "Рачунар ће се искључити за %d секунди."
msgstr[3] "Рачунар ће се искључити за %d секунду." msgstr[3] "Рачунар ће се искључити за %d секунду."
#: js/ui/endSessionDialog.js:65 #: js/ui/endSessionDialog.js:63
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Инсталирај освежења софтвера на чекању" msgstr "Инсталирај освежења софтвера на чекању"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84 #: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Поново покрени" msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:70 #: js/ui/endSessionDialog.js:68
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Искључи" msgstr "Искључи"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:74
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Поново покрени" msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:78 #: js/ui/endSessionDialog.js:76
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
@@ -1227,12 +1367,12 @@ msgstr[1] "Систем ће се поново покренути за %d сек
msgstr[2] "Систем ће се поново покренути за %d секунди." msgstr[2] "Систем ће се поново покренути за %d секунди."
msgstr[3] "Систем ће се поново покренути за %d секунду." msgstr[3] "Систем ће се поново покренути за %d секунду."
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:89
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Поново покрени и инсталирај ажурирања" msgstr "Поново покрени и инсталирај ажурирања"
#: js/ui/endSessionDialog.js:93 #: js/ui/endSessionDialog.js:91
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@@ -1246,22 +1386,22 @@ msgstr[2] ""
msgstr[3] "" msgstr[3] ""
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118 #: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Поново покрени и инсталирај" msgstr "Поново покрени и инсталирај"
#: js/ui/endSessionDialog.js:100 #: js/ui/endSessionDialog.js:98
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "Инсталирај и искључи" msgstr "Инсталирај и искључи"
#: js/ui/endSessionDialog.js:101 #: js/ui/endSessionDialog.js:99
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Искључи након инсталирања освежења" msgstr "Искључи након инсталирања освежења"
#: js/ui/endSessionDialog.js:108 #: js/ui/endSessionDialog.js:106
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Поново покрени и инсталирај надоградњу" msgstr "Поново покрени и инсталирај надоградњу"
@@ -1269,7 +1409,7 @@ msgstr "Поново покрени и инсталирај надоградњу
#. Translators: This is the text displayed for system upgrades in the #. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and #. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to #. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113 #: js/ui/endSessionDialog.js:111
#, javascript-format #, javascript-format
msgid "" msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long " "%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1279,15 +1419,15 @@ msgstr ""
"понекад може да потраје: проверите да ли сте направили резерву ваших важних " "понекад може да потраје: проверите да ли сте направили резерву ваших важних "
"података и да ли је рачунар прикључен на мрежно напајање." "података и да ли је рачунар прикључен на мрежно напајање."
#: js/ui/endSessionDialog.js:261 #: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates." msgid "Running on battery power: Please plug in before installing updates."
msgstr "На батерији сте, прикључите мрежно напајање пре инсталирања ажурирања." msgstr "На батерији сте, прикључите мрежно напајање пре инсталирања ажурирања."
#: js/ui/endSessionDialog.js:270 #: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "Неки програми су заузети или имају несачувани рад" msgstr "Неки програми су заузети или имају несачувани рад"
#: js/ui/endSessionDialog.js:275 #: js/ui/endSessionDialog.js:273
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Други корисници су пријављени" msgstr "Други корисници су пријављени"
@@ -1303,24 +1443,24 @@ msgstr "%s (удаљено)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (љуска)" msgstr "%s (љуска)"
#: js/ui/extensionDownloader.js:185 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Инсталирај" msgstr "Инсталирај"
#: js/ui/extensionDownloader.js:191 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Инсталирај проширење" msgstr "Инсталирај проширење"
#: js/ui/extensionDownloader.js:192 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?" msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
#: js/ui/extensionSystem.js:233 #: js/ui/extensionSystem.js:228
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Доступна су ажурирања проширења" msgstr "Доступна су ажурирања проширења"
#: js/ui/extensionSystem.js:234 #: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Ажурирања проширења су доступна за инсталирање." msgstr "Ажурирања проширења су доступна за инсталирање."
@@ -1467,11 +1607,11 @@ msgstr "Прикажи код"
msgid "Web Page" msgid "Web Page"
msgstr "Веб страница" msgstr "Веб страница"
#: js/ui/main.js:277 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Пријављен као повлашћен корисник" msgstr "Пријављен као повлашћен корисник"
#: js/ui/main.js:278 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1479,15 +1619,15 @@ msgstr ""
"Покретање сесије под повлашћеним корисничким налогом треба избегавати из " "Покретање сесије под повлашћеним корисничким налогом треба избегавати из "
"безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник." "безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник."
#: js/ui/main.js:317 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Закључавање екрана онемогућено" msgstr "Закључавање екрана онемогућено"
#: js/ui/main.js:318 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана." msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана."
#: js/ui/messageTray.js:1551 #: js/ui/messageTray.js:1554
msgid "System Information" msgid "System Information"
msgstr "Подаци о систему" msgstr "Подаци о систему"
@@ -1696,13 +1836,13 @@ msgid "The PIM must be a number or empty."
msgstr "ЛИЧ (PIM) мора бити број или празно." msgstr "ЛИЧ (PIM) мора бити број или празно."
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465 #: js/ui/shellMountOperation.js:469
#, javascript-format #, javascript-format
msgid "Unable to start %s" msgid "Unable to start %s"
msgstr "Не могу да покренем „%s“" msgstr "Не могу да покренем „%s“"
#. Translators: %s is the Disks application #. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467 #: js/ui/shellMountOperation.js:471
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "Нисам могао наћи програм %s" msgstr "Нисам могао наћи програм %s"
@@ -2186,11 +2326,11 @@ msgstr "Грешка у овлашћивању Тандерболта"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Не могу да овластим Тандерболт уређај: %s" msgstr "Не могу да овластим Тандерболт уређај: %s"
#: js/ui/status/volume.js:151 #: js/ui/status/volume.js:150
msgid "Volume changed" msgid "Volume changed"
msgstr "Промена јачине звука" msgstr "Промена јачине звука"
#: js/ui/status/volume.js:222 #: js/ui/status/volume.js:221
msgid "Volume" msgid "Volume"
msgstr "Јачина звука" msgstr "Јачина звука"
@@ -2224,23 +2364,23 @@ msgstr "Само уграђени"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:371 #: js/ui/unlockDialog.js:370
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A, %-d. %B" msgstr "%A, %-d. %B"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Превуци за откључавање" msgstr "Превуци за откључавање"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Кликни или притисни тастер за откључавање" msgstr "Кликни или притисни тастер за откључавање"
#: js/ui/unlockDialog.js:550 #: js/ui/unlockDialog.js:549
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Откључај прозор" msgstr "Откључај прозор"
#: js/ui/unlockDialog.js:559 #: js/ui/unlockDialog.js:558
msgid "Log in as another user" msgid "Log in as another user"
msgstr "Пријавите се као други корисник" msgstr "Пријавите се као други корисник"
@@ -2399,143 +2539,6 @@ msgstr "Лозинка не може бити празна"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Корисник је одбацио прозорче за потврђивање идентитета" msgstr "Корисник је одбацио прозорче за потврђивање идентитета"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Проширења"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "Подесите проширења Гнома"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Гномова проширења руководе ажурирањем проширења, подешавањем поставки "
"проширења и уклањањем или онемогућавањем проширења."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Подесите проширења Гномове шкољке"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Уклонити „%s“?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Уколико уклоните проширење, мораћете га поново преузети да бисте га поново "
"омогућили"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Уклони"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Милош Поповић <gpopac@gmail.com>\n"
"Борисав Живановић <borisavzivanovic@gmail.com>\n"
"Марко М. Костић <marko.m.kostic@gmail.com>\n"
"\n"
" https://гном.срб/ — превод пројекта Гном на српски језик"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d проширење биће ажурирано током следећег пријављивања."
msgstr[1] "%d проширења биће ажурирана током следећег пријављивања."
msgstr[2] "%d проширења биће ажурирана током следећег пријављивања."
msgstr[3] "Једно проширење биће ажурирано током следећег пријављивања."
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Опис"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Издање"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Творац"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Веб страница"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Уклони…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Помоћ"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "О Проширењима"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Да бисте пронашли и додали проширења, посетите страницу <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Упозорење"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Проширења могу утицати на стабилност система, укључујући и на делотворност. "
"Уколико приметите проблеме у раду, препоручујемо да онемогућите сва "
"проширења."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Ручно инсталирана"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Уграђена"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Неинсталирана проширења"
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Нажалост, није било могуће добавити списак инсталираних проширења. Проверите "
"да ли сте пријављени у Гном и пробајте поново."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Одјава…"
#. Translators: a file path to an extension directory #. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125 #: subprojects/extensions-tool/src/command-create.c:125
#, c-format #, c-format
@@ -2876,9 +2879,6 @@ msgstr[3] "%u улаз"
msgid "System Sounds" msgid "System Sounds"
msgstr "Системски звуци" msgstr "Системски звуци"
#~ msgid "Copy Error"
#~ msgstr "Грешка при копирању"
#~ msgid "Username…" #~ msgid "Username…"
#~ msgstr "Корисник…" #~ msgstr "Корисник…"

View File

@@ -109,17 +109,11 @@ load_folder (GHashTable *folders,
while ((name = g_dir_read_name (dir))) while ((name = g_dir_read_name (dir)))
{ {
g_autofree gchar *stripped_name = NULL;
g_autofree gchar *filename = NULL; g_autofree gchar *filename = NULL;
g_autoptr(GKeyFile) keyfile = NULL; g_autoptr(GKeyFile) keyfile = NULL;
if (!g_str_has_suffix (name, ".directory"))
continue;
stripped_name = g_strndup (name, strlen (name) - strlen (".directory"));
/* First added wins */ /* First added wins */
if (g_hash_table_contains (folders, stripped_name)) if (g_hash_table_contains (folders, name))
continue; continue;
filename = g_build_filename (path, name, NULL); filename = g_build_filename (path, name, NULL);
@@ -134,8 +128,7 @@ load_folder (GHashTable *folders,
NULL, NULL); NULL, NULL);
if (translated != NULL) if (translated != NULL)
g_hash_table_insert (folders, g_steal_pointer (&stripped_name), g_hash_table_insert (folders, g_strdup (name), translated);
translated);
} }
} }
} }

View File

@@ -418,9 +418,6 @@ st_icon_update (StIcon *icon)
priv->opacity_handler_id = 0; priv->opacity_handler_id = 0;
} }
if (priv->gicon == NULL && priv->fallback_gicon == NULL)
return;
if (!st_widget_get_resource_scale (ST_WIDGET (icon), &resource_scale)) if (!st_widget_get_resource_scale (ST_WIDGET (icon), &resource_scale))
return; return;

View File

@@ -1619,18 +1619,3 @@ st_texture_cache_rescan_icon_theme (StTextureCache *cache)
return gtk_icon_theme_rescan_if_needed (priv->icon_theme); return gtk_icon_theme_rescan_if_needed (priv->icon_theme);
} }
/**
* st_texture_cache_invalidate:
* @cache: a #StTextureCache
*
* Invalidates the texture cache, and evicts all icons.
*/
void
st_texture_cache_invalidate (StTextureCache *cache)
{
g_return_if_fail (ST_IS_TEXTURE_CACHE (cache));
st_texture_cache_evict_icons (cache);
}

View File

@@ -115,6 +115,4 @@ CoglTexture * st_texture_cache_load (StTextureCache *cache,
gboolean st_texture_cache_rescan_icon_theme (StTextureCache *cache); gboolean st_texture_cache_rescan_icon_theme (StTextureCache *cache);
void st_texture_cache_invalidate (StTextureCache *cache);
#endif /* __ST_TEXTURE_CACHE_H__ */ #endif /* __ST_TEXTURE_CACHE_H__ */

View File

@@ -176,11 +176,7 @@ st_theme_context_set_property (GObject *object,
int scale_factor = g_value_get_int (value); int scale_factor = g_value_get_int (value);
if (scale_factor != context->scale_factor) if (scale_factor != context->scale_factor)
{ {
StTextureCache *cache = st_texture_cache_get_default ();
context->scale_factor = scale_factor; context->scale_factor = scale_factor;
st_texture_cache_invalidate (cache);
st_theme_context_changed (context); st_theme_context_changed (context);
} }

View File

@@ -117,8 +117,6 @@ struct _StThemeNode {
CoglPipeline *color_pipeline; CoglPipeline *color_pipeline;
StThemeNodePaintState cached_state; StThemeNodePaintState cached_state;
int scale_factor;
}; };
void _st_theme_node_ensure_background (StThemeNode *node); void _st_theme_node_ensure_background (StThemeNode *node);

View File

@@ -219,8 +219,6 @@ st_theme_node_new (StThemeContext *context,
if (theme == NULL && parent_node != NULL) if (theme == NULL && parent_node != NULL)
theme = parent_node->theme; theme = parent_node->theme;
g_object_get (context, "scale-factor", &node->scale_factor, NULL);
g_set_object (&node->theme, theme); g_set_object (&node->theme, theme);
node->element_type = element_type; node->element_type = element_type;
node->element_id = g_strdup (element_id); node->element_id = g_strdup (element_id);
@@ -347,7 +345,6 @@ st_theme_node_equal (StThemeNode *node_a, StThemeNode *node_b)
node_a->context != node_b->context || node_a->context != node_b->context ||
node_a->theme != node_b->theme || node_a->theme != node_b->theme ||
node_a->element_type != node_b->element_type || node_a->element_type != node_b->element_type ||
node_a->scale_factor != node_b->scale_factor ||
g_strcmp0 (node_a->element_id, node_b->element_id) || g_strcmp0 (node_a->element_id, node_b->element_id) ||
g_strcmp0 (node_a->inline_style, node_b->inline_style)) g_strcmp0 (node_a->inline_style, node_b->inline_style))
return FALSE; return FALSE;
@@ -399,7 +396,6 @@ st_theme_node_hash (StThemeNode *node)
hash = hash * 33 + GPOINTER_TO_UINT (node->context); hash = hash * 33 + GPOINTER_TO_UINT (node->context);
hash = hash * 33 + GPOINTER_TO_UINT (node->theme); hash = hash * 33 + GPOINTER_TO_UINT (node->theme);
hash = hash * 33 + ((guint) node->element_type); hash = hash * 33 + ((guint) node->element_type);
hash = hash * 33 + ((guint) node->scale_factor);
if (node->element_id != NULL) if (node->element_id != NULL)
hash = hash * 33 + g_str_hash (node->element_id); hash = hash * 33 + g_str_hash (node->element_id);
@@ -979,7 +975,9 @@ get_length_from_term (StThemeNode *node,
} type = ABSOLUTE; } type = ABSOLUTE;
double multiplier = 1.0; double multiplier = 1.0;
int scale_factor;
g_object_get (node->context, "scale-factor", &scale_factor, NULL);
if (term->type != TERM_NUMBER) if (term->type != TERM_NUMBER)
{ {
@@ -994,7 +992,7 @@ get_length_from_term (StThemeNode *node,
{ {
case NUM_LENGTH_PX: case NUM_LENGTH_PX:
type = ABSOLUTE; type = ABSOLUTE;
multiplier = 1 * node->scale_factor; multiplier = 1 * scale_factor;
break; break;
case NUM_LENGTH_PT: case NUM_LENGTH_PT:
type = POINTS; type = POINTS;
@@ -1125,10 +1123,14 @@ get_length_from_term_int (StThemeNode *node,
{ {
double value; double value;
GetFromTermResult result; GetFromTermResult result;
int scale_factor;
result = get_length_from_term (node, term, use_parent_font, &value); result = get_length_from_term (node, term, use_parent_font, &value);
if (result == VALUE_FOUND) if (result == VALUE_FOUND)
*length = (int) ((value / node->scale_factor) + 0.5) * node->scale_factor; {
g_object_get (node->context, "scale-factor", &scale_factor, NULL);
*length = (int) ((value / scale_factor) + 0.5) * scale_factor;
}
return result; return result;
} }
@@ -3010,6 +3012,7 @@ StBorderImage *
st_theme_node_get_border_image (StThemeNode *node) st_theme_node_get_border_image (StThemeNode *node)
{ {
int i; int i;
int scale_factor;
if (node->border_image_computed) if (node->border_image_computed)
return node->border_image; return node->border_image;
@@ -3018,6 +3021,7 @@ st_theme_node_get_border_image (StThemeNode *node)
node->border_image_computed = TRUE; node->border_image_computed = TRUE;
ensure_properties (node); ensure_properties (node);
g_object_get (node->context, "scale-factor", &scale_factor, NULL);
for (i = node->n_properties - 1; i >= 0; i--) for (i = node->n_properties - 1; i >= 0; i--)
{ {
@@ -3122,7 +3126,7 @@ st_theme_node_get_border_image (StThemeNode *node)
node->border_image = st_border_image_new (file, node->border_image = st_border_image_new (file,
border_top, border_right, border_bottom, border_left, border_top, border_right, border_bottom, border_left,
node->scale_factor); scale_factor);
g_object_unref (file); g_object_unref (file);
@@ -3963,9 +3967,6 @@ st_theme_node_geometry_equal (StThemeNode *node,
g_return_val_if_fail (ST_IS_THEME_NODE (other), FALSE); g_return_val_if_fail (ST_IS_THEME_NODE (other), FALSE);
if (node->scale_factor != other->scale_factor)
return FALSE;
_st_theme_node_ensure_geometry (node); _st_theme_node_ensure_geometry (node);
_st_theme_node_ensure_geometry (other); _st_theme_node_ensure_geometry (other);

View File

@@ -38,18 +38,19 @@
</description> </description>
<releases> <releases>
<release version="3.37.0" date="2020-03-31"/> <release version="3.36.1" date="2020-03-29"/>
<release version="3.36.0" date="2020-03-07"/>
</releases> </releases>
<screenshots> <screenshots>
<screenshot type="default"> <screenshot type="default">
<image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/master/subprojects/extensions-app/data/metainfo/extensions-main.png</image> <image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/gnome-3-36/subprojects/extensions-app/data/metainfo/extensions-main.png</image>
</screenshot> </screenshot>
<screenshot> <screenshot>
<image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/master/subprojects/extensions-app/data/metainfo/extensions-update.png</image> <image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/gnome-3-36/subprojects/extensions-app/data/metainfo/extensions-update.png</image>
</screenshot> </screenshot>
<screenshot> <screenshot>
<image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/master/subprojects/extensions-app/data/metainfo/extensions-remove.png</image> <image>https://gitlab.gnome.org/GNOME/gnome-shell/raw/gnome-3-36/subprojects/extensions-app/data/metainfo/extensions-remove.png</image>
</screenshot> </screenshot>
</screenshots> </screenshots>
</component> </component>

View File

@@ -93,7 +93,6 @@
<object class="GtkSwitch"> <object class="GtkSwitch">
<property name="visible">True</property> <property name="visible">True</property>
<property name="action-name">win.user-extensions-enabled</property> <property name="action-name">win.user-extensions-enabled</property>
<property name="valign">center</property>
</object> </object>
<packing> <packing>
<property name="pack_type">end</property> <property name="pack_type">end</property>

View File

@@ -201,7 +201,10 @@ var ExtensionsWindow = GObject.registerClass({
null, null,
Gio.DBusCallFlags.NONE, Gio.DBusCallFlags.NONE,
-1, -1,
null); null,
(o, res) => {
o.call_finish(res);
});
} }
_sortList(row1, row2) { _sortList(row1, row2) {

View File

@@ -1,5 +1,5 @@
project('gnome-extensions-app', project('gnome-extensions-app',
version: '3.37.0', version: '3.36.1',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

View File

@@ -1,5 +1,5 @@
project('gnome-extensions-tool', 'c', project('gnome-extensions-tool', 'c',
version: '3.37.0', version: '3.36.1',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )

View File

@@ -1,5 +1,5 @@
project('shew', 'c', project('shew', 'c',
version: '3.37.0', version: '3.36.1',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'LGPLv2+', license: 'LGPLv2+',
) )