Compare commits

...

11 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
bdb28535df lookingGlass: Port to paint nodes
Override vfunc_paint_node(), and add paint nodes to the
root node instead of directly calling CoglFramebuffer APIs.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1339
2020-08-14 16:04:45 +00:00
Georges Basile Stavracas Neto
6f75274eec blur-effect: Port to paint nodes
Port the blur effect to the new ClutterEffect.paint_node() vfunc.
Update the function names to match what they do, e.g. "apply_blur()"
now creates the blur subtree and thus was appropriately renamed to
"create_blur_nodes()".

There are 3 subtrees that can be generated by the blur effect:

 1. Actor mode (full subtree; no cache)

      Root
       |----------------------------
       |                            |
    Layer (brightness)           Pipeline
       |                      (final result)
    Layer (horizontal blur)
       |
    Layer (vertical blur)
       |
    Layer (actor)
       |
    Transform (downscale)
       |
     Actor

 2. Actor mode (partial subtree; cached contents)

      Root
       |
     Pipeline
  (final result)

 3. Background mode

      Root
       |-------------------------------------------
       |                            |              |
    Layer (brightness)           Pipeline        Actor
       |                      (final result)
    Layer (horizontal blur)
       |
    Layer (vertical blur)
       |
    Layer (background)
       |
      Blit

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1339
2020-08-14 16:04:45 +00:00
Akarshan Biswas
d6d5c42e4b Update Bengali (India) translation 2020-08-14 15:48:13 +00:00
Florentina Mușat
fce14a43b9 Update Romanian translation 2020-08-14 15:48:03 +00:00
Georges Basile Stavracas Neto
7fcaf63291 appDisplay: Cache app ids in FolderView
Instead of reading a GSettings and building the app ids list
every single time FolderView needs to check for something,
cache it before redisplay and reuse this cached list everywhere.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1409
2020-08-13 23:28:51 +00:00
Florian Müllner
990c171bed networkAgent: Add missing Uint8Array => string conversion
When promisifying async operations in commit 764527c8c, the
finish function for read_line_async() was sneakily changed from
read_line_finish_utf8() to read_line_finish().

That is, the call returns a Uint8Array now that requires an
explicit conversion to string.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1407
2020-08-13 23:00:21 +00:00
Florian Müllner
112b139a9e cleanup: Remove old compatibility code
Since gjs moved to mozjs60, return values of int8_t arrays can
no longer be treated as strings. We originally made the conversion
conditional to keep working with the (then) stable gjs release.

That was two years ago and we require a more recent gjs nowadays,
so there's no good reason for keeping the old code path.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1407
2020-08-13 23:00:21 +00:00
Florian Müllner
923d926345 st: Remove invalid introspection annotation
(optional) is only valid for (out) or (inout) parameters (that are
marked as such).

However GError** arguments appear as throws="1" in the GIR anyway
instead of an explicit parameter, so we don't need any annotation
at all here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1408
2020-08-13 22:44:45 +00:00
Florian Müllner
3c6f59ae6d st: Fix typo in doc comment
Spotted by g-ir-scanner.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1408
2020-08-13 22:44:44 +00:00
Fran Dieguez
84bbedb3b3 Update Galician translations 2020-08-14 00:39:36 +02:00
Georges Basile Stavracas Neto
f541562acc iconGrid: Properly remove pages
When the last item of an IconGridLayout page is removed,
the page itself is removed too. However, the indexes of
items of next pages are not updated, which mess up the
layout manager state.

Update the page index of the items at forward pages when
removing a page.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1406
2020-08-13 18:15:11 -03:00
14 changed files with 2904 additions and 1365 deletions

View File

@@ -1604,6 +1604,7 @@ class FolderView extends BaseAppView {
action.connect('pan', this._onPan.bind(this)); action.connect('pan', this._onPan.bind(this));
this._scrollView.add_action(action); this._scrollView.add_action(action);
this._appIds = [];
this._redisplay(); this._redisplay();
} }
@@ -1649,8 +1650,7 @@ class FolderView extends BaseAppView {
} }
_getItemPosition(item) { _getItemPosition(item) {
const appIds = this._getFolderApps(); const appIndex = this._appIds.indexOf(item.id);
const appIndex = appIds.indexOf(item.id);
if (appIndex === -1) if (appIndex === -1)
return [-1, -1]; return [-1, -1];
@@ -1660,10 +1660,8 @@ class FolderView extends BaseAppView {
} }
_compareItems(a, b) { _compareItems(a, b) {
const appIds = this._getFolderApps(); const aPosition = this._appIds.indexOf(a.id);
const bPosition = this._appIds.indexOf(b.id);
const aPosition = appIds.indexOf(a.id);
const bPosition = appIds.indexOf(b.id);
if (aPosition === -1 && bPosition === -1) if (aPosition === -1 && bPosition === -1)
return a.name.localeCompare(b.name); return a.name.localeCompare(b.name);
@@ -1720,9 +1718,8 @@ class FolderView extends BaseAppView {
_loadApps() { _loadApps() {
let apps = []; let apps = [];
let appSys = Shell.AppSystem.get_default(); let appSys = Shell.AppSystem.get_default();
const appIds = this._getFolderApps();
appIds.forEach(appId => { this._appIds.forEach(appId => {
const app = appSys.lookup_app(appId); const app = appSys.lookup_app(appId);
let icon = this._items.get(appId); let icon = this._items.get(appId);
@@ -1735,6 +1732,13 @@ class FolderView extends BaseAppView {
return apps; return apps;
} }
_redisplay() {
// Keep the app ids list cached
this._appIds = this._getFolderApps();
super._redisplay();
}
acceptDrop(source) { acceptDrop(source) {
if (!super.acceptDrop(source)) if (!super.acceptDrop(source))
return false; return false;

View File

@@ -2,6 +2,7 @@
/* exported Component */ /* exported Component */
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals; const Signals = imports.signals;
const Dialog = imports.ui.dialog; const Dialog = imports.ui.dialog;
@@ -493,7 +494,7 @@ var VPNRequestHandler = class {
return; return;
} }
this._vpnChildProcessLineOldStyle(line); this._vpnChildProcessLineOldStyle(ByteArray.toString(line));
// try to read more! // try to read more!
this._readStdoutOldStyle(); this._readStdoutOldStyle();
@@ -522,13 +523,7 @@ var VPNRequestHandler = class {
let contentOverride; let contentOverride;
try { try {
data = this._dataStdout.peek_buffer(); data = ByteArray.toGBytes(this._dataStdout.peek_buffer());
if (data instanceof Uint8Array)
data = imports.byteArray.toGBytes(data);
else
data = data.toGBytes();
keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE); keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE);
if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2) if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2)

View File

@@ -2,6 +2,7 @@
/* exported init connect disconnect */ /* exported init connect disconnect */
const { GLib, Gio, GObject, Shell, St } = imports.gi; const { GLib, Gio, GObject, Shell, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals; const Signals = imports.signals;
const ExtensionDownloader = imports.ui.extensionDownloader; const ExtensionDownloader = imports.ui.extensionDownloader;
@@ -282,8 +283,7 @@ var ExtensionManager = class {
let metadataContents, success_; let metadataContents, success_;
try { try {
[success_, metadataContents] = metadataFile.load_contents(null); [success_, metadataContents] = metadataFile.load_contents(null);
if (metadataContents instanceof Uint8Array) metadataContents = ByteArray.toString(metadataContents);
metadataContents = imports.byteArray.toString(metadataContents);
} catch (e) { } catch (e) {
throw new Error('Failed to load metadata.json: %s'.format(e.toString())); throw new Error('Failed to load metadata.json: %s'.format(e.toString()));
} }

View File

@@ -468,6 +468,12 @@ var IconGridLayout = GObject.registerClass({
this._unlinkItem(item); this._unlinkItem(item);
}); });
// Adjust the page indexes of items after this page
for (const itemData of this._items.values()) {
if (itemData.pageIndex > pageIndex)
itemData.pageIndex--;
}
this._pages.splice(pageIndex, 1); this._pages.splice(pageIndex, 1);
this.emit('pages-changed'); this.emit('pages-changed');
} }

View File

@@ -2,6 +2,7 @@
/* exported KeyboardManager */ /* exported KeyboardManager */
const { Clutter, Gio, GLib, GObject, Meta, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals; const Signals = imports.signals;
const InputSourceManager = imports.ui.status.keyboard; const InputSourceManager = imports.ui.status.keyboard;
@@ -532,8 +533,7 @@ var KeyboardModel = class {
_loadModel(groupName) { _loadModel(groupName) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName)); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName));
let [success_, contents] = file.load_contents(null); let [success_, contents] = file.load_contents(null);
if (contents instanceof Uint8Array) contents = ByteArray.toString(contents);
contents = imports.byteArray.toString(contents);
return JSON.parse(contents); return JSON.parse(contents);
} }

View File

@@ -482,13 +482,16 @@ class RedBorderEffect extends Clutter.Effect {
this._pipeline = null; this._pipeline = null;
} }
vfunc_paint(paintContext) { vfunc_paint_node(node, paintContext) {
let framebuffer = paintContext.get_framebuffer();
let coglContext = framebuffer.get_context();
let actor = this.get_actor(); let actor = this.get_actor();
actor.continue_paint(paintContext);
const actorNode = new Clutter.ActorNode(actor);
node.add_child(actorNode, -1);
if (!this._pipeline) { if (!this._pipeline) {
const framebuffer = paintContext.get_framebuffer();
const coglContext = framebuffer.get_context();
let color = new Cogl.Color(); let color = new Cogl.Color();
color.init_from_4ub(0xff, 0, 0, 0xc4); color.init_from_4ub(0xff, 0, 0, 0xc4);
@@ -499,18 +502,28 @@ class RedBorderEffect extends Clutter.Effect {
let alloc = actor.get_allocation_box(); let alloc = actor.get_allocation_box();
let width = 2; let width = 2;
const pipelineNode = new Clutter.PipelineNode(this._pipeline);
pipelineNode.set_name('Red Border');
actorNode.add_child(pipelineNode);
const box = new Clutter.ActorBox();
// clockwise order // clockwise order
framebuffer.draw_rectangle(this._pipeline, box.set_origin(0, 0);
0, 0, alloc.get_width(), width); box.set_size(alloc.get_width(), width);
framebuffer.draw_rectangle(this._pipeline, pipelineNode.add_rectangle(box);
alloc.get_width() - width, width,
alloc.get_width(), alloc.get_height()); box.set_origin(alloc.get_width() - width, width);
framebuffer.draw_rectangle(this._pipeline, box.set_size(width, alloc.get_height());
0, alloc.get_height(), pipelineNode.add_rectangle(box);
alloc.get_width() - width, alloc.get_height() - width);
framebuffer.draw_rectangle(this._pipeline, box.set_origin(0, alloc.get_height() - width);
0, alloc.get_height() - width, box.set_size(alloc.get_width() - width, width);
width, width); pipelineNode.add_rectangle(box);
box.set_origin(0, width);
box.set_size(width, alloc.get_height() - width);
pipelineNode.add_rectangle(box);
} }
}); });

View File

@@ -3,6 +3,7 @@
const { Atk, Clutter, GDesktopEnums, Gio, const { Atk, Clutter, GDesktopEnums, Gio,
GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi; GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi;
const ByteArray = imports.byteArray;
const Signals = imports.signals; const Signals = imports.signals;
const Main = imports.ui.main; const Main = imports.ui.main;
@@ -297,8 +298,7 @@ var PadDiagram = GObject.registerClass({
_init(params) { _init(params) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css'); let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css');
let [success_, css] = file.load_contents(null); let [success_, css] = file.load_contents(null);
if (css instanceof Uint8Array) css = ByteArray.toString(css);
css = imports.byteArray.toString(css);
this._curEdited = null; this._curEdited = null;
this._prevEdited = null; this._prevEdited = null;
this._css = css; this._css = css;

View File

@@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported SessionMode, listModes */ /* exported SessionMode, listModes */
const ByteArray = imports.byteArray;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Signals = imports.signals; const Signals = imports.signals;
@@ -105,8 +106,7 @@ function _loadMode(file, info) {
let fileContent, success_, newMode; let fileContent, success_, newMode;
try { try {
[success_, fileContent] = file.load_contents(null); [success_, fileContent] = file.load_contents(null);
if (fileContent instanceof Uint8Array) fileContent = ByteArray.toString(fileContent);
fileContent = imports.byteArray.toString(fileContent);
newMode = JSON.parse(fileContent); newMode = JSON.parse(fileContent);
} catch (e) { } catch (e) {
return; return;

File diff suppressed because it is too large Load Diff

View File

@@ -12,8 +12,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-08-11 15:44+0000\n" "POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-08-13 01:31+0200\n" "PO-Revision-Date: 2020-08-14 00:36+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n" "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician <proxecto@trasno.gal>\n" "Language-Team: Galician <proxecto@trasno.gal>\n"
"Language: gl\n" "Language: gl\n"
@@ -233,10 +233,10 @@ msgid ""
"“application id” → 'data' pair. Currently, the following values are stored " "“application id” → 'data' pair. Currently, the following values are stored "
"as 'data': • “position”: the position of the application icon in the page" "as 'data': • “position”: the position of the application icon in the page"
msgstr "" msgstr ""
"Disposición do selector de aplicacións. Cada entrada na lista é unha páxina. " "Disposición do selector de aplicacións. Cada entrada no array é unha páxina. "
"As páxinas almacénanse na orde que aparecen en GNOME Shell. Cada páxina " "As páxinas están almacenadas na orde na que aparecen no Shell de GNOME. Cada "
"contén o par «id de aplicación» → 'datos'. Actualmente en «data» gárdanse os " "páxina contén un par «id de aplicación» → «datos». Actualmente, gárdanse os "
"seguintes valores: • posición”: a posición da icona da aplicación na páxina" "seguintes valores: • «position»: A posición da icona da aplicación na páxina"
#: data/org.gnome.shell.gschema.xml.in:130 #: data/org.gnome.shell.gschema.xml.in:130
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
@@ -505,11 +505,14 @@ 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:94 #: js/misc/systemActions.js:94
#| msgid "power off;shutdown;reboot;restart;halt;stop"
msgid "power off;shutdown;halt;stop" msgid "power off;shutdown;halt;stop"
msgstr "apagar;reiniciar;deter;parar" msgstr "apagar;reiniciar;deter;parar"
#. Translators: The name of the restart action in search #. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99 #: js/misc/systemActions.js:99
#| msgctxt "button"
#| msgid "Restart"
msgctxt "search-result" msgctxt "search-result"
msgid "Restart" msgid "Restart"
msgstr "Reiniciar" msgstr "Reiniciar"
@@ -517,7 +520,7 @@ msgstr "Reiniciar"
#. Translators: A list of keywords that match the restart action, separated by semicolons #. Translators: A list of keywords that match the restart action, separated by semicolons
#: js/misc/systemActions.js:102 #: js/misc/systemActions.js:102
msgid "reboot;restart;" msgid "reboot;restart;"
msgstr "Reiniciar;" msgstr "reiniciar;"
#. Translators: The name of the lock screen action in search #. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:107 #: js/misc/systemActions.js:107
@@ -753,10 +756,12 @@ msgid "New Window"
msgstr "Xanela nova" msgstr "Xanela nova"
#: js/ui/appDisplay.js:2797 #: js/ui/appDisplay.js:2797
#| msgid "Launch using Dedicated Graphics Card"
msgid "Launch using Integrated Graphics Card" msgid "Launch using Integrated Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Integrada" msgstr "Iniciar usando a Tarxeta Gráfica Integrada"
#: js/ui/appDisplay.js:2798 #: js/ui/appDisplay.js:2798
#| msgid "Launch using Dedicated Graphics Card"
msgid "Launch using Discrete Graphics Card" msgid "Launch using Discrete Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Dedicada" msgstr "Iniciar usando a Tarxeta Gráfica Dedicada"
@@ -1104,13 +1109,14 @@ msgstr "%A, %e de %B de %Y"
#: js/ui/dateMenu.js:151 #: js/ui/dateMenu.js:151
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%B %-d" msgid "%B %-d"
msgstr "%-d de %B" msgstr "%e de %B de %Y"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/dateMenu.js:154 #: js/ui/dateMenu.js:154
#| msgid "%B %-d %Y"
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%B %-d %Y" msgid "%B %-d %Y"
msgstr "%-d de %B de %Y" msgstr "%e de %B de %Y"
#: js/ui/dateMenu.js:160 #: js/ui/dateMenu.js:160
msgid "Today" msgid "Today"
@@ -1157,8 +1163,9 @@ msgid "Weather"
msgstr "Tempo" msgstr "Tempo"
#: js/ui/dateMenu.js:653 #: js/ui/dateMenu.js:653
#| msgid "Select a location…"
msgid "Select weather location…" msgid "Select weather location…"
msgstr "Seleccione a ubicación metereolóxica…" msgstr "Seleccione unha ubicación metereolóxica…"
#: js/ui/endSessionDialog.js:39 #: js/ui/endSessionDialog.js:39
#, javascript-format #, javascript-format
@@ -1223,6 +1230,8 @@ msgid "Restart"
msgstr "Reiniciar" msgstr "Reiniciar"
#: js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:82
#| msgctxt "title"
#| msgid "Install Updates & Power Off"
msgctxt "title" msgctxt "title"
msgid "Install Updates & Restart" msgid "Install Updates & Restart"
msgstr "Instalar actualizacións e reiniciar" msgstr "Instalar actualizacións e reiniciar"
@@ -1290,9 +1299,10 @@ msgstr ""
"que o seu computador está enchufado." "que o seu computador está enchufado."
#: js/ui/endSessionDialog.js:284 #: 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." msgid "Low battery power: please plug in before installing updates."
msgstr "" msgstr ""
"Enerxía da batería baixa: por favor enchufe a corrente antes de instalar " "Correndo con batería baixa: por favor conecte a corrente antes de instalar "
"actualizacións." "actualizacións."
#: js/ui/endSessionDialog.js:293 #: js/ui/endSessionDialog.js:293
@@ -1778,10 +1788,12 @@ msgid "Bluetooth Settings"
msgstr "Preferencias do Bluetooth" msgstr "Preferencias do Bluetooth"
#: js/ui/status/bluetooth.js:152 #: js/ui/status/bluetooth.js:152
#| msgid "Bluetooth"
msgid "Bluetooth Off" msgid "Bluetooth Off"
msgstr "Bluetooth desactivado" msgstr "Bluetooth desactivado"
#: js/ui/status/bluetooth.js:154 #: js/ui/status/bluetooth.js:154
#| msgid "Bluetooth"
msgid "Bluetooth On" msgid "Bluetooth On"
msgstr "Bluetooth activado" msgstr "Bluetooth activado"
@@ -2141,6 +2153,7 @@ msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
#: js/ui/status/system.js:130 #: js/ui/status/system.js:130
#| msgid "Restarting…"
msgid "Restart…" msgid "Restart…"
msgstr "Reiniciar…" msgstr "Reiniciar…"
@@ -2425,9 +2438,8 @@ msgid ""
"GNOME Extensions handles updating extensions, configuring extension " "GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions." "preferences and removing or disabling unwanted extensions."
msgstr "" msgstr ""
"Extensións de GNOME xestiona as actualización de extensións, configuración " "Extensións de GNOME xestiona a actualización de extensions, a súa "
"das preferencias das mesmas e a desinstalación ou desactivación das " "configuración, eliminación e a desactivación das extensións que non quere."
"extensións non requiridas."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7 #: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions" msgid "Configure GNOME Shell Extensions"
@@ -2461,9 +2473,10 @@ msgstr[1] "Vanse actualizar %d extensións no seguinte inicio de sesión."
#: subprojects/extensions-app/js/main.js:461 #: subprojects/extensions-app/js/main.js:461
msgid "The extension is incompatible with the current GNOME version" msgid "The extension is incompatible with the current GNOME version"
msgstr "A extensión non é compatíbel coa versión de GNOME actual" msgstr "A extensión non é compatíbel coa versión actual de GNOME"
#: subprojects/extensions-app/js/main.js:464 #: subprojects/extensions-app/js/main.js:464
#| msgid "Show extension info"
msgid "The extension had an error" msgid "The extension had an error"
msgstr "A extensión tivo un erro" msgstr "A extensión tivo un erro"
@@ -2541,8 +2554,9 @@ msgstr ""
"que está nunha sesión en GNOME e ténteo de novo." "que está nunha sesión en GNOME e ténteo de novo."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273 #: subprojects/extensions-app/data/ui/extensions-window.ui:273
#| msgid "Extension Updates Available"
msgid "Extension Updates Ready" msgid "Extension Updates Ready"
msgstr "Hai actualizacións de extensións listas" msgstr "Actualizacións de extensión dispoñíbeis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289 #: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…" msgid "Log Out…"
@@ -2590,11 +2604,11 @@ msgstr ""
#: subprojects/extensions-tool/src/command-create.c:366 #: subprojects/extensions-tool/src/command-create.c:366
msgid "Choose one of the available templates:\n" msgid "Choose one of the available templates:\n"
msgstr "Seleccione un dos modelos dispoñíbeis:\n" msgstr "Seleccione entre unha das plantillas:\n"
#: subprojects/extensions-tool/src/command-create.c:380 #: subprojects/extensions-tool/src/command-create.c:380
msgid "Template" msgid "Template"
msgstr "Modelo" msgstr "Plantilla"
#: subprojects/extensions-tool/src/command-create.c:435 #: subprojects/extensions-tool/src/command-create.c:435
msgid "The unique identifier of the new extension" msgid "The unique identifier of the new extension"
@@ -2618,11 +2632,12 @@ msgstr "Unha descrición curta do que a súa extensión fai"
#: subprojects/extensions-tool/src/command-create.c:446 #: subprojects/extensions-tool/src/command-create.c:446
msgid "TEMPLATE" msgid "TEMPLATE"
msgstr "MODELO" msgstr "PLANTILLA"
#: subprojects/extensions-tool/src/command-create.c:447 #: subprojects/extensions-tool/src/command-create.c:447
#| msgid "The user-visible name of the new extension"
msgid "The template to use for the new extension" msgid "The template to use for the new extension"
msgstr "O modelo a usar para a nova extensión" msgstr "A plantilla a usar para a nova extensión"
#: subprojects/extensions-tool/src/command-create.c:453 #: subprojects/extensions-tool/src/command-create.c:453
msgid "Enter extension information interactively" msgid "Enter extension information interactively"
@@ -2646,7 +2661,7 @@ msgstr "Requírese o UUID, o nome e a descrición"
#: subprojects/extensions-tool/src/command-info.c:50 #: subprojects/extensions-tool/src/command-info.c:50
#: subprojects/extensions-tool/src/command-list.c:64 #: subprojects/extensions-tool/src/command-list.c:64
msgid "Failed to connect to GNOME Shell\n" msgid "Failed to connect to GNOME Shell\n"
msgstr "Produciuse un fallo ao conetarse a GNOME Shell\n" msgstr "Produciuse un fallo ao contectarse á Shell de GNOME\n"
#: subprojects/extensions-tool/src/command-disable.c:53 #: subprojects/extensions-tool/src/command-disable.c:53
#: subprojects/extensions-tool/src/command-enable.c:53 #: subprojects/extensions-tool/src/command-enable.c:53
@@ -2797,6 +2812,7 @@ msgstr "Especificouse máis dun directorio de orixe"
#: subprojects/extensions-tool/src/command-prefs.c:47 #: subprojects/extensions-tool/src/command-prefs.c:47
#, c-format #, c-format
#| msgid "Show extensions with preferences"
msgid "Extension “%s” doesn't have preferences\n" msgid "Extension “%s” doesn't have preferences\n"
msgstr "A extensión «%s» non ten preferencias\n" msgstr "A extensión «%s» non ten preferencias\n"
@@ -2809,11 +2825,13 @@ msgid "Reset an extension"
msgstr "Restabelece unha extensión" msgstr "Restabelece unha extensión"
#: subprojects/extensions-tool/src/command-uninstall.c:49 #: subprojects/extensions-tool/src/command-uninstall.c:49
#| msgid "List installed extensions"
msgid "Cannot uninstall system extensions\n" msgid "Cannot uninstall system extensions\n"
msgstr "Non é posíbel desinstalar as extensións do sistema\n" msgstr "Non é posíbel desinstalar as extensións do sistema\n"
#: subprojects/extensions-tool/src/command-uninstall.c:64 #: subprojects/extensions-tool/src/command-uninstall.c:64
#, c-format #, c-format
#| msgid "Failed to launch “%s”"
msgid "Failed to uninstall “%s”\n" msgid "Failed to uninstall “%s”\n"
msgstr "Produciuse un erro ao desinstalar «%s»\n" msgstr "Produciuse un erro ao desinstalar «%s»\n"
@@ -2823,11 +2841,11 @@ msgstr "Desinstala unha extensión"
#: subprojects/extensions-tool/src/main.c:72 #: subprojects/extensions-tool/src/main.c:72
msgid "Do not print error messages" msgid "Do not print error messages"
msgstr "Non é posíbel imprimir os mensaxes de erro" msgstr "Non imprimir os mensaxes de erro"
#: subprojects/extensions-tool/src/main.c:146 #: subprojects/extensions-tool/src/main.c:146
msgid "Failed to connect to GNOME Shell" msgid "Failed to connect to GNOME Shell"
msgstr "Produciuse un fallo ao conectarse con GNOME Shell" msgstr "Produciuse un fallo ao conectarse ao Shell de GNOME"
#: subprojects/extensions-tool/src/main.c:244 #: subprojects/extensions-tool/src/main.c:244
msgid "Path" msgid "Path"
@@ -2926,6 +2944,7 @@ msgid "Plain"
msgstr "Plana" msgstr "Plana"
#: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5 #: subprojects/extensions-tool/src/templates/00-plain.desktop.in:5
#| msgid "Reset extension"
msgid "An empty extension" msgid "An empty extension"
msgstr "Unha extensión baleira" msgstr "Unha extensión baleira"
@@ -2935,7 +2954,7 @@ msgstr "Indicador"
#: subprojects/extensions-tool/src/templates/indicator.desktop.in:5 #: subprojects/extensions-tool/src/templates/indicator.desktop.in:5
msgid "Add an icon to the top bar" msgid "Add an icon to the top bar"
msgstr "Engade unha icona na barra superior" msgstr "Engade unha icona á barra superior"
#. translators: #. translators:
#. * The number of sound outputs on a particular device #. * The number of sound outputs on a particular device

300
po/ro.po
View File

@@ -10,10 +10,9 @@ 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-21 05:44+0000\n" "POT-Creation-Date: 2020-08-10 23:58+0000\n"
"PO-Revision-Date: 2020-07-21 09:07+0200\n" "PO-Revision-Date: 2020-08-14 15:27+0300\n"
"Last-Translator: Florentina Mușat <florentina [dot] musat [dot] 28 [at] " "Last-Translator: Florentina Mușat <florentina.musat.28@gmail.com>\n"
"gmail [dot] com>\n"
"Language-Team: Gnome Romanian Translation Team <gnomero-list@lists." "Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
"sourceforge.net>\n" "sourceforge.net>\n"
"Language: ro\n" "Language: ro\n"
@@ -23,7 +22,7 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
"%100<=19) ? 1 : 2);\n" "%100<=19) ? 1 : 2);\n"
"20)) ? 1: 2);\n" "20)) ? 1: 2);\n"
"X-Generator: Poedit 2.3.1\n" "X-Generator: Poedit 2.4\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
"X-Poedit-SourceCharset: UTF-8\n" "X-Poedit-SourceCharset: UTF-8\n"
@@ -235,11 +234,11 @@ msgid ""
"“application id” → 'data' pair. Currently, the following values are stored " "“application id” → 'data' pair. Currently, the following values are stored "
"as 'data': • “position”: the position of the application icon in the page" "as 'data': • “position”: the position of the application icon in the page"
msgstr "" msgstr ""
"Aspectul selectorului de aplicații. Fiecare intrare din matrice este o " "Aspectul selectorului de aplicații. Fiecare intrare din vector este o "
"pagină. Paginile sunt stocate în ordinea în care apar în GNOME Shell. " "pagină. Paginile sunt stocate în ordinea în care apar în GNOME Shell. "
"Fiecare pagină conține o pereche de „id aplicație” → „date”. Momentan, " "Fiecare pagină conține o pereche de „id aplicație” → „date”. Momentan, "
"următoarele valori sunt stocate ca „data”: • „poziție”: poziția iconiței " "următoarele valori sunt stocate ca „data”: • „poziție”: poziția iconiței "
"aplicației în pagină." "aplicației în pagină"
#: data/org.gnome.shell.gschema.xml.in:130 #: data/org.gnome.shell.gschema.xml.in:130
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
@@ -450,9 +449,9 @@ msgstr "Vizitează pagina principală a extensiei"
#: 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 "Anulează" msgstr "Anulează"
@@ -488,7 +487,7 @@ msgstr "(de exemplu, utilizator sau %s)"
msgid "Username" msgid "Username"
msgstr "Nume de utilizator" msgstr "Nume de utilizator"
#: js/gdm/loginDialog.js:1254 #: js/gdm/loginDialog.js:1253
msgid "Login Window" msgid "Login Window"
msgstr "Fereastră de autentificare" msgstr "Fereastră de autentificare"
@@ -506,73 +505,84 @@ msgid "(or swipe finger)"
msgstr "(sau treceți degetul peste)" msgstr "(sau treceți degetul peste)"
#. 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 "Oprire" msgstr "Oprire"
#. 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;halt;stop"
msgstr "power off;shutdown;reboot;restart;oprire;repornire" msgstr "power off;shutdown;halt;stop;oprește;închide;blochează"
#. Translators: The name of the restart action in search
#: js/misc/systemActions.js:99
msgctxt "search-result"
msgid "Restart"
msgstr "Repornire"
#. Translators: A list of keywords that match the restart action, separated by semicolons
#: js/misc/systemActions.js:102
msgid "reboot;restart;"
msgstr "repornește;restartează;"
#. 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 "Blochează ecranul" msgstr "Blochează ecranul"
#. 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 "lock screen;blochează ecranul" msgstr "lock screen;blochează ecranul"
#. 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 "Ieșire din sesiune" msgstr "Ieșire din sesiune"
#. 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 "logout;sign off;ieșire din sesiune;deautentificare" msgstr "logout;sign off;ieșire din sesiune;deautentificare"
#. 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 "Suspendare" msgstr "Suspendare"
#. 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 "suspend;sleep;suspendare" msgstr "suspend;sleep;suspendare"
#. 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 "Comută utilizatorul" msgstr "Comută utilizatorul"
#. 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 "switch user;comută utilizatorul" msgstr "switch user;comută utilizatorul"
#. 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 "" msgstr ""
"lock orientation;screen;rotation;blocare orientare;blocare de orientare;" "lock orientation;screen;rotation;blocare orientare;blocare de orientare;"
"ecran;rotație" "ecran;rotație"
#: 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 "Deblochează rotația ecranului" msgstr "Deblochează rotația ecranului"
#: 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 "Rotație de ecran blocat" msgstr "Rotație de ecran blocat"
@@ -749,31 +759,31 @@ msgid "Unnamed Folder"
msgstr "Dosar nedenumit" msgstr "Dosar nedenumit"
#. 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 "Ferestre deschise" msgstr "Ferestre deschise"
#: 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 "Fereastră nouă" msgstr "Fereastră nouă"
#: js/ui/appDisplay.js:2802 #: js/ui/appDisplay.js:2797
msgid "Launch using Integrated Graphics Card" msgid "Launch using Integrated Graphics Card"
msgstr "Lansează folosind placa grafică integrată" msgstr "Lansează folosind placa grafică integrată"
#: js/ui/appDisplay.js:2803 #: js/ui/appDisplay.js:2798
msgid "Launch using Discrete Graphics Card" msgid "Launch using Discrete Graphics Card"
msgstr "Lansează folosind placa grafică discretă" msgstr "Lansează folosind placa grafică discretă"
#: 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 "Elimină din favorite" msgstr "Elimină din favorite"
#: js/ui/appDisplay.js:2837 #: js/ui/appDisplay.js:2832
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Adaugă la Favorite" msgstr "Adaugă la Favorite"
#: 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 "Arată detaliile" msgstr "Arată detaliile"
@@ -974,8 +984,8 @@ msgstr ""
"În mod alternativ vă puteți conecta apăsând butonul „WPS” pe routerul " "În mod alternativ vă puteți conecta apăsând butonul „WPS” pe routerul "
"dumneavoastră." "dumneavoastră."
#: 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 "Conectare" msgstr "Conectare"
@@ -1040,7 +1050,7 @@ msgstr "PIN"
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Este necesară o parolă pentru conectarea la „%s”." msgstr "Este necesară o parolă pentru conectarea la „%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 "Gestionar de rețea" msgstr "Gestionar de rețea"
@@ -1166,18 +1176,18 @@ msgstr "Vreme"
msgid "Select weather location…" msgid "Select weather location…"
msgstr "Selectează locația vremii…" msgstr "Selectează locația vremii…"
#: 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 "Ieșire din sesiune pentru %s" msgstr "Ieșire din sesiune pentru %s"
#: js/ui/endSessionDialog.js:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Ieșire din sesiune" msgstr "Ieșire din sesiune"
#: 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."
@@ -1185,7 +1195,7 @@ msgstr[0] "%s va fi scos din sesiune automat în %d secundă."
msgstr[1] "%s va fi scos din sesiune automat în %d secunde." msgstr[1] "%s va fi scos din sesiune automat în %d secunde."
msgstr[2] "%s va fi scos din sesiune automat în %d de secunde." msgstr[2] "%s va fi scos din sesiune automat în %d de secunde."
#: 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."
@@ -1193,22 +1203,22 @@ msgstr[0] "Veți fi scos din sesiune automat în %d secundă."
msgstr[1] "Veți fi scos din sesiune automat în %d secunde." msgstr[1] "Veți fi scos din sesiune automat în %d secunde."
msgstr[2] "Veți fi scos din sesiune automat în %d de secunde." msgstr[2] "Veți fi scos din sesiune automat în %d de secunde."
#: js/ui/endSessionDialog.js:51 #: js/ui/endSessionDialog.js:56
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Ieșire din sesiune" msgstr "Ieșire din sesiune"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:62
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Oprire" msgstr "Oprire"
#: 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 "Instalarea actualizărilor și repornirea" msgstr "Instalarea actualizărilor și repornirea"
#: 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."
@@ -1216,27 +1226,27 @@ msgstr[0] "Sistemul se va opri automat în %d secundă."
msgstr[1] "Sistemul se va opri automat în %d secunde." msgstr[1] "Sistemul se va opri automat în %d secunde."
msgstr[2] "Sistemul se va opri automat în %d de secunde." msgstr[2] "Sistemul se va opri automat în %d de secunde."
#: 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 "Instalează actualizările în așteptare" msgstr "Instalează actualizările în așteptare"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:74
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:68
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Oprire" msgstr "Oprire"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:81
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Repornire" msgstr "Repornire"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:82
msgctxt "title"
msgid "Install Updates & Restart"
msgstr "Instalează actualizările și repornește"
#: 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."
@@ -1244,12 +1254,17 @@ msgstr[0] "Sistemul se va reporni automat în %d secundă."
msgstr[1] "Sistemul se va reporni automat în %d secunde." msgstr[1] "Sistemul se va reporni automat în %d secunde."
msgstr[2] "Sistemul se va reporni automat în %d de secunde." msgstr[2] "Sistemul se va reporni automat în %d de secunde."
#: js/ui/endSessionDialog.js:89 #: js/ui/endSessionDialog.js:93
msgctxt "button"
msgid "Restart"
msgstr "Repornire"
#: js/ui/endSessionDialog.js:101
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Repornire și instalare actualizări" msgstr "Repornire și instalare actualizări"
#: 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 ""
@@ -1258,22 +1273,22 @@ msgstr[0] "Sistemul se va reporni automat în %d secundă."
msgstr[1] "Sistemul se va reporni automat în %d secunde." msgstr[1] "Sistemul se va reporni automat în %d secunde."
msgstr[2] "Sistemul se va reporni automat în %d de secunde." msgstr[2] "Sistemul se va reporni automat în %d de secunde."
#: 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 "Repornește și instalează" msgstr "Repornește și instalează"
#: 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 "Instalează și oprește" msgstr "Instalează și oprește"
#: 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 "Oprește după ce actualizările au fost instalate" msgstr "Oprește după ce actualizările au fost instalate"
#: js/ui/endSessionDialog.js:106 #: js/ui/endSessionDialog.js:121
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Repornire și instalare înnoiri" msgstr "Repornire și instalare înnoiri"
@@ -1281,7 +1296,7 @@ msgstr "Repornire și instalare înnoiri"
#. 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,28 +1306,32 @@ msgstr ""
"timp: asigurați-vă că ați făcut o copie de siguranță și că calculatorul este " "timp: asigurați-vă că ați făcut o copie de siguranță și că calculatorul este "
"conectat la rețeaua electrică." "conectat la rețeaua electrică."
#: 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 ""
"Se rulează pe puterea bateriei: conectați-vă înainte de a instala " "Putere de baterie scăzută: conectați înainte de a instala actualizările."
"actualizările."
#: 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 "Unele aplicații sunt ocupate sau au muncă nesalvată" msgstr "Unele aplicații sunt ocupate sau au muncă nesalvată"
#: js/ui/endSessionDialog.js:273 #: js/ui/endSessionDialog.js:298
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Alți utilizatori sunt autentificați" msgstr "Alți utilizatori sunt autentificați"
#: js/ui/endSessionDialog.js:467
msgctxt "button"
msgid "Boot Options"
msgstr "Opțiuni de inițializare"
#. 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 (la distanță)" msgstr "%s (la distanță)"
#. 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 (consolă)" msgstr "%s (consolă)"
@@ -1415,15 +1434,15 @@ msgid "Leave On"
msgstr "Lasă pornit" msgstr "Lasă pornit"
#: 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 "Pornește" msgstr "Pornește"
#: 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 "Oprește" msgstr "Oprește"
@@ -1484,11 +1503,11 @@ msgstr "Vizualizează sursa"
msgid "Web Page" msgid "Web Page"
msgstr "Pagină Web" msgstr "Pagină 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 "Autentificat ca utilizator privilegiat" msgstr "Autentificat ca utilizator 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."
@@ -1497,11 +1516,11 @@ msgstr ""
"pentru motive de securitate. Dacă este posibil, ar trebui să vă " "pentru motive de securitate. Dacă este posibil, ar trebui să vă "
"autentificați ca un utilizator normal." "autentificați ca un utilizator normal."
#: js/ui/main.js:337 #: js/ui/main.js:334
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Blocarea ecranului este dezactivată" msgstr "Blocarea ecranului este dezactivată"
#: 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 "Blocarea ecranului necesită administratorul de afișaj GNOME." msgstr "Blocarea ecranului necesită administratorul de afișaj GNOME."
@@ -1594,7 +1613,7 @@ msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: js/ui/panel.js:827 #: js/ui/panel.js:825
msgid "Top Bar" msgid "Top Bar"
msgstr "Bara de sus" msgstr "Bara de sus"
@@ -1772,7 +1791,7 @@ msgstr "Text mare"
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 "Configurări Bluetooth" msgstr "Configurări Bluetooth"
@@ -1856,18 +1875,18 @@ msgstr ""
"Accesul la locație poate fi schimbat oricând din configurările de " "Accesul la locație poate fi schimbat oricând din configurările de "
"confidențialitate." "confidențialitate."
#: js/ui/status/network.js:70 #: js/ui/status/network.js:71
msgid "<unknown>" msgid "<unknown>"
msgstr "<necunoscut>" msgstr "<necunoscut>"
#. 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 oprit" msgstr "%s oprit"
#. 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 conectat" msgstr "%s conectat"
@@ -1875,164 +1894,164 @@ msgstr "%s conectat"
#. 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 este negestionat" msgstr "%s este negestionat"
#. 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 "Se deconectează %s" msgstr "Se deconectează %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 "Se conectează %s" msgstr "Se conectează %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 necesită autentificare" msgstr "%s necesită autentificare"
#. 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 "Firmware lipsă pentru %s" msgstr "Firmware lipsă pentru %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 indisponibil" msgstr "%s indisponibil"
#. 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 "Conectarea la %s a eșuat" msgstr "Conectarea la %s a eșuat"
#: js/ui/status/network.js:472 #: js/ui/status/network.js:497
msgid "Wired Settings" msgid "Wired Settings"
msgstr "Configurări pentru conexiune cu fir" msgstr "Configurări pentru conexiune cu fir"
#: js/ui/status/network.js:515 #: js/ui/status/network.js:540
msgid "Mobile Broadband Settings" msgid "Mobile Broadband Settings"
msgstr "Configurări de rețea de bandă largă mobilă" msgstr "Configurări de rețea de bandă largă mobilă"
#. 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 dezactivat" msgstr "Hardware %s dezactivat"
#. 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 dezactivat" msgstr "%s dezactivat"
#: js/ui/status/network.js:607 #: js/ui/status/network.js:631
msgid "Connect to Internet" msgid "Connect to Internet"
msgstr "Conectează la Internet" msgstr "Conectează la Internet"
#: js/ui/status/network.js:811 #: js/ui/status/network.js:835
msgid "Airplane Mode is On" msgid "Airplane Mode is On"
msgstr "Modul avion este pornit" msgstr "Modul avion este pornit"
#: 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 "Wi-Fi este dezactivat când modul avion este pornit." msgstr "Wi-Fi este dezactivat când modul avion este pornit."
#: js/ui/status/network.js:813 #: js/ui/status/network.js:837
msgid "Turn Off Airplane Mode" msgid "Turn Off Airplane Mode"
msgstr "Oprește modul avion" msgstr "Oprește modul avion"
#: js/ui/status/network.js:822 #: js/ui/status/network.js:846
msgid "Wi-Fi is Off" msgid "Wi-Fi is Off"
msgstr "Wi-Fi este oprit" msgstr "Wi-Fi este oprit"
#: 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 "Wi-Fi trebuie pornit pentru a se putea face conexiunea la o rețea." msgstr "Wi-Fi trebuie pornit pentru a se putea face conexiunea la o rețea."
#: js/ui/status/network.js:824 #: js/ui/status/network.js:848
msgid "Turn On Wi-Fi" msgid "Turn On Wi-Fi"
msgstr "Pornește Wi-Fi" msgstr "Pornește Wi-Fi"
#: js/ui/status/network.js:849 #: js/ui/status/network.js:873
msgid "Wi-Fi Networks" msgid "Wi-Fi Networks"
msgstr "Rețele Wi-Fi" msgstr "Rețele Wi-Fi"
#: js/ui/status/network.js:851 #: js/ui/status/network.js:875
msgid "Select a network" msgid "Select a network"
msgstr "Selectați o rețea" msgstr "Selectați o rețea"
#: js/ui/status/network.js:883 #: js/ui/status/network.js:907
msgid "No Networks" msgid "No Networks"
msgstr "Nicio rețea" msgstr "Nicio rețea"
#: 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 "Folosește un întrerupător hardware pentru a opri" msgstr "Folosește un întrerupător hardware pentru a opri"
#: js/ui/status/network.js:1181 #: js/ui/status/network.js:1205
msgid "Select Network" msgid "Select Network"
msgstr "Selectați rețeaua" msgstr "Selectați rețeaua"
#: js/ui/status/network.js:1187 #: js/ui/status/network.js:1211
msgid "Wi-Fi Settings" msgid "Wi-Fi Settings"
msgstr "Configurări Wi-Fi" msgstr "Configurări 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 "Hotspot %s activ" msgstr "Hotspot %s activ"
#. 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 nu este conectat" msgstr "%s nu este conectat"
#: js/ui/status/network.js:1420 #: js/ui/status/network.js:1444
msgid "connecting…" msgid "connecting…"
msgstr "se conectează…" msgstr "se conectează…"
#. 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 "necesită autentificare" msgstr "necesită autentificare"
#: js/ui/status/network.js:1425 #: js/ui/status/network.js:1449
msgid "connection failed" msgid "connection failed"
msgstr "conexiune eșuată" msgstr "conexiune eșuată"
#: js/ui/status/network.js:1476 #: js/ui/status/network.js:1500
msgid "VPN Settings" msgid "VPN Settings"
msgstr "Configurări VPN" msgstr "Configurări 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 oprit" msgstr "VPN oprit"
#: 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 "Configurări de rețea" msgstr "Configurări de rețea"
#: 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"
@@ -2040,7 +2059,7 @@ msgstr[0] "%s conexiune cu fir"
msgstr[1] "%s conexiuni cu fir" msgstr[1] "%s conexiuni cu fir"
msgstr[2] "%s de conexiuni cu fir" msgstr[2] "%s de conexiuni cu fir"
#: 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"
@@ -2048,7 +2067,7 @@ msgstr[0] "%s conexiune fără fir"
msgstr[1] "%s conexiuni fără fir" msgstr[1] "%s conexiuni fără fir"
msgstr[2] "%s de conexiuni fără fir" msgstr[2] "%s de conexiuni fără fir"
#: 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"
@@ -2056,11 +2075,11 @@ msgstr[0] "%s conexiune cu modem"
msgstr[1] "%s conexiuni cu modem" msgstr[1] "%s conexiuni cu modem"
msgstr[2] "%s de conexiuni cu modem" msgstr[2] "%s de conexiuni cu modem"
#: js/ui/status/network.js:1735 #: js/ui/status/network.js:1759
msgid "Connection failed" msgid "Connection failed"
msgstr "Conexiune eșuată" msgstr "Conexiune eșuată"
#: 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 "Activarea conexiunii de rețea a eșuat" msgstr "Activarea conexiunii de rețea a eșuat"
@@ -2115,11 +2134,11 @@ msgstr "%d%02d până este plină (%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 "Ecranul este partajat" msgstr "Ecranul este partajat"
#: js/ui/status/remoteAccess.js:45 #: js/ui/status/remoteAccess.js:47
msgid "Turn off" msgid "Turn off"
msgstr "Oprește" msgstr "Oprește"
@@ -2130,30 +2149,34 @@ msgstr "Oprește"
msgid "Airplane Mode On" msgid "Airplane Mode On"
msgstr "Modul avion este pornit" msgstr "Modul avion este pornit"
#: js/ui/status/system.js:102 #: js/ui/status/system.js:104
msgid "Lock" msgid "Lock"
msgstr "Blocare" msgstr "Blocare"
#: js/ui/status/system.js:115 #: js/ui/status/system.js:116
msgid "Power Off / Log Out" msgid "Power Off / Log Out"
msgstr "Oprire / Deautentificare" msgstr "Oprire / Deautentificare"
#: js/ui/status/system.js:118 #: js/ui/status/system.js:119
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:130
msgid "Switch User…"
msgstr "Comută utilizatorul…"
#: js/ui/status/system.js:144
msgid "Suspend" msgid "Suspend"
msgstr "Suspendare" msgstr "Suspendare"
#: js/ui/status/system.js:156 #: js/ui/status/system.js:130
msgid "Restart…"
msgstr "Repornește…"
#: js/ui/status/system.js:141
msgid "Power Off…" msgid "Power Off…"
msgstr "Se oprește…" msgstr "Se oprește…"
#: js/ui/status/system.js:154
msgid "Log Out"
msgstr "Ieșire din sesiune"
#: js/ui/status/system.js:165
msgid "Switch User…"
msgstr "Comută utilizatorul…"
#: js/ui/status/thunderbolt.js:263 #: js/ui/status/thunderbolt.js:263
msgid "Thunderbolt" msgid "Thunderbolt"
msgstr "Thunderbolt" msgstr "Thunderbolt"
@@ -2261,22 +2284,22 @@ msgid "“%s” is ready"
msgstr "„%s” este gata" msgstr "„%s” este gata"
#. 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 "Doriți să păstrați aceste configurări de afișaj?" msgstr "Doriți să păstrați aceste configurări de afișaj?"
#. 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 "Restaurează configurările" msgstr "Restaurează configurările"
#: js/ui/windowManager.js:67 #: js/ui/windowManager.js:72
msgid "Keep Changes" msgid "Keep Changes"
msgstr "Păstrați modificările" msgstr "Păstrați modificările"
#: 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"
@@ -2286,7 +2309,7 @@ msgstr[2] "Schimbările vor fi restaurare în %d de secunde"
#. 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"
@@ -3434,9 +3457,6 @@ msgstr "Sunete de sistem"
#~ msgid "Power" #~ msgid "Power"
#~ msgstr "Oprire" #~ msgstr "Oprire"
#~ msgid "Restart"
#~ msgstr "Repornire"
#~ msgid "Click Log Out to quit these applications and log out of the system." #~ msgid "Click Log Out to quit these applications and log out of the system."
#~ msgstr "" #~ msgstr ""
#~ "Apăsați „Ieșire din sesiune” pentru a închide aceste aplicații și a ieși " #~ "Apăsați „Ieșire din sesiune” pentru a închide aceste aplicații și a ieși "

View File

@@ -163,7 +163,6 @@ struct _ShellBlurEffect
ClutterEffect parent_instance; ClutterEffect parent_instance;
ClutterActor *actor; ClutterActor *actor;
int old_opacity_override;
BlurData blur[2]; BlurData blur[2];
@@ -486,21 +485,6 @@ calculate_downscale_factor (float width,
return downscale_factor; return downscale_factor;
} }
static void
clear_framebuffer (CoglFramebuffer *framebuffer)
{
static CoglColor transparent;
static gboolean initialized = FALSE;
if (!initialized)
{
cogl_color_init_from_4ub (&transparent, 0, 0, 0, 0);
initialized = TRUE;
}
cogl_framebuffer_clear (framebuffer, COGL_BUFFER_BIT_COLOR, &transparent);
}
static void static void
shell_blur_effect_set_actor (ClutterActorMeta *meta, shell_blur_effect_set_actor (ClutterActorMeta *meta,
ClutterActor *actor) ClutterActor *actor)
@@ -561,47 +545,45 @@ update_actor_box (ShellBlurEffect *self,
} }
static void static void
paint_texture (ShellBlurEffect *self, add_blurred_pipeline (ShellBlurEffect *self,
ClutterPaintContext *paint_context) ClutterPaintNode *node)
{ {
CoglFramebuffer *framebuffer; g_autoptr (ClutterPaintNode) pipeline_node = NULL;
float width, height; float width, height;
framebuffer = clutter_paint_context_get_framebuffer (paint_context);
/* Use the untransformed actor size here, since the framebuffer itself already /* Use the untransformed actor size here, since the framebuffer itself already
* has the actor transform matrix applied. * has the actor transform matrix applied.
*/ */
clutter_actor_get_size (self->actor, &width, &height); clutter_actor_get_size (self->actor, &width, &height);
update_brightness_uniform (self); update_brightness_uniform (self);
cogl_framebuffer_draw_rectangle (framebuffer,
self->brightness_fb.pipeline, pipeline_node = clutter_pipeline_node_new (self->brightness_fb.pipeline);
0, 0, clutter_paint_node_set_static_name (pipeline_node, "ShellBlurEffect (final)");
width, clutter_paint_node_add_child (node, pipeline_node);
height);
clutter_paint_node_add_rectangle (pipeline_node,
&(ClutterActorBox) {
0.f, 0.f,
width,
height,
});
} }
static void static ClutterPaintNode *
apply_blur (ShellBlurEffect *self, create_blur_nodes (ShellBlurEffect *self,
ClutterPaintContext *paint_context, ClutterPaintNode *node,
FramebufferData *from, uint8_t paint_opacity)
uint8_t paint_opacity)
{ {
g_autoptr (ClutterPaintNode) brightness_node = NULL;
g_autoptr (ClutterPaintNode) hblur_node = NULL;
g_autoptr (ClutterPaintNode) vblur_node = NULL;
BlurData *vblur; BlurData *vblur;
BlurData *hblur; BlurData *hblur;
vblur = &self->blur[VERTICAL]; vblur = &self->blur[VERTICAL];
hblur = &self->blur[HORIZONTAL]; hblur = &self->blur[HORIZONTAL];
/* Copy the actor contents into the vblur framebuffer */
clear_framebuffer (vblur->data.framebuffer);
cogl_framebuffer_draw_rectangle (vblur->data.framebuffer,
from->pipeline,
0, 0,
cogl_texture_get_width (vblur->data.texture),
cogl_texture_get_height (vblur->data.texture));
/* Pass 1: /* Pass 1:
* *
* Draw the actor contents (which is in the vblur framebuffer * Draw the actor contents (which is in the vblur framebuffer
@@ -611,12 +593,16 @@ apply_blur (ShellBlurEffect *self,
*/ */
update_blur_uniforms (self, vblur); update_blur_uniforms (self, vblur);
clear_framebuffer (hblur->data.framebuffer); vblur_node = clutter_layer_node_new_with_framebuffer (vblur->data.framebuffer,
cogl_framebuffer_draw_rectangle (hblur->data.framebuffer, vblur->data.pipeline,
vblur->data.pipeline, 255);
0, 0, clutter_paint_node_set_static_name (vblur_node, "ShellBlurEffect (vertical pass)");
cogl_texture_get_width (hblur->data.texture), clutter_paint_node_add_rectangle (vblur_node,
cogl_texture_get_height (hblur->data.texture)); &(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (hblur->data.texture),
cogl_texture_get_height (hblur->data.texture)
});
/* Pass 2: /* Pass 2:
* *
@@ -624,30 +610,44 @@ apply_blur (ShellBlurEffect *self,
* horizontal blur pipeline into the brightness framebuffer. * horizontal blur pipeline into the brightness framebuffer.
*/ */
update_blur_uniforms (self, hblur); update_blur_uniforms (self, hblur);
cogl_pipeline_set_color4ub (hblur->data.pipeline,
paint_opacity,
paint_opacity,
paint_opacity,
paint_opacity);
clear_framebuffer (self->brightness_fb.framebuffer); hblur_node = clutter_layer_node_new_with_framebuffer (hblur->data.framebuffer,
cogl_framebuffer_draw_rectangle (self->brightness_fb.framebuffer, hblur->data.pipeline,
hblur->data.pipeline, paint_opacity);
0, 0, clutter_paint_node_set_static_name (hblur_node, "ShellBlurEffect (horizontal pass)");
cogl_texture_get_width (self->brightness_fb.texture), clutter_paint_node_add_rectangle (hblur_node,
cogl_texture_get_height (self->brightness_fb.texture)); &(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (self->brightness_fb.texture),
cogl_texture_get_height (self->brightness_fb.texture),
});
update_brightness_uniform (self);
brightness_node = clutter_layer_node_new_with_framebuffer (self->brightness_fb.framebuffer,
self->brightness_fb.pipeline,
255);
clutter_paint_node_set_static_name (brightness_node, "ShellBlurEffect (brightness)");
clutter_paint_node_add_child (hblur_node, vblur_node);
clutter_paint_node_add_child (brightness_node, hblur_node);
clutter_paint_node_add_child (node, brightness_node);
self->cache_flags |= BLUR_APPLIED; self->cache_flags |= BLUR_APPLIED;
return g_steal_pointer (&vblur_node);
} }
static gboolean static void
paint_background (ShellBlurEffect *self, paint_background (ShellBlurEffect *self,
ClutterPaintNode *node,
ClutterPaintContext *paint_context, ClutterPaintContext *paint_context,
ClutterActorBox *source_actor_box) ClutterActorBox *source_actor_box)
{ {
g_autoptr (GError) error = NULL; g_autoptr (ClutterPaintNode) background_node = NULL;
g_autoptr (ClutterPaintNode) blit_node = NULL;
CoglFramebuffer *framebuffer; CoglFramebuffer *framebuffer;
BlurData *vblur = &self->blur[VERTICAL];
float transformed_x; float transformed_x;
float transformed_y; float transformed_y;
float transformed_width; float transformed_width;
@@ -662,23 +662,31 @@ paint_background (ShellBlurEffect *self,
&transformed_width, &transformed_width,
&transformed_height); &transformed_height);
clear_framebuffer (self->background_fb.framebuffer); /* Background layer node */
cogl_blit_framebuffer (framebuffer, background_node =
self->background_fb.framebuffer, clutter_layer_node_new_with_framebuffer (self->background_fb.framebuffer,
transformed_x, self->background_fb.pipeline,
transformed_y, 255);
0, 0, clutter_paint_node_set_static_name (background_node, "ShellBlurEffect (background)");
transformed_width, clutter_paint_node_add_child (node, background_node);
transformed_height, clutter_paint_node_add_rectangle (background_node,
&error); &(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (vblur->data.texture),
cogl_texture_get_height (vblur->data.texture),
});
if (error) /* Blit node */
{ blit_node = clutter_blit_node_new (framebuffer,
g_warning ("Error blitting overlay framebuffer: %s", error->message); self->background_fb.framebuffer);
return FALSE; clutter_paint_node_set_static_name (blit_node, "ShellBlurEffect (blit)");
} clutter_paint_node_add_child (background_node, blit_node);
clutter_blit_node_add_blit_rectangle (CLUTTER_BLIT_NODE (blit_node),
return TRUE; transformed_x,
transformed_y,
0, 0,
transformed_width,
transformed_height);
} }
static gboolean static gboolean
@@ -711,11 +719,25 @@ update_framebuffers (ShellBlurEffect *self,
return updated; return updated;
} }
static void
add_actor_node (ShellBlurEffect *self,
ClutterPaintNode *node,
int opacity)
{
g_autoptr (ClutterPaintNode) actor_node = NULL;
actor_node = clutter_actor_node_new (self->actor, opacity);
clutter_paint_node_add_child (node, actor_node);
}
static void static void
paint_actor_offscreen (ShellBlurEffect *self, paint_actor_offscreen (ShellBlurEffect *self,
ClutterPaintContext *paint_context, ClutterPaintNode *node,
ClutterEffectPaintFlags flags) ClutterEffectPaintFlags flags)
{ {
g_autoptr (ClutterPaintNode) transform_node = NULL;
g_autoptr (ClutterPaintNode) layer_node = NULL;
CoglMatrix transform;
gboolean actor_dirty; gboolean actor_dirty;
actor_dirty = (flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY) != 0; actor_dirty = (flags & CLUTTER_EFFECT_PAINT_ACTOR_DIRTY) != 0;
@@ -724,27 +746,30 @@ paint_actor_offscreen (ShellBlurEffect *self,
if (!actor_dirty && (self->cache_flags & ACTOR_PAINTED)) if (!actor_dirty && (self->cache_flags & ACTOR_PAINTED))
return; return;
self->old_opacity_override = clutter_actor_get_opacity_override (self->actor); // Layer node
clutter_actor_set_opacity_override (self->actor, 0xff); layer_node = clutter_layer_node_new_with_framebuffer (self->actor_fb.framebuffer,
self->actor_fb.pipeline,
0xff);
clutter_paint_node_set_static_name (layer_node, "ShellBlurEffect (actor offscreen)");
clutter_paint_node_add_child (node, layer_node);
clutter_paint_node_add_rectangle (layer_node,
&(ClutterActorBox) {
0.f, 0.f,
cogl_texture_get_width (self->blur[VERTICAL].data.texture),
cogl_texture_get_height (self->blur[VERTICAL].data.texture),
});
/* Draw the actor contents into the actor offscreen framebuffer */ // Transform node
clear_framebuffer (self->actor_fb.framebuffer); cogl_matrix_init_identity (&transform);
cogl_matrix_scale (&transform,
1.f / self->downscale_factor,
1.f / self->downscale_factor,
1.f);
transform_node = clutter_transform_node_new (&transform);
clutter_paint_node_set_static_name (transform_node, "ShellBlurEffect (downscale)");
clutter_paint_node_add_child (layer_node, transform_node);
cogl_framebuffer_push_matrix (self->actor_fb.framebuffer); add_actor_node (self, transform_node, 255);
cogl_framebuffer_scale (self->actor_fb.framebuffer,
1.f / self->downscale_factor,
1.f / self->downscale_factor,
1.f);
clutter_paint_context_push_framebuffer (paint_context,
self->actor_fb.framebuffer);
clutter_actor_continue_paint (self->actor, paint_context);
cogl_framebuffer_pop_matrix (self->actor_fb.framebuffer);
clutter_paint_context_pop_framebuffer (paint_context);
clutter_actor_set_opacity_override (self->actor, self->old_opacity_override);
self->cache_flags |= ACTOR_PAINTED; self->cache_flags |= ACTOR_PAINTED;
} }
@@ -775,6 +800,7 @@ needs_repaint (ShellBlurEffect *self,
static void static void
shell_blur_effect_paint (ClutterEffect *effect, shell_blur_effect_paint (ClutterEffect *effect,
ClutterPaintNode *node,
ClutterPaintContext *paint_context, ClutterPaintContext *paint_context,
ClutterEffectPaintFlags flags) ClutterEffectPaintFlags flags)
{ {
@@ -785,6 +811,8 @@ shell_blur_effect_paint (ClutterEffect *effect,
if (self->sigma > 0) if (self->sigma > 0)
{ {
g_autoptr (ClutterPaintNode) blur_node = NULL;
if (needs_repaint (self, flags)) if (needs_repaint (self, flags))
{ {
ClutterActorBox source_actor_box; ClutterActorBox source_actor_box;
@@ -802,20 +830,18 @@ shell_blur_effect_paint (ClutterEffect *effect,
case SHELL_BLUR_MODE_ACTOR: case SHELL_BLUR_MODE_ACTOR:
paint_opacity = clutter_actor_get_paint_opacity (self->actor); paint_opacity = clutter_actor_get_paint_opacity (self->actor);
paint_actor_offscreen (self, paint_context, flags); blur_node = create_blur_nodes (self, node, paint_opacity);
apply_blur (self, paint_context, &self->actor_fb, paint_opacity); paint_actor_offscreen (self, blur_node, flags);
break; break;
case SHELL_BLUR_MODE_BACKGROUND: case SHELL_BLUR_MODE_BACKGROUND:
if (!paint_background (self, paint_context, &source_actor_box)) blur_node = create_blur_nodes (self, node, 255);
goto fail; paint_background (self, blur_node, paint_context, &source_actor_box);
apply_blur (self, paint_context, &self->background_fb, 255);
break; break;
} }
} }
paint_texture (self, paint_context); add_blurred_pipeline (self, node);
/* Background blur needs to paint the actor after painting the blurred /* Background blur needs to paint the actor after painting the blurred
* background. * background.
@@ -826,7 +852,7 @@ shell_blur_effect_paint (ClutterEffect *effect,
break; break;
case SHELL_BLUR_MODE_BACKGROUND: case SHELL_BLUR_MODE_BACKGROUND:
clutter_actor_continue_paint (self->actor, paint_context); add_actor_node (self, node, -1);
break; break;
} }
@@ -837,7 +863,7 @@ fail:
/* When no blur is applied, or the offscreen framebuffers /* When no blur is applied, or the offscreen framebuffers
* couldn't be created, fallback to simply painting the actor. * couldn't be created, fallback to simply painting the actor.
*/ */
clutter_actor_continue_paint (self->actor, paint_context); add_actor_node (self, node, -1);
} }
static void static void
@@ -927,7 +953,7 @@ shell_blur_effect_class_init (ShellBlurEffectClass *klass)
meta_class->set_actor = shell_blur_effect_set_actor; meta_class->set_actor = shell_blur_effect_set_actor;
effect_class->paint = shell_blur_effect_paint; effect_class->paint_node = shell_blur_effect_paint;
properties[PROP_SIGMA] = properties[PROP_SIGMA] =
g_param_spec_int ("sigma", g_param_spec_int ("sigma",

View File

@@ -922,7 +922,7 @@ st_adjustment_get_transition (StAdjustment *adjustment,
* st_adjustment_add_transition: * st_adjustment_add_transition:
* @adjustment: a #StAdjustment * @adjustment: a #StAdjustment
* @name: a unique name for the transition * @name: a unique name for the transition
* @transtion: a #ClutterTransition * @transition: a #ClutterTransition
* *
* Add a #ClutterTransition for the adjustment. If the transiton stops, it will * Add a #ClutterTransition for the adjustment. If the transiton stops, it will
* be automatically removed if #ClutterTransition:remove-on-complete is %TRUE. * be automatically removed if #ClutterTransition:remove-on-complete is %TRUE.

View File

@@ -254,7 +254,7 @@ insert_stylesheet (StTheme *theme,
* st_theme_load_stylesheet: * st_theme_load_stylesheet:
* @theme: a #StTheme * @theme: a #StTheme
* @file: a #GFile * @file: a #GFile
* @error: (optional): a #GError * @error: a #GError
* *
* Load the stylesheet associated with @file. * Load the stylesheet associated with @file.
* *