Compare commits

..

131 Commits

Author SHA1 Message Date
f1af37f220 Bump version to 3.37.1
Update NEWS.
2020-04-29 21:40:33 +02:00
d3880c0bff main: Unset the right prevFocus actor after the focus stack got shifted
When a modal that's not on top of the modalActorFocusStack gets popped,
we shift the focus stack as described in popModal() to ensure the chain
remains correct. That however destroys the association of a modal actor
and its prevFocus actor on the focus stack, because the prevFocus actors
are now moved to different entries of the stack.

Now when a prevFocus actor gets destroyed, we don't handle that case
correctly and search for the modal actor that was associated with the
prevFocus actor before the stack was shifted, which means we end up
unsetting the wrong prevFocus actor.

So fix that and search the stack for the prevFocus actor which is being
destroyed instead to unset the correct entry.

Thanks to Florian Müllner for figuring out the actual issue and
proposing this fix.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2446
2020-04-29 12:40:13 +02:00
4dfa39457e st/theme-context: Also remove theme nodes on stylesheet changes
StThemeNodes are built around the assumption that they're "immutable",
that means they are created once with certain parameters (that resolve
to certain css properties) and then replaced with new ones in case those
parameters changed.

Changes to the internal information stored by theme nodes (i.e. the css
properties, font names or the cached scale-factor) are not all handled
the same though: For changes to the font or the scale-factor we remove
all theme nodes from the cache and let the widgets which are on stage
generate new theme nodes. For changes to the css properties/the
stylesheet, we invalidate the properties of all theme nodes but keep
them in the cache using `_st_theme_node_reset_for_stylesheet_change()`.

So be a bit more consistent and handle changes to the css-properties/the
stylesheet stored by StThemeNodes the same way as changes to the font or
scale-factor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1218
2020-04-28 19:53:58 +00:00
325ff73c5b st: Ensure to reset all widget theme nodes
Theme node invalidation stops at unmapped widgets, and widgets
that forget to chain up to the default ::style-changed implementation.
This may leave stale nodes that were invalidated on
StThemeContext::changed, but are still set on widgets, and maybe
used for CSS property lookups.

Make sure that theme node invalidation happens always by moving
propagation outside the vfunc, and ensure the theme nodes are reset
across the full actor tree. Emission of ::style-changed, and obtaining
a new theme node may be delayed till when the actor is mapped.

The theme node is also cleared after unparenting an actor to avoid
stale references.

This ensures that all widgets get their theme node cleared after
stylesheet changes, instead of maybe being left with a theme node
that's been cleared of all its properties.

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1223
2020-04-28 18:46:13 +00:00
1fa4e3b1b2 Update Turkish translation 2020-04-28 13:19:54 +00:00
f89091d0f0 ci: Rebase extension-ci image to F32
... and base our 'js' test on the js engine we are actually using.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1177
2020-04-28 09:04:49 +00:00
859927df39 ci: Document how to build the image
Updating the CI image is rare enough to not know the involved
commands by heart, so adding a comment like mutter did a while
ago makes perfect sense.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1177
2020-04-28 09:04:49 +00:00
e7512fcd79 ci: Rename Dockerfile
Our primary image now comes from mutter, so the default Dockerfile
name is free for our JS image.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1177
2020-04-28 09:04:49 +00:00
2b70151794 keyboard: Minor cleanup
Use the more concise operator shorthand.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1177
2020-04-28 09:04:49 +00:00
153b7d525d cleanup: Don't linebreak before closing parentheses
Otherwise recent versions of eslint want "dangling" commas,
which is at least ugly considering that most functions don't
allow adding arguments at leasure.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1177
2020-04-28 09:04:49 +00:00
2e80995f19 overviewControls: Remove transitions before updating adjustment value
The workspace switcher blocks state updates while the indicator is
animating. Since commit 9c1940ef9d the indicator is considered to
be animating when the workspace adjustment's value doesn't equal the
active workspace.

There is one case though where this breaks badly: When a workspace
is inserted before the active one, the adjustment's upper and value
properties are changed without transitions. But if that change happens
while there's an ongoing transition to the previously active workspace,
the value gets out of sync with the active workspace and we end up
blocking state updates indefinitely.

Fix this by removing any transitions before setting the adjustment
value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2625
2020-04-28 01:28:50 +02:00
9232cbf8a7 ci: Cache eslint results
While this isn't useful during CI, it can provide a massive speed-up
when used locally.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1094
2020-04-27 22:15:25 +00:00
55f74bb863 Add small gnome-shell-extension-prefs script
Commit d76162c1c0 removed the ability to pass an extension UUID to
the Extensions app, when we moved the dialog to a portal and made
gnome-shell use it instead of spawning the extensions app.

However that missed that many extensions called out to the app to
open their own prefs.

While extensions are encouraged to switch to the new openPrefs()
convenience method added in commit 8030d9ad32, restore the old
behavior with a small script under the old gnome-shell-extension-prefs
name that either calls out to the portal or launches the app.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1220
2020-04-28 00:06:19 +02:00
b02e3719b3 extensions-app: Rename executable
We kept the old binary name when overhauling the tool for the Extensions
app to avoid unnecessary churn for packagers/distributors.

However we now have a reason to "free" the old name, so rename the binary
to match the (sub)project name.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1220
2020-04-28 00:06:19 +02:00
3ba4304da9 keyboard: Add missing setter
We override the :visible property for the keyboard actor, but don't
provide a corresponding setter. The property is therefore read-only
on the javascript level, and any attempt to set it will fail.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2691
2020-04-27 23:48:54 +02:00
49d6db34b7 altTab: Set allocation before allocating children
Just as with the last commit, we should not break the assumption made by
Clutter that parents have their allocation set before their children get
allocated, so fix that here, too.

In this case we have to fix it by chaining up to the parent vfunc
override and updating the allocation once more before allocating the
`this._label` child.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1615
2020-04-27 19:53:27 +02:00
63a0e521fd boxpointer: Call set_allocation before allocating child
It's important to update the allocation of the parent before allocating
its children, it's an assumption we make in a lot of places.

This broke resource scale calculation for boxpointers and their
children when multiple monitors with different scales are used and the
primary monitor is not positioned at x=0, y=0.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1615
2020-04-27 19:53:20 +02:00
c00d79bae2 calendar-server: Improve performance by properly using ECalClientView
The previous code always restarted whole ECalClientView when it received
any changes in it, which could sometimes lead to constant repeated restarts
of the view.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1875
2020-04-27 16:14:57 +00:00
30d902f898 calendar-server: Drop separate private struct
CalendarSources is a final type, so the regular instance struct is
already non-public. No need for a separate private struct and priv
pointer ...

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1875
2020-04-27 16:14:57 +00:00
8f9da6f801 calendar-server: Add missing spaces
... according to coding style.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1875
2020-04-27 16:14:57 +00:00
20648e9207 calendar-server: Replace tabs with spaces
... according to the coding style.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1875
2020-04-27 16:14:57 +00:00
614fe202e0 Updated Spanish translation 2020-04-27 18:14:01 +02:00
c3646a7642 js/main: Inhibit remote access when depending on session mode
The session mode determines whether the screen casting should work or
not, but until now only dealt with the built in screen cast, not the
ones using PipeWire. Add the newly added API for inhibiting remote
access when the session mode says screencasts are not allowed.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1210
2020-04-27 15:18:18 +00:00
772df91762 shell/global: Add 'backend' property
Replace all Meta.get_backend() with global.backend. Maybe sooner or
later we can further decrease the amount of singletons handled by
libmutter.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1210
2020-04-27 15:18:18 +00:00
c90910731f croco: Remove duplicated conditions
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1219
2020-04-27 16:23:46 +02:00
ba69cd99d1 ci: Simplify flatpak job
The template has been updated to rewrite the manifest to use the
checked out tree, so it's no longer necessary to pass additional
build arguments (which are now ignored) or generate translations
before the build (it's already in the manifest).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1217
2020-04-27 13:16:55 +00:00
fb6e341efd Revert "ci: Revert to a previous version of the flatpak template"
This reverts commit 1ff638a51f.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1217
2020-04-27 13:16:55 +00:00
3dc4f01113 JS: migrate from the global window to globalThis
As of mozjs68 (gjs-1.64) `globalThis` is recommended over `window` and
it makes more sense in this context anyways. Migrate the few instances
of `window` we use and adjust the eslint configuration.

`window` will continue to resolve to `globalThis`, so this won't affect
extensions or other downstream users.

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

closes #2322
2020-04-26 19:07:02 -07:00
d94d0f60c8 calendar: Do less work in hasEvents()
getEvents() filters all events for the given range and sorts the result.

That's more than we need when checking whether there are any events,
where we only care that there's at least one event in the range.

Address this by splitting out the event filtering into a generator
function, so hasEvents() can return after at most one iteration.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1192
2020-04-26 16:20:49 +00:00
8d79f6f4c8 calendar: Update events on changes
We track messages so that we can account for just added and removed
events instead of having to rebuild the entire list, however it's
also possible that the time or summary of an existing event changed.

Account for that by updating existing messages in-place.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1192
2020-04-26 16:20:49 +00:00
c5e5bb0be1 Update Basque translation 2020-04-25 17:21:35 +00:00
8d139bbd95 authPrompt: Grab key focus when making entry sensitive
We currently let the entry of the autoPrompt grab the key focus inside
setQuestion(), which is called from _onAskQuestion(), which is the
callback of the "ask-question" signal.

It seems that the "ask-question" signal isn't emitted again right after
the password-check failed, but a few seconds after that. Since we get
the "verification-failed" signal earlier than "ask-question" (right
after we know the check failed) and we also get a hint whether the entry
should be usable again with the canRetry argument, we can also grab key
focus to in the same step.

So do that by grabbing key focus when making the entry sensitive.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2655
2020-04-25 14:54:07 +00:00
fb1bb291eb unlockDialog: Call AuthPrompt.addCharacter() directly
The additional function UnlockDialog.addCharacter() is only used at one
place, so we can simply remove it and call AuthPrompt.addCharacter()
directly. The AuthPrompt is shown right before that anyway.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1209
2020-04-25 14:54:07 +00:00
3199620a83 systemActions: include ASCII alternatives in search index
With this change, "eteindre" matches "éteindre" (the French translation
for "power off"), consistent with search for applications where "e"
matches "é".

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2688
2020-04-25 13:55:20 +01:00
c88bb66369 Update Ukrainian translation 2020-04-25 08:08:40 +00:00
a60d57ea1f screenShield: Don't inhibit suspend during initial setup
Normally, we inhibit suspend while locking the screen. But in the
session mode used for gnome-initial-setup locking is not supported, so
in that case this inhibit call is pointless and should be avoided.
Without this patch you get the following error when you suspend and
resume during initial setup:

JS ERROR: Error getting systemd inhibitor: Gio.IOErrorEnum:
GDBus.Error:org.freedesktop.login1.OperationInProgress: The operation
inhibition has been requested for is already running
_promisify/proto[asyncFunc]/</<@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:435:45

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1213
2020-04-24 23:47:31 +00:00
527ce66cd4 screenShield: Fix use of null this._dialog
On Fedora 32 if you close the laptop lid during gnome-initial-setup,
gnome-shell hits this error:

JS ERROR: Exception in callback for signal: prepare-for-sleep: TypeError: this._dialog is undefined
_resetLockScreen@resource:///org/gnome/shell/ui/screenShield.js:434:9
activate@resource:///org/gnome/shell/ui/screenShield.js:571:14
lock@resource:///org/gnome/shell/ui/screenShield.js:617:14
_prepareForSleep@resource:///org/gnome/shell/ui/screenShield.js:219:22
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
_prepareForSleep@resource:///org/gnome/shell/misc/loginManager.js:198:14
_emit@resource:///org/gnome/gjs/modules/core/_signals.js:133:47
_convertToNativeSignal@resource:///org/gnome/gjs/modules/core/overrides/Gio.js:169:19

This is because _ensureUnlockDialog() hit its first early return. So
return early from activate() in that case, so this._dialog doesn't get
used while it's null.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1213
2020-04-24 23:47:31 +00:00
40415a6849 Update Persian translation 2020-04-24 20:06:24 +00:00
1ff638a51f ci: Revert to a previous version of the flatpak template
A new version seems to be causing some issues, so
use the previous revision until it's resolved

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1214
2020-04-24 20:34:32 +02:00
2a9ccf2e2c appDisplay: Return the parent class' result in overrides
StButton returns CLUTTER_EVENT_STOP in various circumstances, but
AppIcon throws that away and returns CLUTTER_EVENT_PROPAGATE even
when it should stop.

Return the parent class' result instead of CLUTTER_EVENT_PROPAGATE.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1211
2020-04-23 19:14:43 -03:00
2909d91c13 appDisplay: Use const instead of let in vfunc_leave_event
The return value of the chain up is not changed, let's use the
proper descriptor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1211
2020-04-23 19:14:40 -03:00
0dba12193d st: Update to new API for creating paint context
It now takes a redraw clip and flags.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1207
2020-04-23 14:46:03 +00:00
02f40b3b63 Update Czech translation 2020-04-22 13:01:15 +00:00
1fd51efc7f Update Brazilian Portuguese translation
(cherry picked from commit 60ee6ab4b7)
2020-04-22 12:33:18 +00:00
6f881f232e test-theme: Check return value of chdir()
I noticed the following warning while building the .deb package for
gnome-shell on Endless OS:

      ../src/st/test-theme.c: In function ‘main’:
      ../src/st/test-theme.c:549:3: warning: ignoring return value of ‘chdir’, declared with attribute warn_unused_result [-Wunused-result]
         chdir (cwd);
         ^~~~~~~~~~~

(Of course this is very unlikely to fail in practice.)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1208
2020-04-21 15:00:23 +02:00
be12c71534 loginDialog: Get resource scale by get_resource_scale
To shut up 'Getting invalid resource scale property' warnings in the log.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1206
2020-04-21 13:48:56 +02:00
6aa1b817c9 messageTray: Make NotificationPolicy properties read-only
These properties are never written; in the base class they are always
their default values, and in the subclasses the getters are overridden.

This will be necessary because GJS is adding checks to make sure that
readable properties always have a getter, writable properties always
have a setter, and that the variations of camelCase/snake_case are
handled correctly. It's supposedly backwards compatible, but that
assumes that code is not doing things like forgetting a setter on a
writable property. (If the missing setter had ever been called, it might
have led to a crash, which is why we've made this change.)

This is the minimally invasive patch which should work with both older
and newer versions of GJS. If you decide to require GJS 1.65.2, then
you'll also be able to remove the getters from NotificationPolicy as
well.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1205
2020-04-20 17:27:48 -07:00
300961e19e Update zh_CN translations 2020-04-18 09:10:21 +00:00
b191e9ef91 authPrompt: Fix spinner alignment
We want the spinner to be centered with regard to the entry, but
constraining the height breaks that:

 1. clutter_actor_allocate() is called with the available size
 2. clutter_actor_update_constraints() then adjusts that according
    to the constraints
 3. clutter_actor_adjust_allocation() applies the margin/expand/align
    properties.

The issue there is that 2. reduces the allocation to the desired size,
so there is no more extra space to distribute in 3.

We can fix this by either constraining everything (and rely on the
cancel button's alignment) or limit the constraint to the width. The
latter seems more appropriate, given that the constraint is only used
to center the entry horizontally.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2628
2020-04-17 22:35:31 +00:00
5ec5978d4a windowManager: Fix ngettext() call
We don't pass the number that allows gettext to decide on the
correct string, whoops.

Spotted by Alexandre Franke.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2649
2020-04-17 22:25:09 +00:00
f4d90bc127 polkitAgent: Reset the session request timeout when removing it
When handing the resetDialog request we're leaving a source ID alive,
leading this error:

(gnome-shell:22464): GLib-CRITICAL **: 17:46:11.065: Source ID 12934 was not
found when attempting to remove it:

== Stack trace for context 0x55c9246916c0 ==
#0 55c9249151b8 i   js/ui/components/polkitAgent.js:391 (11f71fd544c0 @ 100)
#1 7ffc55140aa0 b   self-hosted:1009 (3062ba49af88 @ 423)
#2 55c924915120 i   js/ui/modalDialog.js:167 (1c9e50ae9880 @ 62)
#3 55c924915098 i   js/ui/modalDialog.js:186 (1c9e50ae9970 @ 12)
#4 55c924915008 i   js/ui/environment.js:75 (1c9e50a8d5b0 @ 98)
#5 55c924914f78 i   js/ui/environment.js:149 (1c9e50a8d9e8 @ 14)

So, reset the source handle to avoid trying to remove it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1203
2020-04-17 16:17:51 +00:00
bfa34914db polkitAgent: Return GLib.SOURCE_REMOVE on timeout callback
resetDialog is used (also) as GLib timeout function, so while just returning
an undefined value will stop the timeout anyways, it's just cleaner to
use the GSource expected return values

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1203
2020-04-17 16:17:51 +00:00
8d1e4659d1 js/ui: Always use namespace for animation modes
Clutter.Animation doesn't contain any animation modes, they live in
Clutter.AnimationMode. The places we did `Clutter.Animation.WHATEVER`
just evaluated to `undefined`. Thus, use the correct namespace for the
animation mode enums.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1199
2020-04-15 13:59:38 +00:00
b3b91f1699 js: Drop tweener.js
We're using clutter's animation framework now, so lets drop the old
tweener support layer.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1200
2020-04-15 13:25:14 +00:00
ff4c5270d3 build: Obtain systemduserunitdir from pkg-config
Previously, this prevented local installation because systemd did not
make the variable's prefix overridable

https://github.com/systemd/systemd/issues/9595

but since it has been fixed in systemd 242, we can finally use that.

---

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1194
2020-04-13 15:27:09 +00:00
e240f7ea59 build: Install keybindings relative to our datadír
It is a good practice to install files relative to our own variables

https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/

and it is required on systems like NixOS.

---

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1194
2020-04-13 15:27:09 +00:00
9f1ad5d86d extension-tool/build: Install completions relative to our datadír
It is a good practice to install files relative to our own variables

https://www.bassi.io/articles/2018/03/15/pkg-config-and-paths/

and it is required on systems like NixOS.

Thanks to Iñigo, bash-completion support that since 2.10:

https://github.com/scop/bash-completion/pull/344

---

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1194
2020-04-13 15:27:09 +00:00
a1ab32af0f Update Finnish translation
(cherry picked from commit cc0fac895c)
2020-04-13 15:03:35 +00:00
3fac0632a8 appDisplay: Look up directory- instead of category translations
Translations are provided by .directory files, so trying to look
up a category name without the suffix will always fail.

Commit 343b3351f1 tried to fix this previously by changing the
saved keys, but that broke existing translatable folders.

Appending the .directory suffix for the lookup instead fixes the
issue without regressing non-custom folders.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2623
2020-04-13 14:56:34 +00:00
c2b518929d Revert "app-cache: Fix cache for folder translations"
Existing folders as created by gnome-software (including the
default ones) all have the .directory suffix, so dropping
the suffix from the keys broke those folders.

This reverts commit 343b3351f1.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2623
2020-04-13 14:56:34 +00:00
c422d82752 Update Esperanto translation 2020-04-11 18:21:21 +00:00
da0c7fc2b6 dateMenu: Update empty weather label
Remove subtitle for the empty weather state
to match world clocks button.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2179
2020-04-09 10:52:44 -03:00
167bc080d9 appDisplay: Reorganize AppDisplay actor hierarchy
Right now, the actor hierarchy is such that the scroll view
does not contain the actual grid. It looks as follows:

              StScrollView
                    ↓
               StBoxLayout
                    ↓
                ShellStack
                ↓        ↓
   PaginatedIconGrid     StWidget

This hierarchy can be slightly reorganized by changing it to be as
follows:

            ShellStack
             ↓     ↓
   StScrollView   StWidget
        ↓
   StBoxLayout
        ↓
 PaginatedIconGrid

This will simplify future work where the PaginatedIconGrid will be
an implementation of StScrollable, in which case we'll be able to
simply remove the StBoxLayout from there.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1191
2020-04-08 21:12:06 -03:00
7d7a15f978 st/entry: Allow hint actor to shrink
We currently always ignore the minimum width of the hint actor and
request/allocate the preferred width. This can be problematic with
labels with long text, where we should rather ellipsize the text
than allow the entry to grow indefinively.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2607
2020-04-08 22:41:19 +00:00
1b5cf0b8a8 build: Bump version requirement
We are currently optionally using a 0.53 feature, bump the requirement
to make it non-optional.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1186
2020-04-07 23:13:27 +02:00
306b005943 extensions-tool: Add small indicator template
Adding an additional icon to the top bar is one of the more common
patterns used by extensions. Make this easier by providing a template
for it.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
d229abf07d extensions-tool: Prompt for template when appropriate
When creating an extension interactively, we currently always use
the default template unless the --template option is used.

Instead, display the list of available templates to the user and
prompt them to pick one if it wasn't specified.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
6f6251c0bc extensions-tool: Add --template create option
We now have everything in place to allow users to pick a template
other than the default one (although at the moment it's the only
one we have), so add a corresponding option.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
fd034e3551 extensions-tool: Add hidden --list-templates option
This isn't a very useful option on its own, but will be used to
provide completions for a user-visible --template option.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
f9bee05d49 extensions-tool: Add template metadata
When we allow users to choose between different templates, we should
provide some context for each template to facilitate that choice.

Add that metadata in the form of a .desktop file, which allows us to
specify name and description, and is well supported by our translation
infrastructure.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
37c6fbc6b2 extensions-tool: Prepare for alternative templates
The template used when creating a new extension is intentionally
minimal, as the sample code in the old extensions-tool proved to
be annoying more often than not.

However as we support per-command options, we don't have to limit
ourselves to a single template, and can offer alternatives for
common use cases.

To prepare for that, namespace the existing template by moving it
into a subfolder.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
9719604b79 extensions-tool: Separate create metadata when prompting
When using the create command's --interactive option, we prompt for
any metadata that wasn't passed on the command line. As every prompt
is preceded by a short multi-line description, it is hard to follow
when everything is lumped together.

Improve legibility by separating all prompts by newlines.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
b6262f0666 extensions-tool: Handle NULL input when prompting for metadata
g_data_input_stream_read_line_utf8() may return NULL, for example
when interrupting the prompt with ^D. Handle that case and keep
prompting until we got a line.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
6c0bd207e9 ci: Handle POTFILES.skip in potfiles check
Allow marking files as ignored when searching for translatable
strings, similar to "good" ol' intltool.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/812
2020-04-07 20:27:00 +00:00
91b13effc8 appFavorites: Hide favourites which are blacklisted by parental controls
If a favourite is set for an app which is blocked by parental controls,
that favourite should be hidden.

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/465
2020-04-07 17:47:33 +02:00
143ab6ac7f search: Hide search providers which are blacklisted by parental controls
If a search provider is installed by an app which is blacklisted for the
current user by their parental controls, don’t show it or results for
it.

Currently, this only filters ‘remote’ (not built-in to the shell) search
providers. This seems fine for now; in future it could be expanded to
also filter built-in search providers, if any of them end up needing to
be filtered.

No corresponding changes need to be made `remoteSearch.js`, because the
results of `loadRemoteSearchProviders()` are filtered in `search.js`.

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/465
2020-04-07 17:47:33 +02:00
3e5b90dbba js: Add support for parental controls filtering to the desktop
Filter the apps shown on the desktop and in search results according to
whether they are blacklisted by the user’s parental controls.

This supports dynamically updating the filter during the user’s session.

This adds an optional dependency on libmalcontent. If that’s unavailable, no
parental controls filtering will occur.

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/465
2020-04-07 17:47:29 +02:00
b82039e324 util: Add a wrapper around getuid()
So we can use it from JS in an upcoming commit.

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/465
2020-04-07 17:46:39 +02:00
83862d04a0 build: Bump gjs requirement
We require gjs!410 for commit 764527. There has been a gjs release
with that change now, so bump the requirement accordingly.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2559
2020-04-07 14:06:45 +00:00
52d07f6d9b ci: Update to F32-based image
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2559
2020-04-07 14:06:45 +00:00
21de88c3ba bluetooth: Do not update hadSetupDevices on adapter changes
While we now deal more gracefully with adapter removals, we can
still mess up the hadSetupDevices tracking:

As adapters become available before any devices, we'll always
reset the setting to false when Bluetooth is turned on. And if
no set up device happens to be in range, it will still be false
when Bluetooth is turned off again.

To address that, only update the setting if we have an adapter
(like we do now) and we had one before (so it wasn't the adapter
itself that changed).

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1174
2020-04-07 15:44:50 +02:00
456ca3d3e0 bluetooth: Do not sync() immediately on model changes
Our intended behavior when bluetooth is turned off is to keep
the menu visible if devices had been set up previously.

However since gnome-bluetooth@c437c729, devices are removed
first before removing the default adapter, so we now end up
always setting the property to false before checking for it.

Fix this by deferring all model changes to an idle, so that
we can process them as a unit. Do the same for proxy property
changes, as those may trigger a row-removal.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1174
2020-04-07 15:44:50 +02:00
f4ba3e4ab8 bluetooth: Fix showing menu when devices were set up
Since commit 26c2cb9f65, nDevices is always the actual number of
paired/trusted devices. So when bluetooth is turned off, it is
now 0 rather than forced to 1 if devices were set up previously.

Fix this by checking the property that tracks set up devices instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1174
2020-04-07 15:44:50 +02:00
d4db5a59c1 shell-app: Ignore invalid window PIDs
When building the list of window PIDs, it's possible Mutter doesn't know
about the PID the client has and meta_window_get_pid() will return 0. We
should handle this case by not adding the PID to the list of PIDs
instead of adding an invalid one to it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1184
2020-04-06 21:53:37 +00:00
4aee87a31b shell-window-tracker: Detect invalid PID values of 0
MetaWindows get_pid() API changed to use the client PID, which also
works for Wayland clients instead of only X11 clients now. This API
returns 0 instead of -1 for invalid PIDs, so update our check according
to that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1184
2020-04-06 21:53:37 +00:00
e8f5a842b1 theme: tone down weekend with events
Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2588
2020-04-06 20:54:37 +00:00
5c681a76b6 Update Ukrainian translation 2020-04-06 16:19:08 +00:00
53a24e6ddd 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 11:24:30 -03:00
b27c89f836 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 11:24:30 -03:00
9f870aa1c7 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 11:24:30 -03:00
c9cfeb8318 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 11:24:30 -03:00
497e66ce6a 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 11:24:30 -03:00
bc973b80d7 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
2020-04-06 10:45:55 +00:00
85846d88f0 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
2020-04-06 08:28:26 +00:00
6b7c85b079 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
2020-04-05 13:36:35 +00:00
d80ef67d1d extension-tool: Use enable/disable D-Bus API if possible
Commit 4589da957 added D-Bus API for enabling/disabling extensions,
use that if possible to provide better feedback and not clutter the
settings with non-existent UUIDs.

The old code path is preserved as fallback to keep the commands
working from outside a running shell session.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
2020-04-05 13:42:50 +02:00
62f3457a95 extensions-tool/uninstall: Error out for system extensions
UninstallExtensions() only returns whether the operation was successful,
not why it failed. However we know that only user extensions can be
uninstalled, so check that first to provide a more meaningful error.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
2020-04-05 13:42:50 +02:00
636ab4b0e9 extensions-tool: Split out get_extension_property() helper
For the prefs command, we first fetch the extension info to check
whether the extension exists and actually has preferences. This
pattern can be useful for other commands and properties, so split
out a generic helper function.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
2020-04-05 13:42:50 +02:00
23e382dd33 extensions-tool: Log existing errors
In many cases we currently only indicate failure in the return value,
which is easily missed. Print some meaningful errors instead.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
2020-04-05 13:42:50 +02:00
f5a170ce46 extensions-tool: Add common option to silence errors
Error reporting is useful when used interactively, but often undesirable
when used in scripts. Account for that with a common --quiet option,
which is more convenient than redirection stderr to /dev/null.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2391
2020-04-05 13:42:50 +02:00
fbd6beea2c extensions-app: Validate .desktop file during meson test
... if desktop-file-validate is available.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1160
2020-04-05 11:02:00 +00:00
360f5b1642 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
2020-04-05 11:02:00 +00:00
f0a785df9d extensions-app: Add developer name in metainfo
Unlike Software, flathub doesn't fall back to the "project group"
when no developer is specified, so add one.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1160
2020-04-05 11:02:00 +00:00
e2c1bfbedd extensions-app: Add flathub badge to README
The app is now on flathub, so brag about that.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1160
2020-04-05 11:02:00 +00:00
7e5a1cfd90 Update Latvian translation
(cherry picked from commit 6d38a4a7b3)
2020-04-04 16:14:55 +00:00
07deda593a 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
2020-04-04 16:20:35 +02:00
1ca39e8586 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
2020-04-04 13:21:54 +02:00
402fd8ec29 iconGrid: Downscale icon size when comparing to defaults
The return value of st_theme_node_lookup_length() is scaled according
to the scale factor. IconGrid.ICON_SIZE is not. However, when BaseIcon
tries to fetch the CSS value for "icon-size" (which returns a scaled
value), it uses it as-is, mixing the two coordinate systems.

Use a single coordinate system (unscaled sizes) in IconGrid.BaseIcon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1175
2020-04-03 16:04:40 -03:00
fbe2e30f38 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
2020-04-03 14:44:50 +00:00
fb6ead2881 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
2020-04-03 14:44:50 +00:00
7ff7fb5d3b 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
2020-04-03 14:28:24 +00:00
8030d9ad32 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
2020-04-03 15:27:37 +02:00
45bc850715 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
2020-04-03 15:23:26 +02:00
51a913730e workspace: Fix chaining up
Gah, accidentally dropped the 'vfunc' prefix :-(

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1172
2020-04-03 12:57:01 +00:00
0a4974ac8c extensions-app: Do not expand headerbar switch
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2563
2020-04-03 02:29:55 +00:00
1666fa195d js: Account for promisified call() method
A promisified method expects the callback parameter to be either
a function (in which case the original method is called normally)
or omitted altogether (in which case a Promise is returned).

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

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

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

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

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

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

Fixes 26c2cb9f6.

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

- Display single connected device name
  to show more relevant information

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

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2340
2020-04-02 00:15:37 +00:00
da44649e6f Update Persian translation
(cherry picked from commit 69426cbfda)
2020-04-01 01:43:14 +00:00
a0def23940 main: Don't override DesktopAppInfo desktop if already GNOME
During the shell initialization we call the (deprecated) function to
override the Desktop environment in Gio DesktopAppInfo to make sure that
applications are correctly shown (as per commit b2fbf5a2), however this
might break the cases in which $XDG_CURRENT_DESKTOP is already set and
contains GNOME (given that is now a list).

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

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

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1156
2020-03-31 20:27:12 +02:00
f49b58cf97 appDisplay: Clear animateLater callbacks when unmapping
In some situations we could end up not with lingering 'view-loaded'
handler. This could result in delayed spring animate-in being initiated,
e.g. after a minute after the activities overview was already closed.

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

Fixes: 5c33fe4a0a

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1155
2020-03-31 19:05:15 +02:00
cadd9a99c0 Update Chinese (Taiwan) translation
(cherry picked from commit 1ab5e6973a)
2020-03-31 16:07:40 +00:00
7061889a29 Update Friulian translation
(cherry picked from commit 1dea3341ec)
2020-03-31 11:14:43 +00:00
764527c8c9 js: Promisify async operations
Promises make asynchronous operations easier to manage, in particular
when used through the async/await syntax that allows for asynchronous
code to closely resemble synchronous one.

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

Use that to get rid of all those GAsyncReadyCallbacks!

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

View File

@ -18,7 +18,7 @@ variables:
- merge_requests
check_commit_log:
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
image: registry.gitlab.gnome.org/gnome/mutter/master:v4
stage: review
variables:
GIT_DEPTH: "100"
@ -28,10 +28,10 @@ check_commit_log:
- merge_requests
js_check:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
stage: review
script:
- find js -name '*.js' -exec js60 -c -s '{}' ';' 2>&1 | tee $JS_LOG
- find js -name '*.js' -exec js68 -c -s '{}' ';' 2>&1 | tee $JS_LOG
- (! grep -q . $JS_LOG)
<<: *only_default
artifacts:
@ -40,7 +40,7 @@ js_check:
when: on_failure
eslint:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
stage: review
script:
- ./.gitlab-ci/run-eslint.sh
@ -51,21 +51,21 @@ eslint:
when: always
potfile_check:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
stage: review
script:
- ./.gitlab-ci/check-potfiles.sh
<<: *only_default
no_template_check:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
stage: review
script:
- ./.gitlab-ci/check-template-strings.sh
<<: *only_default
build:
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
image: registry.gitlab.gnome.org/gnome/mutter/master:v4
stage: build
before_script:
- .gitlab-ci/checkout-mutter.sh
@ -83,7 +83,7 @@ build:
- build
test:
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
image: registry.gitlab.gnome.org/gnome/mutter/master:v4
stage: test
variables:
XDG_RUNTIME_DIR: "$CI_PROJECT_DIR/runtime-dir"
@ -100,7 +100,7 @@ test:
when: on_failure
test-pot:
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
image: registry.gitlab.gnome.org/gnome/mutter/master:v4
stage: test
before_script:
- ninja -C mutter/build install
@ -124,11 +124,7 @@ flatpak:
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:

24
.gitlab-ci/Dockerfile Normal file
View File

@ -0,0 +1,24 @@
# Rebuild and push with
#
# cd .gitlab-ci/
# podman build --format docker --no-cache -t registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2 .
# podman push registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v2
#
FROM registry.fedoraproject.org/fedora:32
RUN dnf -y update && dnf -y upgrade && \
dnf install -y 'dnf-command(copr)' git && \
# For syntax checks with `find . -name '*.js' -exec js68 -c -s '{}' ';'`
dnf install -y findutils mozjs68-devel && \
# For static analysis with eslint
dnf install -y nodejs && \
npm install -g eslint && \
# Shameless plug for my own tooling; useful for generating zip
dnf copr enable -y fmuellner/gnome-shell-ci && \
dnf install -y gnome-extensions-tool meson && \
dnf clean all

View File

@ -1,18 +0,0 @@
FROM registry.fedoraproject.org/fedora:latest
RUN dnf -y update && dnf -y upgrade && \
dnf install -y 'dnf-command(copr)' git && \
# For syntax checks with `find . -name '*.js' -exec js60 -c -s '{}' ';'`
dnf install -y findutils mozjs60-devel && \
# For static analysis with eslint
dnf install -y nodejs && \
npm install -g eslint && \
# Shameless plug for my own tooling; useful for generating zip
dnf copr enable -y fmuellner/gnome-shell-ci && \
dnf install -y gnome-extensions-tool meson && \
dnf clean all && \
rm -rf /var/cache/dnf

View File

@ -6,6 +6,11 @@ globs=('*.js' '*.c')
# find source files that contain gettext keywords
files=$(grep -lR ${globs[@]/#/--include=} '\(gettext\|[^I_)]_\)(' $srcdirs)
# filter out excluded files
if [ -f po/POTFILES.skip ]; then
files=$(for f in $files; do ! grep -q ^$f po/POTFILES.skip && echo $f; done)
fi
# find those that aren't listed in POTFILES.in
missing=$(for f in $files; do ! grep -q ^$f po/POTFILES.in && echo $f; done)

View File

@ -18,12 +18,14 @@ run_eslint() {
local extra_args=ARGS_$1
local output_var=OUTPUT_$1
local output=${!output_var}
local cache=.eslintcache-${1,,}
# ensure output exists even if eslint doesn't report any errors
mkdir -p $(dirname $output)
touch $output
eslint -f unix ${!extra_args} -o $output js subprojects/extensions-app/js
eslint -f unix --cache --cache-location $cache ${!extra_args} -o $output \
js subprojects/extensions-app/js
}
list_commit_range_additions() {

157
NEWS
View File

@ -1,145 +1,46 @@
3.36.4
======
* Hide switch-user button on lock screen if unsupported [Chingkai; #2687]
* Improve world clocks styling [PrOF-kk; #2825]
* Improve calendar-server performance [Florian, Milan; #1875]
* Fix regressions in redesigned modal dialogs [Florian, Jonas; #2491, !1336]
* Better support sandboxed apps with multiple .desktop files [Florian; #219]
* Fix on-screen keyboard size in portrait orientation [Florian; #2349]
* Support scrolling anywhere in slider menu items [Peter; #2795]
* Fixed crash [Marco; #2643]
* Plugged leaks [Sebastian, Florian; !1306, !1341]
* Misc. bug fixes and cleanups [Jonas, Daniel, Florian, Sebastian, MOZGIII,
Koki; !1119, !1289, !1331, !1192, !1340, !1327, !1279]
Contributors:
Marco Trevisan (Treviño), Chingkai, Milan Crha, Jonas Dreßler, Koki Fukuda,
Sebastian Keller, MOZGIII, Robert Mader, Florian Müllner, PrOF-kk,
Peter Simonyi, Daniel van Vugt
Translators:
Matej Urbančič [sl], sicklylife [ja], Fabio Tomat [fur],
Baurzhan Muftakhidinov [kk], Daniel Șerbănescu [ro]
3.36.3
======
* Add gnome-shell-extension-prefs wrapper for compatibility [Florian; !1220]
* Fix distorted fallback icons in top bar [Florian; #2578]
* Lower timeout for scrolling in overview [Alexander; #2602]
* Only start systemd units when running under systemd
[Carlos, Florian; #2755, !1242, !1252]
* Fix "ghost" media controls [Bryan; #2776]
* Fix zombie sockets from extensions downloader [Michael; #2774]
* Update world clocks offsets when timezone changes [Bryan; #2209]
* Fix "Do Not Disturb" setting getting reset on startup [Florian; #2804]
* Fix pad OSD glitches [Carlos; !1290]
* Fix matching notifications by PID [Florian; #2592]
* Only allow updates for extensions that aren't cached [Florian; !1248]
* Fixed crashes [Jonas, Florian; #2709, #2757]
* Misc. bug fixes and cleanups [Michael, Piotr, Philip, Florian, Amr,
AsciiWolf; !1233, !1205, !1229, #2751, !1232, #2796, !1249, !1263,
!1277, #2286, !1288, !1291]
Contributors:
AsciiWolf, Michael Catanzaro, Philip Chimento, Jonas Dreßler, Bryan Dunsmore,
Carlos Garnacho, Amr Ibrahim, Michael Lass, Alexander Mikhaylenko,
Florian Müllner
Translators:
Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Dušan Kazik [sk],
Piotr Drąg [pl], Daniel Mustieles [es], Nathan Follens [nl],
Bruce Cowan [en_GB], Florentina Mușat [ro], Yuri Chornoivan [uk],
Milo Casagrande [it], Anders Jonsson [sv], Charles Monzat [fr],
Daniel Șerbănescu [ro], sicklylife [ja], Kukuh Syafaat [id],
Emin Tufan Çetin [tr], Jiri Grönroos [fi], Марко Костић [sr],
Christian Kirbach [de], Changwoo Ryu [ko], Aurimas Černius [lt],
Matej Urbančič [sl]
3.36.2
3.37.1
======
* Improve bluetooth submenu title [Mariana; #2340]
* Add openPrefs() convenience method for extensions [Florian; !1163]
* Bring back support for empty StIcons [Andre, Jonas D.; !1173, !1178]
* Wake up screen when unlocking programmatically [Florian; !1158]
* Improve extensions tool error reporting [Florian; #2391]
* Improve handling of scale-factor changes [Georges; !1176]
* Fix translations of folder names [Florian; #2623]
* Fix delay on lock screen after entering wrong password [Jonas D.; #2655]
* Match ASCII alternatives of system actions [Will; #2688]
* Tone down weekend days with events in calendar [Jakub; #2588]
* Fix area screenshots on multi-monitor systems [Jonas Å; !1224]
* Fix showing bluetooth submenu when devices were set up [Florian; !1174]
* Add support for parental controls filtering [Philip W.; !465]
* Provide alternative extension templates [Florian; !812]
* Improve weather section's empty state [Mariana; #2179]
* Fix translations of folder names [Florian; #2623]
* Drop Tweener [Jonas Å.; !1200]
* Match ASCII alternatives of system actions [Will; #2688]
* Fix delay on lock screen after entering wrong password [Jonas D.; #2655]
* Use globalThis instead of window [Andy; #2322]
* Inhibit remote access when disabled by session mode [Jonas Å.; !1210]
* Improve calendar-server performance [Milan; #1875]
* Add gnome-shell-extension-prefs wrapper for compatibility [Florian; !1220]
* Fix stuck lock screen after unlock [Jonas D., Florian; #2446]
* Fixed crashes [Jonas D., Florian, Carlos; #2584, #2625, !1223, !1218]
* Misc. bug fixes and cleanups [Jonas Å., Marco, Andre, Florian, Jonas D.;
!1155, !1156, !1169, !1168, #2551, #2563, !1172, !1179, !1160, #2562, #2578,
!1203, #2649, #2628, #2691, #1615, #2607, !1228]
* Misc. bug fixes and cleanups [Florian, Jonas Å., Marco, Andre, Georges,
Jonas D., Jan, Philip Ch.,, Xiaoguang, Will, Jordan, Matthew, qarmin;
!1126, !1155, !1156, !1165, !1168, !1169, #2551, #2563, !1172, !1175, !1179,
!1160, #2562, #2578, !1184, #2559, !1186, #2607, !1191, !1194, !1199, !1203,
#2649, #2628, !1205, !1206, !1208, !1207, !1211, !1214, !1213, !1192, !1217,
!1219, #1615, #2691, !1094, !1177]
Contributors:
Marco Trevisan (Treviño), Jonas Dreßler, Carlos Garnacho,
Andre Moreira Magalhaes, Florian Müllner, Georges Basile Stavracas Neto,
Jakub Steiner, Will Thompson, Jonas Ådahl
Marco Trevisan (Treviño), Philip Chimento, Milan Crha, Jonas Dreßler,
Carlos Garnacho, Andy Holmes, Matthew Leeds, Andre Moreira Magalhaes,
Florian Müllner, Georges Basile Stavracas Neto, Jordan Petridis,
Mariana Picolo, Jakub Steiner, Will Thompson, Jan Tojnar, Xiaoguang Wang,
Philip Withnall, qarmin, Jonas Ådahl
Translators:
Fabio Tomat [fur], Cheng-Chia Tseng [zh_TW], Danial Behzadi [fa],
Jiri Grönroos [fi], Ibai Oihanguren Sala [eu], Марко Костић [sr],
Rūdolfs Mazurs [lv], Rafael Fontenelle [pt_BR], Petr Kovář [cs],
Daniel Rusek [cs]
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]
Rūdolfs Mazurs [lv], Yuri Chornoivan [uk], Carmen Bianca BAKKER [eo],
Dingzhong Chen [zh_CN], Rafael Fontenelle [pt_BR], Petr Kovář [cs],
Asier Sarasua Garmendia [eu], Daniel Mustieles [es], Emin Tufan Çetin [tr]
3.36.0
======

View File

@ -204,7 +204,7 @@
.world-clocks-time {
font-weight: bold;
color: $fg_color;
font-feature-settings: "tnum";
font-feature-settings: "lnum";
@include fontsize($base_font_size);
text-align: right;
}

View File

@ -9,8 +9,6 @@ const { ServiceImplementation } = imports.dbusService;
const NotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
const NotificationsProxy = Gio.DBusProxy.makeProxyWrapper(NotificationsIface);
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
var NotificationDaemon = class extends ServiceImplementation {
constructor() {
super(NotificationsIface, '/org/freedesktop/Notifications');
@ -44,15 +42,7 @@ var NotificationDaemon = class extends ServiceImplementation {
null, null);
}
async NotifyAsync(params, invocation) {
const pid = await this._getSenderPid(invocation.get_sender());
const hints = params[6];
params[6] = {
...hints,
'sender-pid': new GLib.Variant('u', pid),
};
NotifyAsync(params, invocation) {
this._proxy.NotifyRemote(...params, (res, error) => {
if (this._handleError(invocation, error))
return;
@ -87,19 +77,4 @@ var NotificationDaemon = class extends ServiceImplementation {
invocation.return_value(new GLib.Variant('(ssss)', res));
});
}
async _getSenderPid(sender) {
const res = await Gio.DBus.session.call(
'org.freedesktop.DBus',
'/',
'org.freedesktop.DBus',
'GetConnectionUnixProcessID',
new GLib.Variant('(s)', [sender]),
new GLib.VariantType('(u)'),
Gio.DBusCallFlags.NONE,
-1,
null);
const [pid] = res.deepUnpack();
return pid;
}
};

View File

@ -810,12 +810,13 @@ var LoginDialog = GObject.registerClass({
return;
this._logoBin.destroy_all_children();
if (this._logoFile && this._logoBin.resource_scale > 0) {
const [valid, resourceScale] = this._logoBin.get_resource_scale();
if (this._logoFile && valid) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile,
-1, -1,
scaleFactor,
this._logoBin.resource_scale));
resourceScale));
}
}

View File

@ -2,7 +2,7 @@
/* exported BANNER_MESSAGE_KEY, BANNER_MESSAGE_TEXT_KEY, LOGO_KEY,
DISABLE_USER_LIST_KEY, fadeInActor, fadeOutActor, cloneAndFadeOutActor */
const { Clutter, Gio, GLib } = imports.gi;
const { Clutter, Gdm, Gio, GLib } = imports.gi;
const Signals = imports.signals;
const Batch = imports.gdm.batch;
@ -12,6 +12,15 @@ const Main = imports.ui.main;
const Params = imports.misc.params;
const SmartcardManager = imports.misc.smartcardManager;
Gio._promisify(Gdm.Client.prototype,
'open_reauthentication_channel', 'open_reauthentication_channel_finish');
Gio._promisify(Gdm.Client.prototype,
'get_user_verifier', 'get_user_verifier_finish');
Gio._promisify(Gdm.UserVerifierProxy.prototype,
'call_begin_verification_for_user', 'call_begin_verification_for_user_finish');
Gio._promisify(Gdm.UserVerifierProxy.prototype,
'call_begin_verification', 'call_begin_verification_finish');
var PASSWORD_SERVICE_NAME = 'gdm-password';
var FINGERPRINT_SERVICE_NAME = 'gdm-fingerprint';
var SMARTCARD_SERVICE_NAME = 'gdm-smartcard';
@ -168,14 +177,12 @@ var ShellUserVerifier = class {
this._checkForFingerprintReader();
if (userName) {
// If possible, reauthenticate an already running session,
// so any session specific credentials get updated appropriately
this._client.open_reauthentication_channel(userName, this._cancellable,
this._reauthenticationChannelOpened.bind(this));
} else {
this._client.get_user_verifier(this._cancellable, this._userVerifierGot.bind(this));
}
// If possible, reauthenticate an already running session,
// so any session specific credentials get updated appropriately
if (userName)
this._openReauthenticationChannel(userName);
else
this._getUserVerifier();
}
cancel() {
@ -339,10 +346,11 @@ var ShellUserVerifier = class {
this._verificationFailed(false);
}
_reauthenticationChannelOpened(client, result) {
async _openReauthenticationChannel(userName) {
try {
this._clearUserVerifier();
this._userVerifier = client.open_reauthentication_channel_finish(result);
this._userVerifier = await this._client.open_reauthentication_channel(
userName, this._cancellable);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
@ -351,8 +359,7 @@ var ShellUserVerifier = class {
// Gdm emits org.freedesktop.DBus.Error.AccessDenied when there
// is no session to reauthenticate. Fall back to performing
// verification from this login session
client.get_user_verifier(this._cancellable,
this._userVerifierGot.bind(this));
this._getUserVerifier();
return;
}
@ -366,10 +373,11 @@ var ShellUserVerifier = class {
this._hold.release();
}
_userVerifierGot(client, result) {
async _getUserVerifier() {
try {
this._clearUserVerifier();
this._userVerifier = client.get_user_verifier_finish(result);
this._userVerifier =
await this._client.get_user_verifier(this._cancellable);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
@ -421,35 +429,25 @@ var ShellUserVerifier = class {
}
}
_startService(serviceName) {
async _startService(serviceName) {
this._hold.acquire();
if (this._userName) {
this._userVerifier.call_begin_verification_for_user(serviceName, this._userName, this._cancellable, (obj, result) => {
try {
obj.call_begin_verification_for_user_finish(result);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
this._reportInitError('Failed to start verification for user', e);
return;
}
this._hold.release();
});
} else {
this._userVerifier.call_begin_verification(serviceName, this._cancellable, (obj, result) => {
try {
obj.call_begin_verification_finish(result);
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
this._reportInitError('Failed to start verification', e);
return;
}
this._hold.release();
});
try {
if (this._userName) {
await this._userVerifier.call_begin_verification_for_user(
serviceName, this._userName, this._cancellable);
} else {
await this._userVerifier.call_begin_verification(
serviceName, this._cancellable);
}
} catch (e) {
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
this._reportInitError(this._userName
? 'Failed to start verification for user'
: 'Failed to start verification', e);
return;
}
this._hold.release();
}
_beginVerification() {

View File

@ -23,6 +23,7 @@
<file>misc/modemManager.js</file>
<file>misc/objectManager.js</file>
<file>misc/params.js</file>
<file>misc/parentalControlsManager.js</file>
<file>misc/permissionStore.js</file>
<file>misc/smartcardManager.js</file>
<file>misc/systemActions.js</file>
@ -101,7 +102,6 @@
<file>ui/swipeTracker.js</file>
<file>ui/switcherPopup.js</file>
<file>ui/switchMonitor.js</file>
<file>ui/tweener.js</file>
<file>ui/unlockDialog.js</file>
<file>ui/userWidget.js</file>
<file>ui/viewSelector.js</file>

View File

@ -6,6 +6,15 @@ const Signals = imports.signals;
const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
Gio._promisify(IBus.Bus.prototype,
'list_engines_async', 'list_engines_async_finish');
Gio._promisify(IBus.Bus.prototype,
'request_name_async', 'request_name_async_finish');
Gio._promisify(IBus.Bus.prototype,
'get_global_engine_async', 'get_global_engine_async_finish');
Gio._promisify(IBus.Bus.prototype,
'set_global_engine_async', 'set_global_engine_async_finish');
// Ensure runtime version matches
_checkIBusVersion(1, 5, 2);
@ -102,16 +111,14 @@ var IBusManager = class {
_onConnected() {
this._cancellable = new Gio.Cancellable();
this._ibus.list_engines_async(-1, this._cancellable,
this._initEngines.bind(this));
this._ibus.request_name_async(IBus.SERVICE_PANEL,
IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable,
this._initPanelService.bind(this));
this._initEngines();
this._initPanelService();
}
_initEngines(ibus, result) {
async _initEngines() {
try {
let enginesList = this._ibus.list_engines_async_finish(result);
const enginesList =
await this._ibus.list_engines_async(-1, this._cancellable);
for (let i = 0; i < enginesList.length; ++i) {
let name = enginesList[i].get_name();
this._engines.set(name, enginesList[i]);
@ -126,9 +133,10 @@ var IBusManager = class {
}
}
_initPanelService(ibus, result) {
async _initPanelService() {
try {
this._ibus.request_name_async_finish(result);
await this._ibus.request_name_async(IBus.SERVICE_PANEL,
IBus.BusNameFlag.REPLACE_EXISTING, -1, this._cancellable);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
logError(e);
@ -163,19 +171,15 @@ var IBusManager = class {
this._panelService.connect('set-content-type', this._setContentType.bind(this));
} catch (e) {
}
// If an engine is already active we need to get its properties
this._ibus.get_global_engine_async(-1, this._cancellable, (_bus, res) => {
let engine;
try {
engine = this._ibus.get_global_engine_async_finish(res);
if (!engine)
return;
} catch (e) {
return;
}
try {
// If an engine is already active we need to get its properties
const engine =
await this._ibus.get_global_engine_async(-1, this._cancellable);
this._engineChanged(this._ibus, engine.get_name());
});
this._updateReadiness();
this._updateReadiness();
} catch (e) {
}
}
_updateReadiness() {
@ -223,7 +227,7 @@ var IBusManager = class {
return this._engines.get(id);
}
setEngine(id, callback) {
async setEngine(id, callback) {
// Send id even if id == this._currentEngineName
// because 'properties-registered' signal can be emitted
// while this._ibusSources == null on a lock screen.
@ -233,18 +237,16 @@ var IBusManager = class {
return;
}
this._ibus.set_global_engine_async(id,
this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
this._cancellable, (_bus, res) => {
try {
this._ibus.set_global_engine_async_finish(res);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
logError(e);
}
if (callback)
callback();
});
try {
await this._ibus.set_global_engine_async(id,
this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
this._cancellable);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
logError(e);
}
if (callback)
callback();
}
preloadEngines(ids) {

View File

@ -4,6 +4,9 @@ const { Clutter, GLib, Gio, GObject, IBus } = imports.gi;
const Keyboard = imports.ui.status.keyboard;
Gio._promisify(IBus.Bus.prototype,
'create_input_context_async', 'create_input_context_async_finish');
var HIDE_PANEL_TIME = 50;
var InputMethod = GObject.registerClass(
@ -46,15 +49,11 @@ class InputMethod extends Clutter.InputMethod {
this._currentSource = this._inputSourceManager.currentSource;
}
_onConnected() {
async _onConnected() {
this._cancellable = new Gio.Cancellable();
this._ibus.create_input_context_async('gnome-shell', -1,
this._cancellable, this._setContext.bind(this));
}
_setContext(bus, res) {
try {
this._context = this._ibus.create_input_context_async_finish(res);
this._context = await this._ibus.create_input_context_async(
'gnome-shell', -1, this._cancellable);
} catch (e) {
if (!e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
logError(e);

View File

@ -24,8 +24,7 @@ function getCompletions(text, commandHeader, globalCompletionList) {
[expr_, base, attrHead] = matches;
methods = getPropertyNamesFromExpression(base, commandHeader).filter(
attr => attr.slice(0, attrHead.length) == attrHead
);
attr => attr.slice(0, attrHead.length) === attrHead);
}
// Look for the empty expression or partially entered words
@ -34,8 +33,7 @@ function getCompletions(text, commandHeader, globalCompletionList) {
if (text == '' || matches) {
[expr_, attrHead] = matches;
methods = globalCompletionList.filter(
attr => attr.slice(0, attrHead.length) == attrHead
);
attr => attr.slice(0, attrHead.length) === attrHead);
}
}

View File

@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported getKeyboardManager, holdKeyboard, releaseKeyboard */
const { GLib, GnomeDesktop, Meta } = imports.gi;
const { GLib, GnomeDesktop } = imports.gi;
const Main = imports.ui.main;
@ -62,11 +62,11 @@ var KeyboardManager = class {
return;
this._currentKeymap = { layouts, variants, options };
Meta.get_backend().set_keymap(layouts, variants, options);
global.backend.set_keymap(layouts, variants, options);
}
_applyLayoutGroupIndex(idx) {
Meta.get_backend().lock_layout_group(idx);
global.backend.lock_layout_group(idx);
}
apply(id) {

View File

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

View File

@ -57,9 +57,7 @@ var ObjectManager = class {
// Start out inhibiting load until at least the proxy
// manager is loaded and the remote objects are fetched
this._numLoadInhibitors = 1;
this._managerProxy.init_async(GLib.PRIORITY_DEFAULT,
this._cancellable,
this._onManagerProxyLoaded.bind(this));
this._initManagerProxy();
}
_tryToCompleteLoad() {
@ -73,7 +71,7 @@ var ObjectManager = class {
}
}
_addInterface(objectPath, interfaceName, onFinished) {
async _addInterface(objectPath, interfaceName, onFinished) {
let info = this._interfaceInfos[interfaceName];
if (!info) {
@ -89,40 +87,38 @@ var ObjectManager = class {
g_interface_info: info,
g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START });
proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable, (initable, result) => {
try {
initable.init_finish(result);
} catch (e) {
logError(e, `could not initialize proxy for interface ${interfaceName}`);
if (onFinished)
onFinished();
return;
}
let isNewObject;
if (!this._objects[objectPath]) {
this._objects[objectPath] = {};
isNewObject = true;
} else {
isNewObject = false;
}
this._objects[objectPath][interfaceName] = proxy;
if (!this._interfaces[interfaceName])
this._interfaces[interfaceName] = [];
this._interfaces[interfaceName].push(proxy);
if (isNewObject)
this.emit('object-added', objectPath);
this.emit('interface-added', interfaceName, proxy);
try {
await proxy.init_async(GLib.PRIORITY_DEFAULT, this._cancellable);
} catch (e) {
logError(e, `could not initialize proxy for interface ${interfaceName}`);
if (onFinished)
onFinished();
});
return;
}
let isNewObject;
if (!this._objects[objectPath]) {
this._objects[objectPath] = {};
isNewObject = true;
} else {
isNewObject = false;
}
this._objects[objectPath][interfaceName] = proxy;
if (!this._interfaces[interfaceName])
this._interfaces[interfaceName] = [];
this._interfaces[interfaceName].push(proxy);
if (isNewObject)
this.emit('object-added', objectPath);
this.emit('interface-added', interfaceName, proxy);
if (onFinished)
onFinished();
}
_removeInterface(objectPath, interfaceName) {
@ -151,9 +147,10 @@ var ObjectManager = class {
}
}
_onManagerProxyLoaded(initable, result) {
async _initManagerProxy() {
try {
initable.init_finish(result);
await this._managerProxy.init_async(
GLib.PRIORITY_DEFAULT, this._cancellable);
} catch (e) {
logError(e, `could not initialize object manager for object ${this._serviceName}`);

View File

@ -0,0 +1,146 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
//
// Copyright (C) 2018, 2019, 2020 Endless Mobile, Inc.
//
// This is a GNOME Shell component to wrap the interactions over
// D-Bus with the malcontent library.
//
// Licensed under the GNU General Public License Version 2
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
/* exported getDefault */
const { Gio, GObject, Shell } = imports.gi;
// We require libmalcontent ≥ 0.6.0
const HAVE_MALCONTENT = imports.package.checkSymbol(
'Malcontent', '0', 'ManagerGetValueFlags');
var Malcontent = null;
if (HAVE_MALCONTENT) {
Malcontent = imports.gi.Malcontent;
Gio._promisify(Malcontent.Manager.prototype, 'get_app_filter_async', 'get_app_filter_finish');
}
let _singleton = null;
function getDefault() {
if (_singleton === null)
_singleton = new ParentalControlsManager();
return _singleton;
}
// A manager class which provides cached access to the constructing users
// parental controls settings. Its possible for the users parental controls
// to change at runtime if the Parental Controls application is used by an
// administrator from within the users session.
var ParentalControlsManager = GObject.registerClass({
Signals: {
'app-filter-changed': {},
},
}, class ParentalControlsManager extends GObject.Object {
_init() {
super._init();
this._initialized = false;
this._disabled = false;
this._appFilter = null;
this._initializeManager();
}
async _initializeManager() {
if (!HAVE_MALCONTENT) {
log('Skipping parental controls support as its disabled');
this._initialized = true;
this.emit('app-filter-changed');
return;
}
log(`Getting parental controls for user ${Shell.util_get_uid()}`);
try {
const connection = await Gio.DBus.get(Gio.BusType.SYSTEM, null);
this._manager = new Malcontent.Manager({ connection });
this._appFilter = await this._manager.get_app_filter_async(
Shell.util_get_uid(),
Malcontent.ManagerGetValueFlags.NONE,
null);
} catch (e) {
if (e.matches(Malcontent.ManagerError, Malcontent.ManagerError.DISABLED)) {
log('Parental controls globally disabled');
this._disabled = true;
} else {
logError(e, 'Failed to get parental controls settings');
return;
}
}
this._manager.connect('app-filter-changed', this._onAppFilterChanged.bind(this));
// Signal initialisation is complete.
this._initialized = true;
this.emit('app-filter-changed');
}
async _onAppFilterChanged(manager, uid) {
// Emit 'changed' signal only if app-filter is changed for currently logged-in user.
let currentUid = Shell.util_get_uid();
if (currentUid !== uid)
return;
try {
this._appFilter = await this._manager.get_app_filter_async(
currentUid,
Malcontent.ManagerGetValueFlags.NONE,
null);
this.emit('app-filter-changed');
} catch (e) {
// Log an error and keep the old app filter.
logError(e, `Failed to get new MctAppFilter for uid ${Shell.util_get_uid()} on app-filter-changed`);
}
}
get initialized() {
return this._initialized;
}
// Calculate whether the given app (a Gio.DesktopAppInfo) should be shown
// on the desktop, in search results, etc. The app should be shown if:
// - The .desktop file doesnt say it should be hidden.
// - The executable from the .desktop files Exec line isnt blacklisted in
// the users parental controls.
// - None of the flatpak app IDs from the X-Flatpak and the
// X-Flatpak-RenamedFrom lines are blacklisted in the users parental
// controls.
shouldShowApp(appInfo) {
// Quick decision?
if (!appInfo.should_show())
return false;
// Are parental controls enabled (at configure time or runtime)?
if (!HAVE_MALCONTENT || this._disabled)
return true;
// Have we finished initialising yet?
if (!this.initialized) {
log(`Warning: Hiding app because parental controls not yet initialised: ${appInfo.get_id()}`);
return false;
}
return this._appFilter.is_appinfo_allowed(appInfo);
}
});

View File

@ -107,7 +107,7 @@ const SystemActions = GObject.registerClass({
this._actions.set(LOGOUT_ACTION_ID, {
// Translators: The name of the logout action in search
name: C_("search-result", "Log Out"),
iconName: 'system-log-out-symbolic',
iconName: 'application-exit-symbolic',
// Translators: A list of keywords that match the logout action, separated by semicolons
keywords: tokenizeKeywords(_('logout;log out;sign off')),
available: false,

View File

@ -7,6 +7,8 @@ const PermissionStore = imports.misc.permissionStore;
const { loadInterfaceXML } = imports.misc.fileUtils;
Gio._promisify(Geoclue.Simple, 'new', 'new_finish');
const WeatherIntegrationIface = loadInterfaceXML('org.gnome.Shell.WeatherIntegration');
const WEATHER_BUS_NAME = 'org.gnome.Weather';
@ -79,16 +81,7 @@ var WeatherClient = class {
this._weatherApp = null;
this._weatherProxy = null;
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface);
Gio.DBusProxy.new(
Gio.DBus.session,
Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES,
nodeInfo.lookup_interface(WEATHER_INTEGRATION_IFACE),
WEATHER_BUS_NAME,
WEATHER_OBJECT_PATH,
WEATHER_INTEGRATION_IFACE,
null,
this._onWeatherProxyReady.bind(this));
this._createWeatherProxy();
this._settings = new Gio.Settings({
schema_id: 'org.gnome.shell.weather',
@ -146,9 +139,17 @@ var WeatherClient = class {
(!this._needsAuth || this._weatherAuthorized);
}
_onWeatherProxyReady(o, res) {
async _createWeatherProxy() {
const nodeInfo = Gio.DBusNodeInfo.new_for_xml(WeatherIntegrationIface);
try {
this._weatherProxy = Gio.DBusProxy.new_finish(res);
this._weatherProxy = await Gio.DBusProxy.new(
Gio.DBus.session,
Gio.DBusProxyFlags.DO_NOT_AUTO_START | Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES,
nodeInfo.lookup_interface(WEATHER_INTEGRATION_IFACE),
WEATHER_BUS_NAME,
WEATHER_OBJECT_PATH,
WEATHER_INTEGRATION_IFACE,
null);
} catch (e) {
log(`Failed to create GNOME Weather proxy: ${e}`);
return;
@ -239,25 +240,23 @@ var WeatherClient = class {
}
}
_startGClueService() {
async _startGClueService() {
if (this._gclueStarting)
return;
this._gclueStarting = true;
Geoclue.Simple.new('org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null,
(o, res) => {
try {
this._gclueService = Geoclue.Simple.new_finish(res);
} catch (e) {
log(`Failed to connect to Geoclue2 service: ${e.message}`);
this._setLocation(this._mostRecentLocation);
return;
}
this._gclueStarted = true;
this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
});
try {
this._gclueService = await Geoclue.Simple.new(
'org.gnome.Shell', Geoclue.AccuracyLevel.CITY, null);
} catch (e) {
log(`Failed to connect to Geoclue2 service: ${e.message}`);
this._setLocation(this._mostRecentLocation);
return;
}
this._gclueStarted = true;
this._gclueService.get_client().distance_threshold = 100;
this._updateLocationMonitoring();
}
_onGClueLocationChanged() {

View File

@ -681,8 +681,7 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
// Cache the window list now; we don't handle dynamic changes here,
// and we don't want to be continually retrieving it
appIcon.cachedWindows = allWindows.filter(
w => windowTracker.get_window_app(w) == appIcon.app
);
w => windowTracker.get_window_app(w) === appIcon.app);
if (appIcon.cachedWindows.length > 0)
this._addIcon(appIcon);
}
@ -853,9 +852,6 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
if (index === -1)
return;
this._arrows[index].destroy();
this._arrows.splice(index, 1);
this.icons.splice(index, 1);
this.removeItem(index);
}

View File

@ -10,6 +10,7 @@ const GrabHelper = imports.ui.grabHelper;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const PageIndicators = imports.ui.pageIndicators;
const ParentalControlsManager = imports.misc.parentalControlsManager;
const PopupMenu = imports.ui.popupMenu;
const Search = imports.ui.search;
const SwipeTracker = imports.ui.swipeTracker;
@ -36,7 +37,6 @@ var VIEWS_SWITCH_TIME = 400;
var VIEWS_SWITCH_ANIMATION_DELAY = 100;
var PAGE_SWITCH_TIME = 250;
var SCROLL_TIMEOUT_TIME = 150;
var APP_ICON_SCALE_IN_TIME = 500;
var APP_ICON_SCALE_IN_DELAY = 700;
@ -163,6 +163,12 @@ var BaseAppView = GObject.registerClass({
this._animateLaterId = 0;
this._viewLoadedHandlerId = 0;
this._viewIsReady = false;
// Filter the apps through the users parental controls.
this._parentalControlsManager = ParentalControlsManager.getDefault();
this._parentalControlsManager.connect('app-filter-changed', () => {
this._redisplay();
});
}
_childFocused(_actor) {
@ -336,14 +342,37 @@ var AllView = GObject.registerClass({
use_pagination: true,
});
this._grid._delegate = this;
this._stack = new St.Widget({
layout_manager: new Clutter.BinLayout(),
x_expand: true,
y_expand: true,
});
this.add_actor(this._stack);
let box = new St.BoxLayout({
vertical: true,
y_align: Clutter.ActorAlign.START,
});
box.add_child(this._grid);
this._scrollView = new St.ScrollView({
style_class: 'all-apps',
x_expand: true,
y_expand: true,
reactive: true,
});
this.add_actor(this._scrollView);
this._grid._delegate = this;
this._scrollView.add_actor(box);
this._stack.add_actor(this._scrollView);
this._eventBlocker = new St.Widget({
x_expand: true,
y_expand: true,
reactive: true,
visible: false,
});
this._stack.add_actor(this._eventBlocker);
this._scrollView.set_policy(St.PolicyType.NEVER,
St.PolicyType.EXTERNAL);
@ -364,24 +393,7 @@ var AllView = GObject.registerClass({
this._folderIcons = [];
this._stack = new St.Widget({ layout_manager: new Clutter.BinLayout() });
let box = new St.BoxLayout({
vertical: true,
y_align: Clutter.ActorAlign.START,
});
this._grid.currentPage = 0;
this._stack.add_actor(this._grid);
this._eventBlocker = new St.Widget({
x_expand: true,
y_expand: true,
reactive: true,
visible: false,
});
this._stack.add_actor(this._eventBlocker);
box.add_actor(this._stack);
this._scrollView.add_actor(box);
this._scrollView.connect('scroll-event', this._onScroll.bind(this));
@ -516,7 +528,7 @@ var AllView = GObject.registerClass({
} catch (e) {
return false;
}
return appInfo.should_show();
return this._parentalControlsManager.shouldShowApp(appInfo);
});
let apps = this._appInfoList.map(app => app.get_id());
@ -626,7 +638,7 @@ var AllView = GObject.registerClass({
this._grid.currentPage = pageNumber;
// Tween the change between pages.
// Animate the change between pages.
this._adjustment.ease(this._grid.getPageY(this._grid.currentPage), {
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
duration: animate ? PAGE_SWITCH_TIME : 0,
@ -653,12 +665,11 @@ var AllView = GObject.registerClass({
this._canScroll = false;
this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
SCROLL_TIMEOUT_TIME, () => {
PAGE_SWITCH_TIME, () => {
this._canScroll = true;
this._scrollTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}
);
});
return Clutter.EVENT_STOP;
}
@ -1006,7 +1017,7 @@ class FrequentView extends BaseAppView {
let favoritesWritable = global.settings.is_writable('favorite-apps');
for (let i = 0; i < mostUsed.length; i++) {
if (!mostUsed[i].get_app_info().should_show())
if (!this._parentalControlsManager.shouldShowApp(mostUsed[i].get_app_info()))
continue;
let appIcon = this._items.get(mostUsed[i].get_id());
if (!appIcon) {
@ -1252,6 +1263,8 @@ var AppSearchProvider = class AppSearchProvider {
this.canLaunchSearch = false;
this._systemActions = new SystemActions.getDefault();
this._parentalControlsManager = ParentalControlsManager.getDefault();
}
getResultMetas(apps, callback) {
@ -1286,18 +1299,30 @@ var AppSearchProvider = class AppSearchProvider {
}
getInitialResultSet(terms, callback, _cancellable) {
// Defer until the parental controls manager is initialised, so the
// results can be filtered correctly.
if (!this._parentalControlsManager.initialized) {
let initializedId = this._parentalControlsManager.connect('app-filter-changed', () => {
if (this._parentalControlsManager.initialized) {
this._parentalControlsManager.disconnect(initializedId);
this.getInitialResultSet(terms, callback, _cancellable);
}
});
return;
}
let query = terms.join(' ');
let groups = Shell.AppSystem.search(query);
let usage = Shell.AppUsage.get_default();
let results = [];
groups.forEach(group => {
group = group.filter(appID => {
const app = this._appSys.lookup_app(appID);
return app && app.app_info.should_show();
return app && this._parentalControlsManager.shouldShowApp(app.app_info);
});
results = results.concat(group.sort(
(a, b) => usage.compare(a, b)
));
(a, b) => usage.compare(a, b)));
});
results = results.concat(this._systemActions.getMatchingActions(terms));
@ -1432,7 +1457,7 @@ class FolderView extends BaseAppView {
if (!app)
return;
if (!app.get_app_info().should_show())
if (!this._parentalControlsManager.shouldShowApp(app.get_app_info()))
return;
if (apps.some(appIcon => appIcon.id == appId))
@ -2178,7 +2203,7 @@ var AppIcon = GObject.registerClass({
}
vfunc_leave_event(crossingEvent) {
let ret = super.vfunc_leave_event(crossingEvent);
const ret = super.vfunc_leave_event(crossingEvent);
this.fake_release();
this._removeMenuTimeout();
@ -2186,22 +2211,22 @@ var AppIcon = GObject.registerClass({
}
vfunc_button_press_event(buttonEvent) {
super.vfunc_button_press_event(buttonEvent);
const ret = super.vfunc_button_press_event(buttonEvent);
if (buttonEvent.button == 1) {
this._setPopupTimeout();
} else if (buttonEvent.button == 3) {
this.popupMenu();
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
return ret;
}
vfunc_touch_event(touchEvent) {
super.vfunc_touch_event(touchEvent);
const ret = super.vfunc_touch_event(touchEvent);
if (touchEvent.type == Clutter.EventType.TOUCH_BEGIN)
this._setPopupTimeout();
return Clutter.EVENT_PROPAGATE;
return ret;
}
vfunc_clicked(button) {
@ -2471,14 +2496,12 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
this.removeAll();
let windows = this._source.app.get_windows().filter(
w => !w.skip_taskbar
);
w => !w.skip_taskbar);
if (windows.length > 0) {
this.addMenuItem(
/* Translators: This is the heading of a list of open windows */
new PopupMenu.PopupSeparatorMenuItem(_("Open Windows"))
);
new PopupMenu.PopupSeparatorMenuItem(_('Open Windows')));
}
windows.forEach(window => {
@ -2553,19 +2576,18 @@ var AppIconMenu = class AppIconMenu extends PopupMenu.PopupMenu {
if (Shell.AppSystem.get_default().lookup_app('org.gnome.Software.desktop')) {
this._appendSeparator();
let item = this._appendMenuItem(_("Show Details"));
item.connect('activate', () => {
item.connect('activate', async () => {
let id = this._source.app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']);
Gio.DBus.get(Gio.BusType.SESSION, null, (o, res) => {
let bus = Gio.DBus.get_finish(res);
bus.call('org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})',
['details', [args], null]),
null, 0, -1, null);
Main.overview.hide();
});
const bus = await Gio.DBus.get(Gio.BusType.SESSION, null);
bus.call(
'org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
new GLib.Variant.new(
'(sava{sv})', ['details', [args], null]),
null, 0, -1, null);
Main.overview.hide();
});
}
}

View File

@ -2,6 +2,7 @@
/* exported getAppFavorites */
const Shell = imports.gi.Shell;
const ParentalControlsManager = imports.misc.parentalControlsManager;
const Signals = imports.signals;
const Main = imports.ui.main;
@ -12,7 +13,6 @@ const RENAMED_DESKTOP_IDS = {
'cheese.desktop': 'org.gnome.Cheese.desktop',
'dconf-editor.desktop': 'ca.desrt.dconf-editor.desktop',
'empathy.desktop': 'org.gnome.Empathy.desktop',
'eog.desktop': 'org.gnome.eog.desktop',
'epiphany.desktop': 'org.gnome.Epiphany.desktop',
'evolution.desktop': 'org.gnome.Evolution.desktop',
'file-roller.desktop': 'org.gnome.FileRoller.desktop',
@ -65,6 +65,13 @@ const RENAMED_DESKTOP_IDS = {
class AppFavorites {
constructor() {
// Filter the apps through the users parental controls.
this._parentalControlsManager = ParentalControlsManager.getDefault();
this._parentalControlsManager.connect('app-filter-changed', () => {
this.reload();
this.emit('changed');
});
this.FAVORITE_APPS_KEY = 'favorite-apps';
this._favorites = {};
global.settings.connect('changed::%s'.format(this.FAVORITE_APPS_KEY), this._onFavsChanged.bind(this));
@ -96,7 +103,7 @@ class AppFavorites {
global.settings.set_strv(this.FAVORITE_APPS_KEY, ids);
let apps = ids.map(id => appSys.lookup_app(id))
.filter(app => app != null);
.filter(app => app !== null && this._parentalControlsManager.shouldShowApp(app.app_info));
this._favorites = {};
for (let i = 0; i < apps.length; i++) {
let app = apps[i];
@ -135,6 +142,9 @@ class AppFavorites {
if (!app)
return false;
if (!this._parentalControlsManager.shouldShowApp(app.app_info))
return false;
let ids = this._getIds();
if (pos == -1)
ids.push(appId);

View File

@ -147,9 +147,8 @@ var AudioDeviceSelectionDBus = class AudioDeviceSelectionDBus {
_onDeviceSelected(dialog, device) {
let connection = this._dbusImpl.get_connection();
let info = this._dbusImpl.get_info();
let deviceName = Object.keys(AudioDevice).filter(
dev => AudioDevice[dev] == device
)[0].toLowerCase();
const deviceName = Object.keys(AudioDevice)
.filter(dev => AudioDevice[dev] === device)[0].toLowerCase();
connection.emit_signal(this._audioSelectionDialog._sender,
this._dbusImpl.get_object_path(),
info ? info.name : null,

View File

@ -199,51 +199,52 @@ class DBusEventSource extends EventSourceBase {
this._initialized = false;
this._dbusProxy = new CalendarServer();
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, (object, result) => {
let loaded = false;
this._initProxy();
}
try {
this._dbusProxy.init_finish(result);
loaded = true;
} catch (e) {
if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
// Ignore timeouts and install signals as normal, because with high
// probability the service will appear later on, and we will get a
// NameOwnerChanged which will finish loading
//
// (But still _initialized to false, because the proxy does not know
// about the HasCalendars property and would cause an exception trying
// to read it)
} else {
log('Error loading calendars: %s'.format(e.message));
return;
}
async _initProxy() {
let loaded = false;
try {
await this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null);
loaded = true;
} catch (e) {
// Ignore timeouts and install signals as normal, because with high
// probability the service will appear later on, and we will get a
// NameOwnerChanged which will finish loading
//
// (But still _initialized to false, because the proxy does not know
// about the HasCalendars property and would cause an exception trying
// to read it)
if (!e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
log('Error loading calendars: %s'.format(e.message));
return;
}
}
this._dbusProxy.connectSignal('EventsAddedOrUpdated',
this._onEventsAddedOrUpdated.bind(this));
this._dbusProxy.connectSignal('EventsRemoved',
this._onEventsRemoved.bind(this));
this._dbusProxy.connectSignal('ClientDisappeared',
this._onClientDisappeared.bind(this));
this._dbusProxy.connectSignal('EventsAddedOrUpdated',
this._onEventsAddedOrUpdated.bind(this));
this._dbusProxy.connectSignal('EventsRemoved',
this._onEventsRemoved.bind(this));
this._dbusProxy.connectSignal('ClientDisappeared',
this._onClientDisappeared.bind(this));
this._dbusProxy.connect('notify::g-name-owner', () => {
if (this._dbusProxy.g_name_owner)
this._onNameAppeared();
else
this._onNameVanished();
});
this._dbusProxy.connect('g-properties-changed', () => {
this.notify('has-calendars');
});
this._initialized = loaded;
if (loaded) {
this.notify('has-calendars');
this._dbusProxy.connect('notify::g-name-owner', () => {
if (this._dbusProxy.g_name_owner)
this._onNameAppeared();
}
else
this._onNameVanished();
});
this._dbusProxy.connect('g-properties-changed', () => {
this.notify('has-calendars');
});
this._initialized = loaded;
if (loaded) {
this.notify('has-calendars');
this._onNameAppeared();
}
}
destroy() {
@ -1198,8 +1199,8 @@ class CalendarMessageList extends St.Widget {
child: this._dndSwitch,
label_actor: dndLabel,
});
this._dndSwitch.bind_property('state',
this._dndButton, 'checked',
this._dndButton.bind_property('checked',
this._dndSwitch, 'state',
GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE);
hbox.add_child(this._dndButton);

View File

@ -13,17 +13,13 @@ var ComponentManager = class {
_sessionUpdated() {
let newEnabledComponents = Main.sessionMode.components;
newEnabledComponents.filter(
name => !this._enabledComponents.includes(name)
).forEach(name => {
this._enableComponent(name);
});
newEnabledComponents
.filter(name => !this._enabledComponents.includes(name))
.forEach(name => this._enableComponent(name));
this._enabledComponents.filter(
name => !newEnabledComponents.includes(name)
).forEach(name => {
this._disableComponent(name);
});
this._enabledComponents
.filter(name => !newEnabledComponents.includes(name))
.forEach(name => this._disableComponent(name));
this._enabledComponents = newEnabledComponents;
}

View File

@ -125,8 +125,7 @@ var ContentTypeDiscoverer = class {
_emitCallback(mount, contentTypes = []) {
// we're not interested in win32 software content types here
contentTypes = contentTypes.filter(
type => type != 'x-content/win32-software'
);
type => type !== 'x-content/win32-software');
let apps = [];
contentTypes.forEach(type => {

View File

@ -10,6 +10,7 @@ const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
Gio._promisify(Shell.NetworkAgent.prototype, 'init_async', 'init_finish');
Gio._promisify(Shell.NetworkAgent.prototype,
'search_vpn_plugin', 'search_vpn_plugin_finish');
@ -482,39 +483,37 @@ var VPNRequestHandler = class {
}
}
_readStdoutOldStyle() {
this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null, (stream, result) => {
let [line, len_] = this._dataStdout.read_line_finish_utf8(result);
async _readStdoutOldStyle() {
const [line, len_] =
await this._dataStdout.read_line_async(GLib.PRIORITY_DEFAULT, null);
if (line == null) {
// end of file
this._stdout.close(null);
return;
}
if (line === null) {
// end of file
this._stdout.close(null);
return;
}
this._vpnChildProcessLineOldStyle(line);
this._vpnChildProcessLineOldStyle(line);
// try to read more!
this._readStdoutOldStyle();
});
// try to read more!
this._readStdoutOldStyle();
}
_readStdoutNewStyle() {
this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null, (stream, result) => {
let cnt = this._dataStdout.fill_finish(result);
async _readStdoutNewStyle() {
const cnt =
await this._dataStdout.fill_async(-1, GLib.PRIORITY_DEFAULT, null);
if (cnt == 0) {
// end of file
this._showNewStyleDialog();
if (cnt === 0) {
// end of file
this._showNewStyleDialog();
this._stdout.close(null);
return;
}
this._stdout.close(null);
return;
}
// Try to read more
this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size());
this._readStdoutNewStyle();
});
// Try to read more
this._dataStdout.set_buffer_size(2 * this._dataStdout.get_buffer_size());
this._readStdoutNewStyle();
}
_showNewStyleDialog() {
@ -621,15 +620,17 @@ var NetworkAgent = class {
this._native.connect('cancel-request', this._cancelRequest.bind(this));
this._initialized = false;
this._native.init_async(GLib.PRIORITY_DEFAULT, null, (o, res) => {
try {
this._native.init_finish(res);
this._initialized = true;
} catch (e) {
this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
});
this._initNative();
}
async _initNative() {
try {
await this._native.init_async(GLib.PRIORITY_DEFAULT, null);
this._initialized = true;
} catch (e) {
this._native = null;
logError(e, 'error initializing the NetworkManager Agent');
}
}
enable() {

View File

@ -330,11 +330,13 @@ var AuthenticationDialog = GObject.registerClass({
this._sessionRequestTimeoutId = 0;
if (this.state != ModalDialog.State.OPENED)
return;
return GLib.SOURCE_REMOVE;
this._passwordEntry.hide();
this._cancelButton.grab_key_focus();
this._okButton.reactive = false;
return GLib.SOURCE_REMOVE;
};
if (delay) {

View File

@ -7,6 +7,14 @@ var Tpl = null;
var Tp = null;
try {
({ TelepathyGLib: Tp, TelepathyLogger: Tpl } = imports.gi);
Gio._promisify(Tp.Channel.prototype, 'close_async', 'close_finish');
Gio._promisify(Tp.Channel.prototype,
'send_message_async', 'send_message_finish');
Gio._promisify(Tp.ChannelDispatchOperation.prototype,
'claim_with_async', 'claim_with_finish');
Gio._promisify(Tpl.LogManager.prototype,
'get_filtered_events_async', 'get_filtered_events_finish');
} catch (e) {
log('Telepathy is not available, chat integration will be disabled.');
}
@ -215,7 +223,7 @@ class TelepathyClient extends Tp.BaseClient {
// We can only handle text channel, so close any other channel
if (!(channel instanceof Tp.TextChannel)) {
channel.close_async(null);
channel.close_async();
continue;
}
@ -261,7 +269,7 @@ class TelepathyClient extends Tp.BaseClient {
}
}
_approveTextChannel(account, conn, channel, dispatchOp, context) {
async _approveTextChannel(account, conn, channel, dispatchOp, context) {
let [targetHandle_, targetHandleType] = channel.get_handle();
if (targetHandleType != Tp.HandleType.CONTACT) {
@ -270,17 +278,15 @@ class TelepathyClient extends Tp.BaseClient {
return;
}
// Approve private text channels right away as we are going to handle it
dispatchOp.claim_with_async(this, (o, result) => {
try {
dispatchOp.claim_with_finish(result);
this._handlingChannels(account, conn, [channel], false);
} catch (err) {
log('Failed to Claim channel: %s'.format(err.toString()));
}
});
context.accept();
// Approve private text channels right away as we are going to handle it
try {
await dispatchOp.claim_with_async(this);
this._handlingChannels(account, conn, [channel], false);
} catch (err) {
log('Failed to Claim channel: %s'.format(err.toString()));
}
}
_delegatedChannelsCb(_client, _channels) {
@ -441,17 +447,14 @@ class ChatSource extends MessageTray.Source {
}
}
_getLogMessages() {
async _getLogMessages() {
let logManager = Tpl.LogManager.dup_singleton();
let entity = Tpl.Entity.new_from_tp_contact(this._contact, Tpl.EntityType.CONTACT);
logManager.get_filtered_events_async(this._account, entity,
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
null, this._displayPendingMessages.bind(this));
}
_displayPendingMessages(logManager, result) {
let [success_, events] = logManager.get_filtered_events_finish(result);
const [events] = await logManager.get_filtered_events_async(
this._account, entity,
Tpl.EventTypeMask.TEXT, SCROLLBACK_HISTORY_LINES,
null);
let logMessages = events.map(e => ChatMessage.newFromTplTextEvent(e));
this._ensureNotification();
@ -509,9 +512,7 @@ class ChatSource extends MessageTray.Source {
this._ackMessages();
// The chat box has been destroyed so it can't
// handle the channel any more.
this._channel.close_async((channel, result) => {
channel.close_finish(result);
});
this._channel.close_async();
} else {
// Don't indicate any unread messages when the notification
// that represents them has been destroyed.
@ -609,9 +610,7 @@ class ChatSource extends MessageTray.Source {
}
let msg = Tp.ClientMessage.new_text(type, text);
this._channel.send_message_async(msg, 0, (src, result) => {
this._channel.send_message_finish(result);
});
this._channel.send_message_async(msg, 0);
}
setChatState(state) {

View File

@ -94,7 +94,6 @@ class WorldClocksSection extends St.Button {
});
this._clock = new GnomeDesktop.WallClock();
this._clockNotifyId = 0;
this._tzNotifyId = 0;
this._locations = [];
@ -167,6 +166,8 @@ class WorldClocksSection extends St.Button {
layout.attach(header, 0, 0, 2, 1);
this.label_actor = header;
let localOffset = GLib.DateTime.new_now_local().get_utc_offset();
for (let i = 0; i < this._locations.length; i++) {
let l = this._locations[i].location;
@ -179,8 +180,21 @@ class WorldClocksSection extends St.Button {
let time = new St.Label({ style_class: 'world-clocks-time' });
const utcOffset = this._getTimeAtLocation(l).get_utc_offset();
const offsetCurrentTz = utcOffset - localOffset;
const offsetHours = Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR;
const offsetMinutes =
(Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) /
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,
y_align: Clutter.ActorAlign.CENTER,
});
@ -198,65 +212,32 @@ class WorldClocksSection extends St.Button {
layout.attach(tz, 2, i + 1, 1, 1);
}
this._locations[i].timeLabel = time;
this._locations[i].tzLabel = tz;
this._locations[i].actor = time;
}
if (this._grid.get_n_children() > 1) {
if (!this._clockNotifyId) {
this._clockNotifyId =
this._clock.connect('notify::clock', this._updateTimeLabels.bind(this));
this._clock.connect('notify::clock', this._updateLabels.bind(this));
}
if (!this._tzNotifyId) {
this._tzNotifyId =
this._clock.connect('notify::timezone', this._updateTimezoneLabels.bind(this));
}
this._updateTimeLabels();
this._updateTimezoneLabels();
this._updateLabels();
} else {
if (this._clockNotifyId)
this._clock.disconnect(this._clockNotifyId);
this._clockNotifyId = 0;
if (this._tzNotifyId)
this._clock.disconnect(this._tzNotifyId);
this._tzNotifyId = 0;
}
}
_getTimezoneOffsetAtLocation(location) {
const localOffset = GLib.DateTime.new_now_local().get_utc_offset();
const utcOffset = this._getTimeAtLocation(location).get_utc_offset();
const offsetCurrentTz = utcOffset - localOffset;
const offsetHours = Math.abs(offsetCurrentTz) / GLib.TIME_SPAN_HOUR;
const offsetMinutes =
(Math.abs(offsetCurrentTz) % GLib.TIME_SPAN_HOUR) /
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);
return text;
}
_getTimeAtLocation(location) {
let tz = GLib.TimeZone.new(location.get_timezone().get_tzid());
return GLib.DateTime.new_now(tz);
}
_updateTimeLabels() {
_updateLabels() {
for (let i = 0; i < this._locations.length; i++) {
let l = this._locations[i];
let now = this._getTimeAtLocation(l.location);
l.timeLabel.text = Util.formatTime(now, { timeOnly: true });
}
}
_updateTimezoneLabels() {
for (let i = 0; i < this._locations.length; i++) {
let l = this._locations[i];
l.tzLabel.text = this._getTimezoneOffsetAtLocation(l.location);
l.actor.text = Util.formatTime(now, { timeOnly: true });
}
}
@ -300,13 +281,13 @@ class WeatherSection extends St.Button {
this.child = box;
let titleBox = new St.BoxLayout({ style_class: 'weather-header-box' });
titleBox.add_child(new St.Label({
this._titleLabel = new St.Label({
style_class: 'weather-header',
x_align: Clutter.ActorAlign.START,
x_expand: true,
y_align: Clutter.ActorAlign.END,
text: _('Weather'),
}));
});
titleBox.add_child(this._titleLabel);
box.add_child(titleBox);
this._titleLocation = new St.Label({
@ -433,10 +414,8 @@ class WeatherSection extends St.Button {
_updateForecasts() {
this._forecastGrid.destroy_all_children();
if (!this._weatherClient.hasLocation) {
this._setStatusLabel(_("Select a location…"));
if (!this._weatherClient.hasLocation)
return;
}
const { info } = this._weatherClient;
this._titleLocation.text = this._findBestLocationName(info.location);
@ -463,6 +442,12 @@ class WeatherSection extends St.Button {
if (!this.visible)
return;
if (this._weatherClient.hasLocation)
this._titleLabel.text = _('Weather');
else
this._titleLabel.text = _('Select weather location…');
this._forecastGrid.visible = this._weatherClient.hasLocation;
this._titleLocation.visible = this._weatherClient.hasLocation;
this._updateForecasts();
@ -481,6 +466,7 @@ class MessagesIndicator extends St.Icon {
this._sources = [];
this._count = 0;
this._doNotDisturb = false;
this._settings = new Gio.Settings({
schema_id: 'org.gnome.desktop.notifications',
@ -594,7 +580,6 @@ class DateMenuButton extends PanelMenu.Button {
this._clockDisplay = new St.Label({ style_class: 'clock' });
this._clockDisplay.clutter_text.y_align = Clutter.ActorAlign.CENTER;
this._clockDisplay.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._indicator = new MessagesIndicator();

View File

@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Dialog, MessageDialogContent, ListSection, ListSectionItem */
const { Clutter, GLib, GObject, Meta, Pango, St } = imports.gi;
const { Clutter, GObject, Meta, Pango, St } = imports.gi;
function _setLabel(label, value) {
label.set({
@ -221,16 +221,13 @@ var MessageDialogContent = GObject.registerClass({
this._updateTitleStyleLater = Meta.later_add(Meta.LaterType.BEFORE_REDRAW, () => {
this._updateTitleStyleLater = 0;
this._title.add_style_class_name('leightweight');
return GLib.SOURCE_REMOVE;
return false;
});
}
}
set title(title) {
if (this._title.text === title)
return;
_setLabel(this._title, title);
this._title.remove_style_class_name('leightweight');
@ -240,9 +237,6 @@ var MessageDialogContent = GObject.registerClass({
}
set description(description) {
if (this._description.text === description)
return;
_setLabel(this._description, description);
this.notify('description');
}

View File

@ -278,7 +278,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/SessionManager/EndSessionDialog');
}
_onPkOfflineProxyCreated(proxy, error) {
async _onPkOfflineProxyCreated(proxy, error) {
if (error) {
log(error.message);
return;
@ -293,15 +293,12 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
}
// It only makes sense to check for this permission if PackageKit is available.
Polkit.Permission.new(
'org.freedesktop.packagekit.trigger-offline-update', null, null,
(source, res) => {
try {
this._updatesPermission = Polkit.Permission.new_finish(res);
} catch (e) {
log('No permission to trigger offline updates: %s'.format(e.toString()));
}
});
try {
this._updatesPermission = await Polkit.Permission.new(
'org.freedesktop.packagekit.trigger-offline-update', null, null);
} catch (e) {
log('No permission to trigger offline updates: %s'.format(e.toString()));
}
}
_onDestroy() {
@ -680,7 +677,7 @@ class EndSessionDialog extends ModalDialog.ModalDialog {
_setCheckBoxLabel(this._checkBox, dialogContent.checkBoxText || '');
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
// updates have already been triggered, but the user doesn't have

View File

@ -10,11 +10,20 @@ imports.gi.versions.Gtk = '3.0';
imports.gi.versions.TelepathyGLib = '0.12';
imports.gi.versions.TelepathyLogger = '0.2';
const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Meta, Polkit, Shell, St } = imports.gi;
const Gettext = imports.gettext;
const System = imports.system;
Gio._promisify(Gio.DataInputStream.prototype, 'fill_async', 'fill_finish');
Gio._promisify(Gio.DataInputStream.prototype,
'read_line_async', 'read_line_finish');
Gio._promisify(Gio.DBus, 'get', 'get_finish');
Gio._promisify(Gio.DBusConnection.prototype, 'call', 'call_finish');
Gio._promisify(Gio.DBusProxy, 'new', 'new_finish');
Gio._promisify(Gio.DBusProxy.prototype, 'init_async', 'init_finish');
Gio._promisify(Gio.DBusProxy.prototype,
'call_with_unix_fd_list', 'call_with_unix_fd_list_finish');
Gio._promisify(Polkit.Permission, 'new', 'new_finish');
let _localTimeZone = null;
@ -236,16 +245,15 @@ function _loggingFunc(...args) {
}
function init() {
// Add some bindings to the global JS namespace; (gjs keeps the web
// browser convention of having that namespace be called 'window'.)
window.global = Shell.Global.get();
// Add some bindings to the global JS namespace
globalThis.global = Shell.Global.get();
window.log = _loggingFunc;
globalThis.log = _loggingFunc;
window._ = Gettext.gettext;
window.C_ = Gettext.pgettext;
window.ngettext = Gettext.ngettext;
window.N_ = s => s;
globalThis._ = Gettext.gettext;
globalThis.C_ = Gettext.pgettext;
globalThis.ngettext = Gettext.ngettext;
globalThis.N_ = s => s;
GObject.gtypeNameBasedOnJSPath = true;
@ -347,9 +355,7 @@ function init() {
// OK, now things are initialized enough that we can import shell JS
const Format = imports.format;
const Tweener = imports.ui.tweener;
Tweener.init();
String.prototype.format = Format.format;
}

View File

@ -238,7 +238,7 @@ class InstallExtensionDialog extends ModalDialog.ModalDialog {
});
function init() {
_httpSession = new Soup.Session({ ssl_use_system_ca_file: true });
_httpSession = new Soup.SessionAsync({ ssl_use_system_ca_file: true });
// See: https://bugzilla.gnome.org/show_bug.cgi?id=655189 for context.
// _httpSession.add_feature(new Soup.ProxyResolverDefault());

View File

@ -26,7 +26,6 @@ var ExtensionManager = class {
this._updateNotified = false;
this._extensions = new Map();
this._unloadedExtensions = new Map();
this._enabledExtensions = [];
this._extensionOrder = [];
@ -103,18 +102,18 @@ var ExtensionManager = class {
}
}
try {
extension.stateObj.disable();
} catch (e) {
this.logExtensionError(uuid, e);
}
if (extension.stylesheet) {
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
theme.unload_stylesheet(extension.stylesheet);
delete extension.stylesheet;
}
try {
extension.stateObj.disable();
} catch (e) {
this.logExtensionError(uuid, e);
}
for (let i = 0; i < order.length; i++) {
let otherUuid = order[i];
try {
@ -230,8 +229,7 @@ var ExtensionManager = class {
null,
Gio.DBusCallFlags.NONE,
-1,
null,
(conn, res) => conn.call_finish(res));
null);
return true;
}
@ -270,7 +268,6 @@ var ExtensionManager = class {
extension.errors.push(message);
logError(error, 'Extension %s'.format(uuid));
this._updateCanChange(extension);
this.emit('extension-state-changed', extension);
}
@ -320,14 +317,6 @@ var ExtensionManager = class {
return extension;
}
_canLoad(extension) {
if (!this._unloadedExtensions.has(extension.uuid))
return true;
const version = this._unloadedExtensions.get(extension.uuid);
return extension.metadata.version === version;
}
loadExtension(extension) {
// Default to error, we set success as the last step
extension.state = ExtensionState.ERROR;
@ -336,9 +325,6 @@ var ExtensionManager = class {
if (checkVersion && ExtensionUtils.isOutOfDate(extension)) {
extension.state = ExtensionState.OUT_OF_DATE;
} else if (!this._canLoad(extension)) {
this.logExtensionError(extension.uuid, new Error(
'A different version was loaded previously. You need to log out for changes to take effect.'));
} else {
let enabled = this._enabledExtensions.includes(extension.uuid);
if (enabled) {
@ -349,8 +335,6 @@ var ExtensionManager = class {
} else {
extension.state = ExtensionState.INITIALIZED;
}
this._unloadedExtensions.delete(extension.uuid);
}
this._updateCanChange(extension);
@ -358,22 +342,15 @@ var ExtensionManager = class {
}
unloadExtension(extension) {
const { uuid, type } = extension;
// Try to disable it -- if it's ERROR'd, we can't guarantee that,
// but it will be removed on next reboot, and hopefully nothing
// broke too much.
this._callExtensionDisable(uuid);
this._callExtensionDisable(extension.uuid);
extension.state = ExtensionState.UNINSTALLED;
this.emit('extension-state-changed', extension);
// If we did install an importer, it is now cached and it's
// impossible to load a different version
if (type === ExtensionType.PER_USER && extension.imports)
this._unloadedExtensions.set(uuid, extension.metadata.version);
this._extensions.delete(uuid);
this._extensions.delete(extension.uuid);
return true;
}
@ -486,19 +463,15 @@ var ExtensionManager = class {
// Find and enable all the newly enabled extensions: UUIDs found in the
// new setting, but not in the old one.
newEnabledExtensions.filter(
uuid => !this._enabledExtensions.includes(uuid)
).forEach(uuid => {
this._callExtensionEnable(uuid);
});
newEnabledExtensions
.filter(uuid => !this._enabledExtensions.includes(uuid))
.forEach(uuid => this._callExtensionEnable(uuid));
// Find and disable all the newly disabled extensions: UUIDs found in the
// old setting, but not in the new one.
this._extensionOrder.filter(
uuid => !newEnabledExtensions.includes(uuid)
).reverse().forEach(uuid => {
this._callExtensionDisable(uuid);
});
this._extensionOrder
.filter(uuid => !newEnabledExtensions.includes(uuid))
.reverse().forEach(uuid => this._callExtensionDisable(uuid));
this._enabledExtensions = newEnabledExtensions;
}

View File

@ -114,8 +114,11 @@ class BaseIcon extends St.Bin {
if (this._setSizeManually) {
size = this.iconSize;
} else {
const { scaleFactor } =
St.ThemeContext.get_for_stage(global.stage);
let [found, len] = node.lookup_length('icon-size', false);
size = found ? len : ICON_SIZE;
size = found ? len / scaleFactor : ICON_SIZE;
}
if (this.iconSize == size && this._iconBin.child)

View File

@ -1,5 +1,5 @@
/* exported InhibitShortcutsDialog */
const { Clutter, Gio, GLib, GObject, Gtk, Meta, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GLib, GObject, Gtk, Meta, Shell, St } = imports.gi;
const Dialog = imports.ui.dialog;
const ModalDialog = imports.ui.modalDialog;
@ -90,8 +90,6 @@ var InhibitShortcutsDialog = GObject.registerClass({
text: _('You can restore shortcuts by pressing %s.').format(restoreAccel),
style_class: 'message-dialog-description',
});
restoreLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
restoreLabel.clutter_text.line_wrap = true;
content.add_child(restoreLabel);
}

View File

@ -61,24 +61,6 @@ class AspectContainer extends St.Widget {
this.queue_relayout();
}
vfunc_get_preferred_width(forHeight) {
let [min, nat] = super.vfunc_get_preferred_width(forHeight);
if (forHeight > 0)
nat = forHeight * this._ratio;
return [min, nat];
}
vfunc_get_preferred_height(forWidth) {
let [min, nat] = super.vfunc_get_preferred_height(forWidth);
if (forWidth > 0)
nat = forWidth / this._ratio;
return [min, nat];
}
vfunc_allocate(box, flags) {
if (box.get_width() > 0 && box.get_height() > 0) {
let sizeRatio = box.get_width() / box.get_height();
@ -740,7 +722,7 @@ var EmojiPager = GObject.registerClass({
_onPan(action) {
let [dist_, dx, dy_] = action.get_motion_delta(0);
this.delta = this.delta + dx;
this.delta += dx;
if (this._currentKey != null) {
this._currentKey.cancel();
@ -953,8 +935,7 @@ var EmojiSelection = GObject.registerClass({
this.add_child(this._emojiPager);
this._pageIndicator = new PageIndicators.PageIndicators(
Clutter.Orientation.HORIZONTAL
);
Clutter.Orientation.HORIZONTAL);
this.add_child(this._pageIndicator);
this._pageIndicator.setReactive(false);
@ -1137,7 +1118,7 @@ var KeyboardManager = class KeyBoardManager {
this._seat.connect('notify::touch-mode', this._syncEnabled.bind(this));
this._lastDevice = null;
Meta.get_backend().connect('last-device-changed', (backend, device) => {
global.backend.connect('last-device-changed', (backend, device) => {
if (device.device_type === Clutter.InputDeviceType.KEYBOARD_DEVICE)
return;
@ -1627,9 +1608,7 @@ class Keyboard extends St.BoxLayout {
* we allow the OSK being smaller than 1/3rd of the monitor height
* there.
*/
const forWidth = this.get_theme_node().adjust_for_width(monitor.width);
const [, natHeight] = this.get_preferred_height(forWidth);
this.height = Math.min(maxHeight, natHeight);
this.height = Math.min(maxHeight, this.get_preferred_height(monitor.width));
}
}

View File

@ -27,13 +27,11 @@ var RadialShaderEffect = GObject.registerClass({
'brightness': GObject.ParamSpec.float(
'brightness', 'brightness', 'brightness',
GObject.ParamFlags.READWRITE,
0, 1, 1
),
0, 1, 1),
'sharpness': GObject.ParamSpec.float(
'sharpness', 'sharpness', 'sharpness',
GObject.ParamFlags.READWRITE,
0, 1, 0
),
0, 1, 0),
},
}, class RadialShaderEffect extends Shell.GLSLEffect {
_init(params) {

View File

@ -37,10 +37,9 @@ const LG_ANIMATION_TIME = 500;
function _getAutoCompleteGlobalKeywords() {
const keywords = ['true', 'false', 'null', 'new'];
// Don't add the private properties of window (i.e., ones starting with '_')
const windowProperties = Object.getOwnPropertyNames(window).filter(
a => a.charAt(0) != '_'
);
// Don't add the private properties of globalThis (i.e., ones starting with '_')
const windowProperties = Object.getOwnPropertyNames(globalThis).filter(
a => a.charAt(0) !== '_');
const headerProperties = JsParse.getDeclaredConstants(commandHeader);
return keywords.concat(windowProperties).concat(headerProperties);

View File

@ -643,8 +643,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setClampScrollingAtEdges(
!this._settings.get_boolean(CLAMP_MODE_KEY)
);
!this._settings.get_boolean(CLAMP_MODE_KEY));
}
}
@ -652,8 +651,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setMouseTrackingMode(
this._settings.get_enum(MOUSE_TRACKING_KEY)
);
this._settings.get_enum(MOUSE_TRACKING_KEY));
}
}
@ -661,8 +659,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setFocusTrackingMode(
this._settings.get_enum(FOCUS_TRACKING_KEY)
);
this._settings.get_enum(FOCUS_TRACKING_KEY));
}
}
@ -670,8 +667,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setCaretTrackingMode(
this._settings.get_enum(CARET_TRACKING_KEY)
);
this._settings.get_enum(CARET_TRACKING_KEY));
}
}
@ -679,8 +675,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setInvertLightness(
this._settings.get_boolean(INVERT_LIGHTNESS_KEY)
);
this._settings.get_boolean(INVERT_LIGHTNESS_KEY));
}
}
@ -688,8 +683,7 @@ var Magnifier = class Magnifier {
// Applies only to the first zoom region.
if (this._zoomRegions.length) {
this._zoomRegions[0].setColorSaturation(
this._settings.get_double(COLOR_SATURATION_KEY)
);
this._settings.get_double(COLOR_SATURATION_KEY));
}
}
@ -1941,9 +1935,8 @@ var MagShaderEffects = class MagShaderEffects {
// it modifies the brightness and/or contrast.
let [cRed, cGreen, cBlue] = this._brightnessContrast.get_contrast();
this._brightnessContrast.set_enabled(
bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE ||
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE
);
bRed !== NO_CHANGE || bGreen !== NO_CHANGE || bBlue !== NO_CHANGE ||
cRed !== NO_CHANGE || cGreen !== NO_CHANGE || cBlue !== NO_CHANGE);
}
/**
@ -1970,8 +1963,7 @@ var MagShaderEffects = class MagShaderEffects {
// a null first argument.
let [bRed, bGreen, bBlue] = this._brightnessContrast.get_brightness();
this._brightnessContrast.set_enabled(
cRed != NO_CHANGE || cGreen != NO_CHANGE || cBlue != NO_CHANGE ||
bRed != NO_CHANGE || bGreen != NO_CHANGE || bBlue != NO_CHANGE
);
cRed !== NO_CHANGE || cGreen !== NO_CHANGE || cBlue !== NO_CHANGE ||
bRed !== NO_CHANGE || bGreen !== NO_CHANGE || bBlue !== NO_CHANGE);
}
};

View File

@ -46,6 +46,7 @@ const XdndHandler = imports.ui.xdndHandler;
const KbdA11yDialog = imports.ui.kbdA11yDialog;
const LocatePointer = imports.ui.locatePointer;
const PointerA11yTimeout = imports.ui.pointerA11yTimeout;
const ParentalControlsManager = imports.misc.parentalControlsManager;
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
@ -96,6 +97,8 @@ let _oskResource = null;
Gio._promisify(Gio._LocalFilePrototype, 'delete_async', 'delete_finish');
Gio._promisify(Gio._LocalFilePrototype, 'touch_async', 'touch_finish');
let _remoteAccessInhibited = false;
function _sessionUpdated() {
if (sessionMode.isPrimary)
_loadDefaultStylesheet();
@ -120,12 +123,23 @@ function _sessionUpdated() {
if (lookingGlass)
lookingGlass.close();
}
let remoteAccessController = global.backend.get_remote_access_controller();
if (remoteAccessController) {
if (sessionMode.allowScreencast && _remoteAccessInhibited) {
remoteAccessController.uninhibit_remote_access();
_remoteAccessInhibited = false;
} else if (!sessionMode.allowScreencast && !_remoteAccessInhibited) {
remoteAccessController.inhibit_remote_access();
_remoteAccessInhibited = true;
}
}
}
function start() {
// These are here so we don't break compatibility.
global.logError = window.log;
global.log = window.log;
global.logError = globalThis.log;
global.log = globalThis.log;
// Chain up async errors reported from C
global.connect('notify-error', (global, msg, detail) => {
@ -140,6 +154,10 @@ function start() {
sessionMode.connect('updated', _sessionUpdated);
St.Settings.get().connect('notify::gtk-theme', _loadDefaultStylesheet);
// Initialize ParentalControlsManager before the UI
ParentalControlsManager.getDefault();
_initializeUI();
shellAccessDialogDBusService = new AccessDialog.AccessDialogDBus();
@ -799,7 +817,7 @@ function showRestartMessage(message) {
var AnimationsSettings = class {
constructor() {
let backend = Meta.get_backend();
let backend = global.backend;
if (!backend.is_rendering_hardware_accelerated()) {
St.Settings.get().inhibit_animations();
return;

View File

@ -162,10 +162,6 @@ var NotificationPolicy = GObject.registerClass({
this.run_dispose();
}
get enable() {
return true;
}
get enableSound() {
return true;
}
@ -1164,8 +1160,7 @@ var MessageTray = GObject.registerClass({
this._onNotificationDestroy.bind(this));
this._notificationQueue.push(notification);
this._notificationQueue.sort(
(n1, n2) => n2.urgency - n1.urgency
);
(n1, n2) => n2.urgency - n1.urgency);
this.emit('queue-changed');
}
}

View File

@ -173,11 +173,6 @@ var MprisPlayer = class MprisPlayer {
if (!this._mprisProxy.g_name_owner)
this._close();
});
// It is possible for the bus to disappear before the previous signal
// is connected, so we must ensure that the bus still exists at this
// point.
if (!this._mprisProxy.g_name_owner)
this._close();
}
_onPlayerProxyReady() {

View File

@ -10,6 +10,13 @@ const Params = imports.misc.params;
const { loadInterfaceXML } = imports.misc.fileUtils;
// Should really be defined in Gio.js
const BusIface = loadInterfaceXML('org.freedesktop.DBus');
var BusProxy = Gio.DBusProxy.makeProxyWrapper(BusIface);
function Bus() {
return new BusProxy(Gio.DBus.session, 'org.freedesktop.DBus', '/org/freedesktop/DBus');
}
const FdoNotificationsIface = loadInterfaceXML('org.freedesktop.Notifications');
var NotificationClosedReason = {
@ -42,7 +49,9 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
this._dbusImpl.export(Gio.DBus.session, '/org/freedesktop/Notifications');
this._sources = [];
this._senderToPid = {};
this._notifications = {};
this._busProxy = new Bus();
this._nextNotificationId = 1;
@ -107,9 +116,12 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
//
// If no existing source is found, a new source is created as long as
// pid is provided.
//
// Either a pid or ndata.notification is needed to retrieve or
// create a source.
_getSource(title, pid, ndata, sender) {
if (!pid && !(ndata && ndata.notification))
throw new Error('Either a pid or ndata.notification is needed');
return null;
// We use notification's source for the notifications we still have
// around that are getting replaced because we don't keep sources
@ -206,10 +218,42 @@ var FdoNotificationDaemon = class FdoNotificationDaemon {
this._notifications[id] = ndata;
let sender = invocation.get_sender();
let pid = hints['sender-pid'];
let pid = this._senderToPid[sender];
let source = this._getSource(appName, pid, ndata, sender, null);
this._notifyForSource(source, ndata);
if (source) {
this._notifyForSource(source, ndata);
return invocation.return_value(GLib.Variant.new('(u)', [id]));
}
if (replacesId) {
// There's already a pending call to GetConnectionUnixProcessID,
// which will see the new notification data when it finishes,
// so we don't have to do anything.
return invocation.return_value(GLib.Variant.new('(u)', [id]));
}
this._busProxy.GetConnectionUnixProcessIDRemote(sender, (result, excp) => {
// The app may have updated or removed the notification
ndata = this._notifications[id];
if (!ndata)
return;
if (excp) {
logError(excp, 'Call to GetConnectionUnixProcessID failed');
return;
}
[pid] = result;
source = this._getSource(appName, pid, ndata, sender, null);
this._senderToPid[sender] = pid;
source.connect('destroy', () => {
delete this._senderToPid[sender];
});
this._notifyForSource(source, ndata);
});
return invocation.return_value(GLib.Variant.new('(u)', [id]));
}
@ -373,11 +417,12 @@ var FdoNotificationDaemonSource = GObject.registerClass(
class FdoNotificationDaemonSource extends MessageTray.Source {
_init(title, pid, sender, appId) {
this.pid = pid;
this.initialTitle = title;
this.app = this._getApp(appId);
super._init(title);
this.initialTitle = title;
if (this.app)
this.title = this.app.get_name();
else
@ -425,20 +470,19 @@ class FdoNotificationDaemonSource extends MessageTray.Source {
}
_getApp(appId) {
const appSys = Shell.AppSystem.get_default();
let app;
app = Shell.WindowTracker.get_default().get_app_from_pid(this.pid);
if (app != null)
return app;
if (appId)
app = appSys.lookup_app('%s.desktop'.format(appId));
if (appId) {
app = Shell.AppSystem.get_default().lookup_app('%s.desktop'.format(appId));
if (app != null)
return app;
}
if (!app)
app = appSys.lookup_app('%s.desktop'.format(this.initialTitle));
return app;
return null;
}
setTitle(title) {

View File

@ -4,10 +4,6 @@
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
const Signals = imports.signals;
// Time for initial animation going into Overview mode;
// this is defined here to make it available in imports.
var ANIMATION_TIME = 250;
const Background = imports.ui.background;
const DND = imports.ui.dnd;
const LayoutManager = imports.ui.layout;
@ -18,6 +14,9 @@ const OverviewControls = imports.ui.overviewControls;
const Params = imports.misc.params;
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
// Time for initial animation going into Overview mode
var ANIMATION_TIME = 250;
// Must be less than ANIMATION_TIME, since we switch to
// or from the overview completely after ANIMATION_TIME,
// and don't want the shading animation to get cut off
@ -401,8 +400,7 @@ var Overview = class {
_getDesktopClone() {
let windows = global.get_window_actors().filter(
w => w.meta_window.get_window_type() == Meta.WindowType.DESKTOP
);
w => w.meta_window.get_window_type() === Meta.WindowType.DESKTOP);
if (windows.length == 0)
return null;

View File

@ -8,9 +8,8 @@ const Main = imports.ui.main;
const Params = imports.misc.params;
const ViewSelector = imports.ui.viewSelector;
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
const Overview = imports.ui.overview;
var SIDE_CONTROLS_ANIMATION_TIME = Overview.ANIMATION_TIME;
var SIDE_CONTROLS_ANIMATION_TIME = 160;
function getRtlSlideDirection(direction, actor) {
let rtl = actor.text_direction == Clutter.TextDirection.RTL;

View File

@ -2,7 +2,7 @@
/* exported PadOsd, PadOsdService */
const { Atk, Clutter, GDesktopEnums, Gio,
GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi;
GLib, GObject, Gtk, Meta, Rsvg, St } = imports.gi;
const Signals = imports.signals;
const Main = imports.ui.main;
@ -329,7 +329,6 @@ var PadDiagram = GObject.registerClass({
this._imagePath = imagePath;
this._handle = this._composeStyledDiagram();
this._initLabels();
}
// eslint-disable-next-line camelcase
@ -344,26 +343,6 @@ var PadDiagram = GObject.registerClass({
this.add_actor(actor);
}
_initLabels() {
let i = 0;
for (i = 0; ; i++) {
if (!this._addLabel(Meta.PadActionType.BUTTON, i))
break;
}
for (i = 0; ; i++) {
if (!this._addLabel(Meta.PadActionType.RING, i, CW) ||
!this._addLabel(Meta.PadActionType.RING, i, CCW))
break;
}
for (i = 0; ; i++) {
if (!this._addLabel(Meta.PadActionType.STRIP, i, UP) ||
!this._addLabel(Meta.PadActionType.STRIP, i, DOWN))
break;
}
}
_wrappingSvgHeader() {
return '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' +
'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" ' +
@ -383,8 +362,10 @@ var PadDiagram = GObject.registerClass({
for (let i = 0; i < this._activeButtons.length; i++) {
let ch = String.fromCharCode('A'.charCodeAt() + this._activeButtons[i]);
css += '.%s.Leader { stroke: %s !important; }'.format(ch, ACTIVE_COLOR);
css += '.%s.Button { stroke: %s !important; fill: %s !important; }'.format(ch, ACTIVE_COLOR, ACTIVE_COLOR);
css += '.%s {'.format(ch);
css += ' stroke: %s !important;'.format(ACTIVE_COLOR);
css += ' fill: %s !important;'.format(ACTIVE_COLOR);
css += '}';
}
return css;
@ -409,6 +390,9 @@ var PadDiagram = GObject.registerClass({
}
_updateDiagramScale() {
if (this._handle == null)
return;
[this._actorWidth, this._actorHeight] = this.get_size();
let dimensions = this._handle.get_dimensions();
let scaleX = this._actorWidth / dimensions.width;
@ -421,11 +405,6 @@ var PadDiagram = GObject.registerClass({
let [, natWidth] = child.get_preferred_width(natHeight);
let childBox = new Clutter.ActorBox();
// I miss Cairo.Matrix
let dimensions = this._handle.get_dimensions();
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
if (direction == LTR) {
childBox.x1 = x;
childBox.x2 = x + natWidth;
@ -441,18 +420,17 @@ var PadDiagram = GObject.registerClass({
vfunc_allocate(box, flags) {
super.vfunc_allocate(box, flags);
if (this._handle === null)
return;
this._updateDiagramScale();
for (let i = 0; i < this._labels.length; i++) {
const { label, x, y, arrangement } = this._labels[i];
let [label, action, idx, dir] = this._labels[i];
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(label, x, y, arrangement);
}
if (this._editorActor && this._curEdited) {
const { x, y, arrangement } = this._curEdited;
let [label_, action, idx, dir] = this._curEdited;
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(this._editorActor, x, y, arrangement);
}
}
@ -479,6 +457,17 @@ var PadDiagram = GObject.registerClass({
cr.$dispose();
}
_transformPoint(x, y) {
if (this._handle == null || this._scale == null)
return [x, y];
// I miss Cairo.Matrix
let dimensions = this._handle.get_dimensions();
x = x * this._scale + this._actorWidth / 2 - dimensions.width / 2 * this._scale;
y = y * this._scale + this._actorHeight / 2 - dimensions.height / 2 * this._scale;
return [Math.round(x), Math.round(y)];
}
_getItemLabelCoords(labelName, leaderName) {
if (this._handle == null)
return [false];
@ -506,39 +495,44 @@ var PadDiagram = GObject.registerClass({
pos.y = this._imageHeight - pos.y;
}
return [true, pos.x, pos.y, direction];
let [x, y] = this._transformPoint(pos.x, pos.y);
return [true, x, y, direction];
}
_getButtonLabels(button) {
getButtonLabelCoords(button) {
let ch = String.fromCharCode('A'.charCodeAt() + button);
let labelName = 'Label%s'.format(ch);
let leaderName = 'Leader%s'.format(ch);
return [labelName, leaderName];
return this._getItemLabelCoords(labelName, leaderName);
}
_getRingLabels(number, dir) {
getRingLabelCoords(number, dir) {
let numStr = number > 0 ? (number + 1).toString() : '';
let dirStr = dir == CW ? 'CW' : 'CCW';
let labelName = 'LabelRing%s%s'.format(numStr, dirStr);
let leaderName = 'LeaderRing%s%s'.format(numStr, dirStr);
return [labelName, leaderName];
return this._getItemLabelCoords(labelName, leaderName);
}
_getStripLabels(number, dir) {
getStripLabelCoords(number, dir) {
let numStr = number > 0 ? (number + 1).toString() : '';
let dirStr = dir == UP ? 'Up' : 'Down';
let labelName = 'LabelStrip%s%s'.format(numStr, dirStr);
let leaderName = 'LeaderStrip%s%s'.format(numStr, dirStr);
return [labelName, leaderName];
return this._getItemLabelCoords(labelName, leaderName);
}
_getLabelCoords(action, idx, dir) {
getLabelCoords(action, idx, dir) {
if (action == Meta.PadActionType.BUTTON)
return this._getItemLabelCoords(...this._getButtonLabels(idx));
return this.getButtonLabelCoords(idx);
else if (action == Meta.PadActionType.RING)
return this._getItemLabelCoords(...this._getRingLabels(idx, dir));
return this.getRingLabelCoords(idx, dir);
else if (action == Meta.PadActionType.STRIP)
return this._getItemLabelCoords(...this._getStripLabels(idx, dir));
return this.getStripLabelCoords(idx, dir);
return [false];
}
@ -563,30 +557,26 @@ var PadDiagram = GObject.registerClass({
this._invalidateSvg();
}
_addLabel(action, idx, dir) {
let [found, x, y, arrangement] = this._getLabelCoords(action, idx, dir);
if (!found)
return false;
let label = new St.Label();
this._labels.push({ label, action, idx, dir, x, y, arrangement });
addLabel(label, type, idx, dir) {
this._labels.push([label, type, idx, dir]);
this.add_actor(label);
return true;
}
updateLabels(getText) {
for (let i = 0; i < this._labels.length; i++) {
const { label, action, idx, dir } = this._labels[i];
let [label, action, idx, dir] = this._labels[i];
let str = getText(action, idx, dir);
label.set_text(str);
}
this.queue_relayout();
}
_applyLabel(label, action, idx, dir, str) {
if (str !== null)
if (str != null) {
label.set_text(str);
let [found_, x, y, arrangement] = this.getLabelCoords(action, idx, dir);
this._allocateChild(label, x, y, arrangement);
}
label.show();
}
@ -594,20 +584,18 @@ var PadDiagram = GObject.registerClass({
this._editorActor.hide();
if (this._prevEdited) {
const { label, action, idx, dir } = this._prevEdited;
let [label, action, idx, dir] = this._prevEdited;
this._applyLabel(label, action, idx, dir, str);
this._prevEdited = null;
}
if (this._curEdited) {
const { label, action, idx, dir } = this._curEdited;
let [label, action, idx, dir] = this._curEdited;
this._applyLabel(label, action, idx, dir, str);
if (continues)
this._prevEdited = this._curEdited;
this._curEdited = null;
}
this.queue_relayout();
}
startEdition(action, idx, dir) {
@ -617,19 +605,21 @@ var PadDiagram = GObject.registerClass({
return;
for (let i = 0; i < this._labels.length; i++) {
if (action == this._labels[i].action &&
idx == this._labels[i].idx && dir == this._labels[i].dir) {
let [label, itemAction, itemIdx, itemDir] = this._labels[i];
if (action == itemAction && idx == itemIdx && dir == itemDir) {
this._curEdited = this._labels[i];
editedLabel = this._curEdited.label;
editedLabel = label;
break;
}
}
if (this._curEdited == null)
return;
let [found] = this.getLabelCoords(action, idx, dir);
if (!found)
return;
this._editorActor.show();
editedLabel.hide();
this.queue_relayout();
}
});
@ -703,7 +693,6 @@ var PadOsd = GObject.registerClass({
this._titleLabel = new St.Label({ style: 'font-side: larger; font-weight: bold;',
x_align: Clutter.ActorAlign.CENTER });
this._titleLabel.clutter_text.set_ellipsize(Pango.EllipsizeMode.NONE);
this._titleLabel.clutter_text.set_text(padDevice.get_device_name());
labelBox.add_actor(this._titleLabel);
@ -721,7 +710,31 @@ var PadOsd = GObject.registerClass({
x_expand: true,
y_expand: true });
this.add_actor(this._padDiagram);
this._updateActionLabels();
// FIXME: Fix num buttons.
let i = 0;
for (i = 0; i < 50; i++) {
let [found] = this._padDiagram.getButtonLabelCoords(i);
if (!found)
break;
this._createLabel(Meta.PadActionType.BUTTON, i);
}
for (i = 0; i < padDevice.get_n_rings(); i++) {
let [found] = this._padDiagram.getRingLabelCoords(i, CW);
if (!found)
break;
this._createLabel(Meta.PadActionType.RING, i, CW);
this._createLabel(Meta.PadActionType.RING, i, CCW);
}
for (i = 0; i < padDevice.get_n_strips(); i++) {
let [found] = this._padDiagram.getStripLabelCoords(i, UP);
if (!found)
break;
this._createLabel(Meta.PadActionType.STRIP, i, UP);
this._createLabel(Meta.PadActionType.STRIP, i, DOWN);
}
let buttonBox = new St.Widget({ layout_manager: new Clutter.BinLayout(),
x_expand: true,
@ -774,6 +787,11 @@ var PadOsd = GObject.registerClass({
return str ? str : _("None");
}
_createLabel(type, number, dir) {
let label = new St.Label({ text: this._getActionText(type, number) });
this._padDiagram.addLabel(label, type, number, dir);
}
_updateActionLabels() {
this._padDiagram.updateLabels(this._getActionText.bind(this));
}
@ -849,7 +867,8 @@ var PadOsd = GObject.registerClass({
this._tipLabel.set_text(_("Press any key to exit"));
}
this._titleLabel.set_text(title);
this._titleLabel.clutter_text.set_markup(
'<span size="larger"><b>%s</b></span>'.format(title));
}
_isEditedAction(type, number, dir) {

View File

@ -90,18 +90,16 @@ class AppMenu extends PopupMenu.PopupMenu {
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
this._detailsItem = this.addAction(_("Show Details"), () => {
this._detailsItem = this.addAction(_('Show Details'), async () => {
let id = this._app.get_id();
let args = GLib.Variant.new('(ss)', [id, '']);
Gio.DBus.get(Gio.BusType.SESSION, null, (o, res) => {
let bus = Gio.DBus.get_finish(res);
bus.call('org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
GLib.Variant.new('(sava{sv})',
['details', [args], null]),
null, 0, -1, null);
});
const bus = await Gio.DBus.get(Gio.BusType.SESSION, null);
bus.call(
'org.gnome.Software',
'/org/gnome/Software',
'org.gtk.Actions', 'Activate',
new GLib.Variant('(sava{sv})', ['details', [args], null]),
null, 0, -1, null);
});
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
@ -216,10 +214,7 @@ var AppMenuButton = GObject.registerClass({
this._onIconThemeChanged.bind(this));
let iconEffect = new Clutter.DesaturateEffect();
this._iconBox = new St.Bin({
style_class: 'app-menu-icon',
y_align: Clutter.ActorAlign.CENTER,
});
this._iconBox = new St.Bin({ style_class: 'app-menu-icon' });
this._iconBox.add_effect(iconEffect);
this._container.add_actor(this._iconBox);
@ -286,7 +281,7 @@ var AppMenuButton = GObject.registerClass({
this.remove_all_transitions();
this.ease({
opacity: 0,
mode: Clutter.Animation.EASE_OUT_QUAD,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: Overview.ANIMATION_TIME,
onComplete: () => this.hide(),
});
@ -1158,10 +1153,9 @@ class Panel extends St.Widget {
_getDraggableWindowForPosition(stageX) {
let workspaceManager = global.workspace_manager;
let workspace = workspaceManager.get_active_workspace();
let allWindowsByStacking = global.display.sort_windows_by_stacking(
workspace.list_windows()
).reverse();
const windows = workspaceManager.get_active_workspace().list_windows();
const allWindowsByStacking =
global.display.sort_windows_by_stacking(windows).reverse();
return allWindowsByStacking.find(metaWindow => {
let rect = metaWindow.get_frame_rect();

View File

@ -204,7 +204,7 @@ var RemoteSearchProvider = class {
g_interface_info: proxyInfo,
g_interface_name: proxyInfo.name,
gFlags });
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null, null);
this.proxy.init_async(GLib.PRIORITY_DEFAULT, null);
this.appInfo = appInfo;
this.id = appInfo.get_id();

View File

@ -198,7 +198,7 @@ var ScreenShield = class {
let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY);
let lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY);
let inhibit = this._loginSession && this._loginSession.Active &&
!this._isActive && lockEnabled && !lockLocked;
!this._isActive && lockEnabled && !lockLocked && Main.sessionMode.unlockDialog;
if (inhibit) {
this._loginManager.inhibit(_("GNOME needs to lock the screen"),
inhibitor => {
@ -345,7 +345,7 @@ var ScreenShield = class {
this._lockDialogGroup.remove_all_transitions();
if (animate) {
// Tween the lock screen out of screen
// Animate the lock screen out of screen
// if velocity is not specified (i.e. we come here from pressing ESC),
// use the same speed regardless of original position
// if velocity is specified, it's in pixels per milliseconds
@ -561,7 +561,8 @@ var ScreenShield = class {
if (this._activationTime == 0)
this._activationTime = GLib.get_monotonic_time();
this._ensureUnlockDialog(true);
if (!this._ensureUnlockDialog(true))
return;
this.actor.show();

View File

@ -7,6 +7,13 @@ const GrabHelper = imports.ui.grabHelper;
const Lightbox = imports.ui.lightbox;
const Main = imports.ui.main;
Gio._promisify(Shell.Screenshot.prototype, 'pick_color', 'pick_color_finish');
Gio._promisify(Shell.Screenshot.prototype, 'screenshot', 'screenshot_finish');
Gio._promisify(Shell.Screenshot.prototype,
'screenshot_window', 'screenshot_window_finish');
Gio._promisify(Shell.Screenshot.prototype,
'screenshot_area', 'screenshot_area_finish');
const { loadInterfaceXML } = imports.misc.fileUtils;
const ScreenshotIface = loadInterfaceXML('org.gnome.Shell.Screenshot');
@ -30,9 +37,7 @@ var ScreenshotService = class {
let sender = invocation.get_sender();
if (this._screenShooter.has(sender) || lockedDown) {
invocation.return_error_literal(
Gio.IOErrorEnum, Gio.IOErrorEnum.BUSY,
'There is an ongoing operation for this sender');
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
return null;
}
@ -158,7 +163,7 @@ var ScreenshotService = class {
return [x, y, width, height];
}
ScreenshotAreaAsync(params, invocation) {
async ScreenshotAreaAsync(params, invocation) {
let [x, y, width, height, flash, filename] = params;
[x, y, width, height] = this._scaleArea(x, y, width, height);
if (!this._checkArea(x, y, width, height)) {
@ -175,21 +180,17 @@ var ScreenshotService = class {
if (!stream)
return;
screenshot.screenshot_area(x, y, width, height, stream,
(o, res) => {
try {
let [success_, area] =
screenshot.screenshot_area_finish(res);
this._onScreenshotComplete(
area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
try {
let [area] =
await screenshot.screenshot_area(x, y, width, height, stream);
this._onScreenshotComplete(area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
}
ScreenshotWindowAsync(params, invocation) {
async ScreenshotWindowAsync(params, invocation) {
let [includeFrame, includeCursor, flash, filename] = params;
let screenshot = this._createScreenshot(invocation);
if (!screenshot)
@ -199,21 +200,17 @@ var ScreenshotService = class {
if (!stream)
return;
screenshot.screenshot_window(includeFrame, includeCursor, stream,
(o, res) => {
try {
let [success_, area] =
screenshot.screenshot_window_finish(res);
this._onScreenshotComplete(
area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
try {
let [area] =
await screenshot.screenshot_window(includeFrame, includeCursor, stream);
this._onScreenshotComplete(area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
}
ScreenshotAsync(params, invocation) {
async ScreenshotAsync(params, invocation) {
let [includeCursor, flash, filename] = params;
let screenshot = this._createScreenshot(invocation);
if (!screenshot)
@ -223,18 +220,13 @@ var ScreenshotService = class {
if (!stream)
return;
screenshot.screenshot(includeCursor, stream,
(o, res) => {
try {
let [success_, area] =
screenshot.screenshot_finish(res);
this._onScreenshotComplete(
area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
});
try {
let [area] = await screenshot.screenshot(includeCursor, stream);
this._onScreenshotComplete(area, stream, file, flash, invocation);
} catch (e) {
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
}
}
async SelectAreaAsync(params, invocation) {
@ -275,25 +267,21 @@ var ScreenshotService = class {
if (!screenshot)
return;
screenshot.pick_color(coords.x, coords.y, (_o, res) => {
let [success_, color] = screenshot.pick_color_finish(res);
let { red, green, blue } = color;
let retval = GLib.Variant.new('(a{sv})', [{
color: GLib.Variant.new('(ddd)', [
red / 255.0,
green / 255.0,
blue / 255.0,
]),
}]);
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(retval);
});
const [color] = await screenshot.pick_color(coords.x, coords.y);
const { red, green, blue } = color;
const retval = GLib.Variant.new('(a{sv})', [{
color: GLib.Variant.new('(ddd)', [
red / 255.0,
green / 255.0,
blue / 255.0,
]),
}]);
this._removeShooterForSender(invocation.get_sender());
invocation.return_value(retval);
} catch (e) {
invocation.return_error_literal(
Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED,
'Operation was cancelled');
} finally {
this._removeShooterForSender(invocation.get_sender());
}
}
};

View File

@ -6,6 +6,7 @@ const { Clutter, Gio, GLib, GObject, Meta, Shell, St } = imports.gi;
const AppDisplay = imports.ui.appDisplay;
const IconGrid = imports.ui.iconGrid;
const Main = imports.ui.main;
const ParentalControlsManager = imports.misc.parentalControlsManager;
const RemoteSearch = imports.ui.remoteSearch;
const Util = imports.misc.util;
@ -219,8 +220,7 @@ var SearchResultsBase = GObject.registerClass({
_ensureResultActors(results, callback) {
let metasNeeded = results.filter(
resultId => this._resultDisplays[resultId] === undefined
);
resultId => this._resultDisplays[resultId] === undefined);
if (metasNeeded.length === 0) {
callback(true);
@ -431,6 +431,9 @@ var SearchResultsView = GObject.registerClass({
_init() {
super._init({ name: 'searchResults', vertical: true });
this._parentalControlsManager = ParentalControlsManager.getDefault();
this._parentalControlsManager.connect('app-filter-changed', this._reloadRemoteProviders.bind(this));
this._content = new MaxWidthBox({
name: 'searchResultsContent',
vertical: true,
@ -505,6 +508,11 @@ var SearchResultsView = GObject.registerClass({
_registerProvider(provider) {
provider.searchInProgress = false;
// Filter out unwanted providers.
if (provider.appInfo && !this._parentalControlsManager.shouldShowApp(provider.appInfo))
return;
this._providers.push(provider);
this._ensureProviderDisplay(provider);
}

View File

@ -295,8 +295,8 @@ var ShellMountPasswordDialog = GObject.registerClass({
this._keyfilesLabel = new St.Label({ visible: false });
this._keyfilesLabel.clutter_text.set_markup(
/* Translators: %s is the Disks application */
_("To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead.").format(disksApp.get_name())
);
_('To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead.')
.format(disksApp.get_name()));
this._keyfilesLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
this._keyfilesLabel.clutter_text.line_wrap = true;
content.add_child(this._keyfilesLabel);
@ -464,8 +464,7 @@ var ShellMountPasswordDialog = GObject.registerClass({
/* Translators: %s is the Disks application */
_("Unable to start %s").format(app.get_name()),
/* Translators: %s is the Disks application */
_("Couldnt find the %s application").format(app.get_name())
);
_('Couldnt find the %s application').format(app.get_name()));
}
this._onCancelButton();
}

View File

@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported Indicator */
const { Gio, GnomeBluetooth, GObject } = imports.gi;
const { Gio, GLib, GnomeBluetooth, GObject } = imports.gi;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
@ -35,7 +35,7 @@ class Indicator extends PanelMenu.SystemIndicator {
this._sync();
});
this._proxy.connect('g-properties-changed', this._sync.bind(this));
this._proxy.connect('g-properties-changed', this._queueSync.bind(this));
this._item = new PopupMenu.PopupSubMenuMenuItem(_("Bluetooth"), true);
this._item.icon.icon_name = 'bluetooth-active-symbolic';
@ -49,15 +49,27 @@ class Indicator extends PanelMenu.SystemIndicator {
this._item.menu.addSettingsAction(_("Bluetooth Settings"), 'gnome-bluetooth-panel.desktop');
this.menu.addMenuItem(this._item);
this._syncId = 0;
this._adapter = null;
this._client = new GnomeBluetooth.Client();
this._model = this._client.get_model();
this._model.connect('row-changed', this._sync.bind(this));
this._model.connect('row-deleted', this._sync.bind(this));
this._model.connect('row-deleted', this._queueSync.bind(this));
this._model.connect('row-changed', this._queueSync.bind(this));
this._model.connect('row-inserted', this._sync.bind(this));
Main.sessionMode.connect('updated', this._sync.bind(this));
this._sync();
}
_setHadSetupDevices(value) {
if (this._hadSetupDevices === value)
return;
this._hadSetupDevices = value;
global.settings.set_boolean(
HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices);
}
_getDefaultAdapter() {
let [ret, iter] = this._model.get_iter_first();
while (ret) {
@ -72,46 +84,53 @@ class Indicator extends PanelMenu.SystemIndicator {
return null;
}
// nDevices is the number of devices setup for the current default
// adapter if one exists and is powered. If unpowered or unavailable,
// nDevice is "1" if it had setup devices associated to it the last
// time it was seen, and "-1" if not.
//
// nConnectedDevices is the number of devices connected to the default
// adapter if one exists and is powered, or -1 if it's not available.
_getNDevices() {
let adapter = this._getDefaultAdapter();
_getDeviceInfos(adapter) {
if (!adapter)
return [this._hadSetupDevices ? 1 : -1, -1];
return [];
let nConnectedDevices = 0;
let nDevices = 0;
let deviceInfos = [];
let [ret, iter] = this._model.iter_children(adapter);
while (ret) {
let isConnected = this._model.get_value(iter,
GnomeBluetooth.Column.CONNECTED);
if (isConnected)
nConnectedDevices++;
const isPaired = this._model.get_value(iter,
GnomeBluetooth.Column.PAIRED);
const isTrusted = this._model.get_value(iter,
GnomeBluetooth.Column.TRUSTED);
if (isPaired || isTrusted) {
deviceInfos.push({
connected: this._model.get_value(iter,
GnomeBluetooth.Column.CONNECTED),
name: this._model.get_value(iter,
GnomeBluetooth.Column.ALIAS),
});
}
let isPaired = this._model.get_value(iter,
GnomeBluetooth.Column.PAIRED);
let isTrusted = this._model.get_value(iter,
GnomeBluetooth.Column.TRUSTED);
if (isPaired || isTrusted)
nDevices++;
ret = this._model.iter_next(iter);
}
if (this._hadSetupDevices != (nDevices > 0)) {
this._hadSetupDevices = !this._hadSetupDevices;
global.settings.set_boolean(HAD_BLUETOOTH_DEVICES_SETUP, this._hadSetupDevices);
}
return deviceInfos;
}
return [nDevices, nConnectedDevices];
_queueSync() {
if (this._syncId)
return;
this._syncId = GLib.idle_add(GLib.PRIORITY_DEFAULT, () => {
this._syncId = 0;
this._sync();
return GLib.SOURCE_REMOVE;
});
}
_sync() {
let [nDevices, nConnectedDevices] = this._getNDevices();
let adapter = this._getDefaultAdapter();
let devices = this._getDeviceInfos(adapter);
const connectedDevices = devices.filter(dev => dev.connected);
const nConnectedDevices = connectedDevices.length;
if (adapter && this._adapter)
this._setHadSetupDevices(devices.length > 0);
this._adapter = adapter;
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
@ -119,19 +138,21 @@ class Indicator extends PanelMenu.SystemIndicator {
// Remember if there were setup devices and show the menu
// if we've seen setup devices and we're not hard blocked
if (nDevices > 0)
if (this._hadSetupDevices)
this._item.visible = !this._proxy.BluetoothHardwareAirplaneMode;
else
this._item.visible = this._proxy.BluetoothHasAirplaneMode && !this._proxy.BluetoothAirplaneMode;
if (nConnectedDevices > 0)
if (nConnectedDevices > 1)
/* Translators: this is the number of connected bluetooth devices */
this._item.label.text = ngettext("%d Connected", "%d Connected", nConnectedDevices).format(nConnectedDevices);
else if (nConnectedDevices == -1)
this._item.label.text = _("Off");
this._item.label.text = ngettext('%d Connected", "%d Connected', nConnectedDevices).format(nConnectedDevices);
else if (nConnectedDevices === 1)
this._item.label.text = connectedDevices[0].name;
else if (adapter === null)
this._item.label.text = _('Bluetooth Off');
else
this._item.label.text = _("On");
this._item.label.text = _('Bluetooth On');
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _("Turn On") : _("Turn Off");
this._toggleItem.label.text = this._proxy.BluetoothAirplaneMode ? _('Turn On') : _('Turn Off');
}
});

View File

@ -48,9 +48,7 @@ class Indicator extends PanelMenu.SystemIndicator {
this._item.connect('key-press-event', (actor, event) => {
return this._slider.emit('key-press-event', event);
});
this._item.connect('scroll-event', (actor, event) => {
return this._slider.emit('scroll-event', event);
});
}
_sliderChanged() {

View File

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

View File

@ -15,6 +15,10 @@ const Util = imports.misc.util;
const { loadInterfaceXML } = imports.misc.fileUtils;
Gio._promisify(NM.Client, 'new_async', 'new_finish');
Gio._promisify(NM.Client.prototype,
'check_connectivity_async', 'check_connectivity_finish');
const NMConnectionCategory = {
INVALID: 'invalid',
WIRED: 'wired',
@ -712,8 +716,7 @@ class NMWirelessDialog extends ModalDialog.ModalDialog {
let connections = client.get_connections();
this._connections = connections.filter(
connection => device.connection_valid(connection)
);
connection => device.connection_valid(connection));
this._apAddedId = device.connect('access-point-added', this._accessPointAdded.bind(this));
this._apRemovedId = device.connect('access-point-removed', this._accessPointRemoved.bind(this));
@ -1627,11 +1630,11 @@ class Indicator extends PanelMenu.SystemIndicator {
this._ctypes[NM.SETTING_GSM_SETTING_NAME] = NMConnectionCategory.WWAN;
this._ctypes[NM.SETTING_VPN_SETTING_NAME] = NMConnectionCategory.VPN;
NM.Client.new_async(null, this._clientGot.bind(this));
this._getClient();
}
_clientGot(obj, result) {
this._client = NM.Client.new_finish(result);
async _getClient() {
this._client = await NM.Client.new_async(null);
this._activeConnections = [];
this._connections = [];
@ -1859,8 +1862,7 @@ class Indicator extends PanelMenu.SystemIndicator {
_syncVpnConnections() {
let activeConnections = this._client.get_active_connections() || [];
let vpnConnections = activeConnections.filter(
a => a instanceof NM.VpnConnection
);
a => a instanceof NM.VpnConnection);
vpnConnections.forEach(a => {
ensureActiveConnectionProps(a);
});
@ -1982,7 +1984,7 @@ class Indicator extends PanelMenu.SystemIndicator {
}
}
_portalHelperDone(proxy, emitter, parameters) {
async _portalHelperDone(proxy, emitter, parameters) {
let [path, result] = parameters;
if (result == PortalHelperResult.CANCELLED) {
@ -1993,13 +1995,11 @@ class Indicator extends PanelMenu.SystemIndicator {
} else if (result == PortalHelperResult.COMPLETED) {
this._closeConnectivityCheck(path);
} else if (result == PortalHelperResult.RECHECK) {
this._client.check_connectivity_async(null, (client, res) => {
try {
let state = client.check_connectivity_finish(res);
if (state >= NM.ConnectivityState.FULL)
this._closeConnectivityCheck(path);
} catch (e) { }
});
try {
const state = await this._client.check_connectivity_async(null);
if (state >= NM.ConnectivityState.FULL)
this._closeConnectivityCheck(path);
} catch (e) { }
} else {
log('Invalid result from portal helper: %s'.format(result));
}

View File

@ -112,12 +112,12 @@ class Indicator extends PanelMenu.SystemIndicator {
let chargingState = this._proxy.State == UPower.DeviceState.CHARGING
? '-charging' : '';
let fillLevel = 10 * Math.floor(this._proxy.Percentage / 10);
const charged =
this._proxy.State === UPower.DeviceState.FULLY_CHARGED ||
(this._proxy.State === UPower.DeviceState.CHARGING && fillLevel === 100);
const icon = charged
? 'battery-level-100-charged-symbolic'
: 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState);
let icon;
if (this._proxy.State == UPower.DeviceState.FULLY_CHARGED ||
fillLevel === 100)
icon = 'battery-level-100-charged-symbolic';
else
icon = 'battery-level-%d%s-symbolic'.format(fillLevel, chargingState);
// Make sure we fall back to fallback-icon-name and not GThemedIcon's
// default fallbacks

View File

@ -11,8 +11,7 @@ class RemoteAccessApplet extends PanelMenu.SystemIndicator {
_init() {
super._init();
let backend = Meta.get_backend();
let controller = backend.get_remote_access_controller();
let controller = global.backend.get_remote_access_controller();
if (!controller)
return;

View File

@ -82,8 +82,7 @@ class Indicator extends PanelMenu.SystemIndicator {
});
let app = this._settingsApp = Shell.AppSystem.get_default().lookup_app(
'gnome-control-center.desktop'
);
'gnome-control-center.desktop');
if (app) {
let [icon, name] = [app.app_info.get_icon().names[0],
app.get_name()];

View File

@ -52,22 +52,21 @@ const BOLT_DBUS_PATH = '/org/freedesktop/bolt';
var Client = class {
constructor() {
this._proxy = null;
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
Gio.DBusProxy.new(Gio.DBus.system,
Gio.DBusProxyFlags.DO_NOT_AUTO_START,
nodeInfo.lookup_interface(BOLT_DBUS_CLIENT_IFACE),
BOLT_DBUS_NAME,
BOLT_DBUS_PATH,
BOLT_DBUS_CLIENT_IFACE,
null,
this._onProxyReady.bind(this));
this.probing = false;
this._getProxy();
}
_onProxyReady(o, res) {
async _getProxy() {
let nodeInfo = Gio.DBusNodeInfo.new_for_xml(BoltClientInterface);
try {
this._proxy = Gio.DBusProxy.new_finish(res);
this._proxy = await Gio.DBusProxy.new(
Gio.DBus.system,
Gio.DBusProxyFlags.DO_NOT_AUTO_START,
nodeInfo.lookup_interface(BOLT_DBUS_CLIENT_IFACE),
BOLT_DBUS_NAME,
BOLT_DBUS_PATH,
BOLT_DBUS_CLIENT_IFACE,
null);
} catch (e) {
log('error creating bolt proxy: %s'.format(e.message));
return;
@ -243,14 +242,15 @@ class Indicator extends PanelMenu.SystemIndicator {
this._source = null;
this._perm = null;
this._createPermission();
}
Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null, (source, res) => {
try {
this._perm = Polkit.Permission.new_finish(res);
} catch (e) {
log('Failed to get PolKit permission: %s'.format(e.toString()));
}
});
async _createPermission() {
try {
this._perm = await Polkit.Permission.new('org.freedesktop.bolt.enroll', null, null);
} catch (e) {
log('Failed to get PolKit permission: %s'.format(e.toString()));
}
}
_onDestroy() {

View File

@ -56,9 +56,6 @@ var StreamSlider = class {
this.item.connect('key-press-event', (actor, event) => {
return this._slider.emit('key-press-event', event);
});
this.item.connect('scroll-event', (actor, event) => {
return this._slider.emit('scroll-event', event);
});
this._stream = null;
this._volumeCancellable = null;

View File

@ -317,7 +317,7 @@ var SwitcherPopup = GObject.registerClass({
this.ease({
opacity: 0,
duration: POPUP_FADE_OUT_TIME,
mode: Clutter.Animation.EASE_OUT_QUAD,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
onComplete: () => this.destroy(),
});
} else {

View File

@ -1,228 +0,0 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported init, addCaller, addTween, getTweenCount, removeTweens,
pauseTweens, resumeTweens, registerSpecialProperty,
registerSpecialPropertyModifier, registerSpecialPropertySplitter */
const { Clutter, GLib, Shell } = imports.gi;
const Signals = imports.signals;
const Tweener = imports.tweener.tweener;
const { adjustAnimationTime } = imports.ui.environment;
// This is a wrapper around imports.tweener.tweener that adds a bit of
// Clutter integration. If the tweening target is a Clutter.Actor, then
// the tweenings will automatically be removed if the actor is destroyed.
// ActionScript Tweener methods that imports.tweener.tweener doesn't
// currently implement: getTweens, getVersion, registerTransition,
// setTimeScale, updateTime.
// imports.tweener.tweener methods that we don't re-export:
// pauseAllTweens, removeAllTweens, resumeAllTweens. (It would be hard
// to clean up properly after removeAllTweens, and also, any code that
// calls any of these is almost certainly wrong anyway, because they
// affect the entire application.)
// Called from Main.start
function init() {
Tweener.setFrameTicker(new ClutterFrameTicker());
}
function addCaller(target, tweeningParameters) {
_wrapTweening(target, tweeningParameters);
Tweener.addCaller(target, tweeningParameters);
}
function addTween(target, tweeningParameters) {
_wrapTweening(target, tweeningParameters);
Tweener.addTween(target, tweeningParameters);
}
function _wrapTweening(target, tweeningParameters) {
let state = _getTweenState(target);
if (!state.destroyedId) {
if (target instanceof Clutter.Actor) {
state.actor = target;
state.destroyedId = target.connect('destroy', _actorDestroyed);
} else if (target.actor && target.actor instanceof Clutter.Actor) {
state.actor = target.actor;
state.destroyedId = target.actor.connect('destroy', () => _actorDestroyed(target));
}
}
let { time, delay } = tweeningParameters;
if (!isNaN(time))
tweeningParameters['time'] = adjustAnimationTime(1000 * time) / 1000;
if (!isNaN(delay))
tweeningParameters['delay'] = adjustAnimationTime(1000 * delay) / 1000;
_addHandler(target, tweeningParameters, 'onComplete', _tweenCompleted);
}
function _getTweenState(target) {
// If we were paranoid, we could keep a plist mapping targets to
// states... but we're not that paranoid.
if (!target.__ShellTweenerState)
target.__ShellTweenerState = {};
return target.__ShellTweenerState;
}
function _resetTweenState(target) {
let state = target.__ShellTweenerState;
if (state) {
if (state.destroyedId)
state.actor.disconnect(state.destroyedId);
}
target.__ShellTweenerState = {};
}
function _addHandler(target, params, name, handler) {
if (params[name]) {
let oldHandler = params[name];
let oldScope = params[`${name}Scope`];
let oldParams = params[`${name}Params`];
let eventScope = oldScope ? oldScope : target;
params[name] = () => {
oldHandler.apply(eventScope, oldParams);
handler(target);
};
} else {
params[name] = () => handler(target);
}
}
function _actorDestroyed(target) {
_resetTweenState(target);
Tweener.removeTweens(target);
}
function _tweenCompleted(target) {
if (!isTweening(target))
_resetTweenState(target);
}
function getTweenCount(scope) {
return Tweener.getTweenCount(scope);
}
// imports.tweener.tweener doesn't provide this method (which exists
// in the ActionScript version) but it's easy to implement.
function isTweening(scope) {
return Tweener.getTweenCount(scope) != 0;
}
function removeTweens(...args) {
if (Tweener.removeTweens(args)) {
let [scope] = args;
// If we just removed the last active tween, clean up
if (Tweener.getTweenCount(scope) == 0)
_tweenCompleted(scope);
return true;
} else {
return false;
}
}
function pauseTweens(...args) {
return Tweener.pauseTweens(...args);
}
function resumeTweens(...args) {
return Tweener.resumeTweens(...args);
}
function registerSpecialProperty(...args) {
Tweener.registerSpecialProperty(...args);
}
function registerSpecialPropertyModifier(name, modifyFunction, getFunction) {
Tweener.registerSpecialPropertyModifier(name, modifyFunction, getFunction);
}
function registerSpecialPropertySplitter(name, splitFunction, parameters) {
Tweener.registerSpecialPropertySplitter(name, splitFunction, parameters);
}
// The 'FrameTicker' object is an object used to feed new frames to
// Tweener so it can update values and redraw. The default frame
// ticker for Tweener just uses a simple timeout at a fixed frame rate
// and has no idea of "catching up" by dropping frames.
//
// We substitute it with custom frame ticker here that connects
// Tweener to a Clutter.TimeLine. Now, Clutter.Timeline itself isn't a
// whole lot more sophisticated than a simple timeout at a fixed frame
// rate, but at least it knows how to drop frames. (See
// HippoAnimationManager for a more sophisticated view of continuous
// time updates; even better is to pay attention to the vertical
// vblank and sync to that when possible.)
//
var ClutterFrameTicker = class {
constructor() {
// We don't have a finite duration; tweener will tell us to stop
// when we need to stop, so use 1000 seconds as "infinity", and
// set the timeline to loop. Doing this means we have to track
// time ourselves, since clutter timeline's time will cycle
// instead of strictly increase.
this._timeline = new Clutter.Timeline({ duration: 1000 * 1000 });
this._timeline.set_loop(true);
this._startTime = -1;
this._currentTime = -1;
this._timeline.connect('new-frame', () => {
this._onNewFrame();
});
let perfLog = Shell.PerfLog.get_default();
perfLog.define_event("tweener.framePrepareStart",
"Start of a new animation frame",
"");
perfLog.define_event("tweener.framePrepareDone",
"Finished preparing frame",
"");
}
get FRAME_RATE() {
return 60;
}
_onNewFrame() {
// If there is a lot of setup to start the animation, then
// first frame number we get from clutter might be a long ways
// into the animation (or the animation might even be done).
// That looks bad, so we always start at the first frame of the
// animation then only do frame dropping from there.
if (this._startTime < 0)
this._startTime = GLib.get_monotonic_time() / 1000.0;
// currentTime is in milliseconds
let perfLog = Shell.PerfLog.get_default();
this._currentTime = GLib.get_monotonic_time() / 1000.0 - this._startTime;
perfLog.event("tweener.framePrepareStart");
this.emit('prepare-frame');
perfLog.event("tweener.framePrepareDone");
}
getTime() {
return this._currentTime;
}
start() {
this._timeline.start();
global.begin_work();
}
stop() {
this._timeline.stop();
this._startTime = -1;
this._currentTime = -1;
global.end_work();
}
};
Signals.addSignalMethods(ClutterFrameTicker.prototype);

View File

@ -524,10 +524,6 @@ var UnlockDialog = GObject.registerClass({
this._bgManagers = [];
const themeContext = St.ThemeContext.get_for_stage(global.stage);
this._scaleChangedId = themeContext.connect('notify::scale-factor',
() => this._updateBackgroundEffects());
this._updateBackgrounds();
this._monitorsChangedId =
Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this));
@ -570,17 +566,9 @@ var UnlockDialog = GObject.registerClass({
this._otherUserButton.set_pivot_point(0.5, 0.5);
this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this));
this._screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
this._userSwitchEnabledId = 0;
this._userSwitchEnabledId = this._screenSaverSettings.connect('changed::user-switch-enabled',
this._updateUserSwitchVisibility.bind(this));
this._userLoadedId = 0;
this._userLoadedId = this._user.connect('notify::is-loaded',
this._updateUserSwitchVisibility.bind(this));
this._updateUserSwitchVisibility();
let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
screenSaverSettings.bind('user-switch-enabled',
this._otherUserButton, 'visible', Gio.SettingsBindFlags.GET);
// Main Box
let mainBox = new St.Widget();
@ -630,7 +618,6 @@ var UnlockDialog = GObject.registerClass({
y: monitor.y,
width: monitor.width,
height: monitor.height,
effect: new Shell.BlurEffect({ name: 'blur' }),
});
let bgManager = new Background.BackgroundManager({
@ -642,17 +629,19 @@ var UnlockDialog = GObject.registerClass({
this._bgManagers.push(bgManager);
this._backgroundGroup.add_child(widget);
}
_updateBackgroundEffects() {
const themeContext = St.ThemeContext.get_for_stage(global.stage);
for (const widget of this._backgroundGroup.get_children()) {
widget.get_effect('blur').set({
brightness: BLUR_BRIGHTNESS,
sigma: BLUR_SIGMA * themeContext.scale_factor,
});
}
let effect = new Shell.BlurEffect({
brightness: BLUR_BRIGHTNESS,
sigma: BLUR_SIGMA * themeContext.scale_factor,
});
this._scaleChangedId = themeContext.connect('notify::scale-factor', () => {
effect.sigma = BLUR_SIGMA * themeContext.scale_factor;
});
widget.add_effect(effect);
}
_updateBackgrounds() {
@ -664,7 +653,6 @@ var UnlockDialog = GObject.registerClass({
for (let i = 0; i < Main.layoutManager.monitors.length; i++)
this._createBackground(i);
this._updateBackgroundEffects();
}
_ensureAuthPrompt() {
@ -840,21 +828,6 @@ var UnlockDialog = GObject.registerClass({
this._gdmClient = null;
delete this._gdmClient;
}
if (this._userLoadedId) {
this._user.disconnect(this._userLoadedId);
this._userLoadedId = 0;
}
if (this._userSwitchEnabledId) {
this._screenSaverSettings.disconnect(this._userSwitchEnabledId);
this._userSwitchEnabledId = 0;
}
}
_updateUserSwitchVisibility() {
this._otherUserButton.visible = this._userManager.can_switch() &&
this._screenSaverSettings.get_boolean('user-switch-enabled');
}
cancel() {

View File

@ -900,47 +900,35 @@ var WindowManager = class {
global.display.connect('init-xserver', (display, task) => {
IBusManager.getIBusManager().restartDaemon(['--xim']);
Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail');
try {
if (!Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail'))
log('Not starting gsd-xsettings; waiting for gnome-session to do so');
/* Leave this watchdog timeout so don't block indefinitely here */
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
Gio.DBus.session.unwatch_name(watchId);
log('Warning: Failed to start gsd-xsettings');
task.return_boolean(true);
timeoutId = 0;
return GLib.SOURCE_REMOVE;
});
/* When gsd-xsettings daemon is started, we are good to resume */
let watchId = Gio.DBus.session.watch_name(
'org.gnome.SettingsDaemon.XSettings',
Gio.BusNameWatcherFlags.NONE,
() => {
Gio.DBus.session.unwatch_name(watchId);
if (timeoutId > 0) {
task.return_boolean(true);
GLib.source_remove(timeoutId);
}
},
null);
} catch (e) {
log('Error starting gsd-xsettings: %s'.format(e.message));
/* Leave this watchdog timeout so don't block indefinitely here */
let timeoutId = GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 5, () => {
Gio.DBus.session.unwatch_name(watchId);
log('Warning: Failed to start gsd-xsettings');
task.return_boolean(true);
}
timeoutId = 0;
return GLib.SOURCE_REMOVE;
});
/* When gsd-xsettings daemon is started, we are good to resume */
let watchId = Gio.DBus.session.watch_name(
'org.gnome.SettingsDaemon.XSettings',
Gio.BusNameWatcherFlags.NONE,
() => {
Gio.DBus.session.unwatch_name(watchId);
if (timeoutId > 0) {
task.return_boolean(true);
GLib.source_remove(timeoutId);
}
},
null);
return true;
});
global.display.connect('x11-display-closing', () => {
if (!Meta.is_wayland_compositor())
return;
try {
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
} catch (e) {
log('Error stopping gsd-xsettings: %s'.format(e.message));
}
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
IBusManager.getIBusManager().restartDaemon();
});

View File

@ -8,7 +8,6 @@ const SwipeTracker = imports.ui.swipeTracker;
const Workspace = imports.ui.workspace;
var WORKSPACE_SWITCH_TIME = 250;
var SCROLL_TIMEOUT_TIME = 150;
var AnimationType = {
ZOOM: 0,
@ -450,7 +449,6 @@ class WorkspacesDisplay extends St.Widget {
this._keyPressEventId = 0;
this._scrollTimeoutId = 0;
this._actualGeometry = null;
this._fullGeometry = null;
this._inWindowDrag = false;
@ -611,16 +609,13 @@ class WorkspacesDisplay extends St.Widget {
show(fadeOnPrimary) {
this._updateWorkspacesViews();
if (this._actualGeometry && this._fullGeometry) {
for (let i = 0; i < this._workspacesViews.length; i++) {
let animationType;
if (fadeOnPrimary && i == this._primaryIndex)
animationType = AnimationType.FADE;
else
animationType = AnimationType.ZOOM;
this._workspacesViews[i].animateToOverview(animationType);
}
for (let i = 0; i < this._workspacesViews.length; i++) {
let animationType;
if (fadeOnPrimary && i == this._primaryIndex)
animationType = AnimationType.FADE;
else
animationType = AnimationType.ZOOM;
this._workspacesViews[i].animateToOverview(animationType);
}
this._restackedNotifyId =
@ -694,10 +689,8 @@ class WorkspacesDisplay extends St.Widget {
this._workspacesViews.forEach(v => v.show());
if (this._fullGeometry)
this._syncWorkspacesFullGeometry();
if (this._actualGeometry)
this._syncWorkspacesActualGeometry();
this._updateWorkspacesFullGeometry();
this._updateWorkspacesActualGeometry();
}
_getMonitorIndexForEvent(event) {
@ -749,10 +742,10 @@ class WorkspacesDisplay extends St.Widget {
// the sliding controls were never slid in at all.
setWorkspacesFullGeometry(geom) {
this._fullGeometry = geom;
this._syncWorkspacesFullGeometry();
this._updateWorkspacesFullGeometry();
}
_syncWorkspacesFullGeometry() {
_updateWorkspacesFullGeometry() {
if (!this._workspacesViews.length)
return;
@ -764,21 +757,18 @@ class WorkspacesDisplay extends St.Widget {
}
_updateWorkspacesActualGeometry() {
const [x, y] = this.get_transformed_position();
const width = this.allocation.get_width();
const height = this.allocation.get_height();
this._actualGeometry = { x, y, width, height };
this._syncWorkspacesActualGeometry();
}
_syncWorkspacesActualGeometry() {
if (!this._workspacesViews.length)
return;
let [x, y] = this.get_transformed_position();
let allocation = this.allocation;
let width = allocation.x2 - allocation.x1;
let height = allocation.y2 - allocation.y1;
let primaryGeometry = { x, y, width, height };
let monitors = Main.layoutManager.monitors;
for (let i = 0; i < monitors.length; i++) {
let geometry = i === this._primaryIndex ? this._actualGeometry : monitors[i];
let geometry = i == this._primaryIndex ? primaryGeometry : monitors[i];
this._workspacesViews[i].setActualGeometry(geometry);
}
}
@ -825,12 +815,11 @@ class WorkspacesDisplay extends St.Widget {
this._canScroll = false;
this._scrollTimeoutId = GLib.timeout_add(GLib.PRIORITY_DEFAULT,
SCROLL_TIMEOUT_TIME, () => {
WORKSPACE_SWITCH_TIME, () => {
this._canScroll = true;
this._scrollTimeoutId = 0;
return GLib.SOURCE_REMOVE;
}
);
});
return Clutter.EVENT_STOP;
}

View File

@ -1,6 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { Clutter, Meta } = imports.gi;
const { Clutter } = imports.gi;
const Signals = imports.signals;
const DND = imports.ui.dnd;
@ -17,7 +17,7 @@ var XdndHandler = class {
Main.uiGroup.add_actor(this._dummy);
this._dummy.hide();
var dnd = Meta.get_backend().get_dnd();
var dnd = global.backend.get_dnd();
dnd.connect('dnd-enter', this._onEnter.bind(this));
dnd.connect('dnd-position-change', this._onPositionChanged.bind(this));
dnd.connect('dnd-leave', this._onLeave.bind(this));

View File

@ -218,12 +218,12 @@ globals:
ARGV: readonly
Debugger: readonly
GIRepositoryGType: readonly
globalThis: readonly
imports: readonly
Intl: readonly
log: readonly
logError: readonly
print: readonly
printerr: readonly
window: readonly
parserOptions:
ecmaVersion: 2019

View File

@ -1,6 +1,6 @@
project('gnome-shell', 'c',
version: '3.36.4',
meson_version: '>= 0.47.0',
version: '3.37.1',
meson_version: '>= 0.53.0',
license: 'GPLv2+'
)
@ -23,9 +23,9 @@ eds_req = '>= 3.33.1'
gcr_req = '>= 3.7.5'
gio_req = '>= 2.56.0'
gi_req = '>= 1.49.1'
gjs_req = '>= 1.63.2'
gjs_req = '>= 1.65.1'
gtk_req = '>= 3.15.0'
mutter_req = '>= 3.36.0'
mutter_req = '>= 3.37.1'
polkit_req = '>= 0.100'
schemas_req = '>= 3.33.1'
startup_req = '>= 0.11'
@ -63,16 +63,9 @@ portaldir = join_paths(datadir, 'xdg-desktop-portal', 'portals')
schemadir = join_paths(datadir, 'glib-2.0', 'schemas')
servicedir = join_paths(datadir, 'dbus-1', 'services')
# XXX: Once https://github.com/systemd/systemd/issues/9595 is fixed and we can
# depend on this version, replace with something like:
# systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
# define_variable: ['prefix', prefix])
# and uncomment systemd_dep below
systemduserunitdir = join_paths(prefix, 'lib', 'systemd', 'user')
keybindings_dep = dependency('gnome-keybindings', required: false)
if keybindings_dep.found()
keysdir = keybindings_dep.get_pkgconfig_variable('keysdir')
keysdir = keybindings_dep.get_pkgconfig_variable('keysdir', define_variable: ['datadir', datadir])
else
keysdir = join_paths(datadir, 'gnome-control-center', 'keybindings')
endif
@ -122,8 +115,9 @@ endif
if get_option('systemd')
libsystemd_dep = dependency('libsystemd')
# XXX: see systemduserunitdir
# systemd_dep = dependency('systemd')
systemd_dep = dependency('systemd')
systemduserunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
define_variable: ['prefix', prefix])
have_systemd = true
else
libsystemd_dep = []
@ -321,8 +315,6 @@ 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
summary(summary_dirs, section: 'Directories')
summary(summary_build, section: 'Build Configuration')
summary(summary_options, section: 'Build Options')

View File

@ -94,5 +94,7 @@ subprojects/extensions-tool/src/command-prefs.c
subprojects/extensions-tool/src/command-reset.c
subprojects/extensions-tool/src/command-uninstall.c
subprojects/extensions-tool/src/main.c
subprojects/extensions-tool/src/templates/00-plain.desktop.in
subprojects/extensions-tool/src/templates/indicator.desktop.in
# Please do not remove this file from POTFILES.in. Run "git submodule init && git submodule update" to get it.
subprojects/gvc/gvc-mixer-control.c

1
po/POTFILES.skip Normal file
View File

@ -0,0 +1 @@
subprojects/extensions-tool/src/templates/indicator/extension.js

550
po/cs.po

File diff suppressed because it is too large Load Diff

439
po/de.po
View File

@ -22,9 +22,9 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
"PO-Revision-Date: 2020-05-24 00:19+0200\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-20 06:42+0100\n"
"Last-Translator: Wolfgang Stoeggl <c72578@yahoo.de>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de\n"
"MIME-Version: 1.0\n"
@ -409,12 +409,68 @@ msgstr ""
msgid "Network Login"
msgstr "Netzwerkanmeldung"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: 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 "Erweiterungen"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Ihre GNOME-Erweiterungen verwalten"
#: 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-Erweiterungen dient der Aktualisierung von Erweiterungen, dem "
"Konfigurieren der Voreinstellungen von Erweiterungen und dem Entfernen oder "
"Deaktivieren nicht gewünschter Erweiterungen."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME-Shell-Erweiterungen einrichten"
#: js/extensionPrefs/js/main.js:164
#, javascript-format
msgid "Remove “%s”?"
msgstr "»%s« entfernen?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Wenn Sie die Erweiterung entfernen, müssen Sie sie erneut herunterladen, um "
"sie wieder zu aktivieren"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Abbrechen"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Entfernen"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Tim Sabsch <tim@sabsch.com>\n"
"Christian Kirbach <christian.kirbach@gmail.com>, 2020"
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Etwas ist schiefgelaufen"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -424,25 +480,106 @@ msgstr ""
"Erweiterung können nicht angezeigt werden. Wir empfehlen, dass Sie diesen "
"Fehler den Autoren der Erweiterung melden."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Technische Details"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Kopierfehler"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Homepage"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Internetseite der Erweiterung besuchen"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Abbrechen"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert."
msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Beschreibung"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autor"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webseite"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Entfernen …"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hilfe"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Info zu Erweiterungen"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Besuchen Sie <a href=\"https://extensions.gnome.org\">extensions.gnome.org</"
"a>, um Erweiterungen zu finden und hinzuzufügen."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Warnung"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Erweiterungen können Probleme am System verursachen, darunter auch "
"Leistungsprobleme. Sollten Sie auf Probleme mit Ihrem System stoßen, wird "
"die Deaktivierung aller Erweiterungen empfohlen."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Manuell installiert"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Mitgeliefert"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Keine installierten Erweiterungen"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Tut uns sehr leid, wir konnten keine Liste der installierten Erweiterungen "
"aufstellen. Stellen Sie sicher, dass Sie in GNOME angemeldet sind und "
"versuchen Sie es dann erneut."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Abmelden …"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -494,71 +631,71 @@ msgid "(or swipe finger)"
msgstr "(oder wischen Sie mit einem Finger)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Ausschalten"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "ausschalten;herunterfahren;neustarten;halten;stoppen"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Bildschirm sperren"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "Bildschirm sperren"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Abmelden"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "abmelden;verlassen"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Bereitschaft"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "Bereitschaft;Schlafen"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Benutzer wechseln"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "Benutzer wechseln"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "Hochformat;Querformat;sperren;entsperren;Bildschirm;Drehung;drehen"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Bildschirmdrehung entsperren"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Bildschirmdrehung sperren"
@ -724,54 +861,54 @@ msgstr "Zugriff verhindern"
msgid "Grant Access"
msgstr "Zugriff gewähren"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Unbenannter Ordner"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Häufig genutzte Anwendungen erscheinen hier"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Häufig"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Alle"
# Fensterüberschrift
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Offene Fenster"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Neues Fenster"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Mit dedizierter Grafikkarte starten"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Details anzeigen"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s wurde zu Ihren Favoriten hinzugefügt."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt."
@ -792,7 +929,7 @@ msgstr "Kopfhörer"
msgid "Headset"
msgstr "Headset"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Mikrofon"
@ -933,7 +1070,7 @@ msgstr "Keine Termine"
msgid "Do Not Disturb"
msgstr "Nicht stören"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Leeren"
@ -1086,7 +1223,7 @@ msgstr ""
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s heißt jetzt %s"
@ -1131,23 +1268,23 @@ msgstr "Weltuhren hinzufügen …"
msgid "World Clocks"
msgstr "Weltuhren"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Wetter"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Ort auswählen …"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Wird geladen …"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Gehen Sie Online, um Wetterinformationen beziehen zu können"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Wetterinformationen sind momentan nicht verfügbar"
@ -1288,35 +1425,35 @@ msgid "Other users are logged in"
msgstr "Andere Benutzer sind angemeldet"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (Entfernt)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (Konsole)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Installieren"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Erweiterung installieren"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Aktualisierungen für Erweiterungen verfügbar"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Aktualisierungen für Erweiterungen stehen bereit zur Installation."
@ -1465,11 +1602,11 @@ msgstr "Quelle zeigen"
msgid "Web Page"
msgstr "Webseite"
#: js/ui/main.js:279
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Als privilegierter Benutzer angemeldet"
#: js/ui/main.js:280
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1478,23 +1615,23 @@ msgstr ""
"Sicherheitsgründen unterlassen werden. Falls möglich, melden Sie sich bitte "
"als normaler Benutzer an."
#: js/ui/main.js:319
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Bildschirmsperre deaktiviert"
#: js/ui/main.js:320
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr "Die Sperrung des Bildschirms erfordert den GNOME Display-Manager."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Systeminformationen"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "Unbekannter Künstler"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "Unbekannter Titel"
@ -1566,16 +1703,16 @@ msgstr "Beenden"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Aktivitäten"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "System"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Oberes Panel"
@ -1606,11 +1743,11 @@ msgstr "GNOME muss den Bildschirm sperren"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Sperrung fehlgeschlagen"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
@ -1693,13 +1830,13 @@ msgid "The PIM must be a number or empty."
msgstr "Die PIM muss eine Nummer oder leer sein."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "%s konnte nicht gestartet werden"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Die Anwendung %s konnte nicht gefunden werden"
@ -2183,11 +2320,11 @@ msgstr "Thunderbolt-Legitimierungsfehler"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Das Thunderbolt-Gerät %s konnte nicht legitimiert werden"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Lautstärke geändert"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Lautstärke"
@ -2221,23 +2358,23 @@ msgstr "Nur eingebaut"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %d. %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Nach oben wischen zum Entsperren"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Durch Mausklick oder Tastendruck entsperren"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Fenster entsperren"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Als anderer Benutzer anmelden"
@ -2270,7 +2407,7 @@ msgstr "Zurücksetzen"
msgid "Keep Changes"
msgstr "Beibehalten"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2280,7 +2417,7 @@ msgstr[1] ""
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2375,12 +2512,12 @@ msgstr ""
msgid "List possible modes"
msgstr "Die möglichen Modi auflisten"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Unbekannt"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "»%s« konnte nicht gestartet werden"
@ -2397,143 +2534,6 @@ msgstr "Es muss ein Passwort angegeben werden"
msgid "Authentication dialog was dismissed by the user"
msgstr "Der Dialog zur Anmeldung wurde vom Benutzer geschlossen"
#: 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 "Erweiterungen"
#: 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 "Ihre GNOME-Erweiterungen verwalten"
#: 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-Erweiterungen dient der Aktualisierung von Erweiterungen, dem "
"Konfigurieren der Voreinstellungen von Erweiterungen und dem Entfernen oder "
"Deaktivieren nicht gewünschter Erweiterungen."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME-Shell-Erweiterungen einrichten"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "»%s« entfernen?"
#: 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 ""
"Wenn Sie die Erweiterung entfernen, müssen Sie sie erneut herunterladen, um "
"sie wieder zu aktivieren"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Entfernen"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Tim Sabsch <tim@sabsch.com>\n"
"Christian Kirbach <christian.kirbach@gmail.com>, 2020"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d Erweiterung wird bei der nächsten Anmeldung aktualisiert."
msgstr[1] "%d Erweiterungen werden bei der nächsten Anmeldung aktualisiert."
#: 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 "Beschreibung"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autor"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webseite"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Entfernen …"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hilfe"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Info zu Erweiterungen"
#: 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 ""
"Besuchen Sie <a href=\"https://extensions.gnome.org\">extensions.gnome.org</"
"a>, um Erweiterungen zu finden und hinzuzufügen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Warnung"
#: 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 ""
"Erweiterungen können Probleme am System verursachen, darunter auch "
"Leistungsprobleme. Sollten Sie auf Probleme mit Ihrem System stoßen, wird "
"die Deaktivierung aller Erweiterungen empfohlen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "Manuell installiert"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "Mitgeliefert"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "Keine installierten Erweiterungen"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
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 ""
"Tut uns sehr leid, wir konnten keine Liste der installierten Erweiterungen "
"aufstellen. Stellen Sie sicher, dass Sie in GNOME angemeldet sind und "
"versuchen Sie es dann erneut."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Aktualisierungen für Erweiterungen stehen bereit"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "Abmelden …"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2872,9 +2872,6 @@ msgstr[1] "%u Eingänge"
msgid "System Sounds"
msgstr "Systemklänge"
#~ msgid "Copy Error"
#~ msgstr "Kopierfehler"
#~ msgid "Username…"
#~ msgstr "Benutzername …"

View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-05-06 19:54+0100\n"
"POT-Creation-Date: 2020-02-21 09:52+0000\n"
"PO-Revision-Date: 2020-02-23 12:49+0000\n"
"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
"Language-Team: English - United Kingdom <en@li.org>\n"
"Language: en_GB\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Generator: Gtranslator 3.34.0\n"
"X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6
@ -46,6 +46,15 @@ msgstr "Show all applications"
msgid "Open the application menu"
msgstr "Open the application menu"
#: 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 "Configure GNOME Shell Extensions"
#: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -386,12 +395,49 @@ msgstr "Delay focus changes in mouse mode until the pointer stops moving"
msgid "Network Login"
msgstr "Network Login"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: js/extensionPrefs/main.js:140
#, javascript-format
msgid "Remove “%s”?"
msgstr "Remove “%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 ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
#: 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 "Cancel"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "Remove"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
"Philip Withnall <philip@tecnocode.co.uk>\n"
"Bruce Cowan <bruce@bcowan.me.uk>\n"
"Chris Leonard <cjl@laptop.org>\n"
"David King <amigadave@amigadave.com>\n"
"Zander Brown <zbrown@gnome.org>"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "Manage your GNOME Extensions"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong"
msgstr "Somethings gone wrong"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/main.js:268
msgid ""
"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 "
@ -401,32 +447,113 @@ msgstr ""
"extension cant be displayed. We recommend that you report the issue to the "
"extension authors."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/main.js:275
msgid "Technical Details"
msgstr "Technical Details"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/main.js:310
msgid "Copy Error"
msgstr "Copy Error"
#: js/extensionPrefs/main.js:337
msgid "Homepage"
msgstr "Homepage"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/main.js:338
msgid "Visit extension homepage"
msgstr "Visit extension homepage"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Cancel"
#: js/extensionPrefs/main.js:449
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d extension will be updated on next login."
msgstr[1] "%d extensions will be updated on next login."
#: 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 "Description"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "Author"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "Website"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Remove…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "Help"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "About Extensions"
#: 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 ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Warning"
#: 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 ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "Manually Installed"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "Built-In"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "No Installed Extensions"
#: 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 ""
"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."
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "Log Out…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/gdm/authPrompt.js:236 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326
#| msgid "Password:"
msgid "Password"
msgstr "Password"
@ -448,8 +575,9 @@ msgstr "(e.g., user or %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
#| msgid "Username: "
msgid "Username"
msgstr "Username"
@ -630,7 +758,7 @@ msgstr "%A, %H%M"
#: js/misc/util.js:255
#, no-c-format
msgid "%B %-d, %H%M"
msgstr "%-d %B, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
@ -638,7 +766,7 @@ msgstr "%-d %B, %H%M"
#: js/misc/util.js:261
#, no-c-format
msgid "%B %-d %Y, %H%M"
msgstr "%-d %B %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Show only the time if date is on today
#. eslint-disable-line no-lonely-if
@ -667,7 +795,7 @@ msgstr "%A, %l:%M %p"
#: js/misc/util.js:284
#, no-c-format
msgid "%B %-d, %l%M %p"
msgstr "%-d %B, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
@ -675,7 +803,7 @@ msgstr "%-d %B, %l%M %p"
#: js/misc/util.js:290
#, no-c-format
msgid "%B %-d %Y, %l%M %p"
msgstr "%-d %B %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:41
@ -700,44 +828,44 @@ msgstr "Deny Access"
msgid "Grant Access"
msgstr "Grant Access"
#: js/ui/appDisplay.js:932
#: js/ui/appDisplay.js:906
msgid "Unnamed Folder"
msgstr "Unnamed Folder"
#: js/ui/appDisplay.js:955
#: js/ui/appDisplay.js:929
msgid "Frequently used applications will appear here"
msgstr "Frequently used applications will appear here"
#: js/ui/appDisplay.js:1090
#: js/ui/appDisplay.js:1064
msgid "Frequent"
msgstr "Frequent"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1071
msgid "All"
msgstr "All"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Open Windows"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "New Window"
#: js/ui/appDisplay.js:2504
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Launch using Dedicated Graphics Card"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Remove from Favourites"
#: js/ui/appDisplay.js:2538
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Add to Favourites"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Show Details"
@ -767,7 +895,7 @@ msgstr "Headphones"
msgid "Headset"
msgstr "Headset"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Microphone"
@ -885,30 +1013,30 @@ msgid "All Day"
msgstr "All Day"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:868
#: js/ui/calendar.js:867
msgctxt "calendar heading"
msgid "%A, %B %-d"
msgstr "%A, %-d %B"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:871
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %-d, %Y"
msgstr "%A, %-d %B, %Y"
msgstr "%A, %d %B, %Y"
#: js/ui/calendar.js:1100
#: js/ui/calendar.js:1096
msgid "No Notifications"
msgstr "No Notifications"
#: js/ui/calendar.js:1103
#: js/ui/calendar.js:1099
msgid "No Events"
msgstr "No Events"
#: js/ui/calendar.js:1157
#: js/ui/calendar.js:1153
msgid "Do Not Disturb"
msgstr "Do Not Disturb"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1167
msgid "Clear"
msgstr "Clear"
@ -955,39 +1083,43 @@ msgstr "The installed udisks version does not support the PIM setting"
msgid "Open with %s"
msgstr "Open with %s"
#: js/ui/components/networkAgent.js:91
#: js/ui/components/networkAgent.js:89
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"Alternatively you can connect by pushing the “WPS” button on your router."
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Connect"
#: js/ui/components/networkAgent.js:210
#: js/ui/components/networkAgent.js:208
#| msgid "Key: "
msgid "Key"
msgstr "Key"
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
#| msgid "Private key password: "
msgid "Private key password"
msgstr "Private key password"
#: js/ui/components/networkAgent.js:269
#: js/ui/components/networkAgent.js:267
#| msgid "Identity: "
msgid "Identity"
msgstr "Identity"
#: js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:281
#| msgid "Service: "
msgid "Service"
msgstr "Service"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required"
msgstr "Authentication required"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -996,42 +1128,44 @@ msgstr ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Wired 802.1X authentication"
#: js/ui/components/networkAgent.js:319
#: js/ui/components/networkAgent.js:317
#| msgid "Network name: "
msgid "Network name"
msgstr "Network name"
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL authentication"
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN code required"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN code is needed for the mobile broadband device"
#: js/ui/components/networkAgent.js:333
#: js/ui/components/networkAgent.js:331
#| msgid "PIN: "
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:711
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "A password is required to connect to “%s”."
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Network Manager"
#: js/ui/components/networkAgent.js:704
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN password"
@ -1057,7 +1191,7 @@ msgstr "Sorry, that didnt work. Please try again."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s is now known as %s"
@ -1083,7 +1217,7 @@ msgstr "Dash"
#.
#: js/ui/dateMenu.js:75
msgid "%B %-d %Y"
msgstr "%-d %B %Y"
msgstr "%e %B %Y"
#. Translators: This is the accessible name of the date button shown
#. * below the time in the shell; it should combine the weekday and the
@ -1101,106 +1235,106 @@ msgstr "Add world clocks…"
msgid "World Clocks"
msgstr "World Clocks"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:276
msgid "Weather"
msgstr "Weather"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:391
msgid "Select a location…"
msgstr "Select a location…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:404
msgid "Loading…"
msgstr "Loading…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:414
msgid "Go online for weather information"
msgstr "Go online for weather information"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable"
msgstr "Weather information is currently unavailable"
#: js/ui/endSessionDialog.js:39
#: js/ui/endSessionDialog.js:37
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Log Out %s"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:38
msgctxt "title"
msgid "Log Out"
msgstr "Log Out"
#: js/ui/endSessionDialog.js:42
#: js/ui/endSessionDialog.js:40
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s will be logged out automatically in %d second."
msgstr[1] "%s will be logged out automatically in %d seconds."
#: js/ui/endSessionDialog.js:47
#: js/ui/endSessionDialog.js:45
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "You will be logged out automatically in %d second."
msgstr[1] "You will be logged out automatically in %d seconds."
#: js/ui/endSessionDialog.js:53
#: js/ui/endSessionDialog.js:51
msgctxt "button"
msgid "Log Out"
msgstr "Log Out"
#: js/ui/endSessionDialog.js:58
#: js/ui/endSessionDialog.js:56
msgctxt "title"
msgid "Power Off"
msgstr "Power Off"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:57
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Install Updates & Power Off"
#: js/ui/endSessionDialog.js:61
#: js/ui/endSessionDialog.js:59
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "The system will power off automatically in %d second."
msgstr[1] "The system will power off automatically in %d seconds."
#: js/ui/endSessionDialog.js:65
#: js/ui/endSessionDialog.js:63
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Install pending software updates"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Restart"
#: js/ui/endSessionDialog.js:70
#: js/ui/endSessionDialog.js:68
msgctxt "button"
msgid "Power Off"
msgstr "Power Off"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:74
msgctxt "title"
msgid "Restart"
msgstr "Restart"
#: js/ui/endSessionDialog.js:78
#: js/ui/endSessionDialog.js:76
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "The system will restart automatically in %d second."
msgstr[1] "The system will restart automatically in %d seconds."
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:89
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Restart & Install Updates"
#: js/ui/endSessionDialog.js:93
#: js/ui/endSessionDialog.js:91
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1210,22 +1344,22 @@ msgstr[0] ""
msgstr[1] ""
"The system will automatically restart and install updates in %d seconds."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Restart &amp; Install"
#: js/ui/endSessionDialog.js:100
#: js/ui/endSessionDialog.js:98
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Install &amp; Power Off"
#: js/ui/endSessionDialog.js:101
#: js/ui/endSessionDialog.js:99
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Power off after updates are installed"
#: js/ui/endSessionDialog.js:108
#: js/ui/endSessionDialog.js:106
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Restart & Install Upgrade"
@ -1233,7 +1367,7 @@ msgstr "Restart & Install Upgrade"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113
#: js/ui/endSessionDialog.js:111
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1242,15 +1376,15 @@ msgstr ""
"%s %s will be installed after restart. Upgrade installation can take a long "
"time: ensure that you have backed up and that the computer is plugged in."
#: js/ui/endSessionDialog.js:261
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
msgstr "Running on battery power: Please plug in before installing updates."
#: js/ui/endSessionDialog.js:270
#: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work"
msgstr "Some applications are busy or have unsaved work"
#: js/ui/endSessionDialog.js:275
#: js/ui/endSessionDialog.js:273
msgid "Other users are logged in"
msgstr "Other users are logged in"
@ -1266,24 +1400,24 @@ msgstr "%s (remote)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Install"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Install Extension"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Download and install “%s” from extensions.gnome.org?"
#: js/ui/extensionSystem.js:233
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Extension Updates Available"
#: js/ui/extensionSystem.js:234
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Extension updates are ready to be installed."
@ -1430,11 +1564,11 @@ msgstr "View Source"
msgid "Web Page"
msgstr "Web Page"
#: js/ui/main.js:277
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Logged in as a privileged user"
#: js/ui/main.js:278
#: js/ui/main.js:270
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1442,15 +1576,15 @@ msgstr ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
#: js/ui/main.js:317
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Screen Lock disabled"
#: js/ui/main.js:318
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Screen Locking requires the GNOME display manager."
#: js/ui/messageTray.js:1551
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "System Information"
@ -1477,6 +1611,7 @@ msgstr "Overview"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Type to search"
@ -1534,12 +1669,12 @@ msgstr "Quit"
msgid "Activities"
msgstr "Activities"
#: js/ui/panel.js:713
#: js/ui/panel.js:707
msgctxt "System menu in the top bar"
msgid "System"
msgstr "System"
#: js/ui/panel.js:826
#: js/ui/panel.js:820
msgid "Top Bar"
msgstr "Top Bar"
@ -1634,6 +1769,7 @@ msgstr ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
#: js/ui/shellMountOperation.js:306
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "PIM Number"
@ -1656,13 +1792,13 @@ msgid "The PIM must be a number or empty."
msgstr "The PIM must be a number or empty."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Unable to start %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Couldnt find the %s application"
@ -2135,11 +2271,11 @@ msgstr "Thunderbolt authorisation error"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Could not authorise the Thunderbolt device: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volume changed"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -2173,26 +2309,24 @@ msgstr "Built-in Only"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Swipe up to unlock"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Click or press a key to unlock"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Unlock Window"
#: js/ui/unlockDialog.js:559
msgid "Log in as another user"
msgstr "Log in as another user"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Applications"
@ -2308,19 +2442,19 @@ msgstr "Close"
msgid "Evolution Calendar"
msgstr "Evolution Calendar"
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
msgid "Print version"
msgstr "Print version"
#: src/main.c:464
#: src/main.c:466
msgid "Mode used by GDM for login screen"
msgstr "Mode used by GDM for login screen"
#: src/main.c:470
#: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Use a specific mode, e.g. “gdm” for login screen"
#: src/main.c:476
#: src/main.c:478
msgid "List possible modes"
msgstr "List possible modes"
@ -2346,140 +2480,6 @@ msgstr "Password cannot be blank"
msgid "Authentication dialog was dismissed by the user"
msgstr "Authentication dialogue was dismissed by the user"
#: 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 "Extensions"
#: 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 "Manage your GNOME Extensions"
#: 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 Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configure GNOME Shell Extensions"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Remove “%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 ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Remove"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Philip Withnall <philip@tecnocode.co.uk>\n"
"Bruce Cowan <bruce@bcowan.me.uk>\n"
"Chris Leonard <cjl@laptop.org>\n"
"David King <amigadave@amigadave.com>\n"
"Zander Brown <zbrown@gnome.org>"
#: 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 extension will be updated on next login."
msgstr[1] "%d extensions will be updated on next login."
#: 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 "Description"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Author"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Website"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Remove…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Help"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "About Extensions"
#: 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 ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Warning"
#: 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 ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Manually Installed"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Built-In"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "No Installed Extensions"
#: 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 ""
"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."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Log Out…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2627,6 +2627,7 @@ msgid "Show extensions with preferences"
msgstr "Show extensions with preferences"
#: subprojects/extensions-tool/src/command-list.c:140
#| msgid "Show extensions with preferences"
msgid "Show extensions with updates"
msgstr "Show extensions with updates"
@ -2817,9 +2818,6 @@ msgstr[1] "%u Inputs"
msgid "System Sounds"
msgstr "System Sounds"
#~ msgid "Copy Error"
#~ msgstr "Copy Error"
#~ msgid "Next"
#~ msgstr "Next"
@ -2846,6 +2844,9 @@ msgstr "System Sounds"
#~ msgstr[0] "%d new notification"
#~ msgstr[1] "%d new notifications"
#~ msgid "Log in as another user"
#~ msgstr "Log in as another user"
#~| msgid "Shell Extensions"
#~ msgid "org.gnome.Extensions"
#~ msgstr "org.gnome.Extensions"

1252
po/eo.po

File diff suppressed because it is too large Load Diff

575
po/es.po

File diff suppressed because it is too large Load Diff

780
po/eu.po

File diff suppressed because it is too large Load Diff

594
po/fa.po

File diff suppressed because it is too large Load Diff

150
po/fi.po
View File

@ -25,8 +25,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
"PO-Revision-Date: 2020-05-16 14:02+0300\n"
"POT-Creation-Date: 2020-04-02 09:45+0000\n"
"PO-Revision-Date: 2020-04-13 18:02+0300\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
@ -421,7 +421,7 @@ msgid "Network Login"
msgstr "Verkkokirjautuminen"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Jokin meni pieleen"
@ -448,7 +448,7 @@ msgstr "Käy laajennuksen verkkosivulla"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
@ -504,74 +504,74 @@ msgid "(or swipe finger)"
msgstr "(tai pyyhkäise sormella)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Sammuta"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr ""
"power off;shutdown;reboot;restart;halt;stop;sammuta;käynnistä uudelleen"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Lukitse näyttö"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "lock screen"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Kirjaudu ulos"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "logout;log out;sign off;kirjaudu ulos;uloskirjautuminen;poistu"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Valmiustila"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "suspend;sleep"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Vaihda käyttäjää"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "switch user"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lock orientation;unlock orientation;screen;rotation;lukitse kierto;lukitse "
"suunta;suunta;kääntö"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Vapauta näytön kierto"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Lukitse näytön kierto"
@ -736,53 +736,53 @@ msgstr "Estä pääsy"
msgid "Grant Access"
msgstr "Salli pääsy"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:937
msgid "Unnamed Folder"
msgstr "Nimetön kansio"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:960
msgid "Frequently used applications will appear here"
msgstr "Usein käytetyt sovellukset ilmestyvät tänne"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1095
msgid "Frequent"
msgstr "Käytetyimmät"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1102
msgid "All"
msgstr "Kaikki"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2478 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Avoimet ikkunat"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2498 js/ui/panel.js:82
msgid "New Window"
msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2509
msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2537 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2543
msgid "Add to Favorites"
msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2553 js/ui/panel.js:93
msgid "Show Details"
msgstr "Näytä tiedot"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s on lisätty suosikkeihin."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s on poistettu suosikeista."
@ -1155,74 +1155,74 @@ msgstr "Yhdistä verkkoon saadaksesi säätietoja"
msgid "Weather information is currently unavailable"
msgstr "Säätiedot eivät ole juuri nyt saatavilla"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Kirjaa %s ulos"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:42
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s - 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
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "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"
msgid "Log Out"
msgstr "Kirjaudu ulos"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:58
msgctxt "title"
msgid "Power Off"
msgstr "Sammuta"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:59
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Asenna päivitykset ja sammuta"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:61
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "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"
msgid "Install pending software updates"
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"
msgid "Restart"
msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:70
msgctxt "button"
msgid "Power Off"
msgstr "Sammuta"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:76
msgctxt "title"
msgid "Restart"
msgstr "Käynnistä uudelleen"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:78
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@ -1231,12 +1231,12 @@ msgstr[0] ""
msgstr[1] ""
"Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:91
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Käynnistä uudelleen ja asenna päivitykset"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:93
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1248,22 +1248,22 @@ msgstr[1] ""
"Järjestelmä käynnistyy automaattisesti uudelleen ja asentaa päivitykset %d "
"sekunnin kuluttua."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Käynnistä uudelleen ja asenna"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:100
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Asenna ja sammuta"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:101
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Sammuta päivitysten asennuksen jälkeen"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:108
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Käynnistä uudelleen ja asenna päivitys"
@ -1271,7 +1271,7 @@ msgstr "Käynnistä uudelleen ja asenna päivitys"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:113
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1281,27 +1281,27 @@ msgstr ""
"voi kestää kauan: varmista varmuuskopioidesi ajantasaisuus ja toimivuus. "
"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."
msgstr ""
"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"
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"
msgstr "Muita käyttäjiä on kirjautuneena"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (etä)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (konsoli)"
@ -1319,11 +1319,11 @@ msgstr "Asenna laajennus"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:233
msgid "Extension Updates Available"
msgstr "Laajennusten päivityksiä saatavilla"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed."
msgstr "Laajennusten päivitykset ovat valmiina asennettavaksi."
@ -1492,15 +1492,15 @@ msgstr "Näytön lukitus pois käytöstä"
msgid "Screen Locking requires the GNOME display manager."
msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1551
msgid "System Information"
msgstr "Järjestelmän tiedot"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "Tuntematon esittäjä"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "Tuntematon kappale"
@ -1574,16 +1574,16 @@ msgstr "Lopeta"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Toiminnot"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Järjestelmä"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Yläpalkki"
@ -1614,11 +1614,11 @@ msgstr "Gnomen täytyy lukita näyttö"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Lukitus epäonnistui"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Lukitus estettiin sovelluksen toimesta"
@ -2266,7 +2266,7 @@ msgstr "Palauta asetukset"
msgid "Keep Changes"
msgstr "Säilytä muutokset"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2275,7 +2275,7 @@ msgstr[1] "Asetusmuutokset palautetaan %d sekunnissa"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2368,12 +2368,12 @@ msgstr "Käytä tiettyä tilaa (esim. “gdm”) kirjautumisnäkymää varten"
msgid "List possible modes"
msgstr "Listaa mahdolliset tilat"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Tuntematon"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Sovelluksen “%s” käynnistäminen epäonnistui"
@ -2496,19 +2496,19 @@ msgstr ""
"Jos kohtaat ongelmia järjestelmän kanssa, on suositeltavaa poistaa kaikki "
"laajennukset käytöstä."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Manuaalisesti asennettu"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Sisäänrakennettu"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
#: 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:236
#: 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."
@ -2516,11 +2516,7 @@ msgstr ""
"Valitettavasti asennettujen laajennusten listaa ei voitu muodostaa. Varmista "
"että olet kirjautunut Gnomeen ja yritä uudelleen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Laajennuspäivitykset valmiina"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Kirjaudu ulos…"

466
po/fr.po
View File

@ -21,16 +21,16 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
"PO-Revision-Date: 2020-05-12 15:16+0200\n"
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
"Language-Team: French <gnomefr@traduc.org>\n"
"Language: fr\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-19 21:59+0100\n"
"Last-Translator: Guillaume Bernard <associations@guillaume-bernard.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Generator: Poedit 2.3\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@ -415,12 +415,80 @@ msgstr ""
msgid "Network Login"
msgstr "Identification réseau"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: 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
msgid "Remove “%s”?"
msgstr "Enlever « %s » ?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Si vous enlevez cette extension, vous devrez recommencer son téléchargement "
"si vous souhaitez la réactiver plus tard"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Annuler"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Enlever"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Mathieu Bridon <bochecha@fedoraproject.org>\n"
"Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
"Bruno Brouard <annoa.b@gmail.com>\n"
"Cyril Arnaud <cyril dot arnaud at gmail dot com>\n"
"Luc Guillemin <luc.guillemin@gmail.com>\n"
"Luc Pionchon <pionchon.luc@gmail.com>\n"
"Pierre Henry <pierrehenry73@yahoo.fr>\n"
"Alexandre Franke <alexandre.franke@gmail.com>\n"
"Mathieu Stumpf <psychoslave@culture-libre.org>\n"
"Alain Lojewski <allomervan@gmail.com>\n"
"Erwan Georget <egeorget@opmbx.org>\n"
"Julien Humbert <julroy67@gmail.com>\n"
"Claude Paroz <claude@2xlibre.net>\n"
"Charles Monzat <charles.monzat@free.fr>"
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Quelque chose sest mal passé"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -430,25 +498,106 @@ msgstr ""
"extension ne peuvent être affichés. Nous vous recommandons de signaler ce "
"problème aux auteurs de lextension."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Détails techniques"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Copier lerreur"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Site Web"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Visiter le site Web de lextension"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Annuler"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension 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[1] "%d extensions seront mises à jour à la prochaine connexion."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Description"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Auteur"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Site Web"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Enlever…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Aide"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "À propos des extensions"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Avertissement"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Les extensions peuvent poser des problèmes au système, y compris au niveau "
"des performances. Si vous pensez être dans ce cas, il est recommandé de "
"désactiver toutes les extensions."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Installée manuellement"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Intégrée"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Aucune extension installée"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Nous sommes désolés, mais il nest pas possible dobtenir la liste des "
"extensions installées. Vérifiez que vous êtes bien connecté à GNOME et "
"essayez encore une fois."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Fermer la session…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -500,71 +649,71 @@ msgid "(or swipe finger)"
msgstr "(ou faites glisser le doigt)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Éteindre"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "éteindre;fermer;débrancher;redémarrer;rallumer;reboot;arrêter;stop"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Verrouillage de lécran"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "verrouillage;écran;"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Fermer la session"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "fermer;session;déconnecter;"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Mettre en veille"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "mettre en veille;sommeil;"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Changer dutilisateur"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "changer;utilisateur;"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "verrouillage;déverrouillage;orientation;écran;rotation"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Déverrouiller la rotation de lécran"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Verrouiller la rotation de lécran"
@ -730,53 +879,53 @@ msgstr "Refuser laccès"
msgid "Grant Access"
msgstr "Accorder laccès"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Dossier sans nom"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Les applications fréquemment utilisées apparaîtront ici"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Fréquemment utilisées"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Toutes"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Fenêtres ouvertes"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Nouvelle fenêtre"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Démarrer en utilisant la carte graphique dédiée"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Enlever des favoris"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Ajouter aux favoris"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Afficher les détails"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s a été ajouté à vos favoris."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s a été supprimé de vos favoris."
@ -797,7 +946,7 @@ msgstr "Casque audio"
msgid "Headset"
msgstr "Micro-casque"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Microphone"
@ -953,7 +1102,7 @@ msgstr "Aucun évènement"
msgid "Do Not Disturb"
msgstr "Ne pas déranger"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Effacer"
@ -1103,7 +1252,7 @@ msgstr "Échec de lauthentification. Essayez à nouveau."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s est maintenant connu sous le nom de %s"
@ -1159,23 +1308,23 @@ msgstr "Ajouter des horloges locales…"
msgid "World Clocks"
msgstr "Horloges locales"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Météo"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Choisir un emplacement…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Chargement…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Chercher les informations météorologiques en ligne"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Les informations météorologiques ne sont pas disponibles actuellement"
@ -1315,35 +1464,35 @@ msgid "Other users are logged in"
msgstr "Dautres utilisateurs sont connectés"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (distant)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Installer"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Installer lextension"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Mises à jour dextensions disponibles"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Des mises à jour dextensions sont prêtes à être installées."
@ -1492,11 +1641,11 @@ msgstr "Afficher la source"
msgid "Web Page"
msgstr "Page Web"
#: js/ui/main.js:279
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Connecté en tant quutilisateur privilégié"
#: js/ui/main.js:280
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1505,16 +1654,16 @@ msgstr ""
"des raisons de sécurité. Si possible, connectez-vous comme utilisateur "
"normal."
#: js/ui/main.js:319
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Verrouillage décran désactivé"
#: js/ui/main.js:320
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr ""
"Le verrouillage de lécran nécessite le gestionnaire daffichage GNOME."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informations du système"
@ -1594,16 +1743,16 @@ msgstr "Quitter"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Activités"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Système"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Barre supérieure"
@ -1634,11 +1783,11 @@ msgstr "GNOME a besoin de verrouiller lécran"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Impossible de verrouiller"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Le verrouillage a été bloqué par une application"
@ -1721,13 +1870,13 @@ msgid "The PIM must be a number or empty."
msgstr "Le numéro PIM doit être un nombre ou être vide."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Impossible de démarrer %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Impossible de trouver lapplication %s"
@ -2203,11 +2352,11 @@ msgstr "Erreur dautorisation Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Impossible dautoriser le périphérique Thunderbolt : %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volume modifié"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -2241,23 +2390,23 @@ msgstr "Intégré seulement"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Faire glisser vers le haut pour déverrouiller"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Cliquer ou appuyer sur une touche pour déverrouiller"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Fenêtre de déverrouillage"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Se connecter en tant quautre utilisateur"
@ -2290,7 +2439,7 @@ msgstr "Restaurer les paramètres"
msgid "Keep Changes"
msgstr "Conserver les modifications"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2299,7 +2448,7 @@ msgstr[1] "Les paramètres seront restaurés dans %d secondes"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2393,12 +2542,12 @@ msgstr ""
msgid "List possible modes"
msgstr "Lister les modes possibles"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Inconnu"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Impossible de lancer « %s »"
@ -2415,156 +2564,6 @@ msgstr "Le mot de passe ne peut pas être vide"
msgid "Authentication dialog was dismissed by the user"
msgstr "La fenêtre dauthentification a été écartée par lutilisateur"
#: 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 "Extensions"
#: 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 "Gérer vos extensions GNOME"
#: 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 ""
"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."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configurer les extensions Shell de GNOME"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Enlever « %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 ""
"Si vous enlevez cette extension, vous devrez recommencer son téléchargement "
"si vous souhaitez la réactiver plus tard"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Enlever"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Mathieu Bridon <bochecha@fedoraproject.org>\n"
"Pablo Martin-Gomez <pablo.martin-gomez@laposte.net>\n"
"Bruno Brouard <annoa.b@gmail.com>\n"
"Cyril Arnaud <cyril dot arnaud at gmail dot com>\n"
"Luc Guillemin <luc.guillemin@gmail.com>\n"
"Luc Pionchon <pionchon.luc@gmail.com>\n"
"Pierre Henry <pierrehenry73@yahoo.fr>\n"
"Alexandre Franke <alexandre.franke@gmail.com>\n"
"Mathieu Stumpf <psychoslave@culture-libre.org>\n"
"Alain Lojewski <allomervan@gmail.com>\n"
"Erwan Georget <egeorget@opmbx.org>\n"
"Julien Humbert <julroy67@gmail.com>\n"
"Claude Paroz <claude@2xlibre.net>\n"
"Charles Monzat <charles.monzat@free.fr>"
#: 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 extension sera mise à jour à la prochaine connexion."
msgstr[1] "%d extensions seront mises à jour à la prochaine connexion."
#: 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 "Description"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Auteur"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Site Web"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Enlever…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Aide"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "À propos des extensions"
#: 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 ""
"Pour trouver et ajouter des extensions, visitez <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Avertissement"
#: 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 ""
"Les extensions peuvent poser des problèmes au système, y compris au niveau "
"des performances. Si vous pensez être dans ce cas, il est recommandé de "
"désactiver toutes les extensions."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "Installée manuellement"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "Intégrée"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "Aucune extension installée"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
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 ""
"Nous sommes désolés, mais il nest pas possible dobtenir la liste des "
"extensions installées. Vérifiez que vous êtes bien connecté à GNOME et "
"essayez encore une fois."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
#| msgid "Extension Updates Available"
msgid "Extension Updates Ready"
msgstr "Mises à jour dextensions prêtes"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "Fermer la session…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2903,9 +2902,6 @@ msgstr[1] "%u entrées"
msgid "System Sounds"
msgstr "Sons système"
#~ msgid "Copy Error"
#~ msgstr "Copier lerreur"
#~| msgid "Username: "
#~ msgid "Username…"
#~ msgstr "Nom dutilisateur…"

186
po/fur.po
View File

@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: video-subtitles master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-06-14 15:15+0000\n"
"PO-Revision-Date: 2020-06-21 10:40+0200\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-03-31 13:13+0200\n"
"Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
"Language-Team: Friulian <fur@li.org>\n"
"Language: fur\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3.1\n"
"X-Generator: Poedit 2.3\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/50-gnome-shell-system.xml:6
@ -392,7 +392,7 @@ msgid "Network Login"
msgstr "Acès di rêt"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Alc al è lât stuart"
@ -420,7 +420,7 @@ msgstr "Visite la pagjine principâl de estension"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
@ -476,71 +476,71 @@ msgid "(or swipe finger)"
msgstr "(o passe cul dêt)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Distudâ"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "distudâ;studâ;tornâ a inviâ;fermâ"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Bloc schermi"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "bloc schermi"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Jessî"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "jessî;sierâ session;disconeti"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Sospindi"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "sospindi;polse"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Cambi Utent"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "cambiâ utent"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "bloc orientament;sbloc orientament;schermi;rotazion"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Sbloche rotazion schermi"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Bloche rotazion schermi"
@ -706,53 +706,53 @@ msgstr "Dinee acès"
msgid "Grant Access"
msgstr "Garantìs l'acès"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:932
msgid "Unnamed Folder"
msgstr "Cartele cence non"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:955
msgid "Frequently used applications will appear here"
msgstr "Lis aplicazions dopradis dispès a vignaran mostradis culì"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1090
msgid "Frequent"
msgstr "Dispès"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1097
msgid "All"
msgstr "Dutis"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Barcons vierts"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window"
msgstr "Gnûf barcon"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2504
msgid "Launch using Dedicated Graphics Card"
msgstr "Invie doprant une schede grafiche dedicade"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Gjave dai preferîts"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2538
msgid "Add to Favorites"
msgstr "Zonte tai preferîts"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details"
msgstr "Mostre Detais"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s al è stât zontât tai tiei preferîts."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s al è stât gjavât dai tiei preferîts."
@ -1099,114 +1099,114 @@ msgstr "%-d di %B dal %Y"
msgid "%A %B %e %Y"
msgstr "%A %e di %B dal %Y"
#: js/ui/dateMenu.js:162
#: js/ui/dateMenu.js:161
msgid "Add world clocks…"
msgstr "Zonte orlois mondiâi…"
#: js/ui/dateMenu.js:163
#: js/ui/dateMenu.js:162
msgid "World Clocks"
msgstr "Orlois mondiâi"
#: js/ui/dateMenu.js:308
#: js/ui/dateMenu.js:289
msgid "Weather"
msgstr "Timp"
#: js/ui/dateMenu.js:437
#: js/ui/dateMenu.js:418
msgid "Select a location…"
msgstr "Selezione une posizion…"
#: js/ui/dateMenu.js:445
#: js/ui/dateMenu.js:426
msgid "Loading…"
msgstr "Daûr a cjariâ…"
#: js/ui/dateMenu.js:455
#: js/ui/dateMenu.js:436
msgid "Go online for weather information"
msgstr "Va in rêt pes informazions sul timp"
#: js/ui/dateMenu.js:457
#: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable"
msgstr "Lis informazions sul timp al moment no son disponibilis"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Termine session di %s"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Termine session"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:42
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s al jessarà in automatic chi di %d secont."
msgstr[1] "%s al jessarà in automatic chi di %d seconts."
#: js/ui/endSessionDialog.js:45
#: js/ui/endSessionDialog.js:47
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "Tu jessarâs in automatic chi di %d secont."
msgstr[1] "Tu jessarâs in automatic chi di %d seconts."
#: js/ui/endSessionDialog.js:51
#: js/ui/endSessionDialog.js:53
msgctxt "button"
msgid "Log Out"
msgstr "Jes"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:58
msgctxt "title"
msgid "Power Off"
msgstr "Distude"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:59
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instale inzornaments e distude"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:61
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Il sisteme si distudarà in automatic chi di %d secont."
msgstr[1] "Il sisteme si studarà in automatic chi di %d seconts."
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:65
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instale i inzornaments software in spiete"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button"
msgid "Restart"
msgstr "Torne invie"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:70
msgctxt "button"
msgid "Power Off"
msgstr "Distude"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:76
msgctxt "title"
msgid "Restart"
msgstr "Torne invie"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:78
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Il sisteme si tornarà a inviâ in automatic chi di %d secont."
msgstr[1] "Il sisteme si tornarà a inviâ in automatic chi di %d secont."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:91
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Torne a inviâ e instale inzornaments"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:93
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1218,22 +1218,22 @@ msgstr[1] ""
"Il sisteme al tornarà a inviâsi in automatic instalant i inzornaments chi di "
"%d seconts."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Torne invie e instale"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:100
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instale e distude"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:101
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Distude dopo vê instalât i inzornaments"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:108
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Torne invie e instale avanzament"
@ -1241,7 +1241,7 @@ msgstr "Torne invie e instale avanzament"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:113
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1251,28 +1251,28 @@ msgstr ""
"dal avanzament e pues tirâ a dilunc: siguriti di vê fat i backup e che il to "
"computer al sedi tacât."
#: js/ui/endSessionDialog.js:259
#: js/ui/endSessionDialog.js:261
msgid "Running on battery power: Please plug in before installing updates."
msgstr ""
"Funzionament su batarie: par plasê tache la spine prime di instalâ i "
"inzornaments."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work"
msgstr "Cualchi aplicazion e je impegnade opûr e à lavôrs no salvâts"
#: js/ui/endSessionDialog.js:273
#: js/ui/endSessionDialog.js:275
msgid "Other users are logged in"
msgstr "Altris utents a son jentrâts"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (rimot)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (locâl vie tastiere)"
@ -1290,11 +1290,11 @@ msgstr "Instale estension"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scjariâ e instalâ '%s' da extensions.gnome.org?"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:233
msgid "Extension Updates Available"
msgstr "Inzonraments di estensions disponibii"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed."
msgstr "I inzornaments des estensions a son pronts par jessi instalâts."
@ -1442,11 +1442,11 @@ msgstr "Viôt sorzint"
msgid "Web Page"
msgstr "Pagjine Web"
#: js/ui/main.js:279
#: js/ui/main.js:277
msgid "Logged in as a privileged user"
msgstr "Jentre come utent privilegjât"
#: js/ui/main.js:280
#: js/ui/main.js:278
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1454,23 +1454,23 @@ msgstr ""
"Si varès di evitâ di eseguî une session come utent privilegjât par resons di "
"sigurece. Se pussibil, tu varessis di jentrâ come utent normâl."
#: js/ui/main.js:319
#: js/ui/main.js:317
msgid "Screen Lock disabled"
msgstr "Bloc dal schermi disabilitât"
#: js/ui/main.js:320
#: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager."
msgstr "Il bloc dal schermi al à bisugne dal gjestôr dai visôrs di GNOME."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1551
msgid "System Information"
msgstr "Informazion di sisteme"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "Artist no cognossût"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "Titul no cognossût"
@ -1516,24 +1516,24 @@ msgstr "Assegne batidure"
msgid "Done"
msgstr "Fat"
#: js/ui/padOsd.js:732
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Modifiche…"
# masculin o feminin
#: js/ui/padOsd.js:774 js/ui/padOsd.js:891
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Nissune"
#: js/ui/padOsd.js:845
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Frache un boton par configurâ"
#: js/ui/padOsd.js:846
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Frache Esc par jessî"
#: js/ui/padOsd.js:849
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Frache un tast par jessî"
@ -1543,16 +1543,16 @@ msgstr "Jes"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Ativitâts"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sisteme"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Sbare parsore"
@ -1584,11 +1584,11 @@ msgstr "GNOME al à di blocâ il visôr"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Impussibil blocâ"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Il bloc al è stât dineât di une aplicazion"
@ -2112,7 +2112,7 @@ msgstr "Cambie Utent…"
#: js/ui/status/system.js:145
msgid "Suspend"
msgstr "Sospint"
msgstr "Sospindi"
#: js/ui/status/system.js:157
msgid "Power Off…"
@ -2241,7 +2241,7 @@ msgstr "Ripristine impostazions"
msgid "Keep Changes"
msgstr "Ten lis modifichis"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2252,7 +2252,7 @@ msgstr[1] ""
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2345,12 +2345,12 @@ msgstr "Dopre une modalitât specifiche, par esempli “gdm” pe videade di ac
msgid "List possible modes"
msgstr "Liste modalitâts pussibilis"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "No cognossût"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "No soi rivât a eseguî '%s'"
@ -2473,19 +2473,19 @@ msgstr ""
"prestazion. Se si verifichin problemis cul vuestri sisteme, si consee di "
"disabilitâ dutis lis estensions."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Instalât a man"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Integrade"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Nissune estension instalade"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
#: 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."
@ -2493,11 +2493,7 @@ msgstr ""
"Nus displâs, ma nol è stât pussibil otignî la liste des estensions "
"instaladis. Controle di jessi jentrât in GNOME e torne prove."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Inzonraments di estensions pronts"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Jes…"

437
po/id.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
"PO-Revision-Date: 2020-05-14 16:29+0700\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-20 14:13+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.3.1\n"
"X-Generator: Poedit 2.3\n"
"X-DamnedLies-Scope: partial\n"
"X-Poedit-SourceCharset: UTF-8\n"
@ -396,12 +396,70 @@ msgstr ""
msgid "Network Login"
msgstr "Log Masuk Jaringan"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: 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
msgid "Remove “%s”?"
msgstr "Hapus \"%s\"?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
"Anda ingin mengaktifkannya lagi"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Batal"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Hapus"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n"
"Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.\n"
"Wibiharto <wibinem@yahoo.com>, 2011.\n"
"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n"
"Sucipto <sucipto@pm.me>, 2020."
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Ada yang tidak beres"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -411,25 +469,105 @@ msgstr ""
"tidak dapat ditampilkan. Kami menyarankan Anda melaporkan masalah ini kepada "
"penulis ekstensi."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Detail Teknis"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Salin Galat"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Halaman Web"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Kunjungi halaman web ekstensi"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Batal"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension 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[1] "%d ekstensi akan diperbarui pada log masuk berikutnya."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Deskripsi"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versi"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Penulis"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Situs Web"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Hapus…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Bantuan"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Tentang Ekstensi"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Peringatan"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Ekstensi dapat menyebabkan masalah sistem, termasuk masalah kinerja. Jika "
"Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan "
"semua ekstensi."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Dipasang Secara Manual"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Bawaan"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Tidak Ada Ekstensi Terpasang"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang "
"dipasang. Pastikan Anda masuk ke GNOME dan coba lagi."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Keluar…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -481,71 +619,71 @@ msgid "(or swipe finger)"
msgstr "(atau gesekkan jari)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Matikan"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "matikan;nyalakan ulang;berhenti"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Kunci Layar"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "kunci layar"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Keluar"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "keluar;logout;log out;sign off"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Suspensi"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "suspensi;tidur"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Ganti Pengguna"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "ganti pengguna"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "kunci orientasi;buka kunci orientasi;layar;rotasi"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Buka Kunci Rotasi Layar"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Kunci Rotasi Layar"
@ -711,53 +849,53 @@ msgstr "Tolak Akses"
msgid "Grant Access"
msgstr "Beri Akses"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Folder Tanpa Nama"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Aplikasi yang sering dipakai akan muncul di sini"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Sering"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Semua"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Buka Jendela"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Jendela Baru"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Tampilkan Rincian"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s telah ditambahkan ke favorit Anda."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s telah dihapus dari favorit Anda."
@ -778,7 +916,7 @@ msgstr "Headphone"
msgid "Headset"
msgstr "Headset"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Mikrofon"
@ -919,7 +1057,7 @@ msgstr "Tak Ada Kejadian"
msgid "Do Not Disturb"
msgstr "Jangan Ganggu"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Bersihkan"
@ -1069,7 +1207,7 @@ msgstr "Maaf, tidak berhasil. Silakan coba lagi."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s sekarang dikenal sebagai %s"
@ -1113,23 +1251,23 @@ msgstr "Tambah jam dunia…"
msgid "World Clocks"
msgstr "Jam Dunia"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Cuaca"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Pilih lokasi…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Memuat…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Pergi daring untuk informasi cuaca"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Informasi cuaca saat ini tidak tersedia"
@ -1271,35 +1409,35 @@ msgid "Other users are logged in"
msgstr "Pengguna lain sedang log masuk"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (jarak jauh)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Pasang"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Pasang Ekstensi"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Pemutakhiran Ekstensi Tersedia"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Pemutakhiran ekstensi siap dipasang."
@ -1446,11 +1584,11 @@ msgstr "Tilik Sumber"
msgid "Web Page"
msgstr "Halaman Web"
#: js/ui/main.js:279
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Masuk sebagai pengguna istimewa"
#: js/ui/main.js:280
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1458,15 +1596,15 @@ msgstr ""
"Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan "
"keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa."
#: js/ui/main.js:319
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Kunci Layar dinonaktifkan"
#: js/ui/main.js:320
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr "Penguncian Layar memerlukan manajer tampilan GNOME."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informasi Sistem"
@ -1546,16 +1684,16 @@ msgstr "Keluar"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Aktivitas"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistem"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Bar Atas"
@ -1586,11 +1724,11 @@ msgstr "GNOME perlu mengunci layar"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Tak bisa mengunci"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
@ -1673,13 +1811,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM harus berupa angka atau kosong."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Tak bisa memulai %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Tak bisa menemukan aplikasi %s"
@ -2152,11 +2290,11 @@ msgstr "Autorisasi Thunderbolt galat"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volume diubah"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -2196,23 +2334,23 @@ msgstr "Hanya Bawaan"
# %d: 1
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Gesek ke atas untuk membuka kunci"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Klik atau tekan tombol untuk membuka kunci"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Buka Kunci Jendela"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Masuk sebagai pengguna lain"
@ -2245,7 +2383,7 @@ msgstr "Balikkan Tatanan"
msgid "Keep Changes"
msgstr "Simpan Perubahan"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2254,7 +2392,7 @@ msgstr[1] "Perubahan tatanan akan dikembalikan dalam %d detik"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2347,12 +2485,12 @@ msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk"
msgid "List possible modes"
msgstr "Menampilkan mode yang mungkin"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Tak dikenal"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Gagal meluncurkan \"%s\""
@ -2369,144 +2507,6 @@ msgstr "Kata sandi tidak boleh kosong"
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialog autentikasi ditolak oleh pengguna"
#: 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 "Ekstensi"
#: 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 "Kelola Ekstensi GNOME Anda"
#: 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 ""
"Ekstensi GNOME menangani pemutakhiran ekstensi, mengkonfigurasi preferensi "
"ekstensi, dan menghapus atau menonaktifkan ekstensi yang tidak diinginkan."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurasi Ekstensi GNOME Shell"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Hapus \"%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 ""
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
"Anda ingin mengaktifkannya lagi"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Hapus"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Andika Triwidada <andika@gmail.com>, 2010-2014, 2017.\n"
"Dirgita <dirgitadevina@yahoo.co.id>, 2011, 2012, 2014.\n"
"Wibiharto <wibinem@yahoo.com>, 2011.\n"
"Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2020.\n"
"Sucipto <sucipto@pm.me>, 2020."
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d ekstensi akan diperbarui pada log masuk berikutnya."
msgstr[1] "%d ekstensi akan diperbarui pada log masuk berikutnya."
#: 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 "Deskripsi"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versi"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Penulis"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Situs Web"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Hapus…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Bantuan"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Tentang Ekstensi"
#: 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 ""
"Untuk menemukan dan menambahkan ekstensi, kunjungi <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Peringatan"
#: 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 ""
"Ekstensi dapat menyebabkan masalah sistem, termasuk masalah kinerja. Jika "
"Anda mengalami masalah dengan sistem Anda, disarankan untuk menonaktifkan "
"semua ekstensi."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "Dipasang Secara Manual"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "Bawaan"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "Tidak Ada Ekstensi Terpasang"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
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 ""
"Kami sangat menyesal, tetapi tidak mungkin mendapatkan daftar ekstensi yang "
"dipasang. Pastikan Anda masuk ke GNOME dan coba lagi."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Pemutakhiran Ekstensi Siap"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "Keluar…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2844,9 +2844,6 @@ msgstr[1] "%u Masukan"
msgid "System Sounds"
msgstr "Suara Sistem"
#~ msgid "Copy Error"
#~ msgstr "Salin Galat"
#~ msgid "Username…"
#~ msgstr "Nama pengguna…"

428
po/it.po
View File

@ -4,7 +4,7 @@
# Copyright (C) 2019, 2020 the Free Software Foundation
# This file is distributed under the same license as the gnome-shell package.
#
# Milo Casagrande <milo@milo.name>, 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
# Milo Casagrande <milo@milo.name>, 2009, 2010, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019., 2020
# Luca Ferretti <elle.uca@infinito.it>, 2010, 2011, 2012, 2013, 2014.
# Gianvito Cavasoli <gianvito@gmx.it>, 2016.
#
@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
"PO-Revision-Date: 2020-05-11 17:51+0200\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-19 16:08+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <gnome-it-list@gnome.org>\n"
"Language: it\n"
@ -21,7 +21,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.2.4\n"
"X-DamnedLies-Scope: partial\n"
#: data/50-gnome-shell-system.xml:6
@ -406,12 +406,66 @@ msgstr ""
msgid "Network Login"
msgstr "Accesso di rete"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: 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
msgid "Remove “%s”?"
msgstr "Rimuovere «%s»?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per "
"abilitarla"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Annulla"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Rimuovi"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr "Milo Casagrande <milo@milo.name>"
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Qualcosa è andato storto"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -421,25 +475,105 @@ msgstr ""
"questa estensione. È consigliato segnalare il problema agli autori "
"dell'estensione."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Dettagli tecnici"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Copia errore"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Sito web"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Sito web dell'estensione"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Annulla"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension 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[1] "%d estensioni verranno aggiornate al prossimo accesso."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Descrizione"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versione"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autore"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Sito web"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Rimuovi…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Aiuto"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Informazioni su Estensioni"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Per trovare e installare estensioni, visitare il sito web <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Attenzione"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Le estensioni possono causare problemi al sistema, compresi problemi di "
"prestazioni. Nel caso si riscontrino dei problemi, è consigliato di "
"disabilitare tutte le estensioni."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Installata manualmente"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Integrata"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Nessuna estensione installata"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di "
"aver eseguire l'accesso a GNOME e riprovare."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Termina sessione…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -491,71 +625,71 @@ msgid "(or swipe finger)"
msgstr "(o scorrere con il dito)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Spegni"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "spegni;arresta;ferma;stop;riavvia"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Blocca schermo"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "blocca schermo"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Termina sessione"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "esci;logout;termina sessione"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Sospendi"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "sospendi;riposo"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Cambia utente"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "cambia utente"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "blocca orientazione;sblocca orientazione;schermo;rotazione"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Sblocca rotazione schermo"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Blocca rotazione schermo"
@ -720,55 +854,55 @@ msgstr "Nega accesso"
msgid "Grant Access"
msgstr "Consenti accesso"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Cartella senza nome"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Frequenti"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Tutte"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Finestre aperte"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Nuova finestra"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Lancia utilizzando scheda grafica dedicata"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Mostra dettagli"
# (ndt) e usare:
# L'elemento %s è stato rimosso... ?
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s è stato aggiunto ai preferiti."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti."
@ -789,7 +923,7 @@ msgstr "Cuffie"
msgid "Headset"
msgstr "Cuffie con microfono"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Microfono"
@ -930,7 +1064,7 @@ msgstr "Nessun evento"
msgid "Do Not Disturb"
msgstr "Non disturbare"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Pulisci"
@ -1079,7 +1213,7 @@ msgstr "Errore nell'autenticazione. Provare di nuovo."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s ha cambiato nome in %s"
@ -1124,23 +1258,23 @@ msgstr "Aggiungi orologi mondiali…"
msgid "World Clocks"
msgstr "Orologi mondiali"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Meteo"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Seleziona una posizione…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Caricamento…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Collegarsi a Internet per le informazioni meteo"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Le informazioni meteo non sono disponibili"
@ -1283,35 +1417,35 @@ msgid "Other users are logged in"
msgstr "Altri utenti sono collegati"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Installa"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Installa estensione"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Scaricare e installare «%s» da extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Disponibili aggiornamenti estensioni"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "È possibile installare gli aggiornamenti delle estensioni."
@ -1462,11 +1596,11 @@ msgstr "Visualizza sorgente"
msgid "Web Page"
msgstr "Pagina web"
#: js/ui/main.js:279
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Accesso eseguito come utente con privilegi"
#: js/ui/main.js:280
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1474,15 +1608,15 @@ msgstr ""
"Per motivi di sicurezza, non è consigliato avviare una sessione con un "
"utente con privilegi. Se possibile, accedere come utente normale."
#: js/ui/main.js:319
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Blocca scherma disabilitato"
#: js/ui/main.js:320
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr "Il blocco dello schermo richiede il gestore schermi di GNOME."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informazione di sistema"
@ -1562,16 +1696,16 @@ msgstr "Esci"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Attività"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Barra superiore"
@ -1602,11 +1736,11 @@ msgstr "GNOME deve bloccare lo schermo"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Impossibile bloccare"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Il blocco è stato impedito da un'applicazione"
@ -1689,13 +1823,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM deve essere un numero o vuoto."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Impossibile avviare %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Impossibile trovare l'applicazione %s"
@ -2177,11 +2311,11 @@ msgstr "Errore autenticazione Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Impossibile autorizzare il dispositivo Thunderbolt: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volume modificato"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -2215,23 +2349,23 @@ msgstr "Solo integrato"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Scorrere per sbloccare"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Fare clic o premere un tasto per sbloccare"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Sblocca finestra"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Accedi come altro utente"
@ -2265,7 +2399,7 @@ msgstr "Ripristina impostazioni"
msgid "Keep Changes"
msgstr "Mantieni modifiche"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2274,7 +2408,7 @@ msgstr[1] "Le modifiche alle impostazioni saranno ripristinate tra %d secondi"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2367,12 +2501,12 @@ msgstr "Usa una modalità specifica, per es. «gdm» per la schermata d'accesso"
msgid "List possible modes"
msgstr "Elenca le modalità possibili"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Sconosciuto"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Avvio di «%s» non riuscito"
@ -2389,140 +2523,6 @@ msgstr "La password non può essere vuota"
msgid "Authentication dialog was dismissed by the user"
msgstr "La finestra di dialogo di autenticazione è stata annullata dall'utente"
#: 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 "Estensioni"
#: 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 "Gestione delle Estensioni GNOME"
#: 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 ""
"Estensioni GNOME gestisce l'aggiornamento e la configurazione delle "
"preferenze delle estensioni e la rimozione o la disabilitazione di "
"estensioni indesiderate."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Configura le estensioni di GNOME Shell"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Rimuovere «%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 ""
"Una volta rimossa l'estensione sarà necessario scaricarla nuovamente per "
"abilitarla"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Rimuovi"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr "Milo Casagrande <milo@milo.name>"
#: 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 estensione verrà aggiornata al prossimo accesso."
msgstr[1] "%d estensioni verranno aggiornate al prossimo accesso."
#: 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 "Descrizione"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versione"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autore"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Sito web"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Rimuovi…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Aiuto"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Informazioni su Estensioni"
#: 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 ""
"Per trovare e installare estensioni, visitare il sito web <a href=\"https://"
"extensions.gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Attenzione"
#: 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 ""
"Le estensioni possono causare problemi al sistema, compresi problemi di "
"prestazioni. Nel caso si riscontrino dei problemi, è consigliato di "
"disabilitare tutte le estensioni."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "Installata manualmente"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "Integrata"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "Nessuna estensione installata"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
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 ""
"Impossibile recuperare l'elenco delle estensioni installate. Assicurarsi di "
"aver eseguire l'accesso a GNOME e riprovare."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Disponibili aggiornamenti estensioni"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "Termina sessione…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format

517
po/ja.po
View File

@ -1,5 +1,5 @@
# Japanese translation of gnome-shell package.
# Copyright (C) 2010-2017, 2019-2020 the gnome-shell copyright holder.
# Copyright (C) 2009-2020 the gnome-shell copyright holder.
# This file is distributed under the same license as the gnome-shell package.
# Nishio Futoshi <fut_nis@d3.dion.ne.jp>, 2010.
# Kiyotaka NISHIBORI <ml.nishibori.kiyotaka@gmail.com>, 2011.
@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-06-10 16:14+0000\n"
"PO-Revision-Date: 2020-06-11 19:00+0900\n"
"POT-Creation-Date: 2020-03-04 21:53+0000\n"
"PO-Revision-Date: 2020-03-09 21:10+0900\n"
"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@ -50,6 +50,15 @@ msgstr "すべてのアプリケーションを表示する"
msgid "Open the application menu"
msgstr "アプリケーションメニューを開く"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "拡張機能"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "GNOME Shell 拡張機能の設定を行います"
#: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell"
msgstr "GNOME Shell"
@ -391,12 +400,53 @@ msgstr "マウスモードにおけるフォーカス遷移をポインターが
msgid "Network Login"
msgstr "ネットワークログイン"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: js/extensionPrefs/main.js:140
#, javascript-format
msgid "Remove “%s”?"
msgstr "“%s”を削除しますか?"
#: js/extensionPrefs/main.js:141
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"拡張機能を削除した場合、再度有効にするにはダウンロードし直す必要があります"
#: js/extensionPrefs/main.js:144 js/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 "キャンセル"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "削除"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
"Hideki Yamane <henrich@debian.org>\n"
"Ikuya Awashiro <ikuya@fruitsbasket.info>\n"
"IWAI, Masaharu <iwaim.sub@gmail.com>\n"
"Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"Kiyotaka NISHIBORI <ml.nishibori.kiyotaka@gmail.com>\n"
"Nishio Futoshi <fut_nis@d3.dion.ne.jp>\n"
"sicklylife <translation@sicklylife.jp>\n"
"Takanori MATSUURA <t.matsuu@gmail.com>\n"
"Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
"Yoji TOYODA <bsyamato@sea.plala.or.jp>"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "GNOME 拡張機能を管理します"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong"
msgstr "何か問題が起きています"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/main.js:268
msgid ""
"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 "
@ -405,31 +455,110 @@ msgstr ""
"大変申し訳ありませんが、拡張機能の設定を表示できない問題が発生しました。拡張"
"機能の作者に問題を報告することをお勧めします。"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/main.js:275
msgid "Technical Details"
msgstr "技術的な詳細"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/main.js:310
msgid "Copy Error"
msgstr "エラーをコピー"
#: js/extensionPrefs/main.js:337
msgid "Homepage"
msgstr "ホームページ"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/main.js:338
msgid "Visit extension homepage"
msgstr "拡張機能のホームページを開く"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "キャンセル"
#: js/extensionPrefs/main.js:449
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d 個の拡張機能を次回ログイン時に更新します。"
#: 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 "説明"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "バージョン"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "作者"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "ウェブサイト"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "削除…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "ヘルプ"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "“拡張機能”について"
#: js/extensionPrefs/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"拡張機能の検索や追加は <a href=\"https://extensions.gnome.org\">extensions."
"gnome.org</a> で行うことができます。"
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "警告"
#: js/extensionPrefs/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"拡張機能は、システムに何らかの問題 (パフォーマンスへの影響を含む) を引き起こ"
"す可能性があります。システムに問題が発生した場合は、すべての拡張機能を無効に"
"することをお勧めします。"
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "手動でインストール"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "組み込み"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "インストールされた拡張機能はありません"
#: js/extensionPrefs/ui/extensions-window.ui:234
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"大変申し訳ありませんが、インストール済み拡張機能一覧を取得できませんでした。"
"GNOME にログインしていることを確認した上で再試行してください。"
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "ログアウト…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326
msgid "Password"
msgstr "パスワード"
@ -452,8 +581,8 @@ msgstr "(たとえば、user あるいは %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "ユーザー名"
@ -475,73 +604,73 @@ msgid "(or swipe finger)"
msgstr "(あるいは指でスワイプする)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "電源オフ"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr ""
"power off;shutdown;reboot;restart;halt;stop;電源オフ;パワーオフ;シャットダウ"
"ン;リブート;リスタート;再起動;停止"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "画面ロック"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "lock screen;画面ロック"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "ログアウト"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "logout;log out;sign off;ログアウト;サインオフ"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "サスペンド"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "suspend;sleep;サスペンド;スリープ"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "ユーザーを切り替え"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "switch user;ユーザー切り替え"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "画面の回転をロック解除"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "画面の回転をロック"
@ -700,53 +829,53 @@ msgstr "拒否"
msgid "Grant Access"
msgstr "許可"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:906
msgid "Unnamed Folder"
msgstr "名前なしのフォルダー"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:929
msgid "Frequently used applications will appear here"
msgstr "よく使用するアプリケーションがここに表示されます"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1064
msgid "Frequent"
msgstr "常用"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1071
msgid "All"
msgstr "すべて"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "開いているウィンドウ"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "新しいウィンドウで開く"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "専用のグラフィックカードを使用して起動する"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "お気に入りから削除"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "お気に入りに追加"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "詳細を表示"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s をお気に入りに追加しました。"
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s をお気に入りから削除しました。"
@ -767,7 +896,7 @@ msgstr "ヘッドフォン"
msgid "Headset"
msgstr "ヘッドセット"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "マイク"
@ -887,30 +1016,30 @@ msgid "All Day"
msgstr "終日"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:868
#: js/ui/calendar.js:867
msgctxt "calendar heading"
msgid "%A, %B %-d"
msgstr "%B%-e日 (%a)"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:871
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %-d, %Y"
msgstr "%Y年%B%-e日 (%a)"
#: js/ui/calendar.js:1100
#: js/ui/calendar.js:1096
msgid "No Notifications"
msgstr "通知なし"
#: js/ui/calendar.js:1103
#: js/ui/calendar.js:1099
msgid "No Events"
msgstr "イベントなし"
#: js/ui/calendar.js:1157
#: js/ui/calendar.js:1153
msgid "Do Not Disturb"
msgstr "通知ポップアップを表示しない"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1167
msgid "Clear"
msgstr "消去"
@ -957,38 +1086,38 @@ msgstr ""
msgid "Open with %s"
msgstr "%s で開く"
#: js/ui/components/networkAgent.js:91
#: js/ui/components/networkAgent.js:89
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "または、ルーターの“WPS”ボタンを押して接続する方法もあります。"
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "接続"
#: js/ui/components/networkAgent.js:210
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "キー"
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "秘密鍵のパスワード"
#: js/ui/components/networkAgent.js:269
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identity"
#: js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "サービス"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required"
msgstr "認証が必要です"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -996,42 +1125,42 @@ msgid ""
msgstr ""
"無線ネットワーク“%s”にアクセスするにはパスワードか暗号化キーが必要です。"
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "有線 802.1X の認証"
#: js/ui/components/networkAgent.js:319
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "ネットワーク名"
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL 認証"
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN コードが必要です"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "モバイルブロードバンドデバイスには PIN コードが必要です"
#: js/ui/components/networkAgent.js:333
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:711
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "“%s”への接続にはパスワードが必要です。"
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "ネットワークマネージャー"
#: js/ui/components/networkAgent.js:704
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN パスワード"
@ -1057,7 +1186,7 @@ msgstr "申し訳ありません、認証できませんでした。再試行し
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s は %s になりました"
@ -1093,31 +1222,31 @@ msgstr "%Y年%-m月%-e日"
msgid "%A %B %e %Y"
msgstr "%Y年%-m月%-e日 (%a)"
#: js/ui/dateMenu.js:162
#: js/ui/dateMenu.js:161
msgid "Add world clocks…"
msgstr "世界時計を追加…"
#: js/ui/dateMenu.js:163
#: js/ui/dateMenu.js:162
msgid "World Clocks"
msgstr "世界時計"
#: js/ui/dateMenu.js:308
#: js/ui/dateMenu.js:276
msgid "Weather"
msgstr "天気"
#: js/ui/dateMenu.js:437
#: js/ui/dateMenu.js:391
msgid "Select a location…"
msgstr "場所を選択…"
#: js/ui/dateMenu.js:445
#: js/ui/dateMenu.js:404
msgid "Loading…"
msgstr "読み込み中…"
#: js/ui/dateMenu.js:455
#: js/ui/dateMenu.js:414
msgid "Go online for weather information"
msgstr "気象情報取得のためにネットワークに接続してください"
#: js/ui/dateMenu.js:457
#: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable"
msgstr "気象情報を取得できません"
@ -1251,35 +1380,35 @@ msgid "Other users are logged in"
msgstr "他のユーザーがログインしています"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (リモート)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (コンソール)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "インストール"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "拡張機能をインストール"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org から“%s”をダウンロードしてインストールしますか?"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "拡張機能のアップデートが利用可能です"
#: js/ui/extensionSystem.js:254
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "拡張機能のアップデートをインストールする準備ができました。"
@ -1425,11 +1554,11 @@ msgstr "ソースを表示"
msgid "Web Page"
msgstr "ウェブページ"
#: js/ui/main.js:279
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "特権ユーザーでログインしました"
#: js/ui/main.js:280
#: js/ui/main.js:270
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1437,23 +1566,23 @@ msgstr ""
"セキュリティ上の観点から、特権ユーザーでセッションを実行することはお勧めでき"
"ません。可能な限り、一般ユーザーでログインしてください。"
#: js/ui/main.js:319
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "画面ロックが無効です"
#: js/ui/main.js:320
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "画面ロックには GNOME ディスプレイマネージャーが必要です。"
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "システム情報"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "不明なアーティスト"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "不明なタイトル"
@ -1499,23 +1628,23 @@ msgstr "キーストロークを割り当て"
msgid "Done"
msgstr "完了"
#: js/ui/padOsd.js:732
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "編集…"
#: js/ui/padOsd.js:774 js/ui/padOsd.js:891
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "なし"
#: js/ui/padOsd.js:845
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "ボタンを押して設定してください"
#: js/ui/padOsd.js:846
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Esc を押すと終了します"
#: js/ui/padOsd.js:849
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "キーを押すと終了します"
@ -1525,16 +1654,16 @@ msgstr "終了"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "アクティビティ"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "システム"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "トップバー"
@ -1565,11 +1694,11 @@ msgstr "画面をロックする必要があります"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "ロックできません"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "アプリケーションによってロックがブロックされました"
@ -1651,13 +1780,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM は数字か空である必要があります。"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "%s を起動できません"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "%s アプリケーションが見つかりません"
@ -2126,11 +2255,11 @@ msgstr "Thunderbolt 認証エラー"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt デバイスを認証できませんでした: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "音量変更しました"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "音量"
@ -2164,23 +2293,23 @@ msgstr "組み込みのみ"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%B%-e日 (%a)"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "ロック解除は上にスワイプしてください"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "ロック解除はキーを押すかクリックしてください"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "ロック解除"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "別のユーザーでログイン"
@ -2213,7 +2342,7 @@ msgstr "設定を元に戻す"
msgid "Keep Changes"
msgstr "変更を保存"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2221,7 +2350,7 @@ msgstr[0] "%d 秒後に元の設定に戻ります"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2298,28 +2427,28 @@ msgstr "閉じる"
msgid "Evolution Calendar"
msgstr "Evolution カレンダー"
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
msgid "Print version"
msgstr "バージョンを表示する"
#: src/main.c:464
#: src/main.c:466
msgid "Mode used by GDM for login screen"
msgstr "ログイン画面で GDM が使用するモード"
#: src/main.c:470
#: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "指定したモードを使用する (例: ログイン画面用の“gdm”)"
#: src/main.c:476
#: src/main.c:478
msgid "List possible modes"
msgstr "使用可能なモードを一覧表示する"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "不明なプログラム"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "“%s”の起動に失敗しました"
@ -2336,145 +2465,6 @@ msgstr "パスワードを空白にすることはできません。"
msgid "Authentication dialog was dismissed by the user"
msgstr "認証ダイアログはユーザーに拒否されました"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "拡張機能"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "GNOME 拡張機能を管理します"
#: 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 "GNOME Shell 拡張機能の設定を行います"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "“%s”を削除しますか?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"拡張機能を削除した場合、再度有効にするにはダウンロードし直す必要があります"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "削除"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Hideki Yamane <henrich@debian.org>\n"
"Ikuya Awashiro <ikuya@fruitsbasket.info>\n"
"IWAI, Masaharu <iwaim.sub@gmail.com>\n"
"Jiro Matsuzawa <jmatsuzawa@gnome.org>\n"
"Kiyotaka NISHIBORI <ml.nishibori.kiyotaka@gmail.com>\n"
"Nishio Futoshi <fut_nis@d3.dion.ne.jp>\n"
"sicklylife <translation@sicklylife.jp>\n"
"Takanori MATSUURA <t.matsuu@gmail.com>\n"
"Takayuki KUSANO <AE5T-KSN@asahi-net.or.jp>\n"
"Yoji TOYODA <bsyamato@sea.plala.or.jp>"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d 個の拡張機能を次回ログイン時に更新します。"
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "説明"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "バージョン"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "作者"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "ウェブサイト"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "削除…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "ヘルプ"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "“拡張機能”について"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"拡張機能の検索や追加は <a href=\"https://extensions.gnome.org\">extensions."
"gnome.org</a> で行うことができます。"
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "警告"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"拡張機能は、システムに何らかの問題 (パフォーマンスへの影響を含む) を引き起こ"
"す場合があります。システムに問題が発生した場合は、すべての拡張機能を無効にす"
"ることをお勧めします。"
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "手動でインストール"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "組み込み"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "インストールされた拡張機能はありません"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"大変申し訳ありませんが、インストール済み拡張機能一覧を取得できませんでした。"
"GNOME にログインしていることを確認した上で再試行してください。"
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "拡張機能の更新準備完了"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "ログアウト…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2803,9 +2793,6 @@ msgstr[0] "入力数: %u"
msgid "System Sounds"
msgstr "システムのサウンド"
#~ msgid "Copy Error"
#~ msgstr "エラーをコピー"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "%d 件の新しいメッセージ"

1843
po/kk.po

File diff suppressed because it is too large Load Diff

489
po/ko.po
View File

@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-26 21:26+0000\n"
"PO-Revision-Date: 2020-05-28 08:49+0900\n"
"POT-Creation-Date: 2020-02-28 07:20+0000\n"
"PO-Revision-Date: 2020-02-28 17:34+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: ko\n"
@ -54,6 +54,15 @@ msgstr "모든 프로그램 표시"
msgid "Open the application menu"
msgstr "프로그램 메뉴 열기"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "확장"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "그놈 셸 확장을 설정합니다"
#: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell"
msgstr "그놈 셸"
@ -382,12 +391,45 @@ msgstr "마우스 포인터가 움직이지 않을 때까지 포커스 전환을
msgid "Network Login"
msgstr "네트워크 로그인"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: js/extensionPrefs/main.js:140
#, javascript-format
msgid "Remove “%s”?"
msgstr "“%s” 확장을 제거하시겠습니까?"
#: js/extensionPrefs/main.js:141
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr "확장을 제거한 다음 다시 사용하려면 다시 다운로드해야 합니다"
#: js/extensionPrefs/main.js:144 js/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 "취소"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "제거"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
"차영호 <ganadist@gmail.com>\n"
"조성호 <darkcircle.0426@gmail.com>\n"
"류창우 <cwryu@debian.org>"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "그놈 확장을 관리합니다"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong"
msgstr "무언가 잘못되었습니다"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/main.js:268
msgid ""
"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 "
@ -396,31 +438,110 @@ msgstr ""
"죄송하지만 문제가 발생했습니다. 이 확장의 설정을 표시할 수 없습니다. 확장 개"
"발자에게 이 문제를 알려주시기를 추천합니다."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/main.js:275
msgid "Technical Details"
msgstr "기술적 정보"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/main.js:310
msgid "Copy Error"
msgstr "오류 메시지 복사"
#: js/extensionPrefs/main.js:337
msgid "Homepage"
msgstr "홈페이지"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/main.js:338
msgid "Visit extension homepage"
msgstr "확장 홈페이지 보기"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "취소"
#: js/extensionPrefs/main.js:449
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "다음 로그인에 확장 %d개를 업데이트할 예정입니다."
#: 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 "설명"
# 커맨드라인 옵션 설명
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "버전"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "작성자"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "홈페이지"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "제거…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "도움말"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "확장 정보"
#: js/extensionPrefs/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"확장을 찾고 추가하려면, <a href=\"https://extensions.gnome.org\">extensions."
"gnome.org</a> 사이트를 방문하십시오."
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "주의"
#: js/extensionPrefs/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"확장 때문에 성능 문제 등의 시스템 문제가 발생할 수 있습니다. 시스템에 문제를 "
"발견할 경우, 모든 확장을 꺼 보기를 권합니다."
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "수동 설치"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "내장"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "설치한 확장 없음"
#: js/extensionPrefs/ui/extensions-window.ui:234
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"대단히 죄송합니다. 설치한 확장 기능의 목록을 가져올 수 없습니다. 그놈 데스크"
"톱에 로그인했는지 확인하시고 다시 시도하십시오."
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "로그아웃…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326
msgid "Password"
msgstr "암호"
@ -443,8 +564,8 @@ msgstr "(예를 들어, 사용자 또는 %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "사용자 이름"
@ -466,76 +587,76 @@ msgid "(or swipe finger)"
msgstr "(또는 지문을 문지르십시오)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "컴퓨터 끄기"
# 주의: 키워드 번역
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr ""
"power off;shutdown;전원;끄기;셧다운;reboot;restart;재시작;다시;리부팅;halt;"
"stop;중지;"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "화면 잠그기"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "화면 잠그기"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "로그아웃"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "logout;로그아웃;log out;로그 아웃;sign off;나가기"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "절전"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "suspend;sleep;절전;슬립;서스펜드"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "사용자 바꾸기"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "사용자 바꾸기"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lock orientation;방향 잠금;unlock orientation;방향 잠금 해제;screen;화면;"
"rotation;회전"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "화면 회전 잠금 해제"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "화면 회전 잠금"
@ -694,54 +815,54 @@ msgstr "접근 거부"
msgid "Grant Access"
msgstr "접근 허용"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:906
msgid "Unnamed Folder"
msgstr "이름 없는 폴더"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:929
msgid "Frequently used applications will appear here"
msgstr "자주 사용하는 프로그램이 여기 나타납니다"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1064
msgid "Frequent"
msgstr "자주"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1071
msgid "All"
msgstr "모두"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "열린 창"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "새 창"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "지정한 그래픽 카드를 사용해 시작"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "즐겨찾기에서 제거"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "즐겨찾기에 추가"
# 주의: "Show ..." 형태지만 보이기로 번역하지 않는다
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "자세히 보기"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s 프로그램을 즐겨찾기에 추가했습니다."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다."
@ -762,7 +883,7 @@ msgstr "헤드폰"
msgid "Headset"
msgstr "헤드셋"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "마이크"
@ -880,30 +1001,30 @@ msgid "All Day"
msgstr "종일"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:868
#: js/ui/calendar.js:867
msgctxt "calendar heading"
msgid "%A, %B %-d"
msgstr "%B %-d일 %A"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:871
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %-d, %Y"
msgstr "%Y년 %B %-d일 %A"
#: js/ui/calendar.js:1100
#: js/ui/calendar.js:1096
msgid "No Notifications"
msgstr "알림 없음"
#: js/ui/calendar.js:1103
#: js/ui/calendar.js:1099
msgid "No Events"
msgstr "행사 없음"
#: js/ui/calendar.js:1157
#: js/ui/calendar.js:1153
msgid "Do Not Disturb"
msgstr "방해 금지"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1167
msgid "Clear"
msgstr "지우기"
@ -949,80 +1070,80 @@ msgstr "설치한 버전의 udisks는 PIM 설정을 지원하지 않습니다"
msgid "Open with %s"
msgstr "%s 프로그램으로 열기"
#: js/ui/components/networkAgent.js:91
#: js/ui/components/networkAgent.js:89
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr "다른 방법으로 라우터의 “WPS” 단추를 눌러서 연결할 수 있습니다."
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "연결"
#: js/ui/components/networkAgent.js:210
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "키"
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "개인 키 암호"
#: js/ui/components/networkAgent.js:269
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "신원"
#: js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "서비스"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required"
msgstr "인증 필요"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr "“%s” 무선 네트워크에 연결하려면 암호 또는 암호화 키가 필요합니다."
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "유선 802.1X 인증"
#: js/ui/components/networkAgent.js:319
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "네트워크 이름"
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "인증이 필요합니다"
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN 코드가 필요합니다"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "휴대전화 네트워크 장치를 사용하려면 PIN 코드가 필요합니다"
#: js/ui/components/networkAgent.js:333
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:711
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "“%s”에 연결하려면 암호가 필요합니다."
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "네트워크 관리"
#: js/ui/components/networkAgent.js:704
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN 암호"
@ -1048,7 +1169,7 @@ msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s의 대화명이 이제 %s입니다"
@ -1084,31 +1205,31 @@ msgstr "%Y년 %B %-d일"
msgid "%A %B %e %Y"
msgstr "%Y년 %B %e일 %A"
#: js/ui/dateMenu.js:162
#: js/ui/dateMenu.js:161
msgid "Add world clocks…"
msgstr "세계 시계 추가…"
#: js/ui/dateMenu.js:163
#: js/ui/dateMenu.js:162
msgid "World Clocks"
msgstr "세계 시계"
#: js/ui/dateMenu.js:308
#: js/ui/dateMenu.js:276
msgid "Weather"
msgstr "날씨"
#: js/ui/dateMenu.js:437
#: js/ui/dateMenu.js:391
msgid "Select a location…"
msgstr "위치를 선택하십시오…"
#: js/ui/dateMenu.js:445
#: js/ui/dateMenu.js:404
msgid "Loading…"
msgstr "읽어들이는 중…"
#: js/ui/dateMenu.js:455
#: js/ui/dateMenu.js:414
msgid "Go online for weather information"
msgstr "날씨 정보를 온라인으로 가져옵니다"
#: js/ui/dateMenu.js:457
#: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable"
msgstr "날씨 정보를 현재 사용할 수 없습니다"
@ -1239,36 +1360,36 @@ msgid "Other users are logged in"
msgstr "다른 사용자가 로그인 중입니다"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (원격)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (콘솔)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "설치"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "확장 설치"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr ""
"extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "확장 업데이트가 있습니다"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "확장 업데이트 설치할 준비가 되었습니다."
@ -1414,11 +1535,11 @@ msgstr "소스 보기"
msgid "Web Page"
msgstr "웹페이지"
#: js/ui/main.js:279
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "관리자 권한으로 로그인"
#: js/ui/main.js:280
#: js/ui/main.js:270
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1426,24 +1547,24 @@ msgstr ""
"관리자 권한으로 세션을 시작하는 일은 보안 이유로 피해야 합니다. 할 수 있으면 "
"일반 유저로 로그인해야 합니다."
#: js/ui/main.js:319
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "화면 잠금 사용하지 않음"
# GDM
#: js/ui/main.js:320
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "화면 잠금은 그놈 디스플레이 관리자가 필요합니다."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "시스템 정보"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "알 수 없는 음악가"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "알 수 없는 제목"
@ -1515,16 +1636,16 @@ msgstr "끝내기"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "현재 활동"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "시스템"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "위 막대"
@ -1555,11 +1676,11 @@ msgstr "그놈에서 화면을 잠궈야 합니다"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "잠글 수 없습니다"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "프로그램이 잠금을 막았습니다"
@ -1642,13 +1763,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM은 숫자거나 비어 있어야 합니다."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "%s 프로그램을 시작할 수 없습니다"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "%s 프로그램을 찾을 수 없습니다"
@ -2117,12 +2238,12 @@ msgid "Could not authorize the Thunderbolt device: %s"
msgstr "썬더볼트 장치에 권한을 부여할 수 없습니다: %s"
# 오디오 볼륨
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "볼륨 바꿈"
# 오디오 볼륨
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "볼륨"
@ -2156,23 +2277,23 @@ msgstr "내장만 사용"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%B %-d일 %A"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "잠금을 풀려면 위로 살짝 미십시오"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "잠금을 풀려면 마우스 단추 또는 키를 누르십시오"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "창 잠금 풀기"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "다른 사용자로 로그인"
@ -2205,7 +2326,7 @@ msgstr "설정 되돌리기"
msgid "Keep Changes"
msgstr "바뀐 사항 유지"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2213,7 +2334,7 @@ msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2291,28 +2412,28 @@ msgid "Evolution Calendar"
msgstr "에볼루션 달력"
# 커맨드라인 옵션 설명
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
msgid "Print version"
msgstr "버전을 표시합니다"
#: src/main.c:464
#: src/main.c:466
msgid "Mode used by GDM for login screen"
msgstr "GDM에서 로그인 화면에 사용할 모드"
#: src/main.c:470
#: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 “gdm”"
#: src/main.c:476
#: src/main.c:478
msgid "List possible modes"
msgstr "가능한 모드 목록 표시"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "알 수 없음"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "“%s” 실행에 실패했습니다"
@ -2329,137 +2450,6 @@ msgstr "빈 암호를 쓸 수 없습니다"
msgid "Authentication dialog was dismissed by the user"
msgstr "인증 대화 창을 사용자가 닫았습니다"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:5
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:4
#: subprojects/extensions-app/js/main.js:182
#: subprojects/extensions-app/data/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "확장"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: subprojects/extensions-app/js/main.js:183
msgid "Manage your GNOME Extensions"
msgstr "그놈 확장을 관리합니다"
#: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in:35
msgid ""
"GNOME Extensions handles updating extensions, configuring extension "
"preferences and removing or disabling unwanted extensions."
msgstr "그놈 확장 관리자에서는 확장 기능의 업데이트, 확장 기능의 설정, 원하지 않는 확장 기능 제거 또는 사용 중지를 처리합니다."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "그놈 셸 확장을 설정합니다"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "“%s” 확장을 제거하시겠습니까?"
#: subprojects/extensions-app/js/main.js:145
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr "확장을 제거한 다음 다시 사용하려면 다시 다운로드해야 합니다"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "제거"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"차영호 <ganadist@gmail.com>\n"
"조성호 <darkcircle.0426@gmail.com>\n"
"류창우 <cwryu@debian.org>"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "다음 로그인에 확장 %d개를 업데이트할 예정입니다."
#: subprojects/extensions-app/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "설명"
# 커맨드라인 옵션 설명
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "버전"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "작성자"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "홈페이지"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "제거…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "도움말"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "확장 정보"
#: subprojects/extensions-app/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"확장을 찾고 추가하려면, <a href=\"https://extensions.gnome.org\">extensions."
"gnome.org</a> 사이트를 방문하십시오."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "주의"
#: subprojects/extensions-app/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"확장 때문에 성능 문제 등의 시스템 문제가 발생할 수 있습니다. 시스템에 문제를 "
"발견할 경우, 모든 확장을 꺼 보기를 권합니다."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "수동 설치"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "내장"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "설치한 확장 없음"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"대단히 죄송합니다. 설치한 확장 기능의 목록을 가져올 수 없습니다. 그놈 데스크"
"톱에 로그인했는지 확인하시고 다시 시도하십시오."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "확장 업데이트가 준비되었습니다"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "로그아웃…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2795,6 +2785,3 @@ msgstr[0] "%u개 입력"
#: subprojects/gvc/gvc-mixer-control.c:2766
msgid "System Sounds"
msgstr "시스템 소리"
#~ msgid "Copy Error"
#~ msgstr "오류 메시지 복사"

187
po/lt.po
View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-26 21:26+0000\n"
"PO-Revision-Date: 2020-05-31 22:49+0300\n"
"POT-Creation-Date: 2020-03-28 16:33+0000\n"
"PO-Revision-Date: 2020-03-29 22:27+0300\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Gtranslator 3.36.0\n"
"X-Generator: Gtranslator 3.34.0\n"
"X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6
@ -389,7 +389,7 @@ msgid "Network Login"
msgstr "Tinklo prisijungimas"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Atsitiko kažkas negero"
@ -416,7 +416,7 @@ msgstr "Aplankyti plėtinio namų tinklalapį"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
@ -472,71 +472,71 @@ msgid "(or swipe finger)"
msgstr "(arba perbraukite pirštu)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Išjungti"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "išjungti;perleisti;perkrauti;sustabdyti"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Užrakinti ekraną"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "užrakinti ekraną"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Atsijungti"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "atsijungti;išeiti;"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Pristabdyti"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "pristabdyti;užmigdyti"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Keisti naudotoją"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "keisti naudotoją"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr "orientacijos užrakinimas;orientacijos atrakinimas;ekranas;pasukimas"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Atrakinti ekrano orientaciją"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Užrakinti ekrano orientaciją"
@ -707,53 +707,53 @@ msgstr "Atmesti prieigą"
msgid "Grant Access"
msgstr "Suteikti prieigą"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Nepavadintas aplankas"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Čia bus matomos dažnai naudojamos programos"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Dažnai naudojamos"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Visos"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2439 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Atverti langai"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2459 js/ui/panel.js:82
msgid "New Window"
msgstr "Naujas langas"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2470
msgid "Launch using Dedicated Graphics Card"
msgstr "Paleisti naudojant dedikuotą grafikos kortą"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2498 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2504
msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2514 js/ui/panel.js:93
msgid "Show Details"
msgstr "Rodyti detalią informaciją"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s pridėta prie jūsų mėgstamų."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s pašalinta iš jūsų mėgstamų."
@ -774,7 +774,7 @@ msgstr "Ausinės"
msgid "Headset"
msgstr "Ausinės su mikrofonu"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Mikrofonas"
@ -915,7 +915,7 @@ msgstr "Nėra įvykių"
msgid "Do Not Disturb"
msgstr "Netrukdyti"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Išvalyti"
@ -1100,46 +1100,46 @@ msgstr "%Y %B %-d."
msgid "%A %B %e %Y"
msgstr "%A, %Y m. %B %d d."
#: js/ui/dateMenu.js:162
#: js/ui/dateMenu.js:161
msgid "Add world clocks…"
msgstr "Pridėti pasaulio laikrodžius…"
#: js/ui/dateMenu.js:163
#: js/ui/dateMenu.js:162
msgid "World Clocks"
msgstr "Pasaulio laikrodžiai"
#: js/ui/dateMenu.js:308
#: js/ui/dateMenu.js:289
msgid "Weather"
msgstr "Orai"
#: js/ui/dateMenu.js:437
#: js/ui/dateMenu.js:418
msgid "Select a location…"
msgstr "Pasirinkite vietą…"
#: js/ui/dateMenu.js:445
#: js/ui/dateMenu.js:426
msgid "Loading…"
msgstr "Įkeliama…"
#: js/ui/dateMenu.js:455
#: js/ui/dateMenu.js:436
msgid "Go online for weather information"
msgstr "Prisijunkite prie tinklo orų informacijai gauti"
#: js/ui/dateMenu.js:457
#: js/ui/dateMenu.js:438
msgid "Weather information is currently unavailable"
msgstr "Orų informacija šiuo metu yra neprieinama"
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Atjungti naudotoją %s"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Atsijungti"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:42
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
@ -1147,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[2] "%s bus automatiškai atjungta (-s) už %d sekundžių."
#: js/ui/endSessionDialog.js:45
#: js/ui/endSessionDialog.js:47
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
@ -1155,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[2] "Jūs būsite automatiškai atjungti už %d sekundžių."
#: js/ui/endSessionDialog.js:51
#: js/ui/endSessionDialog.js:53
msgctxt "button"
msgid "Log Out"
msgstr "Atsijungti"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:58
msgctxt "title"
msgid "Power Off"
msgstr "Išjungti"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:59
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Įdiegti atnaujinimus ir išjungti"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:61
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
@ -1178,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[2] "Sistema automatiškai išsijungs po %d sekundžių."
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:65
msgctxt "checkbox"
msgid "Install pending software updates"
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"
msgid "Restart"
msgstr "Paleisti iš naujo"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:70
msgctxt "button"
msgid "Power Off"
msgstr "Išjungti"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:76
msgctxt "title"
msgid "Restart"
msgstr "Paleisti iš naujo"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:78
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@ -1206,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[2] "Sistema bus paleista iš naujo po %d sekundžių."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:91
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Perleisti ir įdiegti atnaujinimus"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:93
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1223,22 +1223,22 @@ msgstr[1] ""
msgstr[2] ""
"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"
msgid "Restart &amp; Install"
msgstr "Perleisti ir įdiegti"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:100
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Įdiegti ir išjungti"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:101
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Išjungti baigus diegti atnaujinimus"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:108
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Perleisti ir įdiegti atnaujinimą"
@ -1246,7 +1246,7 @@ msgstr "Perleisti ir įdiegti atnaujinimą"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:113
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1256,28 +1256,28 @@ msgstr ""
"įsitikinkite, kad pasidarėte atsarginę duomenų kopiją, ir kad kompiuteris "
"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."
msgstr ""
"Veikia naudojant baterijos energiją: įjunkite į elektros tinklą prieš "
"įdiegdami atnaujinimus."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work"
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"
msgstr "Yra prisijungusių kitų naudotojų"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (nutolęs)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (komandų eilutė)"
@ -1295,11 +1295,11 @@ msgstr "Išdiegti plėtinį"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:233
msgid "Extension Updates Available"
msgstr "Yra plėtinių atnaujinimų"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed."
msgstr "Plėtinių atnaujinimai paruošti diegimui."
@ -1446,11 +1446,11 @@ msgstr "Žiūrėti šaltinį"
msgid "Web Page"
msgstr "Tinklalapis"
#: js/ui/main.js:279
#: js/ui/main.js:277
msgid "Logged in as a privileged user"
msgstr "Prisijungta privilegijuotu naudotoju"
#: js/ui/main.js:280
#: js/ui/main.js:278
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1458,23 +1458,23 @@ msgstr ""
"Saugumo sumetimais turėtų būti vengiama vykdyti seansus privilegijuotais "
"naudotojais. Jei įmanoma, turėtumėt visada prisjungti normaliu naudotoju."
#: js/ui/main.js:319
#: js/ui/main.js:317
msgid "Screen Lock disabled"
msgstr "Ekrano užraktas išjungtas"
#: js/ui/main.js:320
#: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager."
msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1551
msgid "System Information"
msgstr "Sistemos informacija"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "Nežinomas atlikėjas"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "Nežinomas pavadinimas"
@ -1546,16 +1546,16 @@ msgstr "Užverti"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Apžvalga"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Viršutinė juosta"
@ -1586,11 +1586,11 @@ msgstr "GNOME aplinkai reikia užrakinti ekraną"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Nepavyksta užrakinti"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą"
@ -1674,13 +1674,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM turi būti numeris arba tuščias."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Nepavyksta paleisti %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Nepavyksta rasti programos %s"
@ -2156,11 +2156,11 @@ msgstr "Thunderbolt autorizacijos klaida"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Garsumas pakeistas"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Garsumas"
@ -2243,7 +2243,7 @@ msgstr "Grąžinti nustatymus"
msgid "Keep Changes"
msgstr "Įrašyti pakeitimus"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2253,7 +2253,7 @@ msgstr[2] "Pakeitimai bus grąžinti po %d sekundžių"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2346,12 +2346,12 @@ msgstr "Naudoti konkrečią veikseną, pvz., „gdm“ prisijungimo ekranui"
msgid "List possible modes"
msgstr "Išvardinti galimas veiksenas"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Nežinoma"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Nepavyko paleisti „%s“"
@ -2475,19 +2475,19 @@ 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:135
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Įdiegtas rankomis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Vidinis"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
#: 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:236
#: 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."
@ -2495,12 +2495,7 @@ 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:273
#| msgid "Extension Updates Available"
msgid "Extension Updates Ready"
msgstr "Plėtinių atnaujinimai paruošti"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Atsijungti…"

486
po/nl.po
View File

@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-05-06 13:10+0200\n"
"POT-Creation-Date: 2020-02-24 12:37+0000\n"
"PO-Revision-Date: 2020-02-24 23:33+0100\n"
"Last-Translator: Nathan Follens <nthn@unseen.is>\n"
"Language-Team: Nederlands <gnome-nl-list@gnome.org>\n"
"Language: nl\n"
@ -52,6 +52,15 @@ msgstr "Alle toepassingen tonen"
msgid "Open the application menu"
msgstr "Toepassingenmenu openen"
#: data/org.gnome.Extensions.desktop.in.in:4 js/extensionPrefs/main.js:218
#: js/extensionPrefs/ui/extensions-window.ui:61
msgid "Extensions"
msgstr "Uitbreidingen"
#: data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Gnome Shell-uitbreidingen configureren"
#: data/org.gnome.Shell.desktop.in.in:4
msgid "GNOME Shell"
msgstr "Gnome Shell"
@ -399,12 +408,47 @@ msgstr "Focus pas wijzigen nadat de muisaanwijzer is gestopt met bewegen"
msgid "Network Login"
msgstr "Netwerkaanmelding"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: js/extensionPrefs/main.js:140
#, javascript-format
msgid "Remove “%s”?"
msgstr "%s verwijderen?"
#: 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 ""
"Als u een uitbreiding verwijdert, zult u deze opnieuw moeten downloaden om "
"ze opnieuw te gebruiken"
#: 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 "Annuleren"
#: js/extensionPrefs/main.js:145
msgid "Remove"
msgstr "Verwijderen"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr ""
"Nathan Follens <nthn@unseen.is>\n"
"\n"
"Meer info over Gnome-NL http://nl.gnome.org"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "Beheer uw Gnome-uitbreidingen"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong"
msgstr "Er is iets misgegaan"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/main.js:268
msgid ""
"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 "
@ -414,31 +458,111 @@ msgstr ""
"uitbreiding kunnen niet worden weergegeven. We raden u aan dit probleem te "
"melden aan de ontwikkelaars van de uitbreiding."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/main.js:275
msgid "Technical Details"
msgstr "Technische details"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/main.js:310
msgid "Copy Error"
msgstr "Fout kopiëren"
#: js/extensionPrefs/main.js:337
msgid "Homepage"
msgstr "Startpagina"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/main.js:338
msgid "Visit extension homepage"
msgstr "Website van uitbreiding openen"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Annuleren"
#: js/extensionPrefs/main.js:449
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d uitbreiding wordt bijgewerkt bij de volgende aanmelding."
msgstr[1] "%d uitbreidingen worden bijgewerkt bij de volgende aanmelding."
#: 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 "Beschrijving"
#: js/extensionPrefs/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versie"
#: js/extensionPrefs/ui/extension-row.ui:151
msgid "Author"
msgstr "Auteur"
#: js/extensionPrefs/ui/extension-row.ui:175
msgid "Website"
msgstr "Website"
#: js/extensionPrefs/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Verwijderen…"
#: js/extensionPrefs/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hulp"
#: js/extensionPrefs/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Over uitbreidingen"
#: 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 ""
"Bezoek <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> om "
"uitbreidingen te zoeken en installeren."
#: js/extensionPrefs/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Waarschuwing"
#: 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 ""
"Uitbreidingen kunnen problemen veroorzaken, inclusief prestatieproblemen. "
"Als u een probleem met uw systeem ondervindt, wordt het aanbevolen eerst "
"alle uitbreidingen uit te schakelen."
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
msgstr "Handmatig geïnstalleerd"
#: js/extensionPrefs/ui/extensions-window.ui:157
msgid "Built-In"
msgstr "Ingebouwd"
#: js/extensionPrefs/ui/extensions-window.ui:198
msgid "No Installed Extensions"
msgstr "Geen uitbreidingen geïnstalleerd"
#: 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 ""
"Sorry, we konden de lijst met geïnstalleerde uitbreidingen niet verkrijgen. "
"Zorg dat u bij Gnome aangemeld bent, en probeer het opnieuw."
#: js/extensionPrefs/ui/extensions-window.ui:287
msgid "Log Out…"
msgstr "Afmelden…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
#: js/ui/components/networkAgent.js:220 js/ui/components/networkAgent.js:244
#: js/ui/components/networkAgent.js:265 js/ui/components/networkAgent.js:285
#: js/ui/components/networkAgent.js:295 js/ui/components/polkitAgent.js:277
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:218 js/ui/components/networkAgent.js:242
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:293 js/ui/components/polkitAgent.js:277
#: js/ui/shellMountOperation.js:326
msgid "Password"
msgstr "Wachtwoord"
@ -461,8 +585,8 @@ msgstr "(bijv. gebruiker of %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:240
#: js/ui/components/networkAgent.js:263 js/ui/components/networkAgent.js:281
#: js/gdm/loginDialog.js:917 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "Gebruikersnaam"
@ -718,45 +842,45 @@ msgstr "Toegang weigeren"
msgid "Grant Access"
msgstr "Toegang verlenen"
#: js/ui/appDisplay.js:932
#: js/ui/appDisplay.js:906
msgid "Unnamed Folder"
msgstr "Naamloze map"
#: js/ui/appDisplay.js:955
#: js/ui/appDisplay.js:929
msgid "Frequently used applications will appear here"
msgstr "Vaak gebruikte toepassingen verschijnen hier"
#: js/ui/appDisplay.js:1090
#: js/ui/appDisplay.js:1064
msgid "Frequent"
msgstr "Vaak gebruikt"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1071
msgid "All"
msgstr "Alles"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Open vensters"
msgstr "Vensters openen"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Nieuw venster"
# Dedicated niet vertaald
#: js/ui/appDisplay.js:2504
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Met grafische kaart opstarten"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Uit favorieten verwijderen"
#: js/ui/appDisplay.js:2538
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Aan favorieten toevoegen"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Details tonen"
@ -786,7 +910,7 @@ msgstr "Hoofdtelefoon"
msgid "Headset"
msgstr "Headset"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Microfoon"
@ -904,30 +1028,30 @@ msgid "All Day"
msgstr "Gehele dag"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: js/ui/calendar.js:868
#: js/ui/calendar.js:867
msgctxt "calendar heading"
msgid "%A, %B %-d"
msgstr "%A %-d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: js/ui/calendar.js:871
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %-d, %Y"
msgstr "%A %-d %B %Y"
#: js/ui/calendar.js:1100
#: js/ui/calendar.js:1096
msgid "No Notifications"
msgstr "Geen notificaties"
#: js/ui/calendar.js:1103
#: js/ui/calendar.js:1099
msgid "No Events"
msgstr "Geen gebeurtenissen"
#: js/ui/calendar.js:1157
#: js/ui/calendar.js:1153
msgid "Do Not Disturb"
msgstr "Niet storen"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1167
msgid "Clear"
msgstr "Wissen"
@ -976,39 +1100,39 @@ msgstr ""
msgid "Open with %s"
msgstr "Openen met %s"
#: js/ui/components/networkAgent.js:91
#: js/ui/components/networkAgent.js:89
msgid ""
"Alternatively you can connect by pushing the “WPS” button on your router."
msgstr ""
"U kunt ook verbinding maken door op de WPS-knop op uw router te drukken."
#: js/ui/components/networkAgent.js:103 js/ui/status/network.js:223
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Verbinden"
#: js/ui/components/networkAgent.js:210
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Sleutel"
#: js/ui/components/networkAgent.js:248 js/ui/components/networkAgent.js:271
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Wachtwoord van privésleutel"
#: js/ui/components/networkAgent.js:269
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identiteit"
#: js/ui/components/networkAgent.js:283
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Dienst"
#: js/ui/components/networkAgent.js:312 js/ui/components/networkAgent.js:340
#: js/ui/components/networkAgent.js:679 js/ui/components/networkAgent.js:700
#: js/ui/components/networkAgent.js:310 js/ui/components/networkAgent.js:338
#: js/ui/components/networkAgent.js:685 js/ui/components/networkAgent.js:706
msgid "Authentication required"
msgstr "Aanmelding vereist"
#: js/ui/components/networkAgent.js:313 js/ui/components/networkAgent.js:680
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@ -1017,42 +1141,42 @@ msgstr ""
"Voor toegang tot het draadloze netwerk %s is een wachtwoord of sleutel "
"benodigd."
#: js/ui/components/networkAgent.js:317 js/ui/components/networkAgent.js:684
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "802.1X-authenticatie (bekabeld)"
#: js/ui/components/networkAgent.js:319
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Netwerknaam"
#: js/ui/components/networkAgent.js:324 js/ui/components/networkAgent.js:688
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL-authenticatie"
#: js/ui/components/networkAgent.js:331 js/ui/components/networkAgent.js:693
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN-code vereist"
#: js/ui/components/networkAgent.js:332 js/ui/components/networkAgent.js:694
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-code vereist voor het apparaat voor mobiel breedband"
#: js/ui/components/networkAgent.js:333
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "Pincode"
#: js/ui/components/networkAgent.js:341 js/ui/components/networkAgent.js:685
#: js/ui/components/networkAgent.js:689 js/ui/components/networkAgent.js:701
#: js/ui/components/networkAgent.js:705
#: js/ui/components/networkAgent.js:339 js/ui/components/networkAgent.js:691
#: js/ui/components/networkAgent.js:695 js/ui/components/networkAgent.js:707
#: js/ui/components/networkAgent.js:711
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Er is een wachtwoord nodig om met %s te verbinden."
#: js/ui/components/networkAgent.js:668 js/ui/status/network.js:1691
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Netwerk-manager"
#: js/ui/components/networkAgent.js:704
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN-wachtwoord"
@ -1079,7 +1203,7 @@ msgstr "Helaas, dat werkte niet. Probeer het opnieuw."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s heet vanaf nu %s"
@ -1124,106 +1248,106 @@ msgstr "Wereldklokken toevoegen…"
msgid "World Clocks"
msgstr "Wereldklokken"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:276
msgid "Weather"
msgstr "Weer"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:391
msgid "Select a location…"
msgstr "Selecteer een locatie…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:404
msgid "Loading…"
msgstr "Laden…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:414
msgid "Go online for weather information"
msgstr "Ga online voor informatie over het weer"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable"
msgstr "Informatie over het weer is momenteel niet beschikbaar"
#: js/ui/endSessionDialog.js:39
#: js/ui/endSessionDialog.js:37
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "%s afmelden"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:38
msgctxt "title"
msgid "Log Out"
msgstr "Afmelden"
#: js/ui/endSessionDialog.js:42
#: js/ui/endSessionDialog.js:40
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s wordt automatisch afgemeld over %d seconde."
msgstr[1] "%s wordt automatisch afgemeld over %d seconden."
#: js/ui/endSessionDialog.js:47
#: js/ui/endSessionDialog.js:45
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "U wordt automatisch afgemeld over %d seconde."
msgstr[1] "U wordt automatisch afgemeld over %d seconden."
#: js/ui/endSessionDialog.js:53
#: js/ui/endSessionDialog.js:51
msgctxt "button"
msgid "Log Out"
msgstr "Afmelden"
#: js/ui/endSessionDialog.js:58
#: js/ui/endSessionDialog.js:56
msgctxt "title"
msgid "Power Off"
msgstr "Uitschakelen"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:57
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Updates installeren en uitschakelen"
#: js/ui/endSessionDialog.js:61
#: js/ui/endSessionDialog.js:59
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "De computer wordt automatisch afgesloten over %d seconde."
msgstr[1] "De computer wordt automatisch afgesloten over %d seconden."
#: js/ui/endSessionDialog.js:65
#: js/ui/endSessionDialog.js:63
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Gereedstaande software-updates installeren"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Opnieuw opstarten"
#: js/ui/endSessionDialog.js:70
#: js/ui/endSessionDialog.js:68
msgctxt "button"
msgid "Power Off"
msgstr "Uitschakelen"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:74
msgctxt "title"
msgid "Restart"
msgstr "Opnieuw opstarten"
#: js/ui/endSessionDialog.js:78
#: js/ui/endSessionDialog.js:76
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "De computer wordt opnieuw opgestart over %d seconde."
msgstr[1] "De computer wordt opnieuw opgestart over %d seconden."
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:89
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Opnieuw opstarten en updates installeren"
#: js/ui/endSessionDialog.js:93
#: js/ui/endSessionDialog.js:91
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1233,22 +1357,22 @@ msgstr[0] ""
msgstr[1] ""
"De computer zal opnieuw opstarten en updates installeren over %d seconden."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Herstarten en installeren"
#: js/ui/endSessionDialog.js:100
#: js/ui/endSessionDialog.js:98
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Installeren en uitschakelen"
#: js/ui/endSessionDialog.js:101
#: js/ui/endSessionDialog.js:99
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Uitschakelen na installatie van updates"
#: js/ui/endSessionDialog.js:108
#: js/ui/endSessionDialog.js:106
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Opnieuw opstarten en upgrades installeren"
@ -1256,7 +1380,7 @@ msgstr "Opnieuw opstarten en upgrades installeren"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113
#: js/ui/endSessionDialog.js:111
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1266,17 +1390,17 @@ msgstr ""
"kan lang duren: zorg ervoor dat u een reservekopie heeft gemaakt en dat de "
"computer is aangesloten op netstroom."
#: js/ui/endSessionDialog.js:261
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
msgstr ""
"De computer gebruikt accustroom. Sluit de adapter aan alvorens de "
"installatie te starten."
#: js/ui/endSessionDialog.js:270
#: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work"
msgstr "Sommige toepassingen zijn bezig of hebben niet-opgeslagen werk"
#: js/ui/endSessionDialog.js:275
#: js/ui/endSessionDialog.js:273
msgid "Other users are logged in"
msgstr "Er zijn andere gebruikers aangemeld"
@ -1292,24 +1416,24 @@ msgstr "%s (op afstand)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Installeren"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Uitbreiding installeren"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "%s downloaden van extensions.gnome.org en daarna installeren?"
#: js/ui/extensionSystem.js:233
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Er zijn uitbreidingsupdates beschikbaar"
#: js/ui/extensionSystem.js:234
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Uitbreidingsupdates zijn klaar voor installatie."
@ -1458,11 +1582,11 @@ msgstr "Broncode weergeven"
msgid "Web Page"
msgstr "Webpagina"
#: js/ui/main.js:277
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Aangemeld als gebruiker met extra rechten"
#: js/ui/main.js:278
#: js/ui/main.js:270
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1471,15 +1595,15 @@ msgstr ""
"als gebruiker met extra rechten vermijdt. Meld u, indien mogelijk, aan als "
"een normale gebruiker."
#: js/ui/main.js:317
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Schermvergrendeling uitgeschakeld"
#: js/ui/main.js:318
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Schermvergrendeling vereist de Gnome-displaymanager."
#: js/ui/messageTray.js:1551
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Systeeminformatie"
@ -1563,12 +1687,12 @@ msgstr "Afsluiten"
msgid "Activities"
msgstr "Activiteiten"
#: js/ui/panel.js:713
#: js/ui/panel.js:707
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Systeem"
#: js/ui/panel.js:826
#: js/ui/panel.js:820
msgid "Top Bar"
msgstr "Menubalk"
@ -1686,13 +1810,13 @@ msgid "The PIM must be a number or empty."
msgstr "De PIM moet ofwel een getal ofwel leeg zijn."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Kan %s niet starten"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Kon %s niet vinden"
@ -2167,11 +2291,11 @@ msgstr "Thunderbolt-autorisatiefout"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Kon het Thunderbolt-apparaat niet autoriseren: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volume gewijzigd"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volume"
@ -2205,23 +2329,23 @@ msgstr "Enkel ingebouwd"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Veeg omhoog om te ontgrendelen"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Klik of druk op een toets om te ontgrendelen"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Venster voor ontgrendelen"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Aanmelden als andere gebruiker"
@ -2340,19 +2464,19 @@ msgstr "Sluiten"
msgid "Evolution Calendar"
msgstr "Evolution-agenda"
#: src/main.c:458 subprojects/extensions-tool/src/main.c:249
#: src/main.c:460 subprojects/extensions-tool/src/main.c:249
msgid "Print version"
msgstr "Versie weergeven"
#: src/main.c:464
#: src/main.c:466
msgid "Mode used by GDM for login screen"
msgstr "De modus die door GDM voor het aanmeldscherm gebruikt wordt"
#: src/main.c:470
#: src/main.c:472
msgid "Use a specific mode, e.g. “gdm” for login screen"
msgstr "Specifieke modus gebruiken, bijv. gdm voor het aanmeldscherm"
#: src/main.c:476
#: src/main.c:478
msgid "List possible modes"
msgstr "Mogelijke modi tonen"
@ -2378,139 +2502,6 @@ msgstr "Het wachtwoord mag niet leeg blijven"
msgid "Authentication dialog was dismissed by the user"
msgstr "Authenticatievenster is door de gebruiker afgesloten"
#: 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 "Uitbreidingen"
#: 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 "Beheer uw Gnome-uitbreidingen"
#: 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 Uitbreidingen staat in voor het bijwerken van uitbreidingen, hun "
"voorkeuren te configureren of ongewenste uitbreidingen te verwijderen of uit "
"te schakelen."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Gnome Shell-uitbreidingen configureren"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "%s verwijderen?"
#: 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 ""
"Als u een uitbreiding verwijdert, zult u deze opnieuw moeten downloaden om "
"ze opnieuw te gebruiken"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Verwijderen"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Nathan Follens <nthn@unseen.is>\n"
"\n"
"Meer info over Gnome-NL http://nl.gnome.org"
#: 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 uitbreiding wordt bijgewerkt bij de volgende aanmelding."
msgstr[1] "%d uitbreidingen worden bijgewerkt bij de volgende aanmelding."
#: 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 "Beschrijving"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Versie"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Auteur"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Website"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Verwijderen…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hulp"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Over uitbreidingen"
#: 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 ""
"Bezoek <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> om "
"uitbreidingen te zoeken en installeren."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Waarschuwing"
#: 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 ""
"Uitbreidingen kunnen problemen veroorzaken, inclusief prestatieproblemen. "
"Als u een probleem met uw systeem ondervindt, wordt het aanbevolen eerst "
"alle uitbreidingen uit te schakelen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Handmatig geïnstalleerd"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Ingebouwd"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Geen uitbreidingen geïnstalleerd"
#: 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 ""
"Sorry, we konden de lijst met geïnstalleerde uitbreidingen niet verkrijgen. "
"Zorg dat u bij Gnome aangemeld bent, en probeer het opnieuw."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Afmelden…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2848,9 +2839,6 @@ msgstr[1] "%u invoerkanalen"
msgid "System Sounds"
msgstr "Systeemgeluiden"
#~ msgid "Copy Error"
#~ msgstr "Fout kopiëren"
#~ msgid "Browse in Software"
#~ msgstr "Bladeren in Software"

427
po/pl.po
View File

@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-05-02 21:42+0200\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-19 15:40+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@ -394,12 +394,69 @@ msgstr ""
msgid "Network Login"
msgstr "Logowanie do sieci"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
#: 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 "Rozszerzenia"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Zarządzanie rozszerzeniami 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 ""
"Ten program obsługuje aktualizowanie, konfigurowanie preferencji oraz "
"usuwanie i wyłączanie niechcianych rozszerzeń."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
#: js/extensionPrefs/js/main.js:164
#, javascript-format
msgid "Remove “%s”?"
msgstr "Usunąć rozszerzenie „%s”?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od "
"nowa"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Anuluj"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Usuń"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Piotr Drąg <piotrdrag@gmail.com>, 2009-2020\n"
"Tomasz Dominikowski <dominikowski@gmail.com>, 2009\n"
"Wojciech Szczęsny <wszczesny@aviary.pl>, 2013\n"
"Aviary.pl <community-poland@mozilla.org>, 2009-2020"
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Coś się nie powiodło"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -408,25 +465,106 @@ msgstr ""
"Wystąpił problem: nie można wyświetlić ustawień tego rozszerzenia. Zalecamy "
"zgłoszenie problemu autorom rozszerzenia."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Informacje techniczne"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Skopiuj błąd"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Strona WWW"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Otwiera stronę WWW rozszerzenia"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Anuluj"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d rozszerzenie zostanie zaktualizowane po następnym zalogowaniu."
msgstr[1] "%d rozszerzenia zostaną zaktualizowane po następnym zalogowaniu."
msgstr[2] "%d rozszerzeń zostanie zaktualizowanych po następnym zalogowaniu."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Opis"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Wersja"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autor"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Witryna"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Usuń…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Pomoc"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "O programie"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"Witryna <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> "
"umożliwia wyszukiwanie i dodawanie rozszerzeń."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Ostrzeżenie"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Rozszerzenia mogą powodować problemy z komputerem, w tym związane "
"z wydajnością. W przypadku występowania problemów zalecane jest wyłączenie "
"wszystkich rozszerzeń."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Ręcznie zainstalowane"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Wbudowane"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Brak zainstalowanych rozszerzeń"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Nie można wyświetlić listy zainstalowanych rozszerzeń. Proszę się upewnić, "
"że zalogowano w środowisku GNOME i spróbować ponownie."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Wyloguj się…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -720,44 +858,44 @@ msgstr "Odmów dostępu"
msgid "Grant Access"
msgstr "Udziel dostępu"
#: js/ui/appDisplay.js:932
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Katalog bez nazwy"
#: js/ui/appDisplay.js:955
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "W tym miejscu pojawią się często używane programy"
#: js/ui/appDisplay.js:1090
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Często używane"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Wszystkie"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Otwarte okna"
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Nowe okno"
#: js/ui/appDisplay.js:2504
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Uruchom za pomocą dedykowanej karty graficznej"
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Usuń z ulubionych"
#: js/ui/appDisplay.js:2538
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Dodaj do ulubionych"
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Wyświetl szczegóły"
@ -787,7 +925,7 @@ msgstr "Słuchawki"
msgid "Headset"
msgstr "Słuchawki z mikrofonem"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Mikrofon"
@ -928,7 +1066,7 @@ msgstr "Brak wydarzeń"
msgid "Do Not Disturb"
msgstr "Nie przeszkadzać"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Wyczyść"
@ -1074,7 +1212,7 @@ msgstr "To nie zadziałało. Proszę spróbować ponownie."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "Użytkownik „%s” jest teraz znany jako „%s”"
@ -1118,38 +1256,38 @@ msgstr "Dodaj zegar światowy…"
msgid "World Clocks"
msgstr "Zegar światowy"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Pogoda"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Wybierz położenie…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Wczytywanie…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Prognoza pogody wymaga połączenia z Internetem"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Prognoza pogody jest obecnie niedostępna"
#: js/ui/endSessionDialog.js:39
#: js/ui/endSessionDialog.js:37
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Wylogowanie użytkownika %s"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:38
msgctxt "title"
msgid "Log Out"
msgstr "Wylogowanie"
#: js/ui/endSessionDialog.js:42
#: js/ui/endSessionDialog.js:40
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
@ -1157,7 +1295,7 @@ msgstr[0] "Użytkownik %s zostanie wylogowany za %d sekundę."
msgstr[1] "Użytkownik %s zostanie wylogowany za %d sekundy."
msgstr[2] "Użytkownik %s zostanie wylogowany za %d sekund."
#: js/ui/endSessionDialog.js:47
#: js/ui/endSessionDialog.js:45
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
@ -1165,22 +1303,22 @@ msgstr[0] "Wylogowanie nastąpi za %d sekundę."
msgstr[1] "Wylogowanie nastąpi za %d sekundy."
msgstr[2] "Wylogowanie nastąpi za %d sekund."
#: js/ui/endSessionDialog.js:53
#: js/ui/endSessionDialog.js:51
msgctxt "button"
msgid "Log Out"
msgstr "Wyloguj się"
#: js/ui/endSessionDialog.js:58
#: js/ui/endSessionDialog.js:56
msgctxt "title"
msgid "Power Off"
msgstr "Wyłączenie komputera"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:57
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instalacja aktualizacji i wyłączenie komputera"
#: js/ui/endSessionDialog.js:61
#: js/ui/endSessionDialog.js:59
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
@ -1188,27 +1326,27 @@ msgstr[0] "Wyłączenie komputera nastąpi za %d sekundę."
msgstr[1] "Wyłączenie komputera nastąpi za %d sekundy."
msgstr[2] "Wyłączenie komputera nastąpi za %d sekund."
#: js/ui/endSessionDialog.js:65
#: js/ui/endSessionDialog.js:63
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instalacja oczekujących aktualizacji oprogramowania"
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
msgid "Restart"
msgstr "Uruchom ponownie"
#: js/ui/endSessionDialog.js:70
#: js/ui/endSessionDialog.js:68
msgctxt "button"
msgid "Power Off"
msgstr "Wyłącz komputer"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:74
msgctxt "title"
msgid "Restart"
msgstr "Ponowne uruchomienie"
#: js/ui/endSessionDialog.js:78
#: js/ui/endSessionDialog.js:76
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@ -1216,12 +1354,12 @@ msgstr[0] "Ponowne uruchomienie komputera nastąpi za %d sekundę."
msgstr[1] "Ponowne uruchomienie komputera nastąpi za %d sekundy."
msgstr[2] "Ponowne uruchomienie komputera nastąpi za %d sekund."
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:89
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Ponowne uruchomienie i instalacja aktualizacji"
#: js/ui/endSessionDialog.js:93
#: js/ui/endSessionDialog.js:91
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1236,22 +1374,22 @@ msgstr[2] ""
"Ponowne uruchomienie komputera i instalacja aktualizacji nastąpi za "
"%d sekund."
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Uruchom ponownie i zainstaluj"
#: js/ui/endSessionDialog.js:100
#: js/ui/endSessionDialog.js:98
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Zainstaluj i wyłącz komputer"
#: js/ui/endSessionDialog.js:101
#: js/ui/endSessionDialog.js:99
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Wyłączenie komputera po zainstalowaniu aktualizacji"
#: js/ui/endSessionDialog.js:108
#: js/ui/endSessionDialog.js:106
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Ponowne uruchomienie i instalacja aktualizacji"
@ -1259,7 +1397,7 @@ msgstr "Ponowne uruchomienie i instalacja aktualizacji"
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:113
#: js/ui/endSessionDialog.js:111
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1269,17 +1407,17 @@ msgstr ""
"aktualizacji może zająć dużo czasu. Proszę się upewnić, że wykonano kopię "
"zapasową danych i podłączono komputer do prądu."
#: js/ui/endSessionDialog.js:261
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
msgstr ""
"Działanie na zasilaniu z akumulatora: proszę podłączyć komputer do prądu "
"przed instalowaniem aktualizacji."
#: js/ui/endSessionDialog.js:270
#: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work"
msgstr "Niektóre programy są używane lub mają niezapisane dane"
#: js/ui/endSessionDialog.js:275
#: js/ui/endSessionDialog.js:273
msgid "Other users are logged in"
msgstr "Inni użytkownicy są zalogowani"
@ -1295,25 +1433,25 @@ msgstr "%s (zdalnie)"
msgid "%s (console)"
msgstr "%s (konsola)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Zainstaluj"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Instalacja rozszerzenia"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr ""
"Pobrać i zainstalować rozszerzenie „%s” z witryny extensions.gnome.org?"
#: js/ui/extensionSystem.js:233
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Dostępne są aktualizacje rozszerzeń"
#: js/ui/extensionSystem.js:234
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Aktualizacje rozszerzeń są gotowe do zainstalowania."
@ -1460,11 +1598,11 @@ msgstr "Wyświetl źródło"
msgid "Web Page"
msgstr "Strona WWW"
#: js/ui/main.js:277
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Zalogowano jako uprawniony użytkownik"
#: js/ui/main.js:278
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1472,15 +1610,15 @@ msgstr ""
"Należy unikać działania jako uprawniony użytkownik z powodów bezpieczeństwa. "
"Jeśli to możliwe, należy zalogować się jako zwykły użytkownik."
#: js/ui/main.js:317
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Blokada ekranu jest wyłączona"
#: js/ui/main.js:318
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr "Blokowanie ekranu wymaga menedżera wyświetlania GNOME."
#: js/ui/messageTray.js:1551
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informacje systemowe"
@ -1688,13 +1826,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM musi być numerem lub być pusty."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Nie można uruchomić programu %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Nie można odnaleźć programu %s"
@ -2119,7 +2257,7 @@ msgstr "Zablokuj ekran"
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Wyłącz/wyloguj się"
msgstr "Wyłącz komputer/wyloguj się"
#: js/ui/status/system.js:119
msgid "Log Out"
@ -2172,11 +2310,11 @@ msgstr "Błąd upoważnienia Thunderbolt"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nie można upoważnić urządzenia Thunderbolt: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Zmieniono głośność"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Głośność"
@ -2210,23 +2348,23 @@ msgstr "Tylko wbudowany"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Przeciągnięcie w górę odblokuje"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Kliknięcie lub naciśnięcie klawisza odblokuje"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Okno odblokowania"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Zaloguj jako inny użytkownik"
@ -2384,140 +2522,6 @@ msgstr "Hasło nie może być puste"
msgid "Authentication dialog was dismissed by the user"
msgstr "Okno uwierzytelniania zostało odrzucone przez użytkownika"
#: 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 "Rozszerzenia"
#: 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 "Zarządzanie rozszerzeniami GNOME"
#: 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 ""
"Ten program obsługuje aktualizowanie, konfigurowanie preferencji oraz "
"usuwanie i wyłączanie niechcianych rozszerzeń."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfiguracja rozszerzeń powłoki GNOME"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Usunąć rozszerzenie „%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 ""
"Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od "
"nowa"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Usuń"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Piotr Drąg <piotrdrag@gmail.com>, 2009-2020\n"
"Tomasz Dominikowski <dominikowski@gmail.com>, 2009\n"
"Wojciech Szczęsny <wszczesny@aviary.pl>, 2013\n"
"Aviary.pl <community-poland@mozilla.org>, 2009-2020"
#: subprojects/extensions-app/js/main.js:316
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d rozszerzenie zostanie zaktualizowane po następnym zalogowaniu."
msgstr[1] "%d rozszerzenia zostaną zaktualizowane po następnym zalogowaniu."
msgstr[2] "%d rozszerzeń zostanie zaktualizowanych po następnym zalogowaniu."
#: 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 "Opis"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Wersja"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Autor"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Witryna"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Usuń…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Pomoc"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "O programie"
#: 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 ""
"Witryna <a href=\"https://extensions.gnome.org\">extensions.gnome.org</a> "
"umożliwia wyszukiwanie i dodawanie rozszerzeń."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Ostrzeżenie"
#: 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 ""
"Rozszerzenia mogą powodować problemy z komputerem, w tym związane "
"z wydajnością. W przypadku występowania problemów zalecane jest wyłączenie "
"wszystkich rozszerzeń."
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Ręcznie zainstalowane"
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Wbudowane"
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Brak zainstalowanych rozszerzeń"
#: 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 ""
"Nie można wyświetlić listy zainstalowanych rozszerzeń. Proszę się upewnić, "
"że zalogowano w środowisku GNOME i spróbować ponownie."
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Wyloguj się…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2856,9 +2860,6 @@ msgstr[2] "%u wejść"
msgid "System Sounds"
msgstr "Dźwięki systemowe"
msgid "Extension Updates Ready"
msgstr "Aktualizacje rozszerzeń są gotowe"
msgctxt "button"
msgid "Boot Options"
msgstr "Opcje uruchamiania"

1812
po/ro.po

File diff suppressed because it is too large Load Diff

553
po/sk.po

File diff suppressed because it is too large Load Diff

1894
po/sl.po

File diff suppressed because it is too large Load Diff

161
po/sr.po
View File

@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-15 03:04+0000\n"
"PO-Revision-Date: 2020-05-17 21:22+0200\n"
"POT-Creation-Date: 2020-03-31 07:15+0000\n"
"PO-Revision-Date: 2020-04-02 21:42+0200\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: Serbian <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
@ -28,7 +28,7 @@ msgstr ""
#: data/50-gnome-shell-system.xml:6
msgid "System"
msgstr "Систем"
msgstr "Упишите тражено"
#: data/50-gnome-shell-system.xml:9
msgid "Show the notification list"
@ -391,7 +391,7 @@ msgid "Network Login"
msgstr "Мрежна пријава"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: subprojects/extensions-app/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Нешто је пошло наопако"
@ -418,7 +418,7 @@ msgstr "Посети матичну страну проширењ"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/endSessionDialog.js:374 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
@ -474,13 +474,13 @@ msgid "(or swipe finger)"
msgstr "(или превуците прст)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Искључи"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr ""
"power off;shutdown;искључи;угаси;гашење;isključi;ugasi;gašenje;iskljuci;"
@ -488,55 +488,55 @@ msgstr ""
"стоп"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Закључај екран"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "закључај екран"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Одјави ме"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr ""
"изађи;одјави се;одлогуј се;izađi;odjavi se;odloguj se;izadji;logout;log out;"
"sign off"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Обустави"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr ""
"suspend;sleep;обустави;спавај;суспендуј;obustavi;spavaj;suspenduj;suspend;"
"sleep"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Промени корисника"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "switch user;промени корисника;promeni korisnika;switch user"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lock orientation;screen;rotation;закључај окретање екрана;закључај "
@ -544,12 +544,12 @@ msgstr ""
"okretanje ekrana;екран;ekran;окретање;okretanje;lock orientation;screen;"
"rotation"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Откључај окретање екрана"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Закључај окретање екрана"
@ -726,53 +726,53 @@ msgstr "Забрани приступ"
msgid "Grant Access"
msgstr "Дозволи приступ"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:932
msgid "Unnamed Folder"
msgstr "Неименована фасцикла"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:955
msgid "Frequently used applications will appear here"
msgstr "Често коришћени програми ће се појавити овде"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1090
msgid "Frequent"
msgstr "Често"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1097
msgid "All"
msgstr "Све"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2473 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Отвори прозоре"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2493 js/ui/panel.js:82
msgid "New Window"
msgstr "Нови прозор"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2504
msgid "Launch using Dedicated Graphics Card"
msgstr "Покрени са намењеном графичком картицом"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2532 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Уклони из омиљених"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2538
msgid "Add to Favorites"
msgstr "Додај у омиљене"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2548 js/ui/panel.js:93
msgid "Show Details"
msgstr "Прикажи детаље"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "„%s“ је додат међу омиљене."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "„%s“ је уклоњен из омиљених."
@ -1145,18 +1145,18 @@ msgstr "Идите на мрежу за податке о временској
msgid "Weather information is currently unavailable"
msgstr "Подаци о временској прогнози тренутно нису доступни."
#: js/ui/endSessionDialog.js:37
#: js/ui/endSessionDialog.js:39
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Одјави корисника „%s“"
#: js/ui/endSessionDialog.js:38
#: js/ui/endSessionDialog.js:40
msgctxt "title"
msgid "Log Out"
msgstr "Одјави ме"
#: js/ui/endSessionDialog.js:40
#: js/ui/endSessionDialog.js:42
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
@ -1165,7 +1165,7 @@ msgstr[1] "%s ће бити одјављен за %d секунде."
msgstr[2] "%s ће бити одјављен за %d секунди."
msgstr[3] "%s ће бити одјављен за %d секунду."
#: js/ui/endSessionDialog.js:45
#: js/ui/endSessionDialog.js:47
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
@ -1174,22 +1174,22 @@ msgstr[1] "Бићете одјављени за %d секунде."
msgstr[2] "Бићете одјављени за %d секунди."
msgstr[3] "Бићете одјављени за %d секунду."
#: js/ui/endSessionDialog.js:51
#: js/ui/endSessionDialog.js:53
msgctxt "button"
msgid "Log Out"
msgstr "Одјави"
#: js/ui/endSessionDialog.js:56
#: js/ui/endSessionDialog.js:58
msgctxt "title"
msgid "Power Off"
msgstr "Искључи"
#: js/ui/endSessionDialog.js:57
#: js/ui/endSessionDialog.js:59
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Инсталирај освежења и искључи"
#: js/ui/endSessionDialog.js:59
#: js/ui/endSessionDialog.js:61
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
@ -1198,27 +1198,27 @@ msgstr[1] "Рачунар ће се искључити за %d секунде."
msgstr[2] "Рачунар ће се искључити за %d секунди."
msgstr[3] "Рачунар ће се искључити за %d секунду."
#: js/ui/endSessionDialog.js:63
#: js/ui/endSessionDialog.js:65
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Инсталирај освежења софтвера на чекању"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
#: js/ui/endSessionDialog.js:68 js/ui/endSessionDialog.js:84
msgctxt "button"
msgid "Restart"
msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:68
#: js/ui/endSessionDialog.js:70
msgctxt "button"
msgid "Power Off"
msgstr "Искључи"
#: js/ui/endSessionDialog.js:74
#: js/ui/endSessionDialog.js:76
msgctxt "title"
msgid "Restart"
msgstr "Поново покрени"
#: js/ui/endSessionDialog.js:76
#: js/ui/endSessionDialog.js:78
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
@ -1227,12 +1227,12 @@ msgstr[1] "Систем ће се поново покренути за %d сек
msgstr[2] "Систем ће се поново покренути за %d секунди."
msgstr[3] "Систем ће се поново покренути за %d секунду."
#: js/ui/endSessionDialog.js:89
#: js/ui/endSessionDialog.js:91
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Поново покрени и инсталирај ажурирања"
#: js/ui/endSessionDialog.js:91
#: js/ui/endSessionDialog.js:93
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1246,22 +1246,22 @@ msgstr[2] ""
msgstr[3] ""
"Систем ће се сам поново покренути и инсталирати ажурирања за %d секунду."
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
#: js/ui/endSessionDialog.js:99 js/ui/endSessionDialog.js:118
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Поново покрени и инсталирај"
#: js/ui/endSessionDialog.js:98
#: js/ui/endSessionDialog.js:100
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Инсталирај и искључи"
#: js/ui/endSessionDialog.js:99
#: js/ui/endSessionDialog.js:101
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Искључи након инсталирања освежења"
#: js/ui/endSessionDialog.js:106
#: js/ui/endSessionDialog.js:108
msgctxt "title"
msgid "Restart & Install Upgrade"
msgstr "Поново покрени и инсталирај надоградњу"
@ -1269,7 +1269,7 @@ msgstr "Поново покрени и инсталирај надоградњу
#. Translators: This is the text displayed for system upgrades in the
#. shut down dialog. First %s gets replaced with the distro name and
#. second %s with the distro version to upgrade to
#: js/ui/endSessionDialog.js:111
#: js/ui/endSessionDialog.js:113
#, javascript-format
msgid ""
"%s %s will be installed after restart. Upgrade installation can take a long "
@ -1279,26 +1279,26 @@ msgstr ""
"понекад може да потраје: проверите да ли сте направили резерву ваших важних "
"података и да ли је рачунар прикључен на мрежно напајање."
#: js/ui/endSessionDialog.js:259
#: js/ui/endSessionDialog.js:261
msgid "Running on battery power: Please plug in before installing updates."
msgstr "На батерији сте, прикључите мрежно напајање пре инсталирања ажурирања."
#: js/ui/endSessionDialog.js:268
#: js/ui/endSessionDialog.js:270
msgid "Some applications are busy or have unsaved work"
msgstr "Неки програми су заузети или имају несачувани рад"
#: js/ui/endSessionDialog.js:273
#: js/ui/endSessionDialog.js:275
msgid "Other users are logged in"
msgstr "Други корисници су пријављени"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (удаљено)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (љуска)"
@ -1316,11 +1316,11 @@ msgstr "Инсталирај проширење"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:233
msgid "Extension Updates Available"
msgstr "Доступна су ажурирања проширења"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:234
msgid "Extension updates are ready to be installed."
msgstr "Ажурирања проширења су доступна за инсталирање."
@ -1467,11 +1467,11 @@ msgstr "Прикажи код"
msgid "Web Page"
msgstr "Веб страница"
#: js/ui/main.js:279
#: js/ui/main.js:277
msgid "Logged in as a privileged user"
msgstr "Пријављен као повлашћен корисник"
#: js/ui/main.js:280
#: js/ui/main.js:278
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1479,23 +1479,23 @@ msgstr ""
"Покретање сесије под повлашћеним корисничким налогом треба избегавати из "
"безбедносних разлога. Ако је то могуће, пријавите се као обичан корисник."
#: js/ui/main.js:319
#: js/ui/main.js:317
msgid "Screen Lock disabled"
msgstr "Закључавање екрана онемогућено"
#: js/ui/main.js:320
#: js/ui/main.js:318
msgid "Screen Locking requires the GNOME display manager."
msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1551
msgid "System Information"
msgstr "Подаци о систему"
#: js/ui/mpris.js:204
#: js/ui/mpris.js:199
msgid "Unknown artist"
msgstr "Непознат извођач"
#: js/ui/mpris.js:214
#: js/ui/mpris.js:209
msgid "Unknown title"
msgstr "Непознат наслов"
@ -1567,16 +1567,16 @@ msgstr "Изађи"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Активности"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Систем"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Горња трака"
@ -1607,11 +1607,11 @@ msgstr "Гном мора да закључа екран"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Не могу да закључам"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Неки програм је блокирао закључавање"
@ -2273,7 +2273,7 @@ msgstr "Врати подешавања"
msgid "Keep Changes"
msgstr "Задржи измене"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2284,7 +2284,7 @@ msgstr[3] "Измене подешавања ће бити враћене за %
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2377,12 +2377,12 @@ msgstr "Користи нарочит режим, нпр. „gdm“ за екр
msgid "List possible modes"
msgstr "Исписује могуће режиме"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Непознат"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Нисам успео да покренем „%s“"
@ -2512,19 +2512,19 @@ msgstr ""
"Уколико приметите проблеме у раду, препоручујемо да онемогућите сва "
"проширења."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
#: subprojects/extensions-app/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Ручно инсталирана"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
#: subprojects/extensions-app/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Уграђена"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
#: subprojects/extensions-app/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Неинсталирана проширења"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
#: 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."
@ -2532,12 +2532,7 @@ msgstr ""
"Нажалост, није било могуће добавити списак инсталираних проширења. Проверите "
"да ли сте пријављени у Гном и пробајте поново."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
#| msgid "Extension Updates Available"
msgid "Extension Updates Ready"
msgstr "Спремна су ажурирања проширења"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
#: subprojects/extensions-app/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Одјава…"

431
po/sv.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-05-11 14:00+0000\n"
"PO-Revision-Date: 2020-05-12 00:34+0200\n"
"POT-Creation-Date: 2020-03-19 14:34+0000\n"
"PO-Revision-Date: 2020-03-19 21:39+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@ -387,12 +387,69 @@ msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
msgid "Network Login"
msgstr "Nätverksinloggning"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:36
#: subprojects/extensions-app/data/ui/extensions-window.ui:224
#: 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 "Tillägg"
#: js/extensionPrefs/data/metainfo/org.gnome.Extensions.metainfo.xml.in:6
#: js/extensionPrefs/js/main.js:243
msgid "Manage your GNOME Extensions"
msgstr "Hantera dina GNOME-tillägg"
#: 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 Tillägg hanterar uppdatering av tillägg, konfiguration av "
"inställningar för tillägg samt att ta bort eller inaktivera oönskade tillägg."
#: js/extensionPrefs/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurera tillägg för GNOME-skal"
#: js/extensionPrefs/js/main.js:164
#, javascript-format
msgid "Remove “%s”?"
msgstr "Ta bort ”%s”?"
#: js/extensionPrefs/js/main.js:165
msgid ""
"If you remove the extension, you need to return to download it if you want "
"to enable it again"
msgstr ""
"Om du tar bort tillägget kommer du att behöva återvända för att hämta det om "
"du vill aktivera det igen"
#: js/extensionPrefs/js/main.js:168 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:109
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:177 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Avbryt"
#: js/extensionPrefs/js/main.js:169
msgid "Remove"
msgstr "Ta bort"
#: js/extensionPrefs/js/main.js:241
msgid "translator-credits"
msgstr ""
"Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"\n"
"Skicka synpunkter på översättningen till\n"
"<tp-sv@listor.tp-sv.se>."
#: js/extensionPrefs/js/main.js:285
#: js/extensionPrefs/data/ui/extensions-window.ui:223
msgid "Somethings gone wrong"
msgstr "Något har gått fel"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:48
#: js/extensionPrefs/js/main.js:292
msgid ""
"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 "
@ -402,25 +459,104 @@ msgstr ""
"tillägg kan inte visas. Vi rekommenderar att du rapporterar problemet till "
"tilläggets skapare."
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:82
#: js/extensionPrefs/js/main.js:299
msgid "Technical Details"
msgstr "Tekniska detaljer"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:165
#: js/extensionPrefs/js/main.js:334
msgid "Copy Error"
msgstr "Kopiera fel"
#: js/extensionPrefs/js/main.js:361
msgid "Homepage"
msgstr "Webbsida"
#: js/dbusServices/extensions/ui/extension-prefs-dialog.ui:166
#: js/extensionPrefs/js/main.js:362
msgid "Visit extension homepage"
msgstr "Besök webbsida för tillägg"
#: js/gdm/authPrompt.js:135 js/ui/audioDeviceSelection.js:57
#: js/ui/components/networkAgent.js:109 js/ui/components/polkitAgent.js:139
#: js/ui/endSessionDialog.js:372 js/ui/extensionDownloader.js:181
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:913 subprojects/extensions-app/js/main.js:148
msgid "Cancel"
msgstr "Avbryt"
#: js/extensionPrefs/js/main.js:479
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "%d inlägg kommer att uppdateras vid nästa inloggning."
msgstr[1] "%d inlägg kommer att uppdateras vid nästa inloggning."
#: js/extensionPrefs/data/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
#: subprojects/extensions-tool/src/main.c:173
msgid "Description"
msgstr "Beskrivning"
#: js/extensionPrefs/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: js/extensionPrefs/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Upphovsman"
#: js/extensionPrefs/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webbplats"
#: js/extensionPrefs/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Ta bort…"
#: js/extensionPrefs/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hjälp"
#: js/extensionPrefs/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Om tillägg"
#: js/extensionPrefs/data/ui/extensions-window.ui:27
msgid ""
"To find and add extensions, visit <a href=\"https://extensions.gnome.org"
"\">extensions.gnome.org</a>."
msgstr ""
"För att hitta och lägga till tillägg, besök <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>."
#: js/extensionPrefs/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Varning"
#: js/extensionPrefs/data/ui/extensions-window.ui:46
msgid ""
"Extensions can cause system issues, including performance problems. If you "
"encounter problems with your system, it is recommended to disable all "
"extensions."
msgstr ""
"Tillägg kan orsaka systemproblem, även prestandaproblem. Om du stöter på "
"problem med ditt system så rekommenderas du att inaktivera alla tillägg."
#: js/extensionPrefs/data/ui/extensions-window.ui:134
msgid "Manually Installed"
msgstr "Manuellt installerade"
#: js/extensionPrefs/data/ui/extensions-window.ui:158
msgid "Built-In"
msgstr "Inbyggda"
#: js/extensionPrefs/data/ui/extensions-window.ui:199
msgid "No Installed Extensions"
msgstr "Inga installerade tillägg"
#: js/extensionPrefs/data/ui/extensions-window.ui:235
msgid ""
"Were very sorry, but it was not possible to get the list of installed "
"extensions. Make sure you are logged into GNOME and try again."
msgstr ""
"Vi är ledsna, men det var inte möjligt att erhålla listan över installerade "
"tillägg. Säkerställ att du är inloggad i GNOME och försök igen."
#: js/extensionPrefs/data/ui/extensions-window.ui:288
msgid "Log Out…"
msgstr "Logga ut…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:237 js/ui/components/networkAgent.js:204
@ -472,73 +608,73 @@ msgid "(or swipe finger)"
msgstr "(eller dra fingret)"
#. Translators: The name of the power-off action in search
#: js/misc/systemActions.js:93
#: js/misc/systemActions.js:89
msgctxt "search-result"
msgid "Power Off"
msgstr "Stäng av"
#. Translators: A list of keywords that match the power-off action, separated by semicolons
#: js/misc/systemActions.js:96
#: js/misc/systemActions.js:92
msgid "power off;shutdown;reboot;restart;halt;stop"
msgstr "stäng av;stäng ner;stäng;starta om;omstart;halt;stopp"
#. Translators: The name of the lock screen action in search
#: js/misc/systemActions.js:101
#: js/misc/systemActions.js:97
msgctxt "search-result"
msgid "Lock Screen"
msgstr "Lås skärm"
#. Translators: A list of keywords that match the lock screen action, separated by semicolons
#: js/misc/systemActions.js:104
#: js/misc/systemActions.js:100
msgid "lock screen"
msgstr "lås skärm"
#. Translators: The name of the logout action in search
#: js/misc/systemActions.js:109
#: js/misc/systemActions.js:105
msgctxt "search-result"
msgid "Log Out"
msgstr "Logga ut"
#. Translators: A list of keywords that match the logout action, separated by semicolons
#: js/misc/systemActions.js:112
#: js/misc/systemActions.js:108
msgid "logout;log out;sign off"
msgstr "utloggning;logga ut"
#. Translators: The name of the suspend action in search
#: js/misc/systemActions.js:117
#: js/misc/systemActions.js:113
msgctxt "search-result"
msgid "Suspend"
msgstr "Vänteläge"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:120
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "vänteläge;vila"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:125
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "Växla användare"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:128
#: js/misc/systemActions.js:124
msgid "switch user"
msgstr "växla användare"
#. Translators: A list of keywords that match the lock orientation action, separated by semicolons
#: js/misc/systemActions.js:135
#: js/misc/systemActions.js:131
msgid "lock orientation;unlock orientation;screen;rotation"
msgstr ""
"lås orientering;lås riktning;lås upp orientering;lås upp riktning;skärm;"
"rotation"
#: js/misc/systemActions.js:255
#: js/misc/systemActions.js:251
msgctxt "search-result"
msgid "Unlock Screen Rotation"
msgstr "Lås upp skärmrotation"
#: js/misc/systemActions.js:256
#: js/misc/systemActions.js:252
msgctxt "search-result"
msgid "Lock Screen Rotation"
msgstr "Lås skärmrotation"
@ -704,53 +840,53 @@ msgstr "Neka åtkomst"
msgid "Grant Access"
msgstr "Bevilja åtkomst"
#: js/ui/appDisplay.js:939
#: js/ui/appDisplay.js:898
msgid "Unnamed Folder"
msgstr "Namnlös mapp"
#: js/ui/appDisplay.js:962
#: js/ui/appDisplay.js:921
msgid "Frequently used applications will appear here"
msgstr "Ofta använda program kommer visas här"
#: js/ui/appDisplay.js:1097
#: js/ui/appDisplay.js:1056
msgid "Frequent"
msgstr "Ofta använda"
#: js/ui/appDisplay.js:1104
#: js/ui/appDisplay.js:1063
msgid "All"
msgstr "Alla"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2480 js/ui/panel.js:75
#: js/ui/appDisplay.js:2446 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Öppna fönster"
#: js/ui/appDisplay.js:2500 js/ui/panel.js:82
#: js/ui/appDisplay.js:2466 js/ui/panel.js:82
msgid "New Window"
msgstr "Nytt fönster"
#: js/ui/appDisplay.js:2511
#: js/ui/appDisplay.js:2477
msgid "Launch using Dedicated Graphics Card"
msgstr "Kör med diskret grafikkort"
#: js/ui/appDisplay.js:2539 js/ui/dash.js:239
#: js/ui/appDisplay.js:2505 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Ta bort från favoriter"
#: js/ui/appDisplay.js:2545
#: js/ui/appDisplay.js:2511
msgid "Add to Favorites"
msgstr "Lägg till som favorit"
#: js/ui/appDisplay.js:2555 js/ui/panel.js:93
#: js/ui/appDisplay.js:2521 js/ui/panel.js:93
msgid "Show Details"
msgstr "Visa detaljer"
#: js/ui/appFavorites.js:153
#: js/ui/appFavorites.js:152
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s har lagts till i dina favoriter."
#: js/ui/appFavorites.js:186
#: js/ui/appFavorites.js:185
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s har tagits bort från dina favoriter."
@ -771,7 +907,7 @@ msgstr "Hörlurar"
msgid "Headset"
msgstr "Mikrofonlur"
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:270
#: js/ui/audioDeviceSelection.js:68 js/ui/status/volume.js:269
msgid "Microphone"
msgstr "Mikrofon"
@ -912,7 +1048,7 @@ msgstr "Inga händelser"
msgid "Do Not Disturb"
msgstr "Stör ej"
#: js/ui/calendar.js:1176
#: js/ui/calendar.js:1171
msgid "Clear"
msgstr "Töm"
@ -1061,7 +1197,7 @@ msgstr "Tyvärr, det fungerade inte. Försök igen."
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:823
#: js/ui/components/telepathyClient.js:787
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s är nu känd som %s"
@ -1105,23 +1241,23 @@ msgstr "Lägg till världsklockor…"
msgid "World Clocks"
msgstr "Världsklockor"
#: js/ui/dateMenu.js:289
#: js/ui/dateMenu.js:279
msgid "Weather"
msgstr "Väder"
#: js/ui/dateMenu.js:418
#: js/ui/dateMenu.js:394
msgid "Select a location…"
msgstr "Välj en plats…"
#: js/ui/dateMenu.js:426
#: js/ui/dateMenu.js:407
msgid "Loading…"
msgstr "Läser in…"
#: js/ui/dateMenu.js:436
#: js/ui/dateMenu.js:417
msgid "Go online for weather information"
msgstr "Anslut till nätet för väderinformation"
#: js/ui/dateMenu.js:438
#: js/ui/dateMenu.js:419
msgid "Weather information is currently unavailable"
msgstr "Väderinformation är för närvarande inte tillgänglig"
@ -1264,35 +1400,35 @@ msgid "Other users are logged in"
msgstr "Andra användare är inloggade"
#. Translators: Remote here refers to a remote session, like a ssh login
#: js/ui/endSessionDialog.js:586
#: js/ui/endSessionDialog.js:588
#, javascript-format
msgid "%s (remote)"
msgstr "%s (fjärransluten)"
#. Translators: Console here refers to a tty like a VT console
#: js/ui/endSessionDialog.js:589
#: js/ui/endSessionDialog.js:591
#, javascript-format
msgid "%s (console)"
msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:185
#: js/ui/extensionDownloader.js:181
msgid "Install"
msgstr "Installera"
#: js/ui/extensionDownloader.js:191
#: js/ui/extensionDownloader.js:187
msgid "Install Extension"
msgstr "Installera tillägg"
#: js/ui/extensionDownloader.js:192
#: js/ui/extensionDownloader.js:188
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
#: js/ui/extensionSystem.js:252
#: js/ui/extensionSystem.js:228
msgid "Extension Updates Available"
msgstr "Uppdateringar för tillägg finns tillgängliga"
#: js/ui/extensionSystem.js:253
#: js/ui/extensionSystem.js:229
msgid "Extension updates are ready to be installed."
msgstr "Uppdateringar för tillägg är redo att installeras."
@ -1440,11 +1576,11 @@ msgstr "Visa källa"
msgid "Web Page"
msgstr "Webbsida"
#: js/ui/main.js:279
#: js/ui/main.js:274
msgid "Logged in as a privileged user"
msgstr "Inloggad som en privilegierad användare"
#: js/ui/main.js:280
#: js/ui/main.js:275
msgid ""
"Running a session as a privileged user should be avoided for security "
"reasons. If possible, you should log in as a normal user."
@ -1452,15 +1588,15 @@ msgstr ""
"Att köra en session som en privilegierad användare bör undvikas av "
"säkerhetsskäl. Om möjligt bör du logga in som en normal användare."
#: js/ui/main.js:319
#: js/ui/main.js:281
msgid "Screen Lock disabled"
msgstr "Skärmlås inaktiverat"
#: js/ui/main.js:320
#: js/ui/main.js:282
msgid "Screen Locking requires the GNOME display manager."
msgstr "Skärmlås kräver GNOME:s displayhanterare."
#: js/ui/messageTray.js:1548
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Systeminformation"
@ -1540,16 +1676,16 @@ msgstr "Avsluta"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: js/ui/panel.js:437
#: js/ui/panel.js:434
msgid "Activities"
msgstr "Aktiviteter"
#: js/ui/panel.js:716
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "System"
#: js/ui/panel.js:829
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Systemrad"
@ -1580,11 +1716,11 @@ msgstr "GNOME behöver låsa skärmen"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:244 js/ui/screenShield.js:601
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Kunde inte låsa"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:602
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program"
@ -1667,13 +1803,13 @@ msgid "The PIM must be a number or empty."
msgstr "PIM måste vara ett tal eller tomt."
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:465
#: js/ui/shellMountOperation.js:469
#, javascript-format
msgid "Unable to start %s"
msgstr "Kunde inte starta %s"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:467
#: js/ui/shellMountOperation.js:471
#, javascript-format
msgid "Couldnt find the %s application"
msgstr "Kunde inte hitta programmet %s"
@ -2147,11 +2283,11 @@ msgstr "Thunderbolt-auktoriseringsfel"
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s"
#: js/ui/status/volume.js:151
#: js/ui/status/volume.js:150
msgid "Volume changed"
msgstr "Volymen ändrades"
#: js/ui/status/volume.js:222
#: js/ui/status/volume.js:221
msgid "Volume"
msgstr "Volym"
@ -2185,23 +2321,23 @@ msgstr "Inbyggd skärm"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:371
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:377
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Svep uppåt för att låsa upp"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Klicka eller tryck på en tangent för att låsa upp"
#: js/ui/unlockDialog.js:550
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Lås upp fönster"
#: js/ui/unlockDialog.js:559
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Logga in som en annan användare"
@ -2234,7 +2370,7 @@ msgstr "Återställ inställningar"
msgid "Keep Changes"
msgstr "Behåll ändringar"
#: js/ui/windowManager.js:86
#: js/ui/windowManager.js:85
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
@ -2243,7 +2379,7 @@ msgstr[1] "Inställningarna kommer återställas om %d sekunder"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:546
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@ -2336,12 +2472,12 @@ msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm"
msgid "List possible modes"
msgstr "Lista möjliga lägen"
#: src/shell-app.c:286
#: src/shell-app.c:279
msgctxt "program"
msgid "Unknown"
msgstr "Okänt"
#: src/shell-app.c:537
#: src/shell-app.c:530
#, c-format
msgid "Failed to launch “%s”"
msgstr "Misslyckades med att starta ”%s”"
@ -2358,142 +2494,6 @@ msgstr "Lösenordet får inte vara blankt"
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen stängdes av användaren"
#: 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 "Tillägg"
#: 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 "Hantera dina GNOME-tillägg"
#: 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 Tillägg hanterar uppdatering av tillägg, konfiguration av "
"inställningar för tillägg samt att ta bort eller inaktivera oönskade tillägg."
#: subprojects/extensions-app/data/org.gnome.Extensions.desktop.in.in:7
msgid "Configure GNOME Shell Extensions"
msgstr "Konfigurera tillägg för GNOME-skal"
#: subprojects/extensions-app/js/main.js:144
#, javascript-format
msgid "Remove “%s”?"
msgstr "Ta bort ”%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 ""
"Om du tar bort tillägget kommer du att behöva återvända för att hämta det om "
"du vill aktivera det igen"
#: subprojects/extensions-app/js/main.js:149
msgid "Remove"
msgstr "Ta bort"
#: subprojects/extensions-app/js/main.js:181
msgid "translator-credits"
msgstr ""
"Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"\n"
"Skicka synpunkter på översättningen till\n"
"<tp-sv@listor.tp-sv.se>."
#: 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 inlägg kommer att uppdateras vid nästa inloggning."
msgstr[1] "%d inlägg kommer att uppdateras vid nästa inloggning."
#: 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 "Beskrivning"
#: subprojects/extensions-app/data/ui/extension-row.ui:123
#: subprojects/extensions-tool/src/main.c:185
msgid "Version"
msgstr "Version"
#: subprojects/extensions-app/data/ui/extension-row.ui:151
msgid "Author"
msgstr "Upphovsman"
#: subprojects/extensions-app/data/ui/extension-row.ui:175
msgid "Website"
msgstr "Webbplats"
#: subprojects/extensions-app/data/ui/extension-row.ui:192
msgid "Remove…"
msgstr "Ta bort…"
#: subprojects/extensions-app/data/ui/extensions-window.ui:8
msgid "Help"
msgstr "Hjälp"
#: subprojects/extensions-app/data/ui/extensions-window.ui:12
msgid "About Extensions"
msgstr "Om tillägg"
#: 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 ""
"För att hitta och lägga till tillägg, besök <a href=\"https://extensions."
"gnome.org\">extensions.gnome.org</a>."
#: subprojects/extensions-app/data/ui/extensions-window.ui:35
msgid "Warning"
msgstr "Varning"
#: 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 ""
"Tillägg kan orsaka systemproblem, även prestandaproblem. Om du stöter på "
"problem med ditt system så rekommenderas du att inaktivera alla tillägg."
#: subprojects/extensions-app/data/ui/extensions-window.ui:135
msgid "Manually Installed"
msgstr "Manuellt installerade"
#: subprojects/extensions-app/data/ui/extensions-window.ui:159
msgid "Built-In"
msgstr "Inbyggda"
#: subprojects/extensions-app/data/ui/extensions-window.ui:200
msgid "No Installed Extensions"
msgstr "Inga installerade tillägg"
#: subprojects/extensions-app/data/ui/extensions-window.ui:236
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 ""
"Vi är ledsna, men det var inte möjligt att erhålla listan över installerade "
"tillägg. Säkerställ att du är inloggad i GNOME och försök igen."
#: subprojects/extensions-app/data/ui/extensions-window.ui:273
msgid "Extension Updates Ready"
msgstr "Uppdateringar för tillägg är redo"
#: subprojects/extensions-app/data/ui/extensions-window.ui:289
msgid "Log Out…"
msgstr "Logga ut…"
#. Translators: a file path to an extension directory
#: subprojects/extensions-tool/src/command-create.c:125
#, c-format
@ -2831,9 +2831,6 @@ msgstr[1] "%u ingångar"
msgid "System Sounds"
msgstr "Systemljud"
#~ msgid "Copy Error"
#~ msgstr "Kopiera fel"
#~ msgid "Username…"
#~ msgstr "Användarnamn…"

592
po/tr.po

File diff suppressed because it is too large Load Diff

570
po/uk.po

File diff suppressed because it is too large Load Diff

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