Compare commits

...

11 Commits

Author SHA1 Message Date
f0cf611e1b shell: Update to MetaCursorTracker API change
The pointer coordinates in meta_cursor_tracker_get_pointer() are now
returned as a graphene_point_t.
2020-08-13 19:49:11 +00:00
beddbc0583 st/test-theme: Use stage from mutter
Clutter application style stages not supported anymore.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1359
2020-08-13 12:46:22 +00:00
2f840174cb Updated Spanish translation 2020-08-13 10:41:32 +02:00
015559a207 Updated Spanish translation 2020-08-13 10:33:26 +02:00
98d6c4e8dd Update Catalan translation 2020-08-13 09:26:56 +02:00
1675b54738 Updated Galician translations 2020-08-13 01:40:06 +02:00
44cbd1e718 libcroco: Limit recursion in block and any productions (CVE-2020-12825)
If we don't have any limits, we can recurse forever and overflow the
stack.

This is per https://gitlab.gnome.org/Archive/libcroco/-/issues/8

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1404
2020-08-12 15:06:27 -05:00
0dc1e1e99a perf: Add basic run tests
While the performance framework was originally written to collect
performance metrics, driving the shell by an automated script is
also useful to ensure that basic functionality is working.

Add such a basic test, initially checking top bar menus, notifications
and the overview.

Eventually it would be nice to separate the automatic scripting from
gathering performance metrics, but IMHO that can wait until we switch
from gjs' custom imports system to ES modules.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1396
2020-08-12 15:43:39 +00:00
1029e683d3 perf-tool: Expose --x11 option
Running with the X11 backend is no longer as easy as not specifying
wayland, so expose mutter's --x11 option to allow enforcing the X11
backend for testing.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1396
2020-08-12 15:43:38 +00:00
cf1d09b482 environment: Mark transitions as "work"
global.run_at_leisure() is used from automated scripts to schedule
a callback when the shell is idle. However since we moved away from
Tweener, animations are no longer taken into account; fix this by
marking transitions as "work" if the convenience ease() functions
are used.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1396
2020-08-12 15:43:38 +00:00
a436226266 scripting: Switch to standard async/await pattern
The original scripting framework was based on SpiderMonkey's
pre-standard generators, and was simply translated to the
corresponding standard syntax when updating it to work with
recent JS versions.

We can do even better by using the standard async/await pattern
instead of generators/yield.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1396
2020-08-12 15:43:38 +00:00
14 changed files with 1310 additions and 899 deletions

View File

@ -32,6 +32,7 @@
<file>misc/util.js</file>
<file>misc/weather.js</file>
<file>perf/basic.js</file>
<file>perf/core.js</file>
<file>perf/hwtest.js</file>

146
js/perf/basic.js Normal file
View File

@ -0,0 +1,146 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported run, finish, script_topBarNavDone, script_notificationShowDone,
script_notificationCloseDone, script_overviewShowDone,
script_applicationsShowStart, script_applicationsShowDone, METRICS,
*/
/* eslint camelcase: ["error", { properties: "never", allow: ["^script_"] }] */
const { St } = imports.gi;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const Scripting = imports.ui.scripting;
// This script tests the most important (basic) functionality of the shell.
var METRICS = {};
async function run() {
/* eslint-disable no-await-in-loop */
Scripting.defineScriptEvent('topBarNavStart', 'Starting to navigate the top bar');
Scripting.defineScriptEvent('topBarNavDone', 'Done navigating the top bar');
Scripting.defineScriptEvent('notificationShowStart', 'Showing a notification');
Scripting.defineScriptEvent('notificationShowDone', 'Done showing a notification');
Scripting.defineScriptEvent('notificationCloseStart', 'Closing a notification');
Scripting.defineScriptEvent('notificationCloseDone', 'Done closing a notification');
Scripting.defineScriptEvent('overviewShowStart', 'Starting to show the overview');
Scripting.defineScriptEvent('overviewShowDone', 'Overview finished showing');
Scripting.defineScriptEvent('applicationsShowStart', 'Starting to switch to applications view');
Scripting.defineScriptEvent('applicationsShowDone', 'Done switching to applications view');
Main.overview.connect('shown',
() => Scripting.scriptEvent('overviewShowDone'));
await Scripting.sleep(1000);
// navigate through top bar
Scripting.scriptEvent('topBarNavStart');
Main.panel.statusArea.aggregateMenu.menu.open();
await Scripting.sleep(400);
const { menuManager } = Main.panel;
while (menuManager.activeMenu &&
Main.panel.navigate_focus(menuManager.activeMenu.sourceActor,
St.DirectionType.TAB_BACKWARD, false))
await Scripting.sleep(400);
Scripting.scriptEvent('topBarNavDone');
await Scripting.sleep(1000);
// notification
const source = new MessageTray.SystemNotificationSource();
Main.messageTray.add(source);
Scripting.scriptEvent('notificationShowStart');
source.connect('notification-show',
() => Scripting.scriptEvent('notificationShowDone'));
const notification = new MessageTray.Notification(source,
'A test notification');
source.showNotification(notification);
await Scripting.sleep(400);
Main.panel.statusArea.dateMenu.menu.open();
await Scripting.sleep(400);
Scripting.scriptEvent('notificationCloseStart');
notification.connect('destroy',
() => Scripting.scriptEvent('notificationCloseDone'));
notification.destroy();
await Scripting.sleep(400);
Main.panel.statusArea.dateMenu.menu.close();
await Scripting.waitLeisure();
await Scripting.sleep(1000);
// overview (window picker)
Scripting.scriptEvent('overviewShowStart');
Main.overview.show();
await Scripting.waitLeisure();
Main.overview.hide();
await Scripting.waitLeisure();
await Scripting.sleep(1000);
// overview (app picker)
Main.overview.show();
await Scripting.waitLeisure();
Scripting.scriptEvent('applicationsShowStart');
// eslint-disable-next-line require-atomic-updates
Main.overview.dash.showAppsButton.checked = true;
await Scripting.waitLeisure();
Scripting.scriptEvent('applicationsShowDone');
// eslint-disable-next-line require-atomic-updates
Main.overview.dash.showAppsButton.checked = false;
await Scripting.waitLeisure();
Main.overview.hide();
await Scripting.waitLeisure();
/* eslint-enable no-await-in-loop */
}
let topBarNav = false;
let notificationShown = false;
let notificationClosed = false;
let windowPickerShown = false;
let appPickerShown = false;
function script_topBarNavDone() {
topBarNav = true;
}
function script_notificationShowDone() {
notificationShown = true;
}
function script_notificationCloseDone() {
notificationClosed = true;
}
function script_overviewShowDone() {
windowPickerShown = true;
}
function script_applicationsShowDone() {
appPickerShown = true;
}
function finish() {
if (!topBarNav)
throw new Error('Failed to navigate top bar');
if (!notificationShown)
throw new Error('Failed to show notification');
if (!notificationClosed)
throw new Error('Failed to close notification');
if (!windowPickerShown)
throw new Error('Failed to show window picker');
if (!appPickerShown)
throw new Error('Failed to show app picker');
}

View File

@ -70,7 +70,8 @@ let WINDOW_CONFIGS = [
{ width: 640, height: 480, alpha: true, maximized: false, count: 10, metric: 'overviewFps10Alpha' },
];
function *run() {
async function run() {
/* eslint-disable no-await-in-loop */
Scripting.defineScriptEvent("overviewShowStart", "Starting to show the overview");
Scripting.defineScriptEvent("overviewShowDone", "Overview finished showing");
Scripting.defineScriptEvent("afterShowHide", "After a show/hide cycle for the overview");
@ -84,7 +85,7 @@ function *run() {
Scripting.scriptEvent('overviewShowDone');
});
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
for (let i = 0; i < 2 * WINDOW_CONFIGS.length; i++) {
// We go to the overview twice for each configuration; the first time
@ -92,49 +93,50 @@ function *run() {
// a clean set of numbers.
if ((i % 2) == 0) {
let config = WINDOW_CONFIGS[i / 2];
yield Scripting.destroyTestWindows();
await Scripting.destroyTestWindows();
for (let k = 0; k < config.count; k++) {
yield Scripting.createTestWindow({ width: config.width,
await Scripting.createTestWindow({ width: config.width,
height: config.height,
alpha: config.alpha,
maximized: config.maximized });
}
yield Scripting.waitTestWindows();
yield Scripting.sleep(1000);
yield Scripting.waitLeisure();
await Scripting.waitTestWindows();
await Scripting.sleep(1000);
await Scripting.waitLeisure();
}
Scripting.scriptEvent('overviewShowStart');
Main.overview.show();
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
Main.overview.hide();
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
System.gc();
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.collectStatistics();
Scripting.scriptEvent('afterShowHide');
}
yield Scripting.destroyTestWindows();
yield Scripting.sleep(1000);
await Scripting.destroyTestWindows();
await Scripting.sleep(1000);
Main.overview.show();
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
for (let i = 0; i < 2; i++) {
Scripting.scriptEvent('applicationsShowStart');
// eslint-disable-next-line require-atomic-updates
Main.overview.dash.showAppsButton.checked = true;
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
Scripting.scriptEvent('applicationsShowDone');
// eslint-disable-next-line require-atomic-updates
Main.overview.dash.showAppsButton.checked = false;
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
}
/* eslint-enable no-await-in-loop */
}
let showingOverview = false;

View File

@ -94,7 +94,8 @@ function extractBootTimestamp() {
return result;
}
function *run() {
async function run() {
/* eslint-disable no-await-in-loop */
Scripting.defineScriptEvent("desktopShown", "Finished initial animation");
Scripting.defineScriptEvent("overviewShowStart", "Starting to show the overview");
Scripting.defineScriptEvent("overviewShowDone", "Overview finished showing");
@ -110,7 +111,7 @@ function *run() {
Scripting.defineScriptEvent("geditLaunch", "gedit application launch");
Scripting.defineScriptEvent("geditFirstFrame", "first frame of gedit window drawn");
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
Scripting.scriptEvent('desktopShown');
let interfaceSettings = new Gio.Settings({
@ -120,22 +121,22 @@ function *run() {
Scripting.scriptEvent('overviewShowStart');
Main.overview.show();
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
Scripting.scriptEvent('overviewShowDone');
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.scriptEvent('applicationsShowStart');
// eslint-disable-next-line require-atomic-updates
Main.overview.dash.showAppsButton.checked = true;
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
Scripting.scriptEvent('applicationsShowDone');
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Main.overview.hide();
yield Scripting.waitLeisure();
await Scripting.waitLeisure();
// --------------------- //
// Tests of redraw speed //
@ -145,46 +146,46 @@ function *run() {
global.frame_finish_timestamp = true;
for (let k = 0; k < 5; k++)
yield Scripting.createTestWindow({ maximized: true });
yield Scripting.waitTestWindows();
await Scripting.createTestWindow({ maximized: true });
await Scripting.waitTestWindows();
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.scriptEvent('mainViewDrawStart');
yield waitAndDraw(1000);
await waitAndDraw(1000);
Scripting.scriptEvent('mainViewDrawDone');
Main.overview.show();
Scripting.waitLeisure();
yield Scripting.sleep(1500);
await Scripting.sleep(1500);
Scripting.scriptEvent('overviewDrawStart');
yield waitAndDraw(1000);
await waitAndDraw(1000);
Scripting.scriptEvent('overviewDrawDone');
yield Scripting.destroyTestWindows();
await Scripting.destroyTestWindows();
Main.overview.hide();
yield Scripting.createTestWindow({ maximized: true,
await Scripting.createTestWindow({ maximized: true,
redraws: true });
yield Scripting.waitTestWindows();
await Scripting.waitTestWindows();
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.scriptEvent('redrawTestStart');
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.scriptEvent('redrawTestDone');
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
Scripting.scriptEvent('collectTimings');
yield Scripting.destroyTestWindows();
await Scripting.destroyTestWindows();
global.frame_timestamps = false;
global.frame_finish_timestamp = false;
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
let appSys = Shell.AppSystem.get_default();
let app = appSys.lookup_app('org.gnome.gedit.desktop');
@ -197,21 +198,22 @@ function *run() {
throw new Error('gedit was already running');
while (windows.length == 0) {
yield waitSignal(global.display, 'window-created');
await waitSignal(global.display, 'window-created');
windows = app.get_windows();
}
let actor = windows[0].get_compositor_private();
yield waitSignal(actor, 'first-frame');
await waitSignal(actor, 'first-frame');
Scripting.scriptEvent('geditFirstFrame');
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
windows[0].delete(global.get_current_time());
yield Scripting.sleep(1000);
await Scripting.sleep(1000);
interfaceSettings.set_boolean('enable-animations', true);
/* eslint-enable no-await-in-loop */
}
let overviewShowStart;

View File

@ -134,7 +134,14 @@ function _easeActor(actor, params) {
actor.set_easing_mode(params.mode);
delete params.mode;
let cleanup = () => Meta.enable_unredirect_for_display(global.display);
const prepare = () => {
Meta.disable_unredirect_for_display(global.display);
global.begin_work();
};
const cleanup = () => {
Meta.enable_unredirect_for_display(global.display);
global.end_work();
};
let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transitions
@ -149,9 +156,9 @@ function _easeActor(actor, params) {
.find(t => t !== null);
if (transition && transition.delay)
transition.connect('started', () => Meta.disable_unredirect_for_display(global.display));
transition.connect('started', () => prepare());
else
Meta.disable_unredirect_for_display(global.display);
prepare();
if (transition) {
transition.set({ repeatCount, autoReverse });
@ -191,7 +198,14 @@ function _easeActorProperty(actor, propName, target, params) {
if (actor instanceof Clutter.Actor && !actor.mapped)
duration = 0;
let cleanup = () => Meta.enable_unredirect_for_display(global.display);
const prepare = () => {
Meta.disable_unredirect_for_display(global.display);
global.begin_work();
};
const cleanup = () => {
Meta.enable_unredirect_for_display(global.display);
global.end_work();
};
let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transition
@ -203,7 +217,7 @@ function _easeActorProperty(actor, propName, target, params) {
if (!isReversed)
obj[prop] = target;
Meta.disable_unredirect_for_display(global.display);
prepare();
callback(true);
return;
@ -222,9 +236,9 @@ function _easeActorProperty(actor, propName, target, params) {
transition.set_to(target);
if (transition.delay)
transition.connect('started', () => Meta.disable_unredirect_for_display(global.display));
transition.connect('started', () => prepare());
else
Meta.disable_unredirect_for_display(global.display);
prepare();
transition.connect('stopped', (t, finished) => callback(finished));
}

View File

@ -21,16 +21,13 @@ const { loadInterfaceXML } = imports.misc.fileUtils;
// When scripting an automated test we want to make a series of calls
// in a linear fashion, but we also want to be able to let the main
// loop run so actions can finish. For this reason we write the script
// as a generator function that yields when it want to let the main
// as an async function that uses await when it wants to let the main
// loop run.
//
// yield Scripting.sleep(1000);
// await Scripting.sleep(1000);
// main.overview.show();
// yield Scripting.waitLeisure();
// await Scripting.waitLeisure();
//
// While it isn't important to the person writing the script, the actual
// yielded result is a function that the caller uses to provide the
// callback for resuming the script.
/**
* sleep:
@ -285,13 +282,11 @@ function _collect(scriptModule, outputFile) {
}
async function _runPerfScript(scriptModule, outputFile) {
for (let step of scriptModule.run()) {
try {
await step; // eslint-disable-line no-await-in-loop
} catch (err) {
log(`Script failed: ${err}\n${err.stack}`);
Meta.exit(Meta.ExitCode.ERROR);
}
try {
await scriptModule.run();
} catch (err) {
log(`Script failed: ${err}\n${err.stack}`);
Meta.exit(Meta.ExitCode.ERROR);
}
try {

296
po/ca.po
View File

@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: HEAD\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-07-22 01:49+0000\n"
"POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-05-15 20:39+0200\n"
"Last-Translator: Robert Antoni Buj Gelonch <rbuj@fedoraproject.org>\n"
"Language-Team: Catalan <tradgnome@softcatala.org>\n"
@ -182,8 +182,8 @@ msgstr ""
msgid ""
"Whether to remember password for mounting encrypted or remote filesystems"
msgstr ""
"Si s'han de recordar les contrasenyes dels punts de muntatge xifrat o "
"els sistemes de fitxers remots"
"Si s'han de recordar les contrasenyes dels punts de muntatge xifrat o els "
"sistemes de fitxers remots"
#: data/org.gnome.shell.gschema.xml.in:87
msgid ""
@ -192,9 +192,9 @@ msgid ""
"“Remember Password” checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu "
"xifrat o un sistema de fitxers remot. Si es pot desar la contrasenya per "
"a utilitzar-la en el futur, es mostrarà la casella de selecció «Recorda la "
"El GNOME Shell us demanarà la contrasenya quan es munti un dispositiu xifrat"
" o un sistema de fitxers remot. Si es pot desar la contrasenya per a "
"utilitzar-la en el futur, es mostrarà la casella de selecció «Recorda la "
"contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella "
"de selecció."
@ -454,9 +454,9 @@ msgstr "Visiteu la pàgina d'inici de l'extensió"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:369 js/ui/extensionDownloader.js:183
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:183
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:149
#: js/ui/status/network.js:940 subprojects/extensions-app/js/main.js:149
msgid "Cancel"
msgstr "Cancel·la"
@ -492,7 +492,7 @@ msgstr "(p. ex. l'usuari o %s)"
msgid "Username"
msgstr "Nom d'usuari"
#: js/gdm/loginDialog.js:1254
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Finestra d'entrada"
@ -510,77 +510,89 @@ msgid "(or swipe finger)"
msgstr "(o passeu el dit)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:91
msgctxt "search-result"
msgid "Power Off"
msgstr "Apaga"
#. Translators: A list of keywords that match the power-off action, separated
#. by semicolons
#: js/misc/systemActions.js:96
msgid "power off;shutdown;reboot;restart;halt;stop"
#: js/misc/systemActions.js:94
msgid "power off;shutdown;halt;stop"
msgstr "apaga;atura;reinicia"
#. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Restart"
msgstr "Reinicia"
#. Translators: A list of keywords that match the restart action, separated by
#. semicolons
#: js/misc/systemActions.js:102
msgid "reboot;restart;"
msgstr "reinicia;reinici;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:107
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Bloqueja la pantalla"
#. Translators: A list of keywords that match the lock screen action,
#. separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:110
msgid "lock screen"
msgstr "bloca la pantalla"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:115
msgctxt "search-result"
msgid "Log Out"
msgstr "Surt"
#. Translators: A list of keywords that match the logout action, separated by
#. semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:118
msgid "logout;log out;sign off"
msgstr "desconnecta;sortida;surt"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:123
msgctxt "search-result"
msgid "Suspend"
msgstr "Atura temporalment"
#. Translators: A list of keywords that match the suspend action, separated by
#. semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:126
msgid "suspend;sleep"
msgstr "atura temporalment;dorm"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:131
msgctxt "search-result"
msgid "Switch User"
msgstr "Canvia d'usuari"
#. Translators: A list of keywords that match the switch user action,
#. separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:134
msgid "switch user"
msgstr "canvia d'usuari"
#. Translators: A list of keywords that match the lock orientation action,
#. separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:141
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "bloqueja l'orientació;desbloqueja l'orientació;pantalla;rotació"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:266
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Desbloqueja la rotació de la pantalla"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:267
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Bloqueja la rotació de la pantalla"
@ -751,31 +763,31 @@ msgid "Unnamed Folder"
msgstr "Carpeta sense nom"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2767 js/ui/panel.js:75
#: js/ui/appDisplay.js:2762 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Obre finestres"
#: js/ui/appDisplay.js:2786 js/ui/panel.js:82
#: js/ui/appDisplay.js:2781 js/ui/panel.js:82
msgid "New Window"
msgstr "Finestra nova"
#: js/ui/appDisplay.js:2802
#: js/ui/appDisplay.js:2797
msgid "Launch using Integrated Graphics Card"
msgstr "Inicia usant una targeta gràfica integrada"
#: js/ui/appDisplay.js:2803
#: js/ui/appDisplay.js:2798
msgid "Launch using Discrete Graphics Card"
msgstr "Inicia usant una targeta gràfica discreta"
#: js/ui/appDisplay.js:2831 js/ui/dash.js:239
#: js/ui/appDisplay.js:2826 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Suprimeix dels preferits"
#: js/ui/appDisplay.js:2837
#: js/ui/appDisplay.js:2832
msgid "Add to Favorites"
msgstr "Afegeix als preferits"
#: js/ui/appDisplay.js:2847 js/ui/panel.js:93
#: js/ui/appDisplay.js:2842 js/ui/panel.js:93
msgid "Show Details"
msgstr "Mostra els detalls"
@ -974,8 +986,8 @@ msgid ""
msgstr ""
"També us podeu connectar prement el botó «WPS» del vostre encaminador."
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:227
#: js/ui/status/network.js:318 js/ui/status/network.js:919
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:252
#: js/ui/status/network.js:343 js/ui/status/network.js:943
msgid "Connect"
msgstr "Connecta"
@ -1040,7 +1052,7 @@ msgstr "PIN"
msgid "A password is required to connect to “%s”."
msgstr "Cal introduir una contrasenya per a connectar-vos a «%s»."
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1694
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1718
msgid "Network Manager"
msgstr "Gestor de connexions de xarxa"
@ -1166,86 +1178,91 @@ msgstr "El temps"
msgid "Select weather location…"
msgstr "Trieu una ubicació pel temps…"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Sortida %s"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Sortida"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:43
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s sortirà de la sessió automàticament d'aquí %d segon."
msgstr[1] "%s sortirà de la sessió automàticament d'aquí %d segons."
#: js/ui/endSessionDialog.js:45
#: js/ui/endSessionDialog.js:49
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Sortireu automàticament d'aquí %d segon."
msgstr[1] "Sortireu automàticament d'aquí %d segons."
#: js/ui/endSessionDialog.js:51
#: js/ui/endSessionDialog.js:56
msgctxt "button"
msgid "Log Out"
msgstr "Surt"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:62
msgctxt "title"
msgid "Power Off"
msgstr "Apagada"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:63
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instal·la les actualitzacions i apaga"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:66
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "S'apagarà l'ordinador automàticament d'aquí %d segon."
msgstr[1] "S'apagarà l'ordinador automàticament d'aquí %d segons."
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instal·la les actualitzacions pendents"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Reinicia"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:74
msgctxt "button"
msgid "Power Off"
msgstr "Apaga"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:81
msgctxt "title"
msgid "Restart"
msgstr "Reinici"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:82
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instal·la les actualitzacions i reinicia"
#: js/ui/endSessionDialog.js:85
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Es reiniciarà l'ordinador automàticament d'aquí %d segon."
msgstr[1] "Es reiniciarà l'ordinador automàticament d'aquí %d segons."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:93
msgctxt "button"
msgid "Restart"
msgstr "Reinicia"
#: js/ui/endSessionDialog.js:101
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Reinicia i instal·la les actualitzacions"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:104
#, javascript-format
msgid ""
"The system will automatically restart and install updates in %d second."
@ -1258,22 +1275,22 @@ msgstr[1] ""
"Es reiniciarà l'ordinador automàticament i s'instal·laran les "
"actualitzacions d'aquí %d segons."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Reinicia i instal·la"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:113
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instal·la i apaga"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:114
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Apaga després d'instal·lar les actualitzacions"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:121
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Reinicia i instal·la l'actualització"
@ -1281,7 +1298,7 @@ msgstr "Reinicia i instal·la l'actualització"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:126
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1291,30 +1308,35 @@ msgstr ""
"instal·lació pot trigar força temps. Assegureu-vos que heu fet còpia de "
"seguretat i que l'ordinador està connectat al corrent."
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
#: js/ui/endSessionDialog.js:284
msgid "Low battery power: please plug in before installing updates."
msgstr ""
"S'està utilitzant la bateria. Connecteu l'ordinador a la xarxa elèctrica "
"abans d'instal·lar les actualitzacions."
"Hi ha poca bateria. Connecteu l'ordinador a la xarxa elèctrica abans "
"d'instal·lar les actualitzacions."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:293
msgid "Some applications are busy or have unsaved work"
msgstr ""
"Hi ha algunes aplicacions que estan ocupades o que tenen documents sense "
"desar"
#: js/ui/endSessionDialog.js:273
#: js/ui/endSessionDialog.js:298
msgid "Other users are logged in"
msgstr "Altres usuaris tenen la sessió oberta"
#: js/ui/endSessionDialog.js:467
msgctxt "button"
msgid "Boot Options"
msgstr "Opcions d'arrencada"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:583
#: js/ui/endSessionDialog.js:685
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remot)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:688
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@ -1419,15 +1441,15 @@ msgid "Leave On"
msgstr "Deixa-ho actiu"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:1291
#: js/ui/status/network.js:1315
msgid "Turn On"
msgstr "Activa"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:135 js/ui/status/network.js:319
#: js/ui/status/network.js:1291 js/ui/status/network.js:1403
#: js/ui/status/network.js:160 js/ui/status/network.js:344
#: js/ui/status/network.js:1315 js/ui/status/network.js:1427
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
#: js/ui/status/rfkill.js:110
msgid "Turn Off"
msgstr "Desactiva"
@ -1488,11 +1510,11 @@ msgstr "Mostra el codi font"
msgid "Web Page"
msgstr "Pàgina web"
#: js/ui/main.js:297
#: js/ui/main.js:294
msgid "Logged in as a privileged user"
msgstr "Sessió iniciada com a usuari privilegiat"
#: js/ui/main.js:298
#: js/ui/main.js:295
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1500,11 +1522,11 @@ msgstr ""
"Cal evitar iniciar sessions com a usuari privilegiat per raons de seguretat."
" Si és possible, entreu com a un usuari normal."
#: js/ui/main.js:337
#: js/ui/main.js:334
msgid "Screen Lock disabled"
msgstr "La pantalla de bloqueig està inhabilitada"
#: js/ui/main.js:338
#: js/ui/main.js:335
msgid "Screen Locking requires the GNOME display manager."
msgstr "El bloqueig de pantalla requereix el gestor de pantalla del GNOME."
@ -1597,7 +1619,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:827
#: js/ui/panel.js:825
msgid "Top Bar"
msgstr "Barra superior"
@ -1772,7 +1794,7 @@ msgstr "Text gran"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:595
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:619
msgid "Bluetooth Settings"
msgstr "Paràmetres del Bluetooth"
@ -1856,19 +1878,19 @@ msgstr ""
"Podeu canviar la configuració de l'accés a la ubicació sempre que vulgueu "
"des de la configuració de la privacitat."
#: js/ui/status/network.js:70
#: js/ui/status/network.js:71
msgid "<unknown>"
msgstr "<desconegut>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:424 js/ui/status/network.js:1320
#: js/ui/status/network.js:449 js/ui/status/network.js:1344
#, javascript-format
msgid "%s Off"
msgstr "%s apagat"
#. Translators: %s is a network identifier
# N.T.: p. ex. Connectat amb fil
#: js/ui/status/network.js:427
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connected"
msgstr "Connectat %s"
@ -1877,26 +1899,26 @@ msgstr "Connectat %s"
#. are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:432
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s no gestionat"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435
#: js/ui/status/network.js:460
#, javascript-format
msgid "%s Disconnecting"
msgstr "%s s'està desconnectant"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:442 js/ui/status/network.js:1312
#: js/ui/status/network.js:467 js/ui/status/network.js:1336
#, javascript-format
msgid "%s Connecting"
msgstr "%s s'està connectant"
#. Translators: this is for network connections that require some kind of key
#. or password; %s is a network identifier
#: js/ui/status/network.js:445
#: js/ui/status/network.js:470
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requereix autenticació"
@ -1904,7 +1926,7 @@ msgstr "%s requereix autenticació"
#. Translators: this is for devices that require some kind of firmware or
#. kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:478
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Manca el microprogramari per %s"
@ -1912,159 +1934,159 @@ msgstr "Manca el microprogramari per %s"
#. Translators: this is for a network device that cannot be activated (for
#. example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:482
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponible"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:485
#, javascript-format
msgid "%s Connection Failed"
msgstr "%s ha fallat la connexió"
#: js/ui/status/network.js:472
#: js/ui/status/network.js:497
msgid "Wired Settings"
msgstr "Paràmetres de la xarxa amb fil"
#: js/ui/status/network.js:515
#: js/ui/status/network.js:540
msgid "Mobile Broadband Settings"
msgstr "Configuració de la xarxa de banda ampla mòbil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:562 js/ui/status/network.js:1317
#: js/ui/status/network.js:586 js/ui/status/network.js:1341
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s maquinari inhabilitat"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:566
#: js/ui/status/network.js:590
#, javascript-format
msgid "%s Disabled"
msgstr "%s Inhabilitat"
#: js/ui/status/network.js:607
#: js/ui/status/network.js:631
msgid "Connect to Internet"
msgstr "Connecta a Internet"
#: js/ui/status/network.js:811
#: js/ui/status/network.js:835
msgid "Airplane Mode is On"
msgstr "El mode d'avió és actiu"
#: js/ui/status/network.js:812
#: js/ui/status/network.js:836
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Quan el mode d'avió és actiu es desactiva la xarxa sense fil."
#: js/ui/status/network.js:813
#: js/ui/status/network.js:837
msgid "Turn Off Airplane Mode"
msgstr "Desactiva el mode d'avió"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:846
msgid "Wi-Fi is Off"
msgstr "La xarxa sense fil està desactivada"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:847
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr ""
"S'ha d'activar la xarxa sense fil per a poder-se connectar a una xarxa."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:848
msgid "Turn On Wi-Fi"
msgstr "Activa la xarxa sense fil"
#: js/ui/status/network.js:849
#: js/ui/status/network.js:873
msgid "Wi-Fi Networks"
msgstr "Xarxes sense fil"
#: js/ui/status/network.js:851
#: js/ui/status/network.js:875
msgid "Select a network"
msgstr "Trieu una xarxa"
#: js/ui/status/network.js:883
#: js/ui/status/network.js:907
msgid "No Networks"
msgstr "Cap xarxa"
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:928 js/ui/status/rfkill.js:108
msgid "Use hardware switch to turn off"
msgstr "Utilitza l'interruptor de maquinari per a desactivar-la"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1205
msgid "Select Network"
msgstr "Trieu una xarxa"
#: js/ui/status/network.js:1187
#: js/ui/status/network.js:1211
msgid "Wi-Fi Settings"
msgstr "Paràmetres de la xarxa sense fil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1332
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hostpot %s actiu"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1347
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no està connectat"
#: js/ui/status/network.js:1420
#: js/ui/status/network.js:1444
msgid "connecting…"
msgstr "s'està connectant..."
#. Translators: this is for network connections that require some kind of key
#. or password
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1447
msgid "authentication required"
msgstr "cal autenticació"
#: js/ui/status/network.js:1425
#: js/ui/status/network.js:1449
msgid "connection failed"
msgstr "ha fallat la connexió"
#: js/ui/status/network.js:1476
#: js/ui/status/network.js:1500
msgid "VPN Settings"
msgstr "Paràmetres de la VPN"
#: js/ui/status/network.js:1493
#: js/ui/status/network.js:1517
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1503
#: js/ui/status/network.js:1527
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1588 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Paràmetres de xarxa"
#: js/ui/status/network.js:1593
#: js/ui/status/network.js:1617
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s connexió amb fil"
msgstr[1] "%s connexions amb fil"
#: js/ui/status/network.js:1597
#: js/ui/status/network.js:1621
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s connexió Wifi"
msgstr[1] "%s connexions Wifi"
#: js/ui/status/network.js:1601
#: js/ui/status/network.js:1625
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s connexió mòdem"
msgstr[1] "%s connexions mòdem"
#: js/ui/status/network.js:1735
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Ha fallat la connexió"
#: js/ui/status/network.js:1736
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Ha fallat l'activació de la connexió de xarxa"
@ -2119,11 +2141,11 @@ msgstr "%d%02d per a completar la càrrega (%d %%)"
msgid "%d%%"
msgstr "%d%%"
#: js/ui/status/remoteAccess.js:43
#: js/ui/status/remoteAccess.js:45
msgid "Screen is Being Shared"
msgstr "Es comparteix la pantalla"
#: js/ui/status/remoteAccess.js:45
#: js/ui/status/remoteAccess.js:47
msgid "Turn off"
msgstr "Desactiva"
@ -2134,30 +2156,34 @@ msgstr "Desactiva"
msgid "Airplane Mode On"
msgstr "El mode d'avió és actiu"
#: js/ui/status/system.js:102
#: js/ui/status/system.js:104
msgid "Lock"
msgstr "Bloqueja"
#: js/ui/status/system.js:115
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Apaga / Surt"
#: js/ui/status/system.js:118
msgid "Log Out"
msgstr "Surt"
#: js/ui/status/system.js:130
msgid "Switch User…"
msgstr "Canvia d'usuari…"
#: js/ui/status/system.js:144
#: js/ui/status/system.js:119
msgid "Suspend"
msgstr "Atura temporalment"
#: js/ui/status/system.js:156
#: js/ui/status/system.js:130
msgid "Restart…"
msgstr "S'està reiniciant…"
#: js/ui/status/system.js:141
msgid "Power Off…"
msgstr "Atura…"
#: js/ui/status/system.js:154
msgid "Log Out"
msgstr "Surt"
#: js/ui/status/system.js:165
msgid "Switch User…"
msgstr "Canvia d'usuari…"
#: js/ui/status/thunderbolt.js:263
msgid "Thunderbolt"
msgstr "Thunderbolt"
@ -2262,21 +2288,21 @@ msgid "“%s” is ready"
msgstr "«%s» ja està a punt"
#. Translators: This string should be shorter than 30 characters
#: js/ui/windowManager.js:55
#: js/ui/windowManager.js:60
msgid "Keep these display settings?"
msgstr "Mantenir aquesta configuració de la pantalla?"
#. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels.
#: js/ui/windowManager.js:64
#: js/ui/windowManager.js:69
msgid "Revert Settings"
msgstr "Descarta els canvis"
#: js/ui/windowManager.js:67
#: js/ui/windowManager.js:72
msgid "Keep Changes"
msgstr "Mantén els canvis"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:91
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2285,7 +2311,7 @@ msgstr[1] "Es descartaran els canvis d'aquí %d segons"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:551
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"

295
po/es.po
View File

@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-07-27 06:59+0000\n"
"PO-Revision-Date: 2020-07-29 09:47+0200\n"
"POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-08-13 10:39+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
@ -446,9 +446,9 @@ msgstr "Visitar la página web de la extensión"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:110 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:369 js/ui/extensionDownloader.js:183
#: js/ui/endSessionDialog.js:438 js/ui/extensionDownloader.js:183
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:916 subprojects/extensions-app/js/main.js:149
#: js/ui/status/network.js:940 subprojects/extensions-app/js/main.js:149
msgid "Cancel"
msgstr "Cancelar"
@ -484,7 +484,7 @@ msgstr "(ej., usuario o %s)"
msgid "Username"
msgstr "Nombre de usuario"
#: js/gdm/loginDialog.js:1254
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
@ -502,71 +502,84 @@ msgid "(or swipe finger)"
msgstr "(o pase el dedo)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:91
msgctxt "search-result"
msgid "Power Off"
msgstr "Apagar"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
msgid "power off;shutdown;reboot;restart;halt;stop"
#: js/misc/systemActions.js:94
#| msgid "power off;shutdown;reboot;restart;halt;stop"
msgid "power off;shutdown;halt;stop"
msgstr "apagar;apagado;reinicio;reiniciar;detener;parar"
#. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99
#| msgid "Restart"
msgctxt "search-result"
msgid "Restart"
msgstr "Reiniciar"
#. Translators: A list of keywords that match the restart action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "reboot;restart;"
msgstr "reiniciar;rebotar;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:107
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Bloquear la pantalla"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:110
msgid "lock screen"
msgstr "bloquear;pantalla"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:115
msgctxt "search-result"
msgid "Log Out"
msgstr "Cerrar la sesión"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:118
msgid "logout;log out;sign off"
msgstr "cerrar;sesión;salir"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:123
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspender"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:126
msgid "suspend;sleep"
msgstr "suspender;dormir"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:131
msgctxt "search-result"
msgid "Switch User"
msgstr "Cambiar de usuario"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:134
msgid "switch user"
msgstr "cambiar;usuario"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:141
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "bloquear orientación;desbloquear orientación;pantalla;rotación"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:266
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Desbloquear la rotación de la pantalla"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:267
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Bloquear la rotación de la pantalla"
@ -736,31 +749,31 @@ msgid "Unnamed Folder"
msgstr "Carpeta sin nombre"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2767 js/ui/panel.js:75
#: js/ui/appDisplay.js:2762 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Ventanas abiertas"
#: js/ui/appDisplay.js:2786 js/ui/panel.js:82
#: js/ui/appDisplay.js:2781 js/ui/panel.js:82
msgid "New Window"
msgstr "Ventana nueva"
#: js/ui/appDisplay.js:2802
#: js/ui/appDisplay.js:2797
msgid "Launch using Integrated Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica integrada"
#: js/ui/appDisplay.js:2803
#: js/ui/appDisplay.js:2798
msgid "Launch using Discrete Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica discreta"
#: js/ui/appDisplay.js:2831 js/ui/dash.js:239
#: js/ui/appDisplay.js:2826 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
#: js/ui/appDisplay.js:2837
#: js/ui/appDisplay.js:2832
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:2847 js/ui/panel.js:93
#: js/ui/appDisplay.js:2842 js/ui/panel.js:93
msgid "Show Details"
msgstr "Mostrar detalles"
@ -960,8 +973,8 @@ msgid ""
msgstr ""
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:227
#: js/ui/status/network.js:318 js/ui/status/network.js:919
#: js/ui/components/networkAgent.js:104 js/ui/status/network.js:252
#: js/ui/status/network.js:343 js/ui/status/network.js:943
msgid "Connect"
msgstr "Conectar"
@ -1026,7 +1039,7 @@ msgstr "PIN"
msgid "A password is required to connect to “%s”."
msgstr "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1694
#: js/ui/components/networkAgent.js:669 js/ui/status/network.js:1718
msgid "Network Manager"
msgstr "Gestor de la red"
@ -1152,86 +1165,94 @@ msgstr "Meteorología"
msgid "Select weather location…"
msgstr "Seleccionar ubicación meteorológica…"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Cerrar la sesión %s"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Cerrar la sesión"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:43
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "se cerrará automáticamente la sesión de %s en %d segundo."
msgstr[1] "se cerrará automáticamente la sesión de %s en %d segundos."
#: js/ui/endSessionDialog.js:45
#: js/ui/endSessionDialog.js:49
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Su sesión se cerrará automáticamente en %d segundo."
msgstr[1] "Su sesión se cerrará automáticamente en %d segundos."
#: js/ui/endSessionDialog.js:51
#: js/ui/endSessionDialog.js:56
msgctxt "button"
msgid "Log Out"
msgstr "Cerrar la sesión"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:62
msgctxt "title"
msgid "Power Off"
msgstr "Apagar"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:63
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instalar actualizaciones y apagar"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:66
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "El sistema se apagará automáticamente en %d segundo."
msgstr[1] "El sistema se apagará automáticamente en %d segundos."
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:70 js/ui/endSessionDialog.js:89
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instalar las actualizaciones de software pendientes"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Reiniciar"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:74
msgctxt "button"
msgid "Power Off"
msgstr "Apagar"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:81
msgctxt "title"
msgid "Restart"
msgstr "Reiniciar"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:82
#, fuzzy
#| msgctxt "title"
#| msgid "Install Updates & Power Off"
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instalar actualizaciones y apagar"
#: js/ui/endSessionDialog.js:85
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "El sistema se reiniciará automáticamente en %d segundo."
msgstr[1] "El sistema se reiniciará automáticamente en %d segundos."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:93
msgctxt "button"
msgid "Restart"
msgstr "Reiniciar"
#: js/ui/endSessionDialog.js:101
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Reiniciar e instalar actualizaciones"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:104
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1243,22 +1264,22 @@ msgstr[1] ""
"El sistema se reiniciará automáticamente e instalará las actualizaciones en "
"%d segundos."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:111 js/ui/endSessionDialog.js:132
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Reiniciar e instalar"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:113
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instalar y apagar"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:114
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Apagar después de instalar las actualizaciones"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:121
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Reiniciar e instalar actualizaciones"
@ -1266,7 +1287,7 @@ msgstr "Reiniciar e instalar actualizaciones"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:126
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1276,27 +1297,34 @@ msgstr ""
"puede tardar mucho tiempo: asegúrese de que tiene una copia de respaldo y de "
"que el equipo está enchufado."
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
#: js/ui/endSessionDialog.js:284
#, fuzzy
#| msgid "Running on battery power: Please plug in before installing updates."
msgid "Low battery power: please plug in before installing updates."
msgstr ""
"Funcionando con batería: conéctese antes de instalar las actualizaciones."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:293
msgid "Some applications are busy or have unsaved work"
msgstr "Algunas aplicaciones están ocupadas o tienen trabajo sin guardar"
#: js/ui/endSessionDialog.js:273
#: js/ui/endSessionDialog.js:298
msgid "Other users are logged in"
msgstr "Hay otros usuarios con la sesión iniciada"
#: js/ui/endSessionDialog.js:467
msgctxt "button"
msgid "Boot Options"
msgstr ""
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:583
#: js/ui/endSessionDialog.js:685
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:688
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@ -1399,15 +1427,15 @@ msgid "Leave On"
msgstr "Dejar activada"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:1291
#: js/ui/status/network.js:1315
msgid "Turn On"
msgstr "Encendido"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:156
#: js/ui/status/network.js:135 js/ui/status/network.js:319
#: js/ui/status/network.js:1291 js/ui/status/network.js:1403
#: js/ui/status/network.js:160 js/ui/status/network.js:344
#: js/ui/status/network.js:1315 js/ui/status/network.js:1427
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
#: js/ui/status/rfkill.js:110
msgid "Turn Off"
msgstr "Apagar"
@ -1468,11 +1496,11 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: js/ui/main.js:297
#: js/ui/main.js:294
msgid "Logged in as a privileged user"
msgstr "Sesión iniciada como usuario con privilegios"
#: js/ui/main.js:298
#: js/ui/main.js:295
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1480,11 +1508,11 @@ msgstr ""
"Se debe evitar ejecutar una sesión como usuario con privilegios por motivos "
"de seguridad. Si es posible, inicie sesión como un usuario normal."
#: js/ui/main.js:337
#: js/ui/main.js:334
msgid "Screen Lock disabled"
msgstr "Pantalla de bloqueo desactivada"
#: js/ui/main.js:338
#: js/ui/main.js:335
msgid "Screen Locking requires the GNOME display manager."
msgstr "La pantalla de bloqueo necesita el gestor de pantallas de GNOME."
@ -1577,7 +1605,7 @@ msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:827
#: js/ui/panel.js:825
msgid "Top Bar"
msgstr "Barra superior"
@ -1754,7 +1782,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:595
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:619
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
@ -1838,18 +1866,18 @@ msgstr ""
"Los servicios de ubicación se pueden cambiar en cualquier momento desde la "
"configuración de privacidad."
#: js/ui/status/network.js:70
#: js/ui/status/network.js:71
msgid "<unknown>"
msgstr "<desconocido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:424 js/ui/status/network.js:1320
#: js/ui/status/network.js:449 js/ui/status/network.js:1344
#, javascript-format
msgid "%s Off"
msgstr "%s apagada"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:427
#: js/ui/status/network.js:452
#, javascript-format
msgid "%s Connected"
msgstr "%s conectada"
@ -1857,189 +1885,189 @@ msgstr "%s conectada"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu);
#. %s is a network identifier
#: js/ui/status/network.js:432
#: js/ui/status/network.js:457
#, javascript-format
msgid "%s Unmanaged"
msgstr "%s sin gestionar"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:435
#: js/ui/status/network.js:460
#, javascript-format
msgid "%s Disconnecting"
msgstr "Desconectando %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:442 js/ui/status/network.js:1312
#: js/ui/status/network.js:467 js/ui/status/network.js:1336
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando %s"
#. Translators: this is for network connections that require some kind of key or password; %s is a network identifier
#: js/ui/status/network.js:445
#: js/ui/status/network.js:470
#, javascript-format
msgid "%s Requires Authentication"
msgstr "%s requiere autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing; %s is a network identifier
#: js/ui/status/network.js:453
#: js/ui/status/network.js:478
#, javascript-format
msgid "Firmware Missing For %s"
msgstr "Falta el «firmware» para %s"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage; %s is a network identifier
#: js/ui/status/network.js:457
#: js/ui/status/network.js:482
#, javascript-format
msgid "%s Unavailable"
msgstr "%s no disponible"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:460
#: js/ui/status/network.js:485
#, javascript-format
msgid "%s Connection Failed"
msgstr "Falló la conexión %s"
#: js/ui/status/network.js:472
#: js/ui/status/network.js:497
msgid "Wired Settings"
msgstr "Configuración de red cableada"
#: js/ui/status/network.js:515
#: js/ui/status/network.js:540
msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:562 js/ui/status/network.js:1317
#: js/ui/status/network.js:586 js/ui/status/network.js:1341
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode); %s is a network identifier
#: js/ui/status/network.js:566
#: js/ui/status/network.js:590
#, javascript-format
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:607
#: js/ui/status/network.js:631
msgid "Connect to Internet"
msgstr "Conectar a Internet"
#: js/ui/status/network.js:811
#: js/ui/status/network.js:835
msgid "Airplane Mode is On"
msgstr "El modo avión está activado"
#: js/ui/status/network.js:812
#: js/ui/status/network.js:836
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
#: js/ui/status/network.js:813
#: js/ui/status/network.js:837
msgid "Turn Off Airplane Mode"
msgstr "Apagar el modo avión"
#: js/ui/status/network.js:822
#: js/ui/status/network.js:846
msgid "Wi-Fi is Off"
msgstr "La Wi-Fi está desactivada"
#: js/ui/status/network.js:823
#: js/ui/status/network.js:847
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
#: js/ui/status/network.js:824
#: js/ui/status/network.js:848
msgid "Turn On Wi-Fi"
msgstr "Activar la Wi-Fi"
#: js/ui/status/network.js:849
#: js/ui/status/network.js:873
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:851
#: js/ui/status/network.js:875
msgid "Select a network"
msgstr "Seleccionar una red"
#: js/ui/status/network.js:883
#: js/ui/status/network.js:907
msgid "No Networks"
msgstr "No hay redes"
#: js/ui/status/network.js:904 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:928 js/ui/status/rfkill.js:108
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1205
msgid "Select Network"
msgstr "Seleccionar red"
#: js/ui/status/network.js:1187
#: js/ui/status/network.js:1211
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1308
#: js/ui/status/network.js:1332
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1323
#: js/ui/status/network.js:1347
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no conectado"
#: js/ui/status/network.js:1420
#: js/ui/status/network.js:1444
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1423
#: js/ui/status/network.js:1447
msgid "authentication required"
msgstr "se necesita autenticación"
#: js/ui/status/network.js:1425
#: js/ui/status/network.js:1449
msgid "connection failed"
msgstr "falló la conexión"
#: js/ui/status/network.js:1476
#: js/ui/status/network.js:1500
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: js/ui/status/network.js:1493
#: js/ui/status/network.js:1517
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1503
#: js/ui/status/network.js:1527
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1564 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1588 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1593
#: js/ui/status/network.js:1617
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1597
#: js/ui/status/network.js:1621
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexión inalámbrica"
msgstr[1] "%s conexiones inalámbricas"
#: js/ui/status/network.js:1601
#: js/ui/status/network.js:1625
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1735
#: js/ui/status/network.js:1759
msgid "Connection failed"
msgstr "Falló la conexión"
#: js/ui/status/network.js:1736
#: js/ui/status/network.js:1760
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@ -2094,11 +2122,11 @@ msgstr "%d%02d para la carga completa (%d%%)"
msgid "%d%%"
msgstr "%d%%"
#: js/ui/status/remoteAccess.js:43
#: js/ui/status/remoteAccess.js:45
msgid "Screen is Being Shared"
msgstr "Se está compartiendo la pantalla"
#: js/ui/status/remoteAccess.js:45
#: js/ui/status/remoteAccess.js:47
msgid "Turn off"
msgstr "Apagar"
@ -2109,30 +2137,36 @@ msgstr "Apagar"
msgid "Airplane Mode On"
msgstr "Modo avión activado"
#: js/ui/status/system.js:102
#: js/ui/status/system.js:104
msgid "Lock"
msgstr "Bloquear"
#: js/ui/status/system.js:115
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Apagar / cerrar sesión"
#: js/ui/status/system.js:118
msgid "Log Out"
msgstr "Cerrar la sesión"
#: js/ui/status/system.js:130
msgid "Switch User…"
msgstr "Cambiar de usuario…"
#: js/ui/status/system.js:144
#: js/ui/status/system.js:119
msgid "Suspend"
msgstr "Suspender"
#: js/ui/status/system.js:156
#: js/ui/status/system.js:130
#, fuzzy
#| msgid "Restarting…"
msgid "Restart…"
msgstr "Reiniciando…"
#: js/ui/status/system.js:141
msgid "Power Off…"
msgstr "Apagar…"
#: js/ui/status/system.js:154
msgid "Log Out"
msgstr "Cerrar la sesión"
#: js/ui/status/system.js:165
msgid "Switch User…"
msgstr "Cambiar de usuario…"
#: js/ui/status/thunderbolt.js:263
msgid "Thunderbolt"
msgstr "Thunderbolt"
@ -2240,22 +2274,22 @@ msgid "“%s” is ready"
msgstr "«%s» está preparado"
#. Translators: This string should be shorter than 30 characters
#: js/ui/windowManager.js:55
#: js/ui/windowManager.js:60
msgid "Keep these display settings?"
msgstr "¿Quiere mantener esta configuración de la pantalla?"
#. Translators: this and the following message should be limited in length,
#. to avoid ellipsizing the labels.
#.
#: js/ui/windowManager.js:64
#: js/ui/windowManager.js:69
msgid "Revert Settings"
msgstr "Revertir configuración"
#: js/ui/windowManager.js:67
#: js/ui/windowManager.js:72
msgid "Keep Changes"
msgstr "Mantener cambios"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:91
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2264,7 +2298,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:551
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -3562,9 +3596,6 @@ msgstr "Sonidos del sistema"
#~ msgid "Power"
#~ msgstr "Energía"
#~ msgid "Restart"
#~ msgstr "Reiniciar"
#~ msgid "Volume, network, battery"
#~ msgstr "Volumen, red, batería"

1270
po/gl.po

File diff suppressed because it is too large Load Diff

View File

@ -51,6 +51,8 @@ def start_shell(perf_output=None):
args.append('--nested')
else:
args.append('--display-server')
elif options.x11:
args.append('--x11')
return subprocess.Popen(args, env=env)
@ -295,6 +297,8 @@ parser.add_option("-w", "--wayland", action="store_true",
help="Run as a Wayland compositor")
parser.add_option("-n", "--nested", action="store_true",
help="Run as a Wayland nested compositor")
parser.add_option("-x", "--x11", action="store_true",
help="Run as an X11 compositor")
options, args = parser.parse_args()

View File

@ -1361,9 +1361,15 @@ shell_global_get_pointer (ShellGlobal *global,
{
ClutterModifierType raw_mods;
MetaCursorTracker *tracker;
graphene_point_t point;
tracker = meta_cursor_tracker_get_for_display (global->meta_display);
meta_cursor_tracker_get_pointer (tracker, x, y, &raw_mods);
meta_cursor_tracker_get_pointer (tracker, &point, &raw_mods);
if (x)
*x = point.x;
if (y)
*y = point.y;
*mods = raw_mods & CLUTTER_MODIFIER_MASK;
}

View File

@ -181,6 +181,7 @@ draw_cursor_image (cairo_surface_t *surface,
int x, y;
int xhot, yhot;
double xscale, yscale;
graphene_point_t point;
display = shell_global_get_display (shell_global_get ());
tracker = meta_cursor_tracker_get_for_display (display);
@ -190,9 +191,11 @@ draw_cursor_image (cairo_surface_t *surface,
return;
screenshot_region = cairo_region_create_rectangle (&area);
meta_cursor_tracker_get_pointer (tracker, &x, &y, NULL);
meta_cursor_tracker_get_pointer (tracker, &point, NULL);
x = point.x;
y = point.y;
if (!cairo_region_contains_point (screenshot_region, x, y))
if (!cairo_region_contains_point (screenshot_region, point.x, point.y))
{
cairo_region_destroy (screenshot_region);
return;

View File

@ -136,6 +136,8 @@ struct _CRParserPriv {
#define CHARS_TAB_SIZE 12
#define RECURSIVE_CALLERS_LIMIT 100
/**
* IS_NUM:
*@a_char: the char to test.
@ -343,9 +345,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this);
static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this);
static enum CRStatus cr_parser_parse_any_core (CRParser * a_this);
static enum CRStatus cr_parser_parse_any_core (CRParser * a_this,
guint n_calls);
static enum CRStatus cr_parser_parse_block_core (CRParser * a_this);
static enum CRStatus cr_parser_parse_block_core (CRParser * a_this,
guint n_calls);
static enum CRStatus cr_parser_parse_value_core (CRParser * a_this);
@ -783,7 +787,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
cr_parser_try_to_skip_spaces_and_comments (a_this);
do {
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, 0);
} while (status == CR_OK);
status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr,
@ -794,7 +798,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
token);
token = NULL;
status = cr_parser_parse_block_core (a_this);
status = cr_parser_parse_block_core (a_this, 0);
CHECK_PARSING_STATUS (status,
FALSE);
goto done;
@ -929,11 +933,11 @@ cr_parser_parse_selector_core (CRParser * a_this)
RECORD_INITIAL_POS (a_this, &init_pos);
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, 0);
CHECK_PARSING_STATUS (status, FALSE);
do {
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, 0);
} while (status == CR_OK);
@ -955,10 +959,12 @@ cr_parser_parse_selector_core (CRParser * a_this)
*in chapter 4.1 of the css2 spec.
*block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
*@param a_this the current instance of #CRParser.
*@param n_calls used to limit recursion depth
*FIXME: code this function.
*/
static enum CRStatus
cr_parser_parse_block_core (CRParser * a_this)
cr_parser_parse_block_core (CRParser * a_this,
guint n_calls)
{
CRToken *token = NULL;
CRInputPos init_pos;
@ -966,6 +972,9 @@ cr_parser_parse_block_core (CRParser * a_this)
g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR);
if (n_calls > RECURSIVE_CALLERS_LIMIT)
return CR_ERROR;
RECORD_INITIAL_POS (a_this, &init_pos);
status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token);
@ -995,13 +1004,13 @@ cr_parser_parse_block_core (CRParser * a_this)
} else if (token->type == CBO_TK) {
cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
token = NULL;
status = cr_parser_parse_block_core (a_this);
status = cr_parser_parse_block_core (a_this, n_calls + 1);
CHECK_PARSING_STATUS (status, FALSE);
goto parse_block_content;
} else {
cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
token = NULL;
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, n_calls + 1);
CHECK_PARSING_STATUS (status, FALSE);
goto parse_block_content;
}
@ -1108,7 +1117,7 @@ cr_parser_parse_value_core (CRParser * a_this)
status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
token);
token = NULL;
status = cr_parser_parse_block_core (a_this);
status = cr_parser_parse_block_core (a_this, 0);
CHECK_PARSING_STATUS (status, FALSE);
ref++;
goto continue_parsing;
@ -1122,7 +1131,7 @@ cr_parser_parse_value_core (CRParser * a_this)
status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
token);
token = NULL;
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, 0);
if (status == CR_OK) {
ref++;
goto continue_parsing;
@ -1161,10 +1170,12 @@ cr_parser_parse_value_core (CRParser * a_this)
* | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
*
*@param a_this the current instance of #CRParser.
*@param n_calls used to limit recursion depth
*@return CR_OK upon successfull completion, an error code otherwise.
*/
static enum CRStatus
cr_parser_parse_any_core (CRParser * a_this)
cr_parser_parse_any_core (CRParser * a_this,
guint n_calls)
{
CRToken *token1 = NULL,
*token2 = NULL;
@ -1173,6 +1184,9 @@ cr_parser_parse_any_core (CRParser * a_this)
g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR);
if (n_calls > RECURSIVE_CALLERS_LIMIT)
return CR_ERROR;
RECORD_INITIAL_POS (a_this, &init_pos);
status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1);
@ -1211,7 +1225,7 @@ cr_parser_parse_any_core (CRParser * a_this)
*We consider parameter as being an "any*" production.
*/
do {
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, n_calls + 1);
} while (status == CR_OK);
ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
@ -1236,7 +1250,7 @@ cr_parser_parse_any_core (CRParser * a_this)
}
do {
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, n_calls + 1);
} while (status == CR_OK);
ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
@ -1264,7 +1278,7 @@ cr_parser_parse_any_core (CRParser * a_this)
}
do {
status = cr_parser_parse_any_core (a_this);
status = cr_parser_parse_any_core (a_this, n_calls + 1);
} while (status == CR_OK);
ENSURE_PARSING_COND (status == CR_PARSING_ERROR);

View File

@ -26,6 +26,7 @@
#include <math.h>
#include <string.h>
#include <meta/main.h>
#include <meta/meta-backend.h>
static ClutterActor *stage;
static StThemeNode *root;
@ -533,6 +534,7 @@ test_inline_style (void)
int
main (int argc, char **argv)
{
MetaBackend *backend;
StTheme *theme;
StThemeContext *context;
PangoFontDescription *font_desc;
@ -556,7 +558,8 @@ main (int argc, char **argv)
theme = st_theme_new (file, NULL, NULL);
g_object_unref (file);
stage = clutter_stage_new ();
backend = meta_get_backend ();
stage = meta_backend_get_stage (backend);
context = st_theme_context_get_for_stage (CLUTTER_STAGE (stage));
st_theme_context_set_theme (context, theme);