Compare commits

...

128 Commits

Author SHA1 Message Date
Milan Crha
13ddf1eb83 calendar-server: Add 'Dismiss' button and application action
- adds 'Dismiss' button to the notification
- introduces org.gnome.Shell.CalendarServer.desktop.in.in to benefit from GNotification API

Related to https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1064
2020-03-03 15:58:13 +01:00
Milan Crha
15ab33a11a Move functionality from evolution-alarm-notify to gnome-shell-calendar-server
Closes https://gitlab.gnome.org/GNOME/gnome-shell/issues/155
2020-03-03 12:00:27 +01:00
Milo Casagrande
5e04f6eb23 Update Italian translation 2020-03-03 08:09:27 +00:00
Florian Müllner
0dd171a7c8 environment: Fix date conversion
This is a regression from commit 06b690ff21:

GLib.DateTime.new() expects the full four-digit year, so passing
the abbreviated year from Date() will result in a bogus datetime.

Today is *not* Saturday March 2nd, 120 ...

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1061
2020-03-02 13:54:23 +01:00
Aurimas Černius
837fbbf417 Updated Lithuanian translation 2020-03-01 20:41:32 +02:00
Goran Vidović
d7b61e7281 Update Croatian translation 2020-03-01 15:47:17 +00:00
Aman Alam
073da0806c Update Punjabi translation 2020-03-01 09:18:00 +00:00
Florian Müllner
ff54b0d35e Bump version to 3.35.92
Update NEWS.
2020-03-01 02:26:26 +01:00
Florian Müllner
ff2a736193 unlockDialog: Transition switch-user button with prompt
We ended up always showing the switch-user button on the lock screen,
as showing and hiding it with the prompt was too visually distracting.

But now that we have a fancy transition in place, we can easily extend
it to the switch-user button as well.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1029
2020-03-01 01:21:04 +00:00
Florian Müllner
c6cf81f28b unlockDialog: Simplify sensitivity handling
We only call _updateSensitivity() to make elements sensitive, and
nothing ever touches the sensitivity of the switch-user button; so
just call the corresponding authPrompt method directly, which is the
only bit that has an actual effect.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1029
2020-03-01 01:21:04 +00:00
Carlos Garnacho
104d1ae151 windowManager: Fix shutdown signal connection
This signal relied on mutter changes that were withdrawn
and it was unintended to use here. Restore the usage of
good old MetaDisplay::x11-display-closing.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1056
2020-02-29 23:47:46 +01:00
Carlos Garnacho
12e14884ef windowManager: Implement MetaDisplay::init-xserver hook
We do spawn gsd-xsettings, and watch its name before notifying on the
given task, so the mutter bits can proceed with X11 startup.

One notable change is that we only start gsd-xsettings, instead of the
generic gnome-session-x11-services target. We do so as we have to wait
on a dbus name to appear in order to deem the initialization done, and
making it all depend on gsd-xsettings seems tidier.

Less notably, we also use ::shutdown-xserver to shutdown the related
services. Its major benefit is that it'd allow us to ensure the olderly
shutdown of those services, but it's unused at the moment.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/836
2020-02-29 18:58:55 +01:00
Carlos Garnacho
3c4a5a67e2 ibusManager: Use setup X11 display for ibus-x11
(re)spawning ibus to get ibus-x11 will be part atm of Xwayland
initialization process. For it to be set up before the client
it needs using the GNOME_SETUP_DISPLAY.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/836
2020-02-29 18:58:47 +01:00
sicklylife
e4f9efc134 Update Japanese translation 2020-02-29 16:06:10 +00:00
sicklylife
bd665df321 Update Japanese translation 2020-02-29 15:54:06 +00:00
Daniel van Vugt
bd197789c1 js/ui: Subscribe touchpad gesture handlers to only touchpad events
The touchpad gesture handlers were receiving all events, all the time.
This meant that even mouse movements were getting translated into
JavaScript calls and then discarded by the handlers, which wasted CPU.

Now we subscribe the touchpad gesture handlers to only touchpad events.

Prequisite: https://gitlab.gnome.org/GNOME/mutter/merge_requests/1000

Closes: https://gitlab.gnome.org/GNOME/mutter/issues/283

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/925
2020-02-29 13:39:17 +00:00
Piotr Drąg
daff787a62 Update Polish translation 2020-02-29 13:09:46 +01:00
Danial Behzadi
ff1343611f Update Persian translation 2020-02-29 02:24:13 +00:00
Jonas Dreßler
da05c85f3c windowManager: Show window resizing clone on "size-changed"
When a window is being resized by the compositor, with Wayland the
compositor first asks the window to change its size and emits the
"size-change" signal, and then emits the "size-changed" signal after
the window acknowledges the new size. To show a fancy resize animation,
gnome-shell creates a "screenshot" of the resizing window on the
"size-change" signal, and later animates that "screenshot" to the new
window size on the "size-changed" signal.

Now if a client is not responding to our requests asking it to change
its size, we get a "size-change" signal and start showing the
window-clone, but never a "size-changed" signal, animating and hiding
the clone again. This causes a so called "ghost window" that is shown
above everything else and never disappears again.

To fix that, start showing the window clone once we get the
"size-changed" signal instead of the "size-change" signal. This makes
sure the window actually updates its size and the clone is going to be
hidden again.

Fixes https://gitlab.gnome.org/GNOME/mutter/issues/1078

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1055
2020-02-28 18:08:24 +00:00
Alan Mortensen
648179a2db Updated Danish translation 2020-02-28 14:01:26 +01:00
Changwoo Ryu
a5ad81d923 Update Korean translation 2020-02-28 09:00:39 +00:00
Changwoo Ryu
abfa61abc5 Update Korean translation 2020-02-28 07:19:46 +00:00
Kukuh Syafaat
abdfaeb444 Update Indonesian translation 2020-02-28 02:12:33 +00:00
Florian Müllner
06b690ff21 environment: reduce calls to g_time_zone_new_local()
Creating a new GTimeZone for the local timezone can be quite expensive if
done repeatedly. It requires an open(), mmap(), and parsing of
/etc/localtime.

This patch was provided by Florian, and I've tested it as far back as
3.28.4 to ensure that we are really reducing the number of open() calls
on the compositor thread.

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

Signed-off-by: Christian Hergert <chergert@redhat.com>
2020-02-27 13:48:26 -08:00
Christian Hergert
d0226c7897 shell: fix typo in comment
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1050
2020-02-26 19:00:05 -08:00
Christian Hergert
19e084036a global: force fsync() to worker thread when saving state
The g_file_replace_contents_async() API can potentially call fsync() from
the thread calling into it upon completion. This can have disasterous
effects when run from the compositor main thread such as complete stalls.

This is a followup to 86a00b6872 which
assumed (like the rest of us) that the fsync() would be performed on the
thread that was doing the I/O operations.

You can verify this with an strace -e fsync and cause terminal to display
a command completed notification (eg: from a backdrop window).

This also fixes a lifecycle bug for the variant, as
g_file_replace_contents_async() does not copy the data during the operation
as that is the responsibility of the caller. Instead, we just use a GBytes
variant and reference the variant there.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1050
2020-02-26 15:33:30 -08:00
Florian Müllner
a7d974e670 ci: Prohibit template strings in translatable files
Sadly, xgettext's dealing with template strings is abysimal, so we
had to stop using them in files with translatable strings.

Make sure we don't accidentally sneak in template strings again(*)
and enforce that rule in a CI job.

(*) easy "mistake", considering how much nicer they are than
    String.prototype.format()

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1016
2020-02-26 22:53:00 +00:00
Florian Müllner
7a0c866d97 ci: Check that files with translatable strings are listed in POTFILES
Also known as "Piotr Drąg Bot".

We will soon make sure that files processed by xgettext don't use template
strings. To make that check as adequate as possible, ensure that no source
code files are missing from POTFILES.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1016
2020-02-26 22:53:00 +00:00
Florian Müllner
cc3f439323 calendar-server: Remove unused defines
The file doesn't contain any translatable strings, so the i18n
macros are unused.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1016
2020-02-26 22:53:00 +00:00
Jonas Dreßler
51b7eb7a2b altTab: Don't fade out thumbnails on destroy
The thumbnails actor `this._thumbnails` has already been destroyed when
calling `_destroyThumbnails()` from the `destroy` signal handler because
it is a child actor of the AppSwitcherPopup. So stop destroying the
thumbnails separately (fading them out inside a destroy handler wouldn't
make sense anyway).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
023859ee4b switcherPopup: Use correct scroll-direction property
The correct property for the scroll-direction with scrolling events is
`direction`, no `scroll_direction`. This fixes scrolling in the alt-tab
popup, which broke with the actorization changes.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
09acd0a3db switcherPopup: Always return true when the popup finished early
When the switcherPopup was initiated successfully, we return true,
otherwise the WindowManager will try to destroy it. Since an early
release of the keystroke will also switch to another application and
close the switcher just fine, we should return true to indicate success
here.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
bf213af362 switcherPopup: Lookup index of items when hovering or clicking
Right now the index that gets selected on click and motion events is set
when connecting the event inside the addItem function. If items are
added or removed (for example when an application is closed by pressing
"q"), this index isn't valid anymore and has to be updated.

To fix this, use the items themselves instead of the index as arguments
for the event handlers and lookup the index of the item inside the event
handler.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
bfb0bc7a29 switcherPopup: Implement functions to add and remove accessible states
Set the accessible states of the switcherList items by calling a
function instead of manipulating class-internal variables from outside
the class, which is considered bad practice.

The check whether the item at `_selectedIndex` exists can also be
removed since we always select a new index after an item was removed
(i.e. an app was closed) and destroy the alt-tab switcher right away if
no more items exist (see `SwitcherPopup._itemRemovedHandler`).

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
c00f1d040b switcherPopup: Select correct item after removal of item
If an item was removed, make sure the selected item is still selected or
select the last one if the selected item was removed.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
ba7cfff90c switcherPopup: Disable hover on scrolling events
Just like with keyboard events, disable hover on scrolling events. Mouse
movements should not mess up the selection while scrolling.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
548c41d164 switcherPopup: Swap Math.max and Math.min in _scrollToLeft
Limit the minimum and maximum value to scroll to inside the box to 0 and
the upper limit, for some reason this was done right in _scrollToRight,
but not in _scrollToLeft.

This fixes the behavior of scrolling to the left: Before, scrolling one
item to the left moved the view to the first element of the list (this
can make the selected element invisible in large lists). Instead, scroll
one item to the left, just like scrolling to the right works.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
172d21cf50 switcherPopup: Use local variable for index in scrolling functions
Make sure the index that's being scrolled to doesn't change while the
scrolling animation is running by using an argument instead of the
this._highlighed class scope variable.

This fixes wrongly shown arrows when selecting new elements faster than
the scrolling animation takes for one index. The check run to disable
the arrow might be checking against a newer index than the one at the
start of the animation which results in the arrow not getting hidden
even if no more scrolling is possible.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Jonas Dreßler
5c8f3a65f7 switcherPopup: Use this._highlighted to check for reentrancy
Since this._highlighted is always set to the currently highlighted
index, there's no need to save the index to a separate variable. This
obviously depends on getting the new item highlighted as a result of the
item-entered event.

This fixes bugs in situations where the highlighted element changes
after an event that is not calling _onItemEnter, for example after
scrolling or pressing a key. In those cases the _currentItemEntered
variable wouldn't be updated and the old item couldn't be entered
anymore without entering another one before.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/167
2020-02-26 22:46:51 +00:00
Danial Behzadi
07369125b6 Update Persian translation 2020-02-26 21:06:04 +00:00
Jordi Mas
59cae58f25 Update Catalan translation 2020-02-26 21:58:52 +01:00
Fran Dieguez
e07b9a75b5 Update Galician translation 2020-02-26 20:55:17 +00:00
Florian Müllner
19fc7c4d31 loginDialog: Do not expand "Not listed" button
Visually the button is just an interactive label, so having the
interactive area extend to the empty space next to the label
is surprising.

Instead, left-align the whole button rather than just the label
inside, so the clickable area corresponds to the visible one.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1046
2020-02-26 19:46:50 +00:00
Florian Müllner
d66f5ab3c6 mpris: Disallow media section on login screen
The 'gdm' user is not going to run a media player, so there is no
point in allowing the corresponding section on the login screen.

All other sections are already disabled, so this is the only reason why
we end up with the message list instead of only showing the calendar.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2241
2020-02-26 17:45:33 +00:00
Daniel van Vugt
c773c8c162 Revert "js/ui: Use Clutter.OffscreenRedirect.ON_IDLE"
This reverts commit c0c027c608. Because for
some reason animating external opacity and position is still incurring
internal repaints, which disables offscreening and makes fading of
overlapping actors look wrong. `ON_IDLE` should be fixed in mutter before
it is used (in boxpointer at least) again.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2270
2020-02-26 11:54:54 +08:00
Florian Müllner
9a3ed0056e ci: Adjust URL check
While the old merge request URLs still work, gitlab recently started
including an additional /- for merge requests.

Adjust the regex to account for that, so that simply copying the URL
from gitlab works again.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1048
2020-02-26 00:24:14 +01:00
Jonas Dreßler
b3999e4078 overview: Hide the overview on session mode hasOverview changes
If the sessionMode does not allow to show the overview, we should also
hide an already visible overview.

This fixes a bug where, if the lockscreen was shown while the overview
was visible, the Ctrl+Alt+Tab popup would allow navigating inside the
overview because the overview actor is still mapped.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1043
2020-02-25 20:10:22 +01:00
Philippe Troin
d0a587d42f panel: Only consider St.Widgets for corner buttons
We cannot syncronize styles with plain Clutter.Actors, so don't return
them when looking for corner buttons.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1047
2020-02-25 18:32:30 +00:00
Florian Müllner
2bb8e1be9b environment: Handle reversed transition with 0 duration
If a transition is reversed, the final property values will be the
same as before the transition. However this currently only works
correctly when we actually use a transition; to fix this with a
duration of 0, simply skip the set() call when the transition is
reversed.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1042
2020-02-25 18:08:47 +00:00
Sam Hewitt
967a6ae44d sass: use relative values for user-icon
https://gitlab.gnome.org/GNOME/gnome-shell/issues/2242
2020-02-25 17:56:19 +01:00
Florian Müllner
89ca5e71d4 theme: Fix horizontal default user widget
Commit 6c6c89c634 added a pill around the default avatar, but
assumed the sizes from the vertical widget used on the lock screen.

In order to fix the horizontal widget on the login screen, move the
size-specific bits to the corresponding .horizontal and .vertical
sections, and half the sizes for the former (which corelates with
the icon sizes).

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2242
2020-02-25 17:56:19 +01:00
Jonas Dreßler
4c4d23ed83 dateMenu: Sync initial state of the message indicator
While the unread messages indicator is updated when starting a new
session because we call _onSourceAdded() on existing sources, we should
also update the do-not-disturb setting which might still be enabled.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1037
2020-02-25 16:47:29 +01:00
Jonas Dreßler
7173ec1df7 dateMenu: Remove an unnecessary change for RTL layouts
Calculating 1 - 0.5 is rather useless if the value was 0.5 before...

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1037
2020-02-25 16:47:24 +01:00
Jonas Dreßler
bc465ab006 theme: Hide panel underline under the do not disturb icon
Hide the focused/active indicator of the panel underneath the
do-not-disturb icon.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1037
2020-02-25 16:47:17 +01:00
Jonas Dreßler
fe4973b585 theme/message-list: Increase spacing for do-not-disturb enable-button
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1037
2020-02-25 16:47:12 +01:00
Jakub Steiner
0d0384ebb1 theme: sync toggle-off-dark with gtk
- improve contrast

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2157
2020-02-25 13:47:01 +01:00
Balázs Úr
27ef8eb9a0 Update Hungarian translation 2020-02-25 06:26:27 +00:00
Christian Hergert
24a3fd4c4d st: implement ClutterActorClass.has_accessible()
Implement ClutterActorClass.has_accessible() to ensure that CallyActor does not
recreate accessibles during the removal/destruction of an actor.  This relies
on GNOME/mutter!1083 for the ClutterActorClass.has_accessible virtual function.

Running GNOME Shell for about 30 seconds results in a difference between
the two runs.

Before:

    ALLOCATED      TOTAL    FUNCTION
[   52.2 KiB] [   0.05%]    cally_actor_real_remove_actor
[   36.3 KiB] [   0.04%]      st_widget_get_accessible
[    9.8 KiB] [   0.01%]      atk_gobject_accessible_for_object
[    3.2 KiB] [   0.00%]      g_signal_emit_by_name
[    2.9 KiB] [   0.00%]      clutter_actor_get_children

After:

    ALLOCATED      TOTAL    FUNCTION
[    1.8 KiB] [   0.00%]    cally_actor_real_remove_actor
[    1.1 KiB] [   0.00%]      clutter_actor_get_children
[  659 bytes] [   0.00%]      g_signal_emit_by_name

Obviously 50KiB isn't a huge savings.

Although fixing things to avoid re-entrancy on destruction can be very useful
from a correctness standpoint.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/2263
2020-02-24 22:20:26 +00:00
Alan Mortensen
d9f8e04478 Updated Danish translation 2020-02-24 22:40:32 +01:00
Emin Tufan Çetin
b9f6032ddd Update Turkish translation 2020-02-24 15:08:21 +00:00
Florian Müllner
d62391c8f1 unlockDialog: Set accessible name of icon-only buttons
We turned both the auth prompt's cancel button and the switch user
button into icon buttons now, which means they are completely cryptic
when using a screen reader.

Just use the previously used labels as accessible names, which has the
nice side effect of lowering the impact of the string freeze break.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
2020-02-24 12:29:44 +00:00
Florian Müllner
ab24ee7a7e authPrompt: Don't focus hidden cancelButton
The button is hidden on the lock screen, so it shouldn't be allowed to
activate it, be it via click or keyboard. The latter is still possible
by keynaving to the button and hitting space/enter. Fix that by making
the button unfocusable when we make it unreactive.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
2020-02-24 12:29:44 +00:00
Florian Müllner
c52fd9373c unlockDialog: Turn mainBox into an St.Widget
This is the container that contains the elements that are interesting
for keynav, so it must be aware of focus-chain and -navigation.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
2020-02-24 12:29:44 +00:00
Florian Müllner
1249655d0a unlockDialog: Don't make dialog focusable
There is little point in focusing the dialog itself, we want keynav
to navigate inside instead and navigate between focusable children.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
2020-02-24 12:29:44 +00:00
Florian Müllner
120b907c33 shell/stack: Ignore hidden children for focus navigation
ShellStack implements custom focus navigation, and will only ever
navigate into its top-most child. That kind of makes sense as long
as that child is actually visible, but not when it is hidden.

Descend into the stack to look for a focusable child instead.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2210
2020-02-24 12:29:44 +00:00
Jonas Dreßler
3848513cf4 magnifier: Use inhibit-unfocus API to keep wayland focus while hidden
Since commit mutter/a2a8f0cda we force the focus surface of the
meta-wayland-pointer to NULL while the pointer is hidden. This
introduced an issue with the magnifier, where we use
`set_pointer_visible` to hide the real cursor and show our own cursor at
the correct position: Because the meta-wayland-pointer is still used to
communicate with Wayland clients, the UI of the windows will not respond
to mouse movement anymore as soon as the real cursor is hidden.

To fix this, use the newly added clutter_seat_inhibit_unfocus() API to
temporarily disable unsetting the focus-surface while the magnifier is
hiding the system cursor.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/993
2020-02-24 10:31:08 +00:00
Jonas Dreßler
725c72e020 magnifier: Use own showSystemCursor() instead of set_pointer_visible()
We already have our own function to show the system cursor, use it!

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/993
2020-02-24 10:31:08 +00:00
Bruce Cowan
0b113094b4 Update British English translation 2020-02-23 12:50:32 +00:00
Florian Müllner
3633e1feca shellEntry: Restore natural-height-set instead of forcing it
If we are transitioning the label from 0 to its natural height, we
must set natural-height-set again after querying the preferred height,
otherwise Clutter would skip the transition.

However when transitioning in the opposite direction, setting the
property to true can go horribly wrong:
If the actor hasn't been allocated before, it will store a fixed
natural height of 0. But as there is no fixed min-height, we can
end up with min-height > natural-height, which is a fatal error.

(This isn't an issue when *actually* setting a fixed height, as
that will set both natural and minimum height)

So instead of always setting natural-height-set to true, restore
its previous value to fix the issue.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2255
2020-02-22 16:58:01 +00:00
Florian Müllner
4759197200 util: Don't wiggle when animations are disabled
repeatCount and autoReverse don't play well with animations disabled:
They cause password entries to wiggle themselves off-screen (by ending
up with some off-scale translation-x value).

While we should handle this more gracefully in the transition helpers,
it also makes sense to handle the case directly in wiggle(): As it
uses a chain of three transitions, we would still end up with a crude
one-frame-per-transition wiggle "animation".

Instead, do no animation at all as you would expect when animations are
disabled.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2236
2020-02-22 16:38:43 +00:00
Jor Teron
1d39afabdc Update Karbi translation 2020-02-22 16:15:07 +00:00
Jiri Grönroos
483607311c Update Finnish translation 2020-02-22 15:35:39 +00:00
Charles Monzat
d90a79fe7a Update French translation 2020-02-22 14:12:42 +00:00
Changwoo Ryu
87ed0118d1 Update Korean translation 2020-02-22 10:46:09 +00:00
sicklylife
1f5eccbc70 Update Japanese translation 2020-02-21 22:13:34 +00:00
sicklylife
dac2274993 Update Japanese translation 2020-02-21 17:52:09 +00:00
sicklylife
39db86e755 Update Japanese translation 2020-02-21 17:49:02 +00:00
Jonas Dreßler
255627bd69 layout: Show and hide keyboard using translation_y
ClutterActors anchor-y property is deprecated, which means we get a
warning when animating it, so use the translation property instead to
show or hide the osk.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1039
2020-02-21 12:59:21 +00:00
Florian Müllner
0afac36713 unlockDialog: Use "normal" background
Now that we apply a strong blur effect to the background, it doesn't
make too much sense to use a separate lock-screen background: It will
be mostly unrecognizable anyway.

The alternative would be to turn off the blur effect if a different
background is used (or have a hidden setting for that), but that would
then imply that we must keep the contents readable without blur.

Let's avoid that rabbit hole and just re-use the regular background.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1001
2020-02-21 12:34:37 +00:00
Daniel van Vugt
c0c027c608 js/ui: Use Clutter.OffscreenRedirect.ON_IDLE
To bypass offscreening in cases where continuous animation is happening.
Offscreening is slower in such cases so this reduces the render time of
animations within offscreenable actors.

On an i7-7700 this reduces the render time of boxpointers for example by
25-30%.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1025
2020-02-21 12:19:15 +00:00
Марко Костић
e938986a74 Update Serbian translation 2020-02-21 09:51:32 +00:00
Jonas Ådahl
32fa060a62 closeDialog: Make dialog inactive while fading out
Otherwise the user might click Kill, which would crash if the fade-out
was triggered because a Wayland window was closed.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1032
2020-02-21 08:11:57 +00:00
Daniel van Vugt
38da479ee8 slider: Calculate handle position in whole pixel units
`-slider-handle-radius` is a floating point value and even in the default
theme it's not a whole number. Regardless of the fractional part that's
still going to occupy a whole extra pixel with antialiasing. So make room
for it. Otherwise it looks clipped, which it is by the Cairo context of
its `StDrawingArea`.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/1569
2020-02-21 11:29:09 +08:00
Florian Müllner
574ab04e9f st/texture-cache: Heap-allocate saved scales
Otherwise we end up reading random junk later, with the result that
we fail to evict textures with scaled keys.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2244
2020-02-20 23:06:58 +01:00
Florian Müllner
ee6635282c status/keyboard: Check for monkey-patched property before using it
This avoid another "reference to undefined property" warning.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1035
2020-02-20 19:08:47 +00:00
Florian Müllner
ff39b3274b authPrompt: Initialize property in _init()
This avoid a "reference to undefined property" warning when using
it in a comparison.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1035
2020-02-20 19:08:47 +00:00
sicklylife
2c1d654035 Update Japanese translation 2020-02-20 18:04:30 +00:00
sicklylife
1bdb065ffa Update Japanese translation 2020-02-20 18:01:09 +00:00
Carlos Garnacho
57669bca1b keyboard: Specify symbolic icons to use in default keys
The style classes are not removed yet, might make sense to do that
if they don't bring anything wrt theming.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2214
2020-02-20 11:34:07 +00:00
Carlos Garnacho
e647ceb4d1 theme: Update theming of special OSK keys
The icons in those are no longer assets, but symbolic icons.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2214
2020-02-20 11:34:07 +00:00
Carlos Garnacho
4d9e84f6f7 data: Add OSK assets as symbolic icons
Courtesy of jimmac/snwh

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2214
2020-02-20 11:34:07 +00:00
Carlos Garnacho
5171bdd45f keyboard: Add support for setting OSK keys with icons
Unused at the moment, but add the plumbing so that default key
definitions may specify symbolic icons that will be shown instead
of the text.

This is intended to replace the use of CSS and background-image
to handle those buttons with an icon.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2214
2020-02-20 11:34:07 +00:00
Jonas Ådahl
9ab0071aa5 introspect: Add AnimationsEnabled property
While the gsetting is available for all who needs it, the Shell might
override it given various hueristics. Expose the decision made by the
Shell via a new property.

Intended to be used by gsd-xsettings as well as xdg-desktop-portal-gtk.

This also add a version property to the API, so that semi external
services (xdg-desktop-portal-gtk) can detect what API is expected to be
present.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
cf39b2db87 introspect: Rename variable
It was too generic, and would conflict with a StSettings variable.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
8a1c0f3a42 main: Inhibit animations when there is a remote desktop session
If a remote desktop session asks for animations to be disabled, inhibit
animations while the session is active.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
4b42879a2c main: Inhibit animations if X server advertises VNC-EXTENSION
This was previously done by gsd-xsettings to disable animations when
running in Xvnc.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
394121f77d main: Inhibit animations when software rendered
This was previously decided by gsd-xsettings.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
f4f8982825 st/settings: Add API to inhibit animations
There may be situations where we shouldn't enable animations. Make it
possible for the Shell to decide when there are such situations and in
when needed inhibit animations.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
7220f6d25b shell-util: Add API to check for X11 extensions
Will be used to disable animations when running inside Xvnc. This was
done in gsd-xsettings before.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Jonas Ådahl
059fb5c7cb introspect: Add helper to check method call permission
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/757
2020-02-20 11:14:55 +00:00
Rafael Fontenelle
0057c19bfc Update Brazilian Portuguese translation 2020-02-20 10:54:02 +00:00
Asier Sarasua Garmendia
05409b949f Update Basque translation 2020-02-19 19:21:09 +00:00
Florian Müllner
affbec73ef extensionPrefs: Fix more fallout from un-templating strings
The version field in extension metadata is a number, so we cannot
just use it as a string.

('creator' should be fine, but change it as well for the symmetry)

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1031
2020-02-19 19:29:21 +01:00
Daniel van Vugt
e781e1fdba iconGrid: Create icon clones in a separate loop
For reasons not yet fully understood, `Main.uiGroup.add_actor` takes around
10 milliseconds to complete.

Because of this, each `actor.opacity = 0` has a good chance of falling
on a different frame. And when it does, `_opacityChangedId` also lands
on multiple different frames each incurring a separate relayout cycle.
It is this excessive number of relayouts that causes stuttering in the
icon grid animation (#2065). But it is the slowness of `uiGroup.add_actor`
that causes the number to be excessive when it should be one.

By creating the clones and adding them to `uiGroup` early, we then enable
the existing loop starting the animation to complete within a single frame.
And by completing within a single frame all the opacity changes land within
the same frame interval, thus incurring only a single relayout instead of
many.

This issue went unnoticed until 004a5e1042 (!704), after which the slow
emissions of `notify::opacity` became a more visible performance problem.

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1002
2020-02-19 15:39:21 +00:00
Jonas Dreßler
12de4e67f8 theme: Fix workspace switcher popup box size
This should be the last fallout from the theme refresh, make sure all
the boxes of the workspace switcher popup are the correct size.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1022
2020-02-19 14:07:36 +00:00
Jonas Dreßler
9201701c95 theme: Make the focus state of buttons a bit more visible
This changed with the theme refactor was probably not intended, so make
the border on key-focused buttons a bit less transparent to make it
easier to see.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1022
2020-02-19 14:07:36 +00:00
Florian Müllner
6e7344b837 dateMenu: Use BindConstraint for indicator pad
Now that Clutter.BindConstraint modifies the size request in addition to
the allocation, we can use it instead of the custom IndicatorPad widget.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1026
2020-02-19 12:44:28 +00:00
Georges Basile Stavracas Neto
b8f8e1710b appDisplay: Remove unnecessary bind constraint
Now that the bind constraint changes the preferred size of
the actor, a major flaw in the AppDisplay code was exposed:
the folder dialog depends on the preferred size of a parent,
and the parent depends on the preferred size of the folder
dialog.

While we know this is not actually true, we shouldn't rely
on broken behavior to achieve this result. What's interesting
is that the bind constraint used by the folder dialog is a
relic of the development phase; we now control the position
and size of the dialog with a combination of CSS, and alignment.

Remove the unnecessary bind constraint.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1027
2020-02-19 09:20:05 -03:00
Jonas Dreßler
8b0a67fe64 dateMenu: Hide overlay scrollbar in the notification popup
Since the design of the notification popup changed with the theme
refactor and there are now boxes around the world-clock and weather
sections, the overlay scrollbar that is shown above them looks rather
bad. So simply hide that scrollbar, we still have the vfade effect to
indicate the container is scrollable and we also depend on that in the
new popup app-folders.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1013
2020-02-19 11:47:04 +00:00
Florian Müllner
1eb1b1be4e theme: Drop fixed auth prompt entry width
We already set a fixed width on the parent, so simply let the entry take
up the available space that isn't used by the surrounding elements.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1021
2020-02-19 12:34:29 +01:00
Feichtmeier
de5a4a98c9 Style looking-glass $variant independant
- use osd colors
- also fix the toolbar buttons jumping on click
- adding better unchecked/hover/checkedifferences
- use $link_color for links
- remove the strong text-shadow

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1023
2020-02-19 11:08:23 +00:00
Jonas Dreßler
26a49168ba lookingGlass: Also handle null objects in objectToString
Whoops, while ff4623454 fixed the handling of `undefined` objects,
`null` objects obviously still don't have a toString() method. So also
handle those and return 'null' in case the object is null.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1024
2020-02-19 11:56:36 +01:00
Florian Müllner
ff4623454f lookingGlass: Handle undefined in objectToString()
Fallout from commit 9d941f8202: Template strings handle undefined
values just fine, the replacement does not. Fix that.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1020
2020-02-19 11:17:17 +01:00
Jonas Dreßler
cf5204760d workspace: Ensure style of window-chrome titles before requesting width
Make sure the stylesheet properties of the window-chrome title are
updated before requesting the preferred width of the title to prevent
size changes of the title after we animated the width.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/issues/58
2020-02-19 10:09:20 +00:00
Chao-Hsiung Liao
46c13349fc Update Chinese (Taiwan) translation 2020-02-19 06:37:20 +00:00
Jonas Dreßler
2a3875775d userWidget: Always set actor size inside update()
We also want to ensure the Avatar StBin is sized correctly when an icon
child is used, so always set the actor size inside the `update()`
function.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1018
2020-02-18 22:10:00 +00:00
Jonas Dreßler
38b38732d3 userWidget: Simplify icon size setting a bit
Remove the default icon size of -1 and always set the container StBin to
a real size. This fixes an error where the "width" and "height"
properties get set to -2 (which is -1 * scaleFactor) in the `_init`
function.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1018
2020-02-18 22:10:00 +00:00
Florian Müllner
24c8f5bb70 authPrompt: Fix cancel button visibility
Grrr, this slipped in in 5cad5c20e9, and we don't have a compiler
to catch those kinds of bugs :-(

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2228
2020-02-18 21:34:16 +00:00
Anders Jonsson
c02296a9b9 Update Swedish translation 2020-02-18 21:02:42 +00:00
Jordi Mas
4eb122ea8d Update Catalan translation 2020-02-18 20:48:36 +01:00
Piotr Drąg
90d5d16343 Update Polish translation 2020-02-18 19:11:08 +01:00
sicklylife
45c8f0b76c Update Japanese translation 2020-02-18 16:52:19 +00:00
sicklylife
236ee9e483 Update Japanese translation 2020-02-18 16:50:36 +00:00
Sabri Ünal
459b200cc0 Update Turkish translation 2020-02-18 16:18:59 +00:00
Jonas Dreßler
45bc8ae292 keyboard: Plug a leak of KeyboardControllers
To make sure the GC really disposes the KeyboardController object we
need to remove all references to the object, which means we have to
disconnect signals the object connects to, too.

This also fixes a bug where keys remain pressed forever and thus also
break that key on real keyboards. It happens if the OSK gets destroyed
during an OSK-key is being held so the StButton of the key is not
released. That means the key remains pressed in the
MetaVirtualInputDevice that we are now leaking because
KeyboardController isn't garbage collected.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1015
2020-02-18 14:48:39 +00:00
Daniel Mustieles
fbfe5a1988 Updated Spanish translation 2020-02-18 13:19:54 +01:00
Efstathios Iosifidis
87a6dc1b95 Update Greek translation 2020-02-18 10:55:34 +00:00
Danial Behzadi
1b11f0673e Update Persian translation 2020-02-18 07:23:20 +00:00
104 changed files with 10735 additions and 8203 deletions

View File

@@ -46,6 +46,20 @@ eslint:
- reports
when: always
potfile_check:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
stage: review
script:
- ./.gitlab-ci/check-potfiles.sh
<<: *only_default
no_template_check:
image: registry.gitlab.gnome.org/gnome/gnome-shell/extension-ci:v1
stage: review
script:
- ./.gitlab-ci/check-template-strings.sh
<<: *only_default
build:
image: registry.gitlab.gnome.org/gnome/mutter/master:v3
stage: build

View File

@@ -19,7 +19,7 @@ fi
function commit_message_has_url() {
commit=$1
commit_message=$(git show -s --format='format:%b' $commit)
echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
echo "$commit_message" | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(-/\)\?\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
return $?
}

26
.gitlab-ci/check-potfiles.sh Executable file
View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bash
srcdirs="js src subprojects/extensions-tool"
globs=('*.js' '*.c')
# find source files that contain gettext keywords
files=$(grep -lR ${globs[@]/#/--include=} '\(gettext\|[^I_)]_\)(' $srcdirs)
# find those that aren't listed in POTFILES.in
missing=$(for f in $files; do ! grep -q ^$f po/POTFILES.in && echo $f; done)
if [ ${#missing} -eq 0 ]; then
exit 0
fi
cat >&2 <<EOT
The following files are missing from po/POTFILES.po:
EOT
for f in $missing; do
echo " $f" >&2
done
echo >&2
exit 1

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bash
# find files from POTFILES.in that use js template strings
baddies=$(grep -l '${' $(grep ^js po/POTFILES.in))
if [ ${#baddies} -eq 0 ]; then
exit 0
fi
cat >&2 <<EOT
xgettext cannot handle template strings properly, so we ban their use
in files with translatable strings.
The following files are listed in po/POTFILES.in and use template strings:
EOT
for f in $baddies; do
echo " $f" >&2
done
echo >&2
exit 1

46
NEWS
View File

@@ -1,3 +1,49 @@
3.35.92
=======
* Plug a memory leak [Jonas D.; !1015]
* Fix missing "back" button on login screen [Florian; #2228]
* Fix width of window preview titles in overview [Jonas D.; #58]
* Fix looking glass text with light style variant [Feichtmeier; !1023]
* Center unlock entry [Florian; !1021]
* Hide overlay scrollbars in notification popup [Jonas D.; !1013]
* Work around add_actor() slowness in icon spring animation [Daniel; !1002]
* Add disable-animations heuristics [Jonas Å.; !757]
* Fix visual glitches in on-screen keyboard [Carlos; #2214]
* Fix clearing changed textures from cache [Florian; #2244]
* Fix visual glitch in sliders [Daniel; #1569]
* Stop using dedicated lock screen background [Florian; !1001]
* Fix entries disappearing after authentication errors [Florian; #2236]
* Fix crash when animations are disabled [Florian; #2255]
* Fix passing pointer events to clients when magnified [Jonas D.; !993]
* Fix keynav on new lock screen [Florian; #2210]
* Avoid short-lived allocations on actor removal [Christian; #2263]
* Fix super-sized default avatars in user list [Florian, Sam; #2242]
* Leave overview when locking the screen [Jonas D.; !1043]
* Hide message list on login screen [Florian; #2241]
* Avoid IO on the main thread [Christian, Florian; !1050, !1051]
* Fix window animations getting stuck when client doesn't respond [Jonas; !1055]
* Only subscribe to touchpad events for touchpad gestures [Daniel; !925]
* Start X11 session services before Xwayland clients [Carlos; !836, !1056]
* Only show switch-user button with unlock prompt [Florian; !1029]
* Misc. bug fixes and cleanups [Jonas D., Florian, Georges, Jonas Å., Daniel,
Jakub, Philippe; !1018, !1020, !1024, !1027, !1026, !1022, !1031, !1035,
!1032, !1025, !1039, #2157, !1037, !1042, !1047, !1048, #2270, !1046,
!167, !1016]
Contributors:
Jonas Dreßler, Feichtmeier, Carlos Garnacho, Christian Hergert, Sam Hewitt,
Florian Müllner, Georges Basile Stavracas Neto, Jakub Steiner, Philippe Troin,
Daniel van Vugt, Jonas Ådahl
Translators:
Danial Behzadi [fa], Efstathios Iosifidis [el], Daniel Mustieles [es],
Sabri Ünal [tr], sicklylife [ja], Piotr Drąg [pl], Jordi Mas [ca],
Anders Jonsson [sv], Chao-Hsiung Liao [zh_TW], Asier Sarasua Garmendia [eu],
Rafael Fontenelle [pt_BR], Марко Костић [sr], Changwoo Ryu [ko],
Charles Monzat [fr], Jiri Grönroos [fi], Jor Teron [mjw], Bruce Cowan [en_GB],
Emin Tufan Çetin [tr], Alan Mortensen [da], Balázs Úr [hu], Fran Dieguez [gl],
Kukuh Syafaat [id]
3.35.91
=======
* Improve magnifier [Carlos; !984]

View File

@@ -1,12 +1,19 @@
<node>
<interface name="org.gnome.Shell.CalendarServer">
<method name="GetEvents">
<arg type="x" direction="in" />
<arg type="x" direction="in" />
<arg type="b" direction="in" />
<arg type="a(sssbxxa{sv})" direction="out" />
<method name="SetTimeRange">
<arg type="x" name="since" direction="in"/>
<arg type="x" name="until" direction="in"/>
<arg type="b" name="force_reload" direction="in"/>
</method>
<signal name="EventsAdded">
<arg type="a(ssbxxa{sv})" name="events" direction="out"/>
</signal>
<signal name="EventsRemoved">
<arg type="as" name="ids" direction="out"/>
</signal>
<signal name="ClientDisappeared">
<arg type="s" name="source_uid" direction="out"/>
</signal>
<property name="HasCalendars" type="b" access="read" />
<signal name="Changed" />
</interface>
</node>

View File

@@ -57,5 +57,19 @@
<method name="GetWindows">
<arg name="windows" direction="out" type="a{ta{sv}}" />
</method>
<!--
AnimationsEnabled:
@short_description: Whether the shell animations are enabled
By default determined by the org.gnome.desktop.interface enable-animations
gsetting, but may be overridden, e.g. if there is an active screen cast or
remote desktop session that asked for animations to be disabled.
Since: 2
-->
<property name="AnimationsEnabled" type="b" access="read"/>
<property name="version" type="u" access="read"/>
</interface>
</node>

View File

@@ -9,12 +9,6 @@
<file>dash-placeholder.svg</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>key-enter.svg</file>
<file>key-hide.svg</file>
<file>key-layout.svg</file>
<file>key-shift.svg</file>
<file>key-shift-uppercase.svg</file>
<file>key-shift-latched-uppercase.svg</file>
<file alias="icons/message-indicator-symbolic.svg">message-indicator-symbolic.svg</file>
<file>no-events.svg</file>
<file>no-notifications.svg</file>
@@ -25,6 +19,11 @@
<file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file>
<file alias="icons/pointer-primary-click-symbolic.svg">pointer-primary-click-symbolic.svg</file>
<file alias="icons/pointer-secondary-click-symbolic.svg">pointer-secondary-click-symbolic.svg</file>
<file alias="icons/keyboard-caps-lock-filled-symbolic.svg">keyboard-caps-lock-filled-symbolic.svg</file>
<file alias="icons/keyboard-enter-symbolic.svg">keyboard-enter-symbolic.svg</file>
<file alias="icons/keyboard-hide-symbolic.svg">keyboard-hide-symbolic.svg</file>
<file alias="icons/keyboard-layout-filled-symbolic.svg">keyboard-layout-filled-symbolic.svg</file>
<file alias="icons/keyboard-shift-filled-symbolic.svg">keyboard-shift-filled-symbolic.svg</file>
<file>process-working.svg</file>
<file>toggle-off.svg</file>
<file>toggle-off-dark.svg</file>

View File

@@ -1,5 +1,6 @@
desktop_files = [
'org.gnome.Shell.desktop',
'org.gnome.Shell.CalendarServer.desktop',
'org.gnome.Extensions.desktop',
]
service_files = []
@@ -13,6 +14,7 @@ desktopconf = configuration_data()
# We substitute in bindir so it works as an autostart
# file when built in a non-system prefix
desktopconf.set('bindir', bindir)
desktopconf.set('libexecdir', libexecdir)
desktopconf.set('systemd_hidden', have_systemd ? 'true' : 'false')
foreach desktop_file : desktop_files

View File

@@ -0,0 +1,9 @@
[Desktop Entry]
Type=Application
Name=Clock Applet
Icon=appointment-soon
Exec=@libexecdir@/gnome-shell-calendar-server
Terminal=false
Categories=
OnlyShowIn=GNOME
NoDisplay=true

View File

@@ -150,7 +150,7 @@
color: $tc;
text-shadow: 0 1px $text_shadow_color;
icon-shadow: 0 1px $text_shadow_color;
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.7);
box-shadow: inset 0 0 0 2px transparentize($selected_bg_color, 0.4);
//border-color: $selected_bg_color;
}

View File

@@ -1,6 +1,13 @@
/* Date/Time Menu */
.clock-display-box { spacing: $base_spacing; }
.clock-display-box {
spacing: $base_spacing / 2;
.clock {
padding-left: $base_padding;
padding-right: $base_padding;
}
}
// overall menu
#calendarArea {

View File

@@ -52,10 +52,6 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
// non-character keys
&.default-key {
// size of the icon asset
background-size: 24px;
@include button(normal, $c:$default_key_bg_color);
&:hover, &:checked {@include button(hover, $c: $default_key_bg_color);}
&:active { @include button(active, $c: $default_key_bg_color);}
@@ -63,19 +59,14 @@ $default_key_bg_color: if($variant=='light', darken($osd_bg_color, 11%), lighten
// enter key is suggested-action
&.enter-key {
background-image: url("resource:///org/gnome/shell/theme/key-enter.svg");
@include button(normal, $c:$selected_bg_color, $tc:$selected_fg_color);
&:hover, &:checked { @include button(hover, $c: lighten($selected_bg_color, 3%));}
&:active {@include button(active, $c: darken($selected_bg_color, 2%));}
}
// key assets
&.shift-key-lowercase {background-image: url("resource:///org/gnome/shell/theme/key-shift.svg");}
&.shift-key-uppercase {background-image: url("resource:///org/gnome/shell/theme/key-shift-uppercase.svg");}
&.shift-key-uppercase:latched {background-image: url("resource:///org/gnome/shell/theme/key-shift-latched-uppercase.svg");}
&.hide-key {background-image: url("resource:///org/gnome/shell/theme/key-hide.svg");}
&.layout-key {background-image: url("resource:///org/gnome/shell/theme/key-layout.svg");}
&.shift-key-uppercase { color: $selected_bg_color }
StIcon { icon-size: 1.125em; }
}
// long press on a key popup

View File

@@ -160,7 +160,6 @@
}
.login-dialog-prompt-entry {
width: 17.89em;
height: 1.5em;
}

View File

@@ -5,14 +5,14 @@
background-color: $osd_bg_color;
spacing: $base_spacing;
padding: 4px;
border: 2px solid transparentize($osd_fg_color, 0.8);
border-top-width:0;
border-radius: 0 0 $base_border_radius $base_border_radius;
border: 1px solid transparentize($osd_fg_color, 0.8);
border-radius: $base_border_radius;
color: $osd_fg_color;
& > #Toolbar {
border: none;
border-radius: $base_border_radius;
background-color: darken($osd_bg_color, 10%);
background-color: $osd_bg_color;
}
.labels { spacing: $base_spacing; }
@@ -20,19 +20,18 @@
-natural-hpadding: $base_padding * 2;
-minimum-hpadding: 6px;
font-weight: bold;
color: $fg_color;
color: darken($osd_fg_color, 15%);
transition-duration: 100ms;
padding-left: .3em;
padding-right: .3em;
border-bottom-width: 2px;
&:hover {
color: white;
text-shadow: black 0px 2px 2px;
color: $osd_fg_color;
}
&:selected {
border-bottom-width: 2px;
border-color: lighten($selected_bg_color,5%);
color: white;
text-shadow: black 0px 2px 2px;
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color, 5%);
color: $osd_fg_color;
}
}
StBoxLayout#EvalBox { padding: 4px; spacing: $base_spacing; }
@@ -41,12 +40,17 @@
.lg-dialog {
StEntry {
selection-background-color: #bbbbbb;
selected-color: $osd_bg_color;
background-color: transparentize(lighten($osd_bg_color, 5%), 0.4);
color: $osd_fg_color;
border-color: transparentize($osd_fg_color, 0.8);
min-height: 22px;
selection-background-color: $selected_bg_color;
selected-color: $selected_fg_color;
}
.shell-link {
color: #999999;
&:hover { color: #dddddd; }
color: $link_color;
&:hover { color: lighten($link_color, 10%); }
&:active { color: darken($link_color, 10%); }
}
}
@@ -60,7 +64,7 @@
}
.lg-obj-inspector-button {
border: 1px solid gray;
border: 1px solid $osd_borders_color;
padding: 4px;
border-radius: $base_border_radius;
&:hover { border: 1px solid #ffffff; }
@@ -75,7 +79,8 @@
}
.lg-extension {
border: 1px solid $osd_borders_color;
border: 1px solid lighten($osd_borders_color, 5%);
background-color: lighten($osd_bg_color, 5%);
border-radius: $base_border_radius;
padding: 4px;
}

View File

@@ -24,7 +24,7 @@
margin: ($base_margin * 2) ($base_margin * 4) 0;
// NOTE: remove the padding if notification_bubble could remove margin for drop shadow
padding: $base_margin;
spacing: $base_spacing;
spacing: $base_spacing * 2;
}
// message bubbles

View File

@@ -15,18 +15,28 @@
& StIcon {
background-color: transparentize($osd_fg_color,0.95);
padding: 18px 20px 22px 20px;
width: 88px; height: 88px;
border-radius: 99px;
}
}
.user-widget.vertical .user-icon {
icon-size: 128px;
icon-size: $base_icon_size * 6; // 128px
& StIcon {
padding: $base_padding * 3 + 2px; // 20px
padding-top: $base_padding * 3; // 18 px
padding-bottom: $base_padding * 3 + 4px; // 22px
width: $base_icon_size * 5.5; height: $base_icon_size * 5.5; // 88px;
}
}
.user-widget.horizontal .user-icon {
icon-size: 64px;
icon-size: $base_icon_size * 4; // 64px
& StIcon {
padding: $base_padding * 2 ; // 12px
width: $base_icon_size * 2.5; height: $base_icon_size * 2.5; // 40px;
}
}
.lightbox { background-color: black; }

View File

@@ -54,9 +54,6 @@ $panel_height: 1.86em;
}
&:active, &:overview, &:focus, &:checked {
// Trick due to St limitations. It needs a background to draw a box-shadow
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
color: lighten($panel_fg_color, 20%);
}
@@ -82,6 +79,26 @@ $panel_height: 1.86em;
}
}
.panel-button {
&:active, &:overview, &:focus, &:checked {
// Trick due to St limitations. It needs a background to draw a box-shadow
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
}
}
.panel-button.clock-display {
// Move highlight from .panel-button to .clock
&:active, &:overview, &:focus, &:checked {
box-shadow: none;
.clock {
background-color: rgba(0, 0, 0, 0.01);
box-shadow: inset 0 -2px 0 0 lighten($selected_bg_color,5%);
}
}
}
.panel-status-indicators-box,
.panel-status-menu-box {
spacing: 2px;

View File

@@ -16,7 +16,6 @@
}
.ws-switcher-box {
// background: transparent;
background: transparent;
height: 50px;
background-size: 32px;
@@ -29,6 +28,7 @@
.ws-switcher-active-down,
.ws-switcher-active-left,
.ws-switcher-active-right {
height: 52px;
background-color: $selected_bg_color;
border: 1px solid if($variant=='light', darken($selected_bg_color, 8%), lighten($selected_bg_color, 5%));
border-radius: $base_border_radius + 3px;

View File

@@ -1,4 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="keyboard-key" width="24" height="24">
<path overflow="visible" font-weight="400" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" d="M10 23H8.5c-.398 0-.796-.14-1.079-.422L.345 15.5l7.078-7.078C7.704 8.14 8.102 8 8.5 8H10v1.5c0 .398-.14.796-.422 1.079L4.657 15.5l4.921 4.922c.282.282.422.68.422 1.078z" color="#000" font-family="Bitstream Vera Sans" fill="#fff"/>
<path overflow="visible" d="M22 1.5v9a5 5 0 01-5 5H4" style="marker:none" color="#000" fill="none" stroke="#fff" stroke-width="3"/>
</svg>

Before

Width:  |  Height:  |  Size: 676 B

View File

@@ -1,3 +0,0 @@
<svg class="keyboard-key" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<path d="M12 20.875L.562 9.438C.171 9.046 0 8.51 0 8V6h2c.511 0 1.046.17 1.438.563L12 15.125l8.563-8.562C20.953 6.17 21.488 6 22 6h2v2c0 .511-.17 1.046-.563 1.438z" fill="#e5e5e5"/>
</svg>

Before

Width:  |  Height:  |  Size: 278 B

View File

@@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="keyboard-key" width="24" height="24">
<path d="M4.5 2v21" fill="#e5e5e5" fill-rule="evenodd" stroke="#e5e5e5" stroke-width="3"/>
<path d="M4 12h6l2 4h8V6h-6l-2-4H4z" fill="none" stroke="#e5e5e5" stroke-width="2" stroke-linejoin="round"/>
<path d="M4 12h6l2 4h8V6h-6l-2-4H4z" fill="#e5e5e5" fill-rule="evenodd"/>
</svg>

Before

Width:  |  Height:  |  Size: 378 B

View File

@@ -1,3 +0,0 @@
<svg class="keyboard-key" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<path style="marker:none" d="M12 0L2 12h6v6h8v-6h6zM8 21v3h8v-3z" color="#000" overflow="visible" fill="#3584e4"/>
</svg>

Before

Width:  |  Height:  |  Size: 211 B

View File

@@ -1,3 +0,0 @@
<svg class="keyboard-key" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<path d="M8 22v-8H2L12 2l10 12h-6v8z" style="marker:none" color="#000" overflow="visible" fill="#3584e4"/>
</svg>

Before

Width:  |  Height:  |  Size: 203 B

View File

@@ -1,3 +0,0 @@
<svg class="keyboard-key" xmlns="http://www.w3.org/2000/svg" width="24" height="24">
<path d="M8 22v-8H2L12 2l10 12h-6v8z" style="marker:none" color="#000" overflow="visible" fill="#bebebe"/>
</svg>

Before

Width:  |  Height:  |  Size: 203 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<g fill="#2e3436">
<path d="M6 8H2.937l5.126-5.781L13.186 8H10v2H6z" style="marker:none" color="#000" overflow="visible"/>
<path d="M6 11h4v2H6z" style="marker:none"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 268 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<g font-weight="400" fill="#2e3436">
<path d="M11.994 3v4.004c.002.666-.183.72-.445.852-.262.13-.555.144-.555.144H4v2h6.994s.71.014 1.45-.355c.738-.37 1.552-1.313 1.55-2.645V3z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" color="#000" font-family="sans-serif" overflow="visible"/>
<path d="M6 12v-1c0-.257-.13-.528-.313-.719l-1.28-1.303 1.28-1.26C5.87 7.529 6 7.258 6 7V6H5c-.31 0-.552.09-.75.281L1.594 8.978l2.656 2.74c.198.192.44.282.75.282z" style="line-height:normal;-inkscape-font-specification:'Bitstream Vera Sans';text-indent:0;text-align:start;text-decoration-line:none;text-transform:none;marker:none" color="#bebebe" font-family="Bitstream Vera Sans" overflow="visible"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<g color="#000" fill="#2e3436">
<path d="M4.707 5.293L3.293 6.707 8 11.414l4.707-4.707-1.414-1.414L8 8.586z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/>
<path d="M12 6V5h1v1zM3 6V5h1v1z" style="marker:none" overflow="visible"/>
<path d="M3 6c0-.554.446-1 1-1s1 .446 1 1-.446 1-1 1-1-.446-1-1zM11 6c0-.554.446-1 1-1s1 .446 1 1-.446 1-1 1-1-.446-1-1z" style="marker:none" overflow="visible"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 990 B

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<g fill="#2e3436" fill-rule="evenodd">
<path d="M2 1v14h2V1z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/>
<path d="M3 1a1 1 0 00-1 1v6a1 1 0 001 1h3.383l.722 1.447A1 1 0 008 11h5a1 1 0 001-1V4a1 1 0 00-1-1H9.617l-.722-1.447A1 1 0 008 1zm1 2h3.383l.722 1.447A1 1 0 009 5h3v4H8.617l-.722-1.447A1 1 0 007 7H4z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;white-space:normal;shape-padding:0;isolation:auto;mix-blend-mode:normal;solid-color:#000;solid-opacity:1" color="#000" font-weight="400" font-family="sans-serif" overflow="visible"/>
<path d="M3 8h4l1 2h5V4H9L8 2H3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
<path d="M6 13V9H2.937l5.126-5.781L13.186 9H10v4z" style="marker:none" color="#000" overflow="visible" fill="#2e3436"/>
</svg>

After

Width:  |  Height:  |  Size: 195 B

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-42.76)"/></defs><g transform="translate(0 -291.18)" stroke-width="1.085"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#323233" stroke="#272728"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none" fill="url(#b)" stroke="#151515"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="46" height="22"><defs><linearGradient id="a"><stop offset="0" stop-color="#39393a"/><stop offset="1" stop-color="#302f30"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="53" y1="294.429" x2="53" y2="309.804" gradientUnits="userSpaceOnUse" gradientTransform="translate(-42.76)"/></defs><g transform="translate(0 -291.18)" stroke-width="1.085" stroke="#151515"><rect style="marker:none" width="44.446" height="20.911" x=".625" y="291.715" rx="10.455" ry="10.073" fill="#282828"/><rect ry="10.455" rx="10.455" y="291.715" x=".543" height="20.911" width="21.143" style="marker:none" fill="url(#b)"/></g></svg>

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 708 B

View File

@@ -703,10 +703,10 @@ var ExtensionRow = GObject.registerClass({
this._updatesIcon.visible = this.hasUpdate;
this._versionLabel.label = this.version;
this._versionLabel.label = this.version.toString();
this._versionLabel.visible = this.version !== '';
this._authorLabel.label = this.creator;
this._authorLabel.label = this.creator.toString();
this._authorLabel.visible = this.creator !== '';
}

View File

@@ -55,6 +55,7 @@ var AuthPrompt = GObject.registerClass({
this._gdmClient = gdmClient;
this._mode = mode;
this._defaultButtonWellActor = null;
let reauthenticationOnly;
if (this._mode == AuthPromptMode.UNLOCK_ONLY)
@@ -81,7 +82,7 @@ var AuthPrompt = GObject.registerClass({
});
this.add_child(this._userWell);
this._hasCancelButton = this._mode === AuthPromptStatus.UNLOCK_OR_LOG_IN;
this._hasCancelButton = this._mode === AuthPromptMode.UNLOCK_OR_LOG_IN;
this._initEntryRow();
@@ -131,9 +132,10 @@ var AuthPrompt = GObject.registerClass({
this.cancelButton = new St.Button({
style_class: 'modal-dialog-button button cancel-button',
accessible_name: _('Cancel'),
button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE,
reactive: this._hasCancelButton,
can_focus: true,
can_focus: this._hasCancelButton,
x_align: Clutter.ActorAlign.START,
y_align: Clutter.ActorAlign.CENTER,
child: new St.Icon({ icon_name: 'go-previous-symbolic' }),
@@ -284,6 +286,7 @@ var AuthPrompt = GObject.registerClass({
this.setActorInDefaultButtonWell(null);
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
this.cancelButton.reactive = false;
this.cancelButton.can_focus = false;
}
_onReset() {
@@ -452,6 +455,7 @@ var AuthPrompt = GObject.registerClass({
let oldStatus = this.verificationStatus;
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.cancelButton.reactive = this._hasCancelButton;
this.cancelButton.can_focus = this._hasCancelButton;
this._preemptiveAnswer = null;
if (this._userVerifier)

View File

@@ -456,7 +456,6 @@ var LoginDialog = GObject.registerClass({
let notListedLabel = new St.Label({
text: _("Not listed?"),
style_class: 'login-dialog-not-listed-label',
x_align: Clutter.ActorAlign.START,
});
this._notListedButton = new St.Button({
style_class: 'login-dialog-not-listed-button',
@@ -464,6 +463,7 @@ var LoginDialog = GObject.registerClass({
can_focus: true,
child: notListedLabel,
reactive: true,
x_align: Clutter.ActorAlign.START,
});
this._notListedButton.connect('clicked', this._hideUserListAskForUsernameAndBeginVerification.bind(this));

View File

@@ -61,7 +61,12 @@ var IBusManager = class {
_spawn(extraArgs = []) {
try {
let cmdLine = ['ibus-daemon', '--panel', 'disable', ...extraArgs];
Gio.Subprocess.new(cmdLine, Gio.SubprocessFlags.NONE);
let launcher = Gio.SubprocessLauncher.new(Gio.SubprocessFlags.NONE);
// Forward the right X11 Display for ibus-x11
let display = GLib.getenv('GNOME_SETUP_DISPLAY');
if (display)
launcher.setenv('DISPLAY', display, true);
launcher.launch(cmdLine);
} catch (e) {
log(`Failed to launch ibus-daemon: ${e.message}`);
}

View File

@@ -1,10 +1,12 @@
/* exported IntrospectService */
const { Gio, GLib, Meta, Shell } = imports.gi;
const { Gio, GLib, Meta, Shell, St } = imports.gi;
const INTROSPECT_SCHEMA = 'org.gnome.shell';
const INTROSPECT_KEY = 'introspect';
const APP_WHITELIST = ['org.freedesktop.impl.portal.desktop.gtk'];
const INTROSPECT_DBUS_API_VERSION = 2;
const { loadInterfaceXML } = imports.misc.fileUtils;
const IntrospectDBusIface = loadInterfaceXML('org.gnome.Shell.Introspect');
@@ -22,6 +24,7 @@ var IntrospectService = class {
this._runningApplicationsDirty = true;
this._activeApplication = null;
this._activeApplicationDirty = true;
this._animationsEnabled = true;
this._appSystem = Shell.AppSystem.get_default();
this._appSystem.connect('app-state-changed',
@@ -30,7 +33,9 @@ var IntrospectService = class {
this._syncRunningApplications();
});
this._settings = new Gio.Settings({ schema_id: INTROSPECT_SCHEMA });
this._introspectSettings = new Gio.Settings({
schema_id: INTROSPECT_SCHEMA,
});
let tracker = Shell.WindowTracker.get_default();
tracker.connect('notify::focus-app',
@@ -49,6 +54,11 @@ var IntrospectService = class {
(conn, name, owner) => this._whitelistMap.set(name, owner),
(conn, name) => this._whitelistMap.delete(name));
});
this._settings = St.Settings.get();
this._settings.connect('notify::enable-animations',
this._syncAnimationsEnabled.bind(this));
this._syncAnimationsEnabled();
}
_isStandaloneApp(app) {
@@ -56,7 +66,7 @@ var IntrospectService = class {
}
_isIntrospectEnabled() {
return this._settings.get_boolean(INTROSPECT_KEY);
return this._introspectSettings.get_boolean(INTROSPECT_KEY);
}
_isSenderWhitelisted(sender) {
@@ -119,9 +129,18 @@ var IntrospectService = class {
type == Meta.WindowType.UTILITY;
}
_isInvocationAllowed(invocation) {
if (this._isIntrospectEnabled())
return true;
if (this._isSenderWhitelisted(invocation.get_sender()))
return true;
return false;
}
GetRunningApplicationsAsync(params, invocation) {
if (!this._isIntrospectEnabled() &&
!this._isSenderWhitelisted(invocation.get_sender())) {
if (!this._isInvocationAllowed(invocation)) {
invocation.return_error_literal(Gio.DBusError,
Gio.DBusError.ACCESS_DENIED,
'App introspection not allowed');
@@ -136,8 +155,7 @@ var IntrospectService = class {
let apps = this._appSystem.get_running();
let windowsList = {};
if (!this._isIntrospectEnabled() &&
!this._isSenderWhitelisted(invocation.get_sender())) {
if (!this._isInvocationAllowed(invocation)) {
invocation.return_error_literal(Gio.DBusError,
Gio.DBusError.ACCESS_DENIED,
'App introspection not allowed');
@@ -181,4 +199,21 @@ var IntrospectService = class {
}
invocation.return_value(new GLib.Variant('(a{ta{sv}})', [windowsList]));
}
_syncAnimationsEnabled() {
let wasAnimationsEnabled = this._animationsEnabled;
this._animationsEnabled = this._settings.enable_animations;
if (wasAnimationsEnabled !== this._animationsEnabled) {
let variant = new GLib.Variant('b', this._animationsEnabled);
this._dbusImpl.emit_property_changed('AnimationsEnabled', variant);
}
}
get AnimationsEnabled() {
return this._animationsEnabled;
}
get version() {
return INTROSPECT_DBUS_API_VERSION;
}
};

View File

@@ -445,6 +445,9 @@ function ensureActorVisibleInScrollView(scrollView, actor) {
}
function wiggle(actor, params) {
if (!St.Settings.get().enable_animations)
return;
params = Params.parse(params, {
offset: WIGGLE_OFFSET,
duration: WIGGLE_DURATION,

View File

@@ -280,12 +280,10 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
}
_onDestroy() {
super._onDestroy();
if (this._thumbnails)
this._destroyThumbnails();
if (this._thumbnailTimeoutId != 0)
GLib.source_remove(this._thumbnailTimeoutId);
super._onDestroy();
}
/**
@@ -365,8 +363,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
},
});
this._thumbnails = null;
if (this._switcherList._items[this._selectedIndex])
this._switcherList._items[this._selectedIndex].remove_accessible_state(Atk.StateType.EXPANDED);
this._switcherList.removeAccessibleState(this._selectedIndex, Atk.StateType.EXPANDED);
}
_createThumbnails() {
@@ -395,7 +392,7 @@ class AppSwitcherPopup extends SwitcherPopup.SwitcherPopup {
},
});
this._switcherList._items[this._selectedIndex].add_accessible_state(Atk.StateType.EXPANDED);
this._switcherList.addAccessibleState(this._selectedIndex, Atk.StateType.EXPANDED);
}
});
@@ -776,7 +773,9 @@ class AppSwitcher extends SwitcherPopup.SwitcherList {
// We override SwitcherList's _onItemEnter method to delay
// activation when the thumbnail list is open
_onItemEnter(index) {
_onItemEnter(item) {
const index = this._items.indexOf(item);
if (this._mouseTimeOutId != 0)
GLib.source_remove(this._mouseTimeOutId);
if (this._altTabPopup.thumbnailsVisible) {

View File

@@ -1657,10 +1657,6 @@ var AppFolderDialog = GObject.registerClass({
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
});
this.add_constraint(new Clutter.BindConstraint({
source: Main.overview.viewSelector,
coordinate: Clutter.BindCoordinate.ALL,
}));
this._source = source;
this._folder = folder;

View File

@@ -220,7 +220,9 @@ class DBusEventSource extends EventSourceBase {
}
}
this._dbusProxy.connectSignal('Changed', this._onChanged.bind(this));
this._dbusProxy.connectSignal('EventsAdded', this._onEventsAdded.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)
@@ -257,7 +259,7 @@ class DBusEventSource extends EventSourceBase {
}
_resetCache() {
this._events = [];
this._events = new Map();
this._lastRequestBegin = null;
this._lastRequestEnd = null;
}
@@ -273,28 +275,59 @@ class DBusEventSource extends EventSourceBase {
this.emit('changed');
}
_onChanged() {
this._loadEvents(false);
}
_onEventsAdded(dbusProxy, nameOwner, argArray) {
let appointments = argArray[0] || [];
let changed = false;
_onEventsReceived(results, _error) {
let newEvents = [];
let appointments = results[0] || [];
for (let n = 0; n < appointments.length; n++) {
let a = appointments[n];
let date = new Date(a[4] * 1000);
let end = new Date(a[5] * 1000);
let id = a[0];
let summary = a[1];
let allDay = a[3];
let allDay = a[2];
let date = new Date(a[3] * 1000);
let end = new Date(a[4] * 1000);
let event = new CalendarEvent(id, date, end, summary, allDay);
newEvents.push(event);
}
newEvents.sort((ev1, ev2) => ev1.date.getTime() - ev2.date.getTime());
this._events.set(event.id, event);
this._events = newEvents;
this._isLoading = false;
this.emit('changed');
changed = true;
}
if (changed)
this.emit('changed');
}
_onEventsRemoved(dbusProxy, nameOwner, argArray) {
let ids = argArray[0] || [];
let changed = false;
for (let n = 0; n < ids.length; n++) {
let id = ids[n];
if (this._events.delete(id))
changed = true;
}
if (changed)
this.emit('changed');
}
_onClientDisappeared(dbusProxy, nameOwner, argArray) {
let sourceUid = argArray[0] || "";
let changed = false;
let idsIter = this._events.keys();
sourceUid += '\n';
for (let item = idsIter.next(); !item.done; item = idsIter.next()) {
let id = item.value;
if (id.startsWith(sourceUid) &&
this._events.delete(id))
changed = true;
}
if (changed)
this.emit('changed');
}
_loadEvents(forceReload) {
@@ -303,32 +336,40 @@ class DBusEventSource extends EventSourceBase {
return;
if (this._curRequestBegin && this._curRequestEnd) {
this._dbusProxy.GetEventsRemote(this._curRequestBegin.getTime() / 1000,
this._curRequestEnd.getTime() / 1000,
forceReload,
this._onEventsReceived.bind(this),
Gio.DBusCallFlags.NONE);
if (forceReload) {
this._events.clear();
this.emit('changed');
}
this._dbusProxy.SetTimeRangeRemote(this._curRequestBegin.getTime() / 1000,
this._curRequestEnd.getTime() / 1000,
forceReload,
Gio.DBusCallFlags.NONE);
}
}
requestRange(begin, end) {
if (!(_datesEqual(begin, this._lastRequestBegin) && _datesEqual(end, this._lastRequestEnd))) {
this._isLoading = true;
this._lastRequestBegin = begin;
this._lastRequestEnd = end;
this._curRequestBegin = begin;
this._curRequestEnd = end;
this._loadEvents(false);
this._loadEvents(true);
}
}
getEvents(begin, end) {
getEvents(begin, end, onlyCheckExistence) {
let result = [];
for (let n = 0; n < this._events.length; n++) {
let event = this._events[n];
let eventsIter = this._events.values();
if (_dateIntervalsOverlap(event.date, event.end, begin, end))
for (let item = eventsIter.next(); !item.done; item = eventsIter.next()) {
let event = item.value;
if (_dateIntervalsOverlap(event.date, event.end, begin, end)) {
result.push(event);
if (onlyCheckExistence)
return result;
}
}
result.sort((event1, event2) => {
// sort events by end time on ending day
@@ -343,7 +384,7 @@ class DBusEventSource extends EventSourceBase {
let dayBegin = _getBeginningOfDay(day);
let dayEnd = _getEndOfDay(day);
let events = this.getEvents(dayBegin, dayEnd);
let events = this.getEvents(dayBegin, dayEnd, true);
if (events.length == 0)
return false;
@@ -873,7 +914,7 @@ class EventsSection extends MessageList.MessageListSection {
}
_reloadEvents() {
if (this._eventSource.isLoading)
if (this._eventSource.isLoading || this._reloading)
return;
this._reloading = true;
@@ -882,10 +923,7 @@ class EventsSection extends MessageList.MessageListSection {
let periodEnd = _getEndOfDay(this._date);
let events = this._eventSource.getEvents(periodBegin, periodEnd);
let ids = events.map(e => e.id);
this._messageById.forEach((message, id) => {
if (ids.includes(id))
return;
this._messageById.delete(id);
this.removeMessage(message);
});

View File

@@ -192,6 +192,7 @@ var CloseDialog = GObject.registerClass({
this._dialog = null;
this._removeWindowEffect();
dialog.makeInactive();
dialog._dialog.ease({
scale_y: 0,
mode: Clutter.AnimationMode.LINEAR,

View File

@@ -454,6 +454,8 @@ class MessagesIndicator extends St.Icon {
let sources = Main.messageTray.getSources();
sources.forEach(source => this._onSourceAdded(null, source));
this._sync();
this.connect('destroy', () => {
this._settings.run_dispose();
this._settings = null;
@@ -488,26 +490,6 @@ class MessagesIndicator extends St.Icon {
}
});
var IndicatorPad = GObject.registerClass(
class IndicatorPad extends St.Widget {
_init(actor) {
this._source = actor;
this._source.connect('notify::size', () => this.queue_relayout());
super._init();
this._source.bind_property('visible',
this, 'visible',
GObject.BindingFlags.SYNC_CREATE);
}
vfunc_get_preferred_width(forHeight) {
return this._source.get_preferred_width(forHeight);
}
vfunc_get_preferred_height(forWidth) {
return this._source.get_preferred_height(forWidth);
}
});
var FreezableBinLayout = GObject.registerClass(
class FreezableBinLayout extends Clutter.BinLayout {
_init() {
@@ -568,16 +550,24 @@ class DateMenuButton extends PanelMenu.Button {
let hbox;
let vbox;
let menuAlignment = 0.5;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
menuAlignment = 1.0 - menuAlignment;
super._init(menuAlignment);
super._init(0.5);
this._clockDisplay = new St.Label({ style_class: 'clock' });
this._clockDisplay.clutter_text.y_align = Clutter.ActorAlign.CENTER;
this._clockDisplay = new St.Label({ y_align: Clutter.ActorAlign.CENTER });
this._indicator = new MessagesIndicator();
const indicatorPad = new St.Widget();
this._indicator.bind_property('visible',
indicatorPad, 'visible',
GObject.BindingFlags.SYNC_CREATE);
indicatorPad.add_constraint(new Clutter.BindConstraint({
source: this._indicator,
coordinate: Clutter.BindCoordinate.SIZE,
}));
let box = new St.BoxLayout({ style_class: 'clock-display-box' });
box.add_actor(new IndicatorPad(this._indicator));
box.add_actor(indicatorPad);
box.add_actor(this._clockDisplay);
box.add_actor(this._indicator);
@@ -630,7 +620,7 @@ class DateMenuButton extends PanelMenu.Button {
this._displaysSection = new St.ScrollView({ style_class: 'datemenu-displays-section vfade',
x_expand: true,
overlay_scrollbars: true });
this._displaysSection.set_policy(St.PolicyType.NEVER, St.PolicyType.AUTOMATIC);
this._displaysSection.set_policy(St.PolicyType.NEVER, St.PolicyType.EXTERNAL);
vbox.add_actor(this._displaysSection);
let displaysBox = new St.BoxLayout({ vertical: true,

View File

@@ -58,10 +58,16 @@ class Dialog extends St.Widget {
this._dialog.add_child(this.buttonLayout);
}
_onDestroy() {
makeInactive() {
if (this._eventId != 0)
this._parentActor.disconnect(this._eventId);
this._eventId = 0;
this.buttonLayout.get_children().forEach(c => c.set_reactive(false));
}
_onDestroy() {
this.makeInactive();
}
_modalEventHandler(actor, event) {

View File

@@ -12,6 +12,9 @@ imports.gi.versions.TelepathyLogger = '0.2';
const { Clutter, GLib, GObject, Meta, Shell, St } = imports.gi;
const Gettext = imports.gettext;
const System = imports.system;
let _localTimeZone = null;
// We can't import shell JS modules yet, because they may have
// variable initializations, etc, that depend on init() already having
@@ -111,6 +114,11 @@ function _easeActor(actor, params) {
autoReverse = params.autoReverse;
delete params.autoReverse;
// repeatCount doesn't include the initial iteration
const numIterations = repeatCount + 1;
// whether the transition should finish where it started
const isReversed = autoReverse && numIterations % 2 === 0;
if (params.mode != undefined)
actor.set_easing_mode(params.mode);
delete params.mode;
@@ -122,7 +130,8 @@ function _easeActor(actor, params) {
let animatedProps = Object.keys(params).map(p => p.replace('_', '-', 'g'));
animatedProps.forEach(p => actor.remove_transition(p));
actor.set(params);
if (actor.get_easing_duration() > 0 || !isReversed)
actor.set(params);
actor.restore_easing_state();
let transition = animatedProps.map(p => actor.get_transition(p))
@@ -161,6 +170,11 @@ function _easeActorProperty(actor, propName, target, params) {
autoReverse = params.autoReverse;
delete params.autoReverse;
// repeatCount doesn't include the initial iteration
const numIterations = repeatCount + 1;
// whether the transition should finish where it started
const isReversed = autoReverse && numIterations % 2 === 0;
// Copy Clutter's behavior for implicit animations, see
// should_skip_implicit_transition()
if (actor instanceof Clutter.Actor && !actor.mapped)
@@ -174,7 +188,9 @@ function _easeActorProperty(actor, propName, target, params) {
if (duration == 0) {
let [obj, prop] = _getPropertyTarget(actor, propName);
obj[prop] = target;
if (!isReversed)
obj[prop] = target;
Meta.disable_unredirect_for_display(global.display);
callback(true);
@@ -291,9 +307,25 @@ function init() {
}
};
// Override to clear our own timezone cache as well
const origClearDateCaches = System.clearDateCaches;
System.clearDateCaches = function () {
_localTimeZone = null;
origClearDateCaches();
};
// Work around https://bugzilla.mozilla.org/show_bug.cgi?id=508783
Date.prototype.toLocaleFormat = function (format) {
let dt = GLib.DateTime.new_from_unix_local(this.getTime() / 1000);
if (_localTimeZone === null)
_localTimeZone = GLib.TimeZone.new_local();
let dt = GLib.DateTime.new(_localTimeZone,
this.getFullYear(),
this.getMonth() + 1,
this.getDate(),
this.getHours(),
this.getMinutes(),
this.getSeconds());
return dt ? dt.format(format) : '';
};

View File

@@ -556,15 +556,25 @@ var IconGrid = GObject.registerClass({
}, Infinity);
let normalization = maxDist - minDist;
for (let index = 0; index < actors.length; index++) {
let actor = actors[index];
actors.forEach(actor => {
let clone = new Clutter.Clone({ source: actor });
this._clonesAnimating.push(clone);
Main.uiGroup.add_actor(clone);
});
/*
* ^
* | These need to be separate loops because Main.uiGroup.add_actor
* | is excessively slow if done inside the below loop and we want the
* | below loop to complete within one frame interval (#2065, !1002).
* v
*/
this._clonesAnimating.forEach(actorClone => {
let actor = actorClone.source;
actor.opacity = 0;
actor.reactive = false;
let actorClone = new Clutter.Clone({ source: actor });
this._clonesAnimating.push(actorClone);
Main.uiGroup.add_actor(actorClone);
let [width, height] = this._getAllocatedChildSizeAndSpacing(actor);
actorClone.set_size(width, height);
let scaleX = sourceScaledWidth / width;
@@ -631,7 +641,7 @@ var IconGrid = GObject.registerClass({
actorClone.ease(movementParams);
actorClone.ease(fadeParams);
}
});
}
_getAllocatedChildSizeAndSpacing(child) {

View File

@@ -24,29 +24,29 @@ const SHOW_KEYBOARD = 'screen-keyboard-enabled';
const KEY_SIZE = 2;
const defaultKeysPre = [
[[], [], [{ width: 1.5, level: 1, extraClassName: 'shift-key-lowercase' }], [{ label: '?123', width: 1.5, level: 2 }]],
[[], [], [{ width: 1.5, level: 0, extraClassName: 'shift-key-uppercase' }], [{ label: '?123', width: 1.5, level: 2 }]],
[[], [], [{ width: 1.5, level: 1, extraClassName: 'shift-key-lowercase', icon: 'keyboard-shift-filled-symbolic' }], [{ label: '?123', width: 1.5, level: 2 }]],
[[], [], [{ width: 1.5, level: 0, extraClassName: 'shift-key-uppercase', icon: 'keyboard-shift-filled-symbolic' }], [{ label: '?123', width: 1.5, level: 2 }]],
[[], [], [{ label: '=/<', width: 1.5, level: 3 }], [{ label: 'ABC', width: 1.5, level: 0 }]],
[[], [], [{ label: '?123', width: 1.5, level: 2 }], [{ label: 'ABC', width: 1.5, level: 0 }]],
];
const defaultKeysPost = [
[[{ label: '⌫', width: 1.5, keyval: Clutter.KEY_BackSpace }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key' }],
[{ width: 3, level: 1, right: true, extraClassName: 'shift-key-lowercase' }],
[{ label: '', action: 'emoji' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
[[{ label: '⌫', width: 1.5, keyval: Clutter.KEY_BackSpace }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key' }],
[{ width: 3, level: 0, right: true, extraClassName: 'shift-key-uppercase' }],
[{ label: '', action: 'emoji' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
[[{ label: '⌫', width: 1.5, keyval: Clutter.KEY_BackSpace }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key' }],
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ width: 3, level: 1, right: true, extraClassName: 'shift-key-lowercase', icon: 'keyboard-shift-filled-symbolic' }],
[{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key', icon: 'keyboard-layout-filled-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 'go-down-symbolic' }]],
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ width: 3, level: 0, right: true, extraClassName: 'shift-key-uppercase', icon: 'keyboard-shift-filled-symbolic' }],
[{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key', icon: 'keyboard-layout-filled-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 'go-down-symbolic' }]],
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ label: '=/<', width: 3, level: 3, right: true }],
[{ label: '', action: 'emoji' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
[[{ label: '⌫', width: 1.5, keyval: Clutter.KEY_BackSpace }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key' }],
[{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
[[{ width: 1.5, keyval: Clutter.KEY_BackSpace, icon: 'edit-clear-symbolic' }],
[{ width: 2, keyval: Clutter.KEY_Return, extraClassName: 'enter-key', icon: 'keyboard-enter-symbolic' }],
[{ label: '?123', width: 3, level: 2, right: true }],
[{ label: '', action: 'emoji' }, { action: 'languageMenu', extraClassName: 'layout-key' }, { action: 'hide', extraClassName: 'hide-key' }]],
[{ action: 'emoji', icon: 'face-smile-symbolic' }, { action: 'languageMenu', extraClassName: 'layout-key', icon: 'keyboard-layout-filled-symbolic' }, { action: 'hide', extraClassName: 'hide-key', icon: 'go-down-symbolic' }]],
];
var AspectContainer = GObject.registerClass(
@@ -257,11 +257,11 @@ var Key = GObject.registerClass({
'released': { param_types: [GObject.TYPE_UINT, GObject.TYPE_STRING] },
},
}, class Key extends St.BoxLayout {
_init(key, extendedKeys) {
_init(key, extendedKeys, icon = null) {
super._init({ style_class: 'key-container' });
this.key = key || "";
this.keyButton = this._makeKey(this.key);
this.keyButton = this._makeKey(this.key, icon);
/* Add the key in a container, so keys can be padded without losing
* logical proportions between those.
@@ -404,14 +404,21 @@ var Key = GObject.registerClass({
this._capturedPress = false;
}
_makeKey(key) {
let label = GLib.markup_escape_text(key, -1);
_makeKey(key, icon) {
let button = new St.Button({
label,
style_class: 'keyboard-key',
x_expand: true,
});
if (icon) {
let child = new St.Icon({ icon_name: icon });
button.set_child(child);
this._icon = child;
} else {
let label = GLib.markup_escape_text(key, -1);
button.set_label(label);
}
button.keyWidth = 1;
button.connect('button-press-event', () => {
this._press(key);
@@ -475,10 +482,16 @@ var Key = GObject.registerClass({
}
setLatched(latched) {
if (latched)
if (!this._icon)
return;
if (latched) {
this.keyButton.add_style_pseudo_class('latched');
else
this._icon.icon_name = 'keyboard-caps-lock-filled-symbolic';
} else {
this.keyButton.remove_style_pseudo_class('latched');
this._icon.icon_name = 'keyboard-shift-filled-symbolic';
}
}
});
@@ -1022,7 +1035,7 @@ var EmojiSelection = GObject.registerClass({
section.button = key;
}
key = new Key(null, []);
key = new Key(null, [], 'go-down-symbolic');
key.keyButton.add_style_class_name('default-key');
key.keyButton.add_style_class_name('hide-key');
key.connect('released', () => {
@@ -1255,11 +1268,7 @@ class Keyboard extends St.BoxLayout {
this._clearShowIdle();
this._keyboardController = null;
this._suggestions = null;
this._aspectContainer = null;
this._emojiSelection = null;
this._keypad = null;
this._keyboardController.destroy();
Main.layoutManager.untrackChrome(this);
Main.layoutManager.keyboardBox.remove_actor(this);
@@ -1439,12 +1448,13 @@ class Keyboard extends St.BoxLayout {
let keyval = key.keyval;
let switchToLevel = key.level;
let action = key.action;
let icon = key.icon;
/* Skip emoji button if necessary */
if (!this._emojiKeyVisible && action == 'emoji')
continue;
extraButton = new Key(key.label || '', []);
extraButton = new Key(key.label || '', [], icon);
extraButton.keyButton.add_style_class_name('default-key');
if (key.extraClassName != null)
@@ -1844,13 +1854,20 @@ var KeyboardController = class {
this._onSourcesModified.bind(this));
this._currentSource = this._inputSourceManager.currentSource;
Main.inputMethod.connect('notify::content-purpose',
this._onContentPurposeHintsChanged.bind(this));
Main.inputMethod.connect('notify::content-hints',
this._onContentPurposeHintsChanged.bind(this));
Main.inputMethod.connect('input-panel-state', (o, state) => {
this.emit('panel-state', state);
});
this._notifyContentPurposeId = Main.inputMethod.connect(
'notify::content-purpose', this._onContentPurposeHintsChanged.bind(this));
this._notifyContentHintsId = Main.inputMethod.connect(
'notify::content-hints', this._onContentPurposeHintsChanged.bind(this));
this._notifyInputPanelStateId = Main.inputMethod.connect(
'input-panel-state', (o, state) => this.emit('panel-state', state));
}
destroy() {
this._inputSourceManager.disconnect(this._sourceChangedId);
this._inputSourceManager.disconnect(this._sourcesModifiedId);
Main.inputMethod.disconnect(this._notifyContentPurposeId);
Main.inputMethod.disconnect(this._notifyContentHintsId);
Main.inputMethod.disconnect(this._notifyInputPanelStateId);
}
_onSourcesModified() {

View File

@@ -738,7 +738,7 @@ var LayoutManager = GObject.registerClass({
showKeyboard() {
this.keyboardBox.show();
this.keyboardBox.ease({
anchor_y: this.keyboardBox.height,
translation_y: -this.keyboardBox.height,
opacity: 255,
duration: KEYBOARD_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_QUAD,
@@ -755,7 +755,7 @@ var LayoutManager = GObject.registerClass({
this._updateRegions();
this._keyboardHeightNotifyId = this.keyboardBox.connect('notify::height', () => {
this.keyboardBox.anchor_y = this.keyboardBox.height;
this.keyboardBox.translation_y = -this.keyboardBox.height;
});
}
@@ -765,7 +765,7 @@ var LayoutManager = GObject.registerClass({
this._keyboardHeightNotifyId = 0;
}
this.keyboardBox.ease({
anchor_y: 0,
translation_y: this.keyboardBox.height,
opacity: 0,
duration: immediate ? 0 : KEYBOARD_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_IN_QUAD,

View File

@@ -244,6 +244,12 @@ function objectToString(o) {
// special case this since the default is way, way too verbose
return '<js function>';
} else {
if (o === undefined)
return 'undefined';
if (o === null)
return 'null';
return o.toString();
}
}

View File

@@ -127,6 +127,10 @@ var Magnifier = class Magnifier {
* Show the system mouse pointer.
*/
showSystemCursor() {
const seat = Clutter.get_default_backend().get_default_seat();
if (seat.is_unfocus_inhibited())
seat.uninhibit_unfocus();
this._cursorTracker.set_pointer_visible(true);
}
@@ -135,6 +139,10 @@ var Magnifier = class Magnifier {
* Hide the system mouse pointer.
*/
hideSystemCursor() {
const seat = Clutter.get_default_backend().get_default_seat();
if (!seat.is_unfocus_inhibited())
seat.inhibit_unfocus();
this._cursorTracker.set_pointer_visible(false);
}
@@ -169,7 +177,7 @@ var Magnifier = class Magnifier {
// Make sure system mouse pointer is shown when all zoom regions are
// invisible.
if (!activate)
this._cursorTracker.set_pointer_visible(true);
this.showSystemCursor();
// Notify interested parties of this change
this.emit('active-changed', activate);

View File

@@ -161,6 +161,8 @@ function _initializeUI() {
_loadOskLayouts();
_loadDefaultStylesheet();
new AnimationsSettings();
// Setup the stage hierarchy early
layoutManager = new Layout.LayoutManager();
@@ -758,3 +760,46 @@ function showRestartMessage(message) {
let restartMessage = new RestartMessage(message);
restartMessage.open();
}
var AnimationsSettings = class {
constructor() {
let backend = Meta.get_backend();
if (!backend.is_rendering_hardware_accelerated()) {
St.Settings.get().inhibit_animations();
return;
}
let isXvnc = Shell.util_has_x11_display_extension(
global.display, 'VNC-EXTENSION');
if (isXvnc) {
St.Settings.get().inhibit_animations();
return;
}
let remoteAccessController = backend.get_remote_access_controller();
if (!remoteAccessController)
return;
this._handles = new Set();
remoteAccessController.connect('new-handle',
(_, handle) => this._onNewRemoteAccessHandle(handle));
}
_onRemoteAccessHandleStopped(handle) {
let settings = St.Settings.get();
settings.uninhibit_animations();
this._handles.delete(handle);
}
_onNewRemoteAccessHandle(handle) {
if (!handle.get_disable_animations())
return;
let settings = St.Settings.get();
settings.inhibit_animations();
this._handles.add(handle);
handle.connect('stopped', this._onRemoteAccessHandleStopped.bind(this));
}
};

View File

@@ -251,6 +251,10 @@ class MediaSection extends MessageList.MessageListSection {
return !this.empty && Calendar.isToday(this._date);
}
get allowed() {
return !Main.sessionMode.isGreeter;
}
_addPlayer(busName) {
if (this._players.get(busName))
return;

View File

@@ -270,7 +270,11 @@ var Overview = class {
}
_sessionUpdated() {
this.isDummy = !Main.sessionMode.hasOverview;
const { hasOverview } = Main.sessionMode;
if (!hasOverview)
this.hide();
this.isDummy = !hasOverview;
this._createOverview();
}

View File

@@ -533,6 +533,9 @@ class PanelCorner extends St.DrawingArea {
if (index < 0)
return null;
if (!(children[index] instanceof St.Widget))
return null;
if (!children[index].has_style_class_name('panel-menu') &&
!children[index].has_style_class_name('panel-button'))
return this._findRightmostButton(children[index]);
@@ -558,6 +561,9 @@ class PanelCorner extends St.DrawingArea {
if (index == children.length)
return null;
if (!(children[index] instanceof St.Widget))
return null;
if (!children[index].has_style_class_name('panel-menu') &&
!children[index].has_style_class_name('panel-button'))
return this._findLeftmostButton(children[index]);

View File

@@ -191,9 +191,10 @@ class CapsLockWarning extends St.Label {
this.remove_all_transitions();
const { naturalHeightSet } = this;
this.natural_height_set = false;
let [, height] = this.get_preferred_height(-1);
this.natural_height_set = true;
this.natural_height_set = naturalHeightSet;
this.ease({
height: capsLockOn ? height : 0,

View File

@@ -43,7 +43,9 @@ var Slider = GObject.registerClass({
let [hasHandleColor, handleBorderColor] =
themeNode.lookup_color('-slider-handle-border-color', false);
let handleX = handleRadius + (width - 2 * handleRadius) * this._value / this._maxValue;
let wholeHandleRadius = Math.ceil(handleRadius);
let handleX = wholeHandleRadius +
(width - 2 * wholeHandleRadius) * this._value / this._maxValue;
let handleY = height / 2;
let color = themeNode.get_foreground_color();

View File

@@ -715,7 +715,8 @@ var InputSourceManager = class {
if (!window)
return;
if (window._inputSources != this._inputSources) {
if (!window._inputSources ||
window._inputSources !== this._inputSources) {
window._inputSources = this._inputSources;
window._currentSource = this._getNewInputSource(window._currentSource);
}

View File

@@ -58,7 +58,7 @@ const TouchpadSwipeGesture = GObject.registerClass({
this._orientation = Clutter.Orientation.VERTICAL;
this._enabled = true;
global.stage.connect('captured-event', this._handleEvent.bind(this));
global.stage.connect('captured-event::touchpad', this._handleEvent.bind(this));
}
get enabled() {

View File

@@ -130,7 +130,7 @@ var SwitcherPopup = GObject.registerClass({
let [x_, y_, mods] = global.get_pointer();
if (!(mods & this._modifierMask)) {
this._finish(global.get_current_time());
return false;
return true;
}
} else {
this._resetNoModsTimeout();
@@ -228,7 +228,9 @@ var SwitcherPopup = GObject.registerClass({
}
vfunc_scroll_event(scrollEvent) {
this._scrollHandler(scrollEvent.scroll_direction);
this._disableHover();
this._scrollHandler(scrollEvent.direction);
return Clutter.EVENT_PROPAGATE;
}
@@ -253,7 +255,15 @@ var SwitcherPopup = GObject.registerClass({
_itemRemovedHandler(n) {
if (this._items.length > 0) {
let newIndex = Math.min(n, this._items.length - 1);
let newIndex;
if (n < this._selectedIndex)
newIndex = this._selectedIndex - 1;
else if (n === this._selectedIndex)
newIndex = Math.min(n, this._items.length - 1);
else if (n > this._selectedIndex)
return; // No need to select something new in this case
this._select(newIndex);
} else {
this.fadeAndDestroy();
@@ -417,9 +427,8 @@ var SwitcherList = GObject.registerClass({
bbox.set_child(item);
this._list.add_actor(bbox);
let n = this._items.length;
bbox.connect('clicked', () => this._onItemClicked(n));
bbox.connect('motion-event', () => this._onItemEnter(n));
bbox.connect('clicked', () => this._onItemClicked(bbox));
bbox.connect('motion-event', () => this._onItemEnter(bbox));
bbox.label_actor = label;
@@ -434,16 +443,23 @@ var SwitcherList = GObject.registerClass({
this.emit('item-removed', index);
}
_onItemClicked(index) {
this._itemActivated(index);
addAccessibleState(index, state) {
this._items[index].add_accessible_state(state);
}
_onItemEnter(index) {
removeAccessibleState(index, state) {
this._items[index].remove_accessible_state(state);
}
_onItemClicked(item) {
this._itemActivated(this._items.indexOf(item));
}
_onItemEnter(item) {
// Avoid reentrancy
if (index != this._currentItemEntered) {
this._currentItemEntered = index;
this._itemEntered(index);
}
if (item !== this._items[this._highlighted])
this._itemEntered(this._items.indexOf(item));
return Clutter.EVENT_PROPAGATE;
}
@@ -468,40 +484,40 @@ var SwitcherList = GObject.registerClass({
let [result_, posX, posY_] = this.transform_stage_point(absItemX, 0);
let [containerWidth] = this.get_transformed_size();
if (posX + this._items[index].get_width() > containerWidth)
this._scrollToRight();
this._scrollToRight(index);
else if (this._items[index].allocation.x1 - value < 0)
this._scrollToLeft();
this._scrollToLeft(index);
}
_scrollToLeft() {
_scrollToLeft(index) {
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values();
let item = this._items[this._highlighted];
let item = this._items[index];
if (item.allocation.x1 < value)
value = Math.min(0, item.allocation.x1);
value = Math.max(0, item.allocation.x1);
else if (item.allocation.x2 > value + pageSize)
value = Math.max(upper, item.allocation.x2 - pageSize);
value = Math.min(upper, item.allocation.x2 - pageSize);
this._scrollableRight = true;
adjustment.ease(value, {
progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: POPUP_SCROLL_TIME,
onComplete: () => {
if (this._highlighted == 0)
if (index === 0)
this._scrollableLeft = false;
this.queue_relayout();
},
});
}
_scrollToRight() {
_scrollToRight(index) {
let adjustment = this._scrollView.hscroll.adjustment;
let [value, lower_, upper, stepIncrement_, pageIncrement_, pageSize] = adjustment.get_values();
let item = this._items[this._highlighted];
let item = this._items[index];
if (item.allocation.x1 < value)
value = Math.max(0, item.allocation.x1);
@@ -513,7 +529,7 @@ var SwitcherList = GObject.registerClass({
progress_mode: Clutter.AnimationMode.EASE_OUT_QUAD,
duration: POPUP_SCROLL_TIME,
onComplete: () => {
if (this._highlighted == this._items.length - 1)
if (index === this._items.length - 1)
this._scrollableRight = false;
this.queue_relayout();
},

View File

@@ -18,8 +18,6 @@ const IDLE_TIMEOUT = 2 * 60;
// The timeout before showing the unlock hint (in seconds)
const HINT_TIMEOUT = 4;
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
const CROSSFADE_TIME = 300;
const FADE_OUT_TRANSLATION = 200;
const FADE_OUT_SCALE = 0.3;
@@ -478,7 +476,6 @@ var UnlockDialog = GObject.registerClass({
accessible_role: Atk.Role.WINDOW,
style_class: 'login-dialog',
visible: false,
can_focus: true,
reactive: true,
});
@@ -558,12 +555,14 @@ var UnlockDialog = GObject.registerClass({
// Switch User button
this._otherUserButton = new St.Button({
style_class: 'modal-dialog-button button switch-user-button',
can_focus: true,
reactive: true,
accessible_name: _('Log in as another user'),
reactive: false,
opacity: 0,
x_align: Clutter.ActorAlign.END,
y_align: Clutter.ActorAlign.END,
child: new St.Icon({ icon_name: 'system-users-symbolic' }),
});
this._otherUserButton.set_pivot_point(0.5, 0.5);
this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this));
let screenSaverSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.screensaver' });
@@ -571,7 +570,7 @@ var UnlockDialog = GObject.registerClass({
this._otherUserButton, 'visible', Gio.SettingsBindFlags.GET);
// Main Box
let mainBox = new Clutter.Actor();
let mainBox = new St.Widget();
mainBox.add_constraint(new Layout.MonitorConstraint({ primary: true }));
mainBox.add_child(this._stack);
mainBox.add_child(this._notificationsBox);
@@ -624,7 +623,6 @@ var UnlockDialog = GObject.registerClass({
container: widget,
monitorIndex,
controlPosition: false,
settingsSchema: SCREENSAVER_SCHEMA,
});
this._bgManagers.push(bgManager);
@@ -669,7 +667,7 @@ var UnlockDialog = GObject.registerClass({
this._promptBox.add_child(this._authPrompt);
this._authPrompt.reset();
this._updateSensitivity(true);
this._authPrompt.updateSensitivity(true);
}
_maybeDestroyAuthPrompt() {
@@ -685,13 +683,6 @@ var UnlockDialog = GObject.registerClass({
}
}
_updateSensitivity(sensitive) {
this._authPrompt.updateSensitivity(sensitive);
this._otherUserButton.reactive = sensitive;
this._otherUserButton.can_focus = sensitive;
}
_showClock() {
if (this._activePage === this._clock)
return;
@@ -723,6 +714,11 @@ var UnlockDialog = GObject.registerClass({
this._promptBox.visible = progress > 0;
this._clock.visible = progress < 1;
this._otherUserButton.set({
reactive: progress > 0,
can_focus: progress > 0,
});
const { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
this._promptBox.set({
@@ -738,6 +734,12 @@ var UnlockDialog = GObject.registerClass({
scale_y: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * (1 - progress),
translation_y: -FADE_OUT_TRANSLATION * progress * scaleFactor,
});
this._otherUserButton.set({
opacity: 255 * progress,
scale_x: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress,
scale_y: FADE_OUT_SCALE + (1 - FADE_OUT_SCALE) * progress,
});
}
_fail() {

View File

@@ -7,7 +7,6 @@ const { Clutter, GLib, GObject, St } = imports.gi;
const Params = imports.misc.params;
const UNKNOWN_AVATAR_ICON_SIZE = -1;
var AVATAR_ICON_SIZE = 64;
// Adapted from gdm/gui/user-switch-applet/applet.c
@@ -22,7 +21,7 @@ class Avatar extends St.Bin {
params = Params.parse(params, {
styleClass: 'user-icon',
reactive: false,
iconSize: UNKNOWN_AVATAR_ICON_SIZE,
iconSize: AVATAR_ICON_SIZE,
});
super._init({
@@ -72,20 +71,11 @@ class Avatar extends St.Bin {
}
}
_getIconSize() {
if (this._iconSize !== UNKNOWN_AVATAR_ICON_SIZE)
return this._iconSize;
else
return AVATAR_ICON_SIZE;
}
setSensitive(sensitive) {
this.reactive = sensitive;
}
update() {
let iconSize = this._getIconSize();
let iconFile = null;
if (this._user) {
iconFile = this._user.get_icon_file();
@@ -93,13 +83,13 @@ class Avatar extends St.Bin {
iconFile = null;
}
let { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
this.set_size(
this._iconSize * scaleFactor,
this._iconSize * scaleFactor);
if (iconFile) {
this.child = null;
let { scaleFactor } = St.ThemeContext.get_for_stage(global.stage);
this.set_size(
iconSize * scaleFactor,
iconSize * scaleFactor);
this.style = `
background-image: url("${iconFile}");
background-size: cover;`;
@@ -107,7 +97,7 @@ class Avatar extends St.Bin {
this.style = null;
this.child = new St.Icon({
icon_name: 'avatar-default-symbolic',
icon_size: iconSize,
icon_size: this._iconSize,
});
}
}

View File

@@ -44,7 +44,7 @@ function getTermsForSearchString(searchString) {
var TouchpadShowOverviewAction = class {
constructor(actor) {
actor.connect('captured-event', this._handleEvent.bind(this));
actor.connect('captured-event::touchpad', this._handleEvent.bind(this));
}
_handleEvent(actor, event) {

View File

@@ -896,12 +896,34 @@ var WindowManager = class {
}
});
global.display.connect('x11-display-opened', () => {
global.display.connect('init-xserver', (display, task) => {
IBusManager.getIBusManager().restartDaemon(['--xim']);
Shell.util_start_systemd_unit('gnome-session-x11-services.target', 'fail');
Shell.util_start_systemd_unit('gsd-xsettings.target', 'fail');
/* 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);
task.return_boolean(false);
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', () => {
Shell.util_stop_systemd_unit('gnome-session-x11-services.target', 'fail');
Shell.util_stop_systemd_unit('gsd-xsettings.target', 'fail');
IBusManager.getIBusManager().restartDaemon();
});
@@ -1259,7 +1281,6 @@ var WindowManager = class {
actorClone.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS);
actorClone.set_position(oldFrameRect.x, oldFrameRect.y);
actorClone.set_size(oldFrameRect.width, oldFrameRect.height);
Main.uiGroup.add_actor(actorClone);
if (this._clearAnimationInfo(actor))
this._shellwm.completed_size_change(actor);
@@ -1290,6 +1311,8 @@ var WindowManager = class {
this._resizePending.delete(actor);
this._resizing.add(actor);
Main.uiGroup.add_child(actorClone);
// Now scale and fade out the clone
actorClone.ease({
x: targetRect.x,

View File

@@ -578,6 +578,8 @@ var WindowOverlay = class {
border.remove_all_transitions();
title.remove_all_transitions();
title.ensure_style();
let [cloneX, cloneY, cloneWidth, cloneHeight] = this._windowClone.slot;
let layout = Meta.prefs_get_button_layout();

View File

@@ -1,5 +1,5 @@
project('gnome-shell', 'c',
version: '3.35.91',
version: '3.35.92',
meson_version: '>= 0.47.0',
license: 'GPLv2+'
)
@@ -19,13 +19,13 @@ cogl_pango_pc = 'mutter-cogl-pango-' + mutter_api_version
libmutter_pc = 'libmutter-' + mutter_api_version
ecal_req = '>= 3.33.1'
eds_req = '>= 3.17.2'
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'
gtk_req = '>= 3.15.0'
mutter_req = '>= 3.35.91'
mutter_req = '>= 3.35.92'
polkit_req = '>= 0.100'
schemas_req = '>= 3.33.1'
startup_req = '>= 0.11'

View File

@@ -74,6 +74,7 @@ js/ui/windowAttentionHandler.js
js/ui/windowManager.js
js/ui/windowMenu.js
src/calendar-server/evolution-calendar.desktop.in
src/calendar-server/reminder-watcher.c
src/main.c
src/shell-app.c
src/shell-app-system.c

723
po/ca.po

File diff suppressed because it is too large Load Diff

921
po/da.po

File diff suppressed because it is too large Load Diff

1579
po/el.po

File diff suppressed because it is too large Load Diff

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-02-06 19:01+0000\n"
"PO-Revision-Date: 2020-02-08 13:02+0000\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"
@@ -408,11 +408,11 @@ 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/gdm/authPrompt.js:170
#: 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:166 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:910
#: 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"
@@ -490,7 +490,6 @@ msgid "Website"
msgstr "Website"
#: js/extensionPrefs/ui/extension-row.ui:192
#| msgid "Remove"
msgid "Remove…"
msgstr "Remove…"
@@ -529,7 +528,6 @@ msgid "Manually Installed"
msgstr "Manually Installed"
#: js/extensionPrefs/ui/extensions-window.ui:157
#| msgid "Built-in Only"
msgid "Built-In"
msgstr "Built-In"
@@ -546,35 +544,30 @@ msgstr ""
"extensions. Make sure you are logged into GNOME and try again."
#: js/extensionPrefs/ui/extensions-window.ui:287
#| msgid "Log Out"
msgid "Log Out…"
msgstr "Log Out…"
#: js/gdm/authPrompt.js:184 js/gdm/authPrompt.js:237 js/gdm/authPrompt.js:468
msgid "Next"
msgstr "Next"
#. Cisco LEAP
#: 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"
#: js/gdm/authPrompt.js:233 js/ui/shellMountOperation.js:380
#: js/ui/unlockDialog.js:44
msgid "Unlock"
msgstr "Unlock"
#: js/gdm/authPrompt.js:235
msgctxt "button"
msgid "Sign In"
msgstr "Sign In"
#: js/gdm/loginDialog.js:319
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Choose Session"
#: js/gdm/loginDialog.js:461
#: js/gdm/loginDialog.js:457
msgid "Not listed?"
msgstr "Not listed?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:895
#: js/gdm/loginDialog.js:912
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(e.g., user or %s)"
@@ -582,12 +575,13 @@ 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:899 js/ui/components/networkAgent.js:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Username: "
#: 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"
#: js/gdm/loginDialog.js:1230
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Login Window"
@@ -812,11 +806,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Hotspot Login"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -851,27 +845,27 @@ msgid "All"
msgstr "All"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Open Windows"
#: js/ui/appDisplay.js:2474 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:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Launch using Dedicated Graphics Card"
#: js/ui/appDisplay.js:2513 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:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Add to Favourites"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Show Details"
@@ -1096,40 +1090,36 @@ msgstr ""
"Alternatively you can connect by pushing the “WPS” button on your router."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Connect"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Password: "
#: js/ui/components/networkAgent.js:208
#| msgid "Key: "
msgid "Key"
msgstr "Key"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Key: "
#: 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:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Private key password: "
#: js/ui/components/networkAgent.js:267
#| msgid "Identity: "
msgid "Identity"
msgstr "Identity"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Identity: "
#: js/ui/components/networkAgent.js:281
#| msgid "Service: "
msgid "Service"
msgstr "Service"
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Service: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1138,42 +1128,44 @@ msgstr ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: 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:313
msgid "Network name: "
msgstr "Network name: "
#: js/ui/components/networkAgent.js:317
#| msgid "Network name: "
msgid "Network name"
msgstr "Network name"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL authentication"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: 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:326 js/ui/components/networkAgent.js:696
#: 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:327
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:331
#| msgid "PIN: "
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Network Manager"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN password"
@@ -1197,10 +1189,6 @@ msgstr "Authenticate"
msgid "Sorry, that didnt work. Please try again."
msgstr "Sorry, that didnt work. Please try again."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Enter Password…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1412,21 +1400,20 @@ msgstr "%s (remote)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Install"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Install Extension"
#: js/ui/extensionDownloader.js:177
#: 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:228
#| msgid "No Extensions Installed"
msgid "Extension Updates Available"
msgstr "Extension Updates Available"
@@ -1509,13 +1496,13 @@ msgid "Leave On"
msgstr "Leave On"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Turn On"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1529,59 +1516,59 @@ msgstr "Leave Off"
msgid "Region & Language Settings"
msgstr "Region & Language Settings"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "No extensions installed"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s has not emitted any errors."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Hide Errors"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Show Errors"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Enabled"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Disabled"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Error"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Out of date"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Downloading"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "View Source"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Web Page"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Logged in as a privileged user"
#: js/ui/main.js:268
#: 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."
@@ -1589,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:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Screen Lock disabled"
#: js/ui/main.js:275
#: 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:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "System Information"
@@ -1624,8 +1611,9 @@ msgstr "Overview"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search…"
msgstr "Type to search"
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Type to search"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1651,23 +1639,23 @@ msgstr "Assign keystroke"
msgid "Done"
msgstr "Done"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Edit…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "None"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Press a button to configure"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Press Esc to exit"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Press any key to exit"
@@ -1706,31 +1694,7 @@ msgstr "Restart is not available on Wayland"
msgid "Restarting…"
msgstr "Restarting…"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/screenShield.js:82
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: js/ui/screenShield.js:139
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d new message"
msgstr[1] "%d new messages"
#: js/ui/screenShield.js:141
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d new notification"
msgstr[1] "%d new notifications"
#: js/ui/screenShield.js:454 js/ui/status/system.js:103
msgid "Lock"
msgstr "Lock"
#: js/ui/screenShield.js:717
#: js/ui/screenShield.js:203
msgid "GNOME needs to lock the screen"
msgstr "GNOME needs to lock the screen"
@@ -1741,11 +1705,11 @@ msgstr "GNOME needs to lock the screen"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:830 js/ui/screenShield.js:1301
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Unable to lock"
#: js/ui/screenShield.js:831 js/ui/screenShield.js:1302
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Lock was blocked by an application"
@@ -1805,13 +1769,18 @@ msgstr ""
"To unlock a volume that uses keyfiles, use the <i>%s</i> utility instead."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number…"
msgstr "Enter PIM Number"
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "PIM Number"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
msgstr "Remember Password"
#: js/ui/shellMountOperation.js:380
msgid "Unlock"
msgstr "Unlock"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:391
#, javascript-format
@@ -1882,7 +1851,7 @@ msgstr "Large Text"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Bluetooth Settings"
@@ -1926,11 +1895,11 @@ msgstr "Secondary Click"
msgid "Dwell Click"
msgstr "Dwell Click"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Keyboard"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Show Keyboard Layout"
@@ -1977,7 +1946,7 @@ msgid "<unknown>"
msgstr "<unknown>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s Off"
@@ -2003,7 +1972,7 @@ msgid "%s Disconnecting"
msgstr "%s Disconnecting"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s Connecting"
@@ -2043,7 +2012,7 @@ msgid "Mobile Broadband Settings"
msgstr "Mobile Broadband Settings"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Hardware Disabled"
@@ -2055,125 +2024,125 @@ msgstr "%s Hardware Disabled"
msgid "%s Disabled"
msgstr "%s Disabled"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Connect to Internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Aeroplane Mode is On"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi is disabled when aeroplane mode is on."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Turn Off Aeroplane Mode"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Wi-Fi is Off"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi needs to be turned on in order to connect to a network."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Turn On Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Wi-Fi Networks"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Select a network"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "No Networks"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Use hardware switch to turn off"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Select Network"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Wi-Fi Settings"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Hotspot Active"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Not Connected"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "connecting…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "authentication required"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "connection failed"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPN Settings"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN Off"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Network Settings"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Wired Connection"
msgstr[1] "%s Wired Connections"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Wi-Fi Connection"
msgstr[1] "%s Wi-Fi Connections"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Modem Connection"
msgstr[1] "%s Modem Connections"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Connection failed"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Activation of network connection failed"
@@ -2243,6 +2212,10 @@ msgstr "Turn off"
msgid "Airplane Mode On"
msgstr "Aeroplane Mode On"
#: js/ui/status/system.js:103
msgid "Lock"
msgstr "Lock"
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Power Off / Log Out"
@@ -2267,11 +2240,11 @@ msgstr "Power Off…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Unknown Thunderbolt device"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2279,21 +2252,21 @@ msgstr ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Unauthorised Thunderbolt device"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"New device has been detected and needs to be authorised by an administrator."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt authorisation error"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Could not authorise the Thunderbolt device: %s"
@@ -2334,11 +2307,23 @@ msgstr "External Only"
msgid "Built-in Only"
msgstr "Built-in Only"
#: js/ui/unlockDialog.js:52
msgid "Log in as another user"
msgstr "Log in as another user"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:67
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Swipe up to unlock"
#: 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:552
msgid "Unlock Window"
msgstr "Unlock Window"
@@ -2380,7 +2365,7 @@ msgstr[1] "Settings changes will revert in %d seconds"
#. 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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2563,7 +2548,7 @@ msgid "Create a new extension"
msgstr "Create a new extension"
#: subprojects/extensions-tool/src/command-create.c:280
#: subprojects/extensions-tool/src/command-list.c:158
#: subprojects/extensions-tool/src/command-list.c:168
msgid "Unknown arguments"
msgstr "Unknown arguments"
@@ -2621,31 +2606,36 @@ msgstr "No extension bundle specified"
msgid "More than one extension bundle specified"
msgstr "More than one extension bundle specified"
#: subprojects/extensions-tool/src/command-list.c:118
#: subprojects/extensions-tool/src/command-list.c:125
msgid "Show user-installed extensions"
msgstr "Show user-installed extensions"
#: subprojects/extensions-tool/src/command-list.c:121
#: subprojects/extensions-tool/src/command-list.c:128
msgid "Show system-installed extensions"
msgstr "Show system-installed extensions"
#: subprojects/extensions-tool/src/command-list.c:124
#: subprojects/extensions-tool/src/command-list.c:131
msgid "Show enabled extensions"
msgstr "Show enabled extensions"
#: subprojects/extensions-tool/src/command-list.c:127
#: subprojects/extensions-tool/src/command-list.c:134
msgid "Show disabled extensions"
msgstr "Show disabled extensions"
#: subprojects/extensions-tool/src/command-list.c:130
#: subprojects/extensions-tool/src/command-list.c:137
msgid "Show extensions with preferences"
msgstr "Show extensions with preferences"
#: subprojects/extensions-tool/src/command-list.c:133
#: subprojects/extensions-tool/src/command-list.c:140
#| msgid "Show extensions with preferences"
msgid "Show extensions with updates"
msgstr "Show extensions with updates"
#: subprojects/extensions-tool/src/command-list.c:143
msgid "Print extension details"
msgstr "Print extension details"
#: subprojects/extensions-tool/src/command-list.c:141
#: subprojects/extensions-tool/src/command-list.c:151
msgid "List installed extensions"
msgstr "List installed extensions"
@@ -2828,6 +2818,35 @@ msgstr[1] "%u Inputs"
msgid "System Sounds"
msgstr "System Sounds"
#~ msgid "Next"
#~ msgstr "Next"
#~ msgctxt "button"
#~ msgid "Sign In"
#~ msgstr "Sign In"
#~ msgid "Password: "
#~ msgstr "Password: "
#~ msgid "Enter Password…"
#~ msgstr "Enter Password…"
#~ msgid "%A, %B %d"
#~ msgstr "%A, %d %B"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "%d new message"
#~ msgstr[1] "%d new messages"
#~ msgid "%d new notification"
#~ msgid_plural "%d new notifications"
#~ 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"
@@ -2843,9 +2862,6 @@ msgstr "System Sounds"
#~ msgid "Rename"
#~ msgstr "Rename"
#~ msgid "Password:"
#~ msgstr "Password:"
#~ msgid "Type again:"
#~ msgstr "Type again:"

188
po/es.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 14:55+0100\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-18 11:06+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
@@ -425,9 +425,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Cancelar"
@@ -561,9 +561,9 @@ msgstr "Cerrar la sesión…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 js/ui/components/polkitAgent.js:277
#: 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 "Contraseña"
@@ -586,9 +586,8 @@ msgstr "(ej., usuario o %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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#| msgid "Username: "
#: 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 "Nombre de usuario"
@@ -817,11 +816,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Inicio de sesión en el punto de acceso"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1101,37 +1100,32 @@ msgstr ""
"Alternativamente puede conectarse pulsando el botón «WPS» de su router."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Conectar"
#. static WEP
#: js/ui/components/networkAgent.js:207
#| msgid "Key: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Clave"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#| msgid "Private key password: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Contraseña de la clave privada"
#: js/ui/components/networkAgent.js:263
#| msgid "Identity: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identidad"
#: js/ui/components/networkAgent.js:277
#| msgid "Service: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Servicio"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Autenticación requerida"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1140,44 +1134,42 @@ msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada"
#: js/ui/components/networkAgent.js:313
#| msgid "Network name: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nombre de la red"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Código PIN requerido"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
#: js/ui/components/networkAgent.js:327
#| msgid "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Se requiere una contraseña para conectarse a «%s»."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Gestor de la red"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Contraseña de la VPN"
@@ -1416,15 +1408,15 @@ msgstr "%s (remoto)"
msgid "%s (console)"
msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Instalar"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Instalar extensión"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
@@ -1514,13 +1506,13 @@ msgid "Leave On"
msgstr "Dejar activada"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Encendido"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1602,7 +1594,7 @@ msgstr "Pantalla de bloqueo desactivada"
msgid "Screen Locking requires the GNOME display manager."
msgstr "La pantalla de bloqueo necesita el gestor de pantallas de GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Información del sistema"
@@ -1629,7 +1621,6 @@ msgstr "Vista general"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Escribir para buscar"
@@ -1657,23 +1648,23 @@ msgstr "Asignar pulsación"
msgid "Done"
msgstr "Hecho"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Editar…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Nada"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Pulse un botón para configurar"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Pulse Esc para salir"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Pulse cualquier tecla para salir"
@@ -1723,11 +1714,11 @@ msgstr "GNOME necesita bloquear la pantalla"
#.
#. 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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "No se pudo bloquear"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo"
@@ -1788,7 +1779,6 @@ msgstr ""
"%s</i> en su lugar."
#: js/ui/shellMountOperation.js:306
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "Número PIM"
@@ -1870,7 +1860,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Configuración de Bluetooth"
@@ -1967,7 +1957,7 @@ msgid "<unknown>"
msgstr "<desconocido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s apagada"
@@ -1993,7 +1983,7 @@ msgid "%s Disconnecting"
msgstr "Desconectando %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando %s"
@@ -2033,7 +2023,7 @@ msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware %s desactivado"
@@ -2045,125 +2035,125 @@ msgstr "Hardware %s desactivado"
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Conectar a Internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "El modo avión está activado"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "La Wi-Fi se desactiva cuando se activa el modo avión."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Apagar el modo avión"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "La Wi-Fi está desactivada"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Se debe activar la Wi-Fi para poder conectarse a la red."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Activar la Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Seleccionar una red"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "No hay redes"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Seleccionar red"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Punto de acceso %s activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s no conectado"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "se necesita autenticación"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "falló la conexión"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN apagada"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Configuración de la red"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexión cableada"
msgstr[1] "%s conexiones cableadas"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexión inalámbrica"
msgstr[1] "%s conexiones inalámbricas"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexión por módem"
msgstr[1] "%s conexiones por módem"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Falló la conexión"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@@ -2261,11 +2251,11 @@ msgstr "Apagar…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt desconocido"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2273,21 +2263,21 @@ msgstr ""
"Se ha detectado un dispositivo nuevo mientras estaba fuera. Desconéctelo y "
"vuélvalo a conectar para empezar a usarlo."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Dispositivo Thunderbolt no autorizado"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Se ha detectado un dispositivo nuevo y un administrador debe autorizarlo."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Error de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "No se pudo autorizar el dispositivo Thunderbolt: %s"
@@ -2328,6 +2318,22 @@ msgstr "Sólo la externa"
msgid "Built-in Only"
msgstr "Sólo la integrada"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A, %d de %B"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Deslizar para desbloquear"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Pulse con el ratón o un tecla para desbloquear"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Desbloquear ventana"
@@ -2370,7 +2376,7 @@ msgstr[1] "La configuración se revertirá en %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"

345
po/eu.po
View File

@@ -8,8 +8,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-02-06 19:01+0000\n"
"PO-Revision-Date: 2020-02-08 10:00+0100\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-19 10:00+0100\n"
"Last-Translator: Asier Sarasua Garmendia <asier.sarasua@gmail.com>\n"
"Language-Team: Basque <librezale@librezale.eus>\n"
"Language: eu\n"
@@ -362,11 +362,11 @@ msgid ""
"to enable it again"
msgstr "Hedapena kentzen bada, berriro deskargatu beharko da atzera gaitu nahi bada."
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:170
#: 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:166 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:910
#: 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 "Utzi"
@@ -376,7 +376,7 @@ msgstr "Kendu"
#: js/extensionPrefs/main.js:217
msgid "translator-credits"
msgstr "Asier Sarasua Garmendia <asier.sarasua@gmail.com>"
msgstr "translator-credits"
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
@@ -486,31 +486,26 @@ msgstr "Barkatu, ezin izan da instalatutako hedapenen zerrenda eskuratu. Ziurtat
msgid "Log Out…"
msgstr "Amaitu saioa…"
#: js/gdm/authPrompt.js:184 js/gdm/authPrompt.js:237 js/gdm/authPrompt.js:468
msgid "Next"
msgstr "Hurrengoa"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 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 "Pasahitza"
#: js/gdm/authPrompt.js:233 js/ui/shellMountOperation.js:380
#: js/ui/unlockDialog.js:44
msgid "Unlock"
msgstr "Desblokeatu"
#: js/gdm/authPrompt.js:235
msgctxt "button"
msgid "Sign In"
msgstr "Hasi saioa"
#: js/gdm/loginDialog.js:319
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Aukeratu saioa"
#: js/gdm/loginDialog.js:461
#: js/gdm/loginDialog.js:457
msgid "Not listed?"
msgstr "Ez zaude zerrendan?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:895
#: js/gdm/loginDialog.js:912
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(adib., erabiltzailea edo %s)"
@@ -518,12 +513,12 @@ msgstr "(adib., erabiltzailea edo %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:899 js/ui/components/networkAgent.js:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Erabiltzaile-izena: "
#: 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 "Erabiltzaile-izena"
#: js/gdm/loginDialog.js:1230
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Saio-hasierako leihoa"
@@ -748,11 +743,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%B %-d %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Wifigunearen saio-hasiera"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1027,82 +1022,74 @@ msgid ""
msgstr "Bestela, zure routerreko \"WPS\" botoia sakatuta konektatu zaitezke."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Konektatu"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Pasahitza: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Gakoa"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Gakoa: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Gako pribatuaren pasahitza"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Gako pribatuaren pasahitza: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identitatea"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Identitatea: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Zerbitzua"
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Zerbitzua: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Autentifikazioa behar da"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "Pasahitzak edo zifratze-gakoak behar dira haririk gabeko '%s' sarera sarbidetzeko."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Haridun 802.1X autentifikazioa"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Sarearen izena: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Sarearen izena"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL autentifikazioa"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN kodea behar da"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN kodea behar da banda zabal mugikorreko gailuarentzako"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PINa: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PINa"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Pasahitza behar da '%s'(e)ra konektatzeko."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Sarearen kudeatzailea"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN pasahitza"
@@ -1126,10 +1113,6 @@ msgstr "Autentifikatu"
msgid "Sorry, that didnt work. Please try again."
msgstr "Huts egin du. Saiatu berriro."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Sartu pasahitza…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1337,15 +1320,15 @@ msgstr "%s (urrunekoa)"
msgid "%s (console)"
msgstr "%s (kontsola)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Instalatu"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Instalatu hedapena"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Deskargatu eta instalatu “%s” extensions.gnome.org gunetik?"
@@ -1426,13 +1409,13 @@ msgid "Leave On"
msgstr "Utzi piztuta"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Piztu"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1512,7 +1495,7 @@ msgstr "Pantailaren blokeoa desgaituta dago"
msgid "Screen Locking requires the GNOME display manager."
msgstr "Pantaila blokeatzeko GNOMEren pantaila-kudeatzailea behar da."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Sistemaren informazioa"
@@ -1539,8 +1522,8 @@ msgstr "Aurkezpen orokorra"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "Idatzi bilaketa…"
msgid "Type to search"
msgstr "Idatzi bilatzeko"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1566,23 +1549,23 @@ msgstr "Esleitu tekla-sakatzea"
msgid "Done"
msgstr "Eginda"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Editatu…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Bat ere ez"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Sakatu botoi bat konfiguratzeko"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Sakatu Ihes irteteko"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Sakatu edozer tekla irteteko"
@@ -1621,31 +1604,7 @@ msgstr "Berrabiaraztea ez dago erabilgarri Wayland-en"
msgid "Restarting…"
msgstr "Berrabiarazten…"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/screenShield.js:82
msgid "%A, %B %d"
msgstr "%A, %B %d"
#: js/ui/screenShield.js:139
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "Mezu berri %d"
msgstr[1] "%d mezu berri"
#: js/ui/screenShield.js:141
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "Jakinarazpen berri %d"
msgstr[1] "%d jakinarazpen berri"
#: js/ui/screenShield.js:454 js/ui/status/system.js:103
msgid "Lock"
msgstr "Blokeatu"
#: js/ui/screenShield.js:717
#: js/ui/screenShield.js:203
msgid "GNOME needs to lock the screen"
msgstr "GNOMEk pantaila blokeatzea behar du"
@@ -1656,11 +1615,11 @@ msgstr "GNOMEk pantaila blokeatzea behar du"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: js/ui/screenShield.js:830 js/ui/screenShield.js:1301
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Ezin da blokeatu"
#: js/ui/screenShield.js:831 js/ui/screenShield.js:1302
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Beste aplikazio batek blokeatu du"
@@ -1719,13 +1678,17 @@ msgid ""
msgstr "Gako-fitxategiak erabiltzen dituen bolumen bat desmuntatzeko, erabili <i>%s</i> utilitatea"
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "Sartu PIM zenbakia"
msgid "PIM Number"
msgstr "PIM zenbakia"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
msgstr "Gogoratu pasahitza"
#: js/ui/shellMountOperation.js:380
msgid "Unlock"
msgstr "Desblokeatu"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:391
#, javascript-format
@@ -1796,7 +1759,7 @@ msgstr "Testu handia"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Bluetooth ezarpenak"
@@ -1891,7 +1854,7 @@ msgid "<unknown>"
msgstr "<ezezaguna>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "'%s' itzalita"
@@ -1917,7 +1880,7 @@ msgid "%s Disconnecting"
msgstr "'%s' deskonektatzen"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "'%s' konektatzen"
@@ -1957,7 +1920,7 @@ msgid "Mobile Broadband Settings"
msgstr "Banda zabal mugikorraren ezarpenak"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "'%s' hardwarea desgaituta"
@@ -1969,125 +1932,125 @@ msgstr "'%s' hardwarea desgaituta"
msgid "%s Disabled"
msgstr "'%s' desgaituta"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Konektatu Internetera"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Hegazkin modua piztuta"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Haririk gabekoa desgaitu egiten da hegazkin modua piztean."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Itzali hegazkin modua"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Haririk gabekoa itzalita"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Haririk gabekoa piztu egin behar da sare batera konektatzeko."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Piztu haririk gabekoa"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Wifi sareak"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Hautatu sare bat"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Sarerik ez"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Erabili hardwarearen aldatzailea itzaltzeko"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Hautatu sarea"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Haririk gabekoaren ezarpenak"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "'%s' wifigunea aktibo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "'%s' konektatu gabe"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "konektatzen…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "autentifikazioa behar da"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "konexioak huts egin du"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPNaren ezarpenak"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPNa"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPNa itzalita"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Sarearen ezarpenak"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s haridun konexioa"
msgstr[1] "%s haridun konexioak"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s haririk gabeko konexioa"
msgstr[1] "%s haririk gabeko konexioak"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modem konexioa"
msgstr[1] "%s modem konexioak"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Konexioak huts egin du"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Sareko konexioa aktibatzeak huts egin du"
@@ -2157,6 +2120,10 @@ msgstr "Desaktibatu"
msgid "Airplane Mode On"
msgstr "Hegazkin modua piztuta"
#: js/ui/status/system.js:103
msgid "Lock"
msgstr "Blokeatu"
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Itzaltzea / saioa amaitzea"
@@ -2181,30 +2148,30 @@ msgstr "Itzali…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Thunderbolt gailu ezezaguna"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
msgstr "Gailu berria detektatu da ez zeunden bitartean. Deskonektatu eta berriro konektatu gailua hura erabiltzen hasi ahal izateko."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Baimenik gabeko Thunderbolt gailua"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr "Gailu berria detektatu da eta administratzaile batek baimena eman behar dio."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt baimen-errorea"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Ezin izan da Thunderbolt gailua baimendu: %s"
@@ -2245,11 +2212,21 @@ msgstr "Kanpokoa soilik"
msgid "Built-in Only"
msgstr "Barnekoa soilik"
#: js/ui/unlockDialog.js:52
msgid "Log in as another user"
msgstr "Hasi saioa beste erabiltzaile baten gisan"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
msgid "%A %B %-d"
msgstr "%A %B %-d"
#: js/ui/unlockDialog.js:67
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Igaro hatza desblokeatzeko"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Egin klik edo sakatu tekla bat desblokeatzeko"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Desblokeatu leihoa"
@@ -2291,7 +2268,7 @@ msgstr[1] "Ezarpenen aldaketak %d segundotan alderantzikatuko dira"
#. 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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2470,7 +2447,7 @@ msgid "Create a new extension"
msgstr "Sortu hedapen berria"
#: subprojects/extensions-tool/src/command-create.c:280
#: subprojects/extensions-tool/src/command-list.c:158
#: subprojects/extensions-tool/src/command-list.c:168
msgid "Unknown arguments"
msgstr "Argumentu ezezagunak"
@@ -2528,31 +2505,35 @@ msgstr "Ez da hedapen-bildumarik zehaztu"
msgid "More than one extension bundle specified"
msgstr "Hedapen-bilduma bat baino gehiago zehaztu da"
#: subprojects/extensions-tool/src/command-list.c:118
#: subprojects/extensions-tool/src/command-list.c:125
msgid "Show user-installed extensions"
msgstr "Erakutsi erabiltzaileak instalatutako hedapenak"
#: subprojects/extensions-tool/src/command-list.c:121
#: subprojects/extensions-tool/src/command-list.c:128
msgid "Show system-installed extensions"
msgstr "Erakutsi sistemak instalatutako hedapenak"
#: subprojects/extensions-tool/src/command-list.c:124
#: subprojects/extensions-tool/src/command-list.c:131
msgid "Show enabled extensions"
msgstr "Erakutsi gaitutako hedapenak"
#: subprojects/extensions-tool/src/command-list.c:127
#: subprojects/extensions-tool/src/command-list.c:134
msgid "Show disabled extensions"
msgstr "Erakutsi desgaitutako hedapenak"
#: subprojects/extensions-tool/src/command-list.c:130
#: subprojects/extensions-tool/src/command-list.c:137
msgid "Show extensions with preferences"
msgstr "Erakutsi hobespenak dituzten hedapenak"
#: subprojects/extensions-tool/src/command-list.c:133
#: subprojects/extensions-tool/src/command-list.c:140
msgid "Show extensions with updates"
msgstr "Erakutsi eguneraketak dituzten hedapenak"
#: subprojects/extensions-tool/src/command-list.c:143
msgid "Print extension details"
msgstr "Inprimatu hedapenaren xehetasunak"
#: subprojects/extensions-tool/src/command-list.c:141
#: subprojects/extensions-tool/src/command-list.c:151
msgid "List installed extensions"
msgstr "Zerrendatu instalatutako hedapenak"
@@ -2735,6 +2716,35 @@ msgstr[1] "%u sarrera"
msgid "System Sounds"
msgstr "Sistemaren soinuak"
#~ msgid "Next"
#~ msgstr "Hurrengoa"
#~ msgctxt "button"
#~ msgid "Sign In"
#~ msgstr "Hasi saioa"
#~ msgid "Password: "
#~ msgstr "Pasahitza: "
#~ msgid "Enter Password…"
#~ msgstr "Sartu pasahitza…"
#~ msgid "%A, %B %d"
#~ msgstr "%A, %B %d"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "Mezu berri %d"
#~ msgstr[1] "%d mezu berri"
#~ msgid "%d new notification"
#~ msgid_plural "%d new notifications"
#~ msgstr[0] "Jakinarazpen berri %d"
#~ msgstr[1] "%d jakinarazpen berri"
#~ msgid "Log in as another user"
#~ msgstr "Hasi saioa beste erabiltzaile baten gisan"
#~ msgid "Browse in Software"
#~ msgstr "Arakatu softwarean"
@@ -2745,9 +2755,6 @@ msgstr "Sistemaren soinuak"
#~ msgid "Rename"
#~ msgstr "Aldatu izena"
#~ msgid "Password:"
#~ msgstr "Pasahitza:"
#~ msgid "Type again:"
#~ msgstr "Idatzi berriro:"

378
po/fa.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-12 19:34+0000\n"
"PO-Revision-Date: 2020-02-13 01:12+0000\n"
"POT-Creation-Date: 2020-02-27 21:57+0000\n"
"PO-Revision-Date: 2020-02-29 02:21+0000\n"
"Last-Translator: Danial Behzadi <dani.behzi@ubuntu.com>\n"
"Language-Team: Persian <>\n"
"Language: fa\n"
@@ -147,7 +147,7 @@ msgstr "نمای گزینش برنامه"
#: data/org.gnome.shell.gschema.xml.in:63
msgid "Index of the currently selected view in the application picker."
msgstr "اندیس نمای انتخاب شده در انتخابگر برنامه."
msgstr "اندیس نمای گزیده در گزینشگر برنامه."
#: data/org.gnome.shell.gschema.xml.in:69
msgid "History for command (Alt-F2) dialog"
@@ -373,7 +373,7 @@ msgstr ""
#: data/org.gnome.Shell.PortalHelper.desktop.in.in:3
msgid "Network Login"
msgstr "ورود به سامانه شبکه"
msgstr "ورود با شبکه"
#: js/extensionPrefs/main.js:140
#, javascript-format
@@ -386,11 +386,11 @@ msgid ""
"enable it again"
msgstr "اگر افزونه را بردارید، باید برای به کار انداختن دوباره‌اش، بارگیریش کنید"
#: 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:166
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:910
#: 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 "لغو"
@@ -421,7 +421,7 @@ msgstr ""
#: js/extensionPrefs/main.js:275
msgid "Technical Details"
msgstr "جزئیات فنّی"
msgstr "جزییات فنّی"
#: js/extensionPrefs/main.js:310
msgid "Copy Error"
@@ -439,8 +439,8 @@ msgstr "مشاهدهٔ صفحهٔ خانگی افزونه"
#, javascript-format
msgid "%d extension will be updated on next login."
msgid_plural "%d extensions will be updated on next login."
msgstr[0] "تعداد %d افزونه در ورود بعدی به‌روز خواهد شد."
msgstr[1] "تعداد %d افزونه در ورود بعدی به‌روز خواهند شد."
msgstr[0] "تعداد %Id افزونه در ورود بعدی به‌روز خواهد شد."
msgstr[1] "تعداد %Id افزونه در ورود بعدی به‌روز خواهند شد."
#: js/extensionPrefs/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
@@ -517,9 +517,18 @@ msgstr ""
msgid "Log Out…"
msgstr "خروج…"
#. Cisco LEAP
#: 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 "گذرواژه"
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "انتخاب نشست"
msgstr "گزینش نشست"
#: js/gdm/loginDialog.js:457
msgid "Not listed?"
@@ -532,11 +541,15 @@ msgstr "فهرست نشده؟"
msgid "(e.g., user or %s)"
msgstr "(برای مثال, کاربر یا %s)"
#: js/gdm/loginDialog.js:917
msgid "Username…"
msgstr "نام‌کاربری…"
#. 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:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "نام‌کاربری"
#: js/gdm/loginDialog.js:1252
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "پنجرهٔ ورود به سامانه"
@@ -595,7 +608,7 @@ msgstr "تعلیق"
#. Translators: A list of keywords that match the suspend action, separated by semicolons
#: js/misc/systemActions.js:116
msgid "suspend;sleep"
msgstr "تعلیق"
msgstr "suspend;sleep;تعلیق;خواب"
#. Translators: The name of the switch user action in search
#: js/misc/systemActions.js:121
@@ -691,7 +704,7 @@ msgstr[1] "%Id سال پیش"
#. Translators: Time in 24h format
#: js/misc/util.js:237
msgid "%H%M"
msgstr "%OH%OM"
msgstr "%OH:%OM"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30"
@@ -705,7 +718,7 @@ msgstr "دیروز، %OH:%OM"
#: js/misc/util.js:249
#, no-c-format
msgid "%A, %H%M"
msgstr "%A، %OH%OM"
msgstr "%A، %OH:%OM"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
@@ -713,7 +726,7 @@ msgstr "%A، %OH%OM"
#: js/misc/util.js:255
#, no-c-format
msgid "%B %-d, %H%M"
msgstr "%-Od %OB، %OH%OM"
msgstr "%-Od %OB، %OH:%OM"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
@@ -721,14 +734,14 @@ msgstr "%-Od %OB، %OH%OM"
#: js/misc/util.js:261
#, no-c-format
msgid "%B %-d %Y, %H%M"
msgstr "%-Od %OB %OY، %OH:%OM"
msgstr "%-Od %OB %Y، %OH:%OM"
#. Show only the time if date is on today
#. eslint-disable-line no-lonely-if
#. Translators: Time in 12h format
#: js/misc/util.js:266
msgid "%l%M %p"
msgstr "%Ol%OM%p"
msgstr "%Ol%OM%Op"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
@@ -742,7 +755,7 @@ msgstr "دیروز، %OI:%OM"
#: js/misc/util.js:278
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A، %OH:%OM"
msgstr "%A، %Ol:%OM %Op"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
@@ -750,7 +763,7 @@ msgstr "%A، %OH:%OM"
#: js/misc/util.js:284
#, no-c-format
msgid "%B %-d, %l%M %p"
msgstr "%-Od %OB، %Ol:%OM %p"
msgstr "%-Od %OB، %Ol:%OM %Op"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
@@ -758,14 +771,14 @@ msgstr "%-Od %OB، %Ol:%OM %p"
#: js/misc/util.js:290
#, no-c-format
msgid "%B %-d %Y, %l%M %p"
msgstr "%-Od %OB %OY، %Ol:%OM %p"
msgstr "%-Od %OB %Y، %Ol:%OM %Op"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "ورود نقطهٔ داغ"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -800,29 +813,29 @@ msgid "All"
msgstr "همه"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "پنجره‌های باز"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "پنجرهٔ جدید"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "اجرا با کارت گرافیک اختصاصی"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "حذف از مورد پسندها"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "افزودن به مورد پسندها"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "نمایش جزئیات"
msgstr "نمایش جزییات"
#: js/ui/appFavorites.js:152
#, javascript-format
@@ -880,31 +893,31 @@ msgstr "5"
#: js/ui/calendar.js:70
msgctxt "grid sunday"
msgid "S"
msgstr "۱ش"
msgstr "ی"
#. Translators: Calendar grid abbreviation for Monday
#: js/ui/calendar.js:72
msgctxt "grid monday"
msgid "M"
msgstr "۲ش"
msgstr "د"
#. Translators: Calendar grid abbreviation for Tuesday
#: js/ui/calendar.js:74
msgctxt "grid tuesday"
msgid "T"
msgstr "۳ش"
msgstr "س"
#. Translators: Calendar grid abbreviation for Wednesday
#: js/ui/calendar.js:76
msgctxt "grid wednesday"
msgid "W"
msgstr "۴ش"
msgstr "چ"
#. Translators: Calendar grid abbreviation for Thursday
#: js/ui/calendar.js:78
msgctxt "grid thursday"
msgid "T"
msgstr "۵ش"
msgstr "پ"
#. Translators: Calendar grid abbreviation for Friday
#: js/ui/calendar.js:80
@@ -977,7 +990,7 @@ msgstr "%A %-Od %OB"
#: js/ui/calendar.js:870
msgctxt "calendar heading"
msgid "%A, %B %-d, %Y"
msgstr "%A %-Od %OB %OY"
msgstr "%A %-Od %OB %Y"
#: js/ui/calendar.js:1096
msgid "No Notifications"
@@ -1043,89 +1056,73 @@ msgid "Alternatively you can connect by pushing the “WPS” button on your rou
msgstr "به عنوان جایگزین می‌توانید با فشردن دکمهٔ WPS روی مسیریابتان، وصل شوید."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "اتّصال"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "گذرواژه: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "کلید"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "کلید: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "گذرواژهٔ کلید خصوصی"
#. 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/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:257
#: js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "نام‌کاربری: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "شناسه"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "گذرواژهٔ کلید خصوصی: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "خدمت"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "شناسه: "
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "خدمت: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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:307 js/ui/components/networkAgent.js:682
#: 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:311 js/ui/components/networkAgent.js:686
#: 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:313
msgid "Network name: "
msgstr "نام شبکه: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "نام شبکه"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "تایید هویت DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "رمز پین لازم است"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "رمز پین برای دستگاه پهن‌باند همراه لازم است"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "پین: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "پین"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "مدیر شبکه"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "گذرواژهٔ وی‌پی‌ان"
@@ -1149,10 +1146,6 @@ msgstr "تأیید هویت"
msgid "Sorry, that didnt work. Please try again."
msgstr "متاسفانه اثری نداشت! لطفاً دوباره تلاش کنید."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "ورود گذرواژه…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1181,7 +1174,7 @@ msgstr "دَش"
#.
#: js/ui/dateMenu.js:75
msgid "%B %-d %Y"
msgstr "%-Od %OB %OY"
msgstr "%-Od %OB %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
@@ -1189,7 +1182,7 @@ msgstr "%-Od %OB %OY"
#.
#: js/ui/dateMenu.js:82
msgid "%A %B %e %Y"
msgstr "%A %Od %B %OY"
msgstr "%A %Od %B %Y"
#: js/ui/dateMenu.js:161
msgid "Add world clocks…"
@@ -1241,8 +1234,8 @@ msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سام
#, 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] "شما پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
msgstr[1] "شما پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
msgstr[0] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
msgstr[1] "پس از %Id ثانیه به طور خودکار از سامانه خارج می‌شوید."
#: js/ui/endSessionDialog.js:51
msgctxt "button"
@@ -1323,7 +1316,7 @@ msgstr "نصب و خاموش کردن"
#: js/ui/endSessionDialog.js:99
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "خاموش کردن بعد از نصب به‌روز رسانی‌ها"
msgstr "خاموش کردن پس از نصب به‌روز رسانی‌ها"
#: js/ui/endSessionDialog.js:106
msgctxt "title"
@@ -1366,15 +1359,15 @@ msgstr "%s (دوردست)"
msgid "%s (console)"
msgstr "%s (پایانه)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "نصب"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "نصب افزونه"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
@@ -1460,13 +1453,13 @@ msgid "Leave On"
msgstr "روشن گذاشتن"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "روشن کردن"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1480,59 +1473,59 @@ msgstr "خاموش گذاشتن"
msgid "Region & Language Settings"
msgstr "تنظیمات ناحیه و زبان"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "هیچ افزونه‌ای نصب نشده است"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "افزونه %s هیچ خطایی منتشر نکرده است."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "مخفی کردن خطاها"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "نمایش خطاها"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "به کار انداختن"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "از کار انداختن"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "خطا"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "قدیمی"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "در حال بارگیری"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "نمایش منبع"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "صفحهٔ وب"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "واردشده به عنوان کاربری ممتاز"
#: js/ui/main.js:268
#: 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."
@@ -1540,15 +1533,15 @@ msgstr ""
"به دلایل امنیتی باید از اجرای یک نشست به عنوان کاربری ممتاز خودداری کرد. در صورت "
"امکان، با کاربری عادی وارد شوید."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "قفل صفحه از کار افتاده"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "قفل صفحه نیاز به مدیر نمایش گنوم دارد."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "اطلاعات سامانه"
@@ -1575,8 +1568,8 @@ msgstr "نمای‌کلی"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "برای جست‌وجو بنویسید…"
msgid "Type to search"
msgstr "نوشتن برای جست‌وجو"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1602,23 +1595,23 @@ msgstr "تخصیص دنبالهٔ کلید"
msgid "Done"
msgstr "انجام شد"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "ویرایش…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "هیچ‌کدام"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "برای پیکربندی، کلیدی را بزنید"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "برای خروج esc را بزنید"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "برای خروج، هر کلیدی را بزنید"
@@ -1632,12 +1625,12 @@ msgstr "خروج"
msgid "Activities"
msgstr "فعّالیت‌ها"
#: js/ui/panel.js:707
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "سامانه"
#: js/ui/panel.js:820
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "نوار بالا"
@@ -1668,11 +1661,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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "نمی‌توان قفل کرد"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "قفل توسط یک برنامه مسدود شده بود"
@@ -1732,8 +1725,8 @@ msgstr ""
"کنید."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "ورود شمارهٔ PIM"
msgid "PIM Number"
msgstr "شمارهٔ PIM"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
@@ -1813,7 +1806,7 @@ msgstr "متن درشت"
msgid "Bluetooth"
msgstr "بلوتوث"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "تنظیمات بلوتوث"
@@ -1822,8 +1815,8 @@ msgstr "تنظیمات بلوتوث"
#, javascript-format
msgid "%d Connected"
msgid_plural "%d Connected"
msgstr[0] "%Id متصل شد"
msgstr[1] "%Id متصل شد"
msgstr[0] "%Id وصلشده"
msgstr[1] "%Id وصلشده"
#: js/ui/status/bluetooth.js:131
msgid "Off"
@@ -1857,11 +1850,11 @@ msgstr "کلیک دوم"
msgid "Dwell Click"
msgstr "کلیک طولانی"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "صفحه‌کلید"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "نمایش چیدمان صفحه‌کلید"
@@ -1908,7 +1901,7 @@ msgid "<unknown>"
msgstr "<ناشناخته>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s خاموش است"
@@ -1934,7 +1927,7 @@ msgid "%s Disconnecting"
msgstr "درحال قطع ارتباط %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "درحال اتصال %s"
@@ -1974,7 +1967,7 @@ msgid "Mobile Broadband Settings"
msgstr "تنظیمات پهن‌باند همراه"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "سخت‌افزار %s از کار افتاده"
@@ -1986,125 +1979,125 @@ msgstr "سخت‌افزار %s از کار افتاده"
msgid "%s Disabled"
msgstr "%s از کار افتاده"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "وصل شدن به اینترنت"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "حالت هواپیمایی روشن است"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "در زمان روشن بودن حالت هواپیمایی، وای‌فای از کار می‌افتد."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "خاموش کردن حالت هواپیمایی"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "وای‌فای خاموش است"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "برای وصل شدن به شبکه باید وای‌فای روشن شود."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "روشن کردن وای‌فای"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "شبکه‌های وای‌فای"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "شبکه‌ای برگزینید"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "هیچ شبکه‌ای نیست"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "برای خاموش کردن از کلید سخت‌افزاری استفاده کنید"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "انتخاب شبکه"
msgstr "گزینش شبکه"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "تنظیمات وای‌فای"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s نقطهٔ داغ فعال"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s متصل نشد"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "درحال اتّصال…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "تایید هویت لازم است"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "اتصال شکست خورد"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "تنظیمات وی‌پی‌ان"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "وی‌پی‌ان"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "وی‌پی‌ان خاموش است"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "تنظیمات شبکه"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "اتّصال سیمی %s"
msgstr[1] "اتّصال سیمی %s"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "اتّصال وای‌فای %s"
msgstr[1] "اتّصال وای‌فای %s"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "اتّصال مودم %s"
msgstr[1] "اتّصال مودم %s"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "اتصال شکست خورد"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "فعاّل‌سازی اتّصال شبکه شکست خورد"
@@ -2202,11 +2195,11 @@ msgstr "خاموش کردن…"
msgid "Thunderbolt"
msgstr "تاندربولت"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "افزارهٔ تاندربولت ناشناخته"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and reconnect "
"the device to start using it."
@@ -2214,19 +2207,19 @@ msgstr ""
"هنگام نبودنتان، افزارهٔ جدید شناسایی شد. لطفاً برای شروع به استفاده از آن، قطعش "
"کرده و دوباره وصل کنید."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "افزارهٔ تاندربولت تأییدنشده"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid "New device has been detected and needs to be authorized by an administrator."
msgstr "افزارهٔ جدیدی شناسایی شده و نیازه به تأیید هویت توسّط یک مدیر دارد."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "خطای تأیید هویت تاندربولت"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "نمی‌توان افزارهٔ تاندربولت را تأیید هویت کرد: %s"
@@ -2267,10 +2260,28 @@ msgstr "فقط خارجی"
msgid "Built-in Only"
msgstr "فقط داخلی"
#: js/ui/unlockDialog.js:459
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-Od %OB"
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "برای قفل‌گشایی، بالا بکشید"
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "برای قفل‌گشایی، کلیک کرده یا دکمه‌ای را بزنید"
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "گشودن قفل پنجره"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "ورود به عنوان کاربری دیگر"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "برنامه‌ها"
@@ -2298,7 +2309,7 @@ msgstr "بازنشانی تنظیمات"
#: js/ui/windowManager.js:67
msgid "Keep Changes"
msgstr "ذخیره تغییرات"
msgstr "نگه‌داری تغییرات"
#: js/ui/windowManager.js:85
#, javascript-format
@@ -2309,7 +2320,7 @@ msgstr[1] "تغییرات تنظیمات در %Id ثانیه بازنشانی م
#. 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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%Id × %Id"
@@ -2760,6 +2771,15 @@ msgstr[1] "%Iu ورودی"
msgid "System Sounds"
msgstr "صداهای سامانه"
#~ msgid "Username…"
#~ msgstr "نام‌کاربری…"
#~ msgid "Password: "
#~ msgstr "گذرواژه: "
#~ msgid "Enter Password…"
#~ msgstr "ورود گذرواژه…"
#~ msgid "Next"
#~ msgstr "بعدی"
@@ -2780,18 +2800,12 @@ msgstr "صداهای سامانه"
#~ msgstr[0] "%Id آگاهی جدید"
#~ msgstr[1] "%Id آگاهی جدید"
#~ msgid "Log in as another user"
#~ msgstr "ورود به عنوان کاربری دیگر"
#~ msgid "Browse in Software"
#~ msgstr "مرور در نرم‌افزارها"
#~ msgid "Rename"
#~ msgstr "تغییر نام"
#~ msgid "Password:"
#~ msgstr "گذرواژه:"
#~ msgid "Type again:"
#~ msgstr "تلاش دوباره:"

312
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-02-12 19:34+0000\n"
"PO-Revision-Date: 2020-02-12 22:33+0200\n"
"POT-Creation-Date: 2020-02-21 09:52+0000\n"
"PO-Revision-Date: 2020-02-22 17:34+0200\n"
"Last-Translator: Jiri Grönroos <jiri.gronroos+l10n@iki.fi>\n"
"Language-Team: suomi <lokalisointi-lista@googlegroups.com>\n"
"Language: fi\n"
@@ -259,16 +259,10 @@ msgid "Keybinding to open the application menu."
msgstr "Sovellusvalikon avaukseen käytettävä pikanäppäin."
#: data/org.gnome.shell.gschema.xml.in:126
#, fuzzy
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the “Show Applications” view"
msgstr "Näytä sovellukset -näkymän avaukseen käytettävä pikanäppäin"
#: data/org.gnome.shell.gschema.xml.in:127
#, fuzzy
#| msgid ""
#| "Keybinding to open the \"Show Applications\" view of the Activities "
#| "Overview."
msgid ""
"Keybinding to open the “Show Applications” view of the Activities Overview."
msgstr ""
@@ -450,9 +444,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Peru"
@@ -581,6 +575,15 @@ msgstr ""
msgid "Log Out…"
msgstr "Kirjaudu ulos…"
#. Cisco LEAP
#: 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"
msgstr "Salasana"
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Valitse istunto"
@@ -596,11 +599,15 @@ msgstr "Ei luettelossa?"
msgid "(e.g., user or %s)"
msgstr "(esim. käyttäjä tai %s)"
#: js/gdm/loginDialog.js:917
msgid "Username…"
msgstr "Käyttäjänimi…"
#. 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:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "Käyttäjätunnus"
#: js/gdm/loginDialog.js:1252
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Kirjautumisikkuna"
@@ -828,11 +835,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%B %-d %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Tukiasemaan kirjautuminen"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -867,27 +874,27 @@ msgid "All"
msgstr "Kaikki"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Avoimet ikkunat"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Uusi ikkuna"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Käynnistä erillisnäytönohjainta käyttäen"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Poista suosikeista"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Lisää suosikkeihin"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Näytä tiedot"
@@ -1112,90 +1119,74 @@ msgstr ""
"Vaihtoehtoisesti voit yhdistää painamalla reitittimesi “WPS”-painiketta."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Yhdistä"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Salasana: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Avain"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Avain: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Yksityisen avaimen salasana"
#. 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/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:257
#: js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Käyttäjänimi: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identiteetti"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Salaisen avaimen salasana: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Palvelu"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Henkilöllisyys: "
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Palvelu: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Tunnistautuminen vaaditaan"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "Langaton verkko \"%s\" vaatii salasanan tai salausavaimia."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Verkon nimi: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Verkon nimi"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL-tunnistautuminen"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN-koodi vaaditaan"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobiililaajakaista vaatii PIN-koodin"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Salasana vaaditaan kohteeseen \"%s\" yhdistämiseksi."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Verkon hallinta"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN-salasana"
@@ -1219,10 +1210,6 @@ msgstr "Tunnistaudu"
msgid "Sorry, that didnt work. Please try again."
msgstr "Kirjautuminen epäonnistui. Yritä uudelleen."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Kirjoita salasana…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1440,15 +1427,15 @@ msgstr "%s (etä)"
msgid "%s (console)"
msgstr "%s (konsoli)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Asenna"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Asenna laajennus"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Ladataanko ja asennetaanko ”%s” sivustolta extensions.gnome.org?"
@@ -1538,13 +1525,13 @@ msgid "Leave On"
msgstr "Jätä käyttöön"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Ota käyttöön"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1558,59 +1545,59 @@ msgstr "Poista käytöstä"
msgid "Region & Language Settings"
msgstr "Kielen & alueen asetukset"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Laajennuksia ei asennettu"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s ei ole lähettänyt virheitä."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Piilota virheet"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Näytä virheet"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Käytössä"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Ei käytössä"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Virhe"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Ei ajan tasalla"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Noudetaan"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Näytä lähde"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Verkkosivusto"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Kirjautuneena etuoikeutettuna käyttäjänä"
#: js/ui/main.js:268
#: 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."
@@ -1618,15 +1605,15 @@ msgstr ""
"Istunnon suorittamista etuoikeutettuna käyttäjänä tulisi välttää "
"tietoturvasyistä. Jos mahdollista, kirjaudu tavallisena käyttäjänä."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Näytön lukitus pois käytöstä"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Näytön lukitus vaatii Gnomen kirjautumishallinnan."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Järjestelmän tiedot"
@@ -1653,8 +1640,8 @@ msgstr "Yleisnäkymä"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "Kirjoita hakeaksesi"
msgid "Type to search"
msgstr "Kirjoita hakeaksesi"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1682,23 +1669,23 @@ msgstr "Määritä painallus"
msgid "Done"
msgstr "Valmis"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Muokkaa…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Ei mitään"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Paina näppäintä määrittääksesi asetukset"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Paina Esc poistuaksesi"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Paina mitä tahansa näppäintä poistuaksesi"
@@ -1748,11 +1735,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:602
#: 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:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Lukitus estettiin sovelluksen toimesta"
@@ -1811,8 +1798,8 @@ msgid ""
msgstr "Avataksesi avaintiedostoja käyttävän taltion, käytä <i>%s</i>."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "Kirjoita PIM-numero"
msgid "PIM Number"
msgstr "PIM-numero"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
@@ -1892,7 +1879,7 @@ msgstr "Suuri tekstin koko"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Bluetooth-asetukset"
@@ -1926,7 +1913,7 @@ msgstr "Kaksoisnapsautus"
#: js/ui/status/dwellClick.js:23
msgid "Drag"
msgstr ""
msgstr "Vedä"
#: js/ui/status/dwellClick.js:28
msgid "Secondary Click"
@@ -1934,13 +1921,13 @@ msgstr "Toissijainen napsautus"
#: js/ui/status/dwellClick.js:37
msgid "Dwell Click"
msgstr ""
msgstr "Napsautus kohdistamalla"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Näppäimistö"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Näytä näppäimistön asettelu"
@@ -1989,7 +1976,7 @@ msgid "<unknown>"
msgstr "<tuntematon>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s pois"
@@ -2015,7 +2002,7 @@ msgid "%s Disconnecting"
msgstr "%s - Katkaistaan yhteyttä"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s - Yhdistetään"
@@ -2055,7 +2042,7 @@ msgid "Mobile Broadband Settings"
msgstr "Mobiililaajakaistan asetukset"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s - Laite poistettu käytöstä"
@@ -2067,125 +2054,125 @@ msgstr "%s - Laite poistettu käytöstä"
msgid "%s Disabled"
msgstr "%s - Poistettu käytöstä"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Yhdistä internetiin"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Lentokonetila on päällä"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wifi on pois päältä lentokonetilan ollessa päällä."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Käytä lentokonetilaa"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Wifi on pois"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wifin tulee olla päällä, jotta yhteys verkkoon on mahdollinen."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Ota wifi käyttöön"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Wifi-verkot"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Valitse verkko"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Ei verkkoja"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Käytä laitepainiketta sammuttaaksesi"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Valitse verkko"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Wifin asetukset"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s - Yhteyspiste aktiivisena"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s - Ei yhdistetty"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "yhdistetään…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "tunnistautuminen vaaditaan"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "yhteys katkesi"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPN-asetukset"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN pois"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Verkkoasetukset"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s kiinteä yhteys"
msgstr[1] "%s kiinteää yhteyttä"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s wifi-yhteys"
msgstr[1] "%s wifi-yhteyttä"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modeemiyhteys"
msgstr[1] "%s modeemiyhteyttä"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Yhteys epäonnistui"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Verkkoyhteyden aktivointi epäonnistui"
@@ -2283,11 +2270,11 @@ msgstr "Sammuta…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Tuntematon Thunderbolt-laite"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2295,20 +2282,20 @@ msgstr ""
"Uusi laite havaittiin, kun olit pois. Katkaise laitteen yhteys ja yhdistä se "
"uudelleen, jotta voit aloittaa sen käyttämisen."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Thunderbolt-laite ilman valtuutusta"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr "Uusi laite on havaittu. Se tulee valtuuttaa ylläpitäjän toimesta."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt-valtuutusvirhe"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt-laitetta ei voitu valtuuttaa: %s"
@@ -2349,7 +2336,24 @@ msgstr "Vain ulkoinen"
msgid "Built-in Only"
msgstr "Vain sisäinen"
#: js/ui/unlockDialog.js:459
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#, fuzzy
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A, %-d. %Bta"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Vedä ylös avataksesi lukituksen"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Napsauta tai paina näppäintä avataksesi lukituksen"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Lukituksen avausikkuna"
@@ -2391,7 +2395,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2843,6 +2847,15 @@ msgstr[1] "%u sisääntuloa"
msgid "System Sounds"
msgstr "Järjestelmän äänet"
#~ msgid "Username…"
#~ msgstr "Käyttäjänimi…"
#~ msgid "Password: "
#~ msgstr "Salasana: "
#~ msgid "Enter Password…"
#~ msgstr "Kirjoita salasana…"
#~ msgid "Next"
#~ msgstr "Seuraava"
@@ -2885,9 +2898,6 @@ msgstr "Järjestelmän äänet"
#~ msgid "Mobile broadband network password"
#~ msgstr "Mobiililaajakaistan verkkosalasana"
#~ msgid "Password"
#~ msgstr "Salasana"
#~ msgid "Rename"
#~ msgstr "Nimeä uudelleen"

195
po/fr.po
View File

@@ -14,18 +14,18 @@
# Alain Lojewski <allomervan@gmail.com>, 2014-2018.
# Erwan Georget <egeorget@opmbx.org>, 2016.
# Julien Humbert <julroy67@gmail.com>, 2019.
# Charles Monzat <charles.monzat@free.fr>, 2016-2019.
# Claude Paroz <claude@2xlibre.net>, 2010-2020.
# Charles Monzat <charles.monzat@free.fr>, 2016-2020.
#
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-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 18:39+0100\n"
"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-22 12:16+0100\n"
"Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
"Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
"Language: fr\n"
"Language: fr_FR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -439,9 +439,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Annuler"
@@ -588,11 +588,10 @@ msgstr "Fermer la session…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 js/ui/components/polkitAgent.js:277
#: 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 "Mot de passe"
@@ -614,9 +613,8 @@ msgstr "(par ex. utilisateur ou %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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#| msgid "Username: "
#: 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 "Nom dutilisateur"
@@ -845,11 +843,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Identification du point daccès"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1146,37 +1144,32 @@ msgstr ""
"votre routeur."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Se connecter"
#. static WEP
#: js/ui/components/networkAgent.js:207
#| msgid "Key: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Clé"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#| msgid "Private key password: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Mot de passe de la clé privée"
#: js/ui/components/networkAgent.js:263
#| msgid "Identity: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identité"
#: js/ui/components/networkAgent.js:277
#| msgid "Service: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Service"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Authentification nécessaire"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1185,44 +1178,42 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X"
#: js/ui/components/networkAgent.js:313
#| msgid "Network name: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nom du réseau"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Authentification DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Code PIN requis"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les connexions mobiles"
#: js/ui/components/networkAgent.js:327
#| msgid "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Un mot de passe est requis pour se connecter à « %s »."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Gestionnaire de réseau"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Mot de passe VPN"
@@ -1471,15 +1462,15 @@ msgstr "%s (distant)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Installer"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Installer lextension"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
@@ -1569,13 +1560,13 @@ msgid "Leave On"
msgstr "Laisser activé"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Activer"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1659,7 +1650,7 @@ msgid "Screen Locking requires the GNOME display manager."
msgstr ""
"Le verrouillage de lécran nécessite le gestionnaire daffichage GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informations du système"
@@ -1686,7 +1677,6 @@ msgstr "Vue densemble"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Saisissez votre recherche"
@@ -1714,23 +1704,23 @@ msgstr "Associer une touche"
msgid "Done"
msgstr "Terminé"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Édition…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Aucun"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Appuyez sur un bouton pour le configurer"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Appuyez sur Échap pour quitter"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Appuyez sur une touche pour quitter"
@@ -1780,11 +1770,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:602
#: 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:603
#: 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"
@@ -1845,7 +1835,6 @@ msgstr ""
"plutôt lutilitaire <i>%s</i>."
#: js/ui/shellMountOperation.js:306
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "Numéro PIM"
@@ -1927,7 +1916,7 @@ msgstr "Grand texte"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Paramètres Bluetooth"
@@ -2024,7 +2013,7 @@ msgid "<unknown>"
msgstr "<inconnu>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s éteint"
@@ -2050,7 +2039,7 @@ msgid "%s Disconnecting"
msgstr "Déconnexion de %s en cours"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "Connexion de %s en cours"
@@ -2090,7 +2079,7 @@ msgid "Mobile Broadband Settings"
msgstr "Paramètres connexion mobile"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Équipement %s désactivé"
@@ -2102,125 +2091,125 @@ msgstr "Équipement %s désactivé"
msgid "%s Disabled"
msgstr "%s désactivé"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Se connecter à Internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Le mode avion est activé"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Le Wi-Fi est désactivé quand le mode avion est activé."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Désactiver le mode avion"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Le Wi-Fi est désactivé"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Le Wi-Fi a besoin dêtre activé pour se connecter à un réseau."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Activer le Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Réseaux Wi-Fi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Choisir un réseau"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Aucun réseau disponible"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Utiliser linterrupteur matériel pour éteindre"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Sélectionner un réseau"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Paramètres Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Point daccès %s actif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s non connecté"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "connexion…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "authentification nécessaire"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "échec de connexion"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Paramètres VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN désactivé"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Paramètres du réseau"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s connexion filaire."
msgstr[1] "%s connexions filaires."
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s connexion Wi-Fi."
msgstr[1] "%s connexions Wi-Fi."
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s connexion à un modem."
msgstr[1] "%s connexions à des modems."
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Échec de connexion"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Lactivation de la connexion réseau a échoué"
@@ -2318,11 +2307,11 @@ msgstr "Éteindre…"
msgid "Thunderbolt"
msgstr "Interface Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Périphérique Thunderbolt inconnu"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2330,22 +2319,22 @@ msgstr ""
"Un nouveau périphérique a été détecté pendant votre absence. Veuillez le "
"débrancher et rebrancher avant de commencer à lutiliser."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Périphérique Thunderbolt non autorisé"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Un nouvel appareil a été détecté et a besoin dêtre autorisé par un "
"administrateur."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Erreur dautorisation Thunderbolt"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Impossible dautoriser le périphérique Thunderbolt : %s"
@@ -2386,6 +2375,22 @@ msgstr "Externe seulement"
msgid "Built-in Only"
msgstr "Intégré seulement"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Faire glisser vers le haut pour déverrouiller"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Cliquer ou appuyer sur une touche pour déverrouiller"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Fenêtre de déverrouillage"
@@ -2428,7 +2433,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"

246
po/gl.po
View File

@@ -11,9 +11,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-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 21:59+0100\n"
"Last-Translator: Fran Diéguez <frandieguez@gnome.org>\n"
"POT-Creation-Date: 2020-02-25 23:44+0000\n"
"PO-Revision-Date: 2020-02-26 21:54+0100\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: Galician\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
@@ -416,11 +416,11 @@ msgid ""
"to enable it again"
msgstr "Se quita a extensión debe descargala se quere activala de novo"
#: 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:166
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:910
#: 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 "Cancelar"
@@ -551,10 +551,10 @@ msgid "Log Out…"
msgstr "Saír da sesión…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 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 "Contrasinal"
@@ -577,8 +577,8 @@ msgstr "(p.ex., usuario ou %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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#: 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 "Nome de usuario"
@@ -807,11 +807,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Inicio de sesión do Hotspot"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -847,27 +847,27 @@ msgid "All"
msgstr "Todos"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Abrir Xanelas"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Xanela nova"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Iniciar usando a Tarxeta Gráfica Adicada"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Retirar dos marcadores"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Mostrar detalles"
@@ -1092,33 +1092,32 @@ msgstr ""
"De forma alternativa pode conectarse premendo o botón «WPS» do seu ruter."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Conectar"
#. static WEP
#: js/ui/components/networkAgent.js:207
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Chave"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Contrasinal da chave privada"
#: js/ui/components/networkAgent.js:263
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identidade"
#: js/ui/components/networkAgent.js:277
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Servizo"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Requírese autenticación"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1127,42 +1126,42 @@ msgstr ""
"Requírense contrasinais ou chaves de cifrado para acceder á rede sen fíos "
"«%s»."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Autenticación con fíos 802.1X"
#: js/ui/components/networkAgent.js:313
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nome da rede"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Autenticación DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Requírese un código PIN"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "É necesario un código PIN para o dispositivo de banda larga móbil"
#: js/ui/components/networkAgent.js:327
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Requírese un contrasinal para conectarse a «%s»."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Xestor da rede"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Contrasinal da VPN"
@@ -1402,15 +1401,15 @@ msgstr "%s (remoto)"
msgid "%s (console)"
msgstr "%s (consola)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Instalar"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Instalar extensión"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
@@ -1500,13 +1499,13 @@ msgid "Leave On"
msgstr "Deixar activado"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Activar"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1520,59 +1519,59 @@ msgstr "Deixar desactivado"
msgid "Region & Language Settings"
msgstr "Preferencias de rexión e idioma"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Non hai ningunha extensión instalada"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s non emitiu ningún erro."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Ocultar erros"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Mostrar erros"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Activado"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Desactivado"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Erro"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Obsoleto"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Descargando"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Ver fonte"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Páxina web"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Sesión iniciada como un usuario privilexiado"
#: js/ui/main.js:268
#: 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."
@@ -1580,15 +1579,15 @@ msgstr ""
"Por razóns de seguranza debe evitar executar unha sesión como un usuario "
"privilexiado. Se é posíbel, debería iniciar sesión como un usuario normal."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Bloqueo de pantalla desactivado"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "O bloqueo de pantalla require o xestor de pantalla de GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Información do sistema"
@@ -1642,23 +1641,23 @@ msgstr "Asignar combinación de teclas"
msgid "Done"
msgstr "Feito"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Editar…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Ningún"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Prema un botón para continuar"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Prema Esc para saír"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Prema calquera tecla para saír"
@@ -1672,12 +1671,12 @@ msgstr "Saír"
msgid "Activities"
msgstr "Actividades"
#: js/ui/panel.js:707
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:820
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Barra superior"
@@ -1708,11 +1707,11 @@ msgstr "GNOME precisa bloquear a pantalla"
#.
#. 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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Non foi posíbel bloquear"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Unha aplicación impediu o bloqueo"
@@ -1854,7 +1853,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Preferencias do Bluetooth"
@@ -1898,11 +1897,11 @@ msgstr "Clic secundario"
msgid "Dwell Click"
msgstr "Clic atrasado"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Teclado"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Mostrar a distribución do teclado"
@@ -1951,7 +1950,7 @@ msgid "<unknown>"
msgstr "<descoñecido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s apagado"
@@ -1977,7 +1976,7 @@ msgid "%s Disconnecting"
msgstr "%s desconectando"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s conectando"
@@ -2017,7 +2016,7 @@ msgid "Mobile Broadband Settings"
msgstr "Preferencias da banda larga móbil"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s hardware desactivado"
@@ -2029,125 +2028,125 @@ msgstr "%s hardware desactivado"
msgid "%s Disabled"
msgstr "%s desactivado"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Conectarse a internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Modo avión activado"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "A Wifi está desactivada cando o modo avión está activo."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Desactivar o modo avión"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Wifi desactivada"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "A Wifi precisa activarse para poder conectarse á rede."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Activar Wifi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Redes WiFi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Seleccione unha rede"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Sen redes"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Usar interruptor hardware para apagar"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Seleccione unha rede"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Preferencias da WiFi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s punto wifi activo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s non conectado"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "requírese autenticación"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "conexión fallada"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Preferencias de VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN desactivada"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Preferencias da rede"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conectando con fíos"
msgstr[1] "%s conectando con fíos"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conectando sen fíos"
msgstr[1] "%s con fíos conectando"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s con módem conectando"
msgstr[1] "%s conectando sen fíos"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Produciuse un fallo na conexión"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Produciuse un fallo na activación da conexión de rede"
@@ -2245,11 +2244,11 @@ msgstr "Apagar…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt descoñecido"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2257,21 +2256,21 @@ msgstr ""
"Detectouse un novo dispositivo mentres non estabas. Por favor desconecte e "
"reconecte o dispositivo para comezar a usalo."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Dispositivo Thunderbolt non autorizado"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Detectouse un novo dispositivo e precisa ser autorizado por un administrador."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Erro de autorización de Thunderbolt"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Non foi posíbel autorizar o dispositivo Thunderbolt: %s"
@@ -2312,10 +2311,28 @@ msgstr "Só a externa"
msgid "Built-in Only"
msgstr "Só a interna"
#: js/ui/unlockDialog.js:552
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %d de %B"
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Deslizar para desbloquear"
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Prema o rato ou unha tecla para desbloquear"
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Desbloquear xanela"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Iniciar sesión como outro usuario"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Aplicacións"
@@ -2354,7 +2371,7 @@ msgstr[1] "Os cambios das preferencias revertiranse en %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2838,9 +2855,6 @@ msgstr "Sons do sistema"
#~ msgstr[0] "%d notificación nova"
#~ msgstr[1] "%d notificacións novas"
#~ msgid "Log in as another user"
#~ msgstr "Iniciar sesión como outro usuario"
#~ msgid "Browse in Software"
#~ msgstr "Explorar en Software"

589
po/hr.po

File diff suppressed because it is too large Load Diff

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-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-18 00:10+0100\n"
"POT-Creation-Date: 2020-02-24 12:37+0000\n"
"PO-Revision-Date: 2020-02-25 07:25+0100\n"
"Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
"Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
"Language: hu\n"
@@ -414,11 +414,11 @@ msgstr ""
"Ha eltávolítja a kiterjesztést, akkor vissza kell térnie a letöltéshez, ha "
"újra engedélyezni akarja."
#: 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
#: 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 "Mégse"
@@ -551,7 +551,7 @@ msgid "Log Out…"
msgstr "Kijelentkezés…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: 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
@@ -847,27 +847,27 @@ msgid "All"
msgstr "Összes"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Ablakok megnyitása"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Új ablak"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Futtatás a dedikált videokártyával"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Eltávolítás a Kedvencek közül"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Hozzáadás a Kedvencekhez"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Részletek megjelenítése"
@@ -1518,59 +1518,59 @@ msgstr "Kikapcsolva hagyás"
msgid "Region & Language Settings"
msgstr "Területi és nyelvi beállítások"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Nincsenek kiterjesztések telepítve"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s nem adott hibát."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Hibák elrejtése"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Hibák megjelenítése"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Engedélyezve"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Tiltva"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Hiba"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Elavult"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Letöltés"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Forrás megtekintése"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Weblap"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Bejelentkezés privilegizált felhasználóként"
#: js/ui/main.js:268
#: 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."
@@ -1578,11 +1578,11 @@ msgstr ""
"A privilegizált felhasználóként futtatott munkameneteket biztonsági okokból "
"érdemes kerülni. Ha lehetséges, jelentkezzen be normál felhasználóként."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Zárképernyő letiltva"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "A képernyőzároláshoz a GNOME kijelzőkezelő szükséges."
@@ -1896,11 +1896,11 @@ msgstr "Másodlagos kattintás"
msgid "Dwell Click"
msgstr "Rámutatási kattintás"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Billentyűzet"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Billentyűzetkiosztás megjelenítése"
@@ -2311,24 +2311,27 @@ msgstr "Csak a beépített"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%B %-d. %A"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Húzza felfelé a feloldáshoz"
#: js/ui/unlockDialog.js:379
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Kattintson vagy nyomjon meg egy gombot a feloldáshoz"
#: js/ui/unlockDialog.js:552
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Ablak feloldása"
#: js/ui/unlockDialog.js:558
#| msgid "Logged in as a privileged user"
msgid "Log in as another user"
msgstr "Bejelentkezés más felhasználóként"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Alkalmazások"

419
po/id.po
View File

@@ -11,15 +11,15 @@ 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-02-06 19:01+0000\n"
"PO-Revision-Date: 2020-02-07 13:32+0700\n"
"POT-Creation-Date: 2020-02-24 12:37+0000\n"
"PO-Revision-Date: 2020-02-25 17:40+0700\n"
"Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
"Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n"
"Language: id\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"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 2.3\n"
"X-DamnedLies-Scope: partial\n"
"X-Poedit-SourceCharset: UTF-8\n"
@@ -184,8 +184,8 @@ msgstr ""
msgid ""
"Whether to remember password for mounting encrypted or remote filesystems"
msgstr ""
"Apakah mengingat sandi untuk mengait sistem berkas terenkripsi atau jarak "
"jauh"
"Apakah mengingat kata sandi untuk mengait sistem berkas terenkripsi atau "
"jarak jauh"
#: data/org.gnome.shell.gschema.xml.in:87
msgid ""
@@ -194,7 +194,7 @@ msgid ""
"“Remember Password” checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"Shell akan meminta suatu sandi ketika suatu perangkat terenkripsi atau "
"Shell akan meminta suatu kata sandi ketika suatu perangkat terenkripsi atau "
"sistem berkas jarak jauh dikaitkan. Bila sandi dapat disimpan untuk dipakai "
"dimasa depan, suatu kotak contreng 'Ingat Sandi' akan tampil. Kunci ini "
"menata keadaan baku dari kotak contreng."
@@ -418,11 +418,11 @@ msgstr ""
"Jika Anda menghapus ekstensi, Anda harus kembali untuk mengunduhnya jika "
"Anda ingin mengaktifkannya lagi"
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:170
#: 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:166 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:910
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Batal"
@@ -557,31 +557,26 @@ msgstr ""
msgid "Log Out…"
msgstr "Keluar…"
#: js/gdm/authPrompt.js:184 js/gdm/authPrompt.js:237 js/gdm/authPrompt.js:468
msgid "Next"
msgstr "Selanjutnya"
#. Cisco LEAP
#: 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 "Kata Sandi"
#: js/gdm/authPrompt.js:233 js/ui/shellMountOperation.js:380
#: js/ui/unlockDialog.js:44
msgid "Unlock"
msgstr "Buka Kunci"
#: js/gdm/authPrompt.js:235
msgctxt "button"
msgid "Sign In"
msgstr "Masuk"
#: js/gdm/loginDialog.js:319
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Pilih Sesi"
#: js/gdm/loginDialog.js:461
#: js/gdm/loginDialog.js:457
msgid "Not listed?"
msgstr "Tak masuk daftar?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: js/gdm/loginDialog.js:895
#: js/gdm/loginDialog.js:912
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(cth., pengguna dari %s)"
@@ -589,12 +584,12 @@ msgstr "(cth., pengguna dari %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:899 js/ui/components/networkAgent.js:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Nama pengguna: "
#: 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 "Nama pengguna"
#: js/gdm/loginDialog.js:1230
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Jendela Log Masuk"
@@ -819,16 +814,16 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Log Masuk Area Bersinyal (hotspot)"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
msgstr ""
"Koneksi Anda ke log masuk area bersinyal (hotspot) ini tidak aman. Kata "
"Koneksi Anda ke log masuk area bersinyal (hotspot) ini tidak aman. Kata kata "
"sandi atau informasi lain yang Anda masukkan pada halaman ini dapat dilihat "
"oleh orang-orang di sekitar."
@@ -859,27 +854,27 @@ msgid "All"
msgstr "Semua"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Buka Jendela"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Jendela Baru"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Luncurkan menggunakan Kartu Grafis Terdedikasi"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Hapus dari Favorit"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Tambah ke Favorit"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Tampilkan Rincian"
@@ -1105,86 +1100,78 @@ msgstr ""
"router Anda."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Sambung"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Sandi: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Kunci"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Tombol: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Kata sandi kunci privat"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Sandi kunci privat: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identitas"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Identitas: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Layanan"
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Layanan: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Diperlukan autentikasi"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 ""
"Sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel \"%s"
"\"."
"Kata sandi atau kunci enkripsi diperlukan untuk mengakses jaringan nirkabel "
"\"%s\"."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Autentikasi 802.1X kabel"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Nama jaringan: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nama jaringan"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Autentikasi DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Perlu kode PIN"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Kode PIN diperlukan untuk perangkat data seluler"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Perlu suatu sandi untuk menyambung ke \"%s\"."
msgstr "Perlu suatu kata sandi untuk menyambung ke \"%s\"."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Manajer Jaringan"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Sandi VPN"
msgstr "Kata Sandi VPN"
#: js/ui/components/polkitAgent.js:39
msgid "Authentication Required"
@@ -1206,10 +1193,6 @@ msgstr "Autentikasi"
msgid "Sorry, that didnt work. Please try again."
msgstr "Maaf, tidak berhasil. Silakan coba lagi."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Masukkan Kata Sandi…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1425,15 +1408,15 @@ msgstr "%s (jarak jauh)"
msgid "%s (console)"
msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Pasang"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Pasang Ekstensi"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?"
@@ -1521,13 +1504,13 @@ msgid "Leave On"
msgstr "Biarkan Menyala"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Nyalakan"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1541,59 +1524,59 @@ msgstr "Biarkan Mati"
msgid "Region & Language Settings"
msgstr "Pengaturan Wilayah & Bahasa"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Tak ada ekstensi terpasang"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s tidak menampilkan galat apa pun."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Sembunyikan Galat"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Tampilkan Galat"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Diaktifkan"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Dinonaktifkan"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Galat"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Kadaluarsa"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Mengunduh"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Tilik Sumber"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Halaman Web"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Masuk sebagai pengguna istimewa"
#: js/ui/main.js:268
#: 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."
@@ -1601,15 +1584,15 @@ msgstr ""
"Menjalankan sesi sebagai pengguna istimewa harus dihindari untuk alasan "
"keamanan. Jika memungkinkan, Anda harus masuk sebagai pengguna biasa."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Kunci Layar dinonaktifkan"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Penguncian Layar memerlukan manajer tampilan GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informasi Sistem"
@@ -1636,8 +1619,8 @@ msgstr "Gambaran"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "Ketik untuk mencari"
msgid "Type to search"
msgstr "Ketik untuk mencari"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1663,23 +1646,23 @@ msgstr "Tetapkan keystroke"
msgid "Done"
msgstr "Selesai"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Sunting…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Nihil"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Tekan tombol untuk mengkonfigurasi"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Tekan Esc untuk keluar"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Tekan tombol apa saja untuk keluar"
@@ -1718,31 +1701,7 @@ msgstr "Memulai ulang tidak tersedia di Wayland"
msgid "Restarting…"
msgstr "Memulai ulang…"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/screenShield.js:82
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: js/ui/screenShield.js:139
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d pesan baru"
msgstr[1] "%d pesan baru"
#: js/ui/screenShield.js:141
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d pemberitahuan baru"
msgstr[1] "%d pemberitahuan baru"
#: js/ui/screenShield.js:454 js/ui/status/system.js:103
msgid "Lock"
msgstr "Kunci"
#: js/ui/screenShield.js:717
#: js/ui/screenShield.js:203
msgid "GNOME needs to lock the screen"
msgstr "GNOME perlu mengunci layar"
@@ -1753,11 +1712,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:830 js/ui/screenShield.js:1301
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Tak bisa mengunci"
#: js/ui/screenShield.js:831 js/ui/screenShield.js:1302
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Kunci diblokir oleh suatu aplikasi"
@@ -1818,12 +1777,16 @@ msgstr ""
"<i>%s</i>."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "Masukkan Nomor PIM"
msgid "PIM Number"
msgstr "Nomor PIM"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
msgstr "Ingat Sandi"
msgstr "Ingat Kata Sandi"
#: js/ui/shellMountOperation.js:380
msgid "Unlock"
msgstr "Buka Kunci"
#. Translators: %s is the Disks application
#: js/ui/shellMountOperation.js:391
@@ -1895,7 +1858,7 @@ msgstr "Teks Besar"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Pengaturan Bluetooth"
@@ -1939,11 +1902,11 @@ msgstr "Klik Sekunder"
msgid "Dwell Click"
msgstr "Klik Menetap"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Papan Ketik"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Tampilkan Tata Letak Papan Tik"
@@ -1990,7 +1953,7 @@ msgid "<unknown>"
msgstr "<tak dikenal>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s Mati"
@@ -2016,7 +1979,7 @@ msgid "%s Disconnecting"
msgstr "%s Memutus"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s Menyambung"
@@ -2056,7 +2019,7 @@ msgid "Mobile Broadband Settings"
msgstr "Pengaturan Data Seluler"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Perangkat Keras Dinonaktifkan"
@@ -2068,125 +2031,125 @@ msgstr "%s Perangkat Keras Dinonaktifkan"
msgid "%s Disabled"
msgstr "%s Dinonaktifkan"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Sambungkan ke Internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Mode Pesawat Terbang Menyala"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Wi-Fi dinonaktifkan ketika mode pesawat terbang menyala."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Matikan Mode Pesawat Terbang"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Wi-Fi Mati"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi perlu dinyalakan untuk menyambung ke suatu jaringan."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Nyalakan Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Jaringan Wi-Fi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Pilih jaringan"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Tiada Jaringan"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Pakai saklar perangkat keras untuk mematikan"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Pilih Jaringan"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Pengaturan Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Hotspot Aktif"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Tak Tersambung"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "menyambung…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "diperlukan autentikasi"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "koneksi gagal"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Pengaturan VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN Mati"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Pengaturan Jaringan"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Koneksi Kabel"
msgstr[1] "%s Koneksi Kabel"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Koneksi Wi-Fi"
msgstr[1] "%s Koneksi Wi-Fi"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Koneksi Modem"
msgstr[1] "%s Koneksi Modem"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Koneksi gagal"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Aktivasi koneksi jaringan gagal"
@@ -2256,6 +2219,10 @@ msgstr "Matikan"
msgid "Airplane Mode On"
msgstr "Mode Pesawat Terbang Aktif"
#: js/ui/status/system.js:103
msgid "Lock"
msgstr "Kunci"
#: js/ui/status/system.js:116
msgid "Power Off / Log Out"
msgstr "Matikan / Log Keluar"
@@ -2280,11 +2247,11 @@ msgstr "Matikan…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Perangkat Thunderbolt tak dikenal"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2292,21 +2259,21 @@ msgstr ""
"Perangkat baru telah terdeteksi saat Anda pergi. Harap lepaskan dan "
"sambungkan kembali perangkat untuk mulai menggunakannya."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Perangkat Thunderbolt tak dikenal"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Perangkat baru telah terdeteksi dan perlu diautorisasi oleh administrator."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Autorisasi Thunderbolt galat"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Tidak dapat mengautorisasi perangkat Thunderbolt: %s"
@@ -2347,14 +2314,34 @@ msgstr "Hanya Eksternal"
msgid "Built-in Only"
msgstr "Hanya Bawaan"
#: js/ui/unlockDialog.js:52
msgid "Log in as another user"
msgstr "Masuk sebagai pengguna lain"
# %A: Full weekday name
# %A: Minggu
# %B: Full month name
# %B: Januari
# %d: Day of month as decimal number (01-31)
# %d: 1
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %d %B"
#: js/ui/unlockDialog.js:67
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Gesek ke atas untuk membuka kunci"
#: 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:549
msgid "Unlock Window"
msgstr "Buka Kunci Jendela"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Masuk sebagai pengguna lain"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Aplikasi"
@@ -2393,7 +2380,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2498,11 +2485,11 @@ msgstr "Gagal meluncurkan \"%s\""
#: src/shell-keyring-prompt.c:731
msgid "Passwords do not match."
msgstr "Sandi tidak cocok."
msgstr "Kata sandi tidak cocok."
#: src/shell-keyring-prompt.c:739
msgid "Password cannot be blank"
msgstr "Sandi tidak boleh kosong"
msgstr "Kata sandi tidak boleh kosong"
#: src/shell-polkit-authentication-agent.c:344
msgid "Authentication dialog was dismissed by the user"
@@ -2576,7 +2563,7 @@ msgid "Create a new extension"
msgstr "Buat ekstensi baru"
#: subprojects/extensions-tool/src/command-create.c:280
#: subprojects/extensions-tool/src/command-list.c:158
#: subprojects/extensions-tool/src/command-list.c:168
msgid "Unknown arguments"
msgstr "Argumen tak dikenal"
@@ -2634,31 +2621,35 @@ msgstr "Tidak ada bundel ekstensi yang ditentukan"
msgid "More than one extension bundle specified"
msgstr "Lebih dari satu bundel ekstensi ditentukan"
#: subprojects/extensions-tool/src/command-list.c:118
#: subprojects/extensions-tool/src/command-list.c:125
msgid "Show user-installed extensions"
msgstr "Tampilkan ekstensi yang dipasang pengguna"
#: subprojects/extensions-tool/src/command-list.c:121
#: subprojects/extensions-tool/src/command-list.c:128
msgid "Show system-installed extensions"
msgstr "Tampilkan ekstensi yang dipasang sistem"
#: subprojects/extensions-tool/src/command-list.c:124
#: subprojects/extensions-tool/src/command-list.c:131
msgid "Show enabled extensions"
msgstr "Tampilkan ekstensi yang diaktifkan"
#: subprojects/extensions-tool/src/command-list.c:127
#: subprojects/extensions-tool/src/command-list.c:134
msgid "Show disabled extensions"
msgstr "Tampilkan ekstensi yang dinonaktifkan"
#: subprojects/extensions-tool/src/command-list.c:130
#: subprojects/extensions-tool/src/command-list.c:137
msgid "Show extensions with preferences"
msgstr "Tampilkan ekstensi dengan preferensi"
#: subprojects/extensions-tool/src/command-list.c:133
#: subprojects/extensions-tool/src/command-list.c:140
msgid "Show extensions with updates"
msgstr "Tampilkan ekstensi dengan pemutakhiran"
#: subprojects/extensions-tool/src/command-list.c:143
msgid "Print extension details"
msgstr "Cetak detail ekstensi"
#: subprojects/extensions-tool/src/command-list.c:141
#: subprojects/extensions-tool/src/command-list.c:151
msgid "List installed extensions"
msgstr "Daftar ekstensi yang dipasang"
@@ -2841,6 +2832,35 @@ msgstr[1] "%u Masukan"
msgid "System Sounds"
msgstr "Suara Sistem"
#~ msgid "Username…"
#~ msgstr "Nama pengguna…"
#~ msgid "Password: "
#~ msgstr "Sandi: "
#~ msgid "Enter Password…"
#~ msgstr "Masukkan Kata Sandi…"
#~ msgid "Next"
#~ msgstr "Selanjutnya"
#~ msgctxt "button"
#~ msgid "Sign In"
#~ msgstr "Masuk"
#~ msgid "%A, %B %d"
#~ msgstr "%A, %d %B"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "%d pesan baru"
#~ msgstr[1] "%d pesan baru"
#~ msgid "%d new notification"
#~ msgid_plural "%d new notifications"
#~ msgstr[0] "%d pemberitahuan baru"
#~ msgstr[1] "%d pemberitahuan baru"
#~ msgid "org.gnome.Extensions"
#~ msgstr "org.gnome.Extensions"
@@ -2866,8 +2886,5 @@ msgstr "Suara Sistem"
#~ msgid "Mobile broadband network password"
#~ msgstr "Sandi jaringan data seluler"
#~ msgid "Password"
#~ msgstr "Sandi"
#~ msgid "Rename"
#~ msgstr "Ubah Nama"

1680
po/it.po

File diff suppressed because it is too large Load Diff

512
po/ja.po

File diff suppressed because it is too large Load Diff

1666
po/ko.po

File diff suppressed because it is too large Load Diff

257
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-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 22:38+0200\n"
"POT-Creation-Date: 2020-02-27 21:57+0000\n"
"PO-Revision-Date: 2020-03-01 20:41+0200\n"
"Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
"Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
"Language: lt\n"
@@ -410,11 +410,11 @@ msgstr ""
"Jei pašalinsite plėtinį, reikės grįžti prie jo atsisiuntimo, jei norėsite jį "
"vėl įjungti"
#: js/extensionPrefs/main.js:144 js/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:166
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:910
#: js/extensionPrefs/main.js:144 js/gdm/authPrompt.js:135
#: js/ui/audioDeviceSelection.js:57 js/ui/components/networkAgent.js:107
#: js/ui/components/polkitAgent.js:139 js/ui/endSessionDialog.js:374
#: js/ui/extensionDownloader.js:165 js/ui/shellMountOperation.js:376
#: js/ui/shellMountOperation.js:386 js/ui/status/network.js:913
msgid "Cancel"
msgstr "Atsisakyti"
@@ -546,12 +546,11 @@ msgid "Log Out…"
msgstr "Atsijungti…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 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:"
msgid "Password"
msgstr "Slaptažodis"
@@ -573,9 +572,8 @@ msgstr "(pvz., naudotojas arba %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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#| msgid "Username: "
#: 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 "Naudotojo vardas"
@@ -810,11 +808,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%Y %m %-d, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Prisijungimas prie prieigos taško"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -849,27 +847,27 @@ msgid "All"
msgstr "Visos"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Atverti langai"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Naujas langas"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Paleisti naudojant dedikuotą grafikos kortą"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Pašalinti iš mėgstamų"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Pridėti prie mėgstamų"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Rodyti detalią informaciją"
@@ -1094,37 +1092,32 @@ msgstr ""
"Taip pat galite prisijungti paspausdami „WPS“ mygtuką savo maršrutizatoriuje."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Prisijungti"
#. static WEP
#: js/ui/components/networkAgent.js:207
#| msgid "Key: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Raktas"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#| msgid "Private key password: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Privataus rakto slaptažodis"
#: js/ui/components/networkAgent.js:263
#| msgid "Identity: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Tapatybė"
#: js/ui/components/networkAgent.js:277
#| msgid "Service: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Tarnyba"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Reikia patvirtinti tapatybę"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1133,44 +1126,42 @@ msgstr ""
"Slaptažodžiai arba šifravimo raktai yra būtini priėjimui prie belaidžio "
"tinklo „%s“."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Laidinis 802.1X tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:313
#| msgid "Network name: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Tinklo vardas"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL tapatybės patvirtinimas"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Reikalingas PIN kodas"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Reikalingas PIN kodas mobiliajam plačiajuosčiam įrenginiui"
#: js/ui/components/networkAgent.js:327
#| msgid "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Būtinas slaptažodis norint prisijungti prie „%s“."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Tinklo tvarkymas"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN slaptažodis"
@@ -1414,15 +1405,15 @@ msgstr "%s (nutolęs)"
msgid "%s (console)"
msgstr "%s (komandų eilutė)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Įdiegti"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Išdiegti plėtinį"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Parsiųsti ir įdiegti „%s“ iš extensions.gnome.org?"
@@ -1510,13 +1501,13 @@ msgid "Leave On"
msgstr "Palikti įjungtą"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Įjungti"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1530,59 +1521,59 @@ msgstr "Palikti išjungtą"
msgid "Region & Language Settings"
msgstr "Regiono ir kalbos nustatymai"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Nėra įdiegtų plėtinių"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s nepranešė apie jokias klaidas."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Slėpti klaidas"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Rodyti klaidas"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Įjungta"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Išjungta"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Klaida"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Pasenęs"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Atsiunčiama"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Žiūrėti šaltinį"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Tinklalapis"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Prisijungta privilegijuotu naudotoju"
#: js/ui/main.js:268
#: 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."
@@ -1590,15 +1581,15 @@ 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:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Ekrano užraktas išjungtas"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Ekrano užrakinimas reikalaujas GNOME vaizduoklio valdyklės."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Sistemos informacija"
@@ -1625,7 +1616,6 @@ msgstr "Apžvalga"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Rašykite, ko ieškote"
@@ -1653,23 +1643,23 @@ msgstr "Priskirti klavišų kombinaciją"
msgid "Done"
msgstr "Atlikta"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Keisti…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Nėra"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Spauskite mygtuką konfigūravimui"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Spauskit Esc išėjimui"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Išėjimui spauskite bet kurį klavišą"
@@ -1683,12 +1673,12 @@ msgstr "Užverti"
msgid "Activities"
msgstr "Apžvalga"
#: js/ui/panel.js:707
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Sistema"
#: js/ui/panel.js:820
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Viršutinė juosta"
@@ -1719,11 +1709,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:602
#: 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:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Programa užblokavo užrakinimą"
@@ -1785,7 +1775,6 @@ msgstr ""
"įrankį."
#: js/ui/shellMountOperation.js:306
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "PIM numeris"
@@ -1867,7 +1856,7 @@ msgstr "Didelis tekstas"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Bluetooth nustatymai"
@@ -1912,11 +1901,11 @@ msgstr "Antrinis paspaudimas"
msgid "Dwell Click"
msgstr "Uždelstas paspaudimas"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Klaviatūra"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Rodyti klaviatūros išdėstymą"
@@ -1963,7 +1952,7 @@ msgid "<unknown>"
msgstr "<nežinoma>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s išjungtas"
@@ -1989,7 +1978,7 @@ msgid "%s Disconnecting"
msgstr "Atsijungiama nuo %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "Jungiamasi prie %s"
@@ -2029,7 +2018,7 @@ msgid "Mobile Broadband Settings"
msgstr "Mobiliojo plačiajuosčio tinklo nustatymai"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s aparatinė įranga išjungta"
@@ -2041,100 +2030,100 @@ msgstr "%s aparatinė įranga išjungta"
msgid "%s Disabled"
msgstr "%s išjungtas"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Prisijungti prie interneto"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Skrydžio veiksena įjungta"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Belaidis ryšys yra išjungta skrydžio veiksenoje."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Išjungti skrydžio veikseną"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Belaidžio ryšys išjungtas"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Norint prisijungti prie tinklo reikia įjungti belaidį ryšį."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Įjungti belaidį ryšį"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Wi-Fi tinklai"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Pasirinkite tinklą"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Nėra tinklų"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Išjungimui naudoti aparatinį jungiklį"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Pasirinkite tinklą"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Belaidžio ryšio nustatymai"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Prieigos taškas %s aktyvus"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "Neprisijungta prie %s"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "jungiamasi…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "reikia patvirtinti tapatybę"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "nepavyko prisijungti"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPN nustatymai"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN išjungtas"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Tinklo nustatymai"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2142,7 +2131,7 @@ msgstr[0] "%s laidinis ryšys"
msgstr[1] "%s laidiniai ryšiai"
msgstr[2] "%s laidinių ryšių"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2150,7 +2139,7 @@ msgstr[0] "%s belaidis ryšys"
msgstr[1] "%s belaidžiai ryšiai"
msgstr[2] "%s belaidžių ryšių"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2158,11 +2147,11 @@ msgstr[0] "%s modemo ryšys"
msgstr[1] "%s modemo ryšiai"
msgstr[2] "%s modemo ryšių"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Nepavyko prisijungti"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Tinklo ryšio nepavyko aktyvuoti"
@@ -2260,11 +2249,11 @@ msgstr "Išjungti…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Nežinoma Thunderbolt įrenginys"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2272,20 +2261,20 @@ msgstr ""
"Jums nesant aptiktas naujas įrenginys. Atjunkite ir vėl prijunkite įrenginį, "
"jei norite jį naudoti."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Neleidžiamas Thunderbolt įrenginys"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr "Buvo aptiktas naujas įrenginys, kurį turi leisti administratorius."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt autorizacijos klaida"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nepavyko autorizuoti Thunderbolt įrenginio: %s"
@@ -2326,10 +2315,30 @@ msgstr "Tik išorinis"
msgid "Built-in Only"
msgstr "Tik vidinis"
#: js/ui/unlockDialog.js:552
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A %B %-d"
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Atrakinkite perbraukdami"
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Atrakinkite mygtuko ar klavišo paspaudimu"
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Atrakinimo langas"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Prisijungti kitu naudotoju"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Programos"
@@ -2369,7 +2378,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2630,7 +2639,6 @@ msgid "Show extensions with preferences"
msgstr "Rodyti plėtinius su nuostatomis"
#: subprojects/extensions-tool/src/command-list.c:140
#| msgid "Show extensions with preferences"
msgid "Show extensions with updates"
msgstr "Rodyti plėtinius su atnaujinimais"
@@ -2851,9 +2859,6 @@ msgstr "Sistemos garsai"
#~ msgstr[1] "%d nauji pranešimai"
#~ msgstr[2] "%d naujų pranešimų"
#~ msgid "Log in as another user"
#~ msgstr "Prisijungti kitu naudotoju"
#~ msgid "Logout…"
#~ msgstr "Atsijungti…"

661
po/mjw.po

File diff suppressed because it is too large Load Diff

1821
po/pa.po

File diff suppressed because it is too large Load Diff

241
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-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 17:22+0100\n"
"POT-Creation-Date: 2020-02-27 21:57+0000\n"
"PO-Revision-Date: 2020-02-29 13:09+0100\n"
"Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
"Language-Team: Polish <community-poland@mozilla.org>\n"
"Language: pl\n"
@@ -416,11 +416,11 @@ msgstr ""
"Po usunięciu rozszerzenia jego ponowne włączenie będzie wymagało pobrania od "
"nowa"
#: 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:166
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:910
#: 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 "Anuluj"
@@ -555,10 +555,10 @@ msgid "Log Out…"
msgstr "Wyloguj się…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 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 "Hasło"
@@ -581,8 +581,8 @@ msgstr "(np. użytkownik lub %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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#: 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 "Nazwa użytkownika"
@@ -824,11 +824,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Logowanie do hotspotu"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -863,27 +863,27 @@ msgid "All"
msgstr "Wszystkie"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Otwarte okna"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Nowe okno"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Uruchom za pomocą dedykowanej karty graficznej"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Usuń z ulubionych"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Dodaj do ulubionych"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Wyświetl szczegóły"
@@ -1105,33 +1105,32 @@ msgid ""
msgstr "Można także połączyć naciskając przycisk „WPS” na routerze."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Połącz"
#. static WEP
#: js/ui/components/networkAgent.js:207
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Klucz"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Hasło klucza prywatnego"
#: js/ui/components/networkAgent.js:263
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Tożsamość"
#: js/ui/components/networkAgent.js:277
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Usługa"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Wymagane jest uwierzytelnienie"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1140,42 +1139,42 @@ msgstr ""
"Do uzyskania dostępu do sieci bezprzewodowej „%s” wymagane jest hasło lub "
"klucze szyfrowania."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Uwierzytelnianie przewodowe 802.1X"
#: js/ui/components/networkAgent.js:313
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nazwa sieci"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Uwierzytelnienie DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Wymagany jest kod PIN"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Do korzystania z urządzenia komórkowego wymagane jest podanie kodu PIN"
#: js/ui/components/networkAgent.js:327
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "Kod PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Do połączenia z siecią „%s” wymagane jest hasło."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Menedżer sieci"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Hasło sieci VPN"
@@ -1422,15 +1421,15 @@ msgstr "%s (zdalnie)"
msgid "%s (console)"
msgstr "%s (konsola)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Zainstaluj"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Instalacja rozszerzenia"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr ""
@@ -1519,13 +1518,13 @@ msgid "Leave On"
msgstr "Pozostaw włączone"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Włącz"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1539,59 +1538,59 @@ msgstr "Pozostaw wyłączone"
msgid "Region & Language Settings"
msgstr "Ustawienia regionu i języka"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Nie zainstalowano rozszerzeń"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "Rozszerzenie „%s” nie wysłało żadnych błędów."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Ukryj błędy"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Wyświetl błędy"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Włączone"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Wyłączone"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Błąd"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Nieaktualne"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "Pobieranie"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Wyświetl źródło"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Strona WWW"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Zalogowano jako uprawniony użytkownik"
#: js/ui/main.js:268
#: 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."
@@ -1599,15 +1598,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:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Blokada ekranu jest wyłączona"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Blokowanie ekranu wymaga menedżera wyświetlania GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informacje systemowe"
@@ -1661,23 +1660,23 @@ msgstr "Przydzielenie klawiszy"
msgid "Done"
msgstr "Gotowe"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Modyfikuj…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Brak"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Naciśnięcie przycisku skonfiguruje"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Klawisz Esc zakończy"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Naciśnięcie dowolnego przycisku zakończy"
@@ -1691,12 +1690,12 @@ msgstr "Zakończ"
msgid "Activities"
msgstr "Podgląd"
#: js/ui/panel.js:707
#: js/ui/panel.js:713
msgctxt "System menu in the top bar"
msgid "System"
msgstr "Menu systemowe"
#: js/ui/panel.js:820
#: js/ui/panel.js:826
msgid "Top Bar"
msgstr "Górny pasek"
@@ -1727,11 +1726,11 @@ msgstr "Środowisko GNOME musi zablokować 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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Nie można zablokować"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Blokowanie zostało zablokowane przez program"
@@ -1874,7 +1873,7 @@ msgstr "Duży tekst"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Ustawienia Bluetooth"
@@ -1919,11 +1918,11 @@ msgstr "Kliknięcie pomocnicze"
msgid "Dwell Click"
msgstr "Kliknięcie spoczynkowe"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Klawiatura"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Wyświetl układ klawiatury"
@@ -1971,7 +1970,7 @@ msgid "<unknown>"
msgstr "<nieznane>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "Wyłączono sieć %s"
@@ -1997,7 +1996,7 @@ msgid "%s Disconnecting"
msgstr "Rozłączanie z sieci %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "Łączenie z siecią %s"
@@ -2037,7 +2036,7 @@ msgid "Mobile Broadband Settings"
msgstr "Ustawienia sieci komórkowej"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Wyłączono sprzęt dla sieci %s"
@@ -2049,100 +2048,100 @@ msgstr "Wyłączono sprzęt dla sieci %s"
msgid "%s Disabled"
msgstr "Wyłączono sieć %s"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Połącz z Internetem"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Tryb samolotowy jest włączony"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Sieć Wi-Fi jest wyłączona, kiedy tryb samolotowy jest włączony."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Wyłącz tryb samolotowy"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Sieć Wi-Fi jest wyłączona"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Wi-Fi musi być włączone, aby połączyć z siecią."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Włącz sieć Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Sieci Wi-Fi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Wybór sieci"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Brak sieci"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Należy użyć przełącznika sprzętowego, aby wyłączyć"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Wybierz sieć"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Ustawienia sieci Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Hotspot %s jest włączony"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "Nie połączono z siecią %s"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "łączenie…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "wymagane jest uwierzytelnienie"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "połączenie się nie powiodło"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Ustawienia sieci VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "Wyłączono sieć VPN"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Ustawienia sieci"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2150,7 +2149,7 @@ msgstr[0] "%s połączenie przewodowe"
msgstr[1] "%s połączenia przewodowe"
msgstr[2] "%s połączeń przewodowych"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2158,7 +2157,7 @@ msgstr[0] "%s połączenie Wi-Fi"
msgstr[1] "%s połączenia Wi-Fi"
msgstr[2] "%s połączeń Wi-Fi"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2166,11 +2165,11 @@ msgstr[0] "%s połączenie modemowe"
msgstr[1] "%s połączenia modemowe"
msgstr[2] "%s połączeń modemowych"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Połączenie się nie powiodło"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Włączenie połączenia sieciowego się nie powiodło"
@@ -2268,11 +2267,11 @@ msgstr "Wyłącz komputer…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Nieznane urządzenie Thunderbolt"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2280,21 +2279,21 @@ msgstr ""
"Podczas nieobecności wykryto nowe urządzenie. Proszę je rozłączyć "
"i podłączyć ponownie, aby zacząć je używać."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Nieupoważnione urządzenie Thunderbolt"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Wykryto nowe urządzenie, które musi zostać upoważnione przez administratora."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Błąd upoważnienia Thunderbolt"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Nie można upoważnić urządzenia Thunderbolt: %s"
@@ -2335,10 +2334,28 @@ msgstr "Tylko zewnętrzny"
msgid "Built-in Only"
msgstr "Tylko wbudowany"
#: js/ui/unlockDialog.js:552
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A, %-d %B"
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Przeciągnięcie w górę odblokuje"
#: 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:549
msgid "Unlock Window"
msgstr "Okno odblokowania"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Zaloguj jako inny użytkownik"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Programy"
@@ -2378,7 +2395,7 @@ msgstr[2] "Zmienione ustawienia zostaną przywrócone za %d sekund"
#. 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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d×%d"

View File

@@ -24,8 +24,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-02-12 19:34+0000\n"
"PO-Revision-Date: 2020-02-13 11:08-0300\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-20 07:50-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
@@ -437,9 +437,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Cancelar"
@@ -569,6 +569,15 @@ msgstr ""
msgid "Log Out…"
msgstr "Encerrar sessão…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 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 "Senha"
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Escolher sessão"
@@ -584,12 +593,16 @@ msgstr "Não está listado?"
msgid "(e.g., user or %s)"
msgstr "(ex.: usuário ou %s)"
#: js/gdm/loginDialog.js:917
#. 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:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
#| msgid "Username: "
msgid "Username"
msgstr "Nome de usuário"
msgid "Username"
msgstr "Nome de usuário"
#: js/gdm/loginDialog.js:1252
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Janela de sessão"
@@ -814,11 +827,11 @@ msgid "%B %-d %Y, %l%M %p"
msgstr "%-d de %B de %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login window
#: js/portalHelper/main.js:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Autenticação de ponto de acesso"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1100,48 +1113,36 @@ msgstr ""
"roteador."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Conectar"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Senha: "
#: js/ui/components/networkAgent.js:208
#| msgid "Key: "
msgid "Key"
msgstr "Chave"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Chave: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
#| msgid "Private key password: "
msgid "Private key password"
msgstr "Senha da chave privada"
#. 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/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:257
#: js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Nome de usuário: "
#: js/ui/components/networkAgent.js:267
#| msgid "Identity: "
msgid "Identity"
msgstr "Identidade"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Senha da chave privada: "
#: js/ui/components/networkAgent.js:281
#| msgid "Service: "
msgid "Service"
msgstr "Serviço"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Identidade: "
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Serviço: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Autenticação necessária"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1150,42 +1151,44 @@ msgstr ""
"Senhas ou chaves criptografadas são necessárias para acessar a rede sem fio "
"“%s”."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Autenticação 802.1X cabeada"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Nome da rede: "
#: js/ui/components/networkAgent.js:317
#| msgid "Network name: "
msgid "Network name"
msgstr "Nome da rede"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Autenticação DSL"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Código PIN requisitado"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "O código PIN é necessário para o dispositivo móvel de banda larga"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:331
#| msgid "PIN: "
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Uma senha é necessária para se conectar a “%s”."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Gerenciador de rede"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "Senha de VPN"
@@ -1209,10 +1212,6 @@ msgstr "Autenticação"
msgid "Sorry, that didnt work. Please try again."
msgstr "Desculpe, isto não funcionou. Por favor, tente novamente."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Lembrar senha…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1428,15 +1427,15 @@ msgstr "%s (remoto)"
msgid "%s (console)"
msgstr "%s (console)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Instalar"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Instalar extensão"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar “%s” de extensions.gnome.org?"
@@ -1526,13 +1525,13 @@ msgid "Leave On"
msgstr "Deixar ativado"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Ligar"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1614,7 +1613,7 @@ msgstr "Bloqueio de tela desabilitado"
msgid "Screen Locking requires the GNOME display manager."
msgstr "O bloqueio de tela requer o gerenciador de exibição do GNOME."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Informações do sistema"
@@ -1641,8 +1640,9 @@ msgstr "Panorama"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search…"
msgstr "Digite para pesquisar…"
#| msgid "Type to search…"
msgid "Type to search"
msgstr "Digite para pesquisar"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1668,23 +1668,23 @@ msgstr "Atribuir atalho"
msgid "Done"
msgstr "Concluído"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Editar…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Nenhum"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Pressione um botão para configurar"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Pressione Esc para sair"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Pressione qualquer tecla para sair"
@@ -1734,11 +1734,11 @@ msgstr "GNOME precisa bloquear a tela"
#.
#. 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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Não foi possível bloquear"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo"
@@ -1799,8 +1799,9 @@ msgstr ""
"%s</i>."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number…"
msgstr "Insira um número PIM…"
#| msgid "Enter PIM Number…"
msgid "PIM Number"
msgstr "Insira um número PIM"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
@@ -1880,7 +1881,7 @@ msgstr "Texto grande"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Configurações de Bluetooth"
@@ -1977,7 +1978,7 @@ msgid "<unknown>"
msgstr "<desconhecido>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s desligado"
@@ -2004,7 +2005,7 @@ msgid "%s Disconnecting"
msgstr "Desconectando de %s"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "Conectando a %s"
@@ -2044,7 +2045,7 @@ msgid "Mobile Broadband Settings"
msgstr "Configurações de banda larga móvel"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hardware de %s desabilitado"
@@ -2056,125 +2057,125 @@ msgstr "Hardware de %s desabilitado"
msgid "%s Disabled"
msgstr "%s está desabilitado"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Conectar à Internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Modo avião ligado"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "O Wi-Fi é desabilitado quando o modo avião está ligado."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Desligar modo avião"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Wi-Fi desligado"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "O Wi-Fi precisa ser ligado a fim de conectar-se a uma rede."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Ligar Wi-Fi"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Redes Wi-Fi"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Selecione uma rede"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Nenhuma rede"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Usar alternador de hardware para desligar"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Selecione a rede"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Configurações de Wi-Fi"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Ponto de acesso %s está ativo"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s não está conectado"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "autenticação necessária"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "conexão falhou"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "Configurações de VPN"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN desligada"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Configurações de rede"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s conexão cabeada"
msgstr[1] "%s conexões cabeadas"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s conexão Wi-Fi"
msgstr[1] "%s conexões Wi-Fi"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s conexão por modem"
msgstr[1] "%s conexões por modems"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Falha de conexão"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Falha ao ativar a conexão da rede"
@@ -2272,11 +2273,11 @@ msgstr "Desligar…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Dispositivo Thunderbolt desconhecido"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2284,22 +2285,22 @@ msgstr ""
"Um novo dispositivo foi detectado enquanto você estava ausente. Por "
"gentileza, desconecte e reconecte o dispositivo para começar a usá-lo."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Dispositivo Thunderbolt não autorizado"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Um novo dispositivo foi detectado e precisa ser autorizado por um "
"administrador."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Erro de autorização de thunderbolt"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Não foi possível autorizar o dispositivo Thunderbolt: %s"
@@ -2340,7 +2341,23 @@ msgstr "Externa apenas"
msgid "Built-in Only"
msgstr "Interna apenas"
#: js/ui/unlockDialog.js:459
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#| msgctxt "calendar heading"
#| msgid "%A, %B %-d"
msgid "%A %B %-d"
msgstr "%A, %-d de %B"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Deslize para desbloquear"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Clique ou pressione uma tecla para desbloquear"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Desbloquear janela"
@@ -2384,7 +2401,7 @@ msgstr[1] "Alterações nas configurações serão revertidas em %d segundos"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
#: js/ui/windowManager.js:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2647,7 +2664,6 @@ msgid "Show extensions with preferences"
msgstr "Mostra extensões com preferências"
#: subprojects/extensions-tool/src/command-list.c:140
#| msgid "Show extensions with preferences"
msgid "Show extensions with updates"
msgstr "Mostra extensões com atualizações"
@@ -2838,6 +2854,16 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sons do sistema"
#~| msgid "Username: "
#~ msgid "Username…"
#~ msgstr "Nome de usuário…"
#~ msgid "Password: "
#~ msgstr "Senha: "
#~ msgid "Enter Password…"
#~ msgstr "Lembrar senha…"
#~ msgid "Next"
#~ msgstr "Próximo"
@@ -2876,9 +2902,6 @@ msgstr "Sons do sistema"
#~ msgid "Mobile broadband network password"
#~ msgstr "Senha da rede de banda larga móvel"
#~ msgid "Password"
#~ msgstr "Senha"
#~ msgctxt "search-result"
#~ msgid "Lock Orientation"
#~ msgstr "Bloquear orientação"

177
po/sr.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-02-17 11:08+0000\n"
"PO-Revision-Date: 2020-02-17 21:02+0100\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-21 10:42+0100\n"
"Last-Translator: Марко М. Костић <marko.m.kostic@gmail.com>\n"
"Language-Team: српски <gnome-sr@googlegroups.org>\n"
"Language: sr\n"
@@ -413,9 +413,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Откажи"
@@ -554,9 +554,9 @@ msgstr "Одјава…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: js/ui/components/networkAgent.js:214 js/ui/components/networkAgent.js:238
#: js/ui/components/networkAgent.js:259 js/ui/components/networkAgent.js:279
#: js/ui/components/networkAgent.js:289 js/ui/components/polkitAgent.js:277
#: 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 "Лозинка"
@@ -579,8 +579,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:234
#: js/ui/components/networkAgent.js:257 js/ui/components/networkAgent.js:275
#: 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 "Корисник"
@@ -832,11 +832,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Пријава на врућу тачку"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1115,33 +1115,32 @@ msgid ""
msgstr "Или можете повезати притиском на дугме „WPS“, на вашем рутеру."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Повежи се"
#. static WEP
#: js/ui/components/networkAgent.js:207
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Кључ"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Лозинка приватног кључа:"
#: js/ui/components/networkAgent.js:263
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Идентитет"
#: js/ui/components/networkAgent.js:277
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Услуга"
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1149,42 +1148,42 @@ msgid ""
msgstr ""
"Потребне су лозинке или кључеви шифровања за приступ бежичној мрежи „%s“."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: 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:313
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Назив мреже"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "Потврђивање идентитета ДСЛ-а"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "Потребан је ПИН кôд"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Потребан је ПИН код за повезивање мобилног широкопојасног уређаја"
#: js/ui/components/networkAgent.js:327
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "ПИН"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Управник мреже"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "ВПН лозинка"
@@ -1432,15 +1431,15 @@ msgstr "%s (удаљено)"
msgid "%s (console)"
msgstr "%s (љуска)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Инсталирај"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Инсталирај проширење"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Да преузмем и да инсталирам „%s“ са „extensions.gnome.org“-а?"
@@ -1528,13 +1527,13 @@ msgid "Leave On"
msgstr "Остави укључено"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Укључи"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1616,7 +1615,7 @@ msgstr "Закључавање екрана онемогућено"
msgid "Screen Locking requires the GNOME display manager."
msgstr "Потребан је Гномов управник екрана за могућност закључавања екрана."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Подаци о систему"
@@ -1670,23 +1669,23 @@ msgstr "Додели тастер"
msgid "Done"
msgstr "Готово"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Уреди…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Ништа"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Притисните дугме да подесите"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Притисните „Есц“ да изађете"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Притисните неки тастер да изађете"
@@ -1736,11 +1735,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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Не могу да закључам"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Неки програм је блокирао закључавање"
@@ -1884,7 +1883,7 @@ msgstr "Велики текст"
msgid "Bluetooth"
msgstr "Блутут"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Подешавања Блутута"
@@ -1983,7 +1982,7 @@ msgid "<unknown>"
msgstr "<непознато>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s искључено"
@@ -2009,7 +2008,7 @@ msgid "%s Disconnecting"
msgstr "%s прекидање везе у току"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s повезивање у току"
@@ -2049,7 +2048,7 @@ msgid "Mobile Broadband Settings"
msgstr "Подешавања мобилне широкопојасне везе"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s уређај искључен"
@@ -2061,100 +2060,100 @@ msgstr "%s уређај искључен"
msgid "%s Disabled"
msgstr "%s искључено"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Повежи се на Интернет"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Авионски режим рада је укључен"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Бежична веза је искључена када је укључен авионски режим рада."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Искључи авионски режим рада"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Бежична веза је искључена"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Бежична веза треба бити укључена да бисте се повезали на мрежу."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Укључи бежичну везу"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Бежичне мреже"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Изаберите мрежу"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Нема мрежа"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Користи физички прекидач за искључивање"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Изабери мрежу"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Подешавања бежичне везе"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s хотспот укључен"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s неповезано"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "повезујем се…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "потребна је пријава"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "повезивање није успело"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "ВПН подешавања"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "ВПН"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "Искључи ВПН"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Подешавања мреже"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
@@ -2163,7 +2162,7 @@ msgstr[1] "%s жичане везе"
msgstr[2] "%s жичаних веза"
msgstr[3] "%s жичана веза"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
@@ -2172,7 +2171,7 @@ msgstr[1] "%s бежичне везе"
msgstr[2] "%s бежичних веза"
msgstr[3] "%s бежична веза"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
@@ -2181,11 +2180,11 @@ msgstr[1] "%s модемске везе"
msgstr[2] "%s модемских веза"
msgstr[3] "%s модемска веза"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Повезивање није успело"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Активирање мрежне везе није успело"
@@ -2284,11 +2283,11 @@ msgstr "Искључи…"
msgid "Thunderbolt"
msgstr "Тандерболт"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Непознат Тандерболт уређај"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2296,21 +2295,21 @@ msgstr ""
"Нови уређај је уочен док нисте били ту. Поново повежите уређај да бисте "
"почели да га користите."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Неовлашћени Тандерболт уређај"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Уочен је нови уређај и потребно је да администратор овласти његову употребу."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Грешка у овлашћивању Тандерболта"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Не могу да овластим Тандерболт уређај: %s"
@@ -2351,6 +2350,20 @@ msgstr "Само спољни"
msgid "Built-in Only"
msgstr "Само уграђени"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
msgid "%A %B %-d"
msgstr "%A, %-d. %B"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Превуци за откључавање"
#: js/ui/unlockDialog.js:379
msgid "Click or press a key to unlock"
msgstr "Кликни или притисни тастер за откључавање"
#: js/ui/unlockDialog.js:552
msgid "Unlock Window"
msgstr "Откључај прозор"
@@ -2395,7 +2408,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"

255
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-02-12 19:34+0000\n"
"PO-Revision-Date: 2020-02-13 21:18+0100\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-18 22:00+0100\n"
"Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\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.2.4\n"
"X-Generator: Poedit 2.3\n"
#: data/50-gnome-shell-system.xml:6
msgid "System"
@@ -411,9 +411,9 @@ msgstr ""
#: 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:166
#: 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:910
#: js/ui/status/network.js:913
msgid "Cancel"
msgstr "Avbryt"
@@ -546,6 +546,15 @@ msgstr ""
msgid "Log Out…"
msgstr "Logga ut…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 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 "Lösenord"
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Välj session"
@@ -561,11 +570,15 @@ msgstr "Inte listad?"
msgid "(e.g., user or %s)"
msgstr "(till exempel användare eller %s)"
#: js/gdm/loginDialog.js:917
msgid "Username…"
msgstr "Användarnamn…"
#. 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:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "Användarnamn"
#: js/gdm/loginDialog.js:1252
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Inloggningsfönster"
@@ -792,11 +805,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Surfzonsinloggning"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -1077,48 +1090,32 @@ msgstr ""
"Alternativt kan du ansluta genom att trycka på ”WPS”-knappen på din router."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Anslut"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Lösenord: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Nyckel"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Nyckel: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Lösenord för privat nyckel"
#. 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/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:257
#: js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Användarnamn: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Identitet"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Lösenord för privat nyckel: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Tjänst"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Identitet: "
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Tjänst: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Autentisering krävs"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1127,42 +1124,42 @@ msgstr ""
"Lösenord eller krypteringsnycklar krävs för att komma åt det trådlösa "
"nätverket ”%s”."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Trådbunden 802.1X-autentisering"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Nätverksnamn: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Nätverksnamn"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL-autentisering"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN-kod krävs"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "PIN-koden krävs för den mobila bredbandsenheten"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PIN-kod: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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 "Ett lösenord krävs för att ansluta till ”%s”."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Nätverkshanterare"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN-lösenord"
@@ -1186,10 +1183,6 @@ msgstr "Autentisera"
msgid "Sorry, that didnt work. Please try again."
msgstr "Tyvärr, det fungerade inte. Försök igen."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Ange lösenord…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1406,15 +1399,15 @@ msgstr "%s (fjärransluten)"
msgid "%s (console)"
msgstr "%s (konsol)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Installera"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Installera tillägg"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
@@ -1503,13 +1496,13 @@ msgid "Leave On"
msgstr "Lämna påslagen"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Slå på"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1591,7 +1584,7 @@ msgstr "Skärmlås inaktiverat"
msgid "Screen Locking requires the GNOME display manager."
msgstr "Skärmlås kräver GNOME:s displayhanterare."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Systeminformation"
@@ -1618,8 +1611,8 @@ msgstr "Översikt"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "Skriv för att söka"
msgid "Type to search"
msgstr "Skriv för att söka"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1645,23 +1638,23 @@ msgstr "Tilldela tangenttryckning"
msgid "Done"
msgstr "Färdig"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Redigera…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Ingen"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Tryck på en knapp för att konfigurera"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Tryck Esc för att avsluta"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Tryck på valfri tangent för att avsluta"
@@ -1711,11 +1704,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:602
#: 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:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program"
@@ -1776,8 +1769,8 @@ msgstr ""
"i> istället."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "Ange PIM-nummer"
msgid "PIM Number"
msgstr "PIM-nummer"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
@@ -1857,7 +1850,7 @@ msgstr "Stor text"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Inställningar för Bluetooth"
@@ -1952,7 +1945,7 @@ msgid "<unknown>"
msgstr "<okänd>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s avslagen"
@@ -1978,7 +1971,7 @@ msgid "%s Disconnecting"
msgstr "%s kopplar från"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s ansluter"
@@ -2018,7 +2011,7 @@ msgid "Mobile Broadband Settings"
msgstr "Inställningar för mobilt bredband"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "Hårdvara för %s inaktiverad"
@@ -2030,126 +2023,126 @@ msgstr "Hårdvara för %s inaktiverad"
msgid "%s Disabled"
msgstr "%s inaktiverad"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "Anslut till internet"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Flygplansläge är på"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Trådlöst nätverk är avslaget när flygplansläge är på."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Slå av flygplansläge"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Trådlöst nätverk är av"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr ""
"Trådlöst nätverk behöver slås på för att kunna ansluta till ett nätverk."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Slå på trådlöst nätverk"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Trådlösa nätverk"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Välj ett nätverk"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Inga nätverk"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Använd hårdvarubrytare för att slå av"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Välj nätverk"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Inställningar för trådlösa nätverk"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "Surfzon för %s aktiv"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s ej ansluten"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "ansluter…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "autentisering krävs"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "anslutningen misslyckades"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPN-inställningar"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN avslaget"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Nätverksinställningar"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s trådbunden anslutning"
msgstr[1] "%s trådbundna anslutningar"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s trådlös anslutning"
msgstr[1] "%s trådlösa anslutningar"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s modemanslutning"
msgstr[1] "%s modemanslutningar"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Anslutningen misslyckades"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Aktivering av nätverksanslutning misslyckades"
@@ -2247,11 +2240,11 @@ msgstr "Stäng av…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Okänd Thunderbolt-enhet"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2259,21 +2252,21 @@ msgstr ""
"En ny enhet har upptäckts medan du var borta. Koppla från och anslut enheten "
"igen för att börja använda den."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Ej auktoriserad Thunderbolt-enhet"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"En ny enhet har upptäckts och behöver auktoriseras av en administratör."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt-auktoriseringsfel"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Kunde inte auktorisera Thunderbolt-enheten: %s"
@@ -2314,7 +2307,21 @@ msgstr "Extern skärm"
msgid "Built-in Only"
msgstr "Inbyggd skärm"
#: js/ui/unlockDialog.js:459
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:378
msgid "Swipe up to unlock"
msgstr "Svep uppåt för att låsa upp"
#: js/ui/unlockDialog.js:379
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:552
msgid "Unlock Window"
msgstr "Lås upp fönster"
@@ -2356,7 +2363,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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2808,6 +2815,15 @@ msgstr[1] "%u ingångar"
msgid "System Sounds"
msgstr "Systemljud"
#~ msgid "Username…"
#~ msgstr "Användarnamn…"
#~ msgid "Password: "
#~ msgstr "Lösenord: "
#~ msgid "Enter Password…"
#~ msgstr "Ange lösenord…"
#~ msgid "Next"
#~ msgstr "Nästa"
@@ -2856,9 +2872,6 @@ msgstr "Systemljud"
#~ msgid "Mobile broadband network password"
#~ msgstr "Lösenord för mobilt bredbandsnätverk"
#~ msgid "Password"
#~ msgstr "Lösenord"
#~ msgid "Rename"
#~ msgstr "Byt namn"

314
po/tr.po
View File

@@ -17,8 +17,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-02-12 22:04+0000\n"
"PO-Revision-Date: 2020-02-13 20:40+0300\n"
"POT-Creation-Date: 2020-02-24 12:37+0000\n"
"PO-Revision-Date: 2020-02-18 19:18+0300\n"
"Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"Language: tr\n"
@@ -26,7 +26,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.3\n"
"X-Generator: Poedit 2.0.6\n"
"X-Project-Style: gnome\n"
#: data/50-gnome-shell-system.xml:6
@@ -425,11 +425,11 @@ msgstr ""
"Uzantıyı kaldırırsanız, yeniden etkinleştirmek istediğinizde yeniden "
"indirmeniz gerekir"
#: 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:166
#: js/ui/shellMountOperation.js:376 js/ui/shellMountOperation.js:386
#: js/ui/status/network.js:910
#: 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 "İptal"
@@ -559,6 +559,15 @@ msgstr ""
msgid "Log Out…"
msgstr "Oturumu Kapat…"
#. Cisco LEAP
#: 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 "Parola"
#: js/gdm/loginDialog.js:318
msgid "Choose Session"
msgstr "Oturum Seç"
@@ -574,11 +583,15 @@ msgstr "Listede yok mu?"
msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)"
#: js/gdm/loginDialog.js:917
msgid "Username…"
msgstr "Kullanıcı Adı…"
#. 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:238
#: js/ui/components/networkAgent.js:261 js/ui/components/networkAgent.js:279
msgid "Username"
msgstr "Kullanıcı Adı"
#: js/gdm/loginDialog.js:1252
#: js/gdm/loginDialog.js:1253
msgid "Login Window"
msgstr "Oturum Açma Penceresi"
@@ -797,11 +810,11 @@ msgid "%B %-d %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:42
#: js/portalHelper/main.js:41
msgid "Hotspot Login"
msgstr "Erişim Noktası Girişi"
#: js/portalHelper/main.js:88
#: js/portalHelper/main.js:87
msgid ""
"Your connection to this hotspot login is not secure. Passwords or other "
"information you enter on this page can be viewed by people nearby."
@@ -837,27 +850,27 @@ msgid "All"
msgstr "Tümü"
#. Translators: This is the heading of a list of open windows
#: js/ui/appDisplay.js:2454 js/ui/panel.js:75
#: js/ui/appDisplay.js:2450 js/ui/panel.js:75
msgid "Open Windows"
msgstr "Açık Pencereler"
#: js/ui/appDisplay.js:2474 js/ui/panel.js:82
#: js/ui/appDisplay.js:2470 js/ui/panel.js:82
msgid "New Window"
msgstr "Yeni Pencere"
#: js/ui/appDisplay.js:2485
#: js/ui/appDisplay.js:2481
msgid "Launch using Dedicated Graphics Card"
msgstr "Adanmış Ekran Kartıyla Başlat"
#: js/ui/appDisplay.js:2513 js/ui/dash.js:239
#: js/ui/appDisplay.js:2509 js/ui/dash.js:239
msgid "Remove from Favorites"
msgstr "Sık Kullanılanlardan Çıkar"
#: js/ui/appDisplay.js:2519
#: js/ui/appDisplay.js:2515
msgid "Add to Favorites"
msgstr "Sık Kullanılanlara Ekle"
#: js/ui/appDisplay.js:2529 js/ui/panel.js:93
#: js/ui/appDisplay.js:2525 js/ui/panel.js:93
msgid "Show Details"
msgstr "Ayrıntıları Göster"
@@ -1083,48 +1096,32 @@ msgstr ""
"bağlayabilirsiniz."
#: js/ui/components/networkAgent.js:101 js/ui/status/network.js:223
#: js/ui/status/network.js:314 js/ui/status/network.js:913
#: js/ui/status/network.js:314 js/ui/status/network.js:916
msgid "Connect"
msgstr "Bağlan"
#. Cisco LEAP
#: js/ui/components/networkAgent.js:202 js/ui/components/networkAgent.js:214
#: js/ui/components/networkAgent.js:238 js/ui/components/networkAgent.js:259
#: js/ui/components/networkAgent.js:279 js/ui/components/networkAgent.js:289
msgid "Password: "
msgstr "Parola: "
#: js/ui/components/networkAgent.js:208
msgid "Key"
msgstr "Anahtar"
#. static WEP
#: js/ui/components/networkAgent.js:207
msgid "Key: "
msgstr "Anahtar: "
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "Özel anahtar parolası"
#. 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/ui/components/networkAgent.js:234 js/ui/components/networkAgent.js:257
#: js/ui/components/networkAgent.js:275
msgid "Username: "
msgstr "Kullanıcı Adı: "
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "Kimlik"
#: js/ui/components/networkAgent.js:242 js/ui/components/networkAgent.js:265
msgid "Private key password: "
msgstr "Özel anahtar parolası: "
#: js/ui/components/networkAgent.js:281
msgid "Service"
msgstr "Hizmet"
#: js/ui/components/networkAgent.js:263
msgid "Identity: "
msgstr "Kimlik: "
#: js/ui/components/networkAgent.js:277
msgid "Service: "
msgstr "Hizmet: "
#: js/ui/components/networkAgent.js:306 js/ui/components/networkAgent.js:334
#: js/ui/components/networkAgent.js:681 js/ui/components/networkAgent.js:702
#: 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 "Kimlik doğrulama gerekir"
#: js/ui/components/networkAgent.js:307 js/ui/components/networkAgent.js:682
#: 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 "
@@ -1132,42 +1129,42 @@ msgid ""
msgstr ""
"“%s” kablosuz ağına erişmek için parola veya şifreleme anahtarları gerekiyor."
#: js/ui/components/networkAgent.js:311 js/ui/components/networkAgent.js:686
#: js/ui/components/networkAgent.js:315 js/ui/components/networkAgent.js:690
msgid "Wired 802.1X authentication"
msgstr "Kablolu 802.1X kimlik doğrulaması"
#: js/ui/components/networkAgent.js:313
msgid "Network name: "
msgstr "Ağ adı: "
#: js/ui/components/networkAgent.js:317
msgid "Network name"
msgstr "Ağ adı"
#: js/ui/components/networkAgent.js:318 js/ui/components/networkAgent.js:690
#: js/ui/components/networkAgent.js:322 js/ui/components/networkAgent.js:694
msgid "DSL authentication"
msgstr "DSL kimlik doğrulama"
#: js/ui/components/networkAgent.js:325 js/ui/components/networkAgent.js:695
#: js/ui/components/networkAgent.js:329 js/ui/components/networkAgent.js:699
msgid "PIN code required"
msgstr "PIN kodu gerekli"
#: js/ui/components/networkAgent.js:326 js/ui/components/networkAgent.js:696
#: js/ui/components/networkAgent.js:330 js/ui/components/networkAgent.js:700
msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobil geniş bant aygıtı için PIN kodu gerekli"
#: js/ui/components/networkAgent.js:327
msgid "PIN: "
msgstr "PIN: "
#: js/ui/components/networkAgent.js:331
msgid "PIN"
msgstr "PIN"
#: js/ui/components/networkAgent.js:335 js/ui/components/networkAgent.js:687
#: js/ui/components/networkAgent.js:691 js/ui/components/networkAgent.js:703
#: js/ui/components/networkAgent.js:707
#: 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”e bağlanmak için parola gerekli."
#: js/ui/components/networkAgent.js:670 js/ui/status/network.js:1688
#: js/ui/components/networkAgent.js:674 js/ui/status/network.js:1691
msgid "Network Manager"
msgstr "Ağ Yöneticisi"
#: js/ui/components/networkAgent.js:706
#: js/ui/components/networkAgent.js:710
msgid "VPN password"
msgstr "VPN parolası"
@@ -1191,10 +1188,6 @@ msgstr "Doğrula"
msgid "Sorry, that didnt work. Please try again."
msgstr "Üzgünüm ama işe yaramadı. Lütfen yeniden deneyin."
#: js/ui/components/polkitAgent.js:277 js/ui/shellMountOperation.js:326
msgid "Enter Password…"
msgstr "Parola Gir…"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: js/ui/components/telepathyClient.js:787
@@ -1403,15 +1396,15 @@ msgstr "%s (uzak)"
msgid "%s (console)"
msgstr "%s (uçbirim)"
#: js/ui/extensionDownloader.js:170
#: js/ui/extensionDownloader.js:169
msgid "Install"
msgstr "Kur"
#: js/ui/extensionDownloader.js:176
#: js/ui/extensionDownloader.js:175
msgid "Install Extension"
msgstr "Uzantı Yükle"
#: js/ui/extensionDownloader.js:177
#: js/ui/extensionDownloader.js:176
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org üstünden “%s” uzantısı indirilip kurulsun mu?"
@@ -1498,13 +1491,13 @@ msgid "Leave On"
msgstr "Açık Bırak"
#: js/ui/kbdA11yDialog.js:55 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:1285
#: js/ui/status/network.js:1288
msgid "Turn On"
msgstr "Aç"
#: js/ui/kbdA11yDialog.js:63 js/ui/status/bluetooth.js:135
#: js/ui/status/network.js:131 js/ui/status/network.js:315
#: js/ui/status/network.js:1285 js/ui/status/network.js:1397
#: js/ui/status/network.js:1288 js/ui/status/network.js:1400
#: js/ui/status/nightLight.js:41 js/ui/status/rfkill.js:81
#: js/ui/status/rfkill.js:108
msgid "Turn Off"
@@ -1518,59 +1511,59 @@ msgstr "Kapalı Bırak"
msgid "Region & Language Settings"
msgstr "Bölge ve Dil Ayarları"
#: js/ui/lookingGlass.js:659
#: js/ui/lookingGlass.js:665
msgid "No extensions installed"
msgstr "Herhangi bir uzantı kurulu değil"
#. Translators: argument is an extension UUID.
#: js/ui/lookingGlass.js:714
#: js/ui/lookingGlass.js:720
#, javascript-format
msgid "%s has not emitted any errors."
msgstr "%s, herhangi bir hata vermedi."
#: js/ui/lookingGlass.js:720
#: js/ui/lookingGlass.js:726
msgid "Hide Errors"
msgstr "Hataları Gizle"
#: js/ui/lookingGlass.js:724 js/ui/lookingGlass.js:789
#: js/ui/lookingGlass.js:730 js/ui/lookingGlass.js:795
msgid "Show Errors"
msgstr "Hataları Göster"
#: js/ui/lookingGlass.js:733
#: js/ui/lookingGlass.js:739
msgid "Enabled"
msgstr "Etkin"
#. translators:
#. * The device has been disabled
#: js/ui/lookingGlass.js:736 subprojects/gvc/gvc-mixer-control.c:1892
#: js/ui/lookingGlass.js:742 subprojects/gvc/gvc-mixer-control.c:1892
msgid "Disabled"
msgstr "Devre dışı"
#: js/ui/lookingGlass.js:738
#: js/ui/lookingGlass.js:744
msgid "Error"
msgstr "Hata"
#: js/ui/lookingGlass.js:740
#: js/ui/lookingGlass.js:746
msgid "Out of date"
msgstr "Güncel değil"
#: js/ui/lookingGlass.js:742
#: js/ui/lookingGlass.js:748
msgid "Downloading"
msgstr "İndiriliyor"
#: js/ui/lookingGlass.js:771
#: js/ui/lookingGlass.js:777
msgid "View Source"
msgstr "Kaynağı Görüntüle"
#: js/ui/lookingGlass.js:780
#: js/ui/lookingGlass.js:786
msgid "Web Page"
msgstr "Web Sayfası"
#: js/ui/main.js:267
#: js/ui/main.js:269
msgid "Logged in as a privileged user"
msgstr "Yetkili kullanıcı olarak oturum açılmış"
#: js/ui/main.js:268
#: 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."
@@ -1578,15 +1571,15 @@ msgstr ""
"Oturumu öncelikli kullanıcı olarak çalıştırmaktan güvenlik nedeniyle "
"kaçınılmalıdır. Eğer olasıysa sıradan kullanıcı olarak giriş yapmalısınız."
#: js/ui/main.js:274
#: js/ui/main.js:276
msgid "Screen Lock disabled"
msgstr "Ekran Kilidi devre dışı"
#: js/ui/main.js:275
#: js/ui/main.js:277
msgid "Screen Locking requires the GNOME display manager."
msgstr "Ekran Kilitleme, GNOME ekran yöneticisi gerektirir."
#: js/ui/messageTray.js:1552
#: js/ui/messageTray.js:1554
msgid "System Information"
msgstr "Sistem Bilgisi"
@@ -1613,8 +1606,8 @@ msgstr "Genel Görünüm"
#. active; it should not exceed ~30
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "Aramak için yaz"
msgid "Type to search"
msgstr "Aramak için yaz"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1640,23 +1633,23 @@ msgstr "Tuş vuruşu ata"
msgid "Done"
msgstr "Bitti"
#: js/ui/padOsd.js:747
#: js/ui/padOsd.js:745
msgid "Edit…"
msgstr "Düzenle…"
#: js/ui/padOsd.js:789 js/ui/padOsd.js:912
#: js/ui/padOsd.js:787 js/ui/padOsd.js:910
msgid "None"
msgstr "Yok"
#: js/ui/padOsd.js:865
#: js/ui/padOsd.js:863
msgid "Press a button to configure"
msgstr "Yapılandırmak için bir düğmeye bas"
#: js/ui/padOsd.js:866
#: js/ui/padOsd.js:864
msgid "Press Esc to exit"
msgstr "Çıkmak için Escye bas"
#: js/ui/padOsd.js:869
#: js/ui/padOsd.js:867
msgid "Press any key to exit"
msgstr "Çıkmak için herhangi bir tuşa bas"
@@ -1706,11 +1699,11 @@ msgstr "GNOMEun ekranı kilitlemesi gerekiyor"
#.
#. 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:602
#: js/ui/screenShield.js:244 js/ui/screenShield.js:598
msgid "Unable to lock"
msgstr "Kilitlenemedi"
#: js/ui/screenShield.js:245 js/ui/screenShield.js:603
#: js/ui/screenShield.js:245 js/ui/screenShield.js:599
msgid "Lock was blocked by an application"
msgstr "Kilitleme bir uygulama tarafından engellendi"
@@ -1770,8 +1763,8 @@ msgstr ""
"kullanın."
#: js/ui/shellMountOperation.js:306
msgid "Enter PIM Number"
msgstr "PIM Numarası Gir…"
msgid "PIM Number"
msgstr "PIM Numarası"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
@@ -1851,7 +1844,7 @@ msgstr "Büyük Yazı"
msgid "Bluetooth"
msgstr "Bluetooth"
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:590
#: js/ui/status/bluetooth.js:49 js/ui/status/network.js:591
msgid "Bluetooth Settings"
msgstr "Bluetooth Ayarları"
@@ -1894,11 +1887,11 @@ msgstr "İkincil Tık"
msgid "Dwell Click"
msgstr "Durağan Tık"
#: js/ui/status/keyboard.js:825
#: js/ui/status/keyboard.js:826
msgid "Keyboard"
msgstr "Klavye"
#: js/ui/status/keyboard.js:847
#: js/ui/status/keyboard.js:848
msgid "Show Keyboard Layout"
msgstr "Klavye Düzenini Göster"
@@ -1945,7 +1938,7 @@ msgid "<unknown>"
msgstr "<bilinmeyen>"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:420 js/ui/status/network.js:1314
#: js/ui/status/network.js:420 js/ui/status/network.js:1317
#, javascript-format
msgid "%s Off"
msgstr "%s Kapalı"
@@ -1971,7 +1964,7 @@ msgid "%s Disconnecting"
msgstr "%s Bağlantısı Kesiliyor"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:438 js/ui/status/network.js:1306
#: js/ui/status/network.js:438 js/ui/status/network.js:1309
#, javascript-format
msgid "%s Connecting"
msgstr "%s Bağlanıyor"
@@ -2011,7 +2004,7 @@ msgid "Mobile Broadband Settings"
msgstr "Mobil Geniş Bant Ayarları"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:558 js/ui/status/network.js:1311
#: js/ui/status/network.js:558 js/ui/status/network.js:1314
#, javascript-format
msgid "%s Hardware Disabled"
msgstr "%s Donanımı Devre Dışı"
@@ -2023,122 +2016,122 @@ msgstr "%s Donanımı Devre Dışı"
msgid "%s Disabled"
msgstr "%s Devre Dışı"
#: js/ui/status/network.js:602
#: js/ui/status/network.js:603
msgid "Connect to Internet"
msgstr "İnternete Bağlan"
#: js/ui/status/network.js:805
#: js/ui/status/network.js:808
msgid "Airplane Mode is On"
msgstr "Uçak Kipi Açık"
#: js/ui/status/network.js:806
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "Uçak kipi açıldığında kablosuz ağ devre dışı kalır."
#: js/ui/status/network.js:807
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
msgstr "Uçak Kipini Kapat"
#: js/ui/status/network.js:816
#: js/ui/status/network.js:819
msgid "Wi-Fi is Off"
msgstr "Kablosuz Ağ Kapalı"
#: js/ui/status/network.js:817
#: js/ui/status/network.js:820
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "Bir ağa bağlanmak için kablosuz ağın açık olması gerekir."
#: js/ui/status/network.js:818
#: js/ui/status/network.js:821
msgid "Turn On Wi-Fi"
msgstr "Kablosuz Ağı Aç"
#: js/ui/status/network.js:843
#: js/ui/status/network.js:846
msgid "Wi-Fi Networks"
msgstr "Kablosuz Ağlar"
#: js/ui/status/network.js:845
#: js/ui/status/network.js:848
msgid "Select a network"
msgstr "Ağ seç"
#: js/ui/status/network.js:877
#: js/ui/status/network.js:880
msgid "No Networks"
msgstr "Ağ Yok"
#: js/ui/status/network.js:898 js/ui/status/rfkill.js:106
#: js/ui/status/network.js:901 js/ui/status/rfkill.js:106
msgid "Use hardware switch to turn off"
msgstr "Kapatmak için donanım anahtarını kullan"
#: js/ui/status/network.js:1175
#: js/ui/status/network.js:1178
msgid "Select Network"
msgstr "Ağ Seç"
#: js/ui/status/network.js:1181
#: js/ui/status/network.js:1184
msgid "Wi-Fi Settings"
msgstr "Kablosuz Ağ Ayarları"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1302
#: js/ui/status/network.js:1305
#, javascript-format
msgid "%s Hotspot Active"
msgstr "%s Erişim Noktası Etkin"
#. Translators: %s is a network identifier
#: js/ui/status/network.js:1317
#: js/ui/status/network.js:1320
#, javascript-format
msgid "%s Not Connected"
msgstr "%s Bağlı Değil"
#: js/ui/status/network.js:1414
#: js/ui/status/network.js:1417
msgid "connecting…"
msgstr "bağlanıyor…"
#. Translators: this is for network connections that require some kind of key or password
#: js/ui/status/network.js:1417
#: js/ui/status/network.js:1420
msgid "authentication required"
msgstr "kimlik doğrulaması gerekli"
#: js/ui/status/network.js:1419
#: js/ui/status/network.js:1422
msgid "connection failed"
msgstr "bağlantı başarısız"
#: js/ui/status/network.js:1470
#: js/ui/status/network.js:1473
msgid "VPN Settings"
msgstr "VPN Ayarları"
#: js/ui/status/network.js:1487
#: js/ui/status/network.js:1490
msgid "VPN"
msgstr "VPN"
#: js/ui/status/network.js:1497
#: js/ui/status/network.js:1500
msgid "VPN Off"
msgstr "VPN Kapalı"
#: js/ui/status/network.js:1558 js/ui/status/rfkill.js:84
#: js/ui/status/network.js:1561 js/ui/status/rfkill.js:84
msgid "Network Settings"
msgstr "Ağ Ayarları"
#: js/ui/status/network.js:1587
#: js/ui/status/network.js:1590
#, javascript-format
msgid "%s Wired Connection"
msgid_plural "%s Wired Connections"
msgstr[0] "%s Kablolu Bağlantı"
#: js/ui/status/network.js:1591
#: js/ui/status/network.js:1594
#, javascript-format
msgid "%s Wi-Fi Connection"
msgid_plural "%s Wi-Fi Connections"
msgstr[0] "%s Kablosuz Ağ Bağlantısı"
#: js/ui/status/network.js:1595
#: js/ui/status/network.js:1598
#, javascript-format
msgid "%s Modem Connection"
msgid_plural "%s Modem Connections"
msgstr[0] "%s Modem Bağlantısı"
#: js/ui/status/network.js:1729
#: js/ui/status/network.js:1732
msgid "Connection failed"
msgstr "Bağlantı başarısız oldu"
#: js/ui/status/network.js:1730
#: js/ui/status/network.js:1733
msgid "Activation of network connection failed"
msgstr "Ağ bağlantısının etkinleştirilmesi başarısız oldu"
@@ -2236,11 +2229,11 @@ msgstr "Gücü Kapat…"
msgid "Thunderbolt"
msgstr "Thunderbolt"
#: js/ui/status/thunderbolt.js:324
#: js/ui/status/thunderbolt.js:325
msgid "Unknown Thunderbolt device"
msgstr "Bilinmeyen Thunderbolt aygıtı"
#: js/ui/status/thunderbolt.js:325
#: js/ui/status/thunderbolt.js:326
msgid ""
"New device has been detected while you were away. Please disconnect and "
"reconnect the device to start using it."
@@ -2248,21 +2241,21 @@ msgstr ""
"Siz uzaktayken yeni aygıt saptandı. Kullanmaya başlamadan önce aygıtın "
"bağlantısını kesin ve yeniden bağlayın."
#: js/ui/status/thunderbolt.js:328
#: js/ui/status/thunderbolt.js:329
msgid "Unauthorized Thunderbolt device"
msgstr "Yetkisiz Thunderbolt aygıtı"
#: js/ui/status/thunderbolt.js:329
#: js/ui/status/thunderbolt.js:330
msgid ""
"New device has been detected and needs to be authorized by an administrator."
msgstr ""
"Yeni aygıt saptandı ve bir yönetici tarafından yetkilendirilmesi gerekiyor."
#: js/ui/status/thunderbolt.js:335
#: js/ui/status/thunderbolt.js:336
msgid "Thunderbolt authorization error"
msgstr "Thunderbolt yetkilendirme hatası"
#: js/ui/status/thunderbolt.js:336
#: js/ui/status/thunderbolt.js:337
#, javascript-format
msgid "Could not authorize the Thunderbolt device: %s"
msgstr "Thunderbolt aygıtı yetkilendirilemedi: %s"
@@ -2303,10 +2296,28 @@ msgstr "Yalnızca Dış"
msgid "Built-in Only"
msgstr "Yalnızca İç"
#: js/ui/unlockDialog.js:459
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Kilidi açmak için yukarı kaydır"
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "Kilidi açmak için tıklayın veya tuşa basın"
#: js/ui/unlockDialog.js:549
msgid "Unlock Window"
msgstr "Kilit Açma Penceresi"
#: js/ui/unlockDialog.js:558
msgid "Log in as another user"
msgstr "Başka kullanıcı olarak oturum aç"
#: js/ui/viewSelector.js:181
msgid "Applications"
msgstr "Uygulamalar"
@@ -2344,7 +2355,7 @@ msgstr[0] "Ayarlardaki değişiklikler %d saniye içinde eski haline döndürül
#. 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:542
#: js/ui/windowManager.js:544
#, javascript-format
msgid "%d × %d"
msgstr "%d × %d"
@@ -2793,6 +2804,15 @@ msgstr[0] "%u Girdi"
msgid "System Sounds"
msgstr "Sistem Sesleri"
#~ msgid "Username…"
#~ msgstr "Kullanıcı Adı…"
#~ msgid "Password: "
#~ msgstr "Parola: "
#~ msgid "Enter Password…"
#~ msgstr "Parola Gir…"
#~ msgid "Next"
#~ msgstr "Sonraki"
@@ -2800,9 +2820,6 @@ msgstr "Sistem Sesleri"
#~ msgid "Sign In"
#~ msgstr "Giriş"
#~ msgid "Log in as another user"
#~ msgstr "Başka kullanıcı olarak oturum aç"
#~ msgid "%A, %B %d"
#~ msgstr "%d %B %A"
@@ -2829,9 +2846,6 @@ msgstr "Sistem Sesleri"
#~ msgid "Rename"
#~ msgstr "Yeniden Adlandır"
#~ msgid "Password:"
#~ msgstr "Parola:"
#~ msgid "Type again:"
#~ msgstr "Yeniden yaz:"

File diff suppressed because it is too large Load Diff

View File

@@ -36,14 +36,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
#undef CALENDAR_ENABLE_DEBUG
#include "calendar-debug.h"
#ifndef _
#define _(x) gettext(x)
#endif
#ifndef N_
#define N_(x) x
#endif
typedef struct _ClientData ClientData;
typedef struct _CalendarSourceData CalendarSourceData;
@@ -51,20 +43,7 @@ struct _ClientData
{
ECalClient *client;
gulong backend_died_id;
};
struct _CalendarSourceData
{
ECalClientSourceType source_type;
CalendarSources *sources;
guint changed_signal;
/* ESource -> EClient */
GHashTable *clients;
guint timeout_id;
guint loaded : 1;
gboolean is_for_events; /* Because this can hold other clients too (for EReminderWatcher) */
};
typedef struct _CalendarSourcesPrivate CalendarSourcesPrivate;
@@ -77,175 +56,150 @@ struct _CalendarSources
struct _CalendarSourcesPrivate
{
ESourceRegistry *registry;
gulong source_added_id;
gulong source_changed_id;
gulong source_removed_id;
ESourceRegistryWatcher *registry_watcher;
gulong filter_id;
gulong appeared_id;
gulong disappeared_id;
CalendarSourceData appointment_sources;
CalendarSourceData task_sources;
GMutex clients_lock;
GHashTable *clients; /* ESource -> ClientData */
};
G_DEFINE_TYPE_WITH_PRIVATE (CalendarSources, calendar_sources, G_TYPE_OBJECT)
static void calendar_sources_finalize (GObject *object);
static void backend_died_cb (EClient *client, CalendarSourceData *source_data);
static void calendar_sources_registry_source_changed_cb (ESourceRegistry *registry,
ESource *source,
CalendarSources *sources);
static void calendar_sources_registry_source_removed_cb (ESourceRegistry *registry,
ESource *source,
CalendarSources *sources);
enum
{
APPOINTMENT_SOURCES_CHANGED,
TASK_SOURCES_CHANGED,
CLIENT_APPEARED,
CLIENT_DISAPPEARED,
LAST_SIGNAL
};
static guint signals [LAST_SIGNAL] = { 0, };
static GObjectClass *parent_class = NULL;
static CalendarSources *calendar_sources_singleton = NULL;
static void
calendar_sources_client_connected_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
CalendarSources *sources = CALENDAR_SOURCES (source_object);
ESource *source = user_data;
EClient *client;
GError *error = NULL;
/* The calendar_sources_connect_client_sync() already stored the 'client'
* into the priv->clients */
client = calendar_sources_connect_client_finish (sources, result, &error);
if (error)
{
g_warning ("Could not load source '%s': %s",
e_source_get_uid (source),
error->message);
g_clear_error (&error);
}
else
{
g_signal_emit (sources, signals[CLIENT_APPEARED], 0, client, NULL);
}
g_clear_object (&client);
g_clear_object (&source);
}
static gboolean
registry_watcher_filter_cb (ESourceRegistryWatcher *watcher,
ESource *source,
CalendarSources *sources)
{
return e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR) &&
e_source_selectable_get_selected (e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR));
}
static void
registry_watcher_source_appeared_cb (ESourceRegistryWatcher *watcher,
ESource *source,
CalendarSources *sources)
{
ECalClientSourceType source_type;
if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR))
source_type = E_CAL_CLIENT_SOURCE_TYPE_EVENTS;
else if (e_source_has_extension (source, E_SOURCE_EXTENSION_MEMO_LIST))
source_type = E_CAL_CLIENT_SOURCE_TYPE_MEMOS;
else if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST))
source_type = E_CAL_CLIENT_SOURCE_TYPE_TASKS;
else
g_return_if_reached ();
calendar_sources_connect_client (sources, TRUE, source, source_type, 30, NULL, calendar_sources_client_connected_cb, g_object_ref (source));
}
static void
registry_watcher_source_disappeared_cb (ESourceRegistryWatcher *watcher,
ESource *source,
CalendarSources *sources)
{
gboolean emit;
g_mutex_lock (&sources->priv->clients_lock);
emit = g_hash_table_remove (sources->priv->clients, source);
g_mutex_unlock (&sources->priv->clients_lock);
if (emit)
g_signal_emit (sources, signals[CLIENT_DISAPPEARED], 0, e_source_get_uid (source), NULL);
}
static void
client_data_free (ClientData *data)
{
g_clear_signal_handler (&data->backend_died_id, data->client);
g_signal_handler_disconnect (data->client, data->backend_died_id);
g_object_unref (data->client);
g_slice_free (ClientData, data);
}
static void
calendar_sources_class_init (CalendarSourcesClass *klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
parent_class = g_type_class_peek_parent (klass);
gobject_class->finalize = calendar_sources_finalize;
signals [APPOINTMENT_SOURCES_CHANGED] =
g_signal_new ("appointment-sources-changed",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
0);
signals [TASK_SOURCES_CHANGED] =
g_signal_new ("task-sources-changed",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
0);
}
static void
calendar_sources_init (CalendarSources *sources)
calendar_sources_constructed (GObject *object)
{
CalendarSources *sources = CALENDAR_SOURCES (object);
ESourceRegistry *registry = NULL;
GError *error = NULL;
GDBusConnection *session_bus;
GVariant *result;
sources->priv = calendar_sources_get_instance_private (sources);
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
(and other library calls that eventually call g_dbus_proxy_new[_sync]())
is 25 seconds. This has been shown to be too small for
evolution-source-registry in certain cases (slow disk, concurrent IO,
many configured sources), so we first ensure that the service
starts with a manual call and a higher timeout.
HACK: every time the DBus API is bumped in e-d-s we need
to update this!
*/
session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
if (session_bus == NULL)
{
g_error ("Failed to connect to the session bus: %s", error->message);
}
result = g_dbus_connection_call_sync (session_bus, "org.freedesktop.DBus",
"/", "org.freedesktop.DBus",
"StartServiceByName",
g_variant_new ("(su)",
"org.gnome.evolution.dataserver.Sources5",
0),
NULL,
G_DBUS_CALL_FLAGS_NONE,
60 * 1000,
NULL, &error);
if (result != NULL)
{
g_variant_unref (result);
sources->priv->registry = e_source_registry_new_sync (NULL, &error);
}
G_OBJECT_CLASS (calendar_sources_parent_class)->constructed (object);
registry = e_source_registry_new_sync (NULL, &error);
if (error != NULL)
{
/* Any error is fatal, but we don't want to crash gnome-shell-calendar-server
because of e-d-s problems. So just exit here.
*/
g_warning ("Failed to start evolution-source-registry: %s", error->message);
exit(EXIT_FAILURE);
exit (EXIT_FAILURE);
}
g_object_unref (session_bus);
g_return_if_fail (registry != NULL);
sources->priv->source_added_id = g_signal_connect (sources->priv->registry,
"source-added",
G_CALLBACK (calendar_sources_registry_source_changed_cb),
sources);
sources->priv->source_changed_id = g_signal_connect (sources->priv->registry,
"source-changed",
G_CALLBACK (calendar_sources_registry_source_changed_cb),
sources);
sources->priv->source_removed_id = g_signal_connect (sources->priv->registry,
"source-removed",
G_CALLBACK (calendar_sources_registry_source_removed_cb),
sources);
sources->priv->registry_watcher = e_source_registry_watcher_new (registry, NULL);
sources->priv->appointment_sources.source_type = E_CAL_CLIENT_SOURCE_TYPE_EVENTS;
sources->priv->appointment_sources.sources = sources;
sources->priv->appointment_sources.changed_signal = signals [APPOINTMENT_SOURCES_CHANGED];
sources->priv->appointment_sources.clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
(GEqualFunc) e_source_equal,
(GDestroyNotify) g_object_unref,
(GDestroyNotify) client_data_free);
sources->priv->appointment_sources.timeout_id = 0;
g_clear_object (&registry);
sources->priv->task_sources.source_type = E_CAL_CLIENT_SOURCE_TYPE_TASKS;
sources->priv->task_sources.sources = sources;
sources->priv->task_sources.changed_signal = signals [TASK_SOURCES_CHANGED];
sources->priv->task_sources.clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
(GEqualFunc) e_source_equal,
(GDestroyNotify) g_object_unref,
(GDestroyNotify) client_data_free);
sources->priv->task_sources.timeout_id = 0;
}
sources->priv->clients = g_hash_table_new_full ((GHashFunc) e_source_hash,
(GEqualFunc) e_source_equal,
(GDestroyNotify) g_object_unref,
(GDestroyNotify) client_data_free);
sources->priv->filter_id = g_signal_connect (sources->priv->registry_watcher,
"filter",
G_CALLBACK (registry_watcher_filter_cb),
sources);
sources->priv->appeared_id = g_signal_connect (sources->priv->registry_watcher,
"appeared",
G_CALLBACK (registry_watcher_source_appeared_cb),
sources);
sources->priv->disappeared_id = g_signal_connect (sources->priv->registry_watcher,
"disappeared",
G_CALLBACK (registry_watcher_source_disappeared_cb),
sources);
static void
calendar_sources_finalize_source_data (CalendarSources *sources,
CalendarSourceData *source_data)
{
if (source_data->loaded)
{
g_hash_table_destroy (source_data->clients);
source_data->clients = NULL;
g_clear_handle_id (&source_data->timeout_id, g_source_remove);
source_data->loaded = FALSE;
}
e_source_registry_watcher_reclaim (sources->priv->registry_watcher);
}
static void
@@ -253,28 +207,73 @@ calendar_sources_finalize (GObject *object)
{
CalendarSources *sources = CALENDAR_SOURCES (object);
if (sources->priv->registry)
if (sources->priv->clients)
{
g_clear_signal_handler (&sources->priv->source_added_id,
sources->priv->registry);
g_clear_signal_handler (&sources->priv->source_changed_id,
sources->priv->registry);
g_clear_signal_handler (&sources->priv->source_removed_id,
sources->priv->registry);
g_object_unref (sources->priv->registry);
g_hash_table_destroy (sources->priv->clients);
sources->priv->clients = NULL;
}
sources->priv->registry = NULL;
calendar_sources_finalize_source_data (sources, &sources->priv->appointment_sources);
calendar_sources_finalize_source_data (sources, &sources->priv->task_sources);
if (sources->priv->registry_watcher)
{
g_signal_handler_disconnect (sources->priv->registry_watcher,
sources->priv->filter_id);
g_signal_handler_disconnect (sources->priv->registry_watcher,
sources->priv->appeared_id);
g_signal_handler_disconnect (sources->priv->registry_watcher,
sources->priv->disappeared_id);
g_clear_object (&sources->priv->registry_watcher);
}
if (G_OBJECT_CLASS (parent_class)->finalize)
G_OBJECT_CLASS (parent_class)->finalize (object);
g_mutex_clear (&sources->priv->clients_lock);
G_OBJECT_CLASS (calendar_sources_parent_class)->finalize (object);
}
static void
calendar_sources_class_init (CalendarSourcesClass *klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
gobject_class->constructed = calendar_sources_constructed;
gobject_class->finalize = calendar_sources_finalize;
signals [CLIENT_APPEARED] =
g_signal_new ("client-appeared",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
1,
E_TYPE_CAL_CLIENT);
signals [CLIENT_DISAPPEARED] =
g_signal_new ("client-disappeared",
G_TYPE_FROM_CLASS (gobject_class),
G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
NULL,
G_TYPE_NONE,
1,
G_TYPE_STRING); /* ESource::uid of the disappeared client */
}
static void
calendar_sources_init (CalendarSources *sources)
{
sources->priv = calendar_sources_get_instance_private (sources);
g_mutex_init (&sources->priv->clients_lock);
}
CalendarSources *
calendar_sources_get (void)
{
static CalendarSources *calendar_sources_singleton = NULL;
gpointer singleton_location = &calendar_sources_singleton;
if (calendar_sources_singleton)
@@ -282,85 +281,70 @@ calendar_sources_get (void)
calendar_sources_singleton = g_object_new (CALENDAR_TYPE_SOURCES, NULL);
g_object_add_weak_pointer (G_OBJECT (calendar_sources_singleton),
singleton_location);
singleton_location);
return calendar_sources_singleton;
}
/* The clients are just created here but not loaded */
static void
create_client_for_source (ESource *source,
ECalClientSourceType source_type,
CalendarSourceData *source_data)
ESourceRegistry *
calendar_sources_get_registry (CalendarSources *sources)
{
ClientData *data;
EClient *client;
GError *error = NULL;
client = g_hash_table_lookup (source_data->clients, source);
g_return_if_fail (client == NULL);
client = e_cal_client_connect_sync (source, source_type, -1, NULL, &error);
if (!client)
{
g_warning ("Could not load source '%s': %s",
e_source_get_uid (source),
error->message);
g_clear_error(&error);
return;
}
data = g_slice_new0 (ClientData);
data->client = E_CAL_CLIENT (client); /* takes ownership */
data->backend_died_id = g_signal_connect (client,
"backend-died",
G_CALLBACK (backend_died_cb),
source_data);
g_hash_table_insert (source_data->clients, g_object_ref (source), data);
}
static inline void
debug_dump_ecal_list (GHashTable *clients)
{
#ifdef CALENDAR_ENABLE_DEBUG
GList *list, *link;
dprintf ("Loaded clients:\n");
list = g_hash_table_get_keys (clients);
for (link = list; link != NULL; link = g_list_next (link))
{
ESource *source = E_SOURCE (link->data);
dprintf (" %s %s\n",
e_source_get_uid (source),
e_source_get_display_name (source));
}
g_list_free (list);
#endif
return e_source_registry_watcher_get_registry (sources->priv->registry_watcher);
}
static void
calendar_sources_load_esource_list (ESourceRegistry *registry,
CalendarSourceData *source_data);
static gboolean
backend_restart (gpointer data)
gather_event_clients_cb (gpointer key,
gpointer value,
gpointer user_data)
{
CalendarSourceData *source_data = data;
ESourceRegistry *registry;
GSList **plist = user_data;
ClientData *cd = value;
registry = source_data->sources->priv->registry;
calendar_sources_load_esource_list (registry, source_data);
g_signal_emit (source_data->sources, source_data->changed_signal, 0);
if (cd && cd->is_for_events)
*plist = g_slist_prepend (*plist, g_object_ref (cd->client));
}
source_data->timeout_id = 0;
return FALSE;
GSList *
calendar_sources_ref_clients (CalendarSources *sources)
{
GSList *list = NULL;
g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), NULL);
g_mutex_lock (&sources->priv->clients_lock);
g_hash_table_foreach (sources->priv->clients, gather_event_clients_cb, &list);
g_mutex_unlock (&sources->priv->clients_lock);
return list;
}
gboolean
calendar_sources_has_clients (CalendarSources *sources)
{
GHashTableIter iter;
gpointer value;
gboolean has = FALSE;
g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), FALSE);
g_mutex_lock (&sources->priv->clients_lock);
g_hash_table_iter_init (&iter, sources->priv->clients);
while (!has && g_hash_table_iter_next (&iter, NULL, &value))
{
ClientData *cd = value;
has = cd && cd->is_for_events;
}
g_mutex_unlock (&sources->priv->clients_lock);
return has;
}
static void
backend_died_cb (EClient *client, CalendarSourceData *source_data)
backend_died_cb (EClient *client,
CalendarSources *sources)
{
ESource *source;
const char *display_name;
@@ -368,196 +352,179 @@ backend_died_cb (EClient *client, CalendarSourceData *source_data)
source = e_client_get_source (client);
display_name = e_source_get_display_name (source);
g_warning ("The calendar backend for '%s' has crashed.", display_name);
g_hash_table_remove (source_data->clients, source);
g_clear_handle_id (&source_data->timeout_id, g_source_remove);
source_data->timeout_id = g_timeout_add_seconds (2, backend_restart,
source_data);
g_source_set_name_by_id (source_data->timeout_id, "[gnome-shell] backend_restart");
g_mutex_lock (&sources->priv->clients_lock);
g_hash_table_remove (sources->priv->clients, source);
g_mutex_unlock (&sources->priv->clients_lock);
}
static void
calendar_sources_load_esource_list (ESourceRegistry *registry,
CalendarSourceData *source_data)
EClient *
calendar_sources_connect_client_sync (CalendarSources *sources,
gboolean is_for_events,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GError **error)
{
GList *list, *link;
const gchar *extension_name;
EClient *client = NULL;
ClientData *client_data;
switch (source_data->source_type)
g_mutex_lock (&sources->priv->clients_lock);
client_data = g_hash_table_lookup (sources->priv->clients, source);
if (client_data) {
if (is_for_events)
client_data->is_for_events = TRUE;
client = E_CLIENT (g_object_ref (client_data->client));
}
g_mutex_unlock (&sources->priv->clients_lock);
if (client)
return client;
client = e_cal_client_connect_sync (source, source_type, wait_for_connected_seconds, cancellable, error);
if (!client)
return NULL;
g_mutex_lock (&sources->priv->clients_lock);
client_data = g_hash_table_lookup (sources->priv->clients, source);
if (client_data)
{
case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
extension_name = E_SOURCE_EXTENSION_CALENDAR;
break;
case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
extension_name = E_SOURCE_EXTENSION_TASK_LIST;
break;
default:
g_return_if_reached ();
if (is_for_events)
client_data->is_for_events = TRUE;
g_clear_object (&client);
client = E_CLIENT (g_object_ref (client_data->client));
}
list = e_source_registry_list_sources (registry, extension_name);
for (link = list; link != NULL; link = g_list_next (link))
else
{
ESource *source = E_SOURCE (link->data);
ESourceSelectable *extension;
gboolean show_source;
client_data = g_slice_new0 (ClientData);
client_data->client = E_CAL_CLIENT (g_object_ref (client));
client_data->is_for_events = is_for_events;
client_data->backend_died_id = g_signal_connect (client,
"backend-died",
G_CALLBACK (backend_died_cb),
sources);
extension = e_source_get_extension (source, extension_name);
show_source = e_source_get_enabled (source) && e_source_selectable_get_selected (extension);
if (show_source)
create_client_for_source (source, source_data->source_type, source_data);
g_hash_table_insert (sources->priv->clients, g_object_ref (source), client_data);
}
g_mutex_unlock (&sources->priv->clients_lock);
debug_dump_ecal_list (source_data->clients);
g_list_free_full (list, g_object_unref);
return client;
}
typedef struct _AsyncContext {
gboolean is_for_events;
ESource *source;
ECalClientSourceType source_type;
guint32 wait_for_connected_seconds;
} AsyncContext;
static void
calendar_sources_registry_source_changed_cb (ESourceRegistry *registry,
ESource *source,
CalendarSources *sources)
async_context_free (gpointer ptr)
{
if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR))
AsyncContext *ctx = ptr;
if (ctx)
{
CalendarSourceData *source_data;
ESourceSelectable *extension;
gboolean have_client;
gboolean show_source;
source_data = &sources->priv->appointment_sources;
extension = e_source_get_extension (source, E_SOURCE_EXTENSION_CALENDAR);
have_client = (g_hash_table_lookup (source_data->clients, source) != NULL);
show_source = e_source_get_enabled (source) && e_source_selectable_get_selected (extension);
if (!show_source && have_client)
{
g_hash_table_remove (source_data->clients, source);
g_signal_emit (sources, source_data->changed_signal, 0);
}
if (show_source && !have_client)
{
create_client_for_source (source, source_data->source_type, source_data);
g_signal_emit (sources, source_data->changed_signal, 0);
}
}
if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST))
{
CalendarSourceData *source_data;
ESourceSelectable *extension;
gboolean have_client;
gboolean show_source;
source_data = &sources->priv->task_sources;
extension = e_source_get_extension (source, E_SOURCE_EXTENSION_TASK_LIST);
have_client = (g_hash_table_lookup (source_data->clients, source) != NULL);
show_source = e_source_get_enabled (source) && e_source_selectable_get_selected (extension);
if (!show_source && have_client)
{
g_hash_table_remove (source_data->clients, source);
g_signal_emit (sources, source_data->changed_signal, 0);
}
if (show_source && !have_client)
{
create_client_for_source (source, source_data->source_type, source_data);
g_signal_emit (sources, source_data->changed_signal, 0);
}
g_clear_object (&ctx->source);
g_slice_free (AsyncContext, ctx);
}
}
static void
calendar_sources_registry_source_removed_cb (ESourceRegistry *registry,
ESource *source,
CalendarSources *sources)
calendar_sources_connect_client_thread (GTask *task,
gpointer source_object,
gpointer task_data,
GCancellable *cancellable)
{
if (e_source_has_extension (source, E_SOURCE_EXTENSION_CALENDAR))
CalendarSources *sources = source_object;
AsyncContext *ctx = task_data;
EClient *client;
GError *local_error = NULL;
client = calendar_sources_connect_client_sync (sources, ctx->is_for_events, ctx->source, ctx->source_type,
ctx->wait_for_connected_seconds, cancellable, &local_error);
if (!client)
{
CalendarSourceData *source_data;
source_data = &sources->priv->appointment_sources;
g_hash_table_remove (source_data->clients, source);
g_signal_emit (sources, source_data->changed_signal, 0);
}
if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST))
{
CalendarSourceData *source_data;
source_data = &sources->priv->task_sources;
g_hash_table_remove (source_data->clients, source);
g_signal_emit (sources, source_data->changed_signal, 0);
if (local_error)
g_task_return_error (task, local_error);
else
g_task_return_pointer (task, NULL, NULL);
} else {
g_task_return_pointer (task, client, g_object_unref);
}
}
static void
ensure_appointment_sources (CalendarSources *sources)
void
calendar_sources_connect_client (CalendarSources *sources,
gboolean is_for_events,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
if (!sources->priv->appointment_sources.loaded)
AsyncContext *ctx;
GTask *task;
ctx = g_slice_new0 (AsyncContext);
ctx->is_for_events = is_for_events;
ctx->source = g_object_ref (source);
ctx->source_type = source_type;
ctx->wait_for_connected_seconds = wait_for_connected_seconds;
task = g_task_new (sources, cancellable, callback, user_data);
g_task_set_source_tag (task, calendar_sources_connect_client);
g_task_set_task_data (task, ctx, async_context_free);
g_task_run_in_thread (task, calendar_sources_connect_client_thread);
g_object_unref (task);
}
EClient *
calendar_sources_connect_client_finish (CalendarSources *sources,
GAsyncResult *result,
GError **error)
{
g_return_val_if_fail (g_task_is_valid (result, sources), NULL);
g_return_val_if_fail (g_async_result_is_tagged (result, calendar_sources_connect_client), NULL);
return g_task_propagate_pointer (G_TASK (result), error);
}
void
print_debug (const gchar *format,
...)
{
g_autofree char *s = NULL;
g_autofree char *timestamp = NULL;
va_list ap;
g_autoptr (GDateTime) now = NULL;
static volatile gsize once_init_value = 0;
static gboolean show_debug = FALSE;
static guint pid = 0;
if (g_once_init_enter (&once_init_value))
{
calendar_sources_load_esource_list (sources->priv->registry,
&sources->priv->appointment_sources);
sources->priv->appointment_sources.loaded = TRUE;
show_debug = (g_getenv ("CALENDAR_SERVER_DEBUG") != NULL);
pid = getpid ();
g_once_init_leave (&once_init_value, 1);
}
}
GList *
calendar_sources_get_appointment_clients (CalendarSources *sources)
{
GList *list, *link;
g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), NULL);
ensure_appointment_sources (sources);
list = g_hash_table_get_values (sources->priv->appointment_sources.clients);
for (link = list; link != NULL; link = g_list_next (link))
link->data = ((ClientData *) link->data)->client;
return list;
}
static void
ensure_task_sources (CalendarSources *sources)
{
if (!sources->priv->task_sources.loaded)
{
calendar_sources_load_esource_list (sources->priv->registry,
&sources->priv->task_sources);
sources->priv->task_sources.loaded = TRUE;
}
}
GList *
calendar_sources_get_task_clients (CalendarSources *sources)
{
GList *list, *link;
g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), NULL);
ensure_task_sources (sources);
list = g_hash_table_get_values (sources->priv->task_sources.clients);
for (link = list; link != NULL; link = g_list_next (link))
link->data = ((ClientData *) link->data)->client;
return list;
}
gboolean
calendar_sources_has_sources (CalendarSources *sources)
{
g_return_val_if_fail (CALENDAR_IS_SOURCES (sources), FALSE);
ensure_appointment_sources (sources);
ensure_task_sources (sources);
return g_hash_table_size (sources->priv->appointment_sources.clients) > 0 ||
g_hash_table_size (sources->priv->task_sources.clients) > 0;
if (!show_debug)
goto out;
now = g_date_time_new_now_local ();
timestamp = g_date_time_format (now, "%H:%M:%S");
va_start (ap, format);
s = g_strdup_vprintf (format, ap);
va_end (ap);
g_print ("gnome-shell-calendar-server[%d]: %s.%03d: %s\n",
pid, timestamp, g_date_time_get_microsecond (now), s);
out:
;
}

View File

@@ -26,17 +26,46 @@
#include <glib-object.h>
#define EDS_DISABLE_DEPRECATED
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
#include <libedataserver/libedataserver.h>
#include <libecal/libecal.h>
G_GNUC_END_IGNORE_DEPRECATIONS
G_BEGIN_DECLS
#define CALENDAR_TYPE_SOURCES (calendar_sources_get_type ())
G_DECLARE_FINAL_TYPE (CalendarSources, calendar_sources,
CALENDAR, SOURCES, GObject)
CalendarSources *calendar_sources_get (void);
GList *calendar_sources_get_appointment_clients (CalendarSources *sources);
GList *calendar_sources_get_task_clients (CalendarSources *sources);
CalendarSources *calendar_sources_get (void);
ESourceRegistry *calendar_sources_get_registry (CalendarSources *sources);
GSList *calendar_sources_ref_clients (CalendarSources *sources);
gboolean calendar_sources_has_clients (CalendarSources *sources);
gboolean calendar_sources_has_sources (CalendarSources *sources);
EClient *calendar_sources_connect_client_sync(CalendarSources *sources,
gboolean is_for_events,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GError **error);
void calendar_sources_connect_client (CalendarSources *sources,
gboolean is_for_events,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data);
EClient *calendar_sources_connect_client_finish
(CalendarSources *sources,
GAsyncResult *result,
GError **error);
/* Set the environment variable CALENDAR_SERVER_DEBUG to show debug */
void print_debug (const gchar *str,
...) G_GNUC_PRINTF (1, 2);
G_END_DECLS

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,9 @@ calendar_sources = [
'gnome-shell-calendar-server.c',
'calendar-debug.h',
'calendar-sources.c',
'calendar-sources.h'
'calendar-sources.h',
'reminder-watcher.c',
'reminder-watcher.h'
]
calendar_server = executable('gnome-shell-calendar-server', calendar_sources,

View File

@@ -0,0 +1,767 @@
/*
* Copyright (C) 2020 Red Hat (www.redhat.com)
*
* 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, see <http://www.gnu.org/licenses/>.
*/
#include <config.h>
#include <glib/gi18n-lib.h>
#define HANDLE_LIBICAL_MEMORY
#define EDS_DISABLE_DEPRECATED
#include <libecal/libecal.h>
#include "calendar-sources.h"
#include "reminder-watcher.h"
struct _ReminderWatcherPrivate {
GApplication *application; /* not referenced */
CalendarSources *sources;
GSettings *settings;
GMutex dismiss_lock;
GSList *dismiss; /* EReminderData * */
GThread *dismiss_thread; /* not referenced, only to know whether it's scheduled */
};
G_DEFINE_TYPE_WITH_PRIVATE (ReminderWatcher, reminder_watcher, E_TYPE_REMINDER_WATCHER)
static const gchar *
reminder_watcher_get_rd_summary (const EReminderData *rd)
{
if (!rd)
return NULL;
return i_cal_component_get_summary (e_cal_component_get_icalcomponent (e_reminder_data_get_component (rd)));
}
static gboolean
reminder_watcher_notify_audio (ReminderWatcher *rw,
const EReminderData *rd,
ECalComponentAlarm *alarm)
{
#if 0
ICalAttach *attach = NULL;
GSList *attachments;
gboolean did_play = FALSE;
g_return_val_if_fail (rw != NULL, FALSE);
g_return_val_if_fail (rd != NULL, FALSE);
g_return_val_if_fail (alarm != NULL, FALSE);
attachments = e_cal_component_alarm_get_attachments (alarm);
if (attachments && !attachments->next)
attach = attachments->data;
if (attach && i_cal_attach_get_is_url (attach))
{
const gchar *url;
url = i_cal_attach_get_url (attach);
if (url && *url)
{
gchar *filename;
GError *error = NULL;
filename = g_filename_from_uri (url, NULL, &error);
if (!filename)
ean_debug_print ("Audio notify: Failed to convert URI '%s' to filename: %s\n", url, error ? error->message : "Unknown error");
else if (g_file_test (filename, G_FILE_TEST_EXISTS))
{
#ifdef HAVE_CANBERRA
gint err = ca_context_play (ca_gtk_context_get (), 0,
CA_PROP_MEDIA_FILENAME, filename,
NULL);
did_play = !err;
if (err)
ean_debug_print ("Audio notify: Cannot play file '%s': %s\n", filename, ca_strerror (err));
#else
ean_debug_print ("Audio notify: Cannot play file '%s': Not compiled with libcanberra\n", filename);
#endif
}
else
ean_debug_print ("Audio notify: File '%s' does not exist\n", filename);
g_clear_error (&error);
g_free (filename);
}
else
ean_debug_print ("Audio notify: Alarm has stored empty URL, fallback to default sound\n");
}
else if (!attach)
ean_debug_print ("Audio notify: Alarm has no attachment, fallback to default sound\n");
else
ean_debug_print ("Audio notify: Alarm attachment is not a URL to sound file, fallback to default sound\n");
#ifdef HAVE_CANBERRA
if (!did_play)
{
gint err = ca_context_play (ca_gtk_context_get (), 0,
CA_PROP_EVENT_ID, "alarm-clock-elapsed",
NULL);
did_play = !err;
if (err)
ean_debug_print ("Audio notify: Cannot play event sound: %s\n", ca_strerror (err));
}
#endif
if (!did_play)
{
GdkDisplay *display;
display = rw->priv->window ? gtk_widget_get_display (rw->priv->window) : NULL;
if (!display)
display = gdk_display_get_default ();
if (display)
gdk_display_beep (display);
else
ean_debug_print ("Audio notify: Cannot beep, no display found\n");
}
#endif
print_debug ("ReminderWatcher::Notify Audio for '%s'", reminder_watcher_get_rd_summary (rd));
return FALSE;
}
static gchar *
reminder_watcher_build_notif_id (const EReminderData *rd)
{
GString *string;
ECalComponentId *id;
ECalComponentAlarmInstance *instance;
g_return_val_if_fail (rd != NULL, NULL);
string = g_string_sized_new (32);
if (e_reminder_data_get_source_uid (rd))
{
g_string_append (string, e_reminder_data_get_source_uid (rd));
g_string_append_c (string, '\n');
}
id = e_cal_component_get_id (e_reminder_data_get_component (rd));
if (id)
{
if (e_cal_component_id_get_uid (id))
{
g_string_append (string, e_cal_component_id_get_uid (id));
g_string_append_c (string, '\n');
}
if (e_cal_component_id_get_rid (id))
{
g_string_append (string, e_cal_component_id_get_rid (id));
g_string_append_c (string, '\n');
}
e_cal_component_id_free (id);
}
instance = e_reminder_data_get_instance (rd);
g_string_append_printf (string, "%" G_GINT64_FORMAT, (gint64) (instance ? e_cal_component_alarm_instance_get_time (instance) : -1));
return g_string_free (string, FALSE);
}
static gboolean
reminder_watcher_notify_display (ReminderWatcher *rw,
const EReminderData *rd,
ECalComponentAlarm *alarm)
{
GNotification *notification;
#if 0
GtkIconInfo *icon_info;
#endif
gchar *description, *notif_id;
g_return_val_if_fail (rw != NULL, FALSE);
g_return_val_if_fail (rd != NULL, FALSE);
g_return_val_if_fail (alarm != NULL, FALSE);
notif_id = reminder_watcher_build_notif_id (rd);
description = e_reminder_watcher_describe_data (E_REMINDER_WATCHER (rw), rd, E_REMINDER_WATCHER_DESCRIBE_FLAG_NONE);
notification = g_notification_new (_("Reminders"));
g_notification_set_body (notification, description);
#if 0
icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (), "appointment-soon", GTK_ICON_SIZE_DIALOG, 0);
if (icon_info)
{
const gchar *filename;
filename = gtk_icon_info_get_filename (icon_info);
if (filename && *filename)
{
GFile *file;
GIcon *icon;
file = g_file_new_for_path (filename);
icon = g_file_icon_new (file);
if (icon)
{
g_notification_set_icon (notification, icon);
g_object_unref (icon);
}
g_object_unref (file);
}
gtk_icon_info_free (icon_info);
}
#endif
g_notification_add_button_with_target (notification, _("Dismiss"), "app.dismiss-reminder", "s", notif_id);
g_notification_set_default_action_and_target (notification, "app.dismiss-reminder", "s", notif_id);
g_application_send_notification (rw->priv->application, notif_id, notification);
g_object_unref (notification);
g_free (description);
g_free (notif_id);
print_debug ("ReminderWatcher::Notify Display for '%s'", reminder_watcher_get_rd_summary (rd));
return TRUE;
}
static gboolean
reminder_watcher_notify_email (ReminderWatcher *rw,
const EReminderData *rd,
ECalComponentAlarm *alarm)
{
print_debug ("ReminderWatcher::Notify Email for '%s'", reminder_watcher_get_rd_summary (rd));
/* Nothing to do here */
return FALSE;
}
static gboolean
reminder_watcher_is_blessed_program (GSettings *settings,
const gchar *url)
{
gchar **list;
gint ii;
gboolean found = FALSE;
g_return_val_if_fail (G_IS_SETTINGS (settings), FALSE);
g_return_val_if_fail (url != NULL, FALSE);
list = g_settings_get_strv (settings, "notify-programs");
for (ii = 0; list && list[ii] && !found; ii++)
{
found = g_strcmp0 (list[ii], url) == 0;
}
g_strfreev (list);
return found;
}
#if 0
static void
reminder_watcher_save_blessed_program (GSettings *settings,
const gchar *url)
{
gchar **list;
gint ii;
GPtrArray *array;
g_return_if_fail (G_IS_SETTINGS (settings));
g_return_if_fail (url != NULL);
array = g_ptr_array_new ();
list = g_settings_get_strv (settings, "notify-programs");
for (ii = 0; list && list[ii]; ii++)
{
if (g_strcmp0 (url, list[ii]) != 0)
g_ptr_array_add (array, list[ii]);
}
g_ptr_array_add (array, (gpointer) url);
g_ptr_array_add (array, NULL);
g_settings_set_strv (settings, "notify-programs", (const gchar * const *) array->pdata);
g_ptr_array_free (array, TRUE);
g_strfreev (list);
}
#endif
static gboolean
reminder_watcher_can_procedure (ReminderWatcher *rw,
const gchar *cmd,
const gchar *url)
{
#if 0
GtkWidget *container;
GtkWidget *dialog;
GtkWidget *label;
GtkWidget *checkbox;
gchar *str;
gint response;
#endif
if (reminder_watcher_is_blessed_program (rw->priv->settings, url))
return TRUE;
#if 0
dialog = gtk_dialog_new_with_buttons (
_("Warning"), GTK_WINDOW (rw->priv->window), 0,
_("_No"), GTK_RESPONSE_CANCEL,
_("_Yes"), GTK_RESPONSE_OK,
NULL);
str = g_strdup_printf (
_("A calendar reminder is about to trigger. "
"This reminder is configured to run the following program:\n\n"
" %s\n\n"
"Are you sure you want to run this program?"),
cmd);
label = gtk_label_new (str);
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_widget_show (label);
container = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
gtk_box_pack_start (GTK_BOX (container), label, TRUE, TRUE, 4);
g_free (str);
checkbox = gtk_check_button_new_with_label (_("Do not ask me about this program again"));
gtk_widget_show (checkbox);
gtk_box_pack_start (GTK_BOX (container), checkbox, TRUE, TRUE, 4);
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_OK &&
gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)))
{
reminder_watcher_save_blessed_program (rw->priv->settings, url);
}
gtk_widget_destroy (dialog);
return response == GTK_RESPONSE_OK;
#endif
return FALSE;
}
static gboolean
reminder_watcher_notify_procedure (ReminderWatcher *rw,
const EReminderData *rd,
ECalComponentAlarm *alarm)
{
ECalComponentText *description;
ICalAttach *attach = NULL;
GSList *attachments;
const gchar *url;
gchar *cmd;
gboolean result = FALSE;
g_return_val_if_fail (rw != NULL, FALSE);
g_return_val_if_fail (rd != NULL, FALSE);
g_return_val_if_fail (alarm != NULL, FALSE);
print_debug ("ReminderWatcher::Notify Procedure for '%s'", reminder_watcher_get_rd_summary (rd));
attachments = e_cal_component_alarm_get_attachments (alarm);
if (attachments && !attachments->next)
attach = attachments->data;
description = e_cal_component_alarm_get_description (alarm);
/* If the alarm has no attachment, simply display a notification dialog. */
if (!attach)
goto fallback;
if (!i_cal_attach_get_is_url (attach))
goto fallback;
url = i_cal_attach_get_url (attach);
g_return_val_if_fail (url != NULL, FALSE);
/* Ask for confirmation before executing the stuff */
if (description && e_cal_component_text_get_value (description))
cmd = g_strconcat (url, " ", e_cal_component_text_get_value (description), NULL);
else
cmd = (gchar *) url;
if (reminder_watcher_can_procedure (rw, cmd, url))
result = g_spawn_command_line_async (cmd, NULL);
if (cmd != (gchar *) url)
g_free (cmd);
/* Fall back to display notification if we got an error */
if (!result)
goto fallback;
return FALSE;
fallback:
return reminder_watcher_notify_display (rw, rd, alarm);
}
/* Returns %TRUE to keep it, %FALSE to dismiss it */
static gboolean
reminders_process_one (ReminderWatcher *rw,
const EReminderData *rd,
gboolean snoozed)
{
ECalComponentAlarm *alarm;
ECalComponentAlarmInstance *instance;
ECalComponentAlarmAction action;
gboolean keep_in_reminders = FALSE;
g_return_val_if_fail (rw != NULL, FALSE);
g_return_val_if_fail (rd != NULL, FALSE);
if (e_cal_component_get_vtype (e_reminder_data_get_component (rd)) == E_CAL_COMPONENT_TODO)
{
ICalPropertyStatus status;
status = e_cal_component_get_status (e_reminder_data_get_component (rd));
if (status == I_CAL_STATUS_COMPLETED &&
!g_settings_get_boolean (rw->priv->settings, "notify-completed-tasks"))
return FALSE;
}
instance = e_reminder_data_get_instance (rd);
alarm = instance ? e_cal_component_get_alarm (e_reminder_data_get_component (rd), e_cal_component_alarm_instance_get_uid (instance)) : NULL;
if (!alarm)
return FALSE;
if (!snoozed && !g_settings_get_boolean (rw->priv->settings, "notify-past-events"))
{
ECalComponentAlarmTrigger *trigger;
time_t offset = 0, event_relative, orig_trigger_day, today;
trigger = e_cal_component_alarm_get_trigger (alarm);
switch (trigger ? e_cal_component_alarm_trigger_get_kind (trigger) : E_CAL_COMPONENT_ALARM_TRIGGER_NONE)
{
case E_CAL_COMPONENT_ALARM_TRIGGER_NONE:
case E_CAL_COMPONENT_ALARM_TRIGGER_ABSOLUTE:
break;
case E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_START:
case E_CAL_COMPONENT_ALARM_TRIGGER_RELATIVE_END:
offset = i_cal_duration_as_int (e_cal_component_alarm_trigger_get_duration (trigger));
break;
default:
break;
}
today = time (NULL);
event_relative = e_cal_component_alarm_instance_get_occur_start (instance) - offset;
#define CLAMP_TO_DAY(x) ((x) - ((x) % (60 * 60 * 24)))
event_relative = CLAMP_TO_DAY (event_relative);
orig_trigger_day = CLAMP_TO_DAY (e_cal_component_alarm_instance_get_time (instance));
today = CLAMP_TO_DAY (today);
#undef CLAMP_TO_DAY
if (event_relative < today && orig_trigger_day < today)
{
e_cal_component_alarm_free (alarm);
return FALSE;
}
}
action = e_cal_component_alarm_get_action (alarm);
switch (action)
{
case E_CAL_COMPONENT_ALARM_AUDIO:
keep_in_reminders = reminder_watcher_notify_audio (rw, rd, alarm);
break;
case E_CAL_COMPONENT_ALARM_DISPLAY:
keep_in_reminders = reminder_watcher_notify_display (rw, rd, alarm);
break;
case E_CAL_COMPONENT_ALARM_EMAIL:
keep_in_reminders = reminder_watcher_notify_email (rw, rd, alarm);
break;
case E_CAL_COMPONENT_ALARM_PROCEDURE:
keep_in_reminders = reminder_watcher_notify_procedure (rw, rd, alarm);
break;
case E_CAL_COMPONENT_ALARM_NONE:
case E_CAL_COMPONENT_ALARM_UNKNOWN:
break;
}
e_cal_component_alarm_free (alarm);
return keep_in_reminders;
}
static gpointer
reminders_dismiss_thread (gpointer user_data)
{
ReminderWatcher *rw = user_data;
EReminderWatcher *watcher;
GSList *dismiss, *link;
g_return_val_if_fail (IS_REMINDER_WATCHER (rw), NULL);
g_mutex_lock (&rw->priv->dismiss_lock);
dismiss = rw->priv->dismiss;
rw->priv->dismiss = NULL;
rw->priv->dismiss_thread = NULL;
g_mutex_unlock (&rw->priv->dismiss_lock);
watcher = E_REMINDER_WATCHER (rw);
if (watcher)
{
for (link = dismiss; link; link = g_slist_next (link))
{
EReminderData *rd = link->data;
if (rd)
{
/* Silently ignore any errors here */
e_reminder_watcher_dismiss_sync (watcher, rd, NULL, NULL);
}
}
}
g_slist_free_full (dismiss, e_reminder_data_free);
g_clear_object (&rw);
return NULL;
}
static void
reminders_triggered_cb (EReminderWatcher *watcher,
const GSList *reminders, /* EReminderData * */
gboolean snoozed,
gpointer user_data)
{
ReminderWatcher *rw = REMINDER_WATCHER (watcher);
GSList *link;
g_return_if_fail (IS_REMINDER_WATCHER (rw));
g_mutex_lock (&rw->priv->dismiss_lock);
for (link = (GSList *) reminders; link; link = g_slist_next (link))
{
const EReminderData *rd = link->data;
if (rd && !reminders_process_one (rw, rd, snoozed))
{
rw->priv->dismiss = g_slist_prepend (rw->priv->dismiss, e_reminder_data_copy (rd));
}
}
if (rw->priv->dismiss && !rw->priv->dismiss_thread)
{
rw->priv->dismiss_thread = g_thread_new (NULL, reminders_dismiss_thread, g_object_ref (rw));
g_warn_if_fail (rw->priv->dismiss_thread != NULL);
if (rw->priv->dismiss_thread)
g_thread_unref (rw->priv->dismiss_thread);
}
g_mutex_unlock (&rw->priv->dismiss_lock);
}
static EClient *
reminder_watcher_cal_client_connect_sync (EReminderWatcher *watcher,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GError **error)
{
ReminderWatcher *reminder_watcher = REMINDER_WATCHER (watcher);
return calendar_sources_connect_client_sync (reminder_watcher->priv->sources, FALSE, source, source_type,
wait_for_connected_seconds, cancellable, error);
}
static void
reminder_watcher_cal_client_connect (EReminderWatcher *watcher,
ESource *source,
ECalClientSourceType source_type,
guint32 wait_for_connected_seconds,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
ReminderWatcher *reminder_watcher = REMINDER_WATCHER (watcher);
calendar_sources_connect_client (reminder_watcher->priv->sources, FALSE, source, source_type,
wait_for_connected_seconds, cancellable, callback, user_data);
}
static EClient *
reminder_watcher_cal_client_connect_finish (EReminderWatcher *watcher,
GAsyncResult *result,
GError **error)
{
ReminderWatcher *reminder_watcher = REMINDER_WATCHER (watcher);
return calendar_sources_connect_client_finish (reminder_watcher->priv->sources, result, error);
}
static void
reminder_watcher_constructed (GObject *object)
{
ReminderWatcher *rw = REMINDER_WATCHER (object);
G_OBJECT_CLASS (reminder_watcher_parent_class)->constructed (object);
rw->priv->sources = calendar_sources_get ();
g_signal_connect (rw, "triggered",
G_CALLBACK (reminders_triggered_cb), NULL);
}
static void
reminder_watcher_finalize (GObject *object)
{
ReminderWatcher *rw = REMINDER_WATCHER (object);
g_clear_object (&rw->priv->sources);
g_clear_object (&rw->priv->settings);
g_mutex_clear (&rw->priv->dismiss_lock);
G_OBJECT_CLASS (reminder_watcher_parent_class)->finalize (object);
}
static void
reminder_watcher_class_init (ReminderWatcherClass *klass)
{
GObjectClass *object_class;
EReminderWatcherClass *watcher_class;
object_class = G_OBJECT_CLASS (klass);
object_class->constructed = reminder_watcher_constructed;
object_class->finalize = reminder_watcher_finalize;
watcher_class = E_REMINDER_WATCHER_CLASS (klass);
watcher_class->cal_client_connect_sync = reminder_watcher_cal_client_connect_sync;
watcher_class->cal_client_connect = reminder_watcher_cal_client_connect;
watcher_class->cal_client_connect_finish = reminder_watcher_cal_client_connect_finish;
}
static void
reminder_watcher_init (ReminderWatcher *rw)
{
rw->priv = reminder_watcher_get_instance_private (rw);
rw->priv->settings = g_settings_new ("org.gnome.evolution-data-server.calendar");
g_mutex_init (&rw->priv->dismiss_lock);
}
EReminderWatcher *
reminder_watcher_new (GApplication *application,
ESourceRegistry *registry)
{
ReminderWatcher *rw;
g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), NULL);
rw = g_object_new (TYPE_REMINDER_WATCHER,
"registry", registry,
NULL);
rw->priv->application = application;
return E_REMINDER_WATCHER (rw);
}
static void
reminder_watcher_dismiss_done_cb (GObject *source_object,
GAsyncResult *result,
gpointer user_data)
{
GError *error = NULL;
if (!e_reminder_watcher_dismiss_finish (E_REMINDER_WATCHER (source_object), result, &error))
{
if (!g_error_matches (error, E_CLIENT_ERROR, E_CLIENT_ERROR_NOT_SUPPORTED))
print_debug ("Dismiss: Failed with error: %s", error ? error->message : "Unknown error");
g_clear_error (&error);
}
}
void
reminder_watcher_dismiss_by_id (EReminderWatcher *reminder_watcher,
const gchar *id)
{
ReminderWatcher *rw;
GSList *past, *link;
g_return_if_fail (IS_REMINDER_WATCHER (reminder_watcher));
g_return_if_fail (id && *id);
rw = REMINDER_WATCHER (reminder_watcher);
past = e_reminder_watcher_dup_past (reminder_watcher);
for (link = past; link; link = g_slist_next (link))
{
EReminderData *rd = link->data;
gchar *rd_id;
rd_id = reminder_watcher_build_notif_id (rd);
if (g_strcmp0 (rd_id, id) == 0)
{
print_debug ("Dismiss: Going to dismiss '%s'", reminder_watcher_get_rd_summary (rd));
g_application_withdraw_notification (rw->priv->application, id);
e_reminder_watcher_dismiss (reminder_watcher, rd, NULL,
reminder_watcher_dismiss_done_cb, NULL);
g_free (rd_id);
break;
}
g_free (rd_id);
}
if (!link)
print_debug ("Dismiss: Cannot find reminder '%s'", id);
g_slist_free_full (past, e_reminder_data_free);
}

View File

@@ -0,0 +1,67 @@
/*
* Copyright (C) 2020 Red Hat (www.redhat.com)
*
* 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef REMINDER_WATCHER_H
#define REMINDER_WATCHER_H
#define HANDLE_LIBICAL_MEMORY
#define EDS_DISABLE_DEPRECATED
#include <libecal/libecal.h>
/* Standard GObject macros */
#define TYPE_REMINDER_WATCHER \
(reminder_watcher_get_type ())
#define REMINDER_WATCHER(obj) \
(G_TYPE_CHECK_INSTANCE_CAST \
((obj), TYPE_REMINDER_WATCHER, ReminderWatcher))
#define REMINDER_WATCHER_CLASS(cls) \
(G_TYPE_CHECK_CLASS_CAST \
((cls), TYPE_REMINDER_WATCHER, ReminderWatcherClass))
#define IS_REMINDER_WATCHER(obj) \
(G_TYPE_CHECK_INSTANCE_TYPE \
((obj), TYPE_REMINDER_WATCHER))
#define IS_REMINDER_WATCHER_CLASS(cls) \
(G_TYPE_CHECK_CLASS_TYPE \
((cls), TYPE_REMINDER_WATCHER))
#define REMINDER_WATCHER_GET_CLASS(obj) \
(G_TYPE_INSTANCE_GET_CLASS \
((obj), TYPE_REMINDER_WATCHER, ReminderWatcherClass))
G_BEGIN_DECLS
typedef struct _ReminderWatcher ReminderWatcher;
typedef struct _ReminderWatcherClass ReminderWatcherClass;
typedef struct _ReminderWatcherPrivate ReminderWatcherPrivate;
struct _ReminderWatcher {
EReminderWatcher parent;
ReminderWatcherPrivate *priv;
};
struct _ReminderWatcherClass {
EReminderWatcherClass parent_class;
};
GType reminder_watcher_get_type (void) G_GNUC_CONST;
EReminderWatcher *reminder_watcher_new (GApplication *application,
ESourceRegistry *registry);
void reminder_watcher_dismiss_by_id(EReminderWatcher *reminder_watcher,
const gchar *id);
G_END_DECLS
#endif /* REMINDER_WATCHER_H */

View File

@@ -1659,6 +1659,55 @@ delete_variant_cb (GObject *object,
g_hash_table_remove (global->save_ops, object);
}
static void
replace_contents_worker (GTask *task,
gpointer source_object,
gpointer task_data,
GCancellable *cancellable)
{
GFile *file = source_object;
GBytes *bytes = task_data;
GError *error = NULL;
const gchar *data;
gsize len;
data = g_bytes_get_data (bytes, &len);
if (!g_file_replace_contents (file, data, len, NULL, FALSE,
G_FILE_CREATE_REPLACE_DESTINATION,
NULL, cancellable, &error))
g_task_return_error (task, g_steal_pointer (&error));
else
g_task_return_boolean (task, TRUE);
}
static void
replace_contents_async (GFile *path,
GBytes *bytes,
GCancellable *cancellable,
GAsyncReadyCallback callback,
gpointer user_data)
{
g_autoptr(GTask) task = NULL;
g_assert (G_IS_FILE (path));
g_assert (bytes != NULL);
g_assert (!cancellable || G_IS_CANCELLABLE (cancellable));
task = g_task_new (path, cancellable, callback, user_data);
g_task_set_source_tag (task, replace_contents_async);
g_task_set_task_data (task, g_bytes_ref (bytes), (GDestroyNotify)g_bytes_unref);
g_task_run_in_thread (task, replace_contents_worker);
}
static gboolean
replace_contents_finish (GFile *file,
GAsyncResult *result,
GError **error)
{
return g_task_propagate_boolean (G_TASK (result), error);
}
static void
replace_variant_cb (GObject *object,
GAsyncResult *result,
@@ -1667,7 +1716,7 @@ replace_variant_cb (GObject *object,
ShellGlobal *global = user_data;
GError *error = NULL;
if (!g_file_replace_contents_finish (G_FILE (object), result, NULL, &error))
if (!replace_contents_finish (G_FILE (object), result, &error))
{
if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
{
@@ -1703,12 +1752,19 @@ save_variant (ShellGlobal *global,
}
else
{
g_file_replace_contents_async (path,
g_variant_get_data (variant),
g_variant_get_size (variant),
NULL, FALSE,
G_FILE_CREATE_REPLACE_DESTINATION,
cancellable, replace_variant_cb, global);
g_autoptr(GBytes) bytes = NULL;
bytes = g_bytes_new_with_free_func (g_variant_get_data (variant),
g_variant_get_size (variant),
(GDestroyNotify)g_variant_unref,
g_variant_ref (variant));
/* g_file_replace_contents_async() can potentially fsync() from the
* calling thread when completing the asynchronous task. Instead, we
* want to force that fsync() to a thread to avoid blocking the
* compositor main loop. Using our own replace_contents_async()
* simply executes the operation synchronously from a thread.
*/
replace_contents_async (path, bytes, cancellable, replace_variant_cb, global);
}
g_object_unref (path);

View File

@@ -170,6 +170,8 @@ shell_stack_navigate_focus (StWidget *widget,
}
top_actor = clutter_actor_get_last_child (CLUTTER_ACTOR (widget));
while (top_actor && !clutter_actor_is_visible (top_actor))
top_actor = clutter_actor_get_previous_sibling (top_actor);
if (ST_IS_WIDGET (top_actor))
return st_widget_navigate_focus (ST_WIDGET (top_actor), from, direction, FALSE);
else

View File

@@ -20,6 +20,8 @@
#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <meta/display.h>
#include <meta/meta-x11-display.h>
#include <locale.h>
#ifdef HAVE__NL_TIME_FIRST_WEEKDAY
@@ -639,3 +641,27 @@ shell_util_sd_notify (void)
* our environment. */
sd_notify (1, "READY=1");
}
/**
* shell_util_has_x11_display_extension:
* @display: A #MetaDisplay
* @extension: An X11 extension
*
* If the corresponding X11 display provides the passed extension, return %TRUE,
* otherwise %FALSE. If there is no X11 display, %FALSE is passed.
*/
gboolean
shell_util_has_x11_display_extension (MetaDisplay *display,
const char *extension)
{
MetaX11Display *x11_display;
Display *xdisplay;
int op, event, error;
x11_display = meta_display_get_x11_display (display);
if (!x11_display)
return FALSE;
xdisplay = meta_x11_display_get_xdisplay (x11_display);
return XQueryExtension (xdisplay, extension, &op, &event, &error);
}

View File

@@ -66,6 +66,9 @@ gboolean shell_util_stop_systemd_unit (const char *unit,
void shell_util_sd_notify (void);
gboolean shell_util_has_x11_display_extension (MetaDisplay *display,
const char *extension);
G_END_DECLS
#endif /* __SHELL_UTIL_H__ */

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