Compare commits

...

18 Commits

Author SHA1 Message Date
5a83f003c7 blur: Always allocate at least one pixel
This works around a crash when we try to blur a background that hasn't
yet had any space allocated for it, in particular when locking the screen
with mutter 3.36.1 and the Native Window Placement extension.

Workaround for <https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2538>.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-04-03 10:04:26 +01:00
0a4974ac8c extensions-app: Do not expand headerbar switch
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2563
2020-04-03 02:29:55 +00:00
1666fa195d js: Account for promisified call() method
A promisified method expects the callback parameter to be either
a function (in which case the original method is called normally)
or omitted altogether (in which case a Promise is returned).

The call to open application details in Software does neither and
passes null instead, which will result in a warning (because no
function argument means a promise will be used, but not omitting
the parameter means we end up with too many arguments).

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2551
2020-04-03 02:02:40 +00:00
a9df4e7516 appDisplay: Don't clear signal handler id before emitting
Otherwise we won't clear the 'view-loaded' handler after it was emitted.

Also move field initialization to the correct place, i.e. the init
function of the base class.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1169
2020-04-02 20:53:20 +00:00
343b3351f1 app-cache: Fix cache for folder translations
The app-cache code currently stores the folder translations in a hash
that can be accessed via shell_util_get_translated_folder_name().
This hash uses the filename (inc. extension) for the "desktop-directory"
as key which causes an issue when trying to find the translation
on AppDisplay._findBestFolderName() which gets categories (folder names)
from the app info which doesn't contain the ".directory" extension.

Fix that by storing the filename without extension as the hash key for
the cached folder translations.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1168
2020-04-02 20:37:20 +00:00
407b12c3cb Update Serbian translation
(cherry picked from commit 428d38179d)
2020-04-02 19:43:17 +00:00
455a8f3076 Update Basque translation
(cherry picked from commit fe9708ebd8)
2020-04-02 16:15:48 +00:00
5067bda61a bluetooth: Fix infinite loop
Bailing out early of the loop means the iter is never increased,
resulting in an infinite loop.

Fixes 26c2cb9f6.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1165
2020-04-02 12:08:00 +00:00
e138b6e3af Update Finnish translation
(cherry picked from commit 8398769321)
2020-04-02 09:44:52 +00:00
9bc9d5165f bluetooth: Update bluetooth submenu title
- "Bluetooth" to "on/off" labels
  to match with other menus

- Display single connected device name
  to show more relevant information

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2340
2020-04-02 00:15:37 +00:00
26c2cb9f65 bluetooth: Add getDeviceInfos function
In case where only one device is connected, we want to display its name
in the menu. For that we will need more than the number of known/connected
devices, so change the function to return an array of device infos instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2340
2020-04-02 00:15:37 +00:00
da44649e6f Update Persian translation
(cherry picked from commit 69426cbfda)
2020-04-01 01:43:14 +00:00
a0def23940 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
2020-03-31 20:27:12 +02:00
f49b58cf97 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
2020-03-31 19:05:15 +02:00
cadd9a99c0 Update Chinese (Taiwan) translation
(cherry picked from commit 1ab5e6973a)
2020-03-31 16:07:40 +00:00
7061889a29 Update Friulian translation
(cherry picked from commit 1dea3341ec)
2020-03-31 11:14:43 +00:00
764527c8c9 js: Promisify async operations
Promises make asynchronous operations easier to manage, in particular
when used through the async/await syntax that allows for asynchronous
code to closely resemble synchronous one.

gjs has included a Gio._promisify() helper for a while now, which
monkey-patches methods that follow GIO's async pattern to return a
Promise when called without a callback argument.

Use that to get rid of all those GAsyncReadyCallbacks!

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1126
2020-03-31 05:43:40 +00:00
18742fcc32 build: Post-release version bump
With 3.36.1 out, let's start the next development cycle ...
2020-03-31 00:36:48 +02:00
36 changed files with 2144 additions and 1988 deletions

@ -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, Gio, GLib } = imports.gi; const { Clutter, Gdm, Gio, GLib } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Batch = imports.gdm.batch; const Batch = imports.gdm.batch;
@ -12,6 +12,15 @@ 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';
@ -168,14 +177,12 @@ var ShellUserVerifier = class {
this._checkForFingerprintReader(); this._checkForFingerprintReader();
if (userName) { // If possible, reauthenticate an already running session,
// If possible, reauthenticate an already running session, // so any session specific credentials get updated appropriately
// so any session specific credentials get updated appropriately if (userName)
this._client.open_reauthentication_channel(userName, this._cancellable, this._openReauthenticationChannel(userName);
this._reauthenticationChannelOpened.bind(this)); else
} else { this._getUserVerifier();
this._client.get_user_verifier(this._cancellable, this._userVerifierGot.bind(this));
}
} }
cancel() { cancel() {
@ -339,10 +346,11 @@ var ShellUserVerifier = class {
this._verificationFailed(false); this._verificationFailed(false);
} }
_reauthenticationChannelOpened(client, result) { async _openReauthenticationChannel(userName) {
try { try {
this._clearUserVerifier(); this._clearUserVerifier();
this._userVerifier = client.open_reauthentication_channel_finish(result); this._userVerifier = await this._client.open_reauthentication_channel(
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;
@ -351,8 +359,7 @@ 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
client.get_user_verifier(this._cancellable, this._getUserVerifier();
this._userVerifierGot.bind(this));
return; return;
} }
@ -366,10 +373,11 @@ var ShellUserVerifier = class {
this._hold.release(); this._hold.release();
} }
_userVerifierGot(client, result) { async _getUserVerifier() {
try { try {
this._clearUserVerifier(); this._clearUserVerifier();
this._userVerifier = client.get_user_verifier_finish(result); this._userVerifier =
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;
@ -421,35 +429,25 @@ var ShellUserVerifier = class {
} }
} }
_startService(serviceName) { async _startService(serviceName) {
this._hold.acquire(); this._hold.acquire();
if (this._userName) { try {
this._userVerifier.call_begin_verification_for_user(serviceName, this._userName, this._cancellable, (obj, result) => { if (this._userName) {
try { await this._userVerifier.call_begin_verification_for_user(
obj.call_begin_verification_for_user_finish(result); serviceName, this._userName, this._cancellable);
} catch (e) { } else {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) await this._userVerifier.call_begin_verification(
return; serviceName, this._cancellable);
this._reportInitError('Failed to start verification for user', e); }
return; } catch (e) {
} if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
this._hold.release(); this._reportInitError(this._userName
}); ? 'Failed to start verification for user'
} else { : 'Failed to start verification', e);
this._userVerifier.call_begin_verification(serviceName, this._cancellable, (obj, result) => { return;
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() {

@ -6,6 +6,15 @@ 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);
@ -102,16 +111,14 @@ var IBusManager = class {
_onConnected() { _onConnected() {
this._cancellable = new Gio.Cancellable(); this._cancellable = new Gio.Cancellable();
this._ibus.list_engines_async(-1, this._cancellable, this._initEngines();
this._initEngines.bind(this)); this._initPanelService();
this._ibus.request_name_async(IBus.SERVICE_PANEL,
IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable,
this._initPanelService.bind(this));
} }
_initEngines(ibus, result) { async _initEngines() {
try { try {
let enginesList = this._ibus.list_engines_async_finish(result); const enginesList =
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]);
@ -126,9 +133,10 @@ var IBusManager = class {
} }
} }
_initPanelService(ibus, result) { async _initPanelService() {
try { try {
this._ibus.request_name_async_finish(result); await this._ibus.request_name_async(IBus.SERVICE_PANEL,
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);
@ -163,19 +171,15 @@ 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
this._ibus.get_global_engine_async(-1, this._cancellable, (_bus, res) => { try {
let engine; // If an engine is already active we need to get its properties
try { const engine =
engine = this._ibus.get_global_engine_async_finish(res); await this._ibus.get_global_engine_async(-1, this._cancellable);
if (!engine)
return;
} catch (e) {
return;
}
this._engineChanged(this._ibus, engine.get_name()); this._engineChanged(this._ibus, engine.get_name());
}); this._updateReadiness();
this._updateReadiness(); } catch (e) {
}
} }
_updateReadiness() { _updateReadiness() {
@ -223,7 +227,7 @@ var IBusManager = class {
return this._engines.get(id); return this._engines.get(id);
} }
setEngine(id, callback) { async 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.
@ -233,18 +237,16 @@ var IBusManager = class {
return; return;
} }
this._ibus.set_global_engine_async(id, try {
this._MAX_INPUT_SOURCE_ACTIVATION_TIME, await this._ibus.set_global_engine_async(id,
this._cancellable, (_bus, res) => { this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
try { this._cancellable);
this._ibus.set_global_engine_async_finish(res); } catch (e) {
} catch (e) { if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) logError(e);
logError(e); }
} if (callback)
if (callback) callback();
callback();
});
} }
preloadEngines(ids) { preloadEngines(ids) {

@ -4,6 +4,9 @@ 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(
@ -46,15 +49,11 @@ class InputMethod extends Clutter.InputMethod {
this._currentSource = this._inputSourceManager.currentSource; this._currentSource = this._inputSourceManager.currentSource;
} }
_onConnected() { async _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 = this._ibus.create_input_context_async_finish(res); this._context = await this._ibus.create_input_context_async(
'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);

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

@ -57,9 +57,7 @@ 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._managerProxy.init_async(GLib.PRIORITY_DEFAULT, this._initManagerProxy();
this._cancellable,
this._onManagerProxyLoaded.bind(this));
} }
_tryToCompleteLoad() { _tryToCompleteLoad() {
@ -73,7 +71,7 @@ var ObjectManager = class {
} }
} }
_addInterface(objectPath, interfaceName, onFinished) { async _addInterface(objectPath, interfaceName, onFinished) {
let info = this._interfaceInfos[interfaceName]; let info = this._interfaceInfos[interfaceName];
if (!info) { if (!info) {
@ -89,40 +87,38 @@ 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 });
proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable, (initable, result) => { try {
try { await proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable);
initable.init_finish(result); } catch (e) {
} catch (e) { logError(e, `could not initialize proxy for interface ${interfaceName}`);
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) {
@ -151,9 +147,10 @@ var ObjectManager = class {
} }
} }
_onManagerProxyLoaded(initable, result) { async _initManagerProxy() {
try { try {
initable.init_finish(result); await this._managerProxy.init_async(
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}`);

@ -7,6 +7,8 @@ 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';
@ -79,16 +81,7 @@ var WeatherClient = class {
this._weatherApp = null; this._weatherApp = null;
this._weatherProxy = null; this._weatherProxy = null;
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface); this._createWeatherProxy();
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',
@ -146,9 +139,17 @@ var WeatherClient = class {
(!this._needsAuth || this._weatherAuthorized); (!this._needsAuth || this._weatherAuthorized);
} }
_onWeatherProxyReady(o, res) { async _createWeatherProxy() {
const nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface);
try { try {
this._weatherProxy = Gio.DBusProxy.new_finish(res); this._weatherProxy = await 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);
} catch (e) { } catch (e) {
log(`Failed to create GNOME Weather proxy: ${e}`); log(`Failed to create GNOME Weather proxy: ${e}`);
return; return;
@ -239,25 +240,23 @@ var WeatherClient = class {
} }
} }
_startGClueService() { async _startGClueService() {
if (this._gclueStarting) if (this._gclueStarting)
return; return;
this._gclueStarting = true; this._gclueStarting = true;
Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null, try {
(o, res) => { this._gclueService = await Geoclue.Simple.new(
try { 'org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null);
this._gclueService = Geoclue.Simple.new_finish(res); } catch (e) {
} catch (e) { log(`Failed to connect to Geoclue2 service: ${e.message}`);
log(`Failed to connect to Geoclue2 service: ${e.message}`); this._setLocation(this._mostRecentLocation);
this._setLocation(this._mostRecentLocation); return;
return; }
} this._gclueStarted = true;
this._gclueStarted = true; this._gclueService.get_client().distance_threshold = 100;
this._gclueService.get_client().distance_threshold = 100; this._updateLocationMonitoring();
this._updateLocationMonitoring();
});
} }
_onGClueLocationChanged() { _onGClueLocationChanged() {

@ -157,6 +157,10 @@ 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) {
@ -192,8 +196,6 @@ 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');
} }
@ -291,6 +293,11 @@ var BaseAppView = GObject.registerClass({
} }
} }
vfunc_unmap() {
this._clearAnimateLater();
super.vfunc_unmap();
}
animateSwitch(animationDirection) { animateSwitch(animationDirection) {
this.remove_all_transitions(); this.remove_all_transitions();
this._grid.remove_all_transitions(); this._grid.remove_all_transitions();
@ -407,8 +414,6 @@ 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));
@ -2546,19 +2551,18 @@ 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', () => { item.connect('activate', async () => {
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, '']);
Gio.DBus.get(Gio.BusType.SESSION, null, (o, res) => { const bus = await Gio.DBus.get(Gio.BusType.SESSION, null);
let bus = Gio.DBus.get_finish(res); bus.call(
bus.call('org.gnome.Software', 'org.gnome.Software',
'/org/gnome/Software', '/org/gnome/Software',
'org.gtk.Actions', 'Activate', 'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})', new GLib.Variant.new(
['details', [args], null]), '(sava{sv})', ['details', [args], null]),
null, 0, -1, null, null); null, 0, -1, null);
Main.overview.hide(); Main.overview.hide();
});
}); });
} }
} }

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

@ -10,6 +10,7 @@ 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');
@ -482,39 +483,37 @@ var VPNRequestHandler = class {
} }
} }
_readStdoutOldStyle() { async _readStdoutOldStyle() {
this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, (stream, result) => { const [line, len_] =
let [line, len_] = this._dataStdout.read_line_finish_utf8(result); await this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null);
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();
});
} }
_readStdoutNewStyle() { async _readStdoutNewStyle() {
this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null, (stream, result) => { const cnt =
let cnt = this._dataStdout.fill_finish(result); await this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null);
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() {
@ -621,15 +620,17 @@ 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._native.init_async(GLib.PRIORITY_DEFAULT, null, (o, res) => { this._initNative();
try { }
this._native.init_finish(res);
this._initialized = true; async _initNative() {
} catch (e) { try {
this._native = null; await this._native.init_async(GLib.PRIORITY_DEFAULT, null);
logError(e, 'error initializing the NetworkManager Agent'); this._initialized = true;
} } catch (e) {
}); this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
} }
enable() { enable() {

@ -7,6 +7,14 @@ 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.');
} }
@ -215,7 +223,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(null); channel.close_async();
continue; continue;
} }
@ -261,7 +269,7 @@ class TelepathyClient extends Tp.BaseClient {
} }
} }
_approveTextChannel(account, conn, channel, dispatchOp, context) { async _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) {
@ -270,17 +278,15 @@ class TelepathyClient extends Tp.BaseClient {
return; return;
} }
// Approve private text channels right away as we are going to handle it
dispatchOp.claim_with_async(this, (o, result) => {
try {
dispatchOp.claim_with_finish(result);
this._handlingChannels(account, conn, [channel], false);
} catch (err) {
log('Failed to Claim channel: %s'.format(err.toString()));
}
});
context.accept(); context.accept();
// Approve private text channels right away as we are going to handle it
try {
await dispatchOp.claim_with_async(this);
this._handlingChannels(account, conn, [channel], false);
} catch (err) {
log('Failed to Claim channel: %s'.format(err.toString()));
}
} }
_delegatedChannelsCb(_client, _channels) { _delegatedChannelsCb(_client, _channels) {
@ -441,17 +447,14 @@ class ChatSource extends MessageTray.Source {
} }
} }
_getLogMessages() { async _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);
logManager.get_filtered_events_async(this._account, entity, const [events] = await logManager.get_filtered_events_async(
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES, this._account, entity,
null, this._displayPendingMessages.bind(this)); Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
} 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();
@ -509,9 +512,7 @@ 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((channel, result) => { this._channel.close_async();
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.
@ -609,9 +610,7 @@ 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, (src, result) => { this._channel.send_message_async(msg, 0);
this._channel.send_message_finish(result);
});
} }
setChatState(state) { setChatState(state) {

@ -29,8 +29,6 @@ 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');
@ -280,7 +278,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');
} }
_onPkOfflineProxyCreated(proxy, error) { async _onPkOfflineProxyCreated(proxy, error) {
if (error) { if (error) {
log(error.message); log(error.message);
return; return;
@ -295,15 +293,12 @@ 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.
Polkit.Permission.new( try {
'org.freedesktop.packagekit.trigger-offline-update', null, null, this._updatesPermission = await Polkit.Permission.new(
(source, res) => { 'org.freedesktop.packagekit.trigger-offline-update', null, null);
try { } catch (e) {
this._updatesPermission = Polkit.Permission.new_finish(res); log('No permission to trigger offline updates: %s'.format(e.toString()));
} catch (e) { }
log('No permission to trigger offline updates: %s'.format(e.toString()));
}
});
} }
_onDestroy() { _onDestroy() {

@ -10,10 +10,21 @@ 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, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Polkit, 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

@ -132,7 +132,9 @@ function start() {
notifyError(msg, detail); notifyError(msg, detail);
}); });
Gio.DesktopAppInfo.set_desktop_env('GNOME'); let currentDesktop = GLib.getenv('XDG_CURRENT_DESKTOP');
if (!currentDesktop || !currentDesktop.split(':').includes('GNOME'))
Gio.DesktopAppInfo.set_desktop_env('GNOME');
sessionMode = new SessionMode.SessionMode(); sessionMode = new SessionMode.SessionMode();
sessionMode.connect('updated', _sessionUpdated); sessionMode.connect('updated', _sessionUpdated);

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

@ -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, null); this.proxy.init_async(GLib.PRIORITY_DEFAULT, null);
this.appInfo = appInfo; this.appInfo = appInfo;
this.id = appInfo.get_id(); this.id = appInfo.get_id();

@ -7,6 +7,13 @@ 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');
@ -156,7 +163,7 @@ var ScreenshotService = class {
return [x, y, width, height]; return [x, y, width, height];
} }
ScreenshotAreaAsync(params, invocation) { async 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)) {
@ -173,21 +180,17 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
screenshot.screenshot_area(x, y, width, height, stream, try {
(o, res) => { let [area] =
try { await screenshot.screenshot_area(x, y, width, height, stream);
let [success_, area] = this._onScreenshotComplete(area, stream, file, flash, invocation);
screenshot.screenshot_area_finish(res); } catch (e) {
this._onScreenshotComplete( this._removeShooterForSender(invocation.get_sender());
area, stream, file, flash, invocation); invocation.return_value(new GLib.Variant('(bs)', [false, '']));
} catch (e) { }
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
} }
ScreenshotWindowAsync(params, invocation) { async 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)
@ -197,21 +200,17 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
screenshot.screenshot_window(includeFrame, includeCursor, stream, try {
(o, res) => { let [area] =
try { await screenshot.screenshot_window(includeFrame, includeCursor, stream);
let [success_, area] = this._onScreenshotComplete(area, stream, file, flash, invocation);
screenshot.screenshot_window_finish(res); } catch (e) {
this._onScreenshotComplete( this._removeShooterForSender(invocation.get_sender());
area, stream, file, flash, invocation); invocation.return_value(new GLib.Variant('(bs)', [false, '']));
} catch (e) { }
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
} }
ScreenshotAsync(params, invocation) { async 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)
@ -221,18 +220,13 @@ var ScreenshotService = class {
if (!stream) if (!stream)
return; return;
screenshot.screenshot(includeCursor, stream, try {
(o, res) => { let [area] = await screenshot.screenshot(includeCursor, stream);
try { this._onScreenshotComplete(area, stream, file, flash, invocation);
let [success_, area] = } catch (e) {
screenshot.screenshot_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 SelectAreaAsync(params, invocation) { async SelectAreaAsync(params, invocation) {
@ -273,19 +267,17 @@ var ScreenshotService = class {
if (!screenshot) if (!screenshot)
return; return;
screenshot.pick_color(coords.x, coords.y, (_o, res) => { const [color] = await screenshot.pick_color(coords.x, coords.y);
let [success_, color] = screenshot.pick_color_finish(res); const { red, green, blue } = color;
let { red, green, blue } = color; const retval = GLib.Variant.new('(a{sv})', [{
let retval = GLib.Variant.new('(a{sv})', [{ color: GLib.Variant.new('(ddd)', [
color: GLib.Variant.new('(ddd)', [ red / 255.0,
red / 255.0, green / 255.0,
green / 255.0, blue / 255.0,
blue / 255.0, ]),
]), }]);
}]); this._removeShooterForSender(invocation.get_sender());
this._removeShooterForSender(invocation.get_sender()); invocation.return_value(retval);
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,

@ -325,8 +325,7 @@ var GnomeShellExtensions = class {
null, null,
Gio.DBusCallFlags.NONE, Gio.DBusCallFlags.NONE,
-1, -1,
null, null);
(conn, res) => conn.call_finish(res));
} }
ReloadExtensionAsync(params, invocation) { ReloadExtensionAsync(params, invocation) {

@ -72,46 +72,45 @@ class Indicator extends PanelMenu.SystemIndicator {
return null; return null;
} }
// nDevices is the number of devices setup for the current default _getDeviceInfos(adapter) {
// 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 [this._hadSetupDevices ? 1 : -1, -1]; return [];
let nConnectedDevices = 0; let deviceInfos = [];
let nDevices = 0;
let [ret, iter] = this._model.iter_children(adapter); let [ret, iter] = this._model.iter_children(adapter);
while (ret) { while (ret) {
let isConnected = this._model.get_value(iter, const isPaired = this._model.get_value(iter,
GnomeBluetooth.Column.CONNECTED); GnomeBluetooth.Column.PAIRED);
if (isConnected) const isTrusted = this._model.get_value(iter,
nConnectedDevices++; GnomeBluetooth.Column.TRUSTED);
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 != (nDevices > 0)) { if (this._hadSetupDevices !== (deviceInfos.length > 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 [nDevices, nConnectedDevices]; return deviceInfos;
} }
_sync() { _sync() {
let [nDevices, nConnectedDevices] = this._getNDevices(); let adapter = this._getDefaultAdapter();
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);
@ -124,14 +123,16 @@ 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 > 0) if (nConnectedDevices > 1)
/* 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 = _("Off"); this._item.label.text = connectedDevices[0].name;
else if (adapter === null)
this._item.label.text = _('Bluetooth Off');
else else
this._item.label.text = _("On"); this._item.label.text = _('Bluetooth On');
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off"); this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _('Turn On') : _('Turn Off');
} }
}); });

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

@ -15,6 +15,10 @@ 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',
@ -1627,11 +1631,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;
NM.Client.new_async(null, this._clientGot.bind(this)); this._getClient();
} }
_clientGot(obj, result) { async _getClient() {
this._client = NM.Client.new_finish(result); this._client = await NM.Client.new_async(null);
this._activeConnections = []; this._activeConnections = [];
this._connections = []; this._connections = [];
@ -1982,7 +1986,7 @@ class Indicator extends PanelMenu.SystemIndicator {
} }
} }
_portalHelperDone(proxy, emitter, parameters) { async _portalHelperDone(proxy, emitter, parameters) {
let [path, result] = parameters; let [path, result] = parameters;
if (result == PortalHelperResult.CANCELLED) { if (result == PortalHelperResult.CANCELLED) {
@ -1993,13 +1997,11 @@ 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) {
this._client.check_connectivity_async(null, (client, res) => { try {
try { const state = await this._client.check_connectivity_async(null);
let state = client.check_connectivity_finish(res); if (state >= NM.ConnectivityState.FULL)
if (state >= NM.ConnectivityState.FULL) this._closeConnectivityCheck(path);
this._closeConnectivityCheck(path); } catch (e) { }
} catch (e) { }
});
} else { } else {
log('Invalid result from portal helper: %s'.format(result)); log('Invalid result from portal helper: %s'.format(result));
} }

@ -52,22 +52,21 @@ 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();
} }
_onProxyReady(o, res) { async _getProxy() {
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
try { try {
this._proxy = Gio.DBusProxy.new_finish(res); this._proxy = await 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);
} catch (e) { } catch (e) {
log('error creating bolt proxy: %s'.format(e.message)); log('error creating bolt proxy: %s'.format(e.message));
return; return;
@ -243,14 +242,15 @@ class Indicator extends PanelMenu.SystemIndicator {
this._source = null; this._source = null;
this._perm = null; this._perm = null;
this._createPermission();
}
Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null, (source, res) => { async _createPermission() {
try { try {
this._perm = Polkit.Permission.new_finish(res); this._perm = await Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null);
} 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() {

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

411
po/eu.po

@ -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-21 18:07+0000\n" "POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-03-24 15:55+0100\n" "PO-Revision-Date: 2020-04-02 12:15+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,62 +392,12 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Sareko saio-hasiera" msgstr "Sareko saio-hasiera"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: 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/extensionPrefs/js/main.js:291 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
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 "
@ -456,104 +406,25 @@ 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/extensionPrefs/js/main.js:298 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "Xehetasun teknikoak" msgstr "Xehetasun teknikoak"
#: js/extensionPrefs/js/main.js:333 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "Kopiatze-errorea"
#: js/extensionPrefs/js/main.js:360
msgid "Homepage" msgid "Homepage"
msgstr "Webgune nagusia" msgstr "Webgune nagusia"
#: js/extensionPrefs/js/main.js:361 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Bisitatu hedapenaren webgunea" msgstr "Bisitatu hedapenaren webgunea"
#: js/extensionPrefs/js/main.js:478 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "Hedapen %d eguneratuko da hurrengo saio-hasieran." #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgstr[1] "%d hedapen eguneratuko dira hurrengo saio-hasieran." msgid "Cancel"
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
@ -835,44 +706,44 @@ msgstr "Ukatu sarbidea"
msgid "Grant Access" msgid "Grant Access"
msgstr "Baimendu sarbidea" msgstr "Baimendu sarbidea"
#: js/ui/appDisplay.js:898 #: js/ui/appDisplay.js:932
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Izenik gabeko karpeta" msgstr "Izenik gabeko karpeta"
#: js/ui/appDisplay.js:921 #: js/ui/appDisplay.js:955
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:1056 #: js/ui/appDisplay.js:1090
msgid "Frequent" msgid "Frequent"
msgstr "Erabilienak" msgstr "Erabilienak"
#: js/ui/appDisplay.js:1063 #: js/ui/appDisplay.js:1097
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:2446 js/ui/panel.js:75 #: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Leiho irekiak" msgstr "Leiho irekiak"
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82 #: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "_Leiho berria" msgstr "_Leiho berria"
#: js/ui/appDisplay.js:2477 #: js/ui/appDisplay.js:2504
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:2505 js/ui/dash.js:239 #: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Kendu gogokoetatik" msgstr "Kendu gogokoetatik"
#: js/ui/appDisplay.js:2511 #: js/ui/appDisplay.js:2538
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Gehitu gogokoei" msgstr "Gehitu gogokoei"
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93 #: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Erakutsi xehetasunak" msgstr "Erakutsi xehetasunak"
@ -902,7 +773,7 @@ msgstr "Aurikularrak"
msgid "Headset" msgid "Headset"
msgstr "Aurikular+mikrofonoa" msgstr "Aurikular+mikrofonoa"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofonoa" msgstr "Mikrofonoa"
@ -932,7 +803,7 @@ msgstr "06"
#: js/ui/calendar.js:70 #: js/ui/calendar.js:70
msgctxt "grid sunday" msgctxt "grid sunday"
msgid "S" msgid "S"
msgstr "S" msgstr "I"
#. Translators: Calendar grid abbreviation for Monday #. Translators: Calendar grid abbreviation for Monday
#: js/ui/calendar.js:72 #: js/ui/calendar.js:72
@ -956,7 +827,7 @@ msgstr "A"
#: js/ui/calendar.js:78 #: js/ui/calendar.js:78
msgctxt "grid thursday" msgctxt "grid thursday"
msgid "T" msgid "T"
msgstr "A" msgstr "O"
#. Translators: Calendar grid abbreviation for Friday #. Translators: Calendar grid abbreviation for Friday
#: js/ui/calendar.js:80 #: js/ui/calendar.js:80
@ -968,7 +839,7 @@ msgstr "O"
#: js/ui/calendar.js:82 #: js/ui/calendar.js:82
msgctxt "grid saturday" msgctxt "grid saturday"
msgid "S" msgid "S"
msgstr "S" msgstr "L"
#. * #. *
#. * Translators: The header displaying just the month name #. * Translators: The header displaying just the month name
@ -1043,7 +914,7 @@ msgstr "Gertaerarik ez"
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Ez gogaitu" msgstr "Ez gogaitu"
#: js/ui/calendar.js:1171 #: js/ui/calendar.js:1176
msgid "Clear" msgid "Clear"
msgstr "Garbitu" msgstr "Garbitu"
@ -1191,7 +1062,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:787 #: js/ui/components/telepathyClient.js:823
#, 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"
@ -1239,102 +1110,102 @@ msgstr "Munduko erlojuak"
msgid "Weather" msgid "Weather"
msgstr "Eguraldia" msgstr "Eguraldia"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "Hautatu kokalekua…" msgstr "Hautatu kokalekua…"
#: js/ui/dateMenu.js:417 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "Kargatzen…" msgstr "Kargatzen…"
#: js/ui/dateMenu.js:427 #: js/ui/dateMenu.js:436
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:429 #: js/ui/dateMenu.js:438
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:37 #: js/ui/endSessionDialog.js:39
#, 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:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Amaitu saioa" msgstr "Amaitu saioa"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, 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:45 #: js/ui/endSessionDialog.js:47
#, 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:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Amaitu saioa" msgstr "Amaitu saioa"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Itzali" msgstr "Itzali"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
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:59 #: js/ui/endSessionDialog.js:61
#, 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:63 #: js/ui/endSessionDialog.js:65
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:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Berrabiarazi" msgstr "Berrabiarazi"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Itzali" msgstr "Itzali"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Berrabiarazi" msgstr "Berrabiarazi"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, 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:89 #: js/ui/endSessionDialog.js:91
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:91 #: js/ui/endSessionDialog.js:93
#, 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 ""
@ -1346,22 +1217,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:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Berrabiarazi eta instalatu" msgstr "Berrabiarazi eta instalatu"
#: js/ui/endSessionDialog.js:98 #: js/ui/endSessionDialog.js:100
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:99 #: js/ui/endSessionDialog.js:101
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:106 #: js/ui/endSessionDialog.js:108
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Berrabiarazi eta instalatu bertsio-berritzea" msgstr "Berrabiarazi eta instalatu bertsio-berritzea"
@ -1369,7 +1240,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:111 #: js/ui/endSessionDialog.js:113
#, 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 "
@ -1379,15 +1250,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:259 #: js/ui/endSessionDialog.js:261
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:268 #: js/ui/endSessionDialog.js:270
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:273 #: js/ui/endSessionDialog.js:275
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."
@ -1403,24 +1274,24 @@ msgstr "%s (urrunekoa)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (kontsola)" msgstr "%s (kontsola)"
#: js/ui/extensionDownloader.js:181 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "Instalatu" msgstr "Instalatu"
#: js/ui/extensionDownloader.js:187 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "Instalatu hedapena" msgstr "Instalatu hedapena"
#: js/ui/extensionDownloader.js:188 #: js/ui/extensionDownloader.js:192
#, 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:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Hedapenen eguneraketak eskuragarri" msgstr "Hedapenen eguneraketak eskuragarri"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
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."
@ -1569,11 +1440,11 @@ msgstr "Ikusi iturburua"
msgid "Web Page" msgid "Web Page"
msgstr "Web orria" msgstr "Web orria"
#: js/ui/main.js:274 #: js/ui/main.js:277
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:275 #: js/ui/main.js:278
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."
@ -1582,15 +1453,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:281 #: js/ui/main.js:317
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Pantailaren blokeoa desgaituta dago" msgstr "Pantailaren blokeoa desgaituta dago"
#: js/ui/main.js:282 #: js/ui/main.js:318
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:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "Sistemaren informazioa" msgstr "Sistemaren informazioa"
@ -1797,13 +1668,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:469 #: js/ui/shellMountOperation.js:465
#, 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:471 #: js/ui/shellMountOperation.js:467
#, 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"
@ -2278,11 +2149,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:150 #: js/ui/status/volume.js:151
msgid "Volume changed" msgid "Volume changed"
msgstr "Bolumena aldatuta" msgstr "Bolumena aldatuta"
#: js/ui/status/volume.js:221 #: js/ui/status/volume.js:222
msgid "Volume" msgid "Volume"
msgstr "Bolumena" msgstr "Bolumena"
@ -2316,23 +2187,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:370 #: js/ui/unlockDialog.js:371
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A %B %-d" msgstr "%A %B %-d"
#: js/ui/unlockDialog.js:376 #: js/ui/unlockDialog.js:377
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Igaro hatza desblokeatzeko" msgstr "Igaro hatza desblokeatzeko"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:378
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:549 #: js/ui/unlockDialog.js:550
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desblokeatu leihoa" msgstr "Desblokeatu leihoa"
#: js/ui/unlockDialog.js:558 #: js/ui/unlockDialog.js:559
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"
@ -2489,6 +2360,131 @@ 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
@ -2826,6 +2822,9 @@ 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"

429
po/fa.po

@ -9,8 +9,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-19 14:34+0000\n" "POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-03-20 23:31+0000\n" "PO-Revision-Date: 2020-03-31 20:35+0430\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n" "Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n" "Language-Team: Persian <>\n"
"Language: fa\n" "Language: fa\n"
@ -366,63 +366,12 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "ورود شبکه‌ای" msgstr "ورود شبکه‌ای"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: 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 "دانیال بهزادی <dani.behzi@ubuntu.com>"
#: 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/extensionPrefs/js/main.js:292 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this extension " "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 extension "
@ -431,103 +380,25 @@ msgstr ""
"متأسّفیم، ولی مشکلی وجود داشت: تنظیمات این افزونه نمی‌تواند نشان داده شوند. توصیه " "متأسّفیم، ولی مشکلی وجود داشت: تنظیمات این افزونه نمی‌تواند نشان داده شوند. توصیه "
"می‌کنیم مشکل را به نگارندهٔ افزونه گزارش دهید." "می‌کنیم مشکل را به نگارندهٔ افزونه گزارش دهید."
#: js/extensionPrefs/js/main.js:299 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "جزییات فنّی" msgstr "جزییات فنّی"
#: js/extensionPrefs/js/main.js:334 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "رونوشت از خطا"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "صفحهٔ خانگی" msgstr "صفحهٔ خانگی"
#: js/extensionPrefs/js/main.js:362 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "مشاهدهٔ صفحهٔ خانگی افزونه" msgstr "مشاهدهٔ صفحهٔ خانگی افزونه"
#: js/extensionPrefs/js/main.js:479 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "تعداد %Id افزونه در ورود بعدی به‌روز خواهد شد." #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgstr[1] "تعداد %Id افزونه در ورود بعدی به‌روز خواهند شد." msgid "Cancel"
msgstr "لغو"
#: 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\">پایگاه "
"افزونه‌های گنوم</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
@ -716,21 +587,21 @@ msgstr[1] "%Id سال پیش"
#. Translators: Time in 24h format #. Translators: Time in 24h format
#: js/misc/util.js:237 #: js/misc/util.js:237
msgid "%H%M" msgid "%H%M"
msgstr "%OH:%OM" msgstr "%OH%OM"
#. Translators: this is the word "Yesterday" followed by a #. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" #. time string in 24h format. i.e. "Yesterday, 14:30"
#: js/misc/util.js:243 #: js/misc/util.js:243
#, no-c-format #, no-c-format
msgid "Yesterday, %H%M" msgid "Yesterday, %H%M"
msgstr "دیروز، %OH:%OM" msgstr "دیروز، %OH%OM"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" #. string in 24h format. i.e. "Monday, 14:30"
#: js/misc/util.js:249 #: js/misc/util.js:249
#, no-c-format #, no-c-format
msgid "%A, %H%M" msgid "%A, %H%M"
msgstr "%A، %OH:%OM" msgstr "%A، %OH%OM"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 24h format. #. followed by a time string in 24h format.
@ -738,7 +609,7 @@ msgstr "%A، %OH:%OM"
#: js/misc/util.js:255 #: js/misc/util.js:255
#, no-c-format #, no-c-format
msgid "%B %-d, %H%M" msgid "%B %-d, %H%M"
msgstr "%-Od %OB، %OH:%OM" msgstr "%-Od %OB، %OH%OM"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format. #. number followed by a time string in 24h format.
@ -746,7 +617,7 @@ msgstr "%-Od %OB، %OH:%OM"
#: js/misc/util.js:261 #: js/misc/util.js:261
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %H%M" msgid "%B %-d %Y, %H%M"
msgstr "%-Od %OB %Y، %OH:%OM" msgstr "%-Od %OB %Y، %OH%OM"
#. Show only the time if date is on today #. Show only the time if date is on today
#. eslint-disable-line no-lonely-if #. eslint-disable-line no-lonely-if
@ -760,14 +631,14 @@ msgstr "%Ol%OM%Op"
#: js/misc/util.js:272 #: js/misc/util.js:272
#, no-c-format #, no-c-format
msgid "Yesterday, %l%M %p" msgid "Yesterday, %l%M %p"
msgstr "دیروز، %OI:%OM" msgstr "دیروز، %Ol%OM %p"
#. Translators: this is the week day name followed by a time #. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" #. string in 12h format. i.e. "Monday, 2:30 pm"
#: js/misc/util.js:278 #: js/misc/util.js:278
#, no-c-format #, no-c-format
msgid "%A, %l%M %p" msgid "%A, %l%M %p"
msgstr "%A، %Ol:%OM %Op" msgstr "%A، %Ol%OM %Op"
#. Translators: this is the month name and day number #. Translators: this is the month name and day number
#. followed by a time string in 12h format. #. followed by a time string in 12h format.
@ -775,7 +646,7 @@ msgstr "%A، %Ol:%OM %Op"
#: js/misc/util.js:284 #: js/misc/util.js:284
#, no-c-format #, no-c-format
msgid "%B %-d, %l%M %p" msgid "%B %-d, %l%M %p"
msgstr "%-Od %OB، %Ol:%OM %Op" msgstr "%-Od %OB، %Ol%OM %Op"
#. Translators: this is the month name, day number, year #. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format. #. number followed by a time string in 12h format.
@ -783,7 +654,7 @@ msgstr "%-Od %OB، %Ol:%OM %Op"
#: js/misc/util.js:290 #: js/misc/util.js:290
#, no-c-format #, no-c-format
msgid "%B %-d %Y, %l%M %p" msgid "%B %-d %Y, %l%M %p"
msgstr "%-Od %OB %Y، %Ol:%OM %Op" msgstr "%-Od %OB %Y، %Ol%OM %Op"
#. TRANSLATORS: this is the title of the wifi captive portal login window #. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:41 #: js/portalHelper/main.js:41
@ -808,44 +679,44 @@ msgstr "رد دسترسی"
msgid "Grant Access" msgid "Grant Access"
msgstr "پذیرفتن دسترسی" msgstr "پذیرفتن دسترسی"
#: js/ui/appDisplay.js:898 #: js/ui/appDisplay.js:932
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "پوشهٔ بی‌نام" msgstr "پوشهٔ بی‌نام"
#: js/ui/appDisplay.js:921 #: js/ui/appDisplay.js:955
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "برنامه‌های بیشتر استفاده شده در اینجا نمایش داده می‌شود" msgstr "برنامه‌های بیشتر استفاده شده در اینجا نمایش داده می‌شود"
#: js/ui/appDisplay.js:1056 #: js/ui/appDisplay.js:1090
msgid "Frequent" msgid "Frequent"
msgstr "پُر استفاده" msgstr "پُر استفاده"
#: js/ui/appDisplay.js:1063 #: js/ui/appDisplay.js:1097
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:2446 js/ui/panel.js:75 #: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "پنجره‌های باز" msgstr "پنجره‌های باز"
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82 #: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "پنجرهٔ جدید" msgstr "پنجرهٔ جدید"
#: js/ui/appDisplay.js:2477 #: js/ui/appDisplay.js:2504
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "اجرا با کارت گرافیک اختصاصی" msgstr "اجرا با کارت گرافیک اختصاصی"
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239 #: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "حذف از مورد پسندها" msgstr "حذف از مورد پسندها"
#: js/ui/appDisplay.js:2511 #: js/ui/appDisplay.js:2538
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "افزودن به مورد پسندها" msgstr "افزودن به مورد پسندها"
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93 #: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "نمایش جزییات" msgstr "نمایش جزییات"
@ -875,7 +746,7 @@ msgstr "هدفون‌ها"
msgid "Headset" msgid "Headset"
msgstr "هدست" msgstr "هدست"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
msgid "Microphone" msgid "Microphone"
msgstr "میکروفون" msgstr "میکروفون"
@ -1016,7 +887,7 @@ msgstr "بدون رویداد"
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "مزاحم نشوید" msgstr "مزاحم نشوید"
#: js/ui/calendar.js:1171 #: js/ui/calendar.js:1176
msgid "Clear" msgid "Clear"
msgstr "پاک‌سازی" msgstr "پاک‌سازی"
@ -1160,7 +1031,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:787 #: js/ui/components/telepathyClient.js:823
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s با عنوان %s شناخته می‌شود" msgstr "%s با عنوان %s شناخته می‌شود"
@ -1204,106 +1075,106 @@ msgstr "اقزودن ساعت‌های جهانی…"
msgid "World Clocks" msgid "World Clocks"
msgstr "ساعت‌های جهانی" msgstr "ساعت‌های جهانی"
#: js/ui/dateMenu.js:279 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "آب‌وهوا" msgstr "آب‌وهوا"
#: js/ui/dateMenu.js:394 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "موقعیتی را برگزینید…" msgstr "موقعیتی را برگزینید…"
#: js/ui/dateMenu.js:407 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "در حال بار کردن…" msgstr "در حال بار کردن…"
#: js/ui/dateMenu.js:417 #: js/ui/dateMenu.js:436
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "برای اطّلاعات آب‌وهوا برخط شوید" msgstr "برای اطّلاعات آب‌وهوا برخط شوید"
#: js/ui/dateMenu.js:419 #: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "اطّلاعات آب‌وهو در حال حاضر موجود نیست" msgstr "اطّلاعات آب‌وهو در حال حاضر موجود نیست"
#: js/ui/endSessionDialog.js:37 #: js/ui/endSessionDialog.js:39
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "خروج از %s" msgstr "خروج از %s"
#: js/ui/endSessionDialog.js:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "خروج" msgstr "خروج"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, 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 به طور خودکار در مدت %Id ثانیه از سامانه خارج خواهد شد." msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سامانه خارج خواهد شد."
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سامانه خارج خواهد شد." msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سامانه خارج خواهد شد."
#: js/ui/endSessionDialog.js:45 #: js/ui/endSessionDialog.js:47
#, 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] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید." msgstr[0] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
msgstr[1] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید." msgstr[1] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
#: js/ui/endSessionDialog.js:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "خروج" msgstr "خروج"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "خاموش کردن" msgstr "خاموش کردن"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "نصب به‌روز رسانی‌ها و خاموش کردن" msgstr "نصب به‌روز رسانی‌ها و خاموش کردن"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:61
#, 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] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود." msgstr[0] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود."
msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود." msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار خاموش می‌شود."
#: js/ui/endSessionDialog.js:63 #: js/ui/endSessionDialog.js:65
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "نصب به‌روز رسانی‌هایِ در انتظار" msgstr "نصب به‌روز رسانی‌هایِ در انتظار"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "راه‌اندازی دوباره" msgstr "راه‌اندازی دوباره"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "خاموش کردن" msgstr "خاموش کردن"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "راه‌اندازی دوباره" msgstr "راه‌اندازی دوباره"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, 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] "سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود." msgstr[0] "سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود."
msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود." msgstr[1] "سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود."
#: js/ui/endSessionDialog.js:89 #: js/ui/endSessionDialog.js:91
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "راه‌اندازی دوباره و نصب به‌روز رسانی‌ها" msgstr "راه‌اندازی دوباره و نصب به‌روز رسانی‌ها"
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:93
#, 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 ""
@ -1315,22 +1186,22 @@ msgstr[1] ""
"سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود و به‌روز رسانیی‌ها را " "سامانه پس از %Id ثانیه به طور خودکار دوبارها راه‌اندازی می‌شود و به‌روز رسانیی‌ها را "
"نصب می‌کند." "نصب می‌کند."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "راه‌اندازی دوباره و نصب" msgstr "راه‌اندازی دوباره و نصب"
#: js/ui/endSessionDialog.js:98 #: js/ui/endSessionDialog.js:100
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "نصب و خاموش کردن" msgstr "نصب و خاموش کردن"
#: js/ui/endSessionDialog.js:99 #: js/ui/endSessionDialog.js:101
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "خاموش کردن پس از نصب به‌روز رسانی‌ها" msgstr "خاموش کردن پس از نصب به‌روز رسانی‌ها"
#: js/ui/endSessionDialog.js:106 #: js/ui/endSessionDialog.js:108
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "راه‌اندازی دوباره و نصب ارتقا" msgstr "راه‌اندازی دوباره و نصب ارتقا"
@ -1338,24 +1209,24 @@ 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:111 #: js/ui/endSessionDialog.js:113
#, javascript-format #, javascript-format
msgid "" msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long time: " "%s %s will be installed after restart. Upgrade installation can take a long time: "
"ensure that you have backed up and that the computer is plugged in." "ensure that you have backed up and that the computer is plugged in."
msgstr "" msgstr ""
"پس از راه‌اندازی دوباره %s %s نصب خواهد شد. نصب ارتقا ممکن است زمان زیادی بطول " "پس از راه‌اندازی دوباره %s %s نصب خواهد شد. نصب ارتقا ممکن است زمان زیادی طول "
"بکشد: مطمئن شوید که پشتیبان دارید و رایانه به برق متصل است." "بکشد: مطمئن شوید که پشتیبان دارید و رایانه به برق وصل است."
#: js/ui/endSessionDialog.js:259 #: js/ui/endSessionDialog.js:261
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:268 #: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "برخی برنامه‌ها مشغول بوده یا کار ذخیره نشده دارند" msgstr "برخی برنامه‌ها مشغول بوده یا کار ذخیره نشده دارند"
#: js/ui/endSessionDialog.js:273 #: js/ui/endSessionDialog.js:275
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "کاربران دیگری وارد شده هستند" msgstr "کاربران دیگری وارد شده هستند"
@ -1371,24 +1242,24 @@ msgstr "%s (دوردست)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (پایانه)" msgstr "%s (پایانه)"
#: js/ui/extensionDownloader.js:181 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "نصب" msgstr "نصب"
#: js/ui/extensionDownloader.js:187 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "نصب افزونه" msgstr "نصب افزونه"
#: js/ui/extensionDownloader.js:188 #: js/ui/extensionDownloader.js:192
#, 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:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "به‌روز رسانی‌های افزونه موجودند" msgstr "به‌روز رسانی‌های افزونه موجودند"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "به‌روز رسانی‌های افزونه‌ها آمادهٔ نصبند." msgstr "به‌روز رسانی‌های افزونه‌ها آمادهٔ نصبند."
@ -1533,11 +1404,11 @@ msgstr "نمایش منبع"
msgid "Web Page" msgid "Web Page"
msgstr "صفحهٔ وب" msgstr "صفحهٔ وب"
#: js/ui/main.js:274 #: js/ui/main.js:277
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "واردشده به عنوان کاربری ممتاز" msgstr "واردشده به عنوان کاربری ممتاز"
#: js/ui/main.js:275 #: js/ui/main.js:278
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security reasons. If " "Running a session as a privileged user should be avoided for security reasons. If "
"possible, you should log in as a normal user." "possible, you should log in as a normal user."
@ -1545,15 +1416,15 @@ msgstr ""
"به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت " "به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت "
"امکان، با کاربری عادی وارد شوید." "امکان، با کاربری عادی وارد شوید."
#: js/ui/main.js:281 #: js/ui/main.js:317
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "قفل صفحه از کار افتاده" msgstr "قفل صفحه از کار افتاده"
#: js/ui/main.js:282 #: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "قفل صفحه نیاز به مدیر نمایش گنوم دارد." msgstr "قفل صفحه نیاز به مدیر نمایش گنوم دارد."
#: js/ui/messageTray.js:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "اطلاعات سامانه" msgstr "اطلاعات سامانه"
@ -1759,13 +1630,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:469 #: js/ui/shellMountOperation.js:465
#, 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:471 #: js/ui/shellMountOperation.js:467
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "نمی‌توان برنامهٔ %s را یافت" msgstr "نمی‌توان برنامهٔ %s را یافت"
@ -2236,11 +2107,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:150 #: js/ui/status/volume.js:151
msgid "Volume changed" msgid "Volume changed"
msgstr "بلندی صدا تغییر کرد" msgstr "بلندی صدا تغییر کرد"
#: js/ui/status/volume.js:221 #: js/ui/status/volume.js:222
msgid "Volume" msgid "Volume"
msgstr "بلندی صدا" msgstr "بلندی صدا"
@ -2274,23 +2145,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:370 #: js/ui/unlockDialog.js:371
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A %-Od %OB" msgstr "%A %-Od %OB"
#: js/ui/unlockDialog.js:376 #: js/ui/unlockDialog.js:377
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "برای قفل‌گشایی، بالا بکشید" msgstr "برای قفل‌گشایی، بالا بکشید"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:378
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "برای قفل‌گشایی، کلیک کرده یا دکمه‌ای را بزنید" msgstr "برای قفل‌گشایی، کلیک کرده یا دکمه‌ای را بزنید"
#: js/ui/unlockDialog.js:549 #: js/ui/unlockDialog.js:550
msgid "Unlock Window" msgid "Unlock Window"
msgstr "گشودن قفل پنجره" msgstr "گشودن قفل پنجره"
#: js/ui/unlockDialog.js:558 #: js/ui/unlockDialog.js:559
msgid "Log in as another user" msgid "Log in as another user"
msgstr "ورود به عنوان کاربری دیگر" msgstr "ورود به عنوان کاربری دیگر"
@ -2447,6 +2318,131 @@ 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 "دانیال بهزادی <dani.behzi@ubuntu.com>"
#: 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] "تعداد %Id افزونه در ورود بعدی به‌روز خواهد شد."
msgstr[1] "تعداد %Id افزونه در ورود بعدی به‌روز خواهند شد."
#: 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\">پایگاه "
"افزونه‌های گنوم</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
@ -2783,6 +2779,9 @@ msgstr[1] "%Iu ورودی"
msgid "System Sounds" msgid "System Sounds"
msgstr "صداهای سامانه" msgstr "صداهای سامانه"
#~ msgid "Copy Error"
#~ msgstr "رونوشت از خطا"
#~ msgid "Username…" #~ msgid "Username…"
#~ msgstr "نام‌کاربری…" #~ msgstr "نام‌کاربری…"

485
po/fi.po

@ -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-02-21 09:52+0000\n" "POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-02-22 17:34+0200\n" "PO-Revision-Date: 2020-04-02 12:43+0300\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,15 +63,6 @@ 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"
@ -429,44 +420,12 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Verkkokirjautuminen" msgstr "Verkkokirjautuminen"
#: js/extensionPrefs/main.js:140 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#, javascript-format #: subprojects/extensions-app/data/ui/extensions-window.ui:223
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/extensionPrefs/main.js:268 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
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 "
@ -475,111 +434,31 @@ 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/extensionPrefs/main.js:275 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "Tekniset tiedot" msgstr "Tekniset tiedot"
#: js/extensionPrefs/main.js:310 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "Kopiointivirhe"
#: js/extensionPrefs/main.js:337
msgid "Homepage" msgid "Homepage"
msgstr "Verkkosivu" msgstr "Verkkosivu"
#: js/extensionPrefs/main.js:338 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Käy laajennuksen verkkosivulla" msgstr "Käy laajennuksen verkkosivulla"
#: js/extensionPrefs/main.js:449 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "%d laajennus päivitetään seuraavan kerran, kun kirjaudut sisään." #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgstr[1] "%d laajennusta päivitetään seuraavan kerran, kun kirjaudut sisään." msgid "Cancel"
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:236 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Salasana" msgstr "Salasana"
@ -602,8 +481,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:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Käyttäjätunnus" msgstr "Käyttäjätunnus"
@ -857,44 +736,44 @@ msgstr "Estä pääsy"
msgid "Grant Access" msgid "Grant Access"
msgstr "Salli pääsy" msgstr "Salli pääsy"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:932
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Nimetön kansio" msgstr "Nimetön kansio"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:955
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:1064 #: js/ui/appDisplay.js:1090
msgid "Frequent" msgid "Frequent"
msgstr "Käytetyimmät" msgstr "Käytetyimmät"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1097
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:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Avoimet ikkunat" msgstr "Avoimet ikkunat"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Uusi ikkuna" msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2504
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:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Poista suosikeista" msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2538
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Lisää suosikkeihin" msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Näytä tiedot" msgstr "Näytä tiedot"
@ -924,7 +803,7 @@ msgstr "Kuulokkeet"
msgid "Headset" msgid "Headset"
msgstr "Headset-kuulokkeet" msgstr "Headset-kuulokkeet"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
msgid "Microphone" msgid "Microphone"
msgstr "Mikrofoni" msgstr "Mikrofoni"
@ -1042,30 +921,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:867 #: js/ui/calendar.js:868
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:870 #: js/ui/calendar.js:871
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:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Ei ilmoituksia" msgstr "Ei ilmoituksia"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Ei tapahtumia" msgstr "Ei tapahtumia"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Älä häiritse" msgstr "Älä häiritse"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1176
msgid "Clear" msgid "Clear"
msgstr "Tyhjennä" msgstr "Tyhjennä"
@ -1112,81 +991,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:89 #: js/ui/components/networkAgent.js:91
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:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: 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:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Avain" msgstr "Avain"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Yksityisen avaimen salasana" msgstr "Yksityisen avaimen salasana"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identiteetti" msgstr "Identiteetti"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Palvelu" msgstr "Palvelu"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Tunnistautuminen vaaditaan" msgstr "Tunnistautuminen vaaditaan"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, 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:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
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:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Verkon nimi" msgstr "Verkon nimi"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-tunnistautuminen" msgstr "DSL-tunnistautuminen"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-koodi vaaditaan" msgstr "PIN-koodi vaaditaan"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" 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:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, 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:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Verkon hallinta" msgstr "Verkon hallinta"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "VPN-salasana" msgstr "VPN-salasana"
@ -1212,7 +1091,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:787 #: js/ui/components/telepathyClient.js:823
#, 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"
@ -1256,94 +1135,94 @@ msgstr "Lisää maailmankelloja…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Maailmankellot" msgstr "Maailmankellot"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "Sää" msgstr "Sää"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "Valitse sijainti…" msgstr "Valitse sijainti…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "Ladataan…" msgstr "Ladataan…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:436
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:416 #: js/ui/dateMenu.js:438
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:37 #: js/ui/endSessionDialog.js:39
#, 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:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, 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:45 #: js/ui/endSessionDialog.js:47
#, 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:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Kirjaudu ulos" msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Sammuta" msgstr "Sammuta"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
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:59 #: js/ui/endSessionDialog.js:61
#, 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:63 #: js/ui/endSessionDialog.js:65
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:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Käynnistä uudelleen" msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Sammuta" msgstr "Sammuta"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Käynnistä uudelleen" msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, 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."
@ -1352,12 +1231,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:89 #: js/ui/endSessionDialog.js:91
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:91 #: js/ui/endSessionDialog.js:93
#, 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 ""
@ -1369,22 +1248,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:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
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:98 #: js/ui/endSessionDialog.js:100
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:99 #: js/ui/endSessionDialog.js:101
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:106 #: js/ui/endSessionDialog.js:108
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"
@ -1392,7 +1271,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:111 #: js/ui/endSessionDialog.js:113
#, 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 "
@ -1402,16 +1281,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:259 #: js/ui/endSessionDialog.js:261
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:268 #: js/ui/endSessionDialog.js:270
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:273 #: js/ui/endSessionDialog.js:275
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"
@ -1427,24 +1306,24 @@ msgstr "%s (etä)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsoli)" msgstr "%s (konsoli)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "Asenna" msgstr "Asenna"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "Asenna laajennus" msgstr "Asenna laajennus"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:192
#, 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:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Laajennusten päivityksiä saatavilla" msgstr "Laajennusten päivityksiä saatavilla"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
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."
@ -1593,11 +1472,11 @@ msgstr "Näytä lähde"
msgid "Web Page" msgid "Web Page"
msgstr "Verkkosivusto" msgstr "Verkkosivusto"
#: js/ui/main.js:269 #: js/ui/main.js:277
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:270 #: js/ui/main.js:278
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."
@ -1605,15 +1484,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:276 #: js/ui/main.js:317
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:277 #: js/ui/main.js:318
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:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "Järjestelmän tiedot" msgstr "Järjestelmän tiedot"
@ -1699,12 +1578,12 @@ msgstr "Lopeta"
msgid "Activities" msgid "Activities"
msgstr "Toiminnot" msgstr "Toiminnot"
#: js/ui/panel.js:707 #: js/ui/panel.js:713
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:820 #: js/ui/panel.js:826
msgid "Top Bar" msgid "Top Bar"
msgstr "Yläpalkki" msgstr "Yläpalkki"
@ -1820,13 +1699,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:469 #: js/ui/shellMountOperation.js:465
#, 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:471 #: js/ui/shellMountOperation.js:467
#, 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"
@ -2300,11 +2179,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:150 #: js/ui/status/volume.js:151
msgid "Volume changed" msgid "Volume changed"
msgstr "Äänenvoimakkuutta muutettu" msgstr "Äänenvoimakkuutta muutettu"
#: js/ui/status/volume.js:221 #: js/ui/status/volume.js:222
msgid "Volume" msgid "Volume"
msgstr "Äänenvoimakkuus" msgstr "Äänenvoimakkuus"
@ -2338,25 +2217,26 @@ 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:372 #: js/ui/unlockDialog.js:371
#, fuzzy
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A, %-d. %Bta" msgstr "%A, %-e. %Bta"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:377
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:379 #: js/ui/unlockDialog.js:378
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:552 #: js/ui/unlockDialog.js:550
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"
@ -2472,19 +2352,19 @@ msgstr "Sulje"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution-kalenteri" msgstr "Evolution-kalenteri"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Tulosta versio" msgstr "Tulosta versio"
#: src/main.c:466 #: src/main.c:464
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:472 #: src/main.c:470
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:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Listaa mahdolliset tilat" msgstr "Listaa mahdolliset tilat"
@ -2510,6 +2390,133 @@ 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
@ -2847,6 +2854,9 @@ 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…"
@ -2876,9 +2886,6 @@ 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"

910
po/fur.po

File diff suppressed because it is too large Load Diff

442
po/sr.po

@ -5,25 +5,26 @@
# 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-19 14:34+0000\n" "POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-03-21 15:30+0100\n" "PO-Revision-Date: 2020-04-02 21:42+0200\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n" "Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n" "Language-Team: Serbian <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: Poedit 2.3\n" "X-Generator: Gtranslator 3.36.0\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
msgid "System" msgid "System"
@ -67,7 +68,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"
@ -389,71 +390,12 @@ msgstr "Застој првог плана се мења у режиму миш
msgid "Network Login" msgid "Network Login"
msgstr "Мрежна пријава" msgstr "Мрежна пријава"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4 #: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: 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/extensionPrefs/js/main.js:292 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
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 "
@ -462,107 +404,25 @@ msgstr ""
"Веома нам је жао али се догодио проблем, не можемо приказати подешавања за " "Веома нам је жао али се догодио проблем, не можемо приказати подешавања за "
"ово проширење. Предлажемо вам да пријавите овај проблем творцима проширења." "ово проширење. Предлажемо вам да пријавите овај проблем творцима проширења."
#: js/extensionPrefs/js/main.js:299 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "Техничке појединости" msgstr "Техничке појединости"
#: js/extensionPrefs/js/main.js:334 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "Грешка при копирању"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Матична страна" msgstr "Матична страна"
#: js/extensionPrefs/js/main.js:362 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Посети матичну страну проширењ" msgstr "Посети матичну страну проширењ"
#: js/extensionPrefs/js/main.js:479 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "%d проширење биће ажурирано током следећег пријављивања." #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgstr[1] "%d проширења биће ажурирана током следећег пријављивања." msgid "Cancel"
msgstr[2] "%d проширења биће ажурирана током следећег пријављивања." msgstr "Откажи"
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
@ -866,44 +726,44 @@ msgstr "Забрани приступ"
msgid "Grant Access" msgid "Grant Access"
msgstr "Дозволи приступ" msgstr "Дозволи приступ"
#: js/ui/appDisplay.js:898 #: js/ui/appDisplay.js:932
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Неименована фасцикла" msgstr "Неименована фасцикла"
#: js/ui/appDisplay.js:921 #: js/ui/appDisplay.js:955
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Често коришћени програми ће се појавити овде" msgstr "Често коришћени програми ће се појавити овде"
#: js/ui/appDisplay.js:1056 #: js/ui/appDisplay.js:1090
msgid "Frequent" msgid "Frequent"
msgstr "Често" msgstr "Често"
#: js/ui/appDisplay.js:1063 #: js/ui/appDisplay.js:1097
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:2446 js/ui/panel.js:75 #: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Отвори прозоре" msgstr "Отвори прозоре"
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82 #: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Нови прозор" msgstr "Нови прозор"
#: js/ui/appDisplay.js:2477 #: js/ui/appDisplay.js:2504
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Покрени са намењеном графичком картицом" msgstr "Покрени са намењеном графичком картицом"
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239 #: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Уклони из омиљених" msgstr "Уклони из омиљених"
#: js/ui/appDisplay.js:2511 #: js/ui/appDisplay.js:2538
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Додај у омиљене" msgstr "Додај у омиљене"
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93 #: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Прикажи детаље" msgstr "Прикажи детаље"
@ -933,7 +793,7 @@ msgstr "Слушалице"
msgid "Headset" msgid "Headset"
msgstr "Слушалице са микрофоном" msgstr "Слушалице са микрофоном"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
msgid "Microphone" msgid "Microphone"
msgstr "Микрофон" msgstr "Микрофон"
@ -1074,7 +934,7 @@ msgstr "Без догађаја"
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Не узнемиравај" msgstr "Не узнемиравај"
#: js/ui/calendar.js:1171 #: js/ui/calendar.js:1176
msgid "Clear" msgid "Clear"
msgstr "Очисти" msgstr "Очисти"
@ -1221,7 +1081,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:787 #: js/ui/components/telepathyClient.js:823
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "„%s“ је сада познат као „%s“" msgstr "„%s“ је сада познат као „%s“"
@ -1265,38 +1125,38 @@ msgstr "Светски сатови…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Светски сатови" msgstr "Светски сатови"
#: js/ui/dateMenu.js:279 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "Временска прогноза" msgstr "Временска прогноза"
#: js/ui/dateMenu.js:394 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "Изаберите место…" msgstr "Изаберите место…"
#: js/ui/dateMenu.js:407 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "Учитавам…" msgstr "Учитавам…"
#: js/ui/dateMenu.js:417 #: js/ui/dateMenu.js:436
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Идите на мрежу за податке о временској прогнози." msgstr "Идите на мрежу за податке о временској прогнози."
#: js/ui/dateMenu.js:419 #: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Подаци о временској прогнози тренутно нису доступни." msgstr "Подаци о временској прогнози тренутно нису доступни."
#: js/ui/endSessionDialog.js:37 #: js/ui/endSessionDialog.js:39
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Одјави корисника „%s“" msgstr "Одјави корисника „%s“"
#: js/ui/endSessionDialog.js:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Одјави ме" msgstr "Одјави ме"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, 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."
@ -1305,7 +1165,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:45 #: js/ui/endSessionDialog.js:47
#, 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."
@ -1314,22 +1174,22 @@ msgstr[1] "Бићете одјављени за %d секунде."
msgstr[2] "Бићете одјављени за %d секунди." msgstr[2] "Бићете одјављени за %d секунди."
msgstr[3] "Бићете одјављени за %d секунду." msgstr[3] "Бићете одјављени за %d секунду."
#: js/ui/endSessionDialog.js:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Одјави" msgstr "Одјави"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Искључи" msgstr "Искључи"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "Инсталирај освежења и искључи" msgstr "Инсталирај освежења и искључи"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:61
#, 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."
@ -1338,27 +1198,27 @@ msgstr[1] "Рачунар ће се искључити за %d секунде."
msgstr[2] "Рачунар ће се искључити за %d секунди." msgstr[2] "Рачунар ће се искључити за %d секунди."
msgstr[3] "Рачунар ће се искључити за %d секунду." msgstr[3] "Рачунар ће се искључити за %d секунду."
#: js/ui/endSessionDialog.js:63 #: js/ui/endSessionDialog.js:65
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Инсталирај освежења софтвера на чекању" msgstr "Инсталирај освежења софтвера на чекању"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Поново покрени" msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Искључи" msgstr "Искључи"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Поново покрени" msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, 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."
@ -1367,12 +1227,12 @@ msgstr[1] "Систем ће се поново покренути за %d сек
msgstr[2] "Систем ће се поново покренути за %d секунди." msgstr[2] "Систем ће се поново покренути за %d секунди."
msgstr[3] "Систем ће се поново покренути за %d секунду." msgstr[3] "Систем ће се поново покренути за %d секунду."
#: js/ui/endSessionDialog.js:89 #: js/ui/endSessionDialog.js:91
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Поново покрени и инсталирај ажурирања" msgstr "Поново покрени и инсталирај ажурирања"
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:93
#, 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 ""
@ -1386,22 +1246,22 @@ msgstr[2] ""
msgstr[3] "" msgstr[3] ""
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду." "Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Поново покрени и инсталирај" msgstr "Поново покрени и инсталирај"
#: js/ui/endSessionDialog.js:98 #: js/ui/endSessionDialog.js:100
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "Инсталирај и искључи" msgstr "Инсталирај и искључи"
#: js/ui/endSessionDialog.js:99 #: js/ui/endSessionDialog.js:101
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Искључи након инсталирања освежења" msgstr "Искључи након инсталирања освежења"
#: js/ui/endSessionDialog.js:106 #: js/ui/endSessionDialog.js:108
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Поново покрени и инсталирај надоградњу" msgstr "Поново покрени и инсталирај надоградњу"
@ -1409,7 +1269,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:111 #: js/ui/endSessionDialog.js:113
#, 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 "
@ -1419,15 +1279,15 @@ msgstr ""
"понекад може да потраје: проверите да ли сте направили резерву ваших важних " "понекад може да потраје: проверите да ли сте направили резерву ваших важних "
"података и да ли је рачунар прикључен на мрежно напајање." "података и да ли је рачунар прикључен на мрежно напајање."
#: js/ui/endSessionDialog.js:259 #: js/ui/endSessionDialog.js:261
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:268 #: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "Неки програми су заузети или имају несачувани рад" msgstr "Неки програми су заузети или имају несачувани рад"
#: js/ui/endSessionDialog.js:273 #: js/ui/endSessionDialog.js:275
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Други корисници су пријављени" msgstr "Други корисници су пријављени"
@ -1443,24 +1303,24 @@ msgstr "%s (удаљено)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (љуска)" msgstr "%s (љуска)"
#: js/ui/extensionDownloader.js:181 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "Инсталирај" msgstr "Инсталирај"
#: js/ui/extensionDownloader.js:187 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "Инсталирај проширење" msgstr "Инсталирај проширење"
#: js/ui/extensionDownloader.js:188 #: js/ui/extensionDownloader.js:192
#, 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:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Доступна су ажурирања проширења" msgstr "Доступна су ажурирања проширења"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Ажурирања проширења су доступна за инсталирање." msgstr "Ажурирања проширења су доступна за инсталирање."
@ -1607,11 +1467,11 @@ msgstr "Прикажи код"
msgid "Web Page" msgid "Web Page"
msgstr "Веб страница" msgstr "Веб страница"
#: js/ui/main.js:274 #: js/ui/main.js:277
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Пријављен као повлашћен корисник" msgstr "Пријављен као повлашћен корисник"
#: js/ui/main.js:275 #: js/ui/main.js:278
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."
@ -1619,15 +1479,15 @@ msgstr ""
"Покретање сесије под повлашћеним корисничким налогом треба избегавати из " "Покретање сесије под повлашћеним корисничким налогом треба избегавати из "
"безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник." "безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник."
#: js/ui/main.js:281 #: js/ui/main.js:317
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Закључавање екрана онемогућено" msgstr "Закључавање екрана онемогућено"
#: js/ui/main.js:282 #: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана." msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана."
#: js/ui/messageTray.js:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "Подаци о систему" msgstr "Подаци о систему"
@ -1836,13 +1696,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:469 #: js/ui/shellMountOperation.js:465
#, 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:471 #: js/ui/shellMountOperation.js:467
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "Нисам могао наћи програм %s" msgstr "Нисам могао наћи програм %s"
@ -2326,11 +2186,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:150 #: js/ui/status/volume.js:151
msgid "Volume changed" msgid "Volume changed"
msgstr "Промена јачине звука" msgstr "Промена јачине звука"
#: js/ui/status/volume.js:221 #: js/ui/status/volume.js:222
msgid "Volume" msgid "Volume"
msgstr "Јачина звука" msgstr "Јачина звука"
@ -2364,23 +2224,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:370 #: js/ui/unlockDialog.js:371
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A, %-d. %B" msgstr "%A, %-d. %B"
#: js/ui/unlockDialog.js:376 #: js/ui/unlockDialog.js:377
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Превуци за откључавање" msgstr "Превуци за откључавање"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:378
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Кликни или притисни тастер за откључавање" msgstr "Кликни или притисни тастер за откључавање"
#: js/ui/unlockDialog.js:549 #: js/ui/unlockDialog.js:550
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Откључај прозор" msgstr "Откључај прозор"
#: js/ui/unlockDialog.js:558 #: js/ui/unlockDialog.js:559
msgid "Log in as another user" msgid "Log in as another user"
msgstr "Пријавите се као други корисник" msgstr "Пријавите се као други корисник"
@ -2539,6 +2399,143 @@ 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
@ -2879,6 +2876,9 @@ msgstr[3] "%u улаз"
msgid "System Sounds" msgid "System Sounds"
msgstr "Системски звуци" msgstr "Системски звуци"
#~ msgid "Copy Error"
#~ msgstr "Грешка при копирању"
#~ msgid "Username…" #~ msgid "Username…"
#~ msgstr "Корисник…" #~ msgstr "Корисник…"

@ -8,16 +8,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell 3.3.90\n" "Project-Id-Version: gnome-shell 3.3.90\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-02-17 22:27+0000\n" "POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-02-19 14:32+0800\n" "PO-Revision-Date: 2020-04-01 00:04+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n" "Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n" "Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n" "Language: zh_TW\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=1; plural=0;\n" "Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.2.4\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"
@ -43,15 +43,6 @@ msgstr "顯示所有的應用程式"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "開啟應用程式選單" msgstr "開啟應用程式選單"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "擴充套件"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "設定 GNOME Shell 擴充套件"
#: 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"
@ -371,42 +362,12 @@ msgstr "在滑鼠模式中延遲焦點變更直到指標停止移動"
msgid "Network Login" msgid "Network Login"
msgstr "網路登入" msgstr "網路登入"
#: js/extensionPrefs/main.js:140 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#, javascript-format #: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Remove “%s”?"
msgstr "移除“%s”"
#: js/extensionPrefs/main.js:141
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr "如果您移除擴充套件,如果需要再次啟用,就需要回去重新下載一次"
#: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "取消"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "移除"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "管理 GNOME Shell 擴充套件"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "有地方出錯了" msgstr "有地方出錯了"
#: js/extensionPrefs/main.js:268 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
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 "
@ -415,108 +376,31 @@ msgstr ""
"我們非常抱歉,發生了這個問題:無法顯示此擴充套件的設定。我們建議您回報此議題" "我們非常抱歉,發生了這個問題:無法顯示此擴充套件的設定。我們建議您回報此議題"
"給擴充套件作者知曉。" "給擴充套件作者知曉。"
#: js/extensionPrefs/main.js:275 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "技術細節" msgstr "技術細節"
#: js/extensionPrefs/main.js:310 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "複製錯誤"
#: js/extensionPrefs/main.js:337
msgid "Homepage" msgid "Homepage"
msgstr "首頁" msgstr "首頁"
#: js/extensionPrefs/main.js:338 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "造訪擴充套件首頁" msgstr "造訪擴充套件首頁"
#: js/extensionPrefs/main.js:449 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "%d 個擴充套件會在下次登入時更新。" #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
#: js/extensionPrefs/ui/extension-row.ui:100 msgstr "取消"
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "描述"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "版本"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "作者"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "網站"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "移除…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "求助"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "關於擴充套件"
#: js/extensionPrefs/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"要尋找並加入擴充套件,可以到 <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a> 安裝。"
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "警告"
#: js/extensionPrefs/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"擴充套件可能會造成系統問題,包含效能問題。如果您遇到系統問題,建議您先停用所"
"有的擴充套件。"
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "手動安裝"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "內建"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "沒有已安裝的擴充套件"
#: js/extensionPrefs/ui/extensions-window.ui:234
msgid ""
"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 ""
"非常抱歉,但無法取得已安裝擴充套件的清單。請確定您已登入 GNOME 後重試。"
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "登出…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "密碼" msgstr "密碼"
@ -539,8 +423,8 @@ msgstr "(例如: user 或 %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:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "使用者名稱" msgstr "使用者名稱"
@ -789,44 +673,44 @@ msgstr "禁止存取"
msgid "Grant Access" msgid "Grant Access"
msgstr "授予存取權限" msgstr "授予存取權限"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:932
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "未命名資料夾" msgstr "未命名資料夾"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:955
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "經常使用的應用程式會出現在這裡" msgstr "經常使用的應用程式會出現在這裡"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1090
msgid "Frequent" msgid "Frequent"
msgstr "常用" msgstr "常用"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1097
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:2454 js/ui/panel.js:75 #: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "開啟視窗" msgstr "開啟視窗"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82 #: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "新視窗" msgstr "新視窗"
#: js/ui/appDisplay.js:2485 #: js/ui/appDisplay.js:2504
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "使用獨立顯卡啟動" msgstr "使用獨立顯卡啟動"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239 #: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "自喜好中移除" msgstr "自喜好中移除"
#: js/ui/appDisplay.js:2519 #: js/ui/appDisplay.js:2538
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "加入喜好" msgstr "加入喜好"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93 #: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "顯示詳細資訊" msgstr "顯示詳細資訊"
@ -856,7 +740,7 @@ msgstr "頭戴式耳機"
msgid "Headset" msgid "Headset"
msgstr "耳機麥克風" msgstr "耳機麥克風"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269 #: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
msgid "Microphone" msgid "Microphone"
msgstr "麥克風" msgstr "麥克風"
@ -974,30 +858,30 @@ msgid "All Day"
msgstr "整天" msgstr "整天"
#. 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:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%b%-d日%A" msgstr "%b%-d日%A"
#. 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:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%Y年%b%-d日%A" msgstr "%Y年%b%-d日%A"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "沒有通知" msgstr "沒有通知"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "沒有行程" msgstr "沒有行程"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "不要打擾" msgstr "不要打擾"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1176
msgid "Clear" msgid "Clear"
msgstr "清除" msgstr "清除"
@ -1042,80 +926,80 @@ msgstr "安裝的 udisks 版本不支援設定 PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "用 %s 開啟" msgstr "用 %s 開啟"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
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 "或者您可以按下路由器的「WPS」按鈕來連接看看。" msgstr "或者您可以按下路由器的「WPS」按鈕來連接看看。"
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "連線" msgstr "連線"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "金鑰" msgstr "金鑰"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "私密金鑰密碼" msgstr "私密金鑰密碼"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "識別身分" msgstr "識別身分"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "服務" msgstr "服務"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "要求核對" msgstr "要求核對"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, 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 "需要密碼或是加密金鑰來存取無線網路「%s」。" msgstr "需要密碼或是加密金鑰來存取無線網路「%s」。"
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "有線網路 802.1X 核對" msgstr "有線網路 802.1X 核對"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "網路名稱" msgstr "網路名稱"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL 核對" msgstr "DSL 核對"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "需要 PIN 碼" msgstr "需要 PIN 碼"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "這個行動寬頻裝置需要 PIN 碼" msgstr "這個行動寬頻裝置需要 PIN 碼"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "連線至「%s」需要密碼。" msgstr "連線至「%s」需要密碼。"
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "網路管理員" msgstr "網路管理員"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "VPN 密碼" msgstr "VPN 密碼"
@ -1141,7 +1025,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:787 #: js/ui/components/telepathyClient.js:823
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s 現在被稱為 %s" msgstr "%s 現在被稱為 %s"
@ -1185,124 +1069,124 @@ msgstr "加入世界時鐘…"
msgid "World Clocks" msgid "World Clocks"
msgstr "世界時鐘" msgstr "世界時鐘"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "天氣" msgstr "天氣"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "選擇位置…" msgstr "選擇位置…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "載入中…" msgstr "載入中…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:436
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "上線以取得天氣資訊" msgstr "上線以取得天氣資訊"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "天氣資訊目前不可使用" msgstr "天氣資訊目前不可使用"
#: js/ui/endSessionDialog.js:37 #: js/ui/endSessionDialog.js:39
#, javascript-format #, javascript-format
msgctxt "title" msgctxt "title"
msgid "Log Out %s" msgid "Log Out %s"
msgstr "登出 %s" msgstr "登出 %s"
#: js/ui/endSessionDialog.js:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "登出" msgstr "登出"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, 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 會在 %d 秒後自動登出。" msgstr[0] "%s 會在 %d 秒後自動登出。"
#: js/ui/endSessionDialog.js:45 #: js/ui/endSessionDialog.js:47
#, 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] "您會在 %d 秒後自動登出。" msgstr[0] "您會在 %d 秒後自動登出。"
#: js/ui/endSessionDialog.js:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "登出" msgstr "登出"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "關閉電源" msgstr "關閉電源"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "安裝更新並關機" msgstr "安裝更新並關機"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:61
#, 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] "系統會在 %d 秒後關閉電源。" msgstr[0] "系統會在 %d 秒後關閉電源。"
#: js/ui/endSessionDialog.js:63 #: js/ui/endSessionDialog.js:65
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "安裝擱置的軟體更新" msgstr "安裝擱置的軟體更新"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "重新啟動" msgstr "重新啟動"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "關閉電源" msgstr "關閉電源"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "重新啟動" msgstr "重新啟動"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, 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] "系統會在 %d 秒後自動重新啟動。" msgstr[0] "系統會在 %d 秒後自動重新啟動。"
#: js/ui/endSessionDialog.js:89 #: js/ui/endSessionDialog.js:91
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "重新啟動並安裝更新" msgstr "重新啟動並安裝更新"
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:93
#, 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 ""
"The system will automatically restart and install updates in %d seconds." "The system will automatically restart and install updates in %d seconds."
msgstr[0] "系統會在 %d 秒後自動重新啟動。" msgstr[0] "系統會在 %d 秒後自動重新啟動。"
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "重新啟動並安裝" msgstr "重新啟動並安裝"
#: js/ui/endSessionDialog.js:98 #: js/ui/endSessionDialog.js:100
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "安裝並關機" msgstr "安裝並關機"
#: js/ui/endSessionDialog.js:99 #: js/ui/endSessionDialog.js:101
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "在安裝完更新之後關機" msgstr "在安裝完更新之後關機"
#: js/ui/endSessionDialog.js:106 #: js/ui/endSessionDialog.js:108
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "重新啟動並安裝升級" msgstr "重新啟動並安裝升級"
@ -1310,7 +1194,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:111 #: js/ui/endSessionDialog.js:113
#, 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 "
@ -1319,15 +1203,15 @@ msgstr ""
"%s %s 將在重新啟動之後展開安裝。升級的過程可能會花上一段較長的時間:請確認您" "%s %s 將在重新啟動之後展開安裝。升級的過程可能會花上一段較長的時間:請確認您"
"已有備份,並且已將電腦電源插上。" "已有備份,並且已將電腦電源插上。"
#: js/ui/endSessionDialog.js:259 #: js/ui/endSessionDialog.js:261
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:268 #: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "部分應用程式忙碌中或有未儲存的工作" msgstr "部分應用程式忙碌中或有未儲存的工作"
#: js/ui/endSessionDialog.js:273 #: js/ui/endSessionDialog.js:275
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "其他使用者已登入" msgstr "其他使用者已登入"
@ -1343,24 +1227,24 @@ msgstr "%s (遠端)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (主控臺)" msgstr "%s (主控臺)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "安裝" msgstr "安裝"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "安裝擴充套件" msgstr "安裝擴充套件"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:192
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "是否從 extensions.gnome.org 下載並安裝「%s」" msgstr "是否從 extensions.gnome.org 下載並安裝「%s」"
#: js/ui/extensionSystem.js:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "有擴充套件的更新" msgstr "有擴充套件的更新"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "擴充套件更新已準備好安裝。" msgstr "擴充套件更新已準備好安裝。"
@ -1458,59 +1342,59 @@ msgstr "離開"
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "地區和語言設定值" msgstr "地區和語言設定值"
#: js/ui/lookingGlass.js:659 #: js/ui/lookingGlass.js:665
msgid "No extensions installed" msgid "No extensions installed"
msgstr "沒有安裝擴充套件" msgstr "沒有安裝擴充套件"
#. Translators: argument is an extension UUID. #. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714 #: js/ui/lookingGlass.js:720
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s 沒有發出任何錯誤。" msgstr "%s 沒有發出任何錯誤。"
#: js/ui/lookingGlass.js:720 #: js/ui/lookingGlass.js:726
msgid "Hide Errors" msgid "Hide Errors"
msgstr "隱藏錯誤" msgstr "隱藏錯誤"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789 #: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors" msgid "Show Errors"
msgstr "顯示錯誤" msgstr "顯示錯誤"
#: js/ui/lookingGlass.js:733 #: js/ui/lookingGlass.js:739
msgid "Enabled" msgid "Enabled"
msgstr "已啟用" msgstr "已啟用"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892 #: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled" msgid "Disabled"
msgstr "已停用" msgstr "已停用"
#: js/ui/lookingGlass.js:738 #: js/ui/lookingGlass.js:744
msgid "Error" msgid "Error"
msgstr "錯誤" msgstr "錯誤"
#: js/ui/lookingGlass.js:740 #: js/ui/lookingGlass.js:746
msgid "Out of date" msgid "Out of date"
msgstr "過期" msgstr "過期"
#: js/ui/lookingGlass.js:742 #: js/ui/lookingGlass.js:748
msgid "Downloading" msgid "Downloading"
msgstr "下載中" msgstr "下載中"
#: js/ui/lookingGlass.js:771 #: js/ui/lookingGlass.js:777
msgid "View Source" msgid "View Source"
msgstr "檢示來源" msgstr "檢示來源"
#: js/ui/lookingGlass.js:780 #: js/ui/lookingGlass.js:786
msgid "Web Page" msgid "Web Page"
msgstr "網頁" msgstr "網頁"
#: js/ui/main.js:267 #: js/ui/main.js:277
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "以特權使用者身分登入" msgstr "以特權使用者身分登入"
#: js/ui/main.js:268 #: js/ui/main.js:278
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."
@ -1518,15 +1402,15 @@ msgstr ""
"因安全因素,應避免在特權使用者執行工作階段。如果可以,應以一般使用者身份登" "因安全因素,應避免在特權使用者執行工作階段。如果可以,應以一般使用者身份登"
"入。" "入。"
#: js/ui/main.js:274 #: js/ui/main.js:317
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "已停用螢幕鎖定" msgstr "已停用螢幕鎖定"
#: js/ui/main.js:275 #: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "螢幕鎖定需要 GNOME 登入管理員。" msgstr "螢幕鎖定需要 GNOME 登入管理員。"
#: js/ui/messageTray.js:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "系統資訊" msgstr "系統資訊"
@ -1610,12 +1494,12 @@ msgstr "結束"
msgid "Activities" msgid "Activities"
msgstr "概覽" msgstr "概覽"
#: js/ui/panel.js:707 #: js/ui/panel.js:713
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "系統" msgstr "系統"
#: js/ui/panel.js:820 #: js/ui/panel.js:826
msgid "Top Bar" msgid "Top Bar"
msgstr "頂端列" msgstr "頂端列"
@ -1730,13 +1614,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:469 #: js/ui/shellMountOperation.js:465
#, 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:471 #: js/ui/shellMountOperation.js:467
#, javascript-format #, javascript-format
msgid "Couldnt find the %s application" msgid "Couldnt find the %s application"
msgstr "找不到 %s 應用程式" msgstr "找不到 %s 應用程式"
@ -1832,11 +1716,11 @@ msgstr "右鍵"
msgid "Dwell Click" msgid "Dwell Click"
msgstr "替代點選" msgstr "替代點選"
#: js/ui/status/keyboard.js:825 #: js/ui/status/keyboard.js:826
msgid "Keyboard" msgid "Keyboard"
msgstr "鍵盤" msgstr "鍵盤"
#: js/ui/status/keyboard.js:847 #: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "顯示鍵盤配置" msgstr "顯示鍵盤配置"
@ -2202,11 +2086,11 @@ msgstr "Thunderbolt 授權錯誤"
msgid "Could not authorize the Thunderbolt device: %s" msgid "Could not authorize the Thunderbolt device: %s"
msgstr "無法授權該 Thunderbolt 裝置:%s" msgstr "無法授權該 Thunderbolt 裝置:%s"
#: js/ui/status/volume.js:150 #: js/ui/status/volume.js:151
msgid "Volume changed" msgid "Volume changed"
msgstr "音量已變更" msgstr "音量已變更"
#: js/ui/status/volume.js:221 #: js/ui/status/volume.js:222
msgid "Volume" msgid "Volume"
msgstr "音量" msgstr "音量"
@ -2240,22 +2124,26 @@ 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:372 #: js/ui/unlockDialog.js:371
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%b%-d日%A" msgstr "%b%-d日%A"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:377
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "向上滑動解鎖" msgstr "向上滑動解鎖"
#: js/ui/unlockDialog.js:379 #: js/ui/unlockDialog.js:378
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "點選或按按鍵解鎖" msgstr "點選或按按鍵解鎖"
#: js/ui/unlockDialog.js:552 #: js/ui/unlockDialog.js:550
msgid "Unlock Window" msgid "Unlock Window"
msgstr "解鎖視窗" msgstr "解鎖視窗"
#: js/ui/unlockDialog.js:559
msgid "Log in as another user"
msgstr "以另一個使用者身分登入"
#: js/ui/viewSelector.js:181 #: js/ui/viewSelector.js:181
msgid "Applications" msgid "Applications"
msgstr "應用程式" msgstr "應用程式"
@ -2370,19 +2258,19 @@ msgstr "關閉"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution 行事曆" msgstr "Evolution 行事曆"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "顯示版本" msgstr "顯示版本"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "GDM 在登入畫面使用的模式" msgstr "GDM 在登入畫面使用的模式"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "使用指定的模式例如「gdm」為登入畫面" msgstr "使用指定的模式例如「gdm」為登入畫面"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "列出可能的模式" msgstr "列出可能的模式"
@ -2408,6 +2296,130 @@ 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 "管理 GNOME Shell 擴充套件"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"GNOME 擴充套件,能處理擴充套件的更新、調整擴充套件偏好設定、移除或停用不想用"
"的擴充套件等。"
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "設定 GNOME Shell 擴充套件"
#: 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 "Cheng-Chia Tseng <pswo10680@gmail.com>, 2020."
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d 個擴充套件會在下次登入時更新。"
#: 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 ""
"非常抱歉,但無法取得已安裝擴充套件的清單。請確定您已登入 GNOME 後重試。"
#: 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
@ -2742,6 +2754,9 @@ msgstr[0] "%u 輸入"
msgid "System Sounds" msgid "System Sounds"
msgstr "系統音效" msgstr "系統音效"
#~ msgid "Copy Error"
#~ msgstr "複製錯誤"
#~ msgid "Browse in Software" #~ msgid "Browse in Software"
#~ msgstr "在《軟體》中瀏覽" #~ msgstr "在《軟體》中瀏覽"
@ -2785,9 +2800,6 @@ msgstr "系統音效"
#~ msgid_plural "%d new notifications" #~ msgid_plural "%d new notifications"
#~ msgstr[0] "%d 個新通知" #~ msgstr[0] "%d 個新通知"
#~ msgid "Log in as another user"
#~ msgstr "以另一個使用者身分登入"
#~ msgid "" #~ msgid ""
#~ "Keybinding that pauses and resumes all running tweens, for debugging " #~ "Keybinding that pauses and resumes all running tweens, for debugging "
#~ "purposes" #~ "purposes"

@ -109,11 +109,17 @@ 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, name)) if (g_hash_table_contains (folders, stripped_name))
continue; continue;
filename = g_build_filename (path, name, NULL); filename = g_build_filename (path, name, NULL);
@ -128,7 +134,8 @@ load_folder (GHashTable *folders,
NULL, NULL); NULL, NULL);
if (translated != NULL) if (translated != NULL)
g_hash_table_insert (folders, g_strdup (name), translated); g_hash_table_insert (folders, g_steal_pointer (&stripped_name),
translated);
} }
} }
} }

@ -360,6 +360,18 @@ update_fbo (FramebufferData *data,
float new_width = floorf (width / downscale_factor); float new_width = floorf (width / downscale_factor);
float new_height = floorf (height / downscale_factor); float new_height = floorf (height / downscale_factor);
if (G_UNLIKELY (new_width < 1.0f))
{
g_warning ("%s: Correcting width from %f to 1", G_STRLOC, new_width);
new_width = 1.0f;
}
if (G_UNLIKELY (new_height < 1.0f))
{
g_warning ("%s: Correcting height from %f to 1", G_STRLOC, new_height);
new_height = 1.0f;
}
data->texture = cogl_texture_2d_new_with_size (ctx, new_width, new_height); data->texture = cogl_texture_2d_new_with_size (ctx, new_width, new_height);
if (!data->texture) if (!data->texture)
return FALSE; return FALSE;

@ -38,7 +38,7 @@
</description> </description>
<releases> <releases>
<release version="3.36.0" date="2020-03-07"/> <release version="3.37.0" date="2020-03-31"/>
</releases> </releases>
<screenshots> <screenshots>

@ -93,6 +93,7 @@
<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>

@ -201,10 +201,7 @@ 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) {

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

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

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