Compare commits

..

201 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
a6783692c5 animation: Set size through CSS
Pretty much the same case of the previous commit: we want this size
to be scale-dependant, and using the width and height properties of
ClutterActor doesn't automatically update.

Use CSS to set the width and height.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176
2020-04-06 14:37:35 -03:00
Georges Basile Stavracas Neto
1c27b68bcc appDisplay: Set the folder icon geometry through CSS
The CSS engine is scale-aware, whereas simply setting the
width and height properties directly isn't.

Use CSS to set the folder icon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176
2020-04-06 14:37:35 -03:00
Georges Basile Stavracas Neto
717c05a288 st/theme-node: Use the node's scale factor
Each node stores the scale factor in place when it was created.
Creating nodes with the same style, but with different scale
factors, yields different nodes.

Use the node's scale factor instead of retrieving the context's
one.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176
2020-04-06 14:37:35 -03:00
Georges Basile Stavracas Neto
e68604b1aa st/theme-node: Consider scale factor when comparing
The CSS engine of St is scale-aware, which means every length
and size it produces is multiplied by the current scale factor.

However, the individual nodes aren't aware of the scale factor
when they compare to each other.

Store and compare the scale factors in the nodes themselves.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1635

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176
2020-04-06 14:37:35 -03:00
Georges Basile Stavracas Neto
0368ad29e9 st/theme-context: Add a getter for the scale-factor property
Will be used by the next commit to avoid going through the GObject
machinery when retrieving the scale factor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1176
2020-04-06 14:37:35 -03:00
Jonas Dreßler
b982ce394e shell-app: Use container widget for fallback X11 app icons
Just like StIcon does, we should use a container widget for the fallback
app icon that we get using the cairo surface property. It's needed
because the widget returned by shell_app_create_icon_texture() can be
resized freely, while we want the aspect ratio of the actual texture to
remain the same.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2578


(cherry picked from commit 85846d88f0)
2020-04-06 15:00:05 +00:00
Jonas Dreßler
025647f585 st/theme-context: Also invalidate root node on stylesheet changes
Since commit 6a42d77261 we invalidate the
cached properties for each theme node on stylesheet changes by iterating
over the hashtable of the theme context instead of listening to the
signal in each individual theme node.

That commit forgot one particular node though that's not stored in the
hashtable, but using the `priv->root_node` property instead: The theme
node that belongs to the stage.

So make sure we also invalidate the cached properties of the stage theme
node on stylesheet changes. This fixes various crashes that happened
with extensions providing custom stylesheets (emitting the
"custom-stylesheets-changed" signal on every extension enable/disable),
trying to access an already freed CSS property of the stage.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2584


(cherry picked from commit bc973b80d7)
2020-04-06 14:59:45 +00:00
Florian Müllner
7125b726ad data: Add extension-portal desktop file
Now that the extension preference dialog is opened by a separate
D-Bus service rather than the Extensions app, it can be opened
without a parent window that provides name and icon.

Fix this by adding back a hidden .desktop file.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2562


(cherry picked from commit 6b7c85b079)
2020-04-05 13:48:39 +00:00
Florian Müllner
aebfab7207 extensions-app: Add category in .desktop file
Predefined categories aren't a great way for organizing installed
applications, but they have their use in "stores" like Software
or flathub.

Not listing any category means we fall through the cracks, so
pick the (hopefully) least inappropriate one ...

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


(cherry picked from commit 360f5b1642)
2020-04-05 12:46:11 +00:00
Jonas Dreßler
698bd5b3a9 st/icon: Use a static GIcon for the missing-image icon
Don't create a new GIcon for the "missing-image" texture but simply
create it once statically instead and always use that.

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


(cherry picked from commit 1ca39e8586)
2020-04-04 19:40:10 +00:00
Jonas Dreßler
51e9f19f2f st/icon: Always show empty texture if both gicons are NULL
Commit 7ff7fb5d3b forgot to clear the
`priv->icon_texture` actor when returning from st_icon_update(), which
means we don't always switch to an empty icon if both gicon properties
are set to NULL.

Fix this and destroy the actor before returning early from
st_icon_update().

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


(cherry picked from commit 07deda593a)
2020-04-04 19:30:49 +00:00
Rūdolfs Mazurs
6d38a4a7b3 Update Latvian translation 2020-04-04 16:14:40 +00:00
Florian Müllner
dfcc5ffb1e screenShield: Wake up on deactivate()
Usually the screen is woken up before the shield is deactivated, but
it is also possible to unlock the session programmatically via the
org.gnome.ScreenSaver D-Bus API.

The intention is very likely not to unlock a turned off screen in
that case. Nor does it seem like a good idea to change the lock
state without any indication.

Waking up the screen is more likely to meet expectations and is
more reasonable too, so do that.

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


(cherry picked from commit fbe2e30f38)
2020-04-03 15:09:24 +00:00
Florian Müllner
8b80a4cf4d screenShield: Switch lightboxes off before unlock transition
There is no point in animating a transition with fullscreen black
rectangles stacked on top, so switch them off before rather than
after the transition.

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


(cherry picked from commit fb6ead2881)
2020-04-03 15:08:58 +00:00
Andre Moreira Magalhaes
01e894c028 st/icon: Only load default fallback icon if an icon was set and failed to load
Commit c89d6a633 introduced a default fallback icon that would be displayed in
case the main gicon or the fallback gicon wasn't set or failed to load.

This broke the use case where a StIcon is created but no main icon or
fallback icon are set on purpose, for example the appindicator extension
which always creates a StIcon to represent icons in menu items but the
actual icons are only set if the application provides one, leaving the
menu showing the default fallback ("image-missing") icon for all menu
entries that don't actually have an icon provided by the application.

Fix that by only using the default fallback icon if the provided one
failed to load.

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

(cherry picked from commit 7ff7fb5d3b)
2020-04-03 17:00:30 +02:00
Florian Müllner
856adfd1f1 extensionUtils: Add openPrefs() convenience method
Opening their own preferences is a reasonable desire for extensions,
so make up for breaking it by adding a convenience method for that
action.

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

(cherry picked from commit 8030d9ad32)
2020-04-03 17:00:07 +02:00
Florian Müllner
efee3aa749 extensionSystem: Add method for opening extension prefs
Extension that want to expose their own preferences (for example as menu
items) do that by passing their UUID to gnome-shell-extension-prefs.

But since 3.36.1 the app is optional and no longer accepts arguments on
the command line. To adjust, extensions now need to make a D-Bus call
the extensions portal, just like the app and gnome-shell.

We will add a convenience method for that purpose, so it makes
sense to share the existing code. As it's extension-related, the
extension manager looks like the right place ...

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

(cherry picked from commit 45bc850715)
2020-04-03 16:58:15 +02:00
Florian Müllner
15e72da648 workspace: Fix chaining up
Gah, accidentally dropped the 'vfunc' prefix :-(

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1172
2020-04-03 15:47:01 +02:00
Florian Müllner
3f8bd1db25 extensions-app: Do not expand headerbar switch
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2563
2020-04-03 15:47:01 +02:00
Florian Müllner
3a863ee341 js: Account for promisified call() method
A promisified method expects the callback parameter to be either
a function (in which case the original method is called normally)
or omitted altogether (in which case a Promise is returned).

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2551
2020-04-03 02:03:18 +00:00
Florian Müllner
654a7af929 environment: Move g_dbus_connection_call() promisification
Commit 83c6b2ab promisified the method in endSessionDialog, which means
that after the module is imported, every caller will get the promisifed
version. That can be a bit surprising in completely unrelated modules,
so commit 764527c8 (on master) moved the promisification of more common
methods into environment, as that's initialized early and expected to be
shared between anything else.

Do the same for the call() method on the stable branch.

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

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

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


(cherry picked from commit 343b3351f1)
2020-04-03 00:40:34 +00:00
Jonas Ådahl
331db650dd appDisplay: Don't clear signal handler id before emitting
Otherwise we won't clear the 'view-loaded' handler after it was emitted.

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

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


(cherry picked from commit a9df4e7516)
2020-04-02 21:10:30 +00:00
Марко Костић
428d38179d Update Serbian translation 2020-04-02 19:43:03 +00:00
Ibai Oihanguren Sala
fe9708ebd8 Update Basque translation 2020-04-02 16:15:32 +00:00
Jiri Grönroos
8398769321 Update Finnish translation 2020-04-02 09:44:36 +00:00
Marco Trevisan (Treviño)
768c08ba9d main: Don't override DesktopAppInfo desktop if already GNOME
During the shell initialization we call the (deprecated) function to
override the Desktop environment in Gio DesktopAppInfo to make sure that
applications are correctly shown (as per commit b2fbf5a2), however this
might break the cases in which $XDG_CURRENT_DESKTOP is already set and
contains GNOME (given that is now a list).

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

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

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

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


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

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

Fixes: 5c33fe4a0a

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


(cherry picked from commit f49b58cf97)
2020-03-31 17:12:35 +00:00
Cheng-Chia Tseng
1ab5e6973a Update Chinese (Taiwan) translation 2020-03-31 16:07:19 +00:00
Fabio Tomat
1dea3341ec Update Friulian translation 2020-03-31 11:14:15 +00:00
Florian Müllner
8fda054dc5 Bump version to 3.36.1
Update NEWS.
2020-03-31 00:27:47 +02:00
Florian Müllner
e989684602 extensions-app/metainfo: Point screenshots to stable branch 2020-03-30 21:32:17 +02:00
Jonas Ådahl
5c33fe4a0a appDisplay: Don't start animation from the 'paint' signal
Starting the animation from the actor 'paint' signal has various
unwanted consequences, such as sometimes trigger a
clutter_actor_queue_relayout() during the paint phase. One unwanted
consequence was that an offscreen actor effect was disabled during
painting, meaning the effect would begin being active, but later during
the post-paint processing being disabled. The caused said effect to push
an offscreen framebuffer to the paint context, but then just destroy it
instead of popping it. When this happened, we'd end up trying to operate
on a framebuffer that may had been finalized, or not, depending on the
garbage collector. Sometimes, for some users, this caused a segmentation
fault when trying to pop a matrix from the framebuffer matrix stack.

Deal with this more properly, by using the 'view-loaded' signal to wait
with animation until the view is loaded, as well as using MetaLater to
schedule the start of the animation.

For when a view was signalled to be ready, we're in a state where we can
start animation before the next frame as the layout is ready, but when
not, we have to add back the "hack" where we must wait for one frame for
the target icon positions to be up to date. Do this by adding a
MetaLater IDLE callback that starts the animation *after* the next
frame. This also needs the old 'opacity = 0' work around to not show an
incorrect first frame.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2418

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1154
2020-03-30 16:24:31 +00:00
Florian Müllner
4f427f4e0d js: Do not set entries' ClutterText:editable property
The property influences the text's (and thus entry's) minimum width[0],
which is generally not what we want. And as we now prevent text from
being entered in non-reactive entries by other means, we can simply
drop it.

[0] https://gitlab.gnome.org/GNOME/mutter/-/blob/master/clutter/clutter/clutter-text.c#L2940

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2423
2020-03-29 22:12:57 +02:00
Florian Müllner
6d3c740b37 st/entry: Unset key focus when made unreactive
It seems reasonable that an entry shouldn't allow entering text when not
reactive. The same could be achieved by changing the text's :editable
property, however that will disable scrolling if the text doesn't fit,
which may result in an unwanted size change.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2423
2020-03-29 22:12:57 +02:00
Florian Müllner
34c4627db9 st/entry: Bind ClutterText reactivity to entry
The text is part of the entry, so it is surprising that it can
still be edited when the entry itself isn't reactive. Address
this by setting up a binding instead of expecting all consumers
to handle the case themselves.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2423
2020-03-29 22:12:57 +02:00
Florian Müllner
b08b125df6 st/entry: Remove unused macro
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2423
2020-03-29 22:12:57 +02:00
Aurimas Černius
50301bcfd4 Updated Lithuanian translation 2020-03-29 22:28:04 +03:00
Florian Müllner
c2cacc63ee extensions-app: Point homepage in metainfo to subproject
This is where the app code is located now, so it makes for a less
surprising landing page than the toplevel gnome-shell directory.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1150
2020-03-29 17:49:08 +00:00
Florian Müllner
c226081a23 extensions-app: Update README
Add the icon and use the app name instead of the subproject name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1150
2020-03-29 17:49:08 +00:00
Luke Yelavich
16f4e4dc4c checkbox: Improve accessibility of check boxes for Orca users
Set the label actor, so Orca presents the label text when the check box
has focus. Also change the role to ATK_ROLE_CHECKBOX.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2517
2020-03-29 12:56:33 +00:00
Yosef Or Boczko
308b58175f Update Hebrew translation 2020-03-29 07:45:59 +00:00
Luke Yelavich
454e3fd39a calendar: Improve the accessibility of the "Do Not Disturb" switch
Set the do not disturb label as the label actor for the do not disturb switch,
so that Orca speaks the do not disturb label when the user moves
keyboard focus to the do not disturb switch.

Also enable toggle mode for the "Do Not Disturb" button and bind it's checked
state to the state property of the switch. This makes sure that Orca presents
thecorrect state of the do not disturb switch to the user.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2508
2020-03-29 11:07:32 +11:00
Yosef Or Boczko
e4d72fb2b0 Update Hebrew translation 2020-03-28 23:10:11 +00:00
Florian Müllner
f3fcc4adb7 shellDBus: Return error from ReloadExtension
The method has been deprecated because it generally doesn't (and
can't) work. Clarify that by returning an error instead of
apparently doing nothing.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2510
2020-03-28 22:14:44 +00:00
Jonas Dreßler
867587ef4c keyboard: Hide keyboardBox after destroying the keyboard
It seems there is a weird race condition between Clutter trying to
destroy the keyboard actor and Clutter trying to hide the keyboardBox
container actor: If the keyboardBox is hidden before destroying the
keyboard actor, Clutter doesn't repaint anything and the keyboard
remains visible until something else draws over it.

To fix this issue until we find the underlying Clutter bug, simply
destroy the keyboard actor before hiding the keyboardBox. The order in
which we call these doesn't matter anyway since hideKeyboard(true) hides
the keyboard immediately without an animation.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1736

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1142
2020-03-28 20:45:32 +00:00
Jonas Dreßler
b68fb35783 layout: Use translation_y of 0 to hide keyboard
Since we show the keyboard using a translation_y of -keyboardHeight, the
keyboard will be moved down far enough to be out of sight by setting
translation_y to 0.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1142
2020-03-28 20:45:32 +00:00
Jonas Dreßler
8dfed7e762 keyboard: Don't include keyboard devices when updating lastDevice
We're dealing with attached keyboards now using the touch_mode property
of ClutterSeat: If a device has a keyboard attached, the touch-mode is
FALSE and we won't automatically show the OSK on touches, also the
touch-mode gets set to FALSE when an external keyboard is being plugged
in, so that also hides the OSK automatically.

With that, we can now ignore keyboard devices when updating the last
used device and no longer have to special-case our own virtual devices.

Because there was no special-case for the virtual device we use on
Wayland now, this fixes a bug where the keyboard disappeared after
touching keys like Enter or Backspace.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2287

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1142
2020-03-28 20:45:32 +00:00
Florian Müllner
97fe4f761a volume: Cancel before checking state
Since commit 2894085c45 we omit sound feedback on volume changes
if something is already outputting sound. Unfortunately that
"something" may be our own feedback (from a previous volume
change).

In that case we do not want to omit the new feedback, so instead
cancel the previous one.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1147
2020-03-28 19:03:12 +01:00
Jonas Dreßler
ba8210ea98 keyboard: Run dispose manually on virtual input device when destroying
We want to make sure any buttons that are still pressed on the virtual
input device used by the OSK are released immediately when destroying
the OSK. Do this by calling run_dispose() on the destroy() function of
the KeyboardController, which makes sure we don't have to wait for the
garbage collection to dispose the object and a still pressed key remains
being pressed until the GC kicks in.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2287

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/956

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1141
2020-03-28 17:31:04 +00:00
Carlos Garnacho
656168543f st: Honor alpha range specified by pango_attr_foreground_alpha_new()
This is documented as a value between 1 and 65536. However we were passing
a 0 value for 100% transparent colors, which is interpreted as "system
inherited" in pango_renderer_get_alpha() docs.

Ensure we respect this range by specifying the minimum allowed alpha (1)
if the color is fully transparent. If someone notices this 1/65535th change
I'll ask him how many pleiades can he count.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2504

(yes, again).
2020-03-28 16:58:30 +00:00
Carlos Garnacho
8378c9c9e0 inputMethod: Protect for running with older mutter versions
The offset argument is changing from uint to int. Which means we
might would pass a negative offset and trigger an "out of bounds"
error. Make it work more or less alright with older mutters, by
clamping the offset to 0.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1146
2020-03-28 16:38:10 +00:00
Florian Müllner
de16fe8dff dateMenu: Only use nearest city when appropriate
Since commit 784c0b7e4 we use the name of the nearest city rather
than the weather station, as the latter tend to have unwieldy
and weird names.

However the nearest city may not be that near after all, in which
case the result is again surprising.

Address this by not using the nearest city name unconditionally, but
only if it appears in the station name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2468
2020-03-28 16:24:03 +00:00
Jwtiyar Nariman
793f053309 Add Kurdish Sorani translation
(cherry picked from commit aba60dcac8)
2020-03-28 15:40:30 +00:00
Georges Basile Stavracas Neto
bea34da289 unlockDialog: Only cancel AuthPrompt if it exists
AuthPrompt is created on demand, and this._authPrompt is
expected to be null except on very strictly controlled
occasions. The idle monitor callback isn't one of them.

Check if AuthPrompt exists before cancelling it.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2371
2020-03-27 23:40:08 +00:00
Florian Müllner
aafec16f49 ci: Build Extensions flatpak bundle
GNOME apps use (or are encouraged to use) flatpak in their CI setup[0],
so do that for the Extensions app as well and get:

 - test building the flatpak
 - produce a bundle for download and testing
 - publish the build in gnome-nightly

[0] https://gitlab.gnome.org/GNOME/Initiatives/wikis/DevOps-with-Flatpak

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1133
2020-03-27 23:33:30 +00:00
Florian Müllner
73df61f36d extensions-app: Add flatpak manifest
We finally have everything in place for distributing the Extensions app
as flatpak without jumping through too many hoops. Add a manifest that
can produce a nightly build like other GNOME modules, and can serve as
a template for a stable manifest on flathub.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1133
2020-03-27 23:33:30 +00:00
Florian Müllner
39e6375aff extensions-app: Move Extensions app to new subproject
The Extensions app code is now independent enough from the rest of the code
base to move it to its own subprojects, like we did for the extensions-tool.

This allows for stand-alone builds of the app, which we are about to use
for distributing it as flatpak.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1133
2020-03-27 23:33:30 +00:00
Florian Müllner
ed21a4e5c1 extensionPrefs: Fake Config module
We include config.js because it is a dependency of ExtensionUtils,
but it's not actually used in the code paths we exercise.

As we want to allow stand-alone builds of the app, it is much easier to
fake the module than to either include a generated file from elsewhere
in the tree or generate it ourselves.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1133
2020-03-27 23:33:30 +00:00
Carlos Garnacho
73472ba6a7 st: Forward CSS foreground alpha as a PangoAttribute to text
Let the PangoRenderer handle this.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2504
2020-03-27 22:47:48 +00:00
Jonas Dreßler
702417ce83 appDisplay: Only use dragMonitor for one icon at a time
Instead of adding a dragMonitor for every icon in the grid as soon as
one icon is getting dragged, only add a dragMonitor for the icon that is
currently being dragged over (ie. the current drag-target). With a large
number of icons in the iconGrid, this should significantly reduce lags
while dragging.

We can do this by detecting the DnD-entering of an icon or folder using
the `handleDragOver()` callback of drag-targets, adding the dragMonitor
because we know an icon is hovering above the drag-target and then
detecting the DnD-leaving of the drag-target by using the `dragMotion()`
handler, where we remove the dragMonitor again as soon as the
targetActor is no longer our actor (ie. the drag-target).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/849
2020-03-27 22:38:41 +00:00
Jonas Dreßler
766e9034e2 appDisplay: Remove dragMonitor when FolderIcon is destroyed
While it should be impossible to destroy a FolderIcon while a DnD action
is still going on, there might still be rare cases where this happens
(ie. when a folder is removed because an app got deleted during DnD).

So make sure we're on the safe side here and don't potentially leave
dragMonitors around after the icon is destroyed by removing the
dragMonitor inside the onDestroy handler of the FolderIcon, just like we
do for AppIcons.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/849
2020-03-27 22:38:41 +00:00
Jonas Dreßler
91748aedb7 blur-effect: Handle failure of background blitting gracefully
`paint_background` already provides a return value in case the blitting
of the framebuffer fails, handle that and fall back to only drawing the
actor in case something goes wrong.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
2020-03-27 22:31:57 +00:00
Jonas Dreßler
4783d767d6 blur-effect: Properly clear background framebuffer
We want to completely clear the background framebuffer when switching
back to ACTOR mode to make sure the `background_fb.framebuffer` check
will fail in `update_background_fbo` when switching to BACKGROUND mode
again. Otherwise the checks in `update_background_fbo` will return TRUE
and we will keep using the background framebuffer that was created
before switchig to ACTOR mode.

While at it, also clear the background framebuffer completely when
changing the actor to avoid the same issue here.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
2020-03-27 22:31:57 +00:00
Jonas Dreßler
dedbf0cb09 blur-effect: Fix framebuffer sizes when stage-view scaling is used
When blurring only the actor (ACTOR mode), we don't want to apply any
scale, it looks fine without using the resource scale and it also seems
like `clutter_actor_continue_paint` in `paint_actor_offscreen` only
draws an unscaled texture anyway (ie. if the resource scale is 2, only a
quarter of the framebuffer is being drawn to).

In BACKGROUND mode though, we need to scale the framebuffer using the
scale factor of the stage view (ie. the final scale factor for the
monitor) because the content of the framebuffer we blit is scaled using
that factor. Also, since the framebuffer we blit belongs to a stage view
and only includes the contents of this view, we need to adjust the
stage-coordinates of the actor to be relative to the stage-view.

To make sure we don't have to get the transformed actor size or position
multiple times during one paint-run and don't have to carefully floor()
or ceil() widths and positions, store the size of the actor (which is
also the size of the framebuffer) and its position relative to the stage
view inside a ClutterActorBox.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
2020-03-27 22:31:56 +00:00
Jonas Dreßler
e5b7462b94 blur-effect: Don't check whether effect is enabled when painting
A ClutterEffect is being painted as part of the paint cycle of
ClutterActor, where _clutter_effect_paint() is called before painting
the actual actor. With that, it's impossible that an effect gets painted
while it's disabled, so remove the check whether the ClutterActorMeta is
enabled before painting.

Also if everything works fine in Clutter, the ClutterActorMeta should
have an actor set and we've been notified about that actor in
shell_blur_effect_set_actor(), so assert that our cached actor is set
when painting the effect.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
2020-03-27 22:31:56 +00:00
Jonas Dreßler
48b0a91385 blur-effect: Fix alignment of function arguments
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
2020-03-27 22:31:56 +00:00
Takao Fujiwara
6170bea283 inputMethod: Fix delete-surrounding-text signal
Forward the arguments at the 'delete-surrounding-text' signal
from IBusInputContext to clutter_input_method_delete_surrounding()
so that ibus-typing-booster use the deleting surrounding text function.

Input method engines can delete the output text in applications
with this function.

This change will require a change of mutter of mutter!517
because the first arguemnt of the 'delete-surrounding-text' is INT
to express the offset of the current cursor position but
the first one of clutter_input_method_delete_surrounding() is UINT
since the Wayland spec accepts UINT in delete_surrounding()

mutter will change the type of the first one to INT in
clutter_input_method_delete_surrounding() to work with this change.

https://gitlab.gnome.org/GNOME/mutter/issues/539
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/477
2020-03-27 19:42:07 +00:00
Bjørn Lie
dcceb615bf data: Update Norwegian OSK layout
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1073
2020-03-27 17:07:55 +00:00
Florian Müllner
da673639ca cldr2json: Do not overwrite existing files
We had various requests to improve existing OSK layouts, but
haven't accepted them so far as any changes would be overridden
when regenerating the layouts.

However as the upstream layouts at http://www.unicode.org are
extremely slow to update(*), we shouldn't block all improvements.

So instead of letting the update script override all existing
layouts, just make it import new layouts.

(*) not their fault, as the android layouts are a downstream to Google

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1136
2020-03-27 16:44:27 +00:00
Florian Müllner
dd7727e315 cldr2json: Don't use deprecated method
Replace the deprecated 'warn()' with 'warning()' to shut up
a runtime warning.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1136
2020-03-27 16:44:27 +00:00
Florian Müllner
f3ba1e65ba data: Don't clone cldr2json when updating OSK layouts
Meh, we imported the module so we don't have to go through another
upstream to make changes to the script, but then ended up not using
the fork at all.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1136
2020-03-27 16:44:27 +00:00
Florian Müllner
f8b4696211 data: Move cldr2json fork into subdirectory
The module was imported into the toplevel in !424, but that's at
least a bit weird:
 - it's a helper script for one particular aspect (OSK layouts)
 - it adds a README.mdwn to our own README.md, and a test/ directory
   to our tests/

Move the whole thing to a subdirectory under data/, which is more
appropriate.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1136
2020-03-27 16:44:27 +00:00
Jonas Dreßler
d71d85e90c theme/switcher-popup: Increase contrast of switcher items
Use a brighter color and increase the contrast of the selected/active
items in the switcher popup.

Since a bright color doesn't go well with a box-shadow, remove that
shadow, an effect like should only be used for elements clicked with a
mouse anyway.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1135
2020-03-27 13:58:47 +00:00
Florian Müllner
660a2b6e62 extensionSystem: Require Extensions app for updates
While we don't technically need the app to download and apply
updates, we do require it for notifying the user about available
updates and listing extensions with pending updates.

So instead of intransparently applying updates in the background
without the user noticing, disable updates altogether if the
Extensions app is not installed.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2346
2020-03-27 13:28:41 +00:00
Florian Müllner
cc347bf6d8 extensionDownloader: Stop handling 'blacklist' operation
Blacklist support was added all the way back in commit 1e286e43, but
the code had been defunctional until recently. While uninstalling an
extension that has been blacklisted makes sense off-hand, unfortunately
we don't know if an extension was *actually* blacklisted:

The website returns that operation for any extensions for which it
doesn't find any versions that match the shell version. That is, the
most likely reason is that the user updated to a new GNOME release
which the extension doesn't support yet.

It doesn't look like the website is going to change that behavior any
time soon[0], so drop the 'blacklist' handling for the time being.

[0] https://gitlab.gnome.org/Infrastructure/extensions-web/-/issues/95

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1132
2020-03-27 12:41:57 +00:00
Florian Müllner
26ffeaae47 js: Add missing chain-ups in vfuncs
Commit 55b57421d changed signal handlers to the corresponding vfuncs,
but didn't always chain up as necessary. In most places this doesn't
matter, but at the very least the commit broke activating message list
items via the keyboard.

Add all (hopefully) the missing chain-ups to get the expected behavior
back.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2319
2020-03-27 10:39:58 +01:00
Florian Müllner
01a57206bc messageTray: Don't create notification policy on demand
This was changed in commit 8f15193b4 as a work-around for an ES6
class limitation, but now that Sources are GObject subclasses, we
no longer need to use that somewhat surprising pattern.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1131
2020-03-26 18:52:10 +00:00
Florian Müllner
279072795f messageTray: Only destroy policy after emitting ::destroy
Destroying the policy invalidates it, so accessing it from a
Source::destroy handler (for example to disconnect signal
handlers) currently results in warnings like:

Object .Gjs_ui_messageTray_NotificationApplicationPolicy
(0x7f8c7c0a64a0), has been already deallocated — impossible
to access it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2238
2020-03-26 18:45:45 +00:00
Florian Müllner
c89d6a633a st/icon: Add a default fallback icon
The idea behind commit 3dd8ffc2bb to try harder to avoid empty
icon actors because of missing icons was sound, so implement that
behavior in StIcon itself:

If the main gicon was not found, and the fallback gicon isn't set or
wasn't found either, fall back to the standard 'missing-image' icon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1127
2020-03-26 18:36:02 +00:00
Florian Müllner
fecc0c06ac Revert "texture-cache: Use image-missing image when no other icon was loaded"
The commit broke StIcon's :fallback-gicon property, as it relies on failure to load
an icon to determine that the fallback should be shown.

Luckily StIcon is the only user of st_texture_cache_load_gicon() (at least in
regular shell code), so we'll be able to implement the 'image-missing' fallback
there.

This reverts commit 3dd8ffc2bb.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1127
2020-03-26 18:36:02 +00:00
Florian Müllner
512862f2d7 extensionPrefs: Export parent window for prefs dialog
Now that OpenExtensionPrefs()'s parentWindow parameter is actually
supported, export the main application window so it can act as
transient parent to the prefs dialog.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087
2020-03-26 18:32:30 +01:00
Florian Müllner
a90fcb7ddb dbusServices/extensions: Handle parentWindow parameter
Now that the service implements the preference dialog, it's time
to support OpenExtensionPrefs()'s parentWindow parameter and make
the dialog a transient of the external window if specified.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087
2020-03-26 18:32:30 +01:00
Florian Müllner
6baf490aab shew: Add small library for dealing with external windows
In order to support OpenExtensionPrefs()'s parentWindow parameter,
we will need the ability to make a window transient to an external
window identified by a string handle.

This takes the corresponding code from xdg-desktop-portal-gtk and
brings it into an introspectable form, likewise the counterpart in
libportal to export a string handle for a GtkWindow.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1087
2020-03-26 18:32:30 +01:00
Ibai Oihanguren Sala
f971b8426d Update Basque translation 2020-03-26 15:11:16 +00:00
Michael Catanzaro
83c6b2ab48 Fix prompt for updates on end session dialog
Since PackageKit 1.11.1, the prompt to install updates on the end
session dialog has been (mostly) broken. The problem is that it only
works if PackageKit is running at the time the end session dialog is
opened; otherwise, our GDBusProxy has invalidated all of its properties,
which we read to see if update is possible. We need to autostart
PackageKit before reading its properties to fix this problem. That would
be easy if we were calling a method to see if an update or distro
upgrade were available, but since we're just checking a property, using
cached properties won't suffice. We'll have to manually check the
property value to ensure we autostart PackageKit.

Most of the code is written by Florian. Thanks Florian!

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2276
2020-03-26 14:45:05 +00:00
Daniel van Vugt
24742f3566 layout: Show system background and animate on the same frame
Previously we'd show the system background and then wait till the
main loop was idle before beginning the shell startup animation.
This resulted in one initial frame that was always just the system
background.

Now we try to get both the system background and the startup animation
begun on the same first frame.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1102
2020-03-25 22:41:54 +00:00
Marco Trevisan (Treviño)
03a46be5c7 telepathyClient: Use proper Object to wrap different tpl messages
In telepathyClient we consider messages both Tpl.TextEvents and
Tpl.Messages, and we manually create JS objects to copy the properties we
care for each one. This may lead to objects not matching the interface we
want.

Instead, use an object with construct-only properties and two factory static
methods to initialize it.

Unfortunately we need to use the ChatMessageClass for the class name or
calling the static methods would trigger a gjs error as per [1].

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

[1] https://gitlab.gnome.org/GNOME/gjs/-/issues/310
2020-03-25 22:22:49 +00:00
Wolfgang Stöggl
9a26b970f9 Update German translation 2020-03-25 22:11:59 +00:00
Ray Strode
2ef71b62df data: ensure systemd environment is sanitized when shell exits
When mutter is acting as a display server it sets a number of
environment variables in the user's session. These variables
tell applications where the display server's sockets are.

When the shell exits at logout time it leaves these environment
variables in the systemd --user environment, which can confuse
subsequent sessions.

This commit clears up the environment on exit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1129
2020-03-25 21:34:47 +00:00
Marco Trevisan (Treviño)
766288eec1 telepathyClient: Use GObjects based message objects
As per commit b5676a2a5 ChatNotification is a GObject, but I was wrongly
considering that it was using Tp.Message's as children, instead it just
uses custom-built objects to pass information around through signals.

Given gjs can only use GObjects as signal parameters, create a small wrapper
class to hold the ChatNotification messages and use it as signal parameter.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2449

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1112
2020-03-25 21:18:54 +00:00
Florian Müllner
53e8285cf0 lint: Sync configuration with gjs
Nothing big or scary, just a bump in the standard version which
allows us to use shiny things without eslint complaining :-)
2020-03-25 22:16:47 +01:00
Florian Müllner
ff844a2a81 main: Do not warn about missing GDM on each login
We now warn on startup if screen locking isn't available, however for
users who choose not to use GDM or logind, repeating the warning on
each login is more annoying than helpful.

Instead, limit the warning to the first login on which the screen lock
became unavailable. That way the notification will still serve the
intended purpose of informing the user, but without being perceived
as nagging.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432
2020-03-25 20:03:01 +00:00
Florian Müllner
78997cb7eb environment: Hook up touch_file to GFile prototype
We don't usually extend introspected types with our own API, but in
this case it's too tempting to make the helper functions usable with
Gio._promisify() ...

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432
2020-03-25 20:03:01 +00:00
Florian Müllner
f52574bd28 shell/util: Add touch_file_async() helper
Add a small helper method to asynchronously "touch" a file and return
whether the file was created or not.

As g_file_make_directory_with_parents() doesn't have an async variant,
we need a C helper to make the entire operation non-blocking.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2432
2020-03-25 20:03:01 +00:00
Florian Müllner
e6a814fac8 extensionPrefs: Ensure up-to-date release version in metainfo
It's easy to forget to add a new <release> tag to the metainfo when
doing a new release.

Address this with an additional test if appstream-util is recent
enough to include the new validate-version command, so distcheck
fails when the metainfo wasn't updated.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1117
2020-03-25 19:56:52 +00:00
Michael Catanzaro
ddb85c03c3 endSessionDialog: apply updates by default
Users can still uncheck the box to avoid applying updates, but by
default we will encourage the user to update.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2427
2020-03-25 17:20:16 +00:00
Carlos Garnacho
66c4b1a8b6 st: Apply css foreground color to text as a PangoAttribute
Rely on the Pango renderer handling this properly, instead of tinting
the full ClutterText in the color specified through css.

Also set the caret color explicitly, since it used to be set as a side
effect of clutter_text_set_color(), but no longer is.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/850
2020-03-25 11:18:30 +00:00
Emin Tufan Çetin
11daf14e80 Update Turkish translation 2020-03-25 06:27:54 +00:00
Florian Müllner
35484151ce shell/screenshot: Throw error on failure
Commit da537cda43 moved the Shell.Screenshot API to GIO's async pattern,
but we never set the GError passed to the *_finish() functions and only
indicate failure by returning FALSE.

The expected behavior is to throw an error in that situation, so make sure
we do that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123
2020-03-24 11:29:53 +00:00
Florian Müllner
1bccbe7f11 shell/screenshot: Remove unnecessary NULL check
Since commit be5f5ec9d4, the output stream is created externally and
expected to be non-NULL, so the check is now pointless (in particular
*after* calling g_object_ref() on the stream).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123
2020-03-24 11:29:53 +00:00
Florian Müllner
b4162afa65 shell/screenshot: Check preconditions of public API
It's good practice to guard public API against programmer errors,
so add the usual g_return*_if_fail() calls.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123
2020-03-24 11:29:53 +00:00
Florian Müllner
eb51942a05 screenshot: Return error when stream creation fails
The Shell.Screenshot API expects valid output streams for writing the
completed screenshot, not NULL.

Handle this properly by returning an error instead of passing it on
to the screenshot.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123
2020-03-24 11:29:53 +00:00
Florian Müllner
23e5cd4e10 dbusServices/extensions: Include Params module
It's unused and was removed in commit a0467bf875, which broke extensions
that rely on it in their preference widget.

As the removal only happened post-3.36.0, add it back until we branch.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2476
2020-03-24 10:38:24 +01:00
Florian Müllner
13f3f75303 ibusManager: Simplify code a bit
ibus_bus_request_name_async_finish() will throw an error on failure,
so we can move the error handling there instead of checking for the
return value, which saves one level of indentation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1122
2020-03-24 08:27:27 +01:00
Mario Sanchez Prada
3dd8ffc2bb texture-cache: Use image-missing image when no other icon was loaded
If a given icon is not available for neither the current theme nor any
of the fallback options (default theme -"Adwaita", "gnome"...), the
call to gtk_icon_theme_lookup_by_gicon() will return a NULL value, which
returned by the Shell Toolkit as is, causing trouble in the Shell's JS
code when calling shell_app_create_icon_texture() to create an icon.

To at least mitigate the chances of this having this issue happening, we
should at least try to load the standad 'image-missing' icon from the
Icon Naming Specification spec when we receive a NULL here, so that
at least we try to show something to the user, even if it's ugly.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121
2020-03-23 13:50:06 -03:00
Philip Withnall
541847d8b6 remoteSearch: Fix typos in log messages
I have this compulsion to rid the world of the typo ‘DBus’.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1121
2020-03-23 13:40:39 -03:00
Florian Müllner
fb9854c003 extensions-tool: Use new Extensions proxy
While sandboxing isn't a concern for the gnome-extensions command line
tool, using the Extensions proxy directly means that D-Bus methods are
called from the tool rather than gnome-shell, which allows the proxy
to auto-shutdown when done.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
c748b9de5c extensionPrefs: Use new Extensions proxy
We will soon sandbox the application, so it makes sense to not request
more access than strictly necessary (even with priviledged access like
extension management).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
34e85342d8 dbusServices/extensions: Take over prefs dialog from app
As outlined earlier, in order to turn the Extensions app into a properly
sandboxed application, we need to split out the extension prefs dialog
and move it elsewhere.

With "elsewhere" being the new Extensions D-Bus service, effectively
turning it into a shell extensions portal.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
91b7474d5a dbusServices/extensions: Proxy Extensions API
Similar to the previously added org.freedesktop.Notifications proxy,
this exposes the org.gnome.Shell.Extensions API and forwards any
request to the real implementation in gnome-shell.

The motivation differs though: We want to be able to package the
extension app as flatpak and distribute it separately, but the
extension prefs dialog is hard to impossible to sandbox:

 - filenames need translating between host and sandbox, and we
   can only do that in some cases (serializing/deserializing
   extensions), but not others (extension settings that refer
   to files)

 - system extensions install their GSettings schemas in the system
   path; the best we can do there is assume a host prefix of /usr
   and set GSETTINGS_SCHEMA_DIR in the flatpak (eeks)

 - extensions may rely on additional typelibs that are present on
   the host (for example because gnome-shell itself depends on
   them), but not inside the sandbox - unless we bundle all of
   gnome-shell's dependencies

 - if gjs/mozjs differ between host and sandbox, extensions must
   handle different runtimes for the extension and its prefs

And all those issues occur despite a very permissive sandbox (full
host filesystem access, full dconf access, full org.gnome.Shell
access (including Eval()!)).

This new service will give us an alternative place for handling
the preference dialog:

 - it runs outside of gnome-shell process, so can open windows

 - it runs on the host, so the extension's prefs get to run
   in the same namespace as the extension itself

That is, the service will provide portal-like functionality (albeit
not using the org.freedesktop.portal.* namespace, as extension
management is an inherently privileged operation).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
d76162c1c0 extensionPrefs: Stop handling UUIDs on the command line
We are jumping through quite some hoops to support showing only the
preference dialog when given a UUID on the command line.

As gnome-shell is about to stop calling out to us for the prefs dialog,
the reason for supporting this is going away, so remove all the special
handling.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
2b517e352d extensionPrefs: Use template for preference dialog
The dialog that contains the extension's preference widget has become
fairly complex over time, mostly due to the error handling.

It therefore makes sense to move it to a template, just like we did
for the main application window and extension rows.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1106
2020-03-23 15:39:12 +00:00
Florian Müllner
08203c9c1e closeDialog: Remove transitions before resetting dialog
On X11, _onFocusChanged() updates the input region, as well as the
reactive-ness of the dialog's buttons.

That method is not only used as signal handlers (which are correctly
disconnected when the dialog is hidden), it also runs when the "show"
transition completes.

That's a problem if the transition is still ongoing when the dialog is
hidden, as it will then only complete when it is replaced by the "hide"
transition, after the this._dialog has been reset to null, and trying
to access the dialog's buttons results in an error.

Avoid this by explicitly removing all transition on hide before
resetting the dialog.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2467
2020-03-23 15:27:47 +00:00
Florian Müllner
d29e5765ba keyboard: Fix fallback layout when using variants
Commit c1ec7b2ff meant to fall back to the base layout in case
a variant like `fr+oss` is set up, but as we are checking for
'+' on the array rather than the layout name, the fallback only
"works" for a layout that is literally called '+', whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2471
2020-03-23 16:20:38 +01:00
Florian Müllner
61beccf733 unlockDialog: Handle embedded newlines in notifications
Detailed notifications are meant to be single line, just as unexpanded
notification banners. So handle them the same way as in the message
list, and replace embedded newlines by spaces.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2463
2020-03-22 21:19:36 +01:00
Daniel van Vugt
ffb8bd5fa7 loginDialog: Retain native logo dimensions
So that the same logo may be used during boot and keeps its
dimensions on the login screen, appearing to never move.

Related to: https://bugs.launchpad.net/bugs/1867133

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1101
2020-03-22 15:06:36 +00:00
Florian Müllner
7f6e2ff36b extensions-tool: Use OpenExtensionPrefs() method
LaunchExtensionPrefs() was deprecated in commit fda938175e,
so switch to the replacement.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1097
2020-03-22 15:31:07 +01:00
Florian Müllner
7d94bfa642 extensionPrefs: Sync list visibility on status changes
We only show the list of system- and user extensions if corresponding
extensions are installed, however we only update the visibility
after loading the initial list of extensions.

As it's possible for the first user extension to be installed while the
app is open or the last one to be removed, we should also update the
list visibility after extension state changes.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1088
2020-03-22 13:30:09 +00:00
Yosef Or Boczko
eb3c857f23 Update Hebrew translation 2020-03-21 23:27:40 +00:00
Jordi Mas
a096ed37d6 Update Catalan translation 2020-03-21 23:37:37 +01:00
Goran Vidović
498a743c08 Update Croatian translation 2020-03-21 21:48:00 +00:00
Florian Müllner
2c91b6164c dbusServices: Allow to inhibit auto-shutdown
While we only shut down after a method call completed or (if the
interface has signals) the sender disconnects from the bus, services
may need to inhibit auto-shutdown for more specific reasons themselves,
for example when a method call kicks off an operation that should
complete before shutting down.

Add hold() and release() methods like Gio.Application for those cases.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1115
2020-03-21 20:16:22 +00:00
Florian Müllner
04352ae158 build: Add configuration summaries
Meson now has a summary() function to easily summarize the build
configuration after the project was configured, use that for some
fancy output when the feature is available.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072
2020-03-21 20:44:43 +01:00
Florian Müllner
5c5dc03b78 build: Make bash-completion support optional
Whether we install bash-completion support currently depends on whether
the corresponding pkg-config dependency is found.

Turning this into a feature option keeps that behavior by default, but
also allows to explicitly enable or disable the support.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072
2020-03-21 20:44:43 +01:00
Florian Müllner
8a89e22e8e build: Use fixed gettext domain for non-subproject extension-tool builds
Clarify how the option is supposed to be used by
 - ignoring it for non-subproject builds
 - enforcing that it is set for subproject builds

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072
2020-03-21 20:44:43 +01:00
Florian Müllner
8f851e8adf build: Yield 'man' option to extension-tool subproject
Turns out meson has a build-in pattern of what we are doing, namely:
Set a subproject option to a parent project option of the same name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072
2020-03-21 20:44:43 +01:00
Florian Müllner
49e4757c0b build: Drop install argument from configure_file()
It requires meson 0.50.0 and is not necessary when install_dir
is specified, so just drop it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1072
2020-03-21 20:44:43 +01:00
Florian Müllner
dc002a61eb build: Assert extension-tool version is bumped alongside gnome-shell
I always forget to keep the extension-tool version number in sync when
doing a new release. Given that it's unlikely that I'll do much better
in the future by myself, make distcheck fail when the versions don't
match.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1076
2020-03-21 18:00:25 +00:00
Марко Костић
bea3987f3e Update Serbian translation 2020-03-21 14:31:17 +00:00
Jan Tojnar
7cd37a4017 build: Add missing dependency to run-js-test
run-js-test requires girepository.h header file which is provided
by gobject-introspection. gobject-introspection is required by gjs,
another of our dependencies, so, usually, the header gets included
by inheriting the cflags from there but some distros interpret
pkg-config fields more strictly[1] so that will not be the case there.

Listing direct dependencies explicitly is a good practice any way
so let’s do that.

[1]: https://bugs.freedesktop.org/show_bug.cgi?id=105572

https://bugzilla.gnome.org/show_bug.cgi?id=787864
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1114
2020-03-21 02:58:17 +00:00
Florian Müllner
3d69fa8b9c extensionPrefs: Remove unused files
We include the regular Config module from js/misc, not the stripped-down
copy that was added in commit c8a4a9168.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1109
2020-03-21 01:50:59 +00:00
Danial Behzadi
3a52bfbc0f Update Persian translation 2020-03-20 23:36:44 +00:00
Jordi Mas
38c0f3bbf2 Update Catalan translation 2020-03-20 18:47:41 +01:00
Carlos Garnacho
7b1533caf7 padOsd: Add parameter type to keybinding-edited signal
This has a string argument, but none was defined.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2451
2020-03-20 13:32:56 +01:00
Daniel Mustieles
afd83d929e Updated Spanish translation 2020-03-20 12:30:35 +01:00
Guillaume Bernard
d9e8a525de Update French translation 2020-03-20 07:38:32 +00:00
Kukuh Syafaat
b25142c517 Update Indonesian translation 2020-03-20 07:14:37 +00:00
Jonas Dreßler
6893fc3810 dateMenu: Show minutes for timezones that have minutes offset
Some timezones, like the one of Kathmandu don't only have hour-based
timezone offsets, but their timezones are also offset by minutes. So
instead of showing weird values like "+5.8", show the minutes properly
in a format like "+5:45".

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2438
2020-03-19 21:16:47 +00:00
Jonas Dreßler
13ef33ae0a dateMenu: Clean up timezone offset calculation a bit
Use const variables and change some names to make showing minute-offsets
in the next commit a bit more straightforward.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1107
2020-03-19 21:16:47 +00:00
Florian Müllner
f8886468ce extensionPrefs: Initialize gettext
I misremembered that imports.package.start() would set up the correct
gettext domain, but the module only provides a convenience method
for doing that.

Use it to bring back translations in the Extensions app, whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1108
2020-03-19 20:53:40 +00:00
Yuri Chornoivan
3bf0511f1b Update Ukrainian translation 2020-03-19 20:42:12 +00:00
Anders Jonsson
1b485427cf Update Swedish translation 2020-03-19 20:41:40 +00:00
Milo Casagrande
ebf04e3a95 Update Italian translation 2020-03-19 15:09:35 +00:00
Piotr Drąg
2f78b8428b Update Polish translation 2020-03-19 15:42:25 +01:00
Rafael Fontenelle
00eef6cd5d Update Brazilian Portuguese translation 2020-03-19 14:37:36 +00:00
Florian Müllner
5c031200ce extensionPrefs: Hook up kill switch to D-Bus property
Now that the org.gnome.Shell.Extensions interface exposes the
disable-user-extensions setting on D-Bus, we can use that instead
of the shell's GSettings.

In a future where we distribute the app separately as flatpak, this
will require one less hole in the sandbox.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:36 +00:00
Florian Müllner
4340260c49 extensionPrefs: Load D-Bus interface from own resource
Using the "regular" loadInterfaceXML() helper means less code duplication,
but it also ties us to the resource used by gnome-shell.

In order to untangle the extension app from core gnome-shell, change that
to load the interface from the existing data resource instead. While that
does involve reimplementing loadInterfaceXML(), it's not too bad actually
with the resource-loading code stripped (as the data resource is already
loaded by the package module).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:36 +00:00
Florian Müllner
96e534796f extensionPrefs: Make app D-Bus-activatable
This is the preferred way of launching applications nowadays.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:36 +00:00
Florian Müllner
3ee878491b extensionPrefs: Add metainfo
This is required for the app to appear properly in GNOME Software.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:36 +00:00
Florian Müllner
b92ddc0d39 extensionPrefs: Move desktop file and icons from top-level data
Another small step towards making the extensions app code
self-contained ...

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:35 +00:00
Florian Müllner
c8a4a91681 extensionPrefs: Move data/sources into subdirectories
As we will eventually move the code to a subproject, start arranging
it like a top-level srcdir.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:35 +00:00
Florian Müllner
e572d5d08c extensionPrefs: Use imports.package.start()
We want to make the extensions app code more self-contained to make it
easier to build separately, and ultimately make it available on flathub.

One complication we are facing is that it is currently all over the source
tree:
 - js/extensionPrefs for the main code
 - src for the launcher process
 - data for .desktop file and icons

Switching from a C launcher to the imports.package module allows us to
consolidate the first two, and will also take care of the annoying
setup bits (defining JS search path, extending GI lookup, loading
resources).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1081
2020-03-19 14:27:35 +00:00
Reik Keutterling
9829d56bfa modemManager: fixed dbus path for GDBusProxy
Fix this runtime error:
JS ERROR: TypeError: this._proxy.SignalQuality is null
_reloadSignalQuality@resource:///org/gnome/shell/misc/modemManager.js:252:34
_init@resource:///org/gnome/shell/misc/modemManager.js:234:14
NMDeviceModem@resource:///org/gnome/shell/ui/status/network.js:517:34
_deviceAdded@resource:///org/gnome/shell/ui/status/network.js:1755:27

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1105
2020-03-19 12:23:26 +01:00
Peter Mráz
b30d999878 Update Slovak translation 2020-03-19 06:20:35 +00:00
Peter Mráz
35b62baf6e Update Slovak translation 2020-03-18 14:54:25 +00:00
Florian Müllner
39f61fc41c extensionSystem: Catch errors when updating extensions
Extension updates are installed at startup, so any errors that bubble
up uncaught will prevent the startup to complete.

While the most likely error reason was addressed in the previous commit
(pending update for a no-longer exitent extension), it makes sense to
catch any kind of corrupt updates to not interfere with shell startup.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343
2020-03-17 14:19:20 +00:00
Florian Müllner
d3939a38a3 extensionDownloader: Remove pending updates with extension
When an extension is uninstalled, there is no point in keeping
a pending update: If the update didn't fail (which it currently
does), we would end up sneakily reinstalling the extension.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2343
2020-03-17 14:19:20 +00:00
Florian Müllner
b97fc02e57 networkAgent: Make searching VPN binaries asynchronous
Doing blocking IO in a graphical UI is bad, doing it in the compositor
is much much worse. So even if handling VPN requests is a relatively
rare event, doing it asynchronously is better.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386
2020-03-17 14:07:15 +00:00
Florian Müllner
ea1adea24d shell/network-agent: Wrap nm_plugin_info_new_search_file()
While we can use the libnm API directly from JS, the call will
synchronously load the VPN service descriptions from disk.
Previously we were lowering the impact by caching the result,
but as we stopped doing that, it becomes more important to address
the issue properly and move it off to a thread.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386
2020-03-17 14:07:15 +00:00
Florian Müllner
eb7533bbf1 networkAgent: Drop VPN plugin cache
libnm doesn't only search for plugins in the regular VPN plugin directory,
but also in the legacy location and the directory pointed to by the
NM_VPN_PLUGIN_DIR environment variable (if set).

We don't monitor the additional directories, so it's possible for our cache
to become outdated.

Instead of trying to play catch-up with libnm's internals, do what nm-applet
does and use the appropriate API to look up the plugin on each request.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2386
2020-03-17 14:07:15 +00:00
Florian Müllner
69ea038a8f extensionDownloader: Only check server if there's something to update
checkForUpdates() will currently always query the server for updates,
even when passing an empty vardict of installed extensions. We know
there won't be any updates in that case, so avoid a pointless network
request.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1100
2020-03-17 13:56:49 +00:00
Florian Müllner
b80115dc6e dateMenu: Don't ellipsize world clock time/tz
If we need to ellipsize, it should be the location name, not the time
or timezone offset.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1090
2020-03-17 13:44:30 +00:00
Florian Müllner
36b8dcbe07 a11y: Change HC icon theme first
There are two ways for applications to provide a high contrast icon:

 1. install an icon into the HighContrast theme
 2. install a symbolic icon into the default hicolor theme

The latter is preferred nowadays, and implemented in the high-contrast
CSS variant by enforcing the symbolic icon style.

However together with the way we currently enable/disable high-contrast,
this can lead to the following race:
 1. the GTK theme is changed from HighContrast
 2. we reload the default stylesheet
 3. the icon style changes to "regular", so we request a
    new icon from the HighContrast icon theme
 4. the icon theme is changed from HighContrast
 5. we evict existing icons from the cache
 6. we reload icons for the new icon theme; however as we
    find a pending request (from 3), we re-use it
 7. the request from 3 finishes, and we end up with a
    wrong icon in the cache

The simplest fix is to change the icon theme before the GTK theme: Unlike the
theme name, the icon style is encoded in the cache key, so we won't re-use
an old (and incorrect) request in that case.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2414
2020-03-17 12:45:25 +01:00
Stas Solovey
07fa5ef849 Update Russian translation 2020-03-15 21:14:23 +00:00
Cosimo Cecchi
d9a75412c3 modemManager: Look for property on correct object
The SignalQuality property is defined on the GDBusProxy, not the modem
JS object.
Fix this runtime warning:

JS WARNING: [resource:///org/gnome/shell/misc/modemManager.js 252]: reference to undefined property "SignalQuality"
JS ERROR: TypeError: this.SignalQuality is undefined
_reloadSignalQuality@resource:///org/gnome/shell/misc/modemManager.js:252:34
_init@resource:///org/gnome/shell/misc/modemManager.js:234:14
NMDeviceModem@resource:///org/gnome/shell/ui/status/network.js:517:34
_deviceAdded@resource:///org/gnome/shell/ui/status/network.js:1755:27

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1097
2020-03-14 22:59:59 +01:00
Florian Müllner
66f9a9df81 js: Always use AppSystem to lookup apps
There is no good reason for bypassing the application cache in
AppSystem and loading .desktop files again.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1093
2020-03-14 20:33:36 +01:00
Florian Müllner
4bfdd677e3 calendar: Adjust for evolution changes
When launching the default calendar application, we special-case
evolution to make sure it starts up with the calendar component.

This is currently broken in two ways:

 - evolution changed its .desktop file to use reverse DNS notation

 - as evolution can now be distributed via flatpak, we can no longer
   assume that 'evolution-calendar.desktop' exists when evolution does
   (even though we ship the .desktop file ourselves, it is considered
   invalid if the executable isn't found)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1093
2020-03-14 20:31:00 +01:00
Florian Müllner
002160e524 main: Unwatch notification proxy name after auto-start
We only "watch" the 'org.gnome.Shell.Notifications' name to start the
service, not to actually monitor name owner changes; so unwatch the
name once that's done.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2381
2020-03-12 23:29:40 +01:00
Florian Müllner
f2df347ddb main: Activate notification proxy on start
At least for the time being, this looks like the easiest option to
launch the service:

 - we could add a systemd unit, but then we'd need to update the
   RequiredComponents in the fallback session definition as well,
   making it necessary for gnome-shell, gnome-shell-extensions and
   gnome-session to be updated to 3.36.1 in lockstep

 - autostart is problematic as it would make gnome-shell conflict
   with other notification daemons; also autostart is most useful
   with automatic shutdown, which would require tracking signal
   subscriber to determine when the service is unused

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547
2020-03-12 16:09:27 +00:00
Florian Müllner
799bbdb503 dbusServices/notifications: Add a separate notification daemon
Add a small service that exposes the Fdo notification API under the
well-known name, and forwards any requests to the actual implementation
in the shell.

That way any app with permission to talk to org.freedesktop.Notifications
will get exactly that, and nothing more.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547
2020-03-12 16:09:27 +00:00
Florian Müllner
1aff64a38b main: Stop owning the public org.freedesktop.Notifications name
For sandboxed apps, permission to talk to org.freedesktop.Notifications
looks innocent enough. However as all exported services share the same
connection to the session bus, that permission actually grants an app
access to *any* shell D-Bus API.

While we want apps to use the notification portal, it is still common
for apps to use libnotify, raw D-Bus calls or even notify-send.

We don't want to give those apps a way to circumvent most of the sandbox
restrictions, so stop owning the org.freedesktop.Notifications name.

In a next step we will implement a separate notification-daemon that
exposes the API on the well-known address and proxies any requests to
the real implementation in gnome-shell.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547
2020-03-12 16:09:27 +00:00
Florian Müllner
574c560677 dbusServices: Add some base classes for small stand-alone services
There are a couple of D-Bus services that are currently provided by
gnome-shell for which it makes sense to move them fully or partially
into separate processes:

 - screen recording (performance)
 - FDO notifications (security)
 - Extensions (portalization)

Add some base classes and build system glue to take care of the
common boilerplate.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/547
2020-03-12 16:09:27 +00:00
Christian Hergert
f8db5aa106 app-cache: add ShellAppCache for GAppInfo caching
This caches GAppInfo so that the compositor thread does not have to perform
costly disk access to load them. Instead, they are loaded from a worker
thread and the ShellAppCache notifies of changes.

To simplify maintenance, ShellAppCache manages this directly and the
existing ShellAppSystem wraps the cache. We may want to graft these
together in the future, but now it provides the easiest way to backport
changes to older Shell releases.

Another source of compositor thread disk access was in determining the
name for an application directory. Translations are provided via GKeyFile
installed in "desktop-directories". Each time we would build the name
for a label (or update it) we would have to load all of these files.

Instead, the ShellAppCache caches that information and updates the cache
in bulk when those change. We can reduce this in the future to do less
work, but chances are these will come together anyway so that is probably
worth fixing if we ever come across it.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2282
2020-03-11 18:06:15 -07:00
Carlos Garnacho
b18469427e St: Ensure to update entry hint visibility with IM preedit
Commit 88ac339774 changed StEntry behavior so the text hint would
stay visible while focused, as long as the text buffer is empty.
However, IMs that use preedit still should count as "started typing",
while the text buffer is still officially empty.

To fix this, check on st_entry_update_hint_visibility() that there's
indeed no preedit buffer before showing the hint. We can't directly
listen to internal preedit buffer changes in ClutterText, so handle
preedit buffer updates through the ::cursor-changed signal that will
be indirectly emitted.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1084
2020-03-11 14:07:07 +01:00
Carlos Garnacho
72c4f148ef windowManager: Do not shutdown ibus/xsettings on X11 compositor restart
These paths are meant for Xwayland, not for X11 compositors being restarted
through alt-f2 + r. Maybe some signal analogous to init-xserver should be
added for Xwayland shutdown paths, but this signal we are currently
listening for is backend agnostic.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/2329
2020-03-11 11:31:45 +00:00
Alynx Zhou
94f6976ddd ibusManager: fix ibus launch error because of wrong method name
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1080
2020-03-11 09:30:15 +00:00
Tim Sabsch
be187f4149 Update German translation 2020-03-09 22:40:48 +00:00
Sebastian Keller
1b872c1195 st/texture-cache: Fix invalid memory write related to X11 window icons
st_texture_cache_bind_weak_notify calls g_clear_signal_handler which
then calls st_texture_cache_free_bind. st_texture_cache_free_bind frees
the bind structure, so by the time g_clear_signal_handler tries to write
bind->notify_signal_id, bind has already been freed.

Fix this by using g_signal_handler_disconnect instead.

This partially reverts 135d178d08

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2334
2020-03-09 17:34:56 +00:00
Kjartan Maraas
89f2187d72 Update Norwegian Bokmål translation 2020-03-09 15:40:01 +00:00
Daniel Rusek
943df86cb0 Update Czech translation 2020-03-09 15:18:03 +00:00
Florian Müllner
a5a6c699c3 fileUtils: Remove some compatibility code
The condition was added to keep working with the then-stable version
of gjs. We already require a more recent version now, so the compat
code is effectively dead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1077
2020-03-09 13:18:48 +00:00
Florian Müllner
a0467bf875 js: Remove unused files from resources
fileUtils hasn't used Params since 2013, but was still importing it
until commit a1534dab02 ...

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1077
2020-03-09 13:18:48 +00:00
sicklylife
b1da3ae772 Update Japanese translation 2020-03-09 12:47:10 +00:00
Marek Černocký
8af466e34d Updated Czech translation 2020-03-09 13:45:33 +01:00
sicklylife
66c7616892 Update Japanese translation 2020-03-09 12:35:24 +00:00
Sebastian Keller
c05098cd12 st/password-entry: Fix peek icon leak
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1078
2020-03-08 23:51:55 +01:00
Jordi Mas
4723dd1f4c Update Catalan translation 2020-03-08 21:57:46 +01:00
Марко Костић
7e4c32ec1f Update Serbian translation 2020-03-08 20:21:47 +00:00
Florian Müllner
3d443d5b17 extensionPrefs: Stop escaping extension name
The corresponding label no longer uses markup, so we can and should use
the unescaped name.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2305
2020-03-08 01:07:18 +00:00
Jonas Dreßler
3155d03d9e appDisplay: Reload folder views on installed app changes
Since the FolderViews are not connected to the "installed-changed"
signal, we need to reload their apps by calling _redisplay() when an app
is removed or installed. We can't connect to "installed-changed" inside
FolderView because we need to ensure _redisplay() of the FolderView is
called before AppView tries to access the apps of the folder inside
_refilterApps(). So reload the FolderViews inside AllViews _redisplay()
implementation to ensure everything is up to date before accessing the
apps of the folder.

Since the "apps-changed" signal of FolderIcon now indirectly triggers a
_redisplay() of the FolderViews, the 'changed' handler of FolderView is
now redundant and can be removed. Because of this, we also need to move
the emission of the "apps-changed" signal to the start of the signal
handler to make sure the view is updated before we try to access items
of the view.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1901

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
989c0ee49e appDisplay: Disconnect folder "changed" signal when actors are destroyed
We should disconnect the folders "changed" signal from the folder in
case the FolderView or FolderIcon is destroyed. While at it, also remove
the unused this._spaceReadySignalId of FolderIcon.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
69f6c43b60 appDisplay: Implement an addApp() method for FolderViews
Similar to removeApp(), implement addApp() in FolderView to make adding
folders to views a bit more obvious.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
bf2d012e40 appDisplay: Rename _redisplay() functions unrelated to BaseAppView
The _redisplay() function is usally used for subclasses of BaseAppView
which want to implement their own _redisplay() function, having that
function name in two classes which have nothing to do with BaseAppView
can be quite confusing. Make those names less confusing and call the
functions  _sync() and _rebuildMenu() instead.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
4d773a5ce9 appDisplay: Add back background color for folder icons
During this cycle the background color of the folder icons was removed
(probably fallout from the theme refactor), this was not intended
design-wise, so add it back.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
711d4ba65c appDisplay: Properly hide overlay scrollbar in folders
Use the scroll-view policy ST_POLICY_EXTERNAL to hide the scrollbar
instead of setting its css properties to hidden, where it can still be
clicked but isn't visible.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
4490463513 appDisplay: Remove the top padding from folder app grid
There already is a bottom padding defined for the name container of the
folder, so remove the top padding of the appGrid and make sure we can
show a few more icons inside the folder.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Jonas Dreßler
1ec5117715 appDisplay: Take the viewBox into account for the contentBox of folders
The viewBox has a border applied, so when we call adaptToSize using only
the content box of the container, the width of the border is not removed
from the content box and the grid will be allocated less space than what
we told it before using adaptToSize.

Fix that by adjusting the content box for the size of the viewBox, too.
This makes sure the correct amount of columns can be shown inside a
folder, since right now we only show 3 colums even though 4 would fit.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1011
2020-03-08 00:42:40 +00:00
Florian Müllner
bf367daaba build: Fix some harmless compiler warnings
Some (newer?) GCC versions complain when a g_auto variable isn't
initialized when declared, even when the initialization is guaranteed
to happen before the variable is used or goes out of scope.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2298
2020-03-08 00:34:36 +00:00
Florian Müllner
1de008f2d5 Bump extensions-tool version as well 2020-03-08 01:33:20 +01:00
185 changed files with 17038 additions and 8319 deletions

View File

@@ -1,9 +1,13 @@
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
stages: stages:
- review - review
- build - build
- test - test
- deploy
variables: variables:
BUNDLE: "extensions-git.flatpak"
JS_LOG: "js-report.txt" JS_LOG: "js-report.txt"
POT_LOG: "pot-update.txt" POT_LOG: "pot-update.txt"
@@ -110,3 +114,24 @@ test-pot:
' | tee $POT_LOG ' | tee $POT_LOG
- (! grep -q . $POT_LOG) - (! grep -q . $POT_LOG)
<<: *only_default <<: *only_default
flatpak:
stage: build
variables:
SUBPROJECT: "subprojects/extensions-app"
# Your manifest path
MANIFEST_PATH: "$SUBPROJECT/build-aux/flatpak/org.gnome.Extensions.json"
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
FLATPAK_MODULE: "gnome-extensions-app"
APP_ID: "org.gnome.Extensions"
MESON_ARGS: "$SUBPROJECT"
extends: .flatpak
before_script:
- flatpak run --command=$SUBPROJECT/generate-translations.sh
--filesystem=host org.gnome.Sdk//master
<<: *only_default
nightly:
extends: '.publish_nightly'
variables:
BUNDLES: '$BUNDLE'

View File

@@ -23,7 +23,7 @@ run_eslint() {
mkdir -p $(dirname $output) mkdir -p $(dirname $output)
touch $output touch $output
eslint -f unix ${!extra_args} -o $output js eslint -f unix ${!extra_args} -o $output js subprojects/extensions-app/js
} }
list_commit_range_additions() { list_commit_range_additions() {

58
NEWS
View File

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

View File

@@ -161,12 +161,16 @@ def convert_file(source_file, destination_path):
try: try:
xkb_name = locale_to_xkb(root["locale"], root["name"]) xkb_name = locale_to_xkb(root["locale"], root["name"])
except KeyError as e: except KeyError as e:
logging.warn(e) logging.warning(e)
return False return False
destination_file = os.path.join(destination_path, xkb_name + ".json") destination_file = os.path.join(destination_path, xkb_name + ".json")
with open(destination_file, 'w', encoding="utf-8") as dest_fd: try:
with open(destination_file, 'x', encoding="utf-8") as dest_fd:
json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True) json.dump(root, dest_fd, ensure_ascii=False, indent=2, sort_keys=True)
except FileExistsError as e:
logging.info("File %s exists, not updating", destination_file)
return False
logging.debug("written %s", destination_file) logging.debug("written %s", destination_file)

View File

@@ -19,6 +19,10 @@ Before=gnome-session-initialized.target
[Service] [Service]
Type=notify Type=notify
ExecStart=@bindir@/gnome-shell ExecStart=@bindir@/gnome-shell
# unset some environment variables that were set by the shell and won't work now that the shell is gone
ExecStopPost=-systemctl --user unset-environment GNOME_SETUP_DISPLAY WAYLAND_DISPLAY DISPLAY XAUTHORITY
# Exit code 1 means we are probably *not* dealing with an extension failure # Exit code 1 means we are probably *not* dealing with an extension failure
SuccessExitStatus=1 SuccessExitStatus=1
# On wayland we cannot restart # On wayland we cannot restart

View File

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -1,6 +1,6 @@
desktop_files = [ desktop_files = [
'org.gnome.Shell.desktop', 'org.gnome.Shell.desktop',
'org.gnome.Extensions.desktop', 'org.gnome.Shell.Extensions.desktop',
] ]
service_files = [] service_files = []

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Type=Application
# Keep in sync with subprojects/extensions-app
Name=Extensions
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Shell.Extensions
# Never launch this, just provide name+icon to portal dialog
Exec=false
OnlyShowIn=GNOME;
NoDisplay=true

View File

@@ -12,7 +12,9 @@
"w" "w"
], ],
[ [
"e" "e",
"é",
"ë"
], ],
[ [
"r" "r"
@@ -21,30 +23,58 @@
"t" "t"
], ],
[ [
"y" "y",
"ý",
"ÿ"
], ],
[ [
"u" "u",
"ú",
"ü",
"û",
"ù",
"ū"
], ],
[ [
"i" "i",
"í",
"ï"
], ],
[ [
"o" "o",
"ó",
"ô",
"ò",
"õ",
"œ",
"ō"
], ],
[ [
"p" "p"
],
[
"å"
] ]
], ],
[ [
[ [
"a" "a",
"á",
"ä",
"à",
"â",
"ã",
"ā"
], ],
[ [
"s" "s",
"ß",
"ś",
"š"
], ],
[ [
"d" "d",
"ð"
], ],
[ [
"f" "f"
@@ -62,7 +92,16 @@
"k" "k"
], ],
[ [
"l" "l",
"ł"
],
[
"ø",
"ö"
],
[
"æ",
"ä"
] ]
], ],
[ [
@@ -82,7 +121,9 @@
"b" "b"
], ],
[ [
"n" "n",
"ñ",
"ń"
], ],
[ [
"m" "m"
@@ -121,7 +162,9 @@
"W" "W"
], ],
[ [
"E" "E",
"É",
"Ë"
], ],
[ [
"R" "R"
@@ -130,30 +173,58 @@
"T" "T"
], ],
[ [
"Y" "Y",
"Ý",
"Ÿ"
], ],
[ [
"U" "U",
"Ú",
"Ü",
"Û",
"Ù",
"Ū"
], ],
[ [
"I" "I",
"Í",
"Ï"
], ],
[ [
"O" "O",
"Ó",
"Ô",
"Ò",
"Õ",
"Œ",
"Ō"
], ],
[ [
"P" "P"
],
[
"Å"
] ]
], ],
[ [
[ [
"A" "A",
"Á",
"Ä",
"À",
"Â",
"Ã",
"Ā"
], ],
[ [
"S" "S",
"SS",
"Ś",
"Š"
], ],
[ [
"D" "D",
"Ð"
], ],
[ [
"F" "F"
@@ -171,7 +242,16 @@
"K" "K"
], ],
[ [
"L" "L",
"Ł"
],
[
"Ø",
"Ö"
],
[
"Æ",
"Ä"
] ]
], ],
[ [
@@ -191,7 +271,9 @@
"B" "B"
], ],
[ [
"N" "N",
"Ñ",
"Ń"
], ],
[ [
"M" "M"
@@ -277,10 +359,10 @@
"#" "#"
], ],
[ [
"$", "",
"¢", "¢",
"£", "£",
"", "$",
"¥", "¥",
"₱" "₱"
], ],
@@ -419,13 +501,14 @@
"£" "£"
], ],
[ [
"¥"
],
[
"$",
"¢" "¢"
], ],
[ [
"" "¢"
],
[
"¥"
], ],
[ [
"^", "^",

View File

@@ -35,9 +35,9 @@ $app_grid_fg_color: #fff;
} }
/* App Folders */ /* App Folders */
.app-folder { .app-well-app.app-folder {
.overview-icon { background-color: transparentize($osd_bg_color, 0.8);
} border-radius: $base_border_radius + 4px; // same as %icon_tile
} }
// expanded folder // expanded folder
@@ -73,10 +73,6 @@ $app_grid_fg_color: #fff;
& > StIcon { icon-size: 16px } & > StIcon { icon-size: 16px }
} }
} }
& StButton#vhandle,
& StButton#vhandle:hover,
& StButton#vhandle:active { background-color: transparent; }
} }
.app-folder-dialog-container { .app-folder-dialog-container {
padding: 12px; padding: 12px;

View File

@@ -15,13 +15,11 @@
border: 1px solid transparent; border: 1px solid transparent;
&:outlined { &:outlined {
border: 1px solid darken($borders_color,5%); background-color: transparentize($osd_fg_color, 0.7);
background-color: transparentize($osd_fg_color, 0.9);
box-shadow: inset 0 2px 2px 0 rgba(0,0,0,0.4);
} }
&:selected { &:selected {
background-color: transparentize($osd_fg_color, 0.9); background-color: transparentize($osd_fg_color, 0.7);
color: $osd_fg_color; color: $osd_fg_color;
} }
} }

View File

@@ -1,10 +1,9 @@
#!/bin/env bash #!/bin/env bash
CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip" CLDR_LAYOUTS_TARBALL="http://www.unicode.org/Public/cldr/latest/keyboards.zip"
CLDR2JSON_GIT="git://repo.or.cz/cldr2json.git"
WORKDIR=".osk-layout-workbench" WORKDIR=".osk-layout-workbench"
CLDR2JSON="$WORKDIR/cldr2json/cldr2json.py" CLDR2JSON="cldr2json/cldr2json.py"
SRCDIR="$WORKDIR/keyboards/android" SRCDIR="$WORKDIR/keyboards/android"
DESTDIR="osk-layouts" DESTDIR="osk-layouts"
GRESOURCE_FILE="gnome-shell-osk-layouts.gresource.xml" GRESOURCE_FILE="gnome-shell-osk-layouts.gresource.xml"
@@ -20,7 +19,6 @@ mkdir -p "osk-layouts"
# Download stuff on the work dir # Download stuff on the work dir
pushd $WORKDIR pushd $WORKDIR
gio copy $CLDR_LAYOUTS_TARBALL . gio copy $CLDR_LAYOUTS_TARBALL .
git clone $CLDR2JSON_GIT
unzip keyboards.zip unzip keyboards.zip
popd popd

View File

@@ -0,0 +1,5 @@
imports.package.start({
name: '@PACKAGE_NAME@',
prefix: '@prefix@',
libdir: '@libdir@',
});

View File

@@ -0,0 +1,3 @@
[D-BUS Service]
Name=@service@
Exec=@gjs@ @pkgdatadir@/@service@

View File

@@ -0,0 +1,177 @@
/* exported DBusService, ServiceImplementation */
const { Gio, GLib } = imports.gi;
const Signals = imports.signals;
const IDLE_SHUTDOWN_TIME = 2; // s
var ServiceImplementation = class {
constructor(info, objectPath) {
this._objectPath = objectPath;
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(info, this);
this._injectTracking('return_dbus_error');
this._injectTracking('return_error_literal');
this._injectTracking('return_gerror');
this._injectTracking('return_value');
this._injectTracking('return_value_with_unix_fd_list');
this._senders = new Map();
this._holdCount = 0;
this._hasSignals = this._dbusImpl.get_info().signals.length > 0;
this._shutdownTimeoutId = 0;
// subclasses may override this to disable automatic shutdown
this._autoShutdown = true;
}
// subclasses may override this to own additional names
register() {
}
export() {
this._dbusImpl.export(Gio.DBus.session, this._objectPath);
}
unexport() {
this._dbusImpl.unexport();
}
hold() {
this._holdCount++;
}
release() {
if (this._holdCount === 0) {
logError(new Error('Unmatched call to release()'));
return;
}
this._holdCount--;
if (this._holdCount === 0)
this._queueShutdownCheck();
}
/**
* _handleError:
* @param {Gio.DBusMethodInvocation}
* @param {Error}
*
* Complete @invocation with an appropriate error if @error is set;
* useful for implementing early returns from method implementations.
*
* @returns {bool} - true if @invocation was completed
*/
_handleError(invocation, error) {
if (error === null)
return false;
if (error instanceof GLib.Error) {
invocation.return_gerror(error);
} else {
let name = error.name;
if (!name.includes('.')) // likely a normal JS error
name = `org.gnome.gjs.JSError.${name}`;
invocation.return_dbus_error(name, error.message);
}
return true;
}
_maybeShutdown() {
if (!this._autoShutdown)
return;
if (this._holdCount > 0)
return;
this.emit('shutdown');
}
_queueShutdownCheck() {
if (this._shutdownTimeoutId)
GLib.source_remove(this._shutdownTimeoutId);
this._shutdownTimeoutId = GLib.timeout_add_seconds(
GLib.PRIORITY_DEFAULT, IDLE_SHUTDOWN_TIME,
() => {
this._shutdownTimeoutId = 0;
this._maybeShutdown();
return GLib.SOURCE_REMOVE;
});
}
_trackSender(sender) {
if (this._senders.has(sender))
return;
this.hold();
this._senders.set(sender,
this._dbusImpl.get_connection().watch_name(
sender,
Gio.BusNameWatcherFlags.NONE,
null,
() => this._untrackSender(sender)));
}
_untrackSender(sender) {
const id = this._senders.get(sender);
if (id)
this._dbusImpl.get_connection().unwatch_name(id);
if (this._senders.delete(sender))
this.release();
}
_injectTracking(methodName) {
const { prototype } = Gio.DBusMethodInvocation;
const origMethod = prototype[methodName];
const that = this;
prototype[methodName] = function (...args) {
origMethod.apply(this, args);
if (that._hasSignals)
that._trackSender(this.get_sender());
that._queueShutdownCheck();
};
}
};
Signals.addSignalMethods(ServiceImplementation.prototype);
var DBusService = class {
constructor(name, service) {
this._name = name;
this._service = service;
this._loop = new GLib.MainLoop(null, false);
this._service.connect('shutdown', () => this._loop.quit());
}
run() {
// Bail out when not running under gnome-shell
Gio.DBus.watch_name(Gio.BusType.SESSION,
'org.gnome.Shell',
Gio.BusNameWatcherFlags.NONE,
null,
() => this._loop.quit());
this._service.register();
Gio.DBus.own_name(Gio.BusType.SESSION,
this._name,
Gio.BusNameOwnerFlags.REPLACE,
() => this._service.export(),
null,
() => this._loop.quit());
this._loop.run();
}
};

View File

@@ -0,0 +1,2 @@
.expander-frame > * { border-top-width: 0; }
.expander-toolbar { border: 0 solid @borders; border-top-width: 1px; }

View File

@@ -0,0 +1,274 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported ExtensionsService */
const { Gdk, Gio, GLib, GObject, Gtk, Shew } = imports.gi;
const ExtensionUtils = imports.misc.extensionUtils;
const { loadInterfaceXML } = imports.misc.fileUtils;
const { ServiceImplementation } = imports.dbusService;
const ExtensionsIface = loadInterfaceXML('org.gnome.Shell.Extensions');
const ExtensionsProxy = Gio.DBusProxy.makeProxyWrapper(ExtensionsIface);
var ExtensionsService = class extends ServiceImplementation {
constructor() {
super(ExtensionsIface, '/org/gnome/Shell/Extensions');
this._proxy = new ExtensionsProxy(Gio.DBus.session,
'org.gnome.Shell', '/org/gnome/Shell');
this._proxy.connectSignal('ExtensionStateChanged',
(proxy, sender, params) => {
this._dbusImpl.emit_signal('ExtensionStateChanged',
new GLib.Variant('(sa{sv})', params));
});
this._proxy.connect('g-properties-changed', () => {
this._dbusImpl.emit_property_changed('UserExtensionsEnabled',
new GLib.Variant('b', this._proxy.UserExtensionsEnabled));
});
}
get ShellVersion() {
return this._proxy.ShellVersion;
}
get UserExtensionsEnabled() {
return this._proxy.UserExtensionsEnabled;
}
set UserExtensionsEnabled(enable) {
this._proxy.UserExtensionsEnabled = enable;
}
ListExtensionsAsync(params, invocation) {
this._proxy.ListExtensionsRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(a{sa{sv}})', res));
});
}
GetExtensionInfoAsync(params, invocation) {
this._proxy.GetExtensionInfoRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(a{sv})', res));
});
}
GetExtensionErrorsAsync(params, invocation) {
this._proxy.GetExtensionErrorsRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(as)', res));
});
}
InstallRemoteExtensionAsync(params, invocation) {
this._proxy.InstallRemoteExtensionRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(s)', res));
});
}
UninstallExtensionAsync(params, invocation) {
this._proxy.UninstallExtensionRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(b)', res));
});
}
EnableExtensionAsync(params, invocation) {
this._proxy.EnableExtensionRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(b)', res));
});
}
DisableExtensionAsync(params, invocation) {
this._proxy.DisableExtensionRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(b)', res));
});
}
LaunchExtensionPrefsAsync([uuid], invocation) {
this.OpenExtensionPrefsAsync([uuid, '', {}], invocation);
}
OpenExtensionPrefsAsync(params, invocation) {
const [uuid, parentWindow, options] = params;
this._proxy.GetExtensionInfoRemote(uuid, (res, error) => {
if (this._handleError(invocation, error))
return;
const [serialized] = res;
const extension = ExtensionUtils.deserializeExtension(serialized);
const window = new ExtensionPrefsDialog(extension);
window.realize();
let externalWindow = null;
if (parentWindow)
externalWindow = Shew.ExternalWindow.new_from_handle(parentWindow);
if (externalWindow)
externalWindow.set_parent_of(window.window);
if (options.modal)
window.modal = options.modal.get_boolean();
window.connect('destroy', () => this.release());
this.hold();
window.show();
invocation.return_value(null);
});
}
CheckForUpdatesAsync(params, invocation) {
this._proxy.CheckForUpdatesRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(null);
});
}
};
var ExtensionPrefsDialog = GObject.registerClass({
GTypeName: 'ExtensionPrefsDialog',
Template: 'resource:///org/gnome/Shell/Extensions/ui/extension-prefs-dialog.ui',
InternalChildren: [
'headerBar',
'stack',
'expander',
'expanderArrow',
'revealer',
'errorView',
],
}, class ExtensionPrefsDialog extends Gtk.Window {
_init(extension) {
super._init();
this._uuid = extension.uuid;
this._url = extension.metadata.url || '';
this._headerBar.title = extension.metadata.name;
this._actionGroup = new Gio.SimpleActionGroup();
this.insert_action_group('win', this._actionGroup);
this._initActions();
this._addCustomStylesheet();
this._gesture = new Gtk.GestureMultiPress({
widget: this._expander,
button: 0,
exclusive: true,
});
this._gesture.connect('released', (gesture, nPress) => {
if (nPress === 1)
this._revealer.reveal_child = !this._revealer.reveal_child;
});
this._revealer.connect('notify::reveal-child', () => {
this._expanderArrow.icon_name = this._revealer.reveal_child
? 'pan-down-symbolic'
: 'pan-end-symbolic';
});
try {
ExtensionUtils.installImporter(extension);
// give extension prefs access to their own extension object
ExtensionUtils.getCurrentExtension = () => extension;
const prefsModule = extension.imports.prefs;
prefsModule.init(extension.metadata);
const widget = prefsModule.buildPrefsWidget();
this._stack.add(widget);
this._stack.visible_child = widget;
} catch (e) {
this._setError(e);
}
}
_setError(exc) {
this._errorView.buffer.text = `${exc}\n\nStack trace:\n`;
// Indent stack trace.
this._errorView.buffer.text +=
exc.stack.split('\n').map(line => ` ${line}`).join('\n');
// markdown for pasting in gitlab issues
let lines = [
`The settings of extension ${this._uuid} had an error:`,
'```',
`${exc}`,
'```',
'',
'Stack trace:',
'```',
exc.stack.replace(/\n$/, ''), // stack without trailing newline
'```',
'',
];
this._errorMarkdown = lines.join('\n');
this._actionGroup.lookup('copy-error').enabled = true;
}
_initActions() {
let action;
action = new Gio.SimpleAction({
name: 'copy-error',
enabled: false,
});
action.connect('activate', () => {
const clipboard = Gtk.Clipboard.get_default(this.get_display());
clipboard.set_text(this._errorMarkdown, -1);
});
this._actionGroup.add_action(action);
action = new Gio.SimpleAction({
name: 'show-url',
enabled: this._url !== '',
});
action.connect('activate', () => {
Gio.AppInfo.launch_default_for_uri(this._url,
this.get_display().get_app_launch_context());
});
this._actionGroup.add_action(action);
}
_addCustomStylesheet() {
let provider = new Gtk.CssProvider();
let uri = 'resource:///org/gnome/Shell/Extensions/css/application.css';
try {
provider.load_from_file(Gio.File.new_for_uri(uri));
} catch (e) {
logError(e, 'Failed to add application style');
}
Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),
provider,
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION);
}
});

View File

@@ -0,0 +1,20 @@
/* exported main */
imports.gi.versions.Gdk = '3.0';
imports.gi.versions.Gtk = '3.0';
const { Gtk } = imports.gi;
const pkg = imports.package;
const { DBusService } = imports.dbusService;
const { ExtensionsService } = imports.extensionsService;
function main() {
Gtk.init(null);
pkg.initFormat();
const service = new DBusService(
'org.gnome.Shell.Extensions',
new ExtensionsService());
service.run();
}

View File

@@ -0,0 +1,197 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<template class="ExtensionPrefsDialog" parent="GtkWindow">
<property name="default_width">600</property>
<property name="default_height">400</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="show_close_button">True</property>
</object>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkScrolledWindow">
<property name="visible">True</property>
<property name="hscrollbar_policy">never</property>
<property name="propagate_natural_height">True</property>
<child>
<object class="GtkViewport">
<property name="visible">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="margin">100</property>
<property name="margin_bottom">60</property>
<property name="spacing">12</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Somethings gone wrong</property>
<attributes>
<attribute name="scale" value="1.44"/> <!-- x-large -->
</attributes>
<style>
<class name="dim-label"/>
</style>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Were very sorry, but theres been a problem: the settings for this extension cant be displayed. We recommend that you report the issue to the extension authors.</property>
<property name="justify">center</property>
<property name="wrap">True</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<property name="margin_top">12</property>
<child>
<object class="GtkFrame" id="expander">
<property name="visible">True</property>
<property name="hexpand">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkEventBox">
<property name="visible">True</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="margin">12</property>
<property name="spacing">6</property>
<child>
<object class="GtkImage" id="expanderArrow">
<property name="visible">True</property>
<property name="icon_name">pan-end-symbolic</property>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="label" translatable="yes">Technical Details</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkRevealer" id="revealer">
<property name="visible">True</property>
<child>
<object class="GtkFrame">
<property name="visible">True</property>
<property name="shadow_type">in</property>
<style>
<class name="expander-frame"/>
</style>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkTextView" id="errorView">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="monospace">True</property>
<property name="editable">False</property>
<property name="wrap_mode">word</property>
<property name="left_margin">12</property>
<property name="right_margin">12</property>
<property name="top_margin">12</property>
<property name="bottom_margin">12</property>
</object>
</child>
<child>
<object class="GtkToolbar">
<property name="visible">True</property>
<style>
<class name="expander-toolbar"/>
</style>
<child>
<object class="GtkToolItem">
<property name="visible">True</property>
<child>
<object class="GtkButton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="action_name">win.copy-error</property>
<style>
<class name="flat"/>
<class name="image-button"/>
</style>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="icon_name">edit-copy-symbolic</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkSeparatorToolItem">
<property name="visible">True</property>
<property name="draw">False</property>
</object>
<packing>
<property name="expand">True</property>
</packing>
</child>
<child>
<object class="GtkToolItem">
<property name="visible">True</property>
<child>
<object class="GtkButton" id="homeButton">
<property name="visible"
bind-source="homeButton"
bind-property="sensitive"
bind-flags="sync-create"/>
<property name="label" translatable="yes">Homepage</property>
<property name="tooltip_text" translatable="yes">Visit extension homepage</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<property name="no_show_all">True</property>
<property name="action_name">win.show-url</property>
<style>
<class name="flat"/>
</style>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>

View File

@@ -0,0 +1,42 @@
launcherconf = configuration_data()
launcherconf.set('PACKAGE_NAME', meson.project_name())
launcherconf.set('prefix', prefix)
launcherconf.set('libdir', libdir)
dbus_services = {
'org.gnome.Shell.Extensions': 'extensions',
'org.gnome.Shell.Notifications': 'notifications',
}
config_dir = '@0@/..'.format(meson.current_build_dir())
foreach service, dir : dbus_services
configure_file(
input: 'dbus-service.in',
output: service,
configuration: launcherconf,
install_dir: pkgdatadir,
)
serviceconf = configuration_data()
serviceconf.set('service', service)
serviceconf.set('gjs', gjs.path())
serviceconf.set('pkgdatadir', pkgdatadir)
configure_file(
input: 'dbus-service.service.in',
output: service + '.service',
configuration: serviceconf,
install_dir: servicedir
)
gnome.compile_resources(
service + '.src',
service + '.src.gresource.xml',
dependencies: [config_js],
source_dir: ['.', '..', dir, config_dir],
gresource_bundle: true,
install: true,
install_dir: pkgdatadir
)
endforeach

View File

@@ -0,0 +1,11 @@
/* exported main */
const { DBusService } = imports.dbusService;
const { NotificationDaemon } = imports.notificationDaemon;
function main() {
const service = new DBusService(
'org.gnome.Shell.Notifications',
new NotificationDaemon());
service.run();
}

View File

@@ -0,0 +1,80 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported NotificationDaemon */
const { Gio, GLib } = imports.gi;
const { loadInterfaceXML } = imports.misc.fileUtils;
const { ServiceImplementation } = imports.dbusService;
const NotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
const NotificationsProxy = Gio.DBusProxy.makeProxyWrapper(NotificationsIface);
var NotificationDaemon = class extends ServiceImplementation {
constructor() {
super(NotificationsIface, '/org/freedesktop/Notifications');
this._autoShutdown = false;
this._proxy = new NotificationsProxy(Gio.DBus.session,
'org.gnome.Shell',
'/org/freedesktop/Notifications',
(proxy, error) => {
if (error)
log(error.message);
});
this._proxy.connectSignal('ActionInvoked',
(proxy, sender, params) => {
this._dbusImpl.emit_signal('ActionInvoked',
new GLib.Variant('(us)', params));
});
this._proxy.connectSignal('NotificationClosed',
(proxy, sender, params) => {
this._dbusImpl.emit_signal('NotificationClosed',
new GLib.Variant('(uu)', params));
});
}
register() {
Gio.DBus.session.own_name(
'org.freedesktop.Notifications',
Gio.BusNameOwnerFlags.REPLACE,
null, null);
}
NotifyAsync(params, invocation) {
this._proxy.NotifyRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(u)', res));
});
}
CloseNotificationAsync(params, invocation) {
this._proxy.CloseNotificationRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(null);
});
}
GetCapabilitiesAsync(params, invocation) {
this._proxy.GetCapabilitiesRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(as)', res));
});
}
GetServerInformationAsync(params, invocation) {
this._proxy.GetServerInformationRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
invocation.return_value(new GLib.Variant('(ssss)', res));
});
}
};

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Shell/Extensions/js">
<file>main.js</file>
<file>extensionsService.js</file>
<file>dbusService.js</file>
<file>misc/config.js</file>
<file>misc/extensionUtils.js</file>
<file>misc/fileUtils.js</file>
<file>misc/params.js</file>
</gresource>
<gresource prefix="/org/gnome/Shell/Extensions">
<file>css/application.css</file>
<file>ui/extension-prefs-dialog.ui</file>
</gresource>
</gresources>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Shell/Notifications/js">
<file>main.js</file>
<file>notificationDaemon.js</file>
<file>dbusService.js</file>
<file>misc/config.js</file>
<file>misc/fileUtils.js</file>
</gresource>
</gresources>

View File

@@ -120,7 +120,7 @@ var AuthPrompt = GObject.registerClass({
vfunc_key_press_event(keyPressEvent) { vfunc_key_press_event(keyPressEvent) {
if (keyPressEvent.keyval == Clutter.KEY_Escape) if (keyPressEvent.keyval == Clutter.KEY_Escape)
this.cancel(); this.cancel();
return Clutter.EVENT_PROPAGATE; return super.vfunc_key_press_event(keyPressEvent);
} }
_initEntryRow() { _initEntryRow() {
@@ -425,7 +425,6 @@ var AuthPrompt = GObject.registerClass({
updateSensitivity(sensitive) { updateSensitivity(sensitive) {
this._entry.reactive = sensitive; this._entry.reactive = sensitive;
this._entry.clutter_text.editable = sensitive;
} }
vfunc_hide() { vfunc_hide() {

View File

@@ -35,7 +35,6 @@ const UserWidget = imports.ui.userWidget;
const _FADE_ANIMATION_TIME = 250; const _FADE_ANIMATION_TIME = 250;
const _SCROLL_ANIMATION_TIME = 500; const _SCROLL_ANIMATION_TIME = 500;
const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0;
const _LOGO_ICON_HEIGHT = 48;
var UserListItem = GObject.registerClass({ var UserListItem = GObject.registerClass({
Signals: { 'activate': {} }, Signals: { 'activate': {} },
@@ -178,6 +177,7 @@ var UserList = GObject.registerClass({
} }
vfunc_key_focus_in() { vfunc_key_focus_in() {
super.vfunc_key_focus_in();
this._moveFocusToItems(); this._moveFocusToItems();
} }
@@ -813,7 +813,7 @@ var LoginDialog = GObject.registerClass({
if (this._logoFile && this._logoBin.resource_scale > 0) { if (this._logoFile && this._logoBin.resource_scale > 0) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile, this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile,
-1, _LOGO_ICON_HEIGHT, -1, -1,
scaleFactor, scaleFactor,
this._logoBin.resource_scale)); this._logoBin.resource_scale));
} }

View File

@@ -1,4 +1,5 @@
subdir('misc') subdir('misc')
subdir('dbusServices')
js_resources = gnome.compile_resources( js_resources = gnome.compile_resources(
'js-resources', 'js-resources.gresource.xml', 'js-resources', 'js-resources.gresource.xml',
@@ -13,10 +14,3 @@ portal_resources = gnome.compile_resources(
c_name: 'portal_js_resources', c_name: 'portal_js_resources',
dependencies: [config_js] dependencies: [config_js]
) )
prefs_resources = gnome.compile_resources(
'prefs-resources', 'prefs-resources.gresource.xml',
source_dir: ['.', meson.current_build_dir()],
c_name: 'prefs_js_resources',
dependencies: [config_js]
)

View File

@@ -15,6 +15,5 @@ var LOCALEDIR = '@datadir@/locale';
/* other standard directories */ /* other standard directories */
var LIBEXECDIR = '@libexecdir@'; var LIBEXECDIR = '@libexecdir@';
var PKGDATADIR = '@datadir@/@PACKAGE_NAME@'; var PKGDATADIR = '@datadir@/@PACKAGE_NAME@';
var VPNDIR = '@vpndir@';
/* g-i package versions */ /* g-i package versions */
var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@' var LIBMUTTER_API_VERSION = '@LIBMUTTER_API_VERSION@'

View File

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

View File

@@ -76,19 +76,15 @@ function loadInterfaceXML(iface) {
_ifaceResource._register(); _ifaceResource._register();
} }
let xml = null;
let uri = `resource:///org/gnome/shell/dbus-interfaces/${iface}.xml`; let uri = `resource:///org/gnome/shell/dbus-interfaces/${iface}.xml`;
let f = Gio.File.new_for_uri(uri); let f = Gio.File.new_for_uri(uri);
try { try {
let [ok_, bytes] = f.load_contents(null); let [ok_, bytes] = f.load_contents(null);
if (bytes instanceof Uint8Array) return imports.byteArray.toString(bytes);
xml = imports.byteArray.toString(bytes);
else
xml = bytes.toString();
} catch (e) { } catch (e) {
log(`Failed to load D-Bus interface ${iface}`); log(`Failed to load D-Bus interface ${iface}`);
} }
return xml; return null;
} }

View File

@@ -66,7 +66,7 @@ var IBusManager = class {
let display = GLib.getenv('GNOME_SETUP_DISPLAY'); let display = GLib.getenv('GNOME_SETUP_DISPLAY');
if (display) if (display)
launcher.setenv('DISPLAY', display, true); launcher.setenv('DISPLAY', display, true);
launcher.launch(cmdLine); launcher.spawnv(cmdLine);
} catch (e) { } catch (e) {
log(`Failed to launch ibus-daemon: ${e.message}`); log(`Failed to launch ibus-daemon: ${e.message}`);
} }
@@ -127,18 +127,20 @@ var IBusManager = class {
} }
_initPanelService(ibus, result) { _initPanelService(ibus, result) {
let success = false;
try { try {
success = !!this._ibus.request_name_async_finish(result); this._ibus.request_name_async_finish(result);
} catch (e) { } catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
return;
logError(e); logError(e);
this._clear();
}
return;
} }
if (success) { this._panelService = new IBus.PanelService({
this._panelService = new IBus.PanelService({ connection: this._ibus.get_connection(), connection: this._ibus.get_connection(),
object_path: IBus.PATH_PANEL }); object_path: IBus.PATH_PANEL,
});
this._candidatePopup.setPanelService(this._panelService); this._candidatePopup.setPanelService(this._panelService);
this._panelService.connect('update-property', this._updateProperty.bind(this)); this._panelService.connect('update-property', this._updateProperty.bind(this));
this._panelService.connect('set-cursor-location', (ps, x, y, w, h) => { this._panelService.connect('set-cursor-location', (ps, x, y, w, h) => {
@@ -174,9 +176,6 @@ var IBusManager = class {
this._engineChanged(this._ibus, engine.get_name()); this._engineChanged(this._ibus, engine.get_name());
}); });
this._updateReadiness(); this._updateReadiness();
} else {
this._clear();
}
} }
_updateReadiness() { _updateReadiness() {

View File

@@ -97,8 +97,13 @@ class InputMethod extends Clutter.InputMethod {
this.commit(text.get_text()); this.commit(text.get_text());
} }
_onDeleteSurroundingText() { _onDeleteSurroundingText(_context, offset, nchars) {
this.delete_surrounding(); try {
this.delete_surrounding(offset, nchars);
} catch (e) {
// We may get out of bounds for negative offset on older mutter
this.delete_surrounding(0, nchars + offset);
}
} }
_onUpdatePreeditText(_context, text, pos, visible) { _onUpdatePreeditText(_context, text, pos, visible) {

View File

@@ -7,7 +7,6 @@ jsconf.set10('HAVE_BLUETOOTH', bt_dep.found())
jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager) jsconf.set10('HAVE_NETWORKMANAGER', have_networkmanager)
jsconf.set('datadir', datadir) jsconf.set('datadir', datadir)
jsconf.set('libexecdir', libexecdir) jsconf.set('libexecdir', libexecdir)
jsconf.set('vpndir', vpndir)
config_js = configure_file( config_js = configure_file(
input: 'config.js.in', input: 'config.js.in',

View File

@@ -223,7 +223,7 @@ var BroadbandModem = GObject.registerClass({
}, class BroadbandModem extends ModemBase { }, class BroadbandModem extends ModemBase {
_init(path, capabilities) { _init(path, capabilities) {
super._init({ capabilities }); super._init({ capabilities });
this._proxy = new BroadbandModemProxy(Gio.DBus.system, 'org.freedesktop.ModemManager', path); this._proxy = new BroadbandModemProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
this._proxy_3gpp = new BroadbandModem3gppProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path); this._proxy_3gpp = new BroadbandModem3gppProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
this._proxy_cdma = new BroadbandModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path); this._proxy_cdma = new BroadbandModemCdmaProxy(Gio.DBus.system, 'org.freedesktop.ModemManager1', path);
@@ -249,7 +249,7 @@ var BroadbandModem = GObject.registerClass({
} }
_reloadSignalQuality() { _reloadSignalQuality() {
let [quality, recent_] = this.SignalQuality; let [quality, recent_] = this._proxy.SignalQuality;
this._setSignalQuality(quality); this._setSignalQuality(quality);
} }

View File

@@ -5,6 +5,5 @@
<file>misc/config.js</file> <file>misc/config.js</file>
<file>misc/fileUtils.js</file> <file>misc/fileUtils.js</file>
<file>misc/params.js</file>
</gresource> </gresource>
</gresources> </gresources>

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell">
<file>extensionPrefs/main.js</file>
<file>misc/config.js</file>
<file>misc/extensionUtils.js</file>
<file>misc/fileUtils.js</file>
<file>misc/params.js</file>
<file alias="css/application.css">extensionPrefs/css/application.css</file>
<file alias="ui/extension-row.ui">extensionPrefs/ui/extension-row.ui</file>
<file alias="ui/extensions-window.ui">extensionPrefs/ui/extensions-window.ui</file>
</gresource>
</gresources>

View File

@@ -15,8 +15,7 @@ class Animation extends St.Bin {
const themeContext = St.ThemeContext.get_for_stage(global.stage); const themeContext = St.ThemeContext.get_for_stage(global.stage);
super._init({ super._init({
width: width * themeContext.scale_factor, style: `width: ${width}px; height: ${height}px;`,
height: height * themeContext.scale_factor,
}); });
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));

View File

@@ -71,15 +71,9 @@ function _getFolderName(folder) {
let name = folder.get_string('name'); let name = folder.get_string('name');
if (folder.get_boolean('translate')) { if (folder.get_boolean('translate')) {
let keyfile = new GLib.KeyFile(); let translated = Shell.util_get_translated_folder_name(name);
let path = 'desktop-directories/%s'.format(name); if (translated !== null)
return translated;
try {
keyfile.load_from_data_dirs(path, GLib.KeyFileFlags.NONE);
name = keyfile.get_locale_string('Desktop Entry', 'Name', null);
} catch (e) {
return name;
}
} }
return name; return name;
@@ -120,15 +114,9 @@ function _findBestFolderName(apps) {
}, commonCategories); }, commonCategories);
for (let category of commonCategories) { for (let category of commonCategories) {
let keyfile = new GLib.KeyFile(); let translated = Shell.util_get_translated_folder_name(category);
let path = 'desktop-directories/%s.directory'.format(category); if (translated !== null)
return translated;
try {
keyfile.load_from_data_dirs(path, GLib.KeyFileFlags.NONE);
return keyfile.get_locale_string('Desktop Entry', 'Name', null);
} catch (e) {
continue;
}
} }
return null; return null;
@@ -169,6 +157,10 @@ var BaseAppView = GObject.registerClass({
this._items = new Map(); this._items = new Map();
this._orderedItems = []; this._orderedItems = [];
this._animateLaterId = 0;
this._viewLoadedHandlerId = 0;
this._viewIsReady = false;
} }
_childFocused(_actor) { _childFocused(_actor) {
@@ -204,6 +196,7 @@ var BaseAppView = GObject.registerClass({
this._items.set(icon.id, icon); this._items.set(icon.id, icon);
}); });
this._viewIsReady = true;
this.emit('view-loaded'); this.emit('view-loaded');
} }
@@ -253,6 +246,18 @@ var BaseAppView = GObject.registerClass({
Main.overview.dash.showAppsButton); Main.overview.dash.showAppsButton);
} }
_clearAnimateLater() {
if (this._animateLaterId) {
Meta.later_remove(this._animateLaterId);
this._animateLaterId = 0;
}
if (this._viewLoadedHandlerId) {
this.disconnect(this._viewLoadedHandlerId);
this._viewLoadedHandlerId = 0;
}
this._grid.opacity = 255;
}
animate(animationDirection, onComplete) { animate(animationDirection, onComplete) {
if (onComplete) { if (onComplete) {
let animationDoneId = this._grid.connect('animation-done', () => { let animationDoneId = this._grid.connect('animation-done', () => {
@@ -261,16 +266,38 @@ var BaseAppView = GObject.registerClass({
}); });
} }
this._clearAnimateLater();
if (animationDirection == IconGrid.AnimationDirection.IN) { if (animationDirection == IconGrid.AnimationDirection.IN) {
let id = this._grid.connect('paint', () => { const doSpringAnimationLater = laterType => {
this._grid.disconnect(id); this._animateLaterId = Meta.later_add(laterType,
() => {
this._animateLaterId = 0;
this._doSpringAnimation(animationDirection); this._doSpringAnimation(animationDirection);
return GLib.SOURCE_REMOVE;
}); });
};
if (this._viewIsReady) {
this._grid.opacity = 0;
doSpringAnimationLater(Meta.LaterType.IDLE);
} else {
this._viewLoadedHandlerId = this.connect('view-loaded',
() => {
this._clearAnimateLater();
doSpringAnimationLater(Meta.LaterType.BEFORE_REDRAW);
});
}
} else { } else {
this._doSpringAnimation(animationDirection); this._doSpringAnimation(animationDirection);
} }
} }
vfunc_unmap() {
this._clearAnimateLater();
super.vfunc_unmap();
}
animateSwitch(animationDirection) { animateSwitch(animationDirection) {
this.remove_all_transitions(); this.remove_all_transitions();
this._grid.remove_all_transitions(); this._grid.remove_all_transitions();
@@ -392,10 +419,12 @@ var AllView = GObject.registerClass({
this._redisplayWorkId = Main.initializeDeferredWork(this, this._redisplay.bind(this)); this._redisplayWorkId = Main.initializeDeferredWork(this, this._redisplay.bind(this));
Shell.AppSystem.get_default().connect('installed-changed', () => { Shell.AppSystem.get_default().connect('installed-changed', () => {
this._viewIsReady = false;
Main.queueDeferredWork(this._redisplayWorkId); Main.queueDeferredWork(this._redisplayWorkId);
}); });
this._folderSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' }); this._folderSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.app-folders' });
this._folderSettings.connect('changed::folder-children', () => { this._folderSettings.connect('changed::folder-children', () => {
this._viewIsReady = false;
Main.queueDeferredWork(this._redisplayWorkId); Main.queueDeferredWork(this._redisplayWorkId);
}); });
@@ -431,6 +460,10 @@ var AllView = GObject.registerClass({
_redisplay() { _redisplay() {
super._redisplay(); super._redisplay();
this._folderIcons.forEach(icon => {
icon.view._redisplay();
});
this._refilterApps(); this._refilterApps();
} }
@@ -699,8 +732,6 @@ var AllView = GObject.registerClass({
// Toggle search entry // Toggle search entry
Main.overview.searchEntry.reactive = !isOpen; Main.overview.searchEntry.reactive = !isOpen;
Main.overview.searchEntry.clutter_text.reactive = !isOpen;
Main.overview.searchEntry.clutter_text.editable = !isOpen;
this._displayingPopup = isOpen; this._displayingPopup = isOpen;
}); });
@@ -1259,8 +1290,8 @@ var AppSearchProvider = class AppSearchProvider {
let results = []; let results = [];
groups.forEach(group => { groups.forEach(group => {
group = group.filter(appID => { group = group.filter(appID => {
let app = Gio.DesktopAppInfo.new(appID); const app = this._appSys.lookup_app(appID);
return app && app.should_show(); return app && app.app_info.should_show();
}); });
results = results.concat(group.sort( results = results.concat(group.sort(
(a, b) => usage.compare(a, b) (a, b) => usage.compare(a, b)
@@ -1308,7 +1339,7 @@ class FolderView extends BaseAppView {
x_expand: true, x_expand: true,
y_expand: true, y_expand: true,
}); });
this._scrollView.set_policy(St.PolicyType.NEVER, St.PolicyType.AUTOMATIC); this._scrollView.set_policy(St.PolicyType.NEVER, St.PolicyType.EXTERNAL);
this.add_actor(this._scrollView); this.add_actor(this._scrollView);
let scrollableContainer = new St.BoxLayout({ let scrollableContainer = new St.BoxLayout({
@@ -1324,7 +1355,6 @@ 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._folder.connect('changed', this._redisplay.bind(this));
this._redisplay(); this._redisplay();
} }
@@ -1346,12 +1376,12 @@ class FolderView extends BaseAppView {
}); });
layout.hookup_style(icon); layout.hookup_style(icon);
let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size); let subSize = Math.floor(FOLDER_SUBICON_FRACTION * size);
let scale = St.ThemeContext.get_for_stage(global.stage).scale_factor;
let numItems = this._orderedItems.length; let numItems = this._orderedItems.length;
let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL; let rtl = icon.get_text_direction() == Clutter.TextDirection.RTL;
for (let i = 0; i < 4; i++) { for (let i = 0; i < 4; i++) {
let bin = new St.Bin({ width: subSize * scale, height: subSize * scale }); const style = 'width: %dpx; height: %dpx;'.format(subSize, subSize);
let bin = new St.Bin({ style });
if (i < numItems) if (i < numItems)
bin.child = this._orderedItems[i].app.create_icon_texture(subSize); bin.child = this._orderedItems[i].app.create_icon_texture(subSize);
layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1); layout.attach(bin, rtl ? (i + 1) % 2 : i % 2, Math.floor(i / 2), 1, 1);
@@ -1429,6 +1459,22 @@ class FolderView extends BaseAppView {
return apps; return apps;
} }
addApp(app) {
let folderApps = this._folder.get_strv('apps');
folderApps.push(app.id);
this._folder.set_strv('apps', folderApps);
// Also remove from 'excluded-apps' if the app id is listed
// there. This is only possible on categories-based folders.
let excludedApps = this._folder.get_strv('excluded-apps');
let index = excludedApps.indexOf(app.id);
if (index >= 0) {
excludedApps.splice(index, 1);
this._folder.set_strv('excluded-apps', excludedApps);
}
}
removeApp(app) { removeApp(app) {
let folderApps = this._folder.get_strv('apps'); let folderApps = this._folder.get_strv('apps');
let index = folderApps.indexOf(app.id); let index = folderApps.indexOf(app.id);
@@ -1459,8 +1505,6 @@ class FolderView extends BaseAppView {
} else { } else {
this._folder.set_strv('apps', folderApps); this._folder.set_strv('apps', folderApps);
} }
return true;
} }
}); });
@@ -1494,26 +1538,26 @@ var FolderIcon = GObject.registerClass({
this.view = new FolderView(this._folder, id, parentView); this.view = new FolderView(this._folder, id, parentView);
this._itemDragBeginId = Main.overview.connect( this._iconIsHovering = false;
'item-drag-begin', this._onDragBegin.bind(this));
this._itemDragEndId = Main.overview.connect(
'item-drag-end', this._onDragEnd.bind(this));
this.connect('destroy', this._onDestroy.bind(this)); this.connect('destroy', this._onDestroy.bind(this));
this._folder.connect('changed', this._redisplay.bind(this)); this._folderChangedId = this._folder.connect(
this._redisplay(); 'changed', this._sync.bind(this));
this._sync();
} }
_onDestroy() { _onDestroy() {
Main.overview.disconnect(this._itemDragBeginId); if (this._dragMonitor) {
Main.overview.disconnect(this._itemDragEndId); DND.removeDragMonitor(this._dragMonitor);
this._dragMonitor = null;
}
this.view.destroy(); this.view.destroy();
if (this._spaceReadySignalId) { if (this._folderChangedId) {
this._parentView.disconnect(this._spaceReadySignalId); this._folder.disconnect(this._folderChangedId);
this._spaceReadySignalId = 0; delete this._folderChangedId;
} }
if (this._dialog) if (this._dialog)
@@ -1541,29 +1585,32 @@ var FolderIcon = GObject.registerClass({
return this.view.getAllItems().map(item => item.id); return this.view.getAllItems().map(item => item.id);
} }
_onDragBegin() { _setHoveringByDnd(hovering) {
if (this._iconIsHovering == hovering)
return;
this._iconIsHovering = hovering;
if (hovering) {
this._dragMonitor = { this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this), dragMotion: this._onDragMotion.bind(this),
}; };
DND.addDragMonitor(this._dragMonitor); DND.addDragMonitor(this._dragMonitor);
this.add_style_pseudo_class('drop');
} else {
DND.removeDragMonitor(this._dragMonitor);
this.remove_style_pseudo_class('drop');
}
} }
_onDragMotion(dragEvent) { _onDragMotion(dragEvent) {
let target = dragEvent.targetActor; if (!this.contains(dragEvent.targetActor) ||
!this._canAccept(dragEvent.source))
if (!this.contains(target) || !this._canAccept(dragEvent.source)) this._setHoveringByDnd(false);
this.remove_style_pseudo_class('drop');
else
this.add_style_pseudo_class('drop');
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
} }
_onDragEnd() {
this.remove_style_pseudo_class('drop');
DND.removeDragMonitor(this._dragMonitor);
}
_canAccept(source) { _canAccept(source) {
if (!(source instanceof AppIcon)) if (!(source instanceof AppIcon))
return false; return false;
@@ -1582,27 +1629,18 @@ var FolderIcon = GObject.registerClass({
if (!this._canAccept(source)) if (!this._canAccept(source))
return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.NO_DROP;
this._setHoveringByDnd(true);
return DND.DragMotionResult.MOVE_DROP; return DND.DragMotionResult.MOVE_DROP;
} }
acceptDrop(source) { acceptDrop(source) {
this._setHoveringByDnd(false);
if (!this._canAccept(source)) if (!this._canAccept(source))
return false; return false;
let app = source.app; this.view.addApp(source.app);
let folderApps = this._folder.get_strv('apps');
folderApps.push(app.id);
this._folder.set_strv('apps', folderApps);
// Also remove from 'excluded-apps' if the app id is listed
// there. This is only possible on categories-based folders.
let excludedApps = this._folder.get_strv('excluded-apps');
let index = excludedApps.indexOf(app.id);
if (index >= 0) {
excludedApps.splice(index, 1);
this._folder.set_strv('excluded-apps', excludedApps);
}
return true; return true;
} }
@@ -1617,11 +1655,11 @@ var FolderIcon = GObject.registerClass({
this.emit('name-changed'); this.emit('name-changed');
} }
_redisplay() { _sync() {
this.emit('apps-changed');
this._updateName(); this._updateName();
this.visible = this.view.getAllItems().length > 0; this.visible = this.view.getAllItems().length > 0;
this.icon.update(); this.icon.update();
this.emit('apps-changed');
} }
_createIcon(iconSize) { _createIcon(iconSize) {
@@ -1902,6 +1940,7 @@ var AppFolderDialog = GObject.registerClass({
vfunc_allocate(box, flags) { vfunc_allocate(box, flags) {
let contentBox = this.get_theme_node().get_content_box(box); let contentBox = this.get_theme_node().get_content_box(box);
contentBox = this._viewBox.get_theme_node().get_content_box(contentBox);
let [, entryBoxHeight] = this._entryBox.get_size(); let [, entryBoxHeight] = this._entryBox.get_size();
let spacing = this._viewBox.layout_manager.spacing; let spacing = this._viewBox.layout_manager.spacing;
@@ -1910,6 +1949,8 @@ var AppFolderDialog = GObject.registerClass({
contentBox.get_width(), contentBox.get_width(),
contentBox.get_height() - entryBoxHeight - spacing); contentBox.get_height() - entryBoxHeight - spacing);
this._view._grid.topPadding = 0;
super.vfunc_allocate(box, flags); super.vfunc_allocate(box, flags);
// We can only start zooming after receiving an allocation // We can only start zooming after receiving an allocation
@@ -2025,7 +2066,6 @@ var AppIcon = GObject.registerClass({
this._delegate = this; this._delegate = this;
this._hasDndHover = false;
this._folderPreviewId = 0; this._folderPreviewId = 0;
// Get the isDraggable property without passing it on to the BaseIcon: // Get the isDraggable property without passing it on to the BaseIcon:
@@ -2074,11 +2114,7 @@ var AppIcon = GObject.registerClass({
}); });
} }
this._dragMonitor = null; this._otherIconIsHovering = false;
this._itemDragBeginId = Main.overview.connect(
'item-drag-begin', this._onDragBegin.bind(this));
this._itemDragEndId = Main.overview.connect(
'item-drag-end', this._onDragEnd.bind(this));
this._menuTimeoutId = 0; this._menuTimeoutId = 0;
this._stateChangedId = this.app.connect('notify::state', () => { this._stateChangedId = this.app.connect('notify::state', () => {
@@ -2090,9 +2126,6 @@ var AppIcon = GObject.registerClass({
} }
_onDestroy() { _onDestroy() {
Main.overview.disconnect(this._itemDragBeginId);
Main.overview.disconnect(this._itemDragEndId);
if (this._folderPreviewId > 0) { if (this._folderPreviewId > 0) {
GLib.source_remove(this._folderPreviewId); GLib.source_remove(this._folderPreviewId);
this._folderPreviewId = 0; this._folderPreviewId = 0;
@@ -2339,7 +2372,17 @@ var AppIcon = GObject.registerClass({
} }
_setHoveringByDnd(hovering) { _setHoveringByDnd(hovering) {
if (this._otherIconIsHovering == hovering)
return;
this._otherIconIsHovering = hovering;
if (hovering) { if (hovering) {
this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this),
};
DND.addDragMonitor(this._dragMonitor);
if (this._folderPreviewId > 0) if (this._folderPreviewId > 0)
return; return;
@@ -2351,6 +2394,8 @@ var AppIcon = GObject.registerClass({
return GLib.SOURCE_REMOVE; return GLib.SOURCE_REMOVE;
}); });
} else { } else {
DND.removeDragMonitor(this._dragMonitor);
if (this._folderPreviewId > 0) { if (this._folderPreviewId > 0) {
GLib.source_remove(this._folderPreviewId); GLib.source_remove(this._folderPreviewId);
this._folderPreviewId = 0; this._folderPreviewId = 0;
@@ -2360,32 +2405,13 @@ var AppIcon = GObject.registerClass({
} }
} }
_onDragBegin() {
this._dragMonitor = {
dragMotion: this._onDragMotion.bind(this),
};
DND.addDragMonitor(this._dragMonitor);
}
_onDragMotion(dragEvent) { _onDragMotion(dragEvent) {
let target = dragEvent.targetActor; if (!this.contains(dragEvent.targetActor))
let isHovering = target == this || this.contains(target); this._setHoveringByDnd(false);
let canDrop = this._canAccept(dragEvent.source);
let hasDndHover = isHovering && canDrop;
if (this._hasDndHover != hasDndHover) {
this._setHoveringByDnd(hasDndHover);
this._hasDndHover = hasDndHover;
}
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
} }
_onDragEnd() {
this.remove_style_pseudo_class('drop');
DND.removeDragMonitor(this._dragMonitor);
}
handleDragOver(source) { handleDragOver(source) {
if (source == this) if (source == this)
return DND.DragMotionResult.NO_DROP; return DND.DragMotionResult.NO_DROP;
@@ -2393,6 +2419,8 @@ var AppIcon = GObject.registerClass({
if (!this._canAccept(source)) if (!this._canAccept(source))
return DND.DragMotionResult.CONTINUE; return DND.DragMotionResult.CONTINUE;
this._setHoveringByDnd(true);
return DND.DragMotionResult.MOVE_DROP; return DND.DragMotionResult.MOVE_DROP;
} }
@@ -2437,7 +2465,7 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
Main.uiGroup.add_actor(this.actor); Main.uiGroup.add_actor(this.actor);
} }
_redisplay() { _rebuildMenu() {
this.removeAll(); this.removeAll();
let windows = this._source.app.get_windows().filter( let windows = this._source.app.get_windows().filter(
@@ -2533,7 +2561,7 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
'org.gtk.Actions', 'Activate', 'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})', GLib.Variant.new('(sava{sv})',
['details', [args], null]), ['details', [args], null]),
null, 0, -1, null, null); null, 0, -1, null);
Main.overview.hide(); Main.overview.hide();
}); });
}); });
@@ -2554,7 +2582,7 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
} }
popup(_activatingButton) { popup(_activatingButton) {
this._redisplay(); this._rebuildMenu();
this.open(); this.open();
} }
}; };

View File

@@ -837,7 +837,8 @@ class EventsSection extends MessageList.MessageListSection {
this._title.connect('clicked', this._onTitleClicked.bind(this)); this._title.connect('clicked', this._onTitleClicked.bind(this));
this._title.connect('key-focus-in', this._onKeyFocusIn.bind(this)); this._title.connect('key-focus-in', this._onKeyFocusIn.bind(this));
Shell.AppSystem.get_default().connect('installed-changed', this._appSys = Shell.AppSystem.get_default();
this._appSys.connect('installed-changed',
this._appInstalledChanged.bind(this)); this._appInstalledChanged.bind(this));
this._appInstalledChanged(); this._appInstalledChanged();
} }
@@ -931,10 +932,13 @@ class EventsSection extends MessageList.MessageListSection {
Main.overview.hide(); Main.overview.hide();
Main.panel.closeCalendar(); Main.panel.closeCalendar();
let app = this._getCalendarApp(); let appInfo = this._getCalendarApp();
if (app.get_id() == 'evolution.desktop') if (appInfo.get_id() === 'org.gnome.Evolution.desktop') {
app = Gio.DesktopAppInfo.new('evolution-calendar.desktop'); let app = this._appSys.lookup_app('evolution-calendar.desktop');
app.launch([], global.create_app_launch_context(0, -1)); if (app)
appInfo = app.app_info;
}
appInfo.launch([], global.create_app_launch_context(0, -1));
} }
setDate(date) { setDate(date) {
@@ -1149,17 +1153,22 @@ class CalendarMessageList extends St.Widget {
let hbox = new St.BoxLayout({ style_class: 'message-list-controls' }); let hbox = new St.BoxLayout({ style_class: 'message-list-controls' });
box.add_child(hbox); box.add_child(hbox);
hbox.add_child(new St.Label({ const dndLabel = new St.Label({
text: _('Do Not Disturb'), text: _('Do Not Disturb'),
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
})); });
hbox.add_child(dndLabel);
this._dndSwitch = new DoNotDisturbSwitch(); this._dndSwitch = new DoNotDisturbSwitch();
this._dndButton = new St.Button({ this._dndButton = new St.Button({
can_focus: true, can_focus: true,
toggle_mode: true,
child: this._dndSwitch, child: this._dndSwitch,
label_actor: dndLabel,
}); });
this._dndButton.connect('clicked', () => this._dndSwitch.toggle()); this._dndButton.bind_property('checked',
this._dndSwitch, 'state',
GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE);
hbox.add_child(this._dndButton); hbox.add_child(this._dndButton);
this._clearButton = new St.Button({ this._clearButton = new St.Button({

View File

@@ -1,5 +1,5 @@
/* exported CheckBox */ /* exported CheckBox */
const { Clutter, GObject, Pango, St } = imports.gi; const { Atk, Clutter, GObject, Pango, St } = imports.gi;
var CheckBox = GObject.registerClass( var CheckBox = GObject.registerClass(
class CheckBox extends St.Button { class CheckBox extends St.Button {
@@ -15,6 +15,7 @@ class CheckBox extends St.Button {
toggle_mode: true, toggle_mode: true,
can_focus: true, can_focus: true,
}); });
this.set_accessible_role(Atk.Role.CHECK_BOX);
this._box = new St.Bin({ y_align: Clutter.ActorAlign.START }); this._box = new St.Bin({ y_align: Clutter.ActorAlign.START });
container.add_actor(this._box); container.add_actor(this._box);
@@ -22,6 +23,7 @@ class CheckBox extends St.Button {
this._label = new St.Label({ y_align: Clutter.ActorAlign.CENTER }); this._label = new St.Label({ y_align: Clutter.ActorAlign.CENTER });
this._label.clutter_text.set_line_wrap(true); this._label.clutter_text.set_line_wrap(true);
this._label.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE); this._label.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE);
this.set_label_actor(this._label);
container.add_actor(this._label); container.add_actor(this._label);
if (label) if (label)

View File

@@ -188,6 +188,8 @@ var CloseDialog = GObject.registerClass({
global.stage.disconnect(this._keyFocusChangedId); global.stage.disconnect(this._keyFocusChangedId);
this._keyFocusChangedId = 0; this._keyFocusChangedId = 0;
this._dialog._dialog.remove_all_transitions();
let dialog = this._dialog; let dialog = this._dialog;
this._dialog = null; this._dialog = null;
this._removeWindowEffect(); this._removeWindowEffect();

View File

@@ -111,15 +111,11 @@ class KeyringDialog extends ModalDialog.ModalDialog {
} }
_updateSensitivity(sensitive) { _updateSensitivity(sensitive) {
if (this._passwordEntry) { if (this._passwordEntry)
this._passwordEntry.reactive = sensitive; this._passwordEntry.reactive = sensitive;
this._passwordEntry.clutter_text.editable = sensitive;
}
if (this._confirmEntry) { if (this._confirmEntry)
this._confirmEntry.reactive = sensitive; this._confirmEntry.reactive = sensitive;
this._confirmEntry.clutter_text.editable = sensitive;
}
this._continueButton.can_focus = sensitive; this._continueButton.can_focus = sensitive;
this._continueButton.reactive = sensitive; this._continueButton.reactive = sensitive;

View File

@@ -4,13 +4,15 @@
const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi;
const Signals = imports.signals; const Signals = imports.signals;
const Config = imports.misc.config;
const Dialog = imports.ui.dialog; const Dialog = imports.ui.dialog;
const Main = imports.ui.main; const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray; const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry; const ShellEntry = imports.ui.shellEntry;
Gio._promisify(Shell.NetworkAgent.prototype,
'search_vpn_plugin', 'search_vpn_plugin_finish');
const VPN_UI_GROUP = 'VPN Plugin UI'; const VPN_UI_GROUP = 'VPN Plugin UI';
var NetworkSecretDialog = GObject.registerClass( var NetworkSecretDialog = GObject.registerClass(
@@ -615,14 +617,6 @@ var NetworkAgent = class {
this._vpnRequests = { }; this._vpnRequests = { };
this._notifications = { }; this._notifications = { };
this._pluginDir = Gio.file_new_for_path(Config.VPNDIR);
try {
let monitor = this._pluginDir.monitor(Gio.FileMonitorFlags.NONE, null);
monitor.connect('changed', () => (this._vpnCacheBuilt = false));
} catch (e) {
log('Failed to create monitor for VPN plugin dir: %s'.format(e.message));
}
this._native.connect('new-request', this._newRequest.bind(this)); this._native.connect('new-request', this._newRequest.bind(this));
this._native.connect('cancel-request', this._cancelRequest.bind(this)); this._native.connect('cancel-request', this._cancelRequest.bind(this));
@@ -766,13 +760,11 @@ var NetworkAgent = class {
} }
} }
_vpnRequest(requestId, connection, hints, flags) { async _vpnRequest(requestId, connection, hints, flags) {
let vpnSetting = connection.get_setting_vpn(); let vpnSetting = connection.get_setting_vpn();
let serviceType = vpnSetting.service_type; let serviceType = vpnSetting.service_type;
this._buildVPNServiceCache(); let binary = await this._findAuthBinary(serviceType);
let binary = this._vpnBinaries[serviceType];
if (!binary) { if (!binary) {
log('Invalid VPN service type (cannot find authentication binary)'); log('Invalid VPN service type (cannot find authentication binary)');
@@ -788,36 +780,30 @@ var NetworkAgent = class {
this._vpnRequests[requestId] = vpnRequest; this._vpnRequests[requestId] = vpnRequest;
} }
_buildVPNServiceCache() { async _findAuthBinary(serviceType) {
if (this._vpnCacheBuilt) let plugin;
return;
this._vpnCacheBuilt = true; try {
this._vpnBinaries = { }; plugin = await this._native.search_vpn_plugin(serviceType);
} catch (e) {
NM.VpnPluginInfo.list_load().forEach(plugin => { logError(e);
let service = plugin.get_service(); return null;
let fileName = plugin.get_auth_dialog();
let supportsHints = plugin.supports_hints();
let externalUIMode = false;
let prop = plugin.lookup_property('GNOME', 'supports-external-ui-mode');
if (prop) {
prop = prop.trim().toLowerCase();
externalUIMode = ['true', 'yes', 'on', '1'].includes(prop);
} }
if (GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) { const fileName = plugin.get_auth_dialog();
let binary = { fileName, externalUIMode, supportsHints }; if (!GLib.file_test(fileName, GLib.FileTest.IS_EXECUTABLE)) {
this._vpnBinaries[service] = binary;
plugin.get_aliases().forEach(alias => {
this._vpnBinaries[alias] = binary;
});
} else {
log('VPN plugin at %s is not executable'.format(fileName)); log('VPN plugin at %s is not executable'.format(fileName));
return null;
} }
});
const prop = plugin.lookup_property('GNOME', 'supports-external-ui-mode');
const trimmedProp = prop ? prop.trim().toLowerCase() : '';
return {
fileName,
supportsHints: plugin.supports_hints(),
externalUIMode: ['true', 'yes', 'on', '1'].includes(trimmedProp),
};
} }
}; };
var Component = NetworkAgent; var Component = NetworkAgent;

View File

@@ -2,7 +2,6 @@
/* exported Component */ /* exported Component */
const { Clutter, Gio, GLib, GObject, St } = imports.gi; const { Clutter, Gio, GLib, GObject, St } = imports.gi;
const Lang = imports.lang;
var Tpl = null; var Tpl = null;
var Tp = null; var Tp = null;
@@ -40,35 +39,58 @@ var NotificationDirection = {
RECEIVED: 'chat-received', RECEIVED: 'chat-received',
}; };
function makeMessageFromTpMessage(tpMessage, direction) { const ChatMessage = HAVE_TP ? GObject.registerClass({
let [text, flags_] = tpMessage.to_text(); Properties: {
'message-type': GObject.ParamSpec.int(
let timestamp = tpMessage.get_sent_timestamp(); 'message-type', 'message-type', 'message-type',
if (timestamp == 0) GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
timestamp = tpMessage.get_received_timestamp(); Math.min(...Object.values(Tp.ChannelTextMessageType)),
Math.max(...Object.values(Tp.ChannelTextMessageType)),
return { Tp.ChannelTextMessageType.NORMAL),
messageType: tpMessage.get_message_type(), 'text': GObject.ParamSpec.string(
text, 'text', 'text', 'text',
sender: tpMessage.sender.alias, GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
timestamp, null),
'sender': GObject.ParamSpec.string(
'sender', 'sender', 'sender',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
null),
'timestamp': GObject.ParamSpec.int64(
'timestamp', 'timestamp', 'timestamp',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
0, Number.MAX_SAFE_INTEGER, 0),
'direction': GObject.ParamSpec.string(
'direction', 'direction', 'direction',
GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT_ONLY,
null),
},
}, class ChatMessageClass extends GObject.Object {
static newFromTpMessage(tpMessage, direction) {
return new ChatMessage({
'message-type': tpMessage.get_message_type(),
'text': tpMessage.to_text()[0],
'sender': tpMessage.sender.alias,
'timestamp': direction === NotificationDirection.RECEIVED
? tpMessage.get_received_timestamp() : tpMessage.get_sent_timestamp(),
direction, direction,
}; });
} }
static newFromTplTextEvent(tplTextEvent) {
let direction =
tplTextEvent.get_sender().get_entity_type() === Tpl.EntityType.SELF
? NotificationDirection.SENT : NotificationDirection.RECEIVED;
function makeMessageFromTplEvent(event) { return new ChatMessage({
let sent = event.get_sender().get_entity_type() == Tpl.EntityType.SELF; 'message-type': tplTextEvent.get_message_type(),
let direction = sent ? NotificationDirection.SENT : NotificationDirection.RECEIVED; 'text': tplTextEvent.get_message(),
'sender': tplTextEvent.get_sender().get_alias(),
return { 'timestamp': tplTextEvent.get_timestamp(),
messageType: event.get_message_type(),
text: event.get_message(),
sender: event.get_sender().get_alias(),
timestamp: event.get_timestamp(),
direction, direction,
}; });
} }
}) : null;
var TelepathyComponent = class { var TelepathyComponent = class {
constructor() { constructor() {
@@ -270,12 +292,12 @@ class TelepathyClient extends Tp.BaseClient {
var ChatSource = HAVE_TP ? GObject.registerClass( var ChatSource = HAVE_TP ? GObject.registerClass(
class ChatSource extends MessageTray.Source { class ChatSource extends MessageTray.Source {
_init(account, conn, channel, contact, client) { _init(account, conn, channel, contact, client) {
super._init(contact.get_alias());
this._account = account; this._account = account;
this._contact = contact; this._contact = contact;
this._client = client; this._client = client;
super._init(contact.get_alias());
this.isChat = true; this.isChat = true;
this._pendingMessages = []; this._pendingMessages = [];
@@ -431,7 +453,7 @@ class ChatSource extends MessageTray.Source {
_displayPendingMessages(logManager, result) { _displayPendingMessages(logManager, result) {
let [success_, events] = logManager.get_filtered_events_finish(result); let [success_, events] = logManager.get_filtered_events_finish(result);
let logMessages = events.map(makeMessageFromTplEvent); let logMessages = events.map(e => ChatMessage.newFromTplTextEvent(e));
this._ensureNotification(); this._ensureNotification();
let pendingTpMessages = this._channel.get_pending_messages(); let pendingTpMessages = this._channel.get_pending_messages();
@@ -443,7 +465,8 @@ class ChatSource extends MessageTray.Source {
if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT) if (message.get_message_type() == Tp.ChannelTextMessageType.DELIVERY_REPORT)
continue; continue;
pendingMessages.push(makeMessageFromTpMessage(message, NotificationDirection.RECEIVED)); pendingMessages.push(ChatMessage.newFromTpMessage(message,
NotificationDirection.RECEIVED));
this._pendingMessages.push(message); this._pendingMessages.push(message);
} }
@@ -541,7 +564,8 @@ class ChatSource extends MessageTray.Source {
this._pendingMessages.push(message); this._pendingMessages.push(message);
this.countUpdated(); this.countUpdated();
message = makeMessageFromTpMessage(message, NotificationDirection.RECEIVED); message = ChatMessage.newFromTpMessage(message,
NotificationDirection.RECEIVED);
this._notification.appendMessage(message); this._notification.appendMessage(message);
// Wait a bit before notifying for the received message, a handler // Wait a bit before notifying for the received message, a handler
@@ -566,7 +590,8 @@ class ChatSource extends MessageTray.Source {
// our client and other clients as well. // our client and other clients as well.
_messageSent(channel, message, _flags, _token) { _messageSent(channel, message, _flags, _token) {
this._ensureNotification(); this._ensureNotification();
message = makeMessageFromTpMessage(message, NotificationDirection.SENT); message = ChatMessage.newFromTpMessage(message,
NotificationDirection.SENT);
this._notification.appendMessage(message); this._notification.appendMessage(message);
} }
@@ -630,11 +655,19 @@ class ChatSource extends MessageTray.Source {
} }
}) : null; }) : null;
const ChatNotificationMessage = HAVE_TP ? GObject.registerClass(
class ChatNotificationMessage extends GObject.Object {
_init(props = {}) {
super._init();
this.set(props);
}
}) : null;
var ChatNotification = HAVE_TP ? GObject.registerClass({ var ChatNotification = HAVE_TP ? GObject.registerClass({
Signals: { Signals: {
'message-removed': { param_types: [Tp.Message.$gtype] }, 'message-removed': { param_types: [ChatNotificationMessage.$gtype] },
'message-added': { param_types: [Tp.Message.$gtype] }, 'message-added': { param_types: [ChatNotificationMessage.$gtype] },
'timestamp-changed': { param_types: [Tp.Message.$gtype] }, 'timestamp-changed': { param_types: [ChatNotificationMessage.$gtype] },
}, },
}, class ChatNotification extends MessageTray.Notification { }, class ChatNotification extends MessageTray.Notification {
_init(source) { _init(source) {
@@ -735,21 +768,24 @@ var ChatNotification = HAVE_TP ? GObject.registerClass({
styles: [], styles: [],
timestamp: currentTime, timestamp: currentTime,
noTimestamp: false }); noTimestamp: false });
const { noTimestamp } = props;
delete props.noTimestamp;
// Reset the old message timeout // Reset the old message timeout
if (this._timestampTimeoutId) if (this._timestampTimeoutId)
GLib.source_remove(this._timestampTimeoutId); GLib.source_remove(this._timestampTimeoutId);
this._timestampTimeoutId = 0; this._timestampTimeoutId = 0;
let message = { realMessage: props.group != 'meta', let message = new ChatNotificationMessage({
showTimestamp: false }; realMessage: props.group !== 'meta',
Lang.copyProperties(props, message); showTimestamp: false,
delete message.noTimestamp; ...props,
});
this.messages.unshift(message); this.messages.unshift(message);
this.emit('message-added', message); this.emit('message-added', message);
if (!props.noTimestamp) { if (!noTimestamp) {
let timestamp = props.timestamp; let timestamp = props.timestamp;
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) { if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) {
this.appendTimestamp(); this.appendTimestamp();

View File

@@ -180,14 +180,27 @@ class WorldClocksSection extends St.Button {
let time = new St.Label({ style_class: 'world-clocks-time' }); let time = new St.Label({ style_class: 'world-clocks-time' });
let otherOffset = this._getTimeAtLocation(l).get_utc_offset(); const utcOffset = this._getTimeAtLocation(l).get_utc_offset();
let offset = (otherOffset - localOffset) / GLib.TIME_SPAN_HOUR; const offsetCurrentTz = utcOffset - localOffset;
let fmt = Math.trunc(offset) == offset ? '%s%.0f' : '%s%.1f'; const offsetHours = Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR;
let prefix = offset >= 0 ? '+' : '-'; const offsetMinutes =
let tz = new St.Label({ style_class: 'world-clocks-timezone', (Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) /
text: fmt.format(prefix, Math.abs(offset)), GLib.TIME_SPAN_MINUTE;
const prefix = offsetCurrentTz >= 0 ? '+' : '-';
const text = offsetMinutes === 0
? '%s%d'.format(prefix, offsetHours)
: '%s%d\u2236%d'.format(prefix, offsetHours, offsetMinutes);
const tz = new St.Label({
style_class: 'world-clocks-timezone',
text,
x_align: Clutter.ActorAlign.END, x_align: Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.CENTER }); y_align: Clutter.ActorAlign.CENTER,
});
time.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
tz.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
if (this._grid.text_direction == Clutter.TextDirection.RTL) { if (this._grid.text_direction == Clutter.TextDirection.RTL) {
layout.attach(tz, 0, i + 1, 1, 1); layout.attach(tz, 0, i + 1, 1, 1);
@@ -384,6 +397,20 @@ class WeatherSection extends St.Button {
layout.attach(label, 0, 0, 1, 1); layout.attach(label, 0, 0, 1, 1);
} }
_findBestLocationName(loc) {
const locName = loc.get_name();
if (loc.get_level() === GWeather.LocationLevel.CITY ||
!loc.has_coords())
return locName;
const world = GWeather.Location.get_world();
const city = world.find_nearest_city(...loc.get_coords());
const cityName = city.get_name();
return locName.includes(cityName) ? cityName : locName;
}
_updateForecasts() { _updateForecasts() {
this._forecastGrid.destroy_all_children(); this._forecastGrid.destroy_all_children();
@@ -392,13 +419,8 @@ class WeatherSection extends St.Button {
return; return;
} }
let info = this._weatherClient.info; const { info } = this._weatherClient;
let loc = info.get_location(); this._titleLocation.text = this._findBestLocationName(info.location);
if (loc.get_level() !== GWeather.LocationLevel.CITY && loc.has_coords()) {
let world = GWeather.Location.get_world();
loc = world.find_nearest_city(...loc.get_coords());
}
this._titleLocation.text = loc.get_name();
if (this._weatherClient.loading) { if (this._weatherClient.loading) {
this._setStatusLabel(_("Loading…")); this._setStatusLabel(_("Loading…"));

View File

@@ -346,10 +346,8 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
// Use a different description when we are installing a system upgrade // Use a different description when we are installing a system upgrade
// if the PackageKit proxy is available (i.e. PackageKit is available). // if the PackageKit proxy is available (i.e. PackageKit is available).
if (this._pkOfflineProxy && dialogContent.upgradeDescription) { if (dialogContent.upgradeDescription) {
let name = this._pkOfflineProxy.PreparedUpgrade['name'].deep_unpack(); const { name, version } = this._updateInfo.PreparedUpgrade;
let version = this._pkOfflineProxy.PreparedUpgrade['version'].deep_unpack();
if (name != null && version != null) if (name != null && version != null)
description = dialogContent.upgradeDescription(name, version); description = dialogContent.upgradeDescription(name, version);
} }
@@ -608,16 +606,46 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
}); });
} }
OpenAsync(parameters, invocation) { async _getUpdateInfo() {
const connection = this._pkOfflineProxy.get_connection();
const reply = await connection.call(
this._pkOfflineProxy.g_name,
this._pkOfflineProxy.g_object_path,
'org.freedesktop.DBus.Properties',
'GetAll',
new GLib.Variant('(s)', [this._pkOfflineProxy.g_interface_name]),
null,
Gio.DBusCallFlags.NONE,
-1,
null);
const [info] = reply.recursiveUnpack();
return info;
}
async OpenAsync(parameters, invocation) {
let [type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters; let [type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths] = parameters;
this._totalSecondsToStayOpen = totalSecondsToStayOpen; this._totalSecondsToStayOpen = totalSecondsToStayOpen;
this._type = type; this._type = type;
try {
this._updateInfo = await this._getUpdateInfo();
} catch (e) {
if (this._pkOfflineProxy !== null)
log('Failed to get update info from PackageKit: %s'.format(e.message));
this._updateInfo = {
UpdateTriggered: false,
UpdatePrepared: false,
UpgradeTriggered: false,
PreparedUpgrade: {},
};
}
// Only consider updates and upgrades if PackageKit is available. // Only consider updates and upgrades if PackageKit is available.
if (this._pkOfflineProxy && this._type == DialogType.RESTART) { if (this._pkOfflineProxy && this._type == DialogType.RESTART) {
if (this._pkOfflineProxy.UpdateTriggered) if (this._updateInfo.UpdateTriggered)
this._type = DialogType.UPDATE_RESTART; this._type = DialogType.UPDATE_RESTART;
else if (this._pkOfflineProxy.UpgradeTriggered) else if (this._updateInfo.UpgradeTriggered)
this._type = DialogType.UPGRADE_RESTART; this._type = DialogType.UPGRADE_RESTART;
} }
@@ -646,14 +674,13 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
if (dialogContent.showOtherSessions) if (dialogContent.showOtherSessions)
this._loadSessions(); this._loadSessions();
// Only consider updates and upgrades if PackageKit is available. let updateTriggered = this._updateInfo.UpdateTriggered;
let updateTriggered = this._pkOfflineProxy ? this._pkOfflineProxy.UpdateTriggered : false; let updatePrepared = this._updateInfo.UpdatePrepared;
let updatePrepared = this._pkOfflineProxy ? this._pkOfflineProxy.UpdatePrepared : false;
let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed; let updatesAllowed = this._updatesPermission && this._updatesPermission.allowed;
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || ''); _setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || '');
this._checkBox.visible = dialogContent.checkBoxText && updatePrepared && updatesAllowed; this._checkBox.visible = dialogContent.checkBoxText && updatePrepared && updatesAllowed;
this._checkBox.checked = updatePrepared && updateTriggered; this._checkBox.checked = this._checkBox.visible;
// We show the warning either together with the checkbox, or when // We show the warning either together with the checkbox, or when
// updates have already been triggered, but the user doesn't have // updates have already been triggered, but the user doesn't have

View File

@@ -10,10 +10,12 @@ imports.gi.versions.Gtk = '3.0';
imports.gi.versions.TelepathyGLib = '0.12'; imports.gi.versions.TelepathyGLib = '0.12';
imports.gi.versions.TelepathyLogger = '0.2'; imports.gi.versions.TelepathyLogger = '0.2';
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const Gettext = imports.gettext; const Gettext = imports.gettext;
const System = imports.system; const System = imports.system;
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
let _localTimeZone = null; let _localTimeZone = null;
// We can't import shell JS modules yet, because they may have // We can't import shell JS modules yet, because they may have
@@ -288,6 +290,13 @@ function init() {
}, },
}); });
Gio._LocalFilePrototype.touch_async = function (callback) {
Shell.util_touch_file_async(this, callback);
};
Gio._LocalFilePrototype.touch_finish = function (result) {
return Shell.util_touch_file_finish(this, result);
};
St.set_slow_down_factor = function (factor) { St.set_slow_down_factor = function (factor) {
let { stack } = new Error(); let { stack } = new Error();
log(`St.set_slow_down_factor() is deprecated, use St.Settings.slow_down_factor\n${stack}`); log(`St.set_slow_down_factor() is deprecated, use St.Settings.slow_down_factor\n${stack}`);

View File

@@ -56,6 +56,15 @@ function uninstallExtension(uuid) {
return false; return false;
FileUtils.recursivelyDeleteDir(extension.dir, true); FileUtils.recursivelyDeleteDir(extension.dir, true);
try {
const updatesDir = Gio.File.new_for_path(GLib.build_filenamev(
[global.userdatadir, 'extension-updates', extension.uuid]));
FileUtils.recursivelyDeleteDir(updatesDir, true);
} catch (e) {
// not an error
}
return true; return true;
} }
@@ -99,6 +108,9 @@ function gotExtensionZipFile(session, message, uuid, dir, callback, errback) {
} }
function downloadExtensionUpdate(uuid) { function downloadExtensionUpdate(uuid) {
if (!Main.extensionManager.updatesSupported)
return;
let dir = Gio.File.new_for_path( let dir = Gio.File.new_for_path(
GLib.build_filenamev([global.userdatadir, 'extension-updates', uuid])); GLib.build_filenamev([global.userdatadir, 'extension-updates', uuid]));
@@ -117,6 +129,9 @@ function downloadExtensionUpdate(uuid) {
} }
function checkForUpdates() { function checkForUpdates() {
if (!Main.extensionManager.updatesSupported)
return;
let metadatas = {}; let metadatas = {};
Main.extensionManager.getUuids().forEach(uuid => { Main.extensionManager.getUuids().forEach(uuid => {
let extension = Main.extensionManager.lookup(uuid); let extension = Main.extensionManager.lookup(uuid);
@@ -127,6 +142,9 @@ function checkForUpdates() {
metadatas[uuid] = extension.metadata; metadatas[uuid] = extension.metadata;
}); });
if (Object.keys(metadatas).length === 0)
return; // nothing to update
let versionCheck = global.settings.get_boolean( let versionCheck = global.settings.get_boolean(
'disable-extension-version-validation'); 'disable-extension-version-validation');
let params = { let params = {
@@ -144,9 +162,7 @@ function checkForUpdates() {
let operations = JSON.parse(message.response_body.data); let operations = JSON.parse(message.response_body.data);
for (let uuid in operations) { for (let uuid in operations) {
let operation = operations[uuid]; let operation = operations[uuid];
if (operation == 'blacklist') if (operation === 'upgrade' || operation === 'downgrade')
uninstallExtension(uuid);
else if (operation == 'upgrade' || operation == 'downgrade')
downloadExtensionUpdate(uuid); downloadExtensionUpdate(uuid);
} }
}); });

View File

@@ -60,6 +60,11 @@ var ExtensionManager = class {
ExtensionDownloader.checkForUpdates(); ExtensionDownloader.checkForUpdates();
} }
get updatesSupported() {
const appSys = Shell.AppSystem.get_default();
return appSys.lookup_app('org.gnome.Extensions.desktop') !== null;
}
lookup(uuid) { lookup(uuid) {
return this._extensions.get(uuid); return this._extensions.get(uuid);
} }
@@ -210,6 +215,25 @@ var ExtensionManager = class {
return true; return true;
} }
openExtensionPrefs(uuid, parentWindow, options) {
const extension = this.lookup(uuid);
if (!extension || !extension.hasPrefs)
return false;
Gio.DBus.session.call(
'org.gnome.Shell.Extensions',
'/org/gnome/Shell/Extensions',
'org.gnome.Shell.Extensions',
'OpenExtensionPrefs',
new GLib.Variant('(ssa{sv})', [uuid, parentWindow, options]),
null,
Gio.DBusCallFlags.NONE,
-1,
null,
(conn, res) => conn.call_finish(res));
return true;
}
notifyExtensionUpdate(uuid) { notifyExtensionUpdate(uuid) {
let extension = this.lookup(uuid); let extension = this.lookup(uuid);
if (!extension) if (!extension)
@@ -481,6 +505,9 @@ var ExtensionManager = class {
} }
_installExtensionUpdates() { _installExtensionUpdates() {
if (!this.updatesSupported)
return;
FileUtils.collectFromDatadirs('extension-updates', true, (dir, info) => { FileUtils.collectFromDatadirs('extension-updates', true, (dir, info) => {
let fileType = info.get_file_type(); let fileType = info.get_file_type();
if (fileType !== Gio.FileType.DIRECTORY) if (fileType !== Gio.FileType.DIRECTORY)
@@ -489,9 +516,14 @@ var ExtensionManager = class {
let extensionDir = Gio.File.new_for_path( let extensionDir = Gio.File.new_for_path(
GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); GLib.build_filenamev([global.userdatadir, 'extensions', uuid]));
try {
FileUtils.recursivelyDeleteDir(extensionDir, false); FileUtils.recursivelyDeleteDir(extensionDir, false);
FileUtils.recursivelyMoveDir(dir, extensionDir); FileUtils.recursivelyMoveDir(dir, extensionDir);
} catch (e) {
log('Failed to install extension updates for %s'.format(uuid));
} finally {
FileUtils.recursivelyDeleteDir(dir, true); FileUtils.recursivelyDeleteDir(dir, true);
}
}); });
} }

View File

@@ -498,7 +498,7 @@ var Key = GObject.registerClass({
var KeyboardModel = class { var KeyboardModel = class {
constructor(groupName) { constructor(groupName) {
let names = [groupName]; let names = [groupName];
if (names.includes('+')) if (groupName.includes('+'))
names.push(groupName.replace(/\+.*/, '')); names.push(groupName.replace(/\+.*/, ''));
names.push('us'); names.push('us');
@@ -1120,10 +1120,11 @@ var KeyboardManager = class KeyBoardManager {
this._lastDevice = null; this._lastDevice = null;
Meta.get_backend().connect('last-device-changed', (backend, device) => { Meta.get_backend().connect('last-device-changed', (backend, device) => {
if (device.get_device_name().indexOf('XTEST') < 0) { if (device.device_type === Clutter.InputDeviceType.KEYBOARD_DEVICE)
return;
this._lastDevice = device; this._lastDevice = device;
this._syncEnabled(); this._syncEnabled();
}
}); });
this._syncEnabled(); this._syncEnabled();
} }
@@ -1148,9 +1149,9 @@ var KeyboardManager = class KeyBoardManager {
this._keyboard = new Keyboard(); this._keyboard = new Keyboard();
} else if (!enabled && this._keyboard) { } else if (!enabled && this._keyboard) {
this._keyboard.setCursorLocation(null); this._keyboard.setCursorLocation(null);
Main.layoutManager.hideKeyboard(true);
this._keyboard.destroy(); this._keyboard.destroy();
this._keyboard = null; this._keyboard = null;
Main.layoutManager.hideKeyboard(true);
} }
} }
@@ -1868,6 +1869,10 @@ var KeyboardController = class {
Main.inputMethod.disconnect(this._notifyContentPurposeId); Main.inputMethod.disconnect(this._notifyContentPurposeId);
Main.inputMethod.disconnect(this._notifyContentHintsId); Main.inputMethod.disconnect(this._notifyContentHintsId);
Main.inputMethod.disconnect(this._notifyInputPanelStateId); Main.inputMethod.disconnect(this._notifyInputPanelStateId);
// Make sure any buttons pressed by the virtual device are released
// immediately instead of waiting for the next GC cycle
this._virtualDevice.run_dispose();
} }
_onSourcesModified() { _onSourcesModified() {

View File

@@ -612,10 +612,20 @@ var LayoutManager = GObject.registerClass({
let signalId = this._systemBackground.connect('loaded', () => { let signalId = this._systemBackground.connect('loaded', () => {
this._systemBackground.disconnect(signalId); this._systemBackground.disconnect(signalId);
// We're mostly prepared for the startup animation
// now, but since a lot is going on asynchronously
// during startup, let's defer the startup animation
// until the event loop is uncontended and idle.
// This helps to prevent us from running the animation
// when the system is bogged down
const id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
this._systemBackground.show(); this._systemBackground.show();
global.stage.show(); global.stage.show();
this._prepareStartupAnimation(); this._prepareStartupAnimation();
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] Startup Animation');
}); });
} }
@@ -672,17 +682,7 @@ var LayoutManager = GObject.registerClass({
this.emit('startup-prepared'); this.emit('startup-prepared');
// We're mostly prepared for the startup animation
// now, but since a lot is going on asynchronously
// during startup, let's defer the startup animation
// until the event loop is uncontended and idle.
// This helps to prevent us from running the animation
// when the system is bogged down
let id = GLib.idle_add(GLib.PRIORITY_LOW, () => {
this._startupAnimation(); this._startupAnimation();
return GLib.SOURCE_REMOVE;
});
GLib.Source.set_name_by_id(id, '[gnome-shell] this._startupAnimation');
} }
_startupAnimation() { _startupAnimation() {
@@ -765,7 +765,7 @@ var LayoutManager = GObject.registerClass({
this._keyboardHeightNotifyId = 0; this._keyboardHeightNotifyId = 0;
} }
this.keyboardBox.ease({ this.keyboardBox.ease({
translation_y: this.keyboardBox.height, translation_y: 0,
opacity: 0, opacity: 0,
duration: immediate ? 0 : KEYBOARD_ANIMATION_TIME, duration: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_IN_QUAD, mode: Clutter.AnimationMode.EASE_IN_QUAD,

View File

@@ -1127,7 +1127,7 @@ class LookingGlass extends St.BoxLayout {
else if (symbol == Clutter.KEY_Page_Down) else if (symbol == Clutter.KEY_Page_Down)
this._notebook.nextTab(); this._notebook.nextTab();
} }
return Clutter.EVENT_PROPAGATE; return super.vfunc_key_press_event(keyPressEvent);
} }
open() { open() {

View File

@@ -93,6 +93,9 @@ let _a11ySettings = null;
let _themeResource = null; let _themeResource = null;
let _oskResource = null; let _oskResource = null;
Gio._promisify(Gio._LocalFilePrototype, 'delete_async', 'delete_finish');
Gio._promisify(Gio._LocalFilePrototype, 'touch_async', 'touch_finish');
function _sessionUpdated() { function _sessionUpdated() {
if (sessionMode.isPrimary) if (sessionMode.isPrimary)
_loadDefaultStylesheet(); _loadDefaultStylesheet();
@@ -129,6 +132,8 @@ function start() {
notifyError(msg, detail); notifyError(msg, detail);
}); });
let currentDesktop = GLib.getenv('XDG_CURRENT_DESKTOP');
if (!currentDesktop || !currentDesktop.split(':').includes('GNOME'))
Gio.DesktopAppInfo.set_desktop_env('GNOME'); Gio.DesktopAppInfo.set_desktop_env('GNOME');
sessionMode = new SessionMode.SessionMode(); sessionMode = new SessionMode.SessionMode();
@@ -142,6 +147,11 @@ function start() {
shellDBusService = new ShellDBus.GnomeShell(); shellDBusService = new ShellDBus.GnomeShell();
shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler(); shellMountOpDBusService = new ShellMountOperation.GnomeShellMountOpHandler();
const watchId = Gio.DBus.session.watch_name('org.gnome.Shell.Notifications',
Gio.BusNameWatcherFlags.AUTO_START,
bus => bus.unwatch_name(watchId),
bus => bus.unwatch_name(watchId));
_sessionUpdated(); _sessionUpdated();
} }
@@ -271,11 +281,8 @@ function _initializeUI() {
} }
if (sessionMode.currentMode !== 'gdm' && if (sessionMode.currentMode !== 'gdm' &&
sessionMode.currentMode !== 'initial-setup' && sessionMode.currentMode !== 'initial-setup')
screenShield === null) { _handleLockScreenWarning();
notify(_('Screen Lock disabled'),
_('Screen Locking requires the GNOME display manager.'));
}
LoginManager.registerSessionWithGDM(); LoginManager.registerSessionWithGDM();
@@ -288,6 +295,32 @@ function _initializeUI() {
}); });
} }
async function _handleLockScreenWarning() {
const path = '%s/lock-warning-shown'.format(global.userdatadir);
const file = Gio.File.new_for_path(path);
const hasLockScreen = screenShield !== null;
if (hasLockScreen) {
try {
await file.delete_async(0, null);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
logError(e);
}
} else {
try {
if (!await file.touch_async())
return;
} catch (e) {
logError(e);
}
notify(
_('Screen Lock disabled'),
_('Screen Locking requires the GNOME display manager.'));
}
}
function _getStylesheet(name) { function _getStylesheet(name) {
let stylesheet; let stylesheet;

View File

@@ -530,7 +530,7 @@ var Message = GObject.registerClass({
this.close(); this.close();
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
} }
return Clutter.EVENT_PROPAGATE; return super.vfunc_key_press_event(keyEvent);
} }
}); });

View File

@@ -762,12 +762,10 @@ var Source = GObject.registerClass({
this.notifications = []; this.notifications = [];
this._policy = null; this._policy = this._createPolicy();
} }
get policy() { get policy() {
if (!this._policy)
this._policy = this._createPolicy();
return this._policy; return this._policy;
} }
@@ -880,8 +878,6 @@ var Source = GObject.registerClass({
} }
destroy(reason) { destroy(reason) {
this.policy.destroy();
let notifications = this.notifications; let notifications = this.notifications;
this.notifications = []; this.notifications = [];
@@ -890,6 +886,7 @@ var Source = GObject.registerClass({
this.emit('destroy', reason); this.emit('destroy', reason);
this.policy.destroy();
this.run_dispose(); this.run_dispose();
} }

View File

@@ -416,11 +416,11 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
var FdoNotificationDaemonSource = GObject.registerClass( var FdoNotificationDaemonSource = GObject.registerClass(
class FdoNotificationDaemonSource extends MessageTray.Source { class FdoNotificationDaemonSource extends MessageTray.Source {
_init(title, pid, sender, appId) { _init(title, pid, sender, appId) {
super._init(title);
this.pid = pid; this.pid = pid;
this.app = this._getApp(appId); this.app = this._getApp(appId);
super._init(title);
this.initialTitle = title; this.initialTitle = title;
if (this.app) if (this.app)
@@ -631,12 +631,12 @@ class GtkNotificationDaemonAppSource extends MessageTray.Source {
if (!app) if (!app)
throw new InvalidAppError(); throw new InvalidAppError();
super._init(app.get_name());
this._appId = appId; this._appId = appId;
this._app = app; this._app = app;
this._objectPath = objectPath; this._objectPath = objectPath;
super._init(app.get_name());
this._notifications = {}; this._notifications = {};
this._notificationPending = false; this._notificationPending = false;
} }

View File

@@ -89,7 +89,7 @@ var PadChooser = GObject.registerClass({
}); });
var KeybindingEntry = GObject.registerClass({ var KeybindingEntry = GObject.registerClass({
Signals: { 'keybinding-edited': {} }, Signals: { 'keybinding-edited': { param_types: [GObject.TYPE_STRING] } },
}, class KeybindingEntry extends St.Entry { }, class KeybindingEntry extends St.Entry {
_init() { _init() {
super._init({ hint_text: _("New shortcut…"), style: 'width: 10em' }); super._init({ hint_text: _("New shortcut…"), style: 'width: 10em' });

View File

@@ -100,7 +100,7 @@ class AppMenu extends PopupMenu.PopupMenu {
'org.gtk.Actions', 'Activate', 'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})', GLib.Variant.new('(sava{sv})',
['details', [args], null]), ['details', [args], null]),
null, 0, -1, null, null); null, 0, -1, null);
}); });
}); });
@@ -964,7 +964,7 @@ class Panel extends St.Widget {
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
} }
return Clutter.EVENT_PROPAGATE; return super.vfunc_key_press_event(keyEvent);
} }
_toggleMenu(indicator) { _toggleMenu(indicator) {

View File

@@ -247,7 +247,7 @@ var RemoteSearchProvider = class {
if (error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) if (error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return; return;
log('Received error from DBus search provider %s: %s'.format(this.id, String(error))); log('Received error from D-Bus search provider %s: %s'.format(this.id, String(error)));
callback([]); callback([]);
return; return;
} }
@@ -274,7 +274,7 @@ var RemoteSearchProvider = class {
_getResultMetasFinished(results, error, callback) { _getResultMetasFinished(results, error, callback) {
if (error) { if (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
log('Received error from DBus search provider %s during GetResultMetas: %s'.format(this.id, String(error))); log('Received error from D-Bus search provider %s during GetResultMetas: %s'.format(this.id, String(error)));
callback([]); callback([]);
return; return;
} }

View File

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

View File

@@ -84,7 +84,7 @@ var ScreenshotService = class {
} }
} }
_createStream(filename) { _createStream(filename, invocation) {
if (filename == '') if (filename == '')
return [Gio.MemoryOutputStream.new_resizable(), null]; return [Gio.MemoryOutputStream.new_resizable(), null];
@@ -94,6 +94,7 @@ var ScreenshotService = class {
let stream = file.replace(null, false, Gio.FileCreateFlags.NONE, null); let stream = file.replace(null, false, Gio.FileCreateFlags.NONE, null);
return [stream, file]; return [stream, file];
} catch (e) { } catch (e) {
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
return [null, null]; return [null, null];
} }
} }
@@ -104,15 +105,15 @@ var ScreenshotService = class {
return [stream, file]; return [stream, file];
} catch (e) { } catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS)) if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.EXISTS))
return [null, null]; break;
} }
} }
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
return [null, null]; return [null, null];
} }
_onScreenshotComplete(result, area, stream, file, flash, invocation) { _onScreenshotComplete(area, stream, file, flash, invocation) {
if (result) {
if (flash) { if (flash) {
let flashspot = new Flashspot(area); let flashspot = new Flashspot(area);
flashspot.fire(() => { flashspot.fire(() => {
@@ -121,7 +122,6 @@ var ScreenshotService = class {
} else { } else {
this._removeShooterForSender(invocation.get_sender()); this._removeShooterForSender(invocation.get_sender());
} }
}
stream.close(null); stream.close(null);
@@ -134,7 +134,7 @@ var ScreenshotService = class {
clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes); clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes);
} }
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]); let retval = GLib.Variant.new('(bs)', [true, filenameUsed]);
invocation.return_value(retval); invocation.return_value(retval);
} }
@@ -169,17 +169,20 @@ var ScreenshotService = class {
if (!screenshot) if (!screenshot)
return; return;
let [stream, file] = this._createStream(filename); let [stream, file] = this._createStream(filename, invocation);
if (!stream)
return;
screenshot.screenshot_area(x, y, width, height, stream, screenshot.screenshot_area(x, y, width, height, stream,
(o, res) => { (o, res) => {
try { try {
let [result, area] = let [success_, area] =
screenshot.screenshot_area_finish(res); screenshot.screenshot_area_finish(res);
this._onScreenshotComplete( this._onScreenshotComplete(
result, area, stream, file, flash, invocation); area, stream, file, flash, invocation);
} catch (e) { } catch (e) {
invocation.return_gerror(e); this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
} }
}); });
} }
@@ -190,17 +193,20 @@ var ScreenshotService = class {
if (!screenshot) if (!screenshot)
return; return;
let [stream, file] = this._createStream(filename); let [stream, file] = this._createStream(filename, invocation);
if (!stream)
return;
screenshot.screenshot_window(includeFrame, includeCursor, stream, screenshot.screenshot_window(includeFrame, includeCursor, stream,
(o, res) => { (o, res) => {
try { try {
let [result, area] = let [success_, area] =
screenshot.screenshot_window_finish(res); screenshot.screenshot_window_finish(res);
this._onScreenshotComplete( this._onScreenshotComplete(
result, area, stream, file, flash, invocation); area, stream, file, flash, invocation);
} catch (e) { } catch (e) {
invocation.return_gerror(e); this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
} }
}); });
} }
@@ -211,17 +217,20 @@ var ScreenshotService = class {
if (!screenshot) if (!screenshot)
return; return;
let [stream, file] = this._createStream(filename); let [stream, file] = this._createStream(filename, invocation);
if (!stream)
return;
screenshot.screenshot(includeCursor, stream, screenshot.screenshot(includeCursor, stream,
(o, res) => { (o, res) => {
try { try {
let [result, area] = let [success_, area] =
screenshot.screenshot_finish(res); screenshot.screenshot_finish(res);
this._onScreenshotComplete( this._onScreenshotComplete(
result, area, stream, file, flash, invocation); area, stream, file, flash, invocation);
} catch (e) { } catch (e) {
invocation.return_gerror(e); this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
} }
}); });
} }

View File

@@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported GnomeShell, ScreenSaverDBus */ /* exported GnomeShell, ScreenSaverDBus */
const { Gio, GLib, Meta, Shell } = imports.gi; const { Gio, GLib, Meta } = imports.gi;
const Config = imports.misc.config; const Config = imports.misc.config;
const ExtensionDownloader = imports.ui.extensionDownloader; const ExtensionDownloader = imports.ui.extensionDownloader;
@@ -315,21 +315,15 @@ var GnomeShellExtensions = class {
this.OpenExtensionPrefs(uuid, '', {}); this.OpenExtensionPrefs(uuid, '', {});
} }
OpenExtensionPrefs(uuid, _parentWindow, _options) { OpenExtensionPrefs(uuid, parentWindow, options) {
let appSys = Shell.AppSystem.get_default(); Main.extensionManager.openExtensionPrefs(uuid, parentWindow, options);
let app = appSys.lookup_app('org.gnome.Extensions.desktop');
let info = app.get_app_info();
let timestamp = global.display.get_current_time_roundtrip();
info.launch_uris([`extension:///${uuid}`],
global.create_app_launch_context(timestamp, -1));
} }
ReloadExtension(uuid) { ReloadExtensionAsync(params, invocation) {
let extension = Main.extensionManager.lookup(uuid); invocation.return_error_literal(
if (!extension) Gio.DBusError,
return; Gio.DBusError.NOT_SUPPORTED,
'ReloadExtension is deprecated and does not work');
Main.extensionManager.reloadExtension(extension);
} }
CheckForUpdates() { CheckForUpdates() {

View File

@@ -447,12 +447,8 @@ var ShellMountPasswordDialog = GObject.registerClass({
let useKeyfiles = this._keyfilesCheckbox.checked; let useKeyfiles = this._keyfilesCheckbox.checked;
this._passwordEntry.reactive = !useKeyfiles; this._passwordEntry.reactive = !useKeyfiles;
this._passwordEntry.can_focus = !useKeyfiles; this._passwordEntry.can_focus = !useKeyfiles;
this._passwordEntry.clutter_text.editable = !useKeyfiles;
this._passwordEntry.clutter_text.selectable = !useKeyfiles;
this._pimEntry.reactive = !useKeyfiles; this._pimEntry.reactive = !useKeyfiles;
this._pimEntry.can_focus = !useKeyfiles; this._pimEntry.can_focus = !useKeyfiles;
this._pimEntry.clutter_text.editable = !useKeyfiles;
this._pimEntry.clutter_text.selectable = !useKeyfiles;
this._rememberChoice.reactive = !useKeyfiles; this._rememberChoice.reactive = !useKeyfiles;
this._rememberChoice.can_focus = !useKeyfiles; this._rememberChoice.can_focus = !useKeyfiles;
this._keyfilesLabel.visible = useKeyfiles; this._keyfilesLabel.visible = useKeyfiles;

View File

@@ -186,7 +186,7 @@ var Slider = GObject.registerClass({
this.value = Math.max(0, Math.min(this._value + delta, this._maxValue)); this.value = Math.max(0, Math.min(this._value + delta, this._maxValue));
return Clutter.EVENT_STOP; return Clutter.EVENT_STOP;
} }
return Clutter.EVENT_PROPAGATE; return super.vfunc_key_press_event(keyPressEvent);
} }
_moveHandle(absX, _absY) { _moveHandle(absX, _absY) {

View File

@@ -139,14 +139,14 @@ class ATIndicator extends PanelMenu.Button {
interfaceSettings.is_writable(KEY_ICON_THEME), interfaceSettings.is_writable(KEY_ICON_THEME),
enabled => { enabled => {
if (enabled) { if (enabled) {
interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME); interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
} else if (!hasHC) { } else if (!hasHC) {
interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
interfaceSettings.set_string(KEY_ICON_THEME, iconTheme); interfaceSettings.set_string(KEY_ICON_THEME, iconTheme);
interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
} else { } else {
interfaceSettings.reset(KEY_GTK_THEME);
interfaceSettings.reset(KEY_ICON_THEME); interfaceSettings.reset(KEY_ICON_THEME);
interfaceSettings.reset(KEY_GTK_THEME);
} }
}); });

View File

@@ -138,11 +138,12 @@ var StreamSlider = class {
} }
_notifyVolumeChange() { _notifyVolumeChange() {
if (this._stream.state === Gvc.MixerStreamState.RUNNING)
return; // feedback not necessary while playing
if (this._volumeCancellable) if (this._volumeCancellable)
this._volumeCancellable.cancel(); this._volumeCancellable.cancel();
this._volumeCancellable = null;
if (this._stream.state === Gvc.MixerStreamState.RUNNING)
return; // feedback not necessary while playing
this._volumeCancellable = new Gio.Cancellable(); this._volumeCancellable = new Gio.Cancellable();
let player = global.display.get_sound_player(); let player = global.display.get_sound_player();

View File

@@ -115,7 +115,7 @@ var NotificationsBox = GObject.registerClass({
box.add_child(textBox); box.add_child(textBox);
let title = new St.Label({ let title = new St.Label({
text: source.title, text: source.title.replace(/\n/g, ' '),
style_class: 'unlock-dialog-notification-label', style_class: 'unlock-dialog-notification-label',
}); });
textBox.add(title); textBox.add(title);
@@ -129,9 +129,10 @@ var NotificationsBox = GObject.registerClass({
let body = ''; let body = '';
if (n.bannerBodyText) { if (n.bannerBodyText) {
const bodyText = n.bannerBodyText.replace(/\n/g, ' ');
body = n.bannerBodyMarkup body = n.bannerBodyMarkup
? n.bannerBodyText ? bodyText
: GLib.markup_escape_text(n.bannerBodyText, -1); : GLib.markup_escape_text(bodyText, -1);
} }
let label = new St.Label({ style_class: 'unlock-dialog-notification-count-text' }); let label = new St.Label({ style_class: 'unlock-dialog-notification-count-text' });
@@ -760,7 +761,7 @@ var UnlockDialog = GObject.registerClass({
} }
_escape() { _escape() {
if (this.allowCancel) if (this._authPrompt && this.allowCancel)
this._authPrompt.cancel(); this._authPrompt.cancel();
} }

View File

@@ -57,11 +57,11 @@ var WindowAttentionHandler = class {
var WindowAttentionSource = GObject.registerClass( var WindowAttentionSource = GObject.registerClass(
class WindowAttentionSource extends MessageTray.Source { class WindowAttentionSource extends MessageTray.Source {
_init(app, window) { _init(app, window) {
super._init(app.get_name());
this._window = window; this._window = window;
this._app = app; this._app = app;
super._init(app.get_name());
this.signalIDs = []; this.signalIDs = [];
this.signalIDs.push(this._window.connect('notify::demands-attention', this.signalIDs.push(this._window.connect('notify::demands-attention',
this._sync.bind(this))); this._sync.bind(this)));

View File

@@ -924,6 +924,8 @@ var WindowManager = class {
return true; return true;
}); });
global.display.connect('x11-display-closing', () => { global.display.connect('x11-display-closing', () => {
if (!Meta.is_wayland_compositor())
return;
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail'); Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
IBusManager.getIBusManager().restartDaemon(); IBusManager.getIBusManager().restartDaemon();
}); });

View File

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

View File

@@ -226,4 +226,4 @@ globals:
printerr: readonly printerr: readonly
window: readonly window: readonly
parserOptions: parserOptions:
ecmaVersion: 2017 ecmaVersion: 2019

View File

@@ -17,7 +17,6 @@ rules:
overrides: overrides:
- files: js/** - files: js/**
excludedFiles: excludedFiles:
- js/extensionPrefs/*
- js/portalHelper/* - js/portalHelper/*
globals: globals:
global: readonly global: readonly
@@ -25,3 +24,8 @@ overrides:
C_: readonly C_: readonly
N_: readonly N_: readonly
ngettext: readonly ngettext: readonly
- files: subprojects/extensions-app/js/**
globals:
_: readonly
C_: readonly
N_: readonly

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c', project('gnome-shell', 'c',
version: '3.36.0', version: '3.36.1',
meson_version: '>= 0.47.0', meson_version: '>= 0.47.0',
license: 'GPLv2+' license: 'GPLv2+'
) )
@@ -58,6 +58,7 @@ desktopdir = join_paths(datadir, 'applications')
icondir = join_paths(datadir, 'icons') icondir = join_paths(datadir, 'icons')
ifacedir = join_paths(datadir, 'dbus-1', 'interfaces') ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
localedir = join_paths(datadir, 'locale') localedir = join_paths(datadir, 'locale')
metainfodir = join_paths(datadir, 'metainfo')
portaldir = join_paths(datadir, 'xdg-desktop-portal', 'portals') portaldir = join_paths(datadir, 'xdg-desktop-portal', 'portals')
schemadir = join_paths(datadir, 'glib-2.0', 'schemas') schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
servicedir = join_paths(datadir, 'dbus-1', 'services') servicedir = join_paths(datadir, 'dbus-1', 'services')
@@ -114,12 +115,8 @@ if get_option('networkmanager')
nm_deps += dependency('libnm', version: nm_req) nm_deps += dependency('libnm', version: nm_req)
nm_deps += dependency('libsecret-1', version: secret_req) nm_deps += dependency('libsecret-1', version: secret_req)
vpndir = nm_deps[0].get_pkgconfig_variable('vpnservicedir')
have_networkmanager = true have_networkmanager = true
else else
vpndir = prefix
have_networkmanager = false have_networkmanager = false
endif endif
@@ -142,6 +139,7 @@ endif
mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir') mutter_typelibdir = mutter_dep.get_pkgconfig_variable('typelibdir')
python = find_program('python3') python = find_program('python3')
sassc = find_program('sassc') sassc = find_program('sassc')
gjs = find_program('gjs')
cc = meson.get_compiler('c') cc = meson.get_compiler('c')
@@ -244,12 +242,39 @@ libgvc = subproject('gvc',
) )
libgvc_gir = libgvc.get_variable('libgvc_gir') libgvc_gir = libgvc.get_variable('libgvc_gir')
if get_option('extensions_tool') libshew = subproject('shew',
subproject('extensions-tool',
default_options: [ default_options: [
'man=@0@'.format(get_option('man')),
'package_name=@0@'.format(meson.project_name()), 'package_name=@0@'.format(meson.project_name()),
] ]
)
libshew_version = libshew.get_variable('package_version')
assert(libshew_version == meson.project_version(),
'shew version does not match project version')
if get_option('extensions_tool')
extension_tool = subproject('extensions-tool',
default_options: [
'package_name=@0@'.format(meson.project_name()),
]
)
extension_tool_version = extension_tool.get_variable('package_version')
assert(extension_tool_version == meson.project_version(),
'extension-tool version does not match project version'
)
endif
if get_option('extensions_app')
extensions_app = subproject('extensions-app',
default_options: [
'package_name=@0@'.format(meson.project_name()),
]
)
extensions_app_version = extensions_app.get_variable('package_version')
assert(extensions_app_version == meson.project_version(),
'Extensions app version does not match project version'
) )
endif endif
@@ -268,3 +293,36 @@ if get_option('gtk_doc')
endif endif
meson.add_install_script('meson/postinstall.py') meson.add_install_script('meson/postinstall.py')
summary_options = {
'networkmanager': get_option('networkmanager'),
'systemd': get_option('systemd'),
'extensions_app': get_option('extensions_app'),
'extensions_tool': get_option('extensions_tool'),
'man': get_option('man'),
'gtk_doc': get_option('gtk_doc'),
}
summary_build = {
'buildtype': get_option('buildtype'),
'debug': get_option('debug'),
}
summary_dirs = {
'prefix': get_option('prefix'),
'bindir': get_option('bindir'),
'libdir': get_option('libdir'),
'libexecdir': get_option('libexecdir'),
'datadir': get_option('datadir'),
'sysconfdir': get_option('sysconfdir'),
}
if get_option('man')
summary_dirs += { 'mandir': get_option('mandir') }
endif
if meson.version().version_compare('>= 0.53.0')
summary(summary_dirs, section: 'Directories')
summary(summary_build, section: 'Build Configuration')
summary(summary_options, section: 'Build Options')
endif

View File

@@ -4,6 +4,12 @@ option('extensions_tool',
description: 'Build gnome-extensions CLI tool' description: 'Build gnome-extensions CLI tool'
) )
option('extensions_app',
type: 'boolean',
value: true,
description: 'Build gnome-extensions GUI application'
)
option('gtk_doc', option('gtk_doc',
type: 'boolean', type: 'boolean',
value: false, value: false,

View File

@@ -10,6 +10,7 @@ bn_IN
bs bs
ca ca
ca@valencia ca@valencia
ckb
cs cs
da da
de de

View File

@@ -1,13 +1,10 @@
# List of source files containing translatable strings. # List of source files containing translatable strings.
# Please keep this file sorted alphabetically. # Please keep this file sorted alphabetically.
data/50-gnome-shell-system.xml data/50-gnome-shell-system.xml
data/org.gnome.Extensions.desktop.in.in
data/org.gnome.Shell.desktop.in.in data/org.gnome.Shell.desktop.in.in
data/org.gnome.shell.gschema.xml.in data/org.gnome.shell.gschema.xml.in
data/org.gnome.Shell.PortalHelper.desktop.in.in data/org.gnome.Shell.PortalHelper.desktop.in.in
js/extensionPrefs/main.js js/dbusServices/extensions/ui/extension-prefs-dialog.ui
js/extensionPrefs/ui/extension-row.ui
js/extensionPrefs/ui/extensions-window.ui
js/gdm/authPrompt.js js/gdm/authPrompt.js
js/gdm/loginDialog.js js/gdm/loginDialog.js
js/gdm/util.js js/gdm/util.js
@@ -81,6 +78,11 @@ src/shell-global.c
src/shell-keyring-prompt.c src/shell-keyring-prompt.c
src/shell-polkit-authentication-agent.c src/shell-polkit-authentication-agent.c
src/shell-util.c src/shell-util.c
subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in
subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in
subprojects/extensions-app/js/main.js
subprojects/extensions-app/data/ui/extension-row.ui
subprojects/extensions-app/data/ui/extensions-window.ui
subprojects/extensions-tool/src/command-create.c subprojects/extensions-tool/src/command-create.c
subprojects/extensions-tool/src/command-disable.c subprojects/extensions-tool/src/command-disable.c
subprojects/extensions-tool/src/command-enable.c subprojects/extensions-tool/src/command-enable.c

250
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-02-25 23:44+0000\n" "POT-Creation-Date: 2020-03-21 18:07+0000\n"
"PO-Revision-Date: 2020-02-18 20:44+0100\n" "PO-Revision-Date: 2020-02-18 20:44+0100\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"
@@ -45,15 +45,6 @@ msgstr "Mostra totes les aplicacions"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Obre el menú d'aplicació" msgstr "Obre el menú d'aplicació"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensions"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configureu les extensions del GNOME Shell"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
@@ -200,7 +191,7 @@ msgid ""
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 "
"encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya per " "encriptat o un sistema de fitxers remot. Si es pot desar la contrasenya per "
"utilitzar-lo en el futur, es mostrarà la casella de selecció «Recorda la " "a utilitzar-la en el futur, es mostrarà la casella de selecció «Recorda la "
"contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella " "contrasenya». Aquesta clau estableix el valor per defecte d'aquesta casella "
"de selecció." "de selecció."
@@ -237,48 +228,48 @@ msgstr ""
#: data/org.gnome.shell.gschema.xml.in:119 #: data/org.gnome.shell.gschema.xml.in:119
msgid "Keybinding to open the application menu" msgid "Keybinding to open the application menu"
msgstr "Vinculació per obrir el menú d'aplicació" msgstr "Vinculació per a obrir el menú d'aplicació"
#: data/org.gnome.shell.gschema.xml.in:120 #: data/org.gnome.shell.gschema.xml.in:120
msgid "Keybinding to open the application menu." msgid "Keybinding to open the application menu."
msgstr "La vinculació per obrir el menú d'aplicació." msgstr "La vinculació per a obrir el menú d'aplicació."
#: data/org.gnome.shell.gschema.xml.in:126 #: data/org.gnome.shell.gschema.xml.in:126
msgid "Keybinding to open the “Show Applications” view" msgid "Keybinding to open the “Show Applications” view"
msgstr "Vinculació de tecles per obrir la vista «Mostra les aplicacions»" msgstr "Vinculació de tecles per a obrir la vista «Mostra les aplicacions»"
#: data/org.gnome.shell.gschema.xml.in:127 #: data/org.gnome.shell.gschema.xml.in:127
msgid "" msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview." "Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr "" msgstr ""
"Vinculació de tecles per obrir la vista «Mostra les aplicacions» de les " "Vinculació de tecles per a obrir la vista «Mostra les aplicacions» de les "
"activitats de la vista general." "activitats de la vista general."
#: data/org.gnome.shell.gschema.xml.in:134 #: data/org.gnome.shell.gschema.xml.in:134
msgid "Keybinding to open the overview" msgid "Keybinding to open the overview"
msgstr "Vinculació per obrir la vista general" msgstr "Vinculació per a obrir la vista general"
#: data/org.gnome.shell.gschema.xml.in:135 #: data/org.gnome.shell.gschema.xml.in:135
msgid "Keybinding to open the Activities Overview." msgid "Keybinding to open the Activities Overview."
msgstr "Vinculació per obrir la vista general d'activitats." msgstr "Vinculació per a obrir la vista general d'activitats."
#: data/org.gnome.shell.gschema.xml.in:141 #: data/org.gnome.shell.gschema.xml.in:141
msgid "Keybinding to toggle the visibility of the notification list" msgid "Keybinding to toggle the visibility of the notification list"
msgstr "" msgstr ""
"La vinculació per commutar la visibilitat de la llista de notificacions" "La vinculació per a commutar la visibilitat de la llista de notificacions"
#: data/org.gnome.shell.gschema.xml.in:142 #: data/org.gnome.shell.gschema.xml.in:142
msgid "Keybinding to toggle the visibility of the notification list." msgid "Keybinding to toggle the visibility of the notification list."
msgstr "" msgstr ""
"La vinculació per commutar la visibilitat de la llista de notificacions." "La vinculació per a commutar la visibilitat de la llista de notificacions."
#: data/org.gnome.shell.gschema.xml.in:148 #: data/org.gnome.shell.gschema.xml.in:148
msgid "Keybinding to focus the active notification" msgid "Keybinding to focus the active notification"
msgstr "Vinculació per posar el focus a la notificació activa" msgstr "Vinculació per a posar el focus a la notificació activa"
#: data/org.gnome.shell.gschema.xml.in:149 #: data/org.gnome.shell.gschema.xml.in:149
msgid "Keybinding to focus the active notification." msgid "Keybinding to focus the active notification."
msgstr "Vinculació per posar el focus a la notificació activa." msgstr "Vinculació per a posar el focus a la notificació activa."
#: data/org.gnome.shell.gschema.xml.in:155 #: data/org.gnome.shell.gschema.xml.in:155
msgid "Switch to application 1" msgid "Switch to application 1"
@@ -415,32 +406,56 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Inici de sessió de xarxa" msgstr "Inici de sessió de xarxa"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:241
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensions"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:242
msgid "Manage your GNOME Extensions"
msgstr "Gestioneu les extensions del GNOME Shell"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Les extensions del GNOME gestiona les actualitzacions de les extensions, configurant "
"les preferències de l'extensió i suprimint o desactivant les extensions no desitjades."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configureu les extensions del GNOME Shell"
#: js/extensionPrefs/js/main.js:163
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "Voleu suprimir «%s»?" msgstr "Voleu suprimir «%s»?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:164
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
msgstr "" msgstr ""
"Si suprimiu una extensió, us cal tornar-la a baixar si voleu habilitar-la de " "Si suprimiu una extensió, us cal tornar-la a baixar si voleu habilitar-la de "
"nou." "nou"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135 #: js/extensionPrefs/js/main.js:167 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Cancel·la" msgstr "Cancel·la"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:168
msgid "Remove" msgid "Remove"
msgstr "Suprimeix" msgstr "Suprimeix"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:240
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
"Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>\n" "Siegfried-Angel Gevatter Pujals <rainct@ubuntu.com>\n"
@@ -448,15 +463,12 @@ msgstr ""
"Gil Forcada <gilforcada@guifi.net>\n" "Gil Forcada <gilforcada@guifi.net>\n"
"Jordi Mas i Hernàndez <jmas@softcatala.org>" "Jordi Mas i Hernàndez <jmas@softcatala.org>"
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:284
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Gestioneu les extensions del GNOME Shell"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Alguna cosa ha anat malament" msgstr "Alguna cosa ha anat malament"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:291
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -465,61 +477,61 @@ msgstr ""
"Hi ha un problema: no es poden mostrar els paràmetres per a aquesta " "Hi ha un problema: no es poden mostrar els paràmetres per a aquesta "
"extensió. Us recomanem que informeu del problema als autors de l'extensió." "extensió. Us recomanem que informeu del problema als autors de l'extensió."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:298
msgid "Technical Details" msgid "Technical Details"
msgstr "Detalls tècnics" msgstr "Detalls tècnics"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:333
msgid "Copy Error" msgid "Copy Error"
msgstr "Copia l'error" msgstr "Copia l'error"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:360
msgid "Homepage" msgid "Homepage"
msgstr "Pàgina d'inici" msgstr "Pàgina d'inici"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:361
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Visiteu la pàgina d'inici de l'extensió" msgstr "Visiteu la pàgina d'inici de l'extensió"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:478
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d extensió serà actualitzada la següent vegada que entreu." msgstr[0] "%d extensió serà actualitzada la següent vegada que entreu."
msgstr[1] "%d extensions seran actualitzades la següent vegada que entreu." msgstr[1] "%d extensions seran actualitzades la següent vegada que entreu."
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Descripció" msgstr "Descripció"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Versió" msgstr "Versió"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Autoria" msgstr "Autoria"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Lloc web" msgstr "Lloc web"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Suprimeix…" msgstr "Suprimeix…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Ajuda" msgstr "Ajuda"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "Quant a les extensions" msgstr "Quant a les extensions"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -527,11 +539,11 @@ msgstr ""
"Per visitar i afegir extensions, visiteu <a href=\"https://extensions.gnome." "Per visitar i afegir extensions, visiteu <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>." "org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Avís" msgstr "Avís"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -541,19 +553,19 @@ msgstr ""
"rendiment. Si us trobeu amb problemes amb el sistema, us recomanem " "rendiment. Si us trobeu amb problemes amb el sistema, us recomanem "
"inhabilitar totes les extensions." "inhabilitar totes les extensions."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Instal·lada manualment" msgstr "Instal·lada manualment"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Integrada" msgstr "Integrada"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "No hi ha cap extensió instal·lada" msgstr "No hi ha cap extensió instal·lada"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -561,15 +573,15 @@ msgstr ""
"No s'ha pogut obtenir la llista d'extensions instal·lades. Assegureu-vos que " "No s'ha pogut obtenir la llista d'extensions instal·lades. Assegureu-vos que "
"heu entrat al GNOME i torneu a provar-ho." "heu entrat al GNOME i torneu a provar-ho."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Surt…" msgstr "Surt…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Contrasenya" msgstr "Contrasenya"
@@ -592,8 +604,8 @@ msgstr "(p. ex. l'usuari o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Nom d'usuari" msgstr "Nom d'usuari"
@@ -845,44 +857,44 @@ msgstr "Denega l'accés"
msgid "Grant Access" msgid "Grant Access"
msgstr "Permet l'accés" msgstr "Permet l'accés"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Carpeta sense nom" msgstr "Carpeta sense nom"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Les aplicacions utilitzades freqüentment apareixeran aquí" msgstr "Les aplicacions utilitzades freqüentment apareixeran aquí"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Freqüent" msgstr "Freqüent"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Totes" msgstr "Totes"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Obre finestres" msgstr "Obre finestres"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Finestra nova" msgstr "Finestra nova"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Inicia usant una targeta gràfica dedicada" msgstr "Inicia usant una targeta gràfica dedicada"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 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:2515 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Afegeix als preferits" msgstr "Afegeix als preferits"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Mostra els detalls" msgstr "Mostra els detalls"
@@ -1030,30 +1042,30 @@ msgid "All Day"
msgstr "Tot el dia" msgstr "Tot el dia"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A %-d %B" msgstr "%A %-d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A %d %B de %Y" msgstr "%A %d %B de %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Cap notificació" msgstr "Cap notificació"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Cap cita" msgstr "Cap cita"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "No molesteu" msgstr "No molesteu"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Neteja-ho" msgstr "Neteja-ho"
@@ -1101,38 +1113,38 @@ msgstr ""
msgid "Open with %s" msgid "Open with %s"
msgstr "Obre amb %s" msgstr "Obre amb %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "També us podeu connectar prement el botó «WPS» del vostre encaminador." msgstr "També us podeu connectar prement el botó «WPS» del vostre encaminador."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Connecta" msgstr "Connecta"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Clau" msgstr "Clau"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Contrasenya de la clau privada" msgstr "Contrasenya de la clau privada"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identitat" msgstr "Identitat"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Servei" msgstr "Servei"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Cal autenticació" msgstr "Cal autenticació"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1141,42 +1153,42 @@ msgstr ""
"Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus " "Per accedir a la xarxa sense fil «%s» calen les contrasenyes o les claus "
"d'encriptació." "d'encriptació."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticació 802.1X amb fil" msgstr "Autenticació 802.1X amb fil"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Nom de la xarxa" msgstr "Nom de la xarxa"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticació DSL" msgstr "Autenticació DSL"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Cal que introduïu el codi PIN" msgstr "Cal que introduïu el codi PIN"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil" msgstr "Cal que introduïu el codi PIN del dispositiu de banda ampla mòbil"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Cal introduir una contrasenya per connectar-vos a «%s»." msgstr "Cal introduir una contrasenya per connectar-vos a «%s»."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de connexions de xarxa" msgstr "Gestor de connexions de xarxa"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "Contrasenya VPN" msgstr "Contrasenya VPN"
@@ -1246,23 +1258,23 @@ msgstr "Afegeix rellotges del món…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Rellotges del món" msgstr "Rellotges del món"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "El temps" msgstr "El temps"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:404
msgid "Select a location…" msgid "Select a location…"
msgstr "Trieu una ubicació…" msgstr "Trieu una ubicació…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:417
msgid "Loading…" msgid "Loading…"
msgstr "S'està carregant…" msgstr "S'està carregant…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:427
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Vés en línia per a informació sobre el temps" msgstr "Vés en línia per a informació sobre el temps"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:429
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "La informació sobre el temps no està disponible" msgstr "La informació sobre el temps no està disponible"
@@ -1418,15 +1430,15 @@ msgstr "%s (remot)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Instal·la" msgstr "Instal·la"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Instal·la l'extensió" msgstr "Instal·la l'extensió"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?" msgstr "Voleu baixar i instal·lar «%s» d'extensions.gnome.org?"
@@ -1586,11 +1598,11 @@ msgstr "Mostra el codi font"
msgid "Web Page" msgid "Web Page"
msgstr "Pàgina web" msgstr "Pàgina web"
#: js/ui/main.js:269 #: js/ui/main.js:274
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:270 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1598,11 +1610,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:276 #: js/ui/main.js:281
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:277 #: js/ui/main.js:282
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."
@@ -1634,7 +1646,7 @@ msgstr "Vista general"
#. characters. #. characters.
#: js/ui/overview.js:107 #: js/ui/overview.js:107
msgid "Type to search" msgid "Type to search"
msgstr "Teclegeu per començar la cerca" msgstr "Teclegeu per a cercar"
#: js/ui/padOsd.js:95 #: js/ui/padOsd.js:95
msgid "New shortcut…" msgid "New shortcut…"
@@ -1674,11 +1686,11 @@ msgstr "Premeu un botó per a configurar"
#: js/ui/padOsd.js:864 #: js/ui/padOsd.js:864
msgid "Press Esc to exit" msgid "Press Esc to exit"
msgstr "Premeu Esc per sortir" msgstr "Premeu Esc per a sortir"
#: js/ui/padOsd.js:867 #: js/ui/padOsd.js:867
msgid "Press any key to exit" msgid "Press any key to exit"
msgstr "Premeu qualsevol tecla per sortir" msgstr "Premeu qualsevol tecla per a sortir"
#: js/ui/panel.js:109 #: js/ui/panel.js:109
msgid "Quit" msgid "Quit"
@@ -2339,11 +2351,11 @@ msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:376 #: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Llisqueu amunt per desbloquejar" msgstr "Llisqueu amunt per a desbloquejar"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Feu clic o premeu una tecla per desbloquejar" msgstr "Feu clic o premeu una tecla per a desbloquejar"
#: js/ui/unlockDialog.js:549 #: js/ui/unlockDialog.js:549
msgid "Unlock Window" msgid "Unlock Window"
@@ -2468,19 +2480,19 @@ msgstr "Tanca"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Calendari de l'Evolution" msgstr "Calendari de l'Evolution"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Mostra la versió" msgstr "Mostra la versió"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada" msgstr "El mode que utilitzarà el GDM per a la pantalla d'entrada"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada" msgstr "Utilitza un mode específic, p. ex. «gdm» per la pantalla d'entrada"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Llista els modes possibles" msgstr "Llista els modes possibles"
@@ -2818,7 +2830,7 @@ msgstr "Instal·la un paquet d'extensió"
#: subprojects/extensions-tool/src/main.c:262 #: subprojects/extensions-tool/src/main.c:262
#, c-format #, c-format
msgid "Use “%s” to get detailed help.\n" msgid "Use “%s” to get detailed help.\n"
msgstr "Feu servir «%s» per obtenir ajuda detallada.\n" msgstr "Feu servir «%s» per a obtenir ajuda detallada.\n"
#. translators: #. translators:
#. * The number of sound outputs on a particular device #. * The number of sound outputs on a particular device

2619
po/ckb.po Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -11,16 +11,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-27 21:57+0000\n" "POT-Creation-Date: 2020-03-09 12:45+0000\n"
"PO-Revision-Date: 2020-03-06 17:24+0100\n" "PO-Revision-Date: 2020-03-09 14:56+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n" "Last-Translator: Daniel Rusek <mail@asciiwolf.com>\n"
"Language-Team: čeština <gnome-cs-list@gnome.org>\n" "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
"Language: cs\n" "Language: cs\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Gtranslator 2.91.7\n" "X-Generator: Poedit 2.3\n"
"X-Project-Style: gnome\n" "X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
@@ -514,9 +514,9 @@ msgid ""
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
"extensions." "extensions."
msgstr "" msgstr ""
"Rozšíření mohou způsobit problémy se systémem, včetně výkonnostních problémů. " "Rozšíření mohou způsobit problémy se systémem, včetně výkonnostních "
"Pokud ve svém systému narazíte na problémy, doporučujeme zkusit zakázat " "problémů. Pokud ve svém systému narazíte na problémy, doporučujeme zkusit "
"všechna rozšíření." "zakázat všechna rozšíření."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed" msgid "Manually Installed"
@@ -661,7 +661,7 @@ msgstr ""
"otočení;zamknutí orientace;uzamknutí otočení;uzamknutí orientace;zamčení " "otočení;zamknutí orientace;uzamknutí otočení;uzamknutí orientace;zamčení "
"otočení;zamčení orientace;uzamčení otočení;uzamčení orientace;odemknout " "otočení;zamčení orientace;uzamčení otočení;uzamčení orientace;odemknout "
"otočení;odemknout orientaci;odemčít otočení;odemčít orientaci;odemknutí " "otočení;odemknout orientaci;odemčít otočení;odemčít orientaci;odemknutí "
"otočení;odemknutí orientace;odemčení otočení; odemčení orientace;obrazovka;" "otočení;odemknutí orientace;odemčení otočení;odemčení orientace;obrazovka;"
"otočení;orientace;" "otočení;orientace;"
#: js/misc/systemActions.js:251 #: js/misc/systemActions.js:251
@@ -840,44 +840,44 @@ msgstr "Zamítnout přístup"
msgid "Grant Access" msgid "Grant Access"
msgstr "Schválit přístup" msgstr "Schválit přístup"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:910
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Nepojmenovaná složka" msgstr "Nepojmenovaná složka"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:933
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Zde se objeví často používané aplikace" msgstr "Zde se objeví často používané aplikace"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1068
msgid "Frequent" msgid "Frequent"
msgstr "Časté" msgstr "Časté"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1075
msgid "All" msgid "All"
msgstr "Všechny" msgstr "Všechny"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2458 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Otevřená okna" msgstr "Otevřená okna"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2478 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Nové okno" msgstr "Nové okno"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2489
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Spustit pomocí vyhrazené grafické karty" msgstr "Spustit pomocí vyhrazené grafické karty"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2517 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených" msgstr "Odstranit z oblíbených"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2523
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené" msgstr "Přidat mezi oblíbené"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2533 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Zobrazit podrobnosti" msgstr "Zobrazit podrobnosti"
@@ -1115,7 +1115,7 @@ msgstr "Heslo soukromého klíče"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:267
msgid "Identity" msgid "Identity"
msgstr "Indentita" msgstr "Identita"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:281
msgid "Service" msgid "Service"
@@ -1424,7 +1424,7 @@ msgstr "Nainstalovat"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:175
msgid "Install Extension" msgid "Install Extension"
msgstr "Nainstalace rozšíření" msgstr "Instalace rozšíření"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:176
#, javascript-format #, javascript-format
@@ -1437,7 +1437,7 @@ msgstr "Jsou dostupné aktualizace rozšíření"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Aktualizace rošíření jsou připravené k instalaci." msgstr "Aktualizace rozšíření jsou připravené k instalaci."
#: js/ui/inhibitShortcutsDialog.js:79 #: js/ui/inhibitShortcutsDialog.js:79
msgid "Allow inhibiting shortcuts" msgid "Allow inhibiting shortcuts"
@@ -1586,15 +1586,16 @@ msgstr "Webová stránka"
#: js/ui/main.js:269 #: js/ui/main.js:269
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Přihlášen jako privilegovaný uživatel" msgstr "Přihlášeni jako privilegovaný uživatel"
#: js/ui/main.js:270 #: js/ui/main.js:270
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
msgstr "" msgstr ""
"Spouštění sezení pod privilegovaným uživatelem byste se měli z bezpečnostních " "Spouštění sezení pod privilegovaným uživatelem byste se měli z "
"důvodů vyhýbat. Pokud je to možné, přihlaste se jako běžný uživatel." "bezpečnostních důvodů vyhýbat. Pokud je to možné, přihlaste se jako běžný "
"uživatel."
#: js/ui/main.js:276 #: js/ui/main.js:276
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
@@ -2480,7 +2481,7 @@ msgstr "Režim použitý GDM pro přihlašovací obrazovku"
#: src/main.c:472 #: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“." msgstr "Použít pro přihlašovací obrazovku zadaný režim, např. „gdm“"
#: src/main.c:478 #: src/main.c:478
msgid "List possible modes" msgid "List possible modes"

1769
po/de.po

File diff suppressed because it is too large Load Diff

269
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-02-17 22:27+0000\n" "POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-02-18 11:06+0100\n" "PO-Revision-Date: 2020-03-20 12:27+0100\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"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.34.0\n" "X-Generator: Gtranslator 3.36.0\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
msgid "System" msgid "System"
@@ -44,15 +44,6 @@ msgstr "Mostrar todas las aplicaciones"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Abrir el menú de la aplicación" msgstr "Abrir el menú de la aplicación"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensiones"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar las extensiones de GNOME Shell"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
@@ -410,12 +401,36 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Inicio de sesión de la red" msgstr "Inicio de sesión de la red"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:242
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensiones"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Gestionar sus extensiones de GNOME Shell"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Extensiones de GNOME gestiona las actualizaciones de las extensiones, "
"configurando sus preferencias y quitando o desactivando las que no quiera."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configurar las extensiones de GNOME Shell"
#: js/extensionPrefs/js/main.js:164
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "¿Quitar «%s»?" msgstr "¿Quitar «%s»?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:165
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
@@ -423,34 +438,31 @@ msgstr ""
"Si quita la extensión necesitará volver a descargarla si quiere activarla de " "Si quita la extensión necesitará volver a descargarla si quiere activarla de "
"nuevo" "nuevo"
#: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57 #: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:169
msgid "Remove" msgid "Remove"
msgstr "Quitar" msgstr "Quitar"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:241
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
"Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2020\n" "Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2020\n"
"Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011\n" "Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011\n"
"Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011" "Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011"
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:285
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Gestionar sus extensiones de GNOME Shell"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Algo ha fallado" msgstr "Algo ha fallado"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:292
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -459,61 +471,61 @@ msgstr ""
"Ha habido un problema: no se puede mostrar la configuración para esta " "Ha habido un problema: no se puede mostrar la configuración para esta "
"extensión. Se recomienda que informe del error a los autores de la extensión." "extensión. Se recomienda que informe del error a los autores de la extensión."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:299
msgid "Technical Details" msgid "Technical Details"
msgstr "Detalles técnicos" msgstr "Detalles técnicos"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:334
msgid "Copy Error" msgid "Copy Error"
msgstr "Copiar error" msgstr "Copiar error"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Página web" msgstr "Página web"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Visitar la página web de la extensión" msgstr "Visitar la página web de la extensión"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:479
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
msgstr[0] "la próxima vez que inicie sesión se actualizará %d extensión" msgstr[0] "la próxima vez que inicie sesión se actualizará %d extensión"
msgstr[1] "la próxima vez que inicie sesión se actualizarán %d extensiones" msgstr[1] "la próxima vez que inicie sesión se actualizarán %d extensiones"
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Descripción" msgstr "Descripción"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Versión" msgstr "Versión"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Autor" msgstr "Autor"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Página web" msgstr "Página web"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Quitar…" msgstr "Quitar…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Ayuda" msgstr "Ayuda"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "Acerca de extensiones" msgstr "Acerca de extensiones"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -521,11 +533,11 @@ msgstr ""
"Para buscar y añadir extensiones visite <a href=\"https://extensions.gnome." "Para buscar y añadir extensiones visite <a href=\"https://extensions.gnome."
"org\">extensions.gnome.org</a>." "org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Advertencia" msgstr "Advertencia"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -535,19 +547,19 @@ msgstr ""
"rendimiento. Si tiene problemas con sus sistema se recomienda desactivar " "rendimiento. Si tiene problemas con sus sistema se recomienda desactivar "
"todas las extensiones." "todas las extensiones."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Instalada manualmente" msgstr "Instalada manualmente"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Integrada" msgstr "Integrada"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "No hay extensiones instaladas" msgstr "No hay extensiones instaladas"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -555,15 +567,15 @@ msgstr ""
"No es posible obtener la lista de extensiones instaladas. asegúrese de que " "No es posible obtener la lista de extensiones instaladas. asegúrese de que "
"ha iniciado sesión en GNOME e inténtelo de nuevo." "ha iniciado sesión en GNOME e inténtelo de nuevo."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Cerrar la sesión…" msgstr "Cerrar la sesión…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Contraseña" msgstr "Contraseña"
@@ -586,8 +598,8 @@ msgstr "(ej., usuario o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Nombre de usuario" msgstr "Nombre de usuario"
@@ -838,44 +850,44 @@ msgstr "Denegar acceso"
msgid "Grant Access" msgid "Grant Access"
msgstr "Conceder acceso" msgstr "Conceder acceso"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Carpeta sin nombre" msgstr "Carpeta sin nombre"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí" msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Frecuentes" msgstr "Frecuentes"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Todas" msgstr "Todas"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Ventanas abiertas" msgstr "Ventanas abiertas"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Ventana nueva" msgstr "Ventana nueva"
#: js/ui/appDisplay.js:2485 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Lanzar usando la tarjeta gráfica dedicada" msgstr "Lanzar usando la tarjeta gráfica dedicada"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 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:2519 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Añadir a los favoritos" msgstr "Añadir a los favoritos"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Mostrar detalles" msgstr "Mostrar detalles"
@@ -1023,30 +1035,30 @@ msgid "All Day"
msgstr "Todo el día" msgstr "Todo el día"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %d de %B de %Y" msgstr "%A, %d de %B de %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "No hay notificaciones" msgstr "No hay notificaciones"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "No hay eventos" msgstr "No hay eventos"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "No molestar" msgstr "No molestar"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Limpiar" msgstr "Limpiar"
@@ -1093,39 +1105,39 @@ msgstr "La versión de udisks instalada no soporta la configuración PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir con %s" msgstr "Abrir con %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"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:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Conectar" msgstr "Conectar"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Clave" msgstr "Clave"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Contraseña de la clave privada" msgstr "Contraseña de la clave privada"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identidad" msgstr "Identidad"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Servicio" msgstr "Servicio"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Autenticación requerida" msgstr "Autenticación requerida"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1134,42 +1146,42 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red " "Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»." "inalámbrica «%s»."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada" msgstr "Autenticación 802.1X cableada"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Nombre de la red" msgstr "Nombre de la red"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticación DSL" msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Código PIN requerido" msgstr "Código PIN requerido"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Se requiere una contraseña para conectarse a «%s»." msgstr "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de la red" msgstr "Gestor de la red"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "Contraseña de la VPN" msgstr "Contraseña de la VPN"
@@ -1239,23 +1251,23 @@ msgstr "Añadir relojes del mundo…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Relojes del mundo" msgstr "Relojes del mundo"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:279
msgid "Weather" msgid "Weather"
msgstr "Meteorología" msgstr "Meteorología"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:394
msgid "Select a location…" msgid "Select a location…"
msgstr "Seleccionar ubicación…" msgstr "Seleccionar ubicación…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:407
msgid "Loading…" msgid "Loading…"
msgstr "Cargando…" msgstr "Cargando…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:417
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Conectarse para obtener la información meteorológica" msgstr "Conectarse para obtener la información meteorológica"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "La información meteorológica no está disponible actualmente." msgstr "La información meteorológica no está disponible actualmente."
@@ -1408,15 +1420,15 @@ msgstr "%s (remoto)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (consola)" msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Instalar" msgstr "Instalar"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Instalar extensión" msgstr "Instalar extensión"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
@@ -1526,59 +1538,59 @@ msgstr "Dejar apagado"
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Configuración de región e idioma" msgstr "Configuración de región e idioma"
#: js/ui/lookingGlass.js:659 #: js/ui/lookingGlass.js:665
msgid "No extensions installed" msgid "No extensions installed"
msgstr "No hay extensiones instaladas" msgstr "No hay extensiones instaladas"
#. Translators: argument is an extension UUID. #. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714 #: js/ui/lookingGlass.js:720
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s no ha generado ningún error." msgstr "%s no ha generado ningún error."
#: js/ui/lookingGlass.js:720 #: js/ui/lookingGlass.js:726
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Ocultar errores" msgstr "Ocultar errores"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789 #: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors" msgid "Show Errors"
msgstr "Mostrar errores" msgstr "Mostrar errores"
#: js/ui/lookingGlass.js:733 #: js/ui/lookingGlass.js:739
msgid "Enabled" msgid "Enabled"
msgstr "Activado" msgstr "Activado"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892 #: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled" msgid "Disabled"
msgstr "Desactivado" msgstr "Desactivado"
#: js/ui/lookingGlass.js:738 #: js/ui/lookingGlass.js:744
msgid "Error" msgid "Error"
msgstr "Error" msgstr "Error"
#: js/ui/lookingGlass.js:740 #: js/ui/lookingGlass.js:746
msgid "Out of date" msgid "Out of date"
msgstr "Caducado" msgstr "Caducado"
#: js/ui/lookingGlass.js:742 #: js/ui/lookingGlass.js:748
msgid "Downloading" msgid "Downloading"
msgstr "Descargando" msgstr "Descargando"
#: js/ui/lookingGlass.js:771 #: js/ui/lookingGlass.js:777
msgid "View Source" msgid "View Source"
msgstr "Ver fuente" msgstr "Ver fuente"
#: js/ui/lookingGlass.js:780 #: js/ui/lookingGlass.js:786
msgid "Web Page" msgid "Web Page"
msgstr "Página web" msgstr "Página web"
#: js/ui/main.js:267 #: js/ui/main.js:274
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:268 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1586,11 +1598,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:274 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Pantalla de bloqueo desactivada" msgstr "Pantalla de bloqueo desactivada"
#: js/ui/main.js:275 #: js/ui/main.js:282
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."
@@ -1678,12 +1690,12 @@ msgstr "Salir"
msgid "Activities" msgid "Activities"
msgstr "Actividades" msgstr "Actividades"
#: js/ui/panel.js:707 #: js/ui/panel.js:713
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistema" msgstr "Sistema"
#: js/ui/panel.js:820 #: js/ui/panel.js:826
msgid "Top Bar" msgid "Top Bar"
msgstr "Barra superior" msgstr "Barra superior"
@@ -1904,11 +1916,11 @@ msgstr "Pulsación secundaria"
msgid "Dwell Click" msgid "Dwell Click"
msgstr "Pulsación al posarse" msgstr "Pulsación al posarse"
#: js/ui/status/keyboard.js:825 #: js/ui/status/keyboard.js:826
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
#: js/ui/status/keyboard.js:847 #: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado" msgstr "Mostrar la distribución del teclado"
@@ -2320,24 +2332,26 @@ msgstr "Sólo la integrada"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:372 #: js/ui/unlockDialog.js:370
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A, %d de %B" msgstr "%A, %d de %B"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Deslizar para desbloquear" msgstr "Deslizar para desbloquear"
#: js/ui/unlockDialog.js:379 #: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Pulse con el ratón o un tecla para desbloquear" msgstr "Pulse con el ratón o un tecla para desbloquear"
#: js/ui/unlockDialog.js:552 #: js/ui/unlockDialog.js:549
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Desbloquear ventana" msgstr "Desbloquear ventana"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Iniciar sesión como otro usuario"
#: js/ui/viewSelector.js:181 #: js/ui/viewSelector.js:181
msgid "Applications" msgid "Applications"
msgstr "Aplicaciones" msgstr "Aplicaciones"
@@ -2453,21 +2467,21 @@ msgstr "Cerrar"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Calendario de Evolution" msgstr "Calendario de Evolution"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Imprimir versión" msgstr "Imprimir versión"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para la pantalla de inicio" msgstr "Modo usado por GDM para la pantalla de inicio"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de " "Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de "
"sesión" "sesión"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Listar los modos posibles" msgstr "Listar los modos posibles"
@@ -2847,9 +2861,6 @@ msgstr "Sonidos del sistema"
#~ msgid "Sign In" #~ msgid "Sign In"
#~ msgstr "Iniciar sesión" #~ msgstr "Iniciar sesión"
#~ msgid "Log in as another user"
#~ msgstr "Iniciar sesión como otro usuario"
#~ msgid "%A, %B %d" #~ msgid "%A, %B %d"
#~ msgstr "%A, %d de %B" #~ msgstr "%A, %d de %B"

670
po/eu.po

File diff suppressed because it is too large Load Diff

505
po/fa.po

File diff suppressed because it is too large Load Diff

485
po/fi.po
View File

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

272
po/fr.po
View File

@@ -21,16 +21,16 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master fr\n" "Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n" "POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-02-22 12:16+0100\n" "PO-Revision-Date: 2020-03-19 21:59+0100\n"
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n" "Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n" "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr_FR\n" "Language: fr_FR\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Gtranslator 3.34.0\n" "X-Generator: Poedit 2.3\n"
#: data/50-gnome-shell-system.xml:6 #: data/50-gnome-shell-system.xml:6
msgid "System" msgid "System"
@@ -56,15 +56,6 @@ msgstr "Afficher toutes les applications"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Ouvrir le menu de lapplication" msgstr "Ouvrir le menu de lapplication"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensions"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configurer les extensions Shell de GNOME"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "Shell de GNOME" msgstr "Shell de GNOME"
@@ -424,12 +415,37 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Identification réseau" msgstr "Identification réseau"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:242
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Extensions"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Gérer vos extensions GNOME"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Extensions de GNOME gère la mise à jour des extensions, la configuration des "
"préférences des extensions et la suppression ou la désactivation des "
"extensions non désirées."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configurer les extensions Shell de GNOME"
#: js/extensionPrefs/js/main.js:164
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "Enlever « %s » ?" msgstr "Enlever « %s » ?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:165
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
@@ -437,19 +453,19 @@ msgstr ""
"Si vous enlevez cette extension, vous devrez recommencer son téléchargement " "Si vous enlevez cette extension, vous devrez recommencer son téléchargement "
"si vous souhaitez la réactiver plus tard" "si vous souhaitez la réactiver plus tard"
#: js/extensionPrefs/main.js:144 js/ui/audioDeviceSelection.js:57 #: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/components/networkAgent.js:107 js/ui/components/polkitAgent.js:139 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:165 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Annuler" msgstr "Annuler"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:169
msgid "Remove" msgid "Remove"
msgstr "Enlever" msgstr "Enlever"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:241
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
"Mathieu Bridon <bochecha@fedoraproject.org>\n" "Mathieu Bridon <bochecha@fedoraproject.org>\n"
@@ -467,15 +483,12 @@ msgstr ""
"Claude Paroz <claude@2xlibre.net>\n" "Claude Paroz <claude@2xlibre.net>\n"
"Charles Monzat <charles.monzat@free.fr>" "Charles Monzat <charles.monzat@free.fr>"
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:285
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Gérer vos extensions GNOME"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Quelque chose sest mal passé" msgstr "Quelque chose sest mal passé"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:292
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -485,61 +498,61 @@ msgstr ""
"extension ne peuvent être affichés. Nous vous recommandons de signaler ce " "extension ne peuvent être affichés. Nous vous recommandons de signaler ce "
"problème aux auteurs de lextension." "problème aux auteurs de lextension."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:299
msgid "Technical Details" msgid "Technical Details"
msgstr "Détails techniques" msgstr "Détails techniques"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:334
msgid "Copy Error" msgid "Copy Error"
msgstr "Copier lerreur" msgstr "Copier lerreur"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Site Web" msgstr "Site Web"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Visiter le site Web de lextension" msgstr "Visiter le site Web de lextension"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:479
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d extension sera mise à jour à la prochaine connexion." msgstr[0] "%d extension sera mise à jour à la prochaine connexion."
msgstr[1] "%d extensions seront mises à jour à la prochaine connexion." msgstr[1] "%d extensions seront mises à jour à la prochaine connexion."
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Description" msgstr "Description"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Version" msgstr "Version"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Auteur" msgstr "Auteur"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Site Web" msgstr "Site Web"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Enlever…" msgstr "Enlever…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Aide" msgstr "Aide"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "À propos des extensions" msgstr "À propos des extensions"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -547,11 +560,11 @@ msgstr ""
"Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions." "Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>." "gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Avertissement" msgstr "Avertissement"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -561,19 +574,19 @@ msgstr ""
"des performances. Si vous pensez être dans ce cas, il est recommandé de " "des performances. Si vous pensez être dans ce cas, il est recommandé de "
"désactiver toutes les extensions." "désactiver toutes les extensions."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Installée manuellement" msgstr "Installée manuellement"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Intégrée" msgstr "Intégrée"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "Aucune extension installée" msgstr "Aucune extension installée"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -582,15 +595,15 @@ msgstr ""
"extensions installées. Vérifiez que vous êtes bien connecté à GNOME et " "extensions installées. Vérifiez que vous êtes bien connecté à GNOME et "
"essayez encore une fois." "essayez encore une fois."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Fermer la session…" msgstr "Fermer la session…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Mot de passe" msgstr "Mot de passe"
@@ -613,8 +626,8 @@ msgstr "(par ex. utilisateur ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Nom dutilisateur" msgstr "Nom dutilisateur"
@@ -866,44 +879,44 @@ msgstr "Refuser laccès"
msgid "Grant Access" msgid "Grant Access"
msgstr "Accorder laccès" msgstr "Accorder laccès"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Dossier sans nom" msgstr "Dossier sans nom"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Les applications fréquemment utilisées apparaîtront ici" msgstr "Les applications fréquemment utilisées apparaîtront ici"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Fréquemment utilisées" msgstr "Fréquemment utilisées"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Toutes" msgstr "Toutes"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Fenêtres ouvertes" msgstr "Fenêtres ouvertes"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Nouvelle fenêtre" msgstr "Nouvelle fenêtre"
#: js/ui/appDisplay.js:2485 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Démarrer en utilisant la carte graphique dédiée" msgstr "Démarrer en utilisant la carte graphique dédiée"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Enlever des favoris" msgstr "Enlever des favoris"
#: js/ui/appDisplay.js:2519 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Ajouter aux favoris" msgstr "Ajouter aux favoris"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Afficher les détails" msgstr "Afficher les détails"
@@ -1066,30 +1079,30 @@ msgid "All Day"
msgstr "Journée" msgstr "Journée"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A %-d %B" msgstr "%A %-d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A %-d %B, %Y" msgstr "%A %-d %B, %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Aucune notification" msgstr "Aucune notification"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Aucun évènement" msgstr "Aucun évènement"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Ne pas déranger" msgstr "Ne pas déranger"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Effacer" msgstr "Effacer"
@@ -1136,40 +1149,40 @@ msgstr "La version installée de udisks ne gère pas le réglage PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Ouvrir avec %s" msgstr "Ouvrir avec %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Vous pouvez également vous connecter en appuyant sur le bouton « WPS » sur " "Vous pouvez également vous connecter en appuyant sur le bouton « WPS » sur "
"votre routeur." "votre routeur."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Se connecter" msgstr "Se connecter"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Clé" msgstr "Clé"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Mot de passe de la clé privée" msgstr "Mot de passe de la clé privée"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identité" msgstr "Identité"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Service" msgstr "Service"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Authentification nécessaire" msgstr "Authentification nécessaire"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1178,42 +1191,42 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau " "Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »." "sans fil « %s »."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X" msgstr "Authentification filaire 802.1X"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Nom du réseau" msgstr "Nom du réseau"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Authentification DSL" msgstr "Authentification DSL"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Code PIN requis" msgstr "Code PIN requis"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les connexions mobiles" msgstr "Un code PIN est nécessaire pour les connexions mobiles"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Un mot de passe est requis pour se connecter à « %s »." msgstr "Un mot de passe est requis pour se connecter à « %s »."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestionnaire de réseau" msgstr "Gestionnaire de réseau"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "Mot de passe VPN" msgstr "Mot de passe VPN"
@@ -1295,23 +1308,23 @@ msgstr "Ajouter des horloges locales…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Horloges locales" msgstr "Horloges locales"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:279
msgid "Weather" msgid "Weather"
msgstr "Météo" msgstr "Météo"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:394
msgid "Select a location…" msgid "Select a location…"
msgstr "Choisir un emplacement…" msgstr "Choisir un emplacement…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:407
msgid "Loading…" msgid "Loading…"
msgstr "Chargement…" msgstr "Chargement…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:417
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Chercher les informations météorologiques en ligne" msgstr "Chercher les informations météorologiques en ligne"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Les informations météorologiques ne sont pas disponibles actuellement" msgstr "Les informations météorologiques ne sont pas disponibles actuellement"
@@ -1462,15 +1475,15 @@ msgstr "%s (distant)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (console)" msgstr "%s (console)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Installer" msgstr "Installer"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Installer lextension" msgstr "Installer lextension"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?" msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
@@ -1580,59 +1593,59 @@ msgstr "Laisser éteint"
msgid "Region & Language Settings" msgid "Region & Language Settings"
msgstr "Paramètres de langue et région" msgstr "Paramètres de langue et région"
#: js/ui/lookingGlass.js:659 #: js/ui/lookingGlass.js:665
msgid "No extensions installed" msgid "No extensions installed"
msgstr "Aucune extension installée" msgstr "Aucune extension installée"
#. Translators: argument is an extension UUID. #. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714 #: js/ui/lookingGlass.js:720
#, javascript-format #, javascript-format
msgid "%s has not emitted any errors." msgid "%s has not emitted any errors."
msgstr "%s na émis aucune erreur." msgstr "%s na émis aucune erreur."
#: js/ui/lookingGlass.js:720 #: js/ui/lookingGlass.js:726
msgid "Hide Errors" msgid "Hide Errors"
msgstr "Masquer les erreurs" msgstr "Masquer les erreurs"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789 #: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors" msgid "Show Errors"
msgstr "Afficher les erreurs" msgstr "Afficher les erreurs"
#: js/ui/lookingGlass.js:733 #: js/ui/lookingGlass.js:739
msgid "Enabled" msgid "Enabled"
msgstr "Activé" msgstr "Activé"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892 #: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled" msgid "Disabled"
msgstr "Désactivé" msgstr "Désactivé"
#: js/ui/lookingGlass.js:738 #: js/ui/lookingGlass.js:744
msgid "Error" msgid "Error"
msgstr "Erreur" msgstr "Erreur"
#: js/ui/lookingGlass.js:740 #: js/ui/lookingGlass.js:746
msgid "Out of date" msgid "Out of date"
msgstr "Périmé" msgstr "Périmé"
#: js/ui/lookingGlass.js:742 #: js/ui/lookingGlass.js:748
msgid "Downloading" msgid "Downloading"
msgstr "Téléchargement" msgstr "Téléchargement"
#: js/ui/lookingGlass.js:771 #: js/ui/lookingGlass.js:777
msgid "View Source" msgid "View Source"
msgstr "Afficher la source" msgstr "Afficher la source"
#: js/ui/lookingGlass.js:780 #: js/ui/lookingGlass.js:786
msgid "Web Page" msgid "Web Page"
msgstr "Page Web" msgstr "Page Web"
#: js/ui/main.js:267 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Connecté en tant quutilisateur privilégié" msgstr "Connecté en tant quutilisateur privilégié"
#: js/ui/main.js:268 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1641,11 +1654,11 @@ msgstr ""
"des raisons de sécurité. Si possible, connectez-vous comme utilisateur " "des raisons de sécurité. Si possible, connectez-vous comme utilisateur "
"normal." "normal."
#: js/ui/main.js:274 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Verrouillage décran désactivé" msgstr "Verrouillage décran désactivé"
#: js/ui/main.js:275 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "" msgstr ""
"Le verrouillage de lécran nécessite le gestionnaire daffichage GNOME." "Le verrouillage de lécran nécessite le gestionnaire daffichage GNOME."
@@ -1734,12 +1747,12 @@ msgstr "Quitter"
msgid "Activities" msgid "Activities"
msgstr "Activités" msgstr "Activités"
#: js/ui/panel.js:707 #: js/ui/panel.js:713
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Système" msgstr "Système"
#: js/ui/panel.js:820 #: js/ui/panel.js:826
msgid "Top Bar" msgid "Top Bar"
msgstr "Barre supérieure" msgstr "Barre supérieure"
@@ -1960,11 +1973,11 @@ msgstr "Clic secondaire"
msgid "Dwell Click" msgid "Dwell Click"
msgstr "Clic prolongé" msgstr "Clic prolongé"
#: js/ui/status/keyboard.js:825 #: js/ui/status/keyboard.js:826
msgid "Keyboard" msgid "Keyboard"
msgstr "Clavier" msgstr "Clavier"
#: js/ui/status/keyboard.js:847 #: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Afficher la disposition du clavier" msgstr "Afficher la disposition du clavier"
@@ -2377,24 +2390,26 @@ msgstr "Intégré seulement"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:372 #: js/ui/unlockDialog.js:370
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A %-d %B" msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:378 #: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Faire glisser vers le haut pour déverrouiller" msgstr "Faire glisser vers le haut pour déverrouiller"
#: js/ui/unlockDialog.js:379 #: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Cliquer ou appuyer sur une touche pour déverrouiller" msgstr "Cliquer ou appuyer sur une touche pour déverrouiller"
#: js/ui/unlockDialog.js:552 #: js/ui/unlockDialog.js:549
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Fenêtre de déverrouillage" msgstr "Fenêtre de déverrouillage"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Se connecter en tant quautre utilisateur"
#: js/ui/viewSelector.js:181 #: js/ui/viewSelector.js:181
msgid "Applications" msgid "Applications"
msgstr "Applications" msgstr "Applications"
@@ -2510,20 +2525,20 @@ msgstr "Fermer"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Agenda dEvolution" msgstr "Agenda dEvolution"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Afficher la version" msgstr "Afficher la version"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Mode utilisé par GDM pour lécran de connexion" msgstr "Mode utilisé par GDM pour lécran de connexion"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "" msgstr ""
"Utiliser un mode particulier, par ex. « gdm » pour lécran de connexion" "Utiliser un mode particulier, par ex. « gdm » pour lécran de connexion"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Lister les modes possibles" msgstr "Lister les modes possibles"
@@ -2917,9 +2932,6 @@ msgstr "Sons système"
#~ msgstr[0] "%d nouvelle notification" #~ msgstr[0] "%d nouvelle notification"
#~ msgstr[1] "%d nouvelles notifications" #~ msgstr[1] "%d nouvelles notifications"
#~ msgid "Log in as another user"
#~ msgstr "Se connecter en tant quautre utilisateur"
#~ msgid "Rename" #~ msgid "Rename"
#~ msgstr "Renommer" #~ msgstr "Renommer"

910
po/fur.po

File diff suppressed because it is too large Load Diff

2442
po/he.po

File diff suppressed because it is too large Load Diff

222
po/hr.po
View File

@@ -7,9 +7,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-02-27 21:57+0000\n" "POT-Creation-Date: 2020-03-21 18:07+0000\n"
"PO-Revision-Date: 2020-03-01 16:46+0100\n" "PO-Revision-Date: 2020-03-21 22:46+0100\n"
"Last-Translator: gogo <linux.hr@protonmail.com>\n" "Last-Translator: gogo <trebelnik2@gmail.com>\n"
"Language-Team: Croatian <hr@li.org>\n" "Language-Team: Croatian <hr@li.org>\n"
"Language: hr\n" "Language: hr\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@@ -43,15 +43,6 @@ msgstr "Prikaži sve aplikacije"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Otvori izbornik aplikacija" msgstr "Otvori izbornik aplikacija"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Proširenja"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Podesi proširenja GNOME ljuske"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME ljuska" msgstr "GNOME ljuska"
@@ -400,12 +391,36 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Mrežna prijava" msgstr "Mrežna prijava"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:241
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Proširenja"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:242
msgid "Manage your GNOME Extensions"
msgstr "Upravljajte svojim GNOME proširenjima"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"GNOME Proširenja rukuje nadopunama proširenja, podešavanjem osobitostima "
"proširenja i uklanjanjem ili onemogućavanjem neželjenih proširenja."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Podesi proširenja GNOME ljuske"
#: js/extensionPrefs/js/main.js:163
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "Ukloni “%s”?" msgstr "Ukloni “%s”?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:164
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
@@ -413,19 +428,19 @@ msgstr ""
"Ako uklonite ovo proširenje, morate se vratiti kako bi ga preuzeli i ponovno " "Ako uklonite ovo proširenje, morate se vratiti kako bi ga preuzeli i ponovno "
"omogućili" "omogućili"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135 #: js/extensionPrefs/js/main.js:167 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Odustani" msgstr "Odustani"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:168
msgid "Remove" msgid "Remove"
msgstr "Ukloni" msgstr "Ukloni"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:240
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
"Launchpad Contributions:\n" "Launchpad Contributions:\n"
@@ -440,15 +455,12 @@ msgstr ""
" Tomislav Krznar https://launchpad.net/~tomislav-krznar\n" " Tomislav Krznar https://launchpad.net/~tomislav-krznar\n"
" gogo https://launchpad.net/~trebelnik-stefina" " gogo https://launchpad.net/~trebelnik-stefina"
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:284
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Upravljajte svojim GNOME proširenjima"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Nešto je pošlo po krivu" msgstr "Nešto je pošlo po krivu"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:291
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -457,23 +469,23 @@ msgstr ""
"Nažalost došlo je do problema: postavke za ovo proširenje se ne mogu " "Nažalost došlo je do problema: postavke za ovo proširenje se ne mogu "
"prikazati. Preporučljivo je da problem prijavite autoru proširenja." "prikazati. Preporučljivo je da problem prijavite autoru proširenja."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:298
msgid "Technical Details" msgid "Technical Details"
msgstr "Tehničke pojedinosti" msgstr "Tehničke pojedinosti"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:333
msgid "Copy Error" msgid "Copy Error"
msgstr "Kopiraj grešku" msgstr "Kopiraj grešku"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:360
msgid "Homepage" msgid "Homepage"
msgstr "Naslovnica" msgstr "Naslovnica"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:361
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Posjetite naslovnicu proširenja" msgstr "Posjetite naslovnicu proširenja"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:478
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
@@ -481,38 +493,38 @@ msgstr[0] "%d proširenje će se nadopuniti pri sljedećoj prijavi."
msgstr[1] "%d proširenja će se nadopuniti pri sljedećoj prijavi." msgstr[1] "%d proširenja će se nadopuniti pri sljedećoj prijavi."
msgstr[2] "%d proširenja će se nadopuniti pri sljedećoj prijavi." msgstr[2] "%d proširenja će se nadopuniti pri sljedećoj prijavi."
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Opis" msgstr "Opis"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Inačica" msgstr "Inačica"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Autor" msgstr "Autor"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Web stranica" msgstr "Web stranica"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Ukloni…" msgstr "Ukloni…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Pomoć" msgstr "Pomoć"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "O proširenju" msgstr "O proširenju"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -520,11 +532,11 @@ msgstr ""
"Kako bi pronašli i dodali proširenja, posjetite <a href=\"https://extensions." "Kako bi pronašli i dodali proširenja, posjetite <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>." "gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Upozorenje" msgstr "Upozorenje"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -534,19 +546,19 @@ msgstr ""
"s performansama. Ako se pojave problemi sa sustavom, preporučljivo je " "s performansama. Ako se pojave problemi sa sustavom, preporučljivo je "
"onemogućavanje svih proširenja." "onemogućavanje svih proširenja."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Ručno instalirana" msgstr "Ručno instalirana"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Ugrađena" msgstr "Ugrađena"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "Nema instaliranih proširenja" msgstr "Nema instaliranih proširenja"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -554,15 +566,15 @@ msgstr ""
"Nažalost, nije moguće dobiti popis instaliranih proširenja. Pobrinite se da " "Nažalost, nije moguće dobiti popis instaliranih proširenja. Pobrinite se da "
"ste prijavljeni u GNOME i pokušajte ponovno." "ste prijavljeni u GNOME i pokušajte ponovno."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Odjava…" msgstr "Odjava…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Lozinka" msgstr "Lozinka"
@@ -585,8 +597,8 @@ msgstr "(npr., korisnik ili %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Korisničko ime" msgstr "Korisničko ime"
@@ -846,44 +858,44 @@ msgstr "Zabrani pristup"
msgid "Grant Access" msgid "Grant Access"
msgstr "Dopusti pristup" msgstr "Dopusti pristup"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Neimenovana mapa" msgstr "Neimenovana mapa"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Najčešće korištene aplikacije će se pojaviti ovdje" msgstr "Najčešće korištene aplikacije će se pojaviti ovdje"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Najčešće" msgstr "Najčešće"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Sve" msgstr "Sve"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Otvaranje prozora" msgstr "Otvaranje prozora"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Novi prozor" msgstr "Novi prozor"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Pokreni pomoću namjenske grafičke kartice" msgstr "Pokreni pomoću namjenske grafičke kartice"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Ukloni iz omiljenih" msgstr "Ukloni iz omiljenih"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Dodaj u omiljene" msgstr "Dodaj u omiljene"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Prikaži pojedinosti" msgstr "Prikaži pojedinosti"
@@ -1031,30 +1043,30 @@ msgid "All Day"
msgstr "Cijeli dan" msgstr "Cijeli dan"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %-d. %B" msgstr "%A, %-d. %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %-d. %B, %Y" msgstr "%A, %-d. %B, %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Nema obavijesti" msgstr "Nema obavijesti"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Nema događaja" msgstr "Nema događaja"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Ne ometaj" msgstr "Ne ometaj"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Obriši" msgstr "Obriši"
@@ -1101,39 +1113,39 @@ msgstr "Instalirana udisks inačica ne podržava PIM postavku"
msgid "Open with %s" msgid "Open with %s"
msgstr "Otvori s(a) %s" msgstr "Otvori s(a) %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Alternativno se možete povezati pritiskom na “WPS” tipku vašeg usmjernika." "Alternativno se možete povezati pritiskom na “WPS” tipku vašeg usmjernika."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Povezivanje" msgstr "Povezivanje"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Ključ" msgstr "Ključ"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Lozinka privatnog ključa:" msgstr "Lozinka privatnog ključa"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identitet" msgstr "Identitet"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Usluga" msgstr "Usluga"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Potrebna je ovjera" msgstr "Potrebna je ovjera"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1141,42 +1153,42 @@ msgid ""
msgstr "" msgstr ""
"Lozinka ili ključevi šifriranja su potrebni za pristup bežičnoj mreži “%s”." "Lozinka ili ključevi šifriranja su potrebni za pristup bežičnoj mreži “%s”."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Wired 802.1X ovjera" msgstr "Wired 802.1X ovjera"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Naziv mreže" msgstr "Naziv mreže"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL ovjera" msgstr "DSL ovjera"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN kôd je potreban" msgstr "PIN kôd je potreban"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN kôd je potreban za uređaj mobilnog interneta" msgstr "PIN kôd je potreban za uređaj mobilnog interneta"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Potrebna je lozinka za povezivanje s “%s”." msgstr "Potrebna je lozinka za povezivanje s “%s”."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Mrežni upravitelj" msgstr "Mrežni upravitelj"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "VPN lozinka" msgstr "VPN lozinka"
@@ -1246,23 +1258,23 @@ msgstr "Dodaj satove iz svijeta…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Svjetski satovi" msgstr "Svjetski satovi"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "Vrijeme" msgstr "Vrijeme"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:404
msgid "Select a location…" msgid "Select a location…"
msgstr "Odaberi lokaciju…" msgstr "Odaberi lokaciju…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:417
msgid "Loading…" msgid "Loading…"
msgstr "Pretraživanje…" msgstr "Pretraživanje…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:427
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Posjetite za opširnije vremenske informacije" msgstr "Posjetite za opširnije vremenske informacije"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:429
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Vremenske informacije su trenutno nedostupne" msgstr "Vremenske informacije su trenutno nedostupne"
@@ -1423,15 +1435,15 @@ msgstr "%s (udaljeno)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konzola)" msgstr "%s (konzola)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Instaliraj" msgstr "Instaliraj"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Instaliraj proširenje" msgstr "Instaliraj proširenje"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Preuzmi i instaliraj “%s” sa extensions.gnome.org?" msgstr "Preuzmi i instaliraj “%s” sa extensions.gnome.org?"
@@ -1587,11 +1599,11 @@ msgstr "Pogledaj izvor"
msgid "Web Page" msgid "Web Page"
msgstr "Web stranica" msgstr "Web stranica"
#: js/ui/main.js:269 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Prijavljeni ste kao administratorski korisnik" msgstr "Prijavljeni ste kao administratorski korisnik"
#: js/ui/main.js:270 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1600,11 +1612,11 @@ msgstr ""
"izbjegavati iz sigurnosnih razloga. Ako je moguće, trebate se prijaviti kao " "izbjegavati iz sigurnosnih razloga. Ako je moguće, trebate se prijaviti kao "
"normalan korisnik." "normalan korisnik."
#: js/ui/main.js:276 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Zaključavanje zaslona je onemogućeno" msgstr "Zaključavanje zaslona je onemogućeno"
#: js/ui/main.js:277 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Zaključavanje zaslona zahtijeva GNOME upravitelja zaslona." msgstr "Zaključavanje zaslona zahtijeva GNOME upravitelja zaslona."
@@ -1960,7 +1972,7 @@ msgstr "Dopusti pristup lokaciji"
#: js/ui/status/location.js:357 #: js/ui/status/location.js:357
#, javascript-format #, javascript-format
msgid "The app %s wants to access your location" msgid "The app %s wants to access your location"
msgstr "Aplikacija %s želi pristupiti vašoj lokaciji?" msgstr "Aplikacija %s želi pristupiti vašoj lokaciji"
#: js/ui/status/location.js:367 #: js/ui/status/location.js:367
msgid "Location access can be changed at any time from the privacy settings." msgid "Location access can be changed at any time from the privacy settings."
@@ -2473,19 +2485,19 @@ msgstr "Zatvori"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution kalendar" msgstr "Evolution kalendar"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Prikaži inačicu" msgstr "Prikaži inačicu"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Način koji koristi GDM za zaslon prijave" msgstr "Način koji koristi GDM za zaslon prijave"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Koristi određen način, npr. \"gdm\" za zaslon prijave" msgstr "Koristi određen način, npr. \"gdm\" za zaslon prijave"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Popis mogućih načina" msgstr "Popis mogućih načina"

220
po/id.po
View File

@@ -11,8 +11,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-02-24 12:37+0000\n" "POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-02-25 17:40+0700\n" "PO-Revision-Date: 2020-03-20 14:13+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n" "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n" "Language: id\n"
@@ -48,15 +48,6 @@ msgstr "Tampilkan semua aplikasi"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Buka menu aplikasi" msgstr "Buka menu aplikasi"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Ekstensi"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurasi Ekstensi GNOME Shell"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
@@ -405,12 +396,36 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Log Masuk Jaringan" msgstr "Log Masuk Jaringan"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:242
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Ekstensi"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Kelola Ekstensi GNOME Anda"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Ekstensi GNOME menangani pemutakhiran ekstensi, mengkonfigurasi preferensi "
"ekstensi, dan menghapus atau menonaktifkan ekstensi yang tidak diinginkan."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurasi Ekstensi GNOME Shell"
#: js/extensionPrefs/js/main.js:164
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "Hapus \"%s\"?" msgstr "Hapus \"%s\"?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:165
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
@@ -418,19 +433,19 @@ msgstr ""
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika " "Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
"Anda ingin mengaktifkannya lagi" "Anda ingin mengaktifkannya lagi"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135 #: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Batal" msgstr "Batal"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:169
msgid "Remove" msgid "Remove"
msgstr "Hapus" msgstr "Hapus"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:241
msgid "translator-credits" msgid "translator-credits"
msgstr "" msgstr ""
"Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n" "Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n"
@@ -439,15 +454,12 @@ msgstr ""
"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n" "Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n"
"Sucipto <sucipto@pm.me>, 2020." "Sucipto <sucipto@pm.me>, 2020."
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:285
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Kelola Ekstensi GNOME Anda"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Ada yang tidak beres" msgstr "Ada yang tidak beres"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:292
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -457,61 +469,61 @@ msgstr ""
"tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada " "tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada "
"penulis ekstensi." "penulis ekstensi."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:299
msgid "Technical Details" msgid "Technical Details"
msgstr "Detail Teknis" msgstr "Detail Teknis"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:334
msgid "Copy Error" msgid "Copy Error"
msgstr "Salin Galat" msgstr "Salin Galat"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Kunjungi halaman web ekstensi" msgstr "Kunjungi halaman web ekstensi"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:479
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya." msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya."
msgstr[1] "%d ekstensi akan diperbarui pada log masuk berikutnya." msgstr[1] "%d ekstensi akan diperbarui pada log masuk berikutnya."
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Deskripsi" msgstr "Deskripsi"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Versi" msgstr "Versi"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Penulis" msgstr "Penulis"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Situs Web" msgstr "Situs Web"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Hapus…" msgstr "Hapus…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Bantuan" msgstr "Bantuan"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "Tentang Ekstensi" msgstr "Tentang Ekstensi"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -519,11 +531,11 @@ msgstr ""
"Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://" "Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>." "extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Peringatan" msgstr "Peringatan"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -533,19 +545,19 @@ msgstr ""
"Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan " "Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan "
"semua ekstensi." "semua ekstensi."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Dipasang Secara Manual" msgstr "Dipasang Secara Manual"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Bawaan" msgstr "Bawaan"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "Tidak Ada Ekstensi Terpasang" msgstr "Tidak Ada Ekstensi Terpasang"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -553,15 +565,15 @@ msgstr ""
"Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang " "Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang "
"dipasang. Pastikan Anda masuk ke GNOME dan coba lagi." "dipasang. Pastikan Anda masuk ke GNOME dan coba lagi."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Keluar…" msgstr "Keluar…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Kata Sandi" msgstr "Kata Sandi"
@@ -584,8 +596,8 @@ msgstr "(cth., pengguna dari %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Nama pengguna" msgstr "Nama pengguna"
@@ -837,44 +849,44 @@ msgstr "Tolak Akses"
msgid "Grant Access" msgid "Grant Access"
msgstr "Beri Akses" msgstr "Beri Akses"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Folder Tanpa Nama" msgstr "Folder Tanpa Nama"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini" msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Sering" msgstr "Sering"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Semua" msgstr "Semua"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Buka Jendela" msgstr "Buka Jendela"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Jendela Baru" msgstr "Jendela Baru"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi" msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Hapus dari Favorit" msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Tambah ke Favorit" msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Tampilkan Rincian" msgstr "Tampilkan Rincian"
@@ -1022,30 +1034,30 @@ msgid "All Day"
msgstr "Sepanjang Hari" msgstr "Sepanjang Hari"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %d %B" msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %d %B %Y" msgstr "%A, %d %B %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Tak Ada Pemberitahuan" msgstr "Tak Ada Pemberitahuan"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Tak Ada Kejadian" msgstr "Tak Ada Kejadian"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Jangan Ganggu" msgstr "Jangan Ganggu"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Bersihkan" msgstr "Bersihkan"
@@ -1092,40 +1104,40 @@ msgstr "Versi udisks yang dipasang tidak mendukung pengaturan PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Buka dengan %s" msgstr "Buka dengan %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Sebagai alternatif Anda dapat terhubung dengan menekan tombol \"WPS\" pada " "Sebagai alternatif Anda dapat terhubung dengan menekan tombol \"WPS\" pada "
"router Anda." "router Anda."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Sambung" msgstr "Sambung"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Kunci" msgstr "Kunci"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Kata sandi kunci privat" msgstr "Kata sandi kunci privat"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identitas" msgstr "Identitas"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Layanan" msgstr "Layanan"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Diperlukan autentikasi" msgstr "Diperlukan autentikasi"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1134,42 +1146,42 @@ msgstr ""
"Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel " "Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel "
"\"%s\"." "\"%s\"."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autentikasi 802.1X kabel" msgstr "Autentikasi 802.1X kabel"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Nama jaringan" msgstr "Nama jaringan"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autentikasi DSL" msgstr "Autentikasi DSL"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Perlu kode PIN" msgstr "Perlu kode PIN"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN diperlukan untuk perangkat data seluler" msgstr "Kode PIN diperlukan untuk perangkat data seluler"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Perlu suatu kata sandi untuk menyambung ke \"%s\"." msgstr "Perlu suatu kata sandi untuk menyambung ke \"%s\"."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Manajer Jaringan" msgstr "Manajer Jaringan"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "Kata Sandi VPN" msgstr "Kata Sandi VPN"
@@ -1239,23 +1251,23 @@ msgstr "Tambah jam dunia…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Jam Dunia" msgstr "Jam Dunia"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:279
msgid "Weather" msgid "Weather"
msgstr "Cuaca" msgstr "Cuaca"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:394
msgid "Select a location…" msgid "Select a location…"
msgstr "Pilih lokasi…" msgstr "Pilih lokasi…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:407
msgid "Loading…" msgid "Loading…"
msgstr "Memuat…" msgstr "Memuat…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:417
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Pergi daring untuk informasi cuaca" msgstr "Pergi daring untuk informasi cuaca"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Informasi cuaca saat ini tidak tersedia" msgstr "Informasi cuaca saat ini tidak tersedia"
@@ -1408,15 +1420,15 @@ msgstr "%s (jarak jauh)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (konsol)" msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Pasang" msgstr "Pasang"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Pasang Ekstensi" msgstr "Pasang Ekstensi"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
@@ -1572,11 +1584,11 @@ msgstr "Tilik Sumber"
msgid "Web Page" msgid "Web Page"
msgstr "Halaman Web" msgstr "Halaman Web"
#: js/ui/main.js:269 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Masuk sebagai pengguna istimewa" msgstr "Masuk sebagai pengguna istimewa"
#: js/ui/main.js:270 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1584,11 +1596,11 @@ msgstr ""
"Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan " "Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan "
"keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa." "keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa."
#: js/ui/main.js:276 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Kunci Layar dinonaktifkan" msgstr "Kunci Layar dinonaktifkan"
#: js/ui/main.js:277 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Penguncian Layar memerlukan manajer tampilan GNOME." msgstr "Penguncian Layar memerlukan manajer tampilan GNOME."
@@ -1676,12 +1688,12 @@ msgstr "Keluar"
msgid "Activities" msgid "Activities"
msgstr "Aktivitas" msgstr "Aktivitas"
#: js/ui/panel.js:707 #: js/ui/panel.js:713
msgctxt "System menu in the top bar" msgctxt "System menu in the top bar"
msgid "System" msgid "System"
msgstr "Sistem" msgstr "Sistem"
#: js/ui/panel.js:820 #: js/ui/panel.js:826
msgid "Top Bar" msgid "Top Bar"
msgstr "Bar Atas" msgstr "Bar Atas"
@@ -2457,19 +2469,19 @@ msgstr "Tutup"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution Kalender" msgstr "Evolution Kalender"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Versi Cetak" msgstr "Versi Cetak"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Mode yang dipakai oleh layar log masuk GDM" msgstr "Mode yang dipakai oleh layar log masuk GDM"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk" msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin" msgstr "Menampilkan mode yang mungkin"

217
po/it.po
View File

@@ -12,8 +12,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-25 18:38+0000\n" "POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-03 09:08+0100\n" "PO-Revision-Date: 2020-03-19 16:08+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n" "Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <gnome-it-list@gnome.org>\n" "Language-Team: Italiano <gnome-it-list@gnome.org>\n"
"Language: it\n" "Language: it\n"
@@ -48,15 +48,6 @@ msgstr "Mostra tutte le applicazioni"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Apre il menù applicazioni" msgstr "Apre il menù applicazioni"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Estensioni"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configura le estensioni di GNOME Shell"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME Shell" msgstr "GNOME Shell"
@@ -415,12 +406,37 @@ msgstr ""
msgid "Network Login" msgid "Network Login"
msgstr "Accesso di rete" msgstr "Accesso di rete"
#: js/extensionPrefs/main.js:140 #: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:4
#: js/extensionPrefs/js/main.js:242
#: js/extensionPrefs/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Estensioni"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Gestione delle Estensioni GNOME"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"Estensioni GNOME gestisce l'aggiornamento e la configurazione delle "
"preferenze delle estensioni e la rimozione o la disabilitazione di "
"estensioni indesiderate."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configura le estensioni di GNOME Shell"
#: js/extensionPrefs/js/main.js:164
#, javascript-format #, javascript-format
msgid "Remove “%s”?" msgid "Remove “%s”?"
msgstr "Rimuovere «%s»?" msgstr "Rimuovere «%s»?"
#: js/extensionPrefs/main.js:141 #: js/extensionPrefs/js/main.js:165
msgid "" msgid ""
"If you remove the extension, you need to return to download it if you want " "If you remove the extension, you need to return to download it if you want "
"to enable it again" "to enable it again"
@@ -428,31 +444,28 @@ msgstr ""
"Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per " "Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per "
"abilitarla" "abilitarla"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135 #: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107 #: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374 #: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376 #: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913 #: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel" msgid "Cancel"
msgstr "Annulla" msgstr "Annulla"
#: js/extensionPrefs/main.js:145 #: js/extensionPrefs/js/main.js:169
msgid "Remove" msgid "Remove"
msgstr "Rimuovi" msgstr "Rimuovi"
#: js/extensionPrefs/main.js:217 #: js/extensionPrefs/js/main.js:241
msgid "translator-credits" msgid "translator-credits"
msgstr "Milo Casagrande <milo@milo.name>" msgstr "Milo Casagrande <milo@milo.name>"
#: js/extensionPrefs/main.js:219 #: js/extensionPrefs/js/main.js:285
msgid "Manage your GNOME Extensions" #: js/extensionPrefs/data/ui/extensions-window.ui:223
msgstr "Gestione estensioni"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Qualcosa è andato storto" msgstr "Qualcosa è andato storto"
#: js/extensionPrefs/main.js:268 #: js/extensionPrefs/js/main.js:292
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -462,61 +475,61 @@ msgstr ""
"questa estensione. È consigliato segnalare il problema agli autori " "questa estensione. È consigliato segnalare il problema agli autori "
"dell'estensione." "dell'estensione."
#: js/extensionPrefs/main.js:275 #: js/extensionPrefs/js/main.js:299
msgid "Technical Details" msgid "Technical Details"
msgstr "Dettagli tecnici" msgstr "Dettagli tecnici"
#: js/extensionPrefs/main.js:310 #: js/extensionPrefs/js/main.js:334
msgid "Copy Error" msgid "Copy Error"
msgstr "Copia errore" msgstr "Copia errore"
#: js/extensionPrefs/main.js:337 #: js/extensionPrefs/js/main.js:361
msgid "Homepage" msgid "Homepage"
msgstr "Sito web" msgstr "Sito web"
#: js/extensionPrefs/main.js:338 #: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Sito web dell'estensione" msgstr "Sito web dell'estensione"
#: js/extensionPrefs/main.js:449 #: js/extensionPrefs/js/main.js:479
#, javascript-format #, javascript-format
msgid "%d extension will be updated on next login." msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login." msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d estensione verrà aggiornata al prossimo accesso." msgstr[0] "%d estensione verrà aggiornata al prossimo accesso."
msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso." msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso."
#: js/extensionPrefs/ui/extension-row.ui:100 #: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211 #: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173 #: subprojects/extensions-tool/src/main.c:173
msgid "Description" msgid "Description"
msgstr "Descrizione" msgstr "Descrizione"
#: js/extensionPrefs/ui/extension-row.ui:123 #: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185 #: subprojects/extensions-tool/src/main.c:185
msgid "Version" msgid "Version"
msgstr "Versione" msgstr "Versione"
#: js/extensionPrefs/ui/extension-row.ui:151 #: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author" msgid "Author"
msgstr "Autore" msgstr "Autore"
#: js/extensionPrefs/ui/extension-row.ui:175 #: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website" msgid "Website"
msgstr "Sito web" msgstr "Sito web"
#: js/extensionPrefs/ui/extension-row.ui:192 #: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…" msgid "Remove…"
msgstr "Rimuovi…" msgstr "Rimuovi…"
#: js/extensionPrefs/ui/extensions-window.ui:8 #: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help" msgid "Help"
msgstr "Aiuto" msgstr "Aiuto"
#: js/extensionPrefs/ui/extensions-window.ui:12 #: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions" msgid "About Extensions"
msgstr "Informazioni su Estensioni" msgstr "Informazioni su Estensioni"
#: js/extensionPrefs/ui/extensions-window.ui:27 #: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid "" msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org" "To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>." "\">extensions.gnome.org</a>."
@@ -524,11 +537,11 @@ msgstr ""
"Per trovare e installare estensioni, visitare il sito web <a href=\"https://" "Per trovare e installare estensioni, visitare il sito web <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>." "extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35 #: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning" msgid "Warning"
msgstr "Attenzione" msgstr "Attenzione"
#: js/extensionPrefs/ui/extensions-window.ui:46 #: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid "" msgid ""
"Extensions can cause system issues, including performance problems. If you " "Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all " "encounter problems with your system, it is recommended to disable all "
@@ -538,19 +551,19 @@ msgstr ""
"prestazioni. Nel caso si riscontrino dei problemi, è consigliato di " "prestazioni. Nel caso si riscontrino dei problemi, è consigliato di "
"disabilitare tutte le estensioni." "disabilitare tutte le estensioni."
#: js/extensionPrefs/ui/extensions-window.ui:133 #: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed" msgid "Manually Installed"
msgstr "Installata manualmente" msgstr "Installata manualmente"
#: js/extensionPrefs/ui/extensions-window.ui:157 #: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In" msgid "Built-In"
msgstr "Integrata" msgstr "Integrata"
#: js/extensionPrefs/ui/extensions-window.ui:198 #: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions" msgid "No Installed Extensions"
msgstr "Nessuna estensione installata" msgstr "Nessuna estensione installata"
#: js/extensionPrefs/ui/extensions-window.ui:234 #: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid "" msgid ""
"Were very sorry, but it was not possible to get the list of installed " "Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again." "extensions. Make sure you are logged into GNOME and try again."
@@ -558,15 +571,15 @@ msgstr ""
"Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di " "Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di "
"aver eseguire l'accesso a GNOME e riprovare." "aver eseguire l'accesso a GNOME e riprovare."
#: js/extensionPrefs/ui/extensions-window.ui:287 #: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…" msgid "Log Out…"
msgstr "Termina sessione…" msgstr "Termina sessione…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Password" msgstr "Password"
@@ -589,8 +602,8 @@ msgstr "(per es. utente o %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Nome utente" msgstr "Nome utente"
@@ -841,44 +854,44 @@ msgstr "Nega accesso"
msgid "Grant Access" msgid "Grant Access"
msgstr "Consenti accesso" msgstr "Consenti accesso"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Cartella senza nome" msgstr "Cartella senza nome"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Qui saranno mostrate le applicazioni usate frequentemente" msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Frequenti" msgstr "Frequenti"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Tutte" msgstr "Tutte"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Finestre aperte" msgstr "Finestre aperte"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Nuova finestra" msgstr "Nuova finestra"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Lancia utilizzando scheda grafica dedicata" msgstr "Lancia utilizzando scheda grafica dedicata"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti" msgstr "Rimuovi dai preferiti"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2511
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti" msgstr "Aggiungi ai preferiti"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Mostra dettagli" msgstr "Mostra dettagli"
@@ -1028,30 +1041,30 @@ msgid "All Day"
msgstr "Giornata" msgstr "Giornata"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %e %B" msgstr "%A, %e %B"
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %e %B %Y" msgstr "%A, %e %B %Y"
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Nessuna notifica" msgstr "Nessuna notifica"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Nessun evento" msgstr "Nessun evento"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Non disturbare" msgstr "Non disturbare"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Pulisci" msgstr "Pulisci"
@@ -1098,39 +1111,39 @@ msgstr "La versione installata di udisks non supporta l'impostazione PIM"
msgid "Open with %s" msgid "Open with %s"
msgstr "Apri con %s" msgstr "Apri con %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"In alternativa è possibile collegarsi premendo il pulsante «WPS» del router." "In alternativa è possibile collegarsi premendo il pulsante «WPS» del router."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Connetti" msgstr "Connetti"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Chiave" msgstr "Chiave"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Password chiave privata" msgstr "Password chiave privata"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Identità" msgstr "Identità"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Servizio" msgstr "Servizio"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Richiesta autenticazione" msgstr "Richiesta autenticazione"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1139,42 +1152,42 @@ msgstr ""
"È richiesta una password o una chiave di cifratura per accedere alla rete " "È richiesta una password o una chiave di cifratura per accedere alla rete "
"wireless «%s»." "wireless «%s»."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticazione via cavo 802.1X" msgstr "Autenticazione via cavo 802.1X"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Nome rete" msgstr "Nome rete"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticazione DSL" msgstr "Autenticazione DSL"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Richiesto codice PIN" msgstr "Richiesto codice PIN"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "È necessario il codice PIN per il dispositivo a banda larga mobile" msgstr "È necessario il codice PIN per il dispositivo a banda larga mobile"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "È richiesta una password per connettersi a «%s»." msgstr "È richiesta una password per connettersi a «%s»."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestore reti" msgstr "Gestore reti"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "Password VPN" msgstr "Password VPN"
@@ -1245,23 +1258,23 @@ msgstr "Aggiungi orologi mondiali…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Orologi mondiali" msgstr "Orologi mondiali"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:279
msgid "Weather" msgid "Weather"
msgstr "Meteo" msgstr "Meteo"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:394
msgid "Select a location…" msgid "Select a location…"
msgstr "Seleziona una posizione…" msgstr "Seleziona una posizione…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:407
msgid "Loading…" msgid "Loading…"
msgstr "Caricamento…" msgstr "Caricamento…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:417
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Collegarsi a Internet per le informazioni meteo" msgstr "Collegarsi a Internet per le informazioni meteo"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Le informazioni meteo non sono disponibili" msgstr "Le informazioni meteo non sono disponibili"
@@ -1415,15 +1428,15 @@ msgstr "%s (remoto)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (console)" msgstr "%s (console)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:181
msgid "Install" msgid "Install"
msgstr "Installa" msgstr "Installa"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:187
msgid "Install Extension" msgid "Install Extension"
msgstr "Installa estensione" msgstr "Installa estensione"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:188
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?" msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
@@ -1583,11 +1596,11 @@ msgstr "Visualizza sorgente"
msgid "Web Page" msgid "Web Page"
msgstr "Pagina web" msgstr "Pagina web"
#: js/ui/main.js:269 #: js/ui/main.js:274
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Accesso eseguito come utente con privilegi" msgstr "Accesso eseguito come utente con privilegi"
#: js/ui/main.js:270 #: js/ui/main.js:275
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1595,11 +1608,11 @@ msgstr ""
"Per motivi di sicurezza, non è consigliato avviare una sessione con un " "Per motivi di sicurezza, non è consigliato avviare una sessione con un "
"utente con privilegi. Se possibile, accedere come utente normale." "utente con privilegi. Se possibile, accedere come utente normale."
#: js/ui/main.js:276 #: js/ui/main.js:281
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Blocca scherma disabilitato" msgstr "Blocca scherma disabilitato"
#: js/ui/main.js:277 #: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Il blocco dello schermo richiede il gestore schermi di GNOME." msgstr "Il blocco dello schermo richiede il gestore schermi di GNOME."
@@ -2472,19 +2485,19 @@ msgstr "Chiudi"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Calendario di Evolution" msgstr "Calendario di Evolution"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Stampa la versione" msgstr "Stampa la versione"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Modalità usata da GDM per la schermata d'accesso" msgstr "Modalità usata da GDM per la schermata d'accesso"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Usa una modalità specifica, per es. «gdm» per la schermata d'accesso" msgstr "Usa una modalità specifica, per es. «gdm» per la schermata d'accesso"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Elenca le modalità possibili" msgstr "Elenca le modalità possibili"

View File

@@ -16,8 +16,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-02-29 16:06+0000\n" "POT-Creation-Date: 2020-03-04 21:53+0000\n"
"PO-Revision-Date: 2020-03-05 06:30+0900\n" "PO-Revision-Date: 2020-03-09 21:10+0900\n"
"Last-Translator: sicklylife <translation@sicklylife.jp>\n" "Last-Translator: sicklylife <translation@sicklylife.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n" "Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n" "Language: ja\n"
@@ -1115,7 +1115,7 @@ msgstr "サービス"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required" msgid "Authentication required"
msgstr "認証が要求されました" msgstr "認証が必要です"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format #, javascript-format
@@ -1166,7 +1166,7 @@ msgstr "VPN パスワード"
#: js/ui/components/polkitAgent.js:39 #: js/ui/components/polkitAgent.js:39
msgid "Authentication Required" msgid "Authentication Required"
msgstr "認証が要求されました" msgstr "認証が必要です"
#: js/ui/components/polkitAgent.js:80 #: js/ui/components/polkitAgent.js:80
msgid "Administrator" msgid "Administrator"
@@ -2083,7 +2083,7 @@ msgstr "接続中…"
#. 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:1420 #: js/ui/status/network.js:1420
msgid "authentication required" msgid "authentication required"
msgstr "認証の要求" msgstr "認証が必要"
#: js/ui/status/network.js:1422 #: js/ui/status/network.js:1422
msgid "connection failed" msgid "connection failed"

469
po/lt.po
View File

@@ -10,8 +10,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n" "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-27 21:57+0000\n" "POT-Creation-Date: 2020-03-28 16:33+0000\n"
"PO-Revision-Date: 2020-03-01 20:41+0200\n" "PO-Revision-Date: 2020-03-29 22:27+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n" "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n" "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n" "Language: lt\n"
@@ -47,15 +47,6 @@ msgstr "Rodyti visas programas"
msgid "Open the application menu" msgid "Open the application menu"
msgstr "Atverti programų meniu" msgstr "Atverti programų meniu"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Plėtiniai"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigūruoti GNOME Shell plėtinius"
#: data/org.gnome.Shell.desktop.in.in:4 #: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell" msgid "GNOME Shell"
msgstr "GNOME Shell aplinka" msgstr "GNOME Shell aplinka"
@@ -397,46 +388,12 @@ msgstr "Atidėti fokuso pakeitimus pelei iki žymiklis nustos judėti"
msgid "Network Login" msgid "Network Login"
msgstr "Tinklo prisijungimas" msgstr "Tinklo prisijungimas"
#: js/extensionPrefs/main.js:140 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#, javascript-format #: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Remove “%s”?"
msgstr "Pašalinti „%s“?"
#: js/extensionPrefs/main.js:141
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Jei pašalinsite plėtinį, reikės grįžti prie jo atsisiuntimo, jei norėsite jį "
"vėl įjungti"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Atsisakyti"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "Pašalinti"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
"Išvertė:\n"
"Aurimas Černius <aurisc4@gmail.com>"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "Tvarkyti GNOME plėtinius"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong" msgid "Somethings gone wrong"
msgstr "Atsitiko kažkas negero" msgstr "Atsitiko kažkas negero"
#: js/extensionPrefs/main.js:268 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
msgid "" msgid ""
"Were very sorry, but theres been a problem: the settings for this " "Were very sorry, but theres been a problem: the settings for this "
"extension cant be displayed. We recommend that you report the issue to the " "extension cant be displayed. We recommend that you report the issue to the "
@@ -445,111 +402,31 @@ msgstr ""
"Atsiprašome, bet kilo problema: šio plėtinio nustatymų parodyti nepavyksta. " "Atsiprašome, bet kilo problema: šio plėtinio nustatymų parodyti nepavyksta. "
"Rekomenduojame pranešti apie problemą plėtinio autoriams." "Rekomenduojame pranešti apie problemą plėtinio autoriams."
#: js/extensionPrefs/main.js:275 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
msgid "Technical Details" msgid "Technical Details"
msgstr "Techninė informacija" msgstr "Techninė informacija"
#: js/extensionPrefs/main.js:310 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
msgid "Copy Error"
msgstr "Kopijuoti klaidą"
#: js/extensionPrefs/main.js:337
msgid "Homepage" msgid "Homepage"
msgstr "Namų tinklalapis" msgstr "Namų tinklalapis"
#: js/extensionPrefs/main.js:338 #: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
msgid "Visit extension homepage" msgid "Visit extension homepage"
msgstr "Aplankyti plėtinio namų tinklalapį" msgstr "Aplankyti plėtinio namų tinklalapį"
#: js/extensionPrefs/main.js:449 #: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#, javascript-format #: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
msgid "%d extension will be updated on next login." #: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
msgid_plural "%d extensions will be updated on next login." #: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
msgstr[0] "%d plėtinys bus atnaujintas kitą kartą prisijungus." #: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgstr[1] "%d plėtiniai bus atnaujintas kitą kartą prisijungus." msgid "Cancel"
msgstr[2] "%d plėtinių bus atnaujintas kitą kartą prisijungus." msgstr "Atsisakyti"
#: js/extensionPrefs/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Aprašymas"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versija"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "Autorius"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "Tinklalapis"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Pašalinti…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "Žinynas"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Apie plėtinius"
#: js/extensionPrefs/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Plėtinius galima rasti ir įdiegti per apsilankius <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Įspėjimas"
#: js/extensionPrefs/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Plėtiniai gali sukelti sistemai problemų, įskaitant našumo problemas. Jei su "
"tokiomis susidursite, rekomenduojama išjungti visus plėtinius."
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "Įdiegtas rankomis"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "Vidinis"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "Nėra įdiegtų plėtinių"
#: js/extensionPrefs/ui/extensions-window.ui:234
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Atsiprašome, bet nepavyko gauti įdiegtų plėtinių sąrašo. Įsitikinkite, kad "
"esate prisijungęs prie GNOME ir bandykite vėl."
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "Atsijungti…"
#. Cisco LEAP #. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202 #: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242 #: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283 #: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277 #: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326 #: js/ui/shellMountOperation.js:326
msgid "Password" msgid "Password"
msgstr "Slaptažodis" msgstr "Slaptažodis"
@@ -572,8 +449,8 @@ msgstr "(pvz., naudotojas arba %s)"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238 #: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279 #: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
msgid "Username" msgid "Username"
msgstr "Naudotojo vardas" msgstr "Naudotojo vardas"
@@ -830,44 +707,44 @@ msgstr "Atmesti prieigą"
msgid "Grant Access" msgid "Grant Access"
msgstr "Suteikti prieigą" msgstr "Suteikti prieigą"
#: js/ui/appDisplay.js:906 #: js/ui/appDisplay.js:898
msgid "Unnamed Folder" msgid "Unnamed Folder"
msgstr "Nepavadintas aplankas" msgstr "Nepavadintas aplankas"
#: js/ui/appDisplay.js:929 #: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here" msgid "Frequently used applications will appear here"
msgstr "Čia bus matomos dažnai naudojamos programos" msgstr "Čia bus matomos dažnai naudojamos programos"
#: js/ui/appDisplay.js:1064 #: js/ui/appDisplay.js:1056
msgid "Frequent" msgid "Frequent"
msgstr "Dažnai naudojamos" msgstr "Dažnai naudojamos"
#: js/ui/appDisplay.js:1071 #: js/ui/appDisplay.js:1063
msgid "All" msgid "All"
msgstr "Visos" msgstr "Visos"
#. Translators: This is the heading of a list of open windows #. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75 #: js/ui/appDisplay.js:2439 js/ui/panel.js:75
msgid "Open Windows" msgid "Open Windows"
msgstr "Atverti langai" msgstr "Atverti langai"
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82 #: js/ui/appDisplay.js:2459 js/ui/panel.js:82
msgid "New Window" msgid "New Window"
msgstr "Naujas langas" msgstr "Naujas langas"
#: js/ui/appDisplay.js:2481 #: js/ui/appDisplay.js:2470
msgid "Launch using Dedicated Graphics Card" msgid "Launch using Dedicated Graphics Card"
msgstr "Paleisti naudojant dedikuotą grafikos kortą" msgstr "Paleisti naudojant dedikuotą grafikos kortą"
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239 #: js/ui/appDisplay.js:2498 js/ui/dash.js:239
msgid "Remove from Favorites" msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų" msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:2515 #: js/ui/appDisplay.js:2504
msgid "Add to Favorites" msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų" msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93 #: js/ui/appDisplay.js:2514 js/ui/panel.js:93
msgid "Show Details" msgid "Show Details"
msgstr "Rodyti detalią informaciją" msgstr "Rodyti detalią informaciją"
@@ -1015,30 +892,30 @@ msgid "All Day"
msgstr "Visa diena" msgstr "Visa diena"
#. Translators: Shown on calendar heading when selected day occurs on current year #. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:867 #: js/ui/calendar.js:868
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d" msgid "%A, %B %-d"
msgstr "%A, %B %-d." msgstr "%A, %B %-d."
#. Translators: Shown on calendar heading when selected day occurs on different year #. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:870 #: js/ui/calendar.js:871
msgctxt "calendar heading" msgctxt "calendar heading"
msgid "%A, %B %-d, %Y" msgid "%A, %B %-d, %Y"
msgstr "%A, %Y %B %-d." msgstr "%A, %Y %B %-d."
#: js/ui/calendar.js:1096 #: js/ui/calendar.js:1100
msgid "No Notifications" msgid "No Notifications"
msgstr "Nėra pranešimų" msgstr "Nėra pranešimų"
#: js/ui/calendar.js:1099 #: js/ui/calendar.js:1103
msgid "No Events" msgid "No Events"
msgstr "Nėra įvykių" msgstr "Nėra įvykių"
#: js/ui/calendar.js:1153 #: js/ui/calendar.js:1157
msgid "Do Not Disturb" msgid "Do Not Disturb"
msgstr "Netrukdyti" msgstr "Netrukdyti"
#: js/ui/calendar.js:1167 #: js/ui/calendar.js:1171
msgid "Clear" msgid "Clear"
msgstr "Išvalyti" msgstr "Išvalyti"
@@ -1085,39 +962,39 @@ msgstr "Įdiegta udisks versija nepalaiko PIM nustatymo"
msgid "Open with %s" msgid "Open with %s"
msgstr "Atverti su %s" msgstr "Atverti su %s"
#: js/ui/components/networkAgent.js:89 #: js/ui/components/networkAgent.js:91
msgid "" msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router." "Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "" msgstr ""
"Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje." "Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223 #: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916 #: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect" msgid "Connect"
msgstr "Prisijungti" msgstr "Prisijungti"
#: js/ui/components/networkAgent.js:208 #: js/ui/components/networkAgent.js:210
msgid "Key" msgid "Key"
msgstr "Raktas" msgstr "Raktas"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269 #: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
msgid "Private key password" msgid "Private key password"
msgstr "Privataus rakto slaptažodis" msgstr "Privataus rakto slaptažodis"
#: js/ui/components/networkAgent.js:267 #: js/ui/components/networkAgent.js:269
msgid "Identity" msgid "Identity"
msgstr "Tapatybė" msgstr "Tapatybė"
#: js/ui/components/networkAgent.js:281 #: js/ui/components/networkAgent.js:283
msgid "Service" msgid "Service"
msgstr "Tarnyba" msgstr "Tarnyba"
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338 #: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706 #: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
msgid "Authentication required" msgid "Authentication required"
msgstr "Reikia patvirtinti tapatybę" msgstr "Reikia patvirtinti tapatybę"
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686 #: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#, javascript-format #, javascript-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@@ -1126,42 +1003,42 @@ msgstr ""
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio " "Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
"tinklo „%s“." "tinklo „%s“."
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690 #: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Laidinis 802.1X tapatybės patvirtinimas" msgstr "Laidinis 802.1X tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:317 #: js/ui/components/networkAgent.js:319
msgid "Network name" msgid "Network name"
msgstr "Tinklo vardas" msgstr "Tinklo vardas"
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694 #: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL tapatybės patvirtinimas" msgstr "DSL tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699 #: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
msgid "PIN code required" msgid "PIN code required"
msgstr "Reikalingas PIN kodas" msgstr "Reikalingas PIN kodas"
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700 #: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui" msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
#: js/ui/components/networkAgent.js:331 #: js/ui/components/networkAgent.js:333
msgid "PIN" msgid "PIN"
msgstr "PIN" msgstr "PIN"
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691 #: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707 #: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:711 #: js/ui/components/networkAgent.js:705
#, javascript-format #, javascript-format
msgid "A password is required to connect to “%s”." msgid "A password is required to connect to “%s”."
msgstr "Būtinas slaptažodis norint prisijungti prie „%s“." msgstr "Būtinas slaptažodis norint prisijungti prie „%s“."
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691 #: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
msgid "Network Manager" msgid "Network Manager"
msgstr "Tinklo tvarkymas" msgstr "Tinklo tvarkymas"
#: js/ui/components/networkAgent.js:710 #: js/ui/components/networkAgent.js:704
msgid "VPN password" msgid "VPN password"
msgstr "VPN slaptažodis" msgstr "VPN slaptažodis"
@@ -1187,7 +1064,7 @@ msgstr "Atsiprašome, tai nesuveikė. Bandykite dar kartą."
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: js/ui/components/telepathyClient.js:787 #: js/ui/components/telepathyClient.js:823
#, javascript-format #, javascript-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s nuo šiol vadinasi %s" msgstr "%s nuo šiol vadinasi %s"
@@ -1231,38 +1108,38 @@ msgstr "Pridėti pasaulio laikrodžius…"
msgid "World Clocks" msgid "World Clocks"
msgstr "Pasaulio laikrodžiai" msgstr "Pasaulio laikrodžiai"
#: js/ui/dateMenu.js:276 #: js/ui/dateMenu.js:289
msgid "Weather" msgid "Weather"
msgstr "Orai" msgstr "Orai"
#: js/ui/dateMenu.js:391 #: js/ui/dateMenu.js:418
msgid "Select a location…" msgid "Select a location…"
msgstr "Pasirinkite vietą…" msgstr "Pasirinkite vietą…"
#: js/ui/dateMenu.js:404 #: js/ui/dateMenu.js:426
msgid "Loading…" msgid "Loading…"
msgstr "Įkeliama…" msgstr "Įkeliama…"
#: js/ui/dateMenu.js:414 #: js/ui/dateMenu.js:436
msgid "Go online for weather information" msgid "Go online for weather information"
msgstr "Prisijunkite prie tinklo orų informacijai gauti" msgstr "Prisijunkite prie tinklo orų informacijai gauti"
#: js/ui/dateMenu.js:416 #: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable" msgid "Weather information is currently unavailable"
msgstr "Orų informacija šiuo metu yra neprieinama" msgstr "Orų informacija šiuo metu yra neprieinama"
#: 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 "Atjungti naudotoją %s" msgstr "Atjungti naudotoją %s"
#: js/ui/endSessionDialog.js:38 #: js/ui/endSessionDialog.js:40
msgctxt "title" msgctxt "title"
msgid "Log Out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#: js/ui/endSessionDialog.js:40 #: js/ui/endSessionDialog.js:42
#, javascript-format #, javascript-format
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
@@ -1270,7 +1147,7 @@ msgstr[0] "%s bus automatiškai atjungta (-s) už %d sekundės."
msgstr[1] "%s bus automatiškai atjungta (-s) už %d sekundžių." msgstr[1] "%s bus automatiškai atjungta (-s) už %d sekundžių."
msgstr[2] "%s bus automatiškai atjungta (-s) už %d sekundžių." msgstr[2] "%s bus automatiškai atjungta (-s) už %d sekundžių."
#: js/ui/endSessionDialog.js:45 #: js/ui/endSessionDialog.js:47
#, javascript-format #, javascript-format
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
@@ -1278,22 +1155,22 @@ msgstr[0] "Jūs būsite automatiškai atjungti už %d sekundės."
msgstr[1] "Jūs būsite automatiškai atjungti už %d sekundžių." msgstr[1] "Jūs būsite automatiškai atjungti už %d sekundžių."
msgstr[2] "Jūs būsite automatiškai atjungti už %d sekundžių." msgstr[2] "Jūs būsite automatiškai atjungti už %d sekundžių."
#: js/ui/endSessionDialog.js:51 #: js/ui/endSessionDialog.js:53
msgctxt "button" msgctxt "button"
msgid "Log Out" msgid "Log Out"
msgstr "Atsijungti" msgstr "Atsijungti"
#: js/ui/endSessionDialog.js:56 #: js/ui/endSessionDialog.js:58
msgctxt "title" msgctxt "title"
msgid "Power Off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#: js/ui/endSessionDialog.js:57 #: js/ui/endSessionDialog.js:59
msgctxt "title" msgctxt "title"
msgid "Install Updates & Power Off" msgid "Install Updates & Power Off"
msgstr "Įdiegti atnaujinimus ir išjungti" msgstr "Įdiegti atnaujinimus ir išjungti"
#: js/ui/endSessionDialog.js:59 #: js/ui/endSessionDialog.js:61
#, javascript-format #, javascript-format
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
@@ -1301,27 +1178,27 @@ msgstr[0] "Sistema automatiškai išsijungs po %d sekundės."
msgstr[1] "Sistema automatiškai išsijungs po %d sekundžių." msgstr[1] "Sistema automatiškai išsijungs po %d sekundžių."
msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių." msgstr[2] "Sistema automatiškai išsijungs po %d sekundžių."
#: js/ui/endSessionDialog.js:63 #: js/ui/endSessionDialog.js:65
msgctxt "checkbox" msgctxt "checkbox"
msgid "Install pending software updates" msgid "Install pending software updates"
msgstr "Įdiegti programinės įrangos atnaujinimus" msgstr "Įdiegti programinės įrangos atnaujinimus"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82 #: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button" msgctxt "button"
msgid "Restart" msgid "Restart"
msgstr "Paleisti iš naujo" msgstr "Paleisti iš naujo"
#: js/ui/endSessionDialog.js:68 #: js/ui/endSessionDialog.js:70
msgctxt "button" msgctxt "button"
msgid "Power Off" msgid "Power Off"
msgstr "Išjungti" msgstr "Išjungti"
#: js/ui/endSessionDialog.js:74 #: js/ui/endSessionDialog.js:76
msgctxt "title" msgctxt "title"
msgid "Restart" msgid "Restart"
msgstr "Paleisti iš naujo" msgstr "Paleisti iš naujo"
#: js/ui/endSessionDialog.js:76 #: js/ui/endSessionDialog.js:78
#, javascript-format #, javascript-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
@@ -1329,12 +1206,12 @@ msgstr[0] "Sistema bus paleista iš naujo po %d sekundės."
msgstr[1] "Sistema bus paleista iš naujo po %d sekundžių." msgstr[1] "Sistema bus paleista iš naujo po %d sekundžių."
msgstr[2] "Sistema bus paleista iš naujo po %d sekundžių." msgstr[2] "Sistema bus paleista iš naujo po %d sekundžių."
#: js/ui/endSessionDialog.js:89 #: js/ui/endSessionDialog.js:91
msgctxt "title" msgctxt "title"
msgid "Restart & Install Updates" msgid "Restart & Install Updates"
msgstr "Perleisti ir įdiegti atnaujinimus" msgstr "Perleisti ir įdiegti atnaujinimus"
#: js/ui/endSessionDialog.js:91 #: js/ui/endSessionDialog.js:93
#, javascript-format #, javascript-format
msgid "The system will automatically restart and install updates in %d second." msgid "The system will automatically restart and install updates in %d second."
msgid_plural "" msgid_plural ""
@@ -1346,22 +1223,22 @@ msgstr[1] ""
msgstr[2] "" msgstr[2] ""
"Sistema bus paleista iš naujo ir įdiegs atnaujinimus po %d sekundžių." "Sistema bus paleista iš naujo ir įdiegs atnaujinimus po %d sekundžių."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116 #: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button" msgctxt "button"
msgid "Restart &amp; Install" msgid "Restart &amp; Install"
msgstr "Perleisti ir įdiegti" msgstr "Perleisti ir įdiegti"
#: js/ui/endSessionDialog.js:98 #: js/ui/endSessionDialog.js:100
msgctxt "button" msgctxt "button"
msgid "Install &amp; Power Off" msgid "Install &amp; Power Off"
msgstr "Įdiegti ir išjungti" msgstr "Įdiegti ir išjungti"
#: js/ui/endSessionDialog.js:99 #: js/ui/endSessionDialog.js:101
msgctxt "checkbox" msgctxt "checkbox"
msgid "Power off after updates are installed" msgid "Power off after updates are installed"
msgstr "Išjungti baigus diegti atnaujinimus" msgstr "Išjungti baigus diegti atnaujinimus"
#: js/ui/endSessionDialog.js:106 #: js/ui/endSessionDialog.js:108
msgctxt "title" msgctxt "title"
msgid "Restart & Install Upgrade" msgid "Restart & Install Upgrade"
msgstr "Perleisti ir įdiegti atnaujinimą" msgstr "Perleisti ir įdiegti atnaujinimą"
@@ -1369,7 +1246,7 @@ msgstr "Perleisti ir įdiegti atnaujinimą"
#. Translators: This is the text displayed for system upgrades in the #. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and #. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to #. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111 #: js/ui/endSessionDialog.js:113
#, javascript-format #, javascript-format
msgid "" msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long " "%s %s will be installed after restart. Upgrade installation can take a long "
@@ -1379,17 +1256,17 @@ msgstr ""
"įsitikinkite, kad pasidarėte atsarginę duomenų kopiją, ir kad kompiuteris " "įsitikinkite, kad pasidarėte atsarginę duomenų kopiją, ir kad kompiuteris "
"yra įjungtas į elektros tinklą." "yra įjungtas į elektros tinklą."
#: js/ui/endSessionDialog.js:259 #: js/ui/endSessionDialog.js:261
msgid "Running on battery power: Please plug in before installing updates." msgid "Running on battery power: Please plug in before installing updates."
msgstr "" msgstr ""
"Veikia naudojant baterijos energiją: įjunkite į elektros tinklą prieš " "Veikia naudojant baterijos energiją: įjunkite į elektros tinklą prieš "
"įdiegdami atnaujinimus." "įdiegdami atnaujinimus."
#: js/ui/endSessionDialog.js:268 #: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work" msgid "Some applications are busy or have unsaved work"
msgstr "Kai kurios programos dirba arba turi neįrašyto darbo." msgstr "Kai kurios programos dirba arba turi neįrašyto darbo."
#: js/ui/endSessionDialog.js:273 #: js/ui/endSessionDialog.js:275
msgid "Other users are logged in" msgid "Other users are logged in"
msgstr "Yra prisijungusių kitų naudotojų" msgstr "Yra prisijungusių kitų naudotojų"
@@ -1405,24 +1282,24 @@ msgstr "%s (nutolęs)"
msgid "%s (console)" msgid "%s (console)"
msgstr "%s (komandų eilutė)" msgstr "%s (komandų eilutė)"
#: js/ui/extensionDownloader.js:169 #: js/ui/extensionDownloader.js:185
msgid "Install" msgid "Install"
msgstr "Įdiegti" msgstr "Įdiegti"
#: js/ui/extensionDownloader.js:175 #: js/ui/extensionDownloader.js:191
msgid "Install Extension" msgid "Install Extension"
msgstr "Išdiegti plėtinį" msgstr "Išdiegti plėtinį"
#: js/ui/extensionDownloader.js:176 #: js/ui/extensionDownloader.js:192
#, javascript-format #, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?" msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?" msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
#: js/ui/extensionSystem.js:228 #: js/ui/extensionSystem.js:233
msgid "Extension Updates Available" msgid "Extension Updates Available"
msgstr "Yra plėtinių atnaujinimų" msgstr "Yra plėtinių atnaujinimų"
#: js/ui/extensionSystem.js:229 #: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed." msgid "Extension updates are ready to be installed."
msgstr "Plėtinių atnaujinimai paruošti diegimui." msgstr "Plėtinių atnaujinimai paruošti diegimui."
@@ -1569,11 +1446,11 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page" msgid "Web Page"
msgstr "Tinklalapis" msgstr "Tinklalapis"
#: js/ui/main.js:269 #: js/ui/main.js:277
msgid "Logged in as a privileged user" msgid "Logged in as a privileged user"
msgstr "Prisijungta privilegijuotu naudotoju" msgstr "Prisijungta privilegijuotu naudotoju"
#: js/ui/main.js:270 #: js/ui/main.js:278
msgid "" msgid ""
"Running a session as a privileged user should be avoided for security " "Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user." "reasons. If possible, you should log in as a normal user."
@@ -1581,15 +1458,15 @@ msgstr ""
"Saugumo sumetimais turėtų būti vengiama vykdyti seansus privilegijuotais " "Saugumo sumetimais turėtų būti vengiama vykdyti seansus privilegijuotais "
"naudotojais. Jei įmanoma, turėtumėt visada prisjungti normaliu naudotoju." "naudotojais. Jei įmanoma, turėtumėt visada prisjungti normaliu naudotoju."
#: js/ui/main.js:276 #: js/ui/main.js:317
msgid "Screen Lock disabled" msgid "Screen Lock disabled"
msgstr "Ekrano užraktas išjungtas" msgstr "Ekrano užraktas išjungtas"
#: js/ui/main.js:277 #: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager." msgid "Screen Locking requires the GNOME display manager."
msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės." msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės."
#: js/ui/messageTray.js:1554 #: js/ui/messageTray.js:1551
msgid "System Information" msgid "System Information"
msgstr "Sistemos informacija" msgstr "Sistemos informacija"
@@ -2317,25 +2194,23 @@ msgstr "Tik vidinis"
#. Translators: This is a time format for a date in #. Translators: This is a time format for a date in
#. long format #. long format
#: js/ui/unlockDialog.js:370 #: js/ui/unlockDialog.js:371
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d" msgid "%A %B %-d"
msgstr "%A %B %-d" msgstr "%A %B %-d"
#: js/ui/unlockDialog.js:376 #: js/ui/unlockDialog.js:377
msgid "Swipe up to unlock" msgid "Swipe up to unlock"
msgstr "Atrakinkite perbraukdami" msgstr "Atrakinkite perbraukdami"
#: js/ui/unlockDialog.js:377 #: js/ui/unlockDialog.js:378
msgid "Click or press a key to unlock" msgid "Click or press a key to unlock"
msgstr "Atrakinkite mygtuko ar klavišo paspaudimu" msgstr "Atrakinkite mygtuko ar klavišo paspaudimu"
#: js/ui/unlockDialog.js:549 #: js/ui/unlockDialog.js:550
msgid "Unlock Window" msgid "Unlock Window"
msgstr "Atrakinimo langas" msgstr "Atrakinimo langas"
#: js/ui/unlockDialog.js:558 #: js/ui/unlockDialog.js:559
msgid "Log in as another user" msgid "Log in as another user"
msgstr "Prisijungti kitu naudotoju" msgstr "Prisijungti kitu naudotoju"
@@ -2455,19 +2330,19 @@ msgstr "Užverti"
msgid "Evolution Calendar" msgid "Evolution Calendar"
msgstr "Evolution kalendorius" msgstr "Evolution kalendorius"
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249 #: src/main.c:458 subprojects/extensions-tool/src/main.c:249
msgid "Print version" msgid "Print version"
msgstr "Išvesti versijos numerį" msgstr "Išvesti versijos numerį"
#: src/main.c:466 #: src/main.c:464
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Veiksena, naudojama GDM prisijungimo ekrane" msgstr "Veiksena, naudojama GDM prisijungimo ekrane"
#: src/main.c:472 #: src/main.c:470
msgid "Use a specific mode, e.g. “gdm” for login screen" msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui" msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
#: src/main.c:478 #: src/main.c:476
msgid "List possible modes" msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas" msgstr "Išvardinti galimas veiksenas"
@@ -2493,6 +2368,137 @@ msgstr "Slaptažodis negali būti tuščias"
msgid "Authentication dialog was dismissed by the user" msgid "Authentication dialog was dismissed by the user"
msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą" msgstr "Naudotojas užvėrė tapatybės patvirtinimo dialogą"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Plėtiniai"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "Tvarkyti GNOME plėtinius"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr ""
"GNOME Plėtiniai atnaujina plėtinius, konfigūruoja jų nustatymus bei šalina "
"arba išjungia nepageidaujamus plėtinius."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigūruoti GNOME Shell plėtinius"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Pašalinti „%s“?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Jei pašalinsite plėtinį, reikės grįžti prie jo atsisiuntimo, jei norėsite jį "
"vėl įjungti"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Pašalinti"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Išvertė:\n"
"Aurimas Černius <aurisc4@gmail.com>"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d plėtinys bus atnaujintas kitą kartą prisijungus."
msgstr[1] "%d plėtiniai bus atnaujintas kitą kartą prisijungus."
msgstr[2] "%d plėtinių bus atnaujintas kitą kartą prisijungus."
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Aprašymas"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versija"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autorius"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Tinklalapis"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Pašalinti…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Žinynas"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Apie plėtinius"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Plėtinius galima rasti ir įdiegti per apsilankius <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Įspėjimas"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Plėtiniai gali sukelti sistemai problemų, įskaitant našumo problemas. Jei su "
"tokiomis susidursite, rekomenduojama išjungti visus plėtinius."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Įdiegtas rankomis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Vidinis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Nėra įdiegtų plėtinių"
#: subprojects/extensions-app/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Atsiprašome, bet nepavyko gauti įdiegtų plėtinių sąrašo. Įsitikinkite, kad "
"esate prisijungęs prie GNOME ir bandykite vėl."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Atsijungti…"
#. Translators: a file path to an extension directory #. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125 #: subprojects/extensions-tool/src/command-create.c:125
#, c-format #, c-format
@@ -2831,6 +2837,9 @@ msgstr[2] "%u įvesčių"
msgid "System Sounds" msgid "System Sounds"
msgstr "Sistemos garsai" msgstr "Sistemos garsai"
#~ msgid "Copy Error"
#~ msgstr "Kopijuoti klaidą"
#~ msgid "Next" #~ msgid "Next"
#~ msgstr "Kitas" #~ msgstr "Kitas"

1850
po/lv.po

File diff suppressed because it is too large Load Diff

1704
po/nb.po

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More