Compare commits

...

51 Commits

Author SHA1 Message Date
Alexander Mikhaylenko
b1afb946b2 workspaceAnimation: Support multiple monitors
Currently, there's one animation for the whole canvas. While it looks fine
with just one screen, it causes windows to move between screens when
switching workspaces. Instead, have a separate animation on each screen,
and sync their progress so that at any given time the progress "fraction"
is the same between all screens. Clip all animations to their screens so
that the windows don't leak to other screens.

If a window is placed between every screen, can end up in multiple
animations, in that case each part is still animated separately.

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
46d5bccfc6 workspaceAnimation: Use window clones
Instead of reparenting windows, clone them. This will allow to properly
support multi-monitor setups in subsequent commits.

Block window mapping animation while the animation is running to prevent
new windows appearing during the animation from being visible at the same
time as their clones.

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

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
f0d498062d workspaceAnimation: Only create moving window bin when needed
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
eeac4a3b6d workspaceAnimation: Extract WorkspaceGroup
Reimplement _syncStacking().

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
272cb4d523 workspaceAnimation: Extract WorkspaceAnimation
Simplify the logic a bit. Introduce WorkspaceAnimation class that reparents
the windows from current, surrounding and destination workspaces and manages
them. Expose 'progress' property and have WorkspaceAnimationController animate
it instead of animating everything separately.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
6d5446e4a6 workspaceAnimation: Stop depending on shellwm
https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01:00
Alexander Mikhaylenko
fa31bcaa7a workspaceAnimation: Split from WindowManager
It's already too complex, and will get more complex in future, split it
out.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/605
2020-02-26 10:36:10 +01: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
36 changed files with 3073 additions and 2603 deletions

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 $?
}

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

@@ -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

@@ -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

@@ -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)
@@ -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

@@ -109,6 +109,7 @@
<file>ui/windowMenu.js</file>
<file>ui/windowManager.js</file>
<file>ui/workspace.js</file>
<file>ui/workspaceAnimation.js</file>
<file>ui/workspaceSwitcherPopup.js</file>
<file>ui/workspaceThumbnail.js</file>
<file>ui/workspacesView.js</file>

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

@@ -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;
@@ -548,12 +550,11 @@ 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();

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

@@ -111,6 +111,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,6 +127,7 @@ function _easeActor(actor, params) {
let animatedProps = Object.keys(params).map(p => p.replace('_', '-', 'g'));
animatedProps.forEach(p => actor.remove_transition(p));
if (actor.get_easing_duration() > 0 || !isReversed)
actor.set(params);
actor.restore_easing_state();
@@ -161,6 +167,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,6 +185,8 @@ function _easeActorProperty(actor, propName, target, params) {
if (duration == 0) {
let [obj, prop] = _getPropertyTarget(actor, propName);
if (!isReversed)
obj[prop] = target;
Meta.disable_unredirect_for_display(global.display);

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

@@ -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

@@ -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

@@ -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,6 +555,7 @@ var UnlockDialog = GObject.registerClass({
// Switch User button
this._otherUserButton = new St.Button({
style_class: 'modal-dialog-button button switch-user-button',
accessible_name: _('Log in as another user'),
can_focus: true,
reactive: true,
x_align: Clutter.ActorAlign.END,
@@ -571,7 +569,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 +622,6 @@ var UnlockDialog = GObject.registerClass({
container: widget,
monitorIndex,
controlPosition: false,
settingsSchema: SCREENSAVER_SCHEMA,
});
this._bgManagers.push(bgManager);

View File

@@ -14,9 +14,9 @@ const WindowMenu = imports.ui.windowMenu;
const PadOsd = imports.ui.padOsd;
const EdgeDragAction = imports.ui.edgeDragAction;
const CloseDialog = imports.ui.closeDialog;
const SwipeTracker = imports.ui.swipeTracker;
const SwitchMonitor = imports.ui.switchMonitor;
const IBusManager = imports.misc.ibusManager;
const WorkspaceAnimation = imports.ui.workspaceAnimation;
const { loadInterfaceXML } = imports.misc.fileUtils;
@@ -559,7 +559,6 @@ var WindowManager = class {
this._resizing = new Set();
this._resizePending = new Set();
this._destroying = new Set();
this._movingWindow = null;
this._dimmedWindows = [];
@@ -569,15 +568,6 @@ var WindowManager = class {
this._isWorkspacePrepended = false;
this._switchData = null;
this._shellwm.connect('kill-switch-workspace', shellwm => {
if (this._switchData) {
if (this._switchData.inProgress)
this._switchWorkspaceDone(shellwm);
else if (!this._switchData.gestureActivated)
this._finishWorkspaceSwitch(this._switchData);
}
});
this._shellwm.connect('kill-window-effects', (shellwm, actor) => {
this._minimizeWindowDone(shellwm, actor);
this._mapWindowDone(shellwm, actor);
@@ -599,7 +589,6 @@ var WindowManager = class {
this._shellwm.connect('confirm-display-change', this._confirmDisplayChange.bind(this));
this._shellwm.connect('create-close-dialog', this._createCloseDialog.bind(this));
this._shellwm.connect('create-inhibit-shortcuts-dialog', this._createInhibitShortcutsDialog.bind(this));
global.display.connect('restacked', this._syncStacking.bind(this));
this._workspaceSwitcherPopup = null;
this._tilePreview = null;
@@ -908,17 +897,10 @@ var WindowManager = class {
Main.overview.connect('showing', () => {
for (let i = 0; i < this._dimmedWindows.length; i++)
this._undimWindow(this._dimmedWindows[i]);
if (this._switchData) {
if (this._switchData.gestureActivated)
this._switchWorkspaceStop();
this._swipeTracker.enabled = false;
}
});
Main.overview.connect('hiding', () => {
for (let i = 0; i < this._dimmedWindows.length; i++)
this._dimWindow(this._dimmedWindows[i]);
this._swipeTracker.enabled = true;
});
this._windowMenuManager = new WindowMenu.WindowMenuManager();
@@ -929,13 +911,6 @@ var WindowManager = class {
global.workspace_manager.override_workspace_layout(Meta.DisplayCorner.TOPLEFT,
false, -1, 1);
let swipeTracker = new SwipeTracker.SwipeTracker(global.stage,
Shell.ActionMode.NORMAL, { allowDrag: false, allowScroll: false });
swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this));
swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this));
swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this));
this._swipeTracker = swipeTracker;
let appSwitchAction = new AppSwitchAction();
appSwitchAction.connect('activated', this._switchApp.bind(this));
global.stage.add_action(appSwitchAction);
@@ -967,6 +942,17 @@ var WindowManager = class {
global.display.connect('in-fullscreen-changed', updateUnfullscreenGesture);
global.stage.add_action(topDragAction);
this._workspaceAnimation =
new WorkspaceAnimation.WorkspaceAnimationController();
this._shellwm.connect('kill-switch-workspace', () => {
if (!this._workspaceAnimation.isAnimating() || this._workspaceAnimation.canCancelGesture())
return;
this._workspaceAnimation.cancelSwitchAnimation();
this._shellwm.completed_switch_workspace();
});
}
_showPadOsd(display, device, settings, imagePath, editionMode, monitorIndex) {
@@ -1089,8 +1075,7 @@ var WindowManager = class {
}
_shouldAnimate() {
return !(Main.overview.visible ||
(this._switchData && this._switchData.gestureActivated));
return !(Main.overview.visible || this._workspaceAnimation.isAnimating());
}
_shouldAnimateActor(actor, types) {
@@ -1571,379 +1556,17 @@ var WindowManager = class {
return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode);
}
_syncStacking() {
if (this._switchData == null)
return;
let windows = global.get_window_actors();
let lastCurSibling = null;
let lastDirSibling = [];
for (let i = 0; i < windows.length; i++) {
if (windows[i].get_parent() == this._switchData.curGroup) {
this._switchData.curGroup.set_child_above_sibling(windows[i], lastCurSibling);
lastCurSibling = windows[i];
} else {
for (let dir of Object.values(Meta.MotionDirection)) {
let info = this._switchData.surroundings[dir];
if (!info || windows[i].get_parent() != info.actor)
continue;
let sibling = lastDirSibling[dir];
if (sibling == undefined)
sibling = null;
info.actor.set_child_above_sibling(windows[i], sibling);
lastDirSibling[dir] = windows[i];
break;
}
}
}
}
_getPositionForDirection(direction, fromWs, toWs) {
let xDest = 0, yDest = 0;
let oldWsIsFullscreen = fromWs.list_windows().some(w => w.is_fullscreen());
let newWsIsFullscreen = toWs.list_windows().some(w => w.is_fullscreen());
// We have to shift windows up or down by the height of the panel to prevent having a
// visible gap between the windows while switching workspaces. Since fullscreen windows
// hide the panel, they don't need to be shifted up or down.
let shiftHeight = Main.panel.height;
if (direction == Meta.MotionDirection.UP ||
direction == Meta.MotionDirection.UP_LEFT ||
direction == Meta.MotionDirection.UP_RIGHT)
yDest = -global.screen_height + (oldWsIsFullscreen ? 0 : shiftHeight);
else if (direction == Meta.MotionDirection.DOWN ||
direction == Meta.MotionDirection.DOWN_LEFT ||
direction == Meta.MotionDirection.DOWN_RIGHT)
yDest = global.screen_height - (newWsIsFullscreen ? 0 : shiftHeight);
if (direction == Meta.MotionDirection.LEFT ||
direction == Meta.MotionDirection.UP_LEFT ||
direction == Meta.MotionDirection.DOWN_LEFT)
xDest = -global.screen_width;
else if (direction == Meta.MotionDirection.RIGHT ||
direction == Meta.MotionDirection.UP_RIGHT ||
direction == Meta.MotionDirection.DOWN_RIGHT)
xDest = global.screen_width;
return [xDest, yDest];
}
_prepareWorkspaceSwitch(from, to, direction) {
if (this._switchData)
return;
let wgroup = global.window_group;
let windows = global.get_window_actors();
let switchData = {};
this._switchData = switchData;
switchData.curGroup = new Clutter.Actor();
switchData.movingWindowBin = new Clutter.Actor();
switchData.windows = [];
switchData.surroundings = {};
switchData.gestureActivated = false;
switchData.inProgress = false;
switchData.container = new Clutter.Actor();
switchData.container.add_actor(switchData.curGroup);
wgroup.add_actor(switchData.movingWindowBin);
wgroup.add_actor(switchData.container);
let workspaceManager = global.workspace_manager;
let curWs = workspaceManager.get_workspace_by_index(from);
for (let dir of Object.values(Meta.MotionDirection)) {
let ws = null;
if (to < 0)
ws = curWs.get_neighbor(dir);
else if (dir == direction)
ws = workspaceManager.get_workspace_by_index(to);
if (ws == null || ws == curWs) {
switchData.surroundings[dir] = null;
continue;
}
let [x, y] = this._getPositionForDirection(dir, curWs, ws);
let info = {
index: ws.index(),
actor: new Clutter.Actor(),
xDest: x,
yDest: y,
};
switchData.surroundings[dir] = info;
switchData.container.add_actor(info.actor);
switchData.container.set_child_above_sibling(info.actor, null);
info.actor.set_position(x, y);
}
wgroup.set_child_above_sibling(switchData.movingWindowBin, null);
for (let i = 0; i < windows.length; i++) {
let actor = windows[i];
let window = actor.get_meta_window();
if (!window.showing_on_its_workspace())
continue;
if (window.is_on_all_workspaces())
continue;
let record = { window: actor,
parent: actor.get_parent() };
if (this._movingWindow && window == this._movingWindow) {
record.parent.remove_child(actor);
switchData.movingWindow = record;
switchData.windows.push(switchData.movingWindow);
switchData.movingWindowBin.add_child(actor);
} else if (window.get_workspace().index() == from) {
record.parent.remove_child(actor);
switchData.windows.push(record);
switchData.curGroup.add_child(actor);
} else {
let visible = false;
for (let dir of Object.values(Meta.MotionDirection)) {
let info = switchData.surroundings[dir];
if (!info || info.index != window.get_workspace().index())
continue;
record.parent.remove_child(actor);
switchData.windows.push(record);
info.actor.add_child(actor);
visible = true;
break;
}
actor.visible = visible;
}
}
for (let i = 0; i < switchData.windows.length; i++) {
let w = switchData.windows[i];
w.windowDestroyId = w.window.connect('destroy', () => {
switchData.windows.splice(switchData.windows.indexOf(w), 1);
});
}
}
_finishWorkspaceSwitch(switchData) {
this._switchData = null;
for (let i = 0; i < switchData.windows.length; i++) {
let w = switchData.windows[i];
w.window.disconnect(w.windowDestroyId);
w.window.get_parent().remove_child(w.window);
w.parent.add_child(w.window);
if (w.window.get_meta_window().get_workspace() !=
global.workspace_manager.get_active_workspace())
w.window.hide();
}
switchData.container.destroy();
switchData.movingWindowBin.destroy();
this._movingWindow = null;
}
_switchWorkspace(shellwm, from, to, direction) {
if (!Main.sessionMode.hasWorkspaces || !this._shouldAnimate()) {
shellwm.completed_switch_workspace();
return;
}
this._prepareWorkspaceSwitch(from, to, direction);
this._switchData.inProgress = true;
let workspaceManager = global.workspace_manager;
let fromWs = workspaceManager.get_workspace_by_index(from);
let toWs = workspaceManager.get_workspace_by_index(to);
let [xDest, yDest] = this._getPositionForDirection(direction, fromWs, toWs);
/* @direction is the direction that the "camera" moves, so the
* screen contents have to move one screen's worth in the
* opposite direction.
*/
xDest = -xDest;
yDest = -yDest;
this._switchData.container.ease({
x: xDest,
y: yDest,
duration: WINDOW_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
onComplete: () => this._switchWorkspaceDone(shellwm),
this._workspaceAnimation.animateSwitchWorkspace(from, to, direction, () => {
this._shellwm.completed_switch_workspace();
});
}
_switchWorkspaceDone(shellwm) {
this._finishWorkspaceSwitch(this._switchData);
shellwm.completed_switch_workspace();
}
_directionForProgress(progress) {
if (global.workspace_manager.layout_rows === -1) {
return progress > 0
? Meta.MotionDirection.DOWN
: Meta.MotionDirection.UP;
} else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) {
return progress > 0
? Meta.MotionDirection.LEFT
: Meta.MotionDirection.RIGHT;
} else {
return progress > 0
? Meta.MotionDirection.RIGHT
: Meta.MotionDirection.LEFT;
}
}
_getProgressRange() {
if (!this._switchData)
return [0, 0];
let lower = 0;
let upper = 0;
let horiz = global.workspace_manager.layout_rows !== -1;
let baseDistance;
if (horiz)
baseDistance = global.screen_width;
else
baseDistance = global.screen_height;
let direction = this._directionForProgress(-1);
let info = this._switchData.surroundings[direction];
if (info !== null) {
let distance = horiz ? info.xDest : info.yDest;
lower = -Math.abs(distance) / baseDistance;
}
direction = this._directionForProgress(1);
info = this._switchData.surroundings[direction];
if (info !== null) {
let distance = horiz ? info.xDest : info.yDest;
upper = Math.abs(distance) / baseDistance;
}
return [lower, upper];
}
_switchWorkspaceBegin(tracker, monitor) {
if (Meta.prefs_get_workspaces_only_on_primary() &&
monitor !== Main.layoutManager.primaryIndex)
return;
let workspaceManager = global.workspace_manager;
let horiz = workspaceManager.layout_rows !== -1;
tracker.orientation = horiz
? Clutter.Orientation.HORIZONTAL
: Clutter.Orientation.VERTICAL;
let activeWorkspace = workspaceManager.get_active_workspace();
let baseDistance;
if (horiz)
baseDistance = global.screen_width;
else
baseDistance = global.screen_height;
let progress;
if (this._switchData && this._switchData.gestureActivated) {
this._switchData.container.remove_all_transitions();
if (!horiz)
progress = -this._switchData.container.y / baseDistance;
else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL)
progress = this._switchData.container.x / baseDistance;
else
progress = -this._switchData.container.x / baseDistance;
} else {
this._prepareWorkspaceSwitch(activeWorkspace.index(), -1);
progress = 0;
}
let points = [];
let [lower, upper] = this._getProgressRange();
if (lower !== 0)
points.push(lower);
points.push(0);
if (upper !== 0)
points.push(upper);
tracker.confirmSwipe(baseDistance, points, progress, 0);
}
_switchWorkspaceUpdate(tracker, progress) {
if (!this._switchData)
return;
let direction = this._directionForProgress(progress);
let info = this._switchData.surroundings[direction];
let xPos = 0;
let yPos = 0;
if (info) {
if (global.workspace_manager.layout_rows === -1)
yPos = -Math.round(progress * global.screen_height);
else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL)
xPos = Math.round(progress * global.screen_width);
else
xPos = -Math.round(progress * global.screen_width);
}
this._switchData.container.set_position(xPos, yPos);
}
_switchWorkspaceEnd(tracker, duration, endProgress) {
if (!this._switchData)
return;
let workspaceManager = global.workspace_manager;
let activeWorkspace = workspaceManager.get_active_workspace();
let newWs = activeWorkspace;
let xDest = 0;
let yDest = 0;
if (endProgress !== 0) {
let direction = this._directionForProgress(endProgress);
newWs = activeWorkspace.get_neighbor(direction);
xDest = -this._switchData.surroundings[direction].xDest;
yDest = -this._switchData.surroundings[direction].yDest;
}
let switchData = this._switchData;
switchData.gestureActivated = true;
this._switchData.container.ease({
x: xDest,
y: yDest,
duration,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
onComplete: () => {
if (newWs !== activeWorkspace)
this.actionMoveWorkspace(newWs);
this._finishWorkspaceSwitch(switchData);
},
});
}
_switchWorkspaceStop() {
this._switchData.container.x = 0;
this._switchData.container.y = 0;
this._finishWorkspaceSwitch(this._switchData);
}
_showTilePreview(shellwm, window, tileRect, monitorIndex) {
if (!this._tilePreview)
this._tilePreview = new TilePreview();
@@ -2141,7 +1764,7 @@ var WindowManager = class {
// This won't have any effect for "always sticky" windows
// (like desktop windows or docks)
this._movingWindow = window;
this._workspaceAnimation.movingWindow = window;
window.change_workspace(workspace);
global.display.clear_mouse_mode();

511
js/ui/workspaceAnimation.js Normal file
View File

@@ -0,0 +1,511 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported WorkspaceAnimationController */
const { Clutter, GObject, Meta, Shell } = imports.gi;
const Main = imports.ui.main;
const Layout = imports.ui.layout;
const SwipeTracker = imports.ui.swipeTracker;
const WINDOW_ANIMATION_TIME = 250;
const WorkspaceGroup = GObject.registerClass(
class WorkspaceGroup extends Clutter.Actor {
_init(controller, workspace, monitor) {
super._init();
this._controller = controller;
this._workspace = workspace;
this._monitor = monitor;
this._windows = [];
this._refreshWindows();
this.connect('destroy', this._onDestroy.bind(this));
this._restackedId = global.display.connect('restacked',
this._refreshWindows.bind(this));
}
_shouldShowWindow(window) {
if (window.get_workspace() !== this._workspace)
return false;
let geometry = global.display.get_monitor_geometry(this._monitor.index);
let [intersects, intersection_] = window.get_frame_rect().intersect(geometry);
if (!intersects)
return false;
if (!window.showing_on_its_workspace())
return false;
if (window.is_on_all_workspaces())
return false;
if (this._controller.movingWindow &&
window === this._controller.movingWindow)
return false;
return true;
}
_refreshWindows() {
if (this._windows.length > 0)
this._removeWindows();
let windows = global.get_window_actors();
windows = windows.filter(w => this._shouldShowWindow(w.meta_window));
for (let window of windows) {
let clone = new Clutter.Clone({
source: window,
x: window.x - this._monitor.x,
y: window.y - this._monitor.y,
});
this.add_actor(clone);
window.hide();
let record = { window, clone };
record.windowDestroyId = window.connect('destroy', () => {
clone.destroy();
this._windows.splice(this._windows.indexOf(record), 1);
});
this._windows.push(record);
}
}
_removeWindows() {
for (let i = 0; i < this._windows.length; i++) {
let w = this._windows[i];
w.window.disconnect(w.windowDestroyId);
w.clone.destroy();
if (w.window.get_meta_window().get_workspace() ===
global.workspace_manager.get_active_workspace())
w.window.show();
}
this._windows = [];
}
_onDestroy() {
global.display.disconnect(this._restackedId);
this._removeWindows();
}
});
const WorkspaceAnimation = GObject.registerClass({
Properties: {
'progress': GObject.ParamSpec.double(
'progress', 'progress', 'progress',
GObject.ParamFlags.READWRITE,
-1, 1, 0),
},
}, class WorkspaceAnimation extends Clutter.Actor {
_init(controller, from, to, direction) {
super._init();
this.connect('destroy', this._onDestroy.bind(this));
this._controller = controller;
this._movingWindow = null;
this._monitors = [];
this._progress = 0;
global.window_group.add_actor(this);
let workspaceManager = global.workspace_manager;
let curWs = workspaceManager.get_workspace_by_index(from);
for (let monitor of Main.layoutManager.monitors) {
let record = {
index: monitor.index,
clipBin: new Clutter.Actor({
x_expand: true,
y_expand: true,
clip_to_allocation: true,
}),
container: new Clutter.Actor(),
surroundings: {},
};
let constraint = new Layout.MonitorConstraint({ index: monitor.index });
record.clipBin.add_constraint(constraint);
record.clipBin.add_actor(record.container);
this.add_actor(record.clipBin);
record.curGroup = new WorkspaceGroup(controller, curWs, monitor);
record.container.add_actor(record.curGroup);
for (let dir of Object.values(Meta.MotionDirection)) {
let ws = null;
if (to < 0)
ws = curWs.get_neighbor(dir);
else if (dir === direction)
ws = workspaceManager.get_workspace_by_index(to);
if (ws === null || ws === curWs) {
record.surroundings[dir] = null;
continue;
}
let [x, y] = this._getPositionForDirection(dir, curWs, ws,
monitor.index);
let info = {
index: ws.index(),
actor: new WorkspaceGroup(controller, ws, monitor),
xDest: x,
yDest: y,
};
record.surroundings[dir] = info;
record.container.add_actor(info.actor);
record.container.set_child_above_sibling(info.actor, null);
info.actor.set_position(x, y);
}
this._monitors.push(record);
}
if (this._controller.movingWindow) {
let actor = this._controller.movingWindow.get_compositor_private();
let container = new Clutter.Actor();
this._movingWindow = {
container,
window: actor,
parent: actor.get_parent(),
};
this._movingWindow.parent.remove_child(actor);
this._movingWindow.container.add_child(actor);
this._movingWindow.windowDestroyId = actor.connect('destroy', () => {
this._movingWindow = null;
});
global.window_group.add_actor(container);
global.window_group.set_child_above_sibling(container, null);
}
}
_onDestroy() {
this._monitors = [];
if (this._movingWindow) {
let record = this._movingWindow;
record.window.disconnect(record.windowDestroyId);
record.window.get_parent().remove_child(record.window);
record.parent.add_child(record.window);
record.container.destroy();
this._movingWindow = null;
}
}
_getPositionForDirection(direction, fromWs, toWs, monitor) {
let xDest = 0, yDest = 0;
let condition = w => w.get_monitor() === monitor && w.is_fullscreen();
let oldWsIsFullscreen = fromWs.list_windows().some(condition);
let newWsIsFullscreen = toWs.list_windows().some(condition);
let geometry = Main.layoutManager.monitors[monitor];
// We have to shift windows up or down by the height of the panel to prevent having a
// visible gap between the windows while switching workspaces. Since fullscreen windows
// hide the panel, they don't need to be shifted up or down.
let shiftHeight = monitor === Main.layoutManager.primaryIndex
? Main.panel.height : 0;
if (direction === Meta.MotionDirection.UP ||
direction === Meta.MotionDirection.UP_LEFT ||
direction === Meta.MotionDirection.UP_RIGHT)
yDest = -geometry.height + (oldWsIsFullscreen ? 0 : shiftHeight);
else if (direction === Meta.MotionDirection.DOWN ||
direction === Meta.MotionDirection.DOWN_LEFT ||
direction === Meta.MotionDirection.DOWN_RIGHT)
yDest = geometry.height - (newWsIsFullscreen ? 0 : shiftHeight);
if (direction === Meta.MotionDirection.LEFT ||
direction === Meta.MotionDirection.UP_LEFT ||
direction === Meta.MotionDirection.DOWN_LEFT)
xDest = -geometry.width;
else if (direction === Meta.MotionDirection.RIGHT ||
direction === Meta.MotionDirection.UP_RIGHT ||
direction === Meta.MotionDirection.DOWN_RIGHT)
xDest = geometry.width;
return [xDest, yDest];
}
directionForProgress(progress) {
if (global.workspace_manager.layout_rows === -1) {
return progress > 0
? Meta.MotionDirection.DOWN
: Meta.MotionDirection.UP;
} else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL) {
return progress > 0
? Meta.MotionDirection.LEFT
: Meta.MotionDirection.RIGHT;
} else {
return progress > 0
? Meta.MotionDirection.RIGHT
: Meta.MotionDirection.LEFT;
}
}
progressForDirection(dir) {
if (global.workspace_manager.layout_rows === -1)
return dir === Meta.MotionDirection.DOWN ? 1 : -1;
else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL)
return dir === Meta.MotionDirection.LEFT ? 1 : -1;
else
return dir === Meta.MotionDirection.RIGHT ? 1 : -1;
}
get progress() {
return this._progress;
}
set progress(progress) {
this._progress = progress;
let direction = this.directionForProgress(progress);
for (let monitorData of this._monitors) {
let xPos = 0;
let yPos = 0;
if (global.workspace_manager.layout_rows === -1)
yPos = -Math.round(progress * this._getDistance(monitorData, direction));
else if (Clutter.get_default_text_direction() === Clutter.TextDirection.RTL)
xPos = Math.round(progress * this._getDistance(monitorData, direction));
else
xPos = -Math.round(progress * this._getDistance(monitorData, direction));
monitorData.container.set_position(xPos, yPos);
}
}
_getDistance(monitorData, direction) {
let info = monitorData.surroundings[direction];
if (!info)
return 0;
switch (direction) {
case Meta.MotionDirection.UP:
return -info.yDest;
case Meta.MotionDirection.DOWN:
return info.yDest;
case Meta.MotionDirection.LEFT:
return -info.xDest;
case Meta.MotionDirection.RIGHT:
return info.xDest;
}
return 0;
}
getProgressRange(monitor) {
let monitorData = null;
for (let data of this._monitors) {
if (data.index === monitor) {
monitorData = data;
break;
}
}
if (!monitorData)
return 0;
let baseDistance;
if (global.workspace_manager.layout_rows !== -1)
baseDistance = Main.layoutManager.monitors[monitor].width;
else
baseDistance = Main.layoutManager.monitors[monitor].height;
let direction = this.directionForProgress(-1);
let distance = this._getDistance(monitorData, direction);
let lower = -distance / baseDistance;
direction = this.directionForProgress(1);
distance = this._getDistance(monitorData, direction);
let upper = distance / baseDistance;
return [lower, upper];
}
});
var WorkspaceAnimationController = class {
constructor() {
this._blockAnimations = false;
this._movingWindow = null;
this._inProgress = false;
this._gestureActivated = false;
this._animation = null;
Main.overview.connect('showing', () => {
if (this._gestureActivated)
this._switchWorkspaceStop();
this._swipeTracker.enabled = false;
});
Main.overview.connect('hiding', () => {
this._swipeTracker.enabled = true;
});
let swipeTracker = new SwipeTracker.SwipeTracker(global.stage,
Shell.ActionMode.NORMAL, { allowDrag: false, allowScroll: false });
swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this));
swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this));
swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this));
this._swipeTracker = swipeTracker;
}
_prepareWorkspaceSwitch(from, to, direction) {
if (this._animation)
return;
this._animation = new WorkspaceAnimation(this, from, to, direction);
}
_finishWorkspaceSwitch() {
if (this._animation)
this._animation.destroy();
this._animation = null;
this._inProgress = false;
this._gestureActivated = false;
this.movingWindow = null;
this._monitor = null;
}
animateSwitchWorkspace(from, to, direction, onComplete) {
this._prepareWorkspaceSwitch(from, to, direction);
this._inProgress = true;
let progress = this._animation.progressForDirection(direction);
this._animation.ease_property('progress', progress, {
duration: WINDOW_ANIMATION_TIME,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
onComplete: () => {
this._finishWorkspaceSwitch();
onComplete();
},
});
}
_switchWorkspaceBegin(tracker, monitor) {
if (Meta.prefs_get_workspaces_only_on_primary() &&
monitor !== Main.layoutManager.primaryIndex)
return;
let workspaceManager = global.workspace_manager;
let horiz = workspaceManager.layout_rows !== -1;
tracker.orientation = horiz
? Clutter.Orientation.HORIZONTAL
: Clutter.Orientation.VERTICAL;
let activeWorkspace = workspaceManager.get_active_workspace();
let baseDistance;
if (horiz)
baseDistance = Main.layoutManager.monitors[monitor].width;
else
baseDistance = Main.layoutManager.monitors[monitor].height;
let progress;
if (this._gestureActivated) {
this._animation.remove_all_transitions();
progress = this._animation.progress;
} else {
this._prepareWorkspaceSwitch(activeWorkspace.index(), -1);
progress = 0;
}
this._monitor = monitor;
let [lower, upper] = this._animation.getProgressRange(monitor);
if (progress < 0)
progress *= -lower;
else if (progress > 0)
progress *= upper;
let points = [];
if (lower !== 0)
points.push(lower);
points.push(0);
if (upper !== 0)
points.push(upper);
tracker.confirmSwipe(baseDistance, points, progress, 0);
}
_switchWorkspaceUpdate(tracker, progress) {
// Translate the progress into [-1;1] range
let [lower, upper] = this._animation.getProgressRange(this._monitor);
if (progress < 0)
progress /= -lower;
else if (progress > 0)
progress /= upper;
this._animation.progress = progress;
}
_switchWorkspaceEnd(tracker, duration, endProgress) {
if (!this._animation)
return;
// Translate the progress into [-1;1] range
endProgress = Math.sign(endProgress);
let workspaceManager = global.workspace_manager;
let activeWorkspace = workspaceManager.get_active_workspace();
let newWs = activeWorkspace;
if (endProgress !== 0) {
let direction = this._animation.directionForProgress(endProgress);
newWs = activeWorkspace.get_neighbor(direction);
}
this._gestureActivated = true;
this._animation.ease_property('progress', endProgress, {
duration,
mode: Clutter.AnimationMode.EASE_OUT_CUBIC,
onComplete: () => {
if (newWs !== activeWorkspace)
newWs.activate(global.get_current_time());
this._finishWorkspaceSwitch();
},
});
}
_switchWorkspaceStop() {
this._animation.progress = 0;
this._finishWorkspaceSwitch();
}
isAnimating() {
return this._animation !== null;
}
canCancelGesture() {
return this.isAnimating() && this._gestureActivated;
}
set movingWindow(movingWindow) {
this._movingWindow = movingWindow;
}
get movingWindow() {
return this._movingWindow;
}
};

753
po/da.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:"

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"

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"

269
po/ja.po
View File

@@ -16,8 +16,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/gnome-shell/issues\n"
"POT-Creation-Date: 2020-02-17 22:27+0000\n"
"PO-Revision-Date: 2020-02-19 01:00+0900\n"
"POT-Creation-Date: 2020-02-21 17:52+0000\n"
"PO-Revision-Date: 2020-02-22 07:00+0900\n"
"Last-Translator: sicklylife <translation@sicklylife.jp>\n"
"Language-Team: Japanese <gnome-translation@gnome.gr.jp>\n"
"Language: ja\n"
@@ -44,7 +44,7 @@ msgstr "アクティビティ画面を表示する"
#: data/50-gnome-shell-system.xml:18
msgid "Show all applications"
msgstr "すべてのアプリケーションを表示"
msgstr "すべてのアプリケーションを表示する"
#: data/50-gnome-shell-system.xml:21
msgid "Open the application menu"
@@ -440,7 +440,7 @@ msgstr ""
#: js/extensionPrefs/main.js:219
msgid "Manage your GNOME Extensions"
msgstr "GNOME Shell 拡張機能を管理します"
msgstr "GNOME 拡張機能を管理します"
#: js/extensionPrefs/main.js:261 js/extensionPrefs/ui/extensions-window.ui:222
msgid "Somethings gone wrong"
@@ -475,7 +475,7 @@ 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[0] "%d 個の拡張機能次回ログイン時に更新ます。"
#: js/extensionPrefs/ui/extension-row.ui:100
#: subprojects/extensions-tool/src/command-create.c:211
@@ -527,8 +527,8 @@ msgid ""
"extensions."
msgstr ""
"拡張機能は、システムに何らかの問題 (パフォーマンスへの影響を含む) を引き起こ"
"す可能性があります。システムに問題が発生した場合、すべての拡張機能を無効に"
"ることをお勧めします。"
"す可能性があります。システムに問題が発生した場合、すべての拡張機能を無効に"
"ることをお勧めします。"
#: js/extensionPrefs/ui/extensions-window.ui:133
msgid "Manually Installed"
@@ -555,7 +555,7 @@ msgid "Log Out…"
msgstr "ログアウト…"
#. Cisco LEAP
#: js/gdm/authPrompt.js:235 js/ui/components/networkAgent.js:202
#: 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
@@ -653,7 +653,7 @@ msgstr "suspend;sleep;サスペンド;スリープ"
#: js/misc/systemActions.js:121
msgctxt "search-result"
msgid "Switch User"
msgstr "ユーザー切り替え"
msgstr "ユーザー切り替え"
#. Translators: A list of keywords that match the switch user action, separated by semicolons
#: js/misc/systemActions.js:124
@@ -677,13 +677,13 @@ msgstr "画面の回転をロック"
#: js/misc/util.js:120
msgid "Command not found"
msgstr "コマンドが見つかりません"
msgstr "コマンドが見つかりませんでした"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: js/misc/util.js:156
msgid "Could not parse command:"
msgstr "次のコマンド解析できません:"
msgstr "コマンド解析できませんでした:"
#: js/misc/util.js:164
#, javascript-format
@@ -846,29 +846,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
@@ -882,7 +882,7 @@ msgstr "%s をお気に入りから削除しました。"
#: js/ui/audioDeviceSelection.js:41
msgid "Select Audio Device"
msgstr "オーディオデバイス選択"
msgstr "オーディオデバイス選択"
#: js/ui/audioDeviceSelection.js:54
msgid "Sound Settings"
@@ -902,7 +902,7 @@ msgstr "マイク"
#: js/ui/backgroundMenu.js:14
msgid "Change Background…"
msgstr "背景変更…"
msgstr "背景変更…"
#: js/ui/backgroundMenu.js:16 js/ui/status/nightLight.js:45
msgid "Display Settings"
@@ -964,6 +964,8 @@ msgctxt "grid saturday"
msgid "S"
msgstr "土"
# %OB は February、%Ob は Feb のように月名が表示される
# 日本語環境だと %OB は 「2月」 %Ob は 「 2月」 (半角スペース付き) のように表示される?
#. *
#. * Translators: The header displaying just the month name
#. * standalone, when this is a month of the current year.
@@ -972,7 +974,7 @@ msgstr "土"
#.
#: js/ui/calendar.js:371
msgid "%OB"
msgstr ""
msgstr "%B"
#. *
#. * Translators: The header displaying the month name and the year
@@ -985,7 +987,7 @@ msgstr ""
#.
#: js/ui/calendar.js:381
msgid "%OB %Y"
msgstr ""
msgstr "%Y年%B"
#: js/ui/calendar.js:440
msgid "Previous month"
@@ -1035,7 +1037,7 @@ msgstr "イベントなし"
#: js/ui/calendar.js:1153
msgid "Do Not Disturb"
msgstr ""
msgstr "通知をポップアップしない"
#: js/ui/calendar.js:1167
msgid "Clear"
@@ -1100,11 +1102,11 @@ msgstr "キー"
#: js/ui/components/networkAgent.js:246 js/ui/components/networkAgent.js:269
msgid "Private key password"
msgstr "プライベートキーパスワード"
msgstr "秘密鍵のパスワード"
#: js/ui/components/networkAgent.js:267
msgid "Identity"
msgstr "識別子"
msgstr "Identity"
#: js/ui/components/networkAgent.js:281
msgid "Service"
@@ -1242,7 +1244,7 @@ msgstr "読み込み中…"
#: js/ui/dateMenu.js:414
msgid "Go online for weather information"
msgstr "気象情報取得のためにネットワークに接続する"
msgstr "気象情報取得のためにネットワークに接続してください"
#: js/ui/dateMenu.js:416
msgid "Weather information is currently unavailable"
@@ -1284,7 +1286,7 @@ msgstr "電源オフ"
#: js/ui/endSessionDialog.js:57
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "更新をインストールして電源オフ"
msgstr "アップデートをインストールして電源オフ"
#: js/ui/endSessionDialog.js:59
#, javascript-format
@@ -1295,7 +1297,7 @@ msgstr[0] "%d 秒後に自動的にシステムの電源を切ります。"
#: js/ui/endSessionDialog.js:63
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "未実行のソフトウェアアップデートをインストールする"
msgstr "保留中のソフトウェアアップデートをインストールする"
#: js/ui/endSessionDialog.js:66 js/ui/endSessionDialog.js:82
msgctxt "button"
@@ -1321,14 +1323,14 @@ msgstr[0] "%d 秒後にシステムを再起動します。"
#: js/ui/endSessionDialog.js:89
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "再起動して更新をインストール"
msgstr "再起動してアップデートをインストール"
#: js/ui/endSessionDialog.js:91
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] "%d 秒後にシステムを再起動して更新をインストールします。"
msgstr[0] "%d 秒後にシステムを再起動してアップデートをインストールします。"
#: js/ui/endSessionDialog.js:97 js/ui/endSessionDialog.js:116
msgctxt "button"
@@ -1343,7 +1345,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,7 +1368,8 @@ msgstr ""
#: js/ui/endSessionDialog.js:259
msgid "Running on battery power: Please plug in before installing updates."
msgstr ""
"バッテリーで動作中です: 更新をインストールする前に電源に接続してください。"
"バッテリーで動作中です: アップデートをインストールする前に電源に接続してくだ"
"さい。"
#: js/ui/endSessionDialog.js:268
msgid "Some applications are busy or have unsaved work"
@@ -1475,8 +1478,8 @@ msgid ""
"row. This turns off the Sticky Keys feature, which affects the way your "
"keyboard works."
msgstr ""
"同時に 2 つのキーを押下したか、あるいは [SHIFT] キーを連続して 5 回押下しまし"
"た。これは固定キー機能を無効にし、キーボード操作に影響を与えるものです。"
"同時に 2 つのキーを押下したか、[SHIFT] キーを連続して 5 回押下しました。これ"
"は固定キー機能を無効にし、キーボード操作に影響を与えるものです。"
#: js/ui/kbdA11yDialog.js:55
msgid "Leave On"
@@ -1503,59 +1506,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 "ソース表示"
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."
@@ -1563,11 +1566,11 @@ 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 "画面ロックには GNOME ディスプレイマネージャーが必要です。"
@@ -1599,7 +1602,7 @@ msgstr "アクティビティ画面"
#. characters.
#: js/ui/overview.js:107
msgid "Type to search"
msgstr "検索ワードを入力"
msgstr "検索ワードを入力"
#: js/ui/padOsd.js:95
msgid "New shortcut…"
@@ -1615,11 +1618,11 @@ msgstr "オンスクリーンヘルプを表示"
#: js/ui/padOsd.js:144
msgid "Switch monitor"
msgstr "モニター切り替え"
msgstr "モニター切り替え"
#: js/ui/padOsd.js:145
msgid "Assign keystroke"
msgstr "キーストローク割り当て"
msgstr "キーストローク割り当て"
#: js/ui/padOsd.js:211
msgid "Done"
@@ -1760,7 +1763,7 @@ msgstr "PIM 数値"
#: js/ui/shellMountOperation.js:365
msgid "Remember Password"
msgstr "パスワードを保存"
msgstr "パスワードを保存する"
#: js/ui/shellMountOperation.js:380
msgid "Unlock"
@@ -1879,13 +1882,13 @@ 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 "キーボードレイアウト表示"
msgstr "キーボードレイアウト表示"
#: js/ui/status/location.js:65 js/ui/status/location.js:174
msgid "Location Enabled"
@@ -2019,7 +2022,7 @@ msgstr "機内モードオン"
#: js/ui/status/network.js:809
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "機内モードがオンになっているとWi-Fiは無効になります"
msgstr "機内モードがオンになっていると Wi-Fi は無効になります"
#: js/ui/status/network.js:810
msgid "Turn Off Airplane Mode"
@@ -2154,7 +2157,7 @@ msgstr "充電完了"
#: js/ui/status/power.js:69
msgid "Not Charging"
msgstr "放電中"
msgstr "充電していません"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
@@ -2208,7 +2211,7 @@ msgstr "ログアウト"
#: js/ui/status/system.js:131
msgid "Switch User…"
msgstr "ユーザー切り替え…"
msgstr "ユーザー切り替え…"
#: js/ui/status/system.js:145
msgid "Suspend"
@@ -2290,19 +2293,19 @@ msgstr "組み込みのみ"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%B%-e日 (%a)"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "ロック解除は上にスワイプしてください"
#: js/ui/unlockDialog.js:379
#: js/ui/unlockDialog.js:377
msgid "Click or press a key to unlock"
msgstr "ロック解除はキーを押すかクリックしてください"
#: js/ui/unlockDialog.js:552
#: js/ui/unlockDialog.js:550
msgid "Unlock Window"
msgstr "ロック解除"
@@ -2366,7 +2369,7 @@ msgstr "移動"
#: js/ui/windowMenu.js:51
msgid "Resize"
msgstr "サイズ変更"
msgstr "サイズ変更"
#: js/ui/windowMenu.js:58
msgid "Move Titlebar Onscreen"
@@ -2786,28 +2789,6 @@ msgstr[0] "入力数: %u"
msgid "System Sounds"
msgstr "システムのサウンド"
#~ msgid "Username…"
#~ msgstr "ユーザー名…"
#~ msgid "Password: "
#~ msgstr "パスワード: "
#~ msgid "Enter Password…"
#~ msgstr "パスワードを入力…"
#~ msgid "Next"
#~ msgstr "次へ"
#~ msgctxt "button"
#~ msgid "Sign In"
#~ msgstr "サインイン"
#~ msgid "Log in as another user"
#~ msgstr "他のユーザーでログイン"
#~ msgid "%A, %B %d"
#~ msgstr "%B%-e日 (%a)"
#~ msgid "%d new message"
#~ msgid_plural "%d new messages"
#~ msgstr[0] "%d 件の新しいメッセージ"
@@ -2816,107 +2797,15 @@ msgstr "システムのサウンド"
#~ msgid_plural "%d new notifications"
#~ msgstr[0] "%d 件の新しい通知"
#~ msgid "Browse in Software"
#~ msgstr "“ソフトウェア”で参照"
#~ msgctxt "search-result"
#~ msgid "Lock Orientation"
#~ msgstr "画面回転ロック"
#~ msgid "Password:"
#~ msgstr "パスワード:"
#~ msgid "Type again:"
#~ msgstr "再入力:"
#~ msgid "Authentication required by wireless network"
#~ msgstr "無線ネットワークでは認証が要求されます"
#~ msgid "Mobile broadband network password"
#~ msgstr "モバイルブロードバンドネットワークのパスワード"
#~ msgid "Rename"
#~ msgstr "名前の変更"
#~ msgid "Account Settings"
#~ msgstr "アカウント設定"
#~ msgid "Orientation Lock"
#~ msgstr "画面回転ロック"
#~ msgid ""
#~ "Keybinding that pauses and resumes all running tweens, for debugging "
#~ "purposes"
#~ msgstr ""
#~ "Tween の一時停止および再開を行うキーバインドです。デバッグ用途で使用しま"
#~ "す。"
#~ msgid "Which keyboard to use"
#~ msgstr "使いたいキーボードの種類"
#~ msgid "The type of keyboard to use."
#~ msgstr "使いたいキーボードの種類です。"
#~ msgid "network-workgroup"
#~ msgstr "network-workgroup"
#~ msgid "toggle-switch-us"
#~ msgstr "toggle-switch-us"
#~ msgid "evolution"
#~ msgstr "evolution"
#~ msgid "There was an error loading the preferences dialog for %s:"
#~ msgstr "%s の設定ダイアログのロード中にエラーが発生しました。"
#~ msgid "%s all day."
#~ msgstr "終日 %s。"
#~ msgid "%s, then %s later."
#~ msgstr "%s → %s。"
#~ msgid "%s, then %s, followed by %s later."
#~ msgstr "%s → %s → %s。"
#~ msgid "Feels like %s."
#~ msgstr "体感温度 %s。"
#~ msgctxt "search-result"
#~ msgid "Power off"
#~ msgstr "電源オフ"
#~ msgctxt "search-result"
#~ msgid "Log out"
#~ msgstr "ログアウト"
#~ msgctxt "search-result"
#~ msgid "Switch user"
#~ msgstr "ユーザー切り替え"
#~ msgid "Hide tray"
#~ msgstr "トレイを非表示"
#~ msgid "Status Icons"
#~ msgstr "ステータスアイコン"
#~ msgid "Web Authentication Redirect"
#~ msgstr "Web 認証リダイレクト"
#~ msgid "Events"
#~ msgstr "イベント"
#~ msgid "Notifications"
#~ msgstr "通知"
#~ msgid "Clear section"
#~ msgstr "セクションをクリアする"
#~ msgid "Media"
#~ msgstr "メディア"
#~ msgid "%d x %d"
#~ msgstr "%d x %d"
#~ msgid "Show the week date in the calendar"
#~ msgstr "暦週日付を表示"
@@ -2925,25 +2814,3 @@ msgstr "システムのサウンド"
#~ msgid "Not In Use"
#~ msgstr "未使用"
#~ msgid "Use as Internet connection"
#~ msgstr "インターネット接続に使用"
#~ msgid "%s is requesting access to your location."
#~ msgstr "%s があなたの現在地情報へのアクセスを要求しています。"
#~ msgid "GNOME Shell (wayland compositor)"
#~ msgstr "GNOME Shell (Wayland コンポジター)"
#~ msgid "%d Connected Device"
#~ msgid_plural "%d Connected Devices"
#~ msgstr[0] "接続デバイス: %d台"
#~ msgid "UPS"
#~ msgstr "UPS"
#~ msgid "Battery"
#~ msgstr "バッテリー"
#~ msgid "Airplane Mode"
#~ msgstr "機内モード"

1631
po/ko.po

File diff suppressed because it is too large Load Diff

661
po/mjw.po

File diff suppressed because it is too large Load Diff

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"

View File

@@ -17,7 +17,7 @@ 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-18 07:23+0000\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"
@@ -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: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 "İptal"
@@ -560,7 +560,7 @@ msgid "Log Out…"
msgstr "Oturumu Kapat…"
#. 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
@@ -850,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"
@@ -1511,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."
@@ -1571,11 +1571,11 @@ 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."
@@ -1887,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"
@@ -2298,22 +2298,26 @@ msgstr "Yalnızca İç"
#. Translators: This is a time format for a date in
#. long format
#: js/ui/unlockDialog.js:372
#: js/ui/unlockDialog.js:370
msgid "%A %B %-d"
msgstr "%A %-d %B"
#: js/ui/unlockDialog.js:378
#: js/ui/unlockDialog.js:376
msgid "Swipe up to unlock"
msgstr "Kilidi açmak için yukarı kaydır"
#: js/ui/unlockDialog.js:379
#: 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:552
#: 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"
@@ -2816,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"

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

@@ -183,7 +183,8 @@ st_texture_cache_init (StTextureCache *self)
g_str_equal,
g_free,
(GDestroyNotify) cairo_surface_destroy);
self->priv->used_scales = g_hash_table_new (g_double_hash, g_double_equal);
self->priv->used_scales = g_hash_table_new_full (g_double_hash, g_double_equal,
g_free, NULL);
self->priv->outstanding_requests = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, NULL);
self->priv->file_monitors = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal,
@@ -1082,6 +1083,21 @@ hash_table_remove_with_scales (GHashTable *hash,
}
}
static void
hash_table_insert_scale (GHashTable *hash,
double scale)
{
double *saved_scale;
if (g_hash_table_contains (hash, &scale))
return;
saved_scale = g_new (double, 1);
*saved_scale = scale;
g_hash_table_add (hash, saved_scale);
}
static void
file_changed_cb (GFileMonitor *monitor,
GFile *file,
@@ -1443,9 +1459,8 @@ st_texture_cache_load_file_sync_to_cogl_texture (StTextureCache *cache,
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
{
double resource_scale_double = resource_scale;
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), image);
g_hash_table_insert (cache->priv->used_scales, &resource_scale_double, &resource_scale_double);
hash_table_insert_scale (cache->priv->used_scales, (double)resource_scale);
}
}
@@ -1492,11 +1507,10 @@ st_texture_cache_load_file_sync_to_cairo_surface (StTextureCache *cache,
if (policy == ST_TEXTURE_CACHE_POLICY_FOREVER)
{
double resource_scale_double = resource_scale;
cairo_surface_reference (surface);
g_hash_table_insert (cache->priv->keyed_surface_cache,
g_strdup (key), surface);
g_hash_table_insert (cache->priv->used_scales, &resource_scale_double, &resource_scale_double);
hash_table_insert_scale (cache->priv->used_scales, (double)resource_scale);
}
}
else

View File

@@ -141,6 +141,7 @@ static gboolean st_widget_real_navigate_focus (StWidget *widget,
StDirectionType direction);
static AtkObject * st_widget_get_accessible (ClutterActor *actor);
static gboolean st_widget_has_accessible (ClutterActor *actor);
static void
st_widget_set_property (GObject *gobject,
@@ -846,6 +847,7 @@ st_widget_class_init (StWidgetClass *klass)
actor_class->key_press_event = st_widget_key_press_event;
actor_class->get_accessible = st_widget_get_accessible;
actor_class->has_accessible = st_widget_has_accessible;
klass->style_changed = st_widget_real_style_changed;
klass->navigate_focus = st_widget_real_navigate_focus;
@@ -2650,6 +2652,20 @@ struct _StWidgetAccessiblePrivate
G_DEFINE_TYPE_WITH_PRIVATE (StWidgetAccessible, st_widget_accessible, CALLY_TYPE_ACTOR)
static gboolean
st_widget_has_accessible (ClutterActor *actor)
{
StWidget *widget;
StWidgetPrivate *priv;
g_return_val_if_fail (ST_IS_WIDGET (actor), FALSE);
widget = ST_WIDGET (actor);
priv = st_widget_get_instance_private (widget);
return priv->accessible != NULL;
}
static AtkObject *
st_widget_get_accessible (ClutterActor *actor)
{