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

View File

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

View File

@ -134,7 +134,14 @@ function _easeActor(actor, params) {
actor.set_easing_mode(params.mode); actor.set_easing_mode(params.mode);
delete 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); let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transitions // cancel overwritten transitions
@ -149,9 +156,9 @@ function _easeActor(actor, params) {
.find(t => t !== null); .find(t => t !== null);
if (transition && transition.delay) if (transition && transition.delay)
transition.connect('started', () => Meta.disable_unredirect_for_display(global.display)); transition.connect('started', () => prepare());
else else
Meta.disable_unredirect_for_display(global.display); prepare();
if (transition) { if (transition) {
transition.set({ repeatCount, autoReverse }); transition.set({ repeatCount, autoReverse });
@ -191,7 +198,14 @@ function _easeActorProperty(actor, propName, target, params) {
if (actor instanceof Clutter.Actor && !actor.mapped) if (actor instanceof Clutter.Actor && !actor.mapped)
duration = 0; 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); let callback = _makeEaseCallback(params, cleanup);
// cancel overwritten transition // cancel overwritten transition
@ -203,7 +217,7 @@ function _easeActorProperty(actor, propName, target, params) {
if (!isReversed) if (!isReversed)
obj[prop] = target; obj[prop] = target;
Meta.disable_unredirect_for_display(global.display); prepare();
callback(true); callback(true);
return; return;
@ -222,9 +236,9 @@ function _easeActorProperty(actor, propName, target, params) {
transition.set_to(target); transition.set_to(target);
if (transition.delay) if (transition.delay)
transition.connect('started', () => Meta.disable_unredirect_for_display(global.display)); transition.connect('started', () => prepare());
else else
Meta.disable_unredirect_for_display(global.display); prepare();
transition.connect('stopped', (t, finished) => callback(finished)); 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 // 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 // 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 // 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. // loop run.
// //
// yield Scripting.sleep(1000); // await Scripting.sleep(1000);
// main.overview.show(); // 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: * sleep:
@ -285,13 +282,11 @@ function _collect(scriptModule, outputFile) {
} }
async function _runPerfScript(scriptModule, outputFile) { async function _runPerfScript(scriptModule, outputFile) {
for (let step of scriptModule.run()) { try {
try { await scriptModule.run();
await step; // eslint-disable-line no-await-in-loop } catch (err) {
} catch (err) { log(`Script failed: ${err}\n${err.stack}`);
log(`Script failed: ${err}\n${err.stack}`); Meta.exit(Meta.ExitCode.ERROR);
Meta.exit(Meta.ExitCode.ERROR);
}
} }
try { try {

296
po/ca.po
View File

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

295
po/es.po
View File

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

View File

@ -1361,9 +1361,15 @@ shell_global_get_pointer (ShellGlobal *global,
{ {
ClutterModifierType raw_mods; ClutterModifierType raw_mods;
MetaCursorTracker *tracker; MetaCursorTracker *tracker;
graphene_point_t point;
tracker = meta_cursor_tracker_get_for_display (global->meta_display); 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; *mods = raw_mods & CLUTTER_MODIFIER_MASK;
} }

View File

@ -181,6 +181,7 @@ draw_cursor_image (cairo_surface_t *surface,
int x, y; int x, y;
int xhot, yhot; int xhot, yhot;
double xscale, yscale; double xscale, yscale;
graphene_point_t point;
display = shell_global_get_display (shell_global_get ()); display = shell_global_get_display (shell_global_get ());
tracker = meta_cursor_tracker_get_for_display (display); tracker = meta_cursor_tracker_get_for_display (display);
@ -190,9 +191,11 @@ draw_cursor_image (cairo_surface_t *surface,
return; return;
screenshot_region = cairo_region_create_rectangle (&area); 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); cairo_region_destroy (screenshot_region);
return; return;

View File

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

View File

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