Compare commits

...

153 Commits

Author SHA1 Message Date
906106c700 Bump version to 3.15.3
Update NEWS.
2014-12-19 11:48:00 +01:00
0257a23c31 windowManager: Update stacking during workspace switches
When animating workspace switches, windows on the old and new workspaces
are temporarily reparented. If windows are restacked, those windows will
thus be ignored by mutter until meta_switch_workspace_completed() resyncs
the stacking at the end of the animation.
As a result, activating a window on another workspace that is not on top
of the stack is very noticeably a two-step operation of switching workspace
and raising the window. There is a technical reason for that order[0], but
we can avoid the visible disruption by manually syncing the stack during
the switch operation.

[0] https://git.gnome.org/browse/mutter/tree/src/core/workspace.c#n590

https://bugzilla.gnome.org/show_bug.cgi?id=741680
2014-12-19 11:39:50 +01:00
e0eebc90e0 Rename KeyBindingMode to ActionMode
The keybinding mode is no longer used exclusively for actions triggered
by keybindings, so reflect this by a more generic name.

https://bugzilla.gnome.org/show_bug.cgi?id=740237
2014-12-19 11:39:50 +01:00
ddeac2386f gestures: Restrict actions based on keybindingMode
Just like keybindings and the message tray pointer barrier, gestures
don't always make sense - for instance, swiping up the screen shield
should not trigger the message tray just as the SelectArea action around
the left edge should not open the overview.
To avoid this, restrict gestures based on the current keybinding mode.

https://bugzilla.gnome.org/show_bug.cgi?id=740237
2014-12-19 11:39:50 +01:00
7b9be2188a loginDialog: use two column view if banner message long
Frequently banner messages are longer than can reasonable
fit in a one column view, which leads to a smooshed layout.

This commit changes the layout to a two column view, with the
banner on the left and the prompt on the right, if the banner
message is long enough that it can't fit well above the prompt.
If there isn't enough space for two columns then we keep the
one column layout but add scrollbars.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:10 -05:00
117a81e06f loginDialog: display banner message when disable-user-list=true
The login screen supports showing a banner message which admins
can use to mention login rules or disclaimers.

This message only shows up currently if the user list is enabled.
Most people who want to show a banner message also want to disable
the user list.

This commit moves the banner message to display when the user is
prompted for login credentials instead of when showing the user
list. It also adds a scrollbar if the message is too long.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:09 -05:00
522fe8e8bf loginDialog: allocate children manually
The login screen is pretty custom full screen container and the standard
layout managers aren't really a good fit for the kind of layout that's
happening. This will be even more problematic with upcoming changes
to login banners, so we need to switch techniques.

This commit moves login dialog over to using a custom allocate handler
that has specific domain knowledge of the parts of the login screen
and where they go.

https://bugzilla.gnome.org/show_bug.cgi?id=703972
2014-12-18 13:58:09 -05:00
73480255b1 Updated Kazakh translation 2014-12-18 00:40:51 +00:00
09d3f8eb71 Updated Basque language 2014-12-17 16:31:51 +01:00
0592adead5 Calendar: ignore timeouts starting the calendar-server
In certain cases the timeout for starting the calendar helper can
be reached but the calendar helper still loads fine. If so, just
ignore the timeout and wait until we get a notification from
dbus of the successful start.

https://bugzilla.gnome.org/show_bug.cgi?id=735308
2014-12-14 17:18:16 -08:00
b21f5c5566 calendar-server: activate evolution-source-registry manually at startup
g_dbus_proxy_new() (and library calls that wrap it) has an hardcoded
timeout of 25 seconds, which is insufficient for starting up e-s-r
in certain setups. Avoid a timeout error by starting the service
manually with a longer timeout before hand.
Also demote the error to a warning + exit failure instead of
a crash, to avoid triggering abrt reports.

https://bugzilla.gnome.org/show_bug.cgi?id=735308
2014-12-14 17:18:16 -08:00
7602260462 Updated Kazakh translation 2014-12-14 14:08:39 +00:00
0448effd82 Updated Turkish translation 2014-12-13 17:46:23 +00:00
90dedccc87 Updated Swedish translation 2014-12-11 19:06:46 +00:00
b29e8a1a3d Fix typo 2014-12-11 15:48:51 +01:00
9689a9ba8b Updated Hungarian translation 2014-11-30 15:31:24 +00:00
4eb0a672db theme: Add high-contrast variant
For now, simply enforce symbolic icons.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
cad56c871a app: Respect icon-style for faded icon texture
Just like regular application icons, the faded icon texture used
in the app menu should follow the theme's icon style setting.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
0acc7ed4c2 app: Use StIcon as icon_texture when loading from a GIcon
Themes - namely the HighContrast one - may now request symbolic
icons rather than fullcolor ones. In order to have recoloring
work as expected in that case, we will need a theme node to pick
up colors from - using an StIcon instead of manually loading a
texture from the cache gives us that for free, so do that.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
2940ef07e9 st-theme-node: Add support for -st-icon-style property
GTK+ added support for a -gtk-icon-style property in themes to
enforce a particular icon style. Do the same for shell themes
with an -st-icon-style property, with the same set of possible
values as the GTK+ variant:
  'requested' - use symbolic or fullcolor icon depending on the
                icon name (default)
  'regular'   - enforce fullcolor icons
  'symbolic'  - enforce symbolic icons

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
deddac8748 st-texture-cache: Remove load_gicon_with_colors()
The split between st_texture_cache_load_gicon() and load_gicon_with_colors()
no longer makes any sense, so just move the code into the public method.

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
f4cc3327e8 main: Add support for -high-contrast theme variants
While the default Shell style is fairly decent with regard to
accessibility requirements, having the ability to tweak certain
aspects where the regular style works less well is still useful.
For this purpose, try to load a -high-contrast theme variant of
the default stylesheet when a high-contrast theme is requested
(as determined by the GTK+ theme name).

https://bugzilla.gnome.org/show_bug.cgi?id=740447
2014-11-29 18:13:03 +01:00
977448b6bc overview: Set _shown before calling _animateNotVisible
_hideDone checks _shown to determine if anything has shown the overview
while we hid it, and if so, shows the overview forward just in case.

In a local patch that called _hideDone immediately inside _hide for
testing, this broke. While we don't actually depend on this anywhere,
it doesn't hurt so that the next person to hack this up (perhaps me!)
doesn't get stuck debugging it for 20 minutes.
2014-11-27 14:28:32 -08:00
d69eceab3b Update .gitignore 2014-11-27 21:00:51 +01:00
ed7649c93a main: Fix unsetting of custom stylesheets
Since moving to a GFile based API in commit 642bf2b778,
setThemeStylesheet() no longer accepts %null to revert to
the default theme. We should have some way to revert to the
default and the least intrusive option is to return to the
old behavior, so do that.
2014-11-27 14:43:21 +00:00
af6ed9e02a main: Update doc comment 2014-11-27 14:43:21 +00:00
983314333f Bump version to 3.15.2
Update NEWS.
2014-11-27 14:05:26 +00:00
26389f92f5 build: Add org.gtk.Application.xml to distfiles 2014-11-27 14:05:26 +00:00
1e8e5d4671 calendar: Stop computing week number ourselves
Correctly computing the ISO week number is tricky and we already
have code in the platform to do it, so just refer its computation
to GDateTime rather than doing it ourselves.

https://bugzilla.gnome.org/show_bug.cgi?id=736722
2014-11-27 13:30:20 +00:00
31d375093e switcher: Remove some unused variables 2014-11-27 13:30:20 +00:00
546ae00854 Add busy property to ShellApp
Using a separate property to show when the application is busy rather
than cramming it into the state property makes the code clearer. In most
places we only care if an app is running or not, not whether it is
actually busy.

https://bugzilla.gnome.org/show_bug.cgi?id=736492
2014-11-27 10:59:55 +00:00
e00bfcc2cf Use org.gtk.Application proxy to monitor app's busy state
This simplifies the code and fixes a race where an application could
call g_application_mark_busy() before the shell subscribed to change
notifications on the application's busy state.

https://bugzilla.gnome.org/show_bug.cgi?id=736492
2014-11-27 10:59:55 +00:00
943f6c9d28 Generate GDBus proxy object for org.gtk.Application
Having a proxy object will make it easier to monitor the application's
busy state.

This adds a dependency on gdbus-codegen

https://bugzilla.gnome.org/show_bug.cgi?id=736492
2014-11-27 10:59:55 +00:00
dbf16d6ea3 shell-gtk-embed: Remove old hack workaround for a mutter bug
The window actor shouldn't have been picked since it has an empty
input shape, but bugs in mutter weren't properly interpreting that.

Since the Wayland restructure, the MetaWindowActor isn't actually
reactive anymore, it's the MetaSurfaceActorX11, so this code isn't
doing anything.
2014-11-26 12:54:37 -08:00
77b0c07410 Updated Czech translation 2014-11-26 12:06:33 +01:00
e36eb02ab0 Updated Hebrew translation 2014-11-24 20:04:18 +02:00
2935fd4ffe St: support css margin property
It's implemented similar to the padding property, but instead of taking
into account the margin values at drawing time in node-drawing, we set
the clutter actor margins in StWidget when the style is computed.

In the case that a CSS margin is not specified, we don't to set a value
of 0 to the clutter actor margin. In this manner it allows to use
Clutter margin values set in the code. However, the margins that are set
both in the code and in the CSS on the same side, the result is
unpredictable.

We avoid to set the clutter actor margin values to 0 if there's no CSS
margin values defined, so we still allow clutter actors to use margin
set in the code.

https://bugzilla.gnome.org/show_bug.cgi?id=728437
2014-11-19 16:42:25 +01:00
5961f162fa gdm: fix sensitivity of auth prompt when cancelling early and user list is disabled
If the user list is disabled and the user clicks cancel quickly enough
after typing their username, they can get in a state where the
auth prompt gets stuck in the insensitive state.

This is because the login dialog code makes the prompt insensitive
while while pam is processing the provided username, but the prompt
only makes itself sensitive again when it is hidden.

This commit makes it sensitive right before asking for a username again.

https://bugzilla.gnome.org/show_bug.cgi?id=740141
2014-11-17 12:11:03 -05:00
5d440fa8d9 gdm: disallow cancel after verification succeeds
Once verification has succeeded, the train's already
left the building and we shouldn't allow canceling.

This commit renders the cancel button non-reactive
and makes the cancel function be a noop after
verification succeeds.

https://bugzilla.gnome.org/show_bug.cgi?id=740141
2014-11-17 12:11:02 -05:00
3d4408dce8 network: properly remove connections from list
Due to a typo we were always removing the first (index 0) connection
from the global list of connections instead of the correct one.

This resulted in some connections remaining in the shell's connection
list long after they were removed.  In particular, this resulted in
multiple copies of a bluetooth connection appearing after suspend/resume
(when the device was readded and the cached connection list was
rescanned).

https://bugzilla.gnome.org/show_bug.cgi?id=740227
2014-11-16 15:53:54 -08:00
ea707dcd75 Added Norwegian bokmål translation from Åka Sikrom. 2014-11-16 12:29:57 +01:00
196429a18f Updated Korean translation 2014-11-16 03:55:45 +09:00
487b5cd0a9 Update Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2014-11-14 14:19:17 +07:00
891f30ff63 shellDBus: Emit a PropertyChanged for OverviewActive
I was going to add another DBus property to signal when the shell was
done loading and was idle, and while implementing that I noticed we
aren't emitting PropertyChanged for, well, any property.  Let's fix
OverviewActive.

It's unfortunate it's so tedious to correctly implement a DBus
property =/

https://bugzilla.gnome.org/show_bug.cgi?id=704163
2014-11-13 18:17:57 +00:00
45e42d7b9e shellDBus: don't consider a zero-index monitor invalid
Currently, shellDBus only uses the passed in monitor index if it's
strictly > 0. A zero-index monitor is a valid one though, so don't
restrict this to strictly positive indices.

https://bugzilla.gnome.org/show_bug.cgi?id=740074
2014-11-13 10:05:59 -08:00
facaea6850 environment: Define N_() globally
Commit 1291bcd0c8 implemented it for dateMenu, but the function
is already used in screenShield as well. Just add it globally as
we do for other standard gettext "macros".
2014-11-13 12:26:33 +00:00
e467a734a1 ibusManager: Preload all ibus input sources in user configuration
Normally users switch xkb input sources and ibus input sources.
But currently the first input source only is running. It's also good
to preload all ibus engines in the logging session so that users switch
input sources quickly without the launching time of input sources.

The following is the ibus change:
https://github.com/ibus/ibus/commit/cff35929a9

https://bugzilla.gnome.org/show_bug.cgi?id=695428
2014-11-12 21:07:19 +01:00
050378743e viewSelector: Hide workspace page after animating to app picker
WorkspacesDisplay relies on being hidden to disable workspace switches
by scrolling or panning. Usually viewSelector will hide the previous
page on page switch, but we currently miss the case when opening the
overview at the app picker, where the workspaces page is still shown
for the transition, but never hidden.
Fix this by calling hide() in addition to setting the opacity to 0 at
the end of the overview animation.

https://bugzilla.gnome.org/show_bug.cgi?id=737534
2014-11-12 20:03:59 +01:00
25bf2ff87a Updated Spanish translation 2014-11-12 13:20:37 +01:00
551b96d79f Set style classes for extension download dialog
So that the layout is correct.

https://bugzilla.gnome.org/show_bug.cgi?id=739888
2014-11-10 18:58:12 -05:00
1291bcd0c8 dateMenu: Fix commit 52503c4c
dateMenu uses now N_() but the function is not defined.

To solve it, define N_().
2014-11-10 16:45:10 +01:00
73362beb0b screenShield: Don't lock after crash if locking is disabled
When the user has disabled locking we shouldn't lock the screen.

https://bugzilla.gnome.org/show_bug.cgi?id=704884
2014-11-09 18:32:05 +01:00
52503c4c38 js: Fix util_translate_time_string() usage
util_translate_time_string() was called to use LC_TIME to translate
strings, but those strings were not marked as to be translated.

https://bugzilla.gnome.org/show_bug.cgi?id=739822
2014-11-08 21:55:16 +01:00
219b0bf987 Update Aragonese translation 2014-11-08 19:15:27 +01:00
cbfd6a8128 keyboard: Delay caribou daemon invocation until really needed
Calling g_dbus_proxy_new without any flag means that the caribou
daemon will be launched through D-Bus activation, when creating
a proxy.  It smoked out some corner cases in caribou and at-spi2-core,
but generally it would be good to avoid creating unused process.

This patch delays the invocation until the "Run" method is called.

https://bugzilla.gnome.org/show_bug.cgi?id=739712
2014-11-08 06:49:17 +09:00
21d11b3638 calendar: Allow translators to change non-work days
https://bugzilla.gnome.org/show_bug.cgi?id=664645
2014-11-07 18:21:10 +01:00
455595f2b2 Revert "Calendar: Remove leading zeros for 24h time format"
Leading zeros are common in the 24h format, and indeed used in the
wallclock in the top bar. Convention and consistency within the
same clock format trumps inconsistency between different time formats,
so reverting commit 316f825b2a.

https://bugzilla.gnome.org/show_bug.cgi?id=658675
2014-11-07 15:16:07 +00:00
316f825b2a Calendar: Remove leading zeros for 24h time format
https://bugzilla.gnome.org/show_bug.cgi?id=658675
2014-11-07 14:58:22 +01:00
35fcd16992 dateMenu: Allow extensions to add custom calendar sources
Splits instantiation of the event source into a separate method,
allowing extensions to subclass the DateMenuButton and provide its
own calendar source.

https://bugzilla.gnome.org/show_bug.cgi?id=672500
2014-11-07 14:49:38 +01:00
084f7a36b1 rfkill: hide Airplane Mode indicator when g-s-d says so
https://bugzilla.gnome.org/show_bug.cgi?id=736292
2014-11-07 10:29:13 +01:00
1fe3ab8f68 rfkill: remove unused code
https://bugzilla.gnome.org/show_bug.cgi?id=736292
2014-11-07 10:29:13 +01:00
be3c3c64c1 Port gnome-shell to Python 3
https://bugzilla.gnome.org/show_bug.cgi?id=732478
2014-11-07 10:18:58 +01:00
568454abb8 screenShield: Recognise all Enter keys as Return
Bug #704339.
2014-11-07 10:14:17 +01:00
5014434b9a st-button: Recognise all Enter keys as Return
Bug #704339.
2014-11-07 10:14:11 +01:00
b05ab0eaeb build: Workaround quoting issues in configure script
Default value of BROWSER_PLUGIN_DIR variable contains special symbols.
Thus quoting and inlining it in parameter expansion is not portable.
In particular it does not work in dash. Replace ${a:-b} parameter
expansion with conditional statement.

https://bugzilla.gnome.org/show_bug.cgi?id=739241
2014-11-07 10:10:41 +01:00
e402ed1fe4 portalHelper: Change user facing name to "Network Login"
"Captive Portal" is a bit confusing for people who are not familiar
with the technical term.

https://bugzilla.gnome.org/show_bug.cgi?id=737198
2014-11-07 10:09:12 +01:00
4801d1dd7f css: Add an inset shadow to overview windows
A small dark gap was caused by the rounded window edges not meeting the
sharp corner of the CSS border on hover. By adding a small inset
box-shadow, this gap is filled in.

https://bugzilla.gnome.org/show_bug.cgi?id=699044
2014-11-07 10:08:29 +01:00
24c0a1a1d4 Move style updates in AppIcon._onStateChanged out
There is currently no simple way to inject into AppIcon's state change,
so an extension that wants to do this has to destroy/remove/update all
icons in the Shell (i.e. in the Dash, AllView, FrequentView) on enable()
and disable() after updating AppIcon.prototype._onStateChange, or the
extension must require a restart of the Shell.

To solve this issue, we rename _onStateChanged to _updateRunningStyle,
and connect the notify::state signal with an anonymous function that
calls _updateRunningStyle.
This extra function call should allow extensions to just extend the
updateRunningStyle function in the prototype.

https://bugzilla.gnome.org/show_bug.cgi?id=739497
2014-11-06 21:22:33 +01:00
4a1f939e2b Update Aragonese translation 2014-11-06 21:06:03 +01:00
111a9e13f2 dateMenu: Fix typo in _isToday()
getDay() is the day of week, what we want there is getDate().

https://bugzilla.gnome.org/show_bug.cgi?id=738725
2014-11-03 15:03:54 +01:00
926f76635e build: Bump GTK+ requirement
GTK_POLICY_EXTERNAL requires at least 3.15.0
2014-10-30 14:28:30 +00:00
72a43a6001 Bump version to 3.15.1
Update NEWS.
2014-10-30 11:13:39 +00:00
5180ab262c appDisplay: Use EXTERNAL scroll policy
Now that we support the new policy type, we can just use it instead
of hiding the scrollbar.

https://bugzilla.gnome.org/show_bug.cgi?id=739379
2014-10-30 00:37:55 +01:00
5fca85cd28 scroll-view: Support GTK_POLICY_EXTERNAL
GTK+ added a new PolicyType which currently triggers compiler warnings
about unhandled values in switch statements. We also have a use case for
it already, so add support for the new policy type.

https://bugzilla.gnome.org/show_bug.cgi?id=739379
2014-10-30 00:37:55 +01:00
fb5b368ca7 Calendar: Inline _ellipsizeEventTime into caller
This patch inlines the function _ellipsizeEventTime into its only caller
_addEvent. This also removes the need for the global const
EventEllipses and is thus removed by this commit as well.

https://bugzilla.gnome.org/show_bug.cgi?id=727302
2014-10-27 19:31:05 -05:00
62b6419332 Calendar: sort multi-day events by ending day/time
With commit dc6a60dde, the calendar displays the ending day and time of
a continuing multi-day event on its ending day. This results in the list
not appearing to be sorted. This patch sorts the list according to the
displayed day/time.

With the two appointments
Thursday 0800-1000 Foo, and Wednesday 0900-Friday 1200 Bar and today
being Monday, the rest of the week list currently displays:
F ...1200 Bar
T    0800 Foo
With this patch, the displaying order is switched because Friday comes
after Thursday.

https://bugzilla.gnome.org/show_bug.cgi?id=727302
2014-10-27 15:31:32 -05:00
65c136f4ed Calendar: Show multi-day event continuation
Currently, multi-day events are shown as individual appointments on each
day.  This patch ellipsizes multi-day events to indicate continuation on
the prior or following day (or other time-period.)

The time label spot is now replaced by a box layout that contains the
prefix ellipsis label, the time label and the postfix ellipsis label.
In order to keep the alignment, ellipses are merely invisible (zero
opacity) when hidden.

The ellipses are styled using the events-day-time-ellipses class which,
by default, take the color of the event text.

When RTL is used, the box contents are adjusted accordingly (clutter
does that for us).

An event spanning three days now displays "...All Day..." in the
calendar on the second day.

https://bugzilla.gnome.org/show_bug.cgi?id=727302
2014-10-27 15:31:32 -05:00
34606c0a8c messageTray: Summarize notifications when messages queue up
It is really annoying for the user to acknowledge multiple notifications
when they queue up. So, to prevent a notification flood that has to be
handled by the user one-by-one, a summarized-notification feature is
added which leaves a single summarized-notification for the user,
replacing multiple notifications if the number exceeds 1, which they may
or may not acknowledge. When this summarized-notification is acknowledged,
the message-tray is opened where they can view the notifications that were
summarized. This helps the user concentrate on his primary task
simultaneously informing them about the new notifications.

https://bugzilla.gnome.org/show_bug.cgi?id=702460
2014-10-27 18:20:51 +01:00
260657c0b8 BackgroundCache: plug an Animation object leak
We need to return early in case the animation file is the same,
otherwise we'll create a new Animation object and leak the previous
one.

https://bugzilla.gnome.org/show_bug.cgi?id=739252
2014-10-27 17:50:41 +01:00
f5cc579272 Update Uzbek@cyrillic translation 2014-10-19 13:41:47 -04:00
b4ce0e7208 Update Uzbek@cyrillic translation 2014-10-18 19:45:55 -04:00
eb3fc7815e Use LC_TIME locale for strftime format string translations
We commonly mark strftime format strings for translation to account
for date/time representations without an existing strftime shortcut
("Yesterday %H%p"). As those translations are looked up according to
the locale defined by LC_MESSAGES, while the conversion characters
themselves are resolved according to LC_TIME, the result can be
rather odd when mixing locales ("Den 27. January"). The correct
solution would be to install translations for format strings in
the LC_TIME catalogue and look them up with dcgettext(), but we
don't have the infrastructure to do that easily. Work around this
by adding a helper method that looks up a string in LC_MESSAGES
using the locale defined by LC_TIME and use that to translate
format strings, which has the same result.

https://bugzilla.gnome.org/show_bug.cgi?id=738640
2014-10-16 23:41:51 +02:00
2f5a226bc2 Fix handling of SystemBackground
Since the background rework, SystemBackground is no longer a transparent
actor that you have to stack on top of a solid background, it is an
opaque actor. Fix the color of the background actor, and remove places
where we were setting the background color underneath the system background
and expecting blending - in particular, we can always set no_clear_hint
on the stage.

https://bugzilla.gnome.org/show_bug.cgi?id=738652
2014-10-16 17:16:06 -04:00
01eb79a3cc layout: Reset the OSK to the primary monitor when monitors change
When monitors change, the previous index might not mean the same
physical monitor anymore, in fact, it might become invalid. In the
latter case, we'll actually get a JS error when accessing
this.keyboardMonitor in _updateKeyboardBox() . To avoid this, let's
just always reset the OSK to the primary monitor.

https://bugzilla.gnome.org/show_bug.cgi?id=738536
2014-10-16 16:42:36 +02:00
7ea364ae8b Add Uzbek@cyrillic translation 2014-10-16 09:49:20 -04:00
48a6e6f309 main: Allow loading file-based stylesheets again
The gnome-classic mode ships a stylesheet on disk, so make sure to load
that if if we can't find any file in the resource itself.
2014-10-14 22:25:30 -07:00
0f63ad0fc1 gdm: Don't throw an error if there's no logo file 2014-10-14 20:00:25 -07:00
49c4ba5656 theme: make a GResource
Now that we have all the infrastructure ready, port the theme to a
GResource.

https://bugzilla.gnome.org/show_bug.cgi?id=736936
2014-10-14 18:54:18 -07:00
642bf2b778 theme: convert stylesheet loading to GFile
In preparation to making it a GResource.

https://bugzilla.gnome.org/show_bug.cgi?id=736936
2014-10-14 18:54:00 -07:00
328bb1c21b st: always use GFile internally
We're moving the theme infrastructure towards GResource, so as a first
step move all the loading to use GFiles instead of URIs or paths.

https://bugzilla.gnome.org/show_bug.cgi?id=736936
2014-10-14 18:53:39 -07:00
38add2e78b background: port to new GFile MetaBackground API
https://bugzilla.gnome.org/show_bug.cgi?id=736936
2014-10-14 18:51:29 -07:00
2dc41c944e texture-cache: remove unused base64 code path
This was introduced in b0c6cf3f to support image data for web search
providers, which do not exist anymore. Just remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=736936
2014-10-14 18:50:48 -07:00
ea552ea157 keyboardManager: Adopt to changes in meta_display_freeze_keyboard 2014-10-14 14:47:23 -07:00
a72dca3610 Bump version to 3.14.1
Update NEWS.
2014-10-14 21:04:00 +02:00
5e5035a0f7 StWidget: carefully clear ->accessible pointer to avoid resurrection
The pointer to ->accessible was cleared too early in dispose, which
resulted in another accessible object being created when the actor
was removed from its parent in clutter_actor_dispose(). Use a
weak reference instead to clear the ->accessible pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=738147
2014-10-13 12:46:35 -04:00
ffdb85e003 messageTray: add some missing signal disconnections
Disconnect some signal connections that weren't disconnected on actor destroy
(not the result of comprehensive review.)

https://bugzilla.gnome.org/show_bug.cgi?id=738256
2014-10-13 11:50:12 -04:00
6a969b934f gdm: fix missing braces
Incorrect braces meant that if the ShellUserVerifier was destroyed before
the call to fprintManager.GetDefaultDeviceRemote(), the reply would result in
an error.

https://bugzilla.gnome.org/show_bug.cgi?id=738256
2014-10-13 11:50:12 -04:00
8d3ff56846 gdm: disconnect signals
Many signal connections on global objects and on non-widgets were not
disconnected when the unlock screen was destroyed, causing leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=738256
2014-10-13 11:50:11 -04:00
d8d046f2b3 AuthPrompt: properly remove user widgets
When replacing a user widget, we need to destroy the child, not just
unparent it, or it will leak.

https://bugzilla.gnome.org/show_bug.cgi?id=738256
2014-10-13 11:50:11 -04:00
0bec76b6ee app-well: Set menu width
Currently the app well menu has unrestricted with which can cause it to grow
with long window titles and can even go offscreen that way.

So set a max size, long titles will now be properly elipised.

https://bugzilla.gnome.org/show_bug.cgi?id=738054
2014-10-13 15:39:31 +02:00
aa3aea7520 window-tracker: Also listen for changes in the gtk-application-id
Wayland applications don't tend to have very useful WM Class properties,
as GTK+ isn't very good at picking an appropriate application ID. While
we should likely fix GTK+ to pick a better app ID, we do have the
existing gtk_shell for more accurate information. The only problem is
that the gtk_surface is set after the MetaWindow is constructed, and
we're not listening for changes on the GTK+ application ID.

Listen to changes on the GTK+ application ID to fix app tracking for
most GTK+ applications under Wayland.
2014-10-12 17:20:22 -07:00
49fcc93a4b window-tracker: Fix minor style issue 2014-10-12 17:20:12 -07:00
eaec459ee9 st: Bail out on clipboard requests if there is no text.
If a selection request happens through foreign means, the selected
text is NULL, and a crash happens.

https://bugzilla.gnome.org/show_bug.cgi?id=738314
2014-10-10 19:37:40 +02:00
72c6f0025d status/keyboard: Ensure we always have at least one input source
Most of the code handles the sources setting being empty and
InputSourceManager.currentSource being null because previously the
"model" (i.e. the sources list) was kept in gnome-settings-daemon.

But this is fragile and since we're now the canonical place where the
list lives we can force it to never be empty even if the gsetting is
empty or contains only invalid entries.  Adding the default keyboard
layout in that case is the safest thing to do.

https://bugzilla.gnome.org/show_bug.cgi?id=738303
2014-10-10 18:45:45 +02:00
aa3caff714 overviewControls: Really fix x align
Commit a4475465f1 fixed the wrong alignment for the fully visible
control, but regressed the partially slid-out one; take the slideX
factor into account to get the right offset for both cases.
2014-10-10 11:16:35 +02:00
522ccaba3f Updated Italian translation 2014-10-10 08:02:28 +00:00
3d00864599 Updates Persian Translations 2014-10-10 10:53:08 +03:30
bd3dfb8f6a Fix wrong comment 2014-10-09 14:55:13 +02:00
1b3c89f32b shell-recorder: Disable unredirection while recording
This is required to be able to record windows that would
otherwise be unredirected.

https://bugzilla.gnome.org/show_bug.cgi?id=738226
2014-10-09 14:52:25 +02:00
a4475465f1 overviewControls: Fix thinko in SlideLayout
Controls that slide left are located on the left, so the offset to
align them with the corresponding edge is always 0. It's controls
on the right that need a different offset when the available width
exceeds the child's width.

https://bugzilla.gnome.org/show_bug.cgi?id=728899
2014-10-09 14:21:23 +02:00
84f14cb61c Updated Kazakh translation 2014-10-09 10:54:59 +00:00
d0de411a59 iconGrid: Fix slowness on pulse animation for few items
Currently we use the same amount of total delay divided by all items,
but that makes the items animate slow if the amount of items is small.
To avoid that, use a smaller total amount delay for an amount of items
smaller than four.

https://bugzilla.gnome.org/show_bug.cgi?id=737017
2014-10-09 12:47:16 +02:00
2b9645b268 Use MetaWindow.get_frame_rect()
get_outer_rect() has been deprecated for a while, use the new
function instead.
2014-10-09 12:17:15 +02:00
4f08bebbf0 Updated Italian translation 2014-10-09 07:37:11 +00:00
4e8c476153 screenShield: fix trace back when unlocking session from another vt
commit 1d374ac8bd introduced a bug that
prevents unlock from working when initiated from another VT
(user switching).

This commit fixes the exception raised.

https://bugzilla.gnome.org/show_bug.cgi?id=708105
2014-10-08 09:43:33 -04:00
1d374ac8bd screenShield: focus login screen after lifting shield
This commit ensures the login screen gets focused after
the screen shield is raised.

The code affects the unlock screen as well, but it's
less important since the unlock screen gets destroyed
and recreated each time the curtain moves, so it
has an opportunity to take focus on its own.

https://bugzilla.gnome.org/show_bug.cgi?id=708105
2014-10-07 10:54:48 -04:00
83f0f4ea36 layout: Add the feedback group to the uiGroup
This makes DND under Wayland visible under the magnifier.
2014-10-06 17:08:20 -07:00
18f569280c userWidget: Respect the scale factor in the bin size we set
Otherwise, the widget will be too small on hi-DPI devices.

Based on a patch by: Darcy Beurle <darcy@beurle.id.au>

https://bugzilla.gnome.org/show_bug.cgi?id=735419
2014-10-06 17:02:04 -07:00
fc0c98805f Updated Spanish translation 2014-10-06 13:01:23 +02:00
6722b69b8a Updated Portuguese translation 2014-10-05 21:08:06 +00:00
f9d909f985 screenshot: Respect lockdown settings
We allow users/admins to lock down disk writes, respect that when
taking screenshots.

https://bugzilla.gnome.org/show_bug.cgi?id=737846
2014-10-03 17:08:56 +02:00
dd42cfa853 screencast: Re-add lockdown support
Commit 81bb7009ea removed support for the disable-disk-writes
lockdown feature for screencasts, add it back.

https://bugzilla.gnome.org/show_bug.cgi?id=737846
2014-10-03 17:08:56 +02:00
4ed4bb330e screencast: Don't leak recorders on failure
ShellRecorder.record() may fail, remove the recorder from the map
in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=737846
2014-10-03 17:08:56 +02:00
f02b007337 shell-screenshot: Only allow one screenshot request at a time per sender
We currently allow infinite number of screenshot requests to be active at
the same time, which can "dos" the system and cause OOM.

So fail subsequent requests for the same sender when a screenshot operation
is already running.

https://bugzilla.gnome.org/show_bug.cgi?id=737456
2014-10-03 16:22:36 +02:00
0035de4ab7 screencast: Properly stop all recordings on session mode changes
We currently just clear out the map of recorders (which results
in the top bar indicator to be hidden), but don't stop the actual
recordings.
Spotted by Adel Gadllah on IRC.
2014-10-03 16:19:41 +02:00
28552d4b38 Updated Chinese (Taiwan) translation 2014-10-02 12:04:11 +00:00
42066a7c46 dateMenu: Don't generate JS garbage every clock tick
Instead of waking up the JS every second to set the clock and update a
date label the user will rarely see, simply use property binding to
bypass JS string handling, and update the date in the menu when the menu
is opened.
2014-10-01 15:42:49 -06:00
45847470d1 Updated German translation 2014-10-01 20:18:07 +00:00
72b0a3d78f search: Change order of duplicate search check
Checks for a duplicate search before setting the current search
to true and before cancelling the current search. This ensures that
if a duplicate search occurs while the previous search is still active,
the duplicate search will not incorrectly cancel or change the state
of the previous search.
2014-10-01 07:32:06 -06:00
fc3ad390b7 Updated gujarati translations 2014-10-01 15:52:13 +05:30
926de53c0c networkAgent: pass VPN hints to auth dialogs
Indicate to NetworkManager that the Shell's agent supports VPN
hints, and pass those hints to VPN auth dialogs that also indicate
that they support hints.

VPN plugins can request new secrets, for example if the previous
ones are incorrect (eg, user mis-typed the password) or some other
reason (next token code required to re-sync a hardware token).
The specific secret that the VPN wants, and a VPN-specific message,
are passed in hints from the plugin, to NetworkManager, to the
agent (GNOME Shell) and then to the auth dialog.

https://bugzilla.gnome.org/show_bug.cgi?id=737592
2014-09-30 09:34:44 -05:00
e6cd112379 search: Reset the search display when there's no search terms
Destroy the previous search view when there's no search terms, to make
sure old search items don't show up.
2014-09-30 00:55:01 -06:00
2cefc8be27 search: Match an empty array, not a null one
When the terms are missing, we pass an empty array, not a null one.
2014-09-30 00:55:01 -06:00
991179835e search: Factor out a function 2014-09-30 00:55:01 -06:00
0ca2fee54f layout: Don't update the input region while we have a modal
If we have a modal, the stage's input region doesn't really matter --
all events go to us anyway. To avoid doing extra work doing animations
when we have a modal, like menus, the overview, and the message tray,
just fizzle out all updates.

To make sure we catch updates, update the input region whenever we end a
modal.

https://bugzilla.gnome.org/show_bug.cgi?id=737001
2014-09-30 00:23:48 -06:00
778ef365d9 search: hide provider actors when they're created
When the overview is created, search is populated with one actor for
each provider. As they're not hidden though, they will contribute to the
overall size request of the search page, which will shift upwards the
overview grid.

Reviewed-By: Jasper St. Pierre <jstpierre@mecheye.net>
2014-09-29 22:42:25 -07:00
45937ed85d Updated Latvian translation 2014-09-28 16:38:01 +03:00
65a9c09c9c Updated Norwegian bokmål translation. 2014-09-27 15:33:54 +02:00
67b14d5fe5 st-entry: Implement Ctrl-u / Ctrl-k keybindings
These keybindings are well-established on the CLI (e.g. "kill-line"
and "unix-line-discard" in readline(3)), and adding support for them
is cheap ...

https://bugzilla.gnome.org/show_bug.cgi?id=737346
2014-09-26 22:03:31 +02:00
f976e46c46 Updated Norwegian bokmål translation. 2014-09-26 17:26:52 +02:00
7026209eae status/keyboard: obtain keyboard variant from IBus
This will fix unable to show keyboard variant from IBus through menu.

https://bugzilla.gnome.org/show_bug.cgi?id=735066
2014-09-26 17:08:25 +02:00
1e82d6edc2 windowMenu: Only disable "Always on Top" for fully maximized
Since (mutter) commit 49400657caae27 we disable the "Always on Top"
action for maximized windows, however when commit e7af257814
moved the window menu into the shell, this behavior was accidentally
extended to partially maximized (including tiled) windows.
As it can be desirable in this case to keep the window visible while
interacting with a different one, restore the previous behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=737382
2014-09-25 23:10:03 +02:00
50ac1dd197 background: when a file changes, remove it from the image cache
MetaBackgroundCache doesn't itself use file watches, so when a image
that we are monitoring changes we need to purge it from the cache,
so that when we load it again we get the new image.

https://bugzilla.gnome.org/show_bug.cgi?id=710756
2014-09-24 23:06:07 -04:00
9d933356e1 keyboard: Make sure to destroy the key's BoxPointer
When the keyboard is destroyed, we destroy the keyboard actor, but the
keyboard's menu isn't part of the key itself, so it's never tracked.

The menus are actually tracked actors, so they slow down the layout
manager's code to rebuild regions and other things. Keeping this list
small is a good idea.

To prevent leaking menus, destroy the menu when the key is destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=736999
2014-09-23 15:58:08 -06:00
c2a5c00111 Updated Telugu translation 2014-09-23 14:19:29 +00:00
edb561a6ff update zh_CN translation 2014-09-23 19:43:00 +08:00
14c2460fe4 Updated translation for Afrikaans (af), with contributions by Dawid Loubser 2014-09-23 12:41:31 +02:00
598362448a Updated Hindi translation 2014-09-23 10:08:41 +00:00
845273d4c0 Updated Bengali (India) translation 2014-09-23 05:53:57 +00:00
3aebfdc319 Updated Czech translation 2014-09-23 07:07:12 +02:00
f423c371c8 Updated Galician translations 2014-09-23 01:51:11 +02:00
6fe1ad62ba Updated Serbian translation 2014-09-22 23:06:40 +02:00
63efe1db11 iconGrid: Don't use clones for pulse animation
The spring animation has to use clones to escape any clip set on the
parent, as it mainly occurs outside the parent. The same does not apply
to the pulse animation, which is very much in place - in fact, if the
parent is clipped (for instance a scrolled app folder), not having the
clip applied to the animated icons is indeed wrong.
Just animate the original grid actors instead, which gives the expected
result.

https://bugzilla.gnome.org/show_bug.cgi?id=736885
2014-09-22 20:46:41 +02:00
121 changed files with 14269 additions and 9248 deletions

2
.gitignore vendored
View File

@ -23,6 +23,7 @@ data/gnome-shell-wayland.desktop
data/gnome-shell-wayland.desktop.in
data/gnome-shell-extension-prefs.desktop
data/gnome-shell-extension-prefs.desktop.in
data/gnome-shell-theme.gresource
data/gschemas.compiled
data/perf-background.xml
data/org.gnome.shell.gschema.xml
@ -85,6 +86,7 @@ src/gnome-shell-perf-helper
src/gnome-shell-perf-tool
src/gnome-shell-portal-helper
src/hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service
src/org-gtk-application.[ch]
src/run-js-test
src/test-recorder
src/test-recorder.ogg

95
NEWS
View File

@ -1,3 +1,98 @@
3.15.3
======
* Add support for high-contrast themes [Florian; #740447]
* Fix banner message on login screen without user list [Ray; #703972]
* Fix flicker when activating windows on another workspace [Florian; #741680]
* Misc. bug fixes [Giovanni, Florian; #735308, #740237]
Contributors:
Giovanni Campagna, Florian Müllner, Jasper St. Pierre, Ray Strode
Translations:
Balázs Úr [hu], Josef Andersson [sv], Muhammet Kara [tr],
Baurzhan Muftakhidinov [kk], Inaki Larranaga Murgoitio [eu]
3.15.2
======
* Fix visual glitch of window preview outline in overview [Chris; #699044]
* Change user facing name of "Captive Portal" to "Network Login" [Elad; #737198]
* Port to Python 3 [Slavek; #732478]
* Hide Airplane mode indicator when g-s-d says so [Cosimo; #736292]
* Allow translators to change non-work days [Lavi; #664645]
* Delay invocation of caribou daemon until really needed [Daiki; #739712]
* Don't lock screen after crash if locking is disabled [Adel; #704884]
* Improve layout of extension installation dialog [William; #739888]
* Fix workspace changes from app picker [Yuki; #737534]
* Preload all ibus input sources in user configuration [Takao; #695428]
* Properly remove network connections from list [Ryan; #740227]
* Support CSS margin property [Carlos; #728437]
* Improve handling of BUSY application state [Phillip; #736492]
* Fix erroneous week numbers in calendar [Florian; #736722]
* Misc. bugfixes and cleanups [Darcy, Yuki, Alexander, Eskild, Bastien, Cosimo, Colin,
Ray; #738725, #739497, #739241, #672500, #739822, #740074, #704163, #740141]
Contributors:
Yuki, Lavi .A, Elad Alfassa, Cosimo Cecchi, Takao Fujiwara, Adel Gadllah,
Eskild Hustvedt, Chris Johns, William Jon McCann, Slavek Kabrda, Ryan Lortie,
Florian Müllner, Bastien Nocera, Christian Persch, Carlos Soriano,
Jasper St. Pierre, Ray Strode, Alexander Tsoy, Daiki Ueno, Colin Walters,
Phillip Wood
Translations:
Jorge Perez Perez [an], Daniel Martinez [an], Daniel Mustieles [es],
Trần Ngọc Quân [vi], Changwoo Ryu [ko], Kjartan Maraas [nb],
Yosef Or Boczko [he], Marek Černocký [cs]
3.15.1
======
* Use GResources for theme loading [Cosimo; #736936]
* Reset the OSK to primary on monitor changes [Rui; #738536]
* Use LC_TIME locale for format string translations [Florian; #738640]
* Summarize queued up notifications [Devyani; #702460]
* Improve handling of multi-day events [Andreas; #727302]
* Support EXTERNAL scroll policy type [Florian; #739379]
* Misc. bugfixes [Owen, Rui; #738652, #739252]
Contributors:
Andreas Brauchli, Cosimo Cecchi, Devyani Kota, Rui Matos, Florian Müllner,
Jasper St. Pierre, Owen W. Taylor
Translations:
Bahodir Mansurov [uz@cyrillic]
3.14.1
======
* Fix pulse animation for scrolled app folders [Florian; #736885]
* Fix updating background on file changes [Owen; #710756]
* Obtain keyboard variant from IBus [Jinkyu; #735066]
* Implement Ctrl-u / Ctrl-k keybindings in entries [Florian; #737346]
* Pass VPN hints to auth dialog [Dan; #737592]
* Only allow one screenshot request at a time [Adel; #737456]
* Respect disable-save-to-disc lockdown setting [Florian; #737846]
* Respect scaling-factor for profile pictures [Darcy; #735419]
* Focus login screen after lifting the lock screen shield [Ray; #708105]
* Speed up pulse animation for few items [Carlos S.; #737017]
* Fix gap between workspace switcher and screen edge [Florian; #728899]
* Disable unredirection during recordings [Adel; #738226]
* Ensure there's always at least one input source [Rui; #738303]
* Restrict width of dash icons' context menus [Adel; #738054]
* Misc. bug fixes [Jasper, Florian, Carlos G., Owen; #736999, #737382, #737001,
#738314, #738256, #738147]
Contributors:
Darcy Beurle, Cosimo Cecchi, Adel Gadllah, Carlos Garnacho, Rui Matos,
Florian Müllner, Carlos Soriano, Jasper St. Pierre, Ray Strode, Patrick Ward,
Dan Williams, Owen W. Taylor, Jinkyu Yi
Translations:
Мирослав Николић po/sr, sr@latin.po, Fran Diéguez [gl], Marek Černocký [cs],
Saibal Ray [bn_IN], Rajesh Ranjan [hi], Friedel Wolff [af],
Zhou Fang [zh_CN], Krishnababu Krothapalli [te], Kjartan Maraas [nb],
Rūdolfs Mazurs [lv], Sweta Kothari [gu], Christian Kirbach [de],
Cheng-Chia Tseng [zh_TW], Pedro Albuquerque [pt], Daniel Mustieles [es],
Luca Ferretti [it], Baurzhan Muftakhidinov [kk], Arash Mousavi [fa],
Milo Casagrande [it]
3.14.0
======
* Fix exposure of the accessible tree [Alejandro; #736821]

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.14.0],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_INIT([gnome-shell],[3.15.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c])
@ -37,7 +37,7 @@ AC_PATH_PROG([XSLTPROC], [xsltproc])
GLIB_GSETTINGS
# Get a value to substitute into gnome-shell.in
AM_PATH_PYTHON([2.5])
AM_PATH_PYTHON([3])
AC_SUBST(PYTHON)
# We need at least this, since gst_plugin_register_static() was added
@ -76,8 +76,8 @@ AC_MSG_RESULT($enable_systemd)
CLUTTER_MIN_VERSION=1.15.90
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.39.0
MUTTER_MIN_VERSION=3.14.0
GTK_MIN_VERSION=3.13.2
MUTTER_MIN_VERSION=3.15.3
GTK_MIN_VERSION=3.15.0
GIO_MIN_VERSION=2.37.0
LIBECAL_MIN_VERSION=3.5.3
LIBEDATASERVER_MIN_VERSION=3.5.3
@ -232,9 +232,17 @@ esac
AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS"
AC_SUBST(AM_CFLAGS)
BROWSER_PLUGIN_DIR="${BROWSER_PLUGIN_DIR:-"\${libdir}/mozilla/plugins"}"
if test -z "${BROWSER_PLUGIN_DIR}"; then
BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins"
fi
AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to])
AC_ARG_VAR([GDBUS_CODEGEN],[the gdbus-codegen programme])
AC_PATH_PROG([GDBUS_CODEGEN],[gdbus-codegen],[])
if test -z "$GDBUS_CODEGEN"; then
AC_MSG_ERROR([gdbus-codegen not found])
fi
AC_CONFIG_FILES([
Makefile
data/Makefile

View File

@ -35,44 +35,11 @@ introspection_DATA = \
org.gnome.ShellSearchProvider.xml \
org.gnome.ShellSearchProvider2.xml
themedir = $(pkgdatadir)/theme
dist_theme_DATA = \
theme/calendar-arrow-left.svg \
theme/calendar-arrow-right.svg \
theme/calendar-today.svg \
theme/checkbox-focused.svg \
theme/checkbox-off-focused.svg \
theme/checkbox-off.svg \
theme/checkbox.svg \
theme/close-window.svg \
theme/close.svg \
theme/corner-ripple-ltr.png \
theme/corner-ripple-rtl.png \
theme/dash-placeholder.svg \
theme/filter-selected-ltr.svg \
theme/filter-selected-rtl.svg \
theme/gnome-shell.css \
theme/logged-in-indicator.svg \
theme/message-tray-background.png \
theme/more-results.svg \
theme/noise-texture.png \
theme/page-indicator-active.svg \
theme/page-indicator-inactive.svg \
theme/page-indicator-checked.svg \
theme/page-indicator-hover.svg \
theme/panel-button-border.svg \
theme/panel-button-highlight-narrow.svg \
theme/panel-button-highlight-wide.svg \
theme/process-working.svg \
theme/running-indicator.svg \
theme/source-button-border.svg \
theme/summary-counter.svg \
theme/toggle-off-us.svg \
theme/toggle-off-intl.svg \
theme/toggle-on-us.svg \
theme/toggle-on-intl.svg \
theme/ws-switch-arrow-up.png \
theme/ws-switch-arrow-down.png
resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml)
gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $<
resourcedir = $(pkgdatadir)
resource_DATA = gnome-shell-theme.gresource
backgrounddir = $(pkgdatadir)
background_DATA = perf-background.xml
@ -116,7 +83,9 @@ EXTRA_DIST = \
perf-background.xml.in \
org.gnome.Shell.PortalHelper.desktop.in \
org.gnome.Shell.PortalHelper.service.in \
org.gnome.shell.gschema.xml.in.in
org.gnome.shell.gschema.xml.in.in \
gnome-shell-theme.gresource.xml \
$(resource_files)
CLEANFILES += \
gnome-shell.desktop.in \
@ -128,4 +97,5 @@ CLEANFILES += \
perf-background.xml \
gschemas.compiled \
org.gnome.shell.gschema.valid \
org.gnome.shell.gschema.xml.in
org.gnome.shell.gschema.xml.in \
gnome-shell-theme.gresource

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/shell/theme">
<file>calendar-arrow-left.svg</file>
<file>calendar-arrow-right.svg</file>
<file>calendar-today.svg</file>
<file>checkbox-focused.svg</file>
<file>checkbox-off-focused.svg</file>
<file>checkbox-off.svg</file>
<file>checkbox.svg</file>
<file>close-window.svg</file>
<file>close.svg</file>
<file>corner-ripple-ltr.png</file>
<file>corner-ripple-rtl.png</file>
<file>dash-placeholder.svg</file>
<file>filter-selected-ltr.svg</file>
<file>filter-selected-rtl.svg</file>
<file>gnome-shell.css</file>
<file>gnome-shell-high-contrast.css</file>
<file>logged-in-indicator.svg</file>
<file>message-tray-background.png</file>
<file>more-results.svg</file>
<file>noise-texture.png</file>
<file>page-indicator-active.svg</file>
<file>page-indicator-inactive.svg</file>
<file>page-indicator-checked.svg</file>
<file>page-indicator-hover.svg</file>
<file>panel-button-border.svg</file>
<file>panel-button-highlight-narrow.svg</file>
<file>panel-button-highlight-wide.svg</file>
<file>process-working.svg</file>
<file>running-indicator.svg</file>
<file>source-button-border.svg</file>
<file>summary-counter.svg</file>
<file>toggle-off-us.svg</file>
<file>toggle-off-intl.svg</file>
<file>toggle-on-us.svg</file>
<file>toggle-on-intl.svg</file>
<file>ws-switch-arrow-up.png</file>
<file>ws-switch-arrow-down.png</file>
</gresource>
</gresources>

View File

@ -1,9 +1,9 @@
[Desktop Entry]
_Name=Captive Portal
_Name=Network Login
Type=Application
Exec=gapplication launch org.gnome.Shell.PortalHelper
DBusActivatable=true
NoDisplay=true
Icon=network-workgroup
StartupNotify=true
OnlyShowIn=GNOME;
OnlyShowIn=GNOME;

View File

@ -0,0 +1,20 @@
/* Copyright 2014, Red Hat, Inc.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU Lesser General Public License,
* version 2.1, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
* more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
*/
@import url("resource:///org/gnome/shell/theme/gnome-shell.css");
stage {
-st-icon-style: symbolic;
}

View File

@ -232,6 +232,10 @@ StScrollBar StButton#vhandle:active {
border-width: 0px;
}
.app-well-menu {
max-width: 400px;
}
/* The remaining popup-menu sizing is all done in ems, so that if you
* override .popup-menu.font-size, everything else will scale with it.
*/
@ -825,6 +829,7 @@ StScrollBar StButton#vhandle:active {
.window-clone-border {
border: 4px solid rgba(255, 255, 255, 0.5);
border-radius: 4px;
box-shadow: inset 0px 0px 0px 1px rgba(255, 255, 255, 0.5);
}
.notification-close {
@ -1490,6 +1495,10 @@ StScrollBar StButton#vhandle:active {
text-align: right;
}
.events-day-time-ellipses {
color: rgba(153, 153, 153, 1.0);
}
.events-day-time:rtl {
text-align: left;
}
@ -2379,6 +2388,10 @@ StScrollBar StButton#vhandle:active {
}
/* Login Dialog */
.login-dialog-banner-view {
padding-top: 24px;
max-width: 23em;
}
.framed-user-icon {
border: 2px solid #8b8b8b;
@ -2391,11 +2404,7 @@ StScrollBar StButton#vhandle:active {
}
.login-dialog-banner {
font-size: 10pt;
font-weight: bold;
text-align: center;
color: #666666;
padding-bottom: 1em;
}
.login-dialog {

View File

@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Signals = imports.signals;
const St = imports.gi.St;
@ -126,7 +127,7 @@ const AuthPrompt = new Lang.Class({
this._initButtons();
let spinnerIcon = global.datadir + '/theme/process-working.svg';
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE);
this._spinner.actor.opacity = 0;
this._spinner.actor.show();
@ -134,8 +135,7 @@ const AuthPrompt = new Lang.Class({
},
_onDestroy: function() {
this._userVerifier.clear();
this._userVerifier.disconnectAll();
this._userVerifier.destroy();
this._userVerifier = null;
},
@ -261,6 +261,7 @@ const AuthPrompt = new Lang.Class({
_onVerificationComplete: function() {
this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED;
this.cancelButton.reactive = false;
},
_onReset: function() {
@ -419,17 +420,20 @@ const AuthPrompt = new Lang.Class({
},
setUser: function(user) {
let oldChild = this._userWell.get_child();
if (oldChild)
oldChild.destroy();
if (user) {
let userWidget = new UserWidget.UserWidget(user);
this._userWell.set_child(userWidget.actor);
} else {
this._userWell.set_child(null);
}
},
reset: function() {
let oldStatus = this.verificationStatus;
this.verificationStatus = AuthPromptStatus.NOT_VERIFYING;
this.cancelButton.reactive = true;
if (oldStatus == AuthPromptStatus.VERIFYING)
this._userVerifier.cancel();
@ -498,6 +502,9 @@ const AuthPrompt = new Lang.Class({
},
cancel: function() {
if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) {
return;
}
this.reset();
this.emit('cancelled');
}

View File

@ -26,6 +26,7 @@ const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
const Pango = imports.gi.Pango;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
@ -64,6 +65,8 @@ const UserListItem = new Lang.Class({
reactive: true,
x_align: St.Align.START,
x_fill: true });
this.actor.connect('destroy',
Lang.bind(this, this._onDestroy));
this._userWidget = new UserWidget.UserWidget(this.user);
layout.add(this._userWidget.actor);
@ -87,6 +90,10 @@ const UserListItem = new Lang.Class({
this.actor.remove_style_pseudo_class('logged-in');
},
_onDestroy: function() {
this._user.disconnect(this._userChangedId);
},
_onClicked: function() {
this.emit('activate');
},
@ -358,12 +365,12 @@ const LoginDialog = new Lang.Class({
Name: 'LoginDialog',
_init: function(parentActor) {
this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW,
layout_manager: new Clutter.BinLayout(),
style_class: 'login-dialog',
visible: false });
this.actor = new Shell.GenericContainer({ style_class: 'login-dialog',
visible: false });
this.actor.get_accessible().set_role(Atk.Role.WINDOW);
this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true }));
this.actor.connect('allocate', Lang.bind(this, this._onAllocate));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
parentActor.add_child(this.actor);
@ -373,13 +380,12 @@ const LoginDialog = new Lang.Class({
if (GLib.getenv('GDM_GREETER_TEST') != '1') {
this._greeter = gdmClient.get_greeter_sync(null);
this._greeter.connect('default-session-name-changed',
Lang.bind(this, this._onDefaultSessionChanged));
this._greeter.connect('session-opened',
Lang.bind(this, this._onSessionOpened));
this._greeter.connect('timed-login-requested',
Lang.bind(this, this._onTimedLoginRequested));
this._defaultSessionChangedId = this._greeter.connect('default-session-name-changed',
Lang.bind(this, this._onDefaultSessionChanged));
this._sessionOpenedId = this._greeter.connect('session-opened',
Lang.bind(this, this._onSessionOpened));
this._timedLoginRequestedId = this._greeter.connect('timed-login-requested',
Lang.bind(this, this._onTimedLoginRequested));
}
this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA });
@ -394,23 +400,16 @@ const LoginDialog = new Lang.Class({
Lang.bind(this, this._updateLogo));
this._textureCache = St.TextureCache.get_default();
this._textureCache.connect('texture-file-changed',
Lang.bind(this, this._updateLogoTexture));
this._updateLogoTextureId = this._textureCache.connect('texture-file-changed',
Lang.bind(this, this._updateLogoTexture));
this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
x_expand: true,
y_expand: true,
vertical: true,
visible: false });
this.actor.add_child(this._userSelectionBox);
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
this._userSelectionBox.add(this._bannerLabel);
this._updateBanner();
this._userList = new UserList();
this._userSelectionBox.add(this._userList.actor,
{ expand: true,
@ -445,11 +444,25 @@ const LoginDialog = new Lang.Class({
x_align: St.Align.START,
x_fill: true });
this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view',
opacity: 0,
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
hscrollbar_policy: Gtk.PolicyType.NEVER });
this.actor.add_child(this._bannerView);
let bannerBox = new St.BoxLayout({ vertical: true });
this._bannerView.add_actor(bannerBox);
this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner',
text: '' });
this._bannerLabel.clutter_text.line_wrap = true;
this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
bannerBox.add_child(this._bannerLabel);
this._updateBanner();
this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.END,
x_expand: true,
y_expand: true });
y_align: Clutter.ActorAlign.END });
this.actor.add_child(this._logoBin);
this._updateLogo();
@ -476,8 +489,182 @@ const LoginDialog = new Lang.Class({
// If the user list is enabled, it should take key focus; make sure the
// screen shield is initialized first to prevent it from stealing the
// focus later
Main.layoutManager.connect('startup-complete',
Lang.bind(this, this._updateDisableUserList));
this._startupCompleteId = Main.layoutManager.connect('startup-complete',
Lang.bind(this, this._updateDisableUserList));
},
_getBannerAllocation: function (dialogBox) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_getLogoBinAllocation: function (dialogBox) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = dialogBox.y2 - natHeight;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_getCenterActorAllocation: function (dialogBox, actor) {
let actorBox = new Clutter.ActorBox();
let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size();
let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2;
let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2;
actorBox.x1 = centerX - natWidth / 2;
actorBox.y1 = centerY - natHeight / 2;
actorBox.x2 = actorBox.x1 + natWidth;
actorBox.y2 = actorBox.y1 + natHeight;
return actorBox;
},
_onAllocate: function (actor, dialogBox, flags) {
let dialogWidth = dialogBox.x2 - dialogBox.x1;
let dialogHeight = dialogBox.y2 - dialogBox.y1;
// First find out what space the children require
let bannerAllocation = null;
let bannerHeight = 0;
let bannerWidth = 0;
if (this._bannerView.visible) {
bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView);
bannerHeight = bannerAllocation.y2 - bannerAllocation.y1;
bannerWidth = bannerAllocation.x2 - bannerAllocation.x1;
}
let authPromptAllocation = null;
let authPromptHeight = 0;
let authPromptWidth = 0;
if (this._authPrompt.actor.visible) {
authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor);
authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1;
authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1;
}
let userSelectionAllocation = null;
let userSelectionHeight = 0;
if (this._userSelectionBox.visible) {
userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox);
userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1;
}
let logoAllocation = null;
let logoHeight = 0;
if (this._logoBin.visible) {
logoAllocation = this._getLogoBinAllocation(dialogBox);
logoHeight = logoAllocation.y2 - logoAllocation.y1;
}
// Then figure out if we're overly constrained and need to
// try a different layout, or if we have what extra space we
// can hand out
if (bannerAllocation) {
let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight;
if (leftOverYSpace > 0) {
// First figure out how much left over space is up top
let leftOverTopSpace = leftOverYSpace / 2;
// Then, shift the banner into the middle of that extra space
let yShift = leftOverTopSpace / 2;
bannerAllocation.y1 += yShift;
bannerAllocation.y2 += yShift;
} else {
// Then figure out how much space there would be if we switched to a
// wide layout with banner on one side and authprompt on the other.
let leftOverXSpace = dialogWidth - authPromptWidth;
// In a wide view, half of the available space goes to the banner,
// and the other half goes to the margins.
let wideBannerWidth = leftOverXSpace / 2;
let wideSpacing = leftOverXSpace - wideBannerWidth;
// If we do go with a wide layout, we need there to be at least enough
// space for the banner and the auth prompt to be the same width,
// so it doesn't look unbalanced.
if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) {
let centerX = dialogBox.x1 + dialogWidth / 2;
let centerY = dialogBox.y1 + dialogHeight / 2;
// A small portion of the spacing goes down the center of the
// screen to help delimit the two columns of the wide view
let centerGap = wideSpacing / 8;
// place the banner along the left edge of the center margin
bannerAllocation.x2 = centerX - centerGap / 2;
bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth;
// figure out how tall it would like to be and try to accomodate
// but don't let it get too close to the logo
let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth);
let maxWideHeight = dialogHeight - 3 * logoHeight;
wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight);
bannerAllocation.y1 = centerY - wideBannerHeight / 2;
bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight;
// place the auth prompt along the right edge of the center margin
authPromptAllocation.x1 = centerX + centerGap / 2;
authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth;
} else {
// If we aren't going to do a wide view, then we need to limit
// the height of the banner so it will present scrollbars
// First figure out how much space there is without the banner
leftOverYSpace += bannerHeight;
// Then figure out how much of that space is up top
let availableTopSpace = leftOverYSpace / 2;
// Then give all of that space to the banner
bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace;
}
}
} else if (userSelectionAllocation) {
// Grow the user list to fill the space
let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight;
if (leftOverYSpace > 0) {
let topExpansion = leftOverYSpace / 2;
let bottomExpansion = topExpansion;
userSelectionAllocation.y1 -= topExpansion;
userSelectionAllocation.y2 += bottomExpansion;
}
}
// Finally hand out the allocations
if (bannerAllocation) {
this._bannerView.allocate(bannerAllocation, flags);
}
if (authPromptAllocation)
this._authPrompt.actor.allocate(authPromptAllocation, flags);
if (userSelectionAllocation)
this._userSelectionBox.allocate(userSelectionAllocation, flags);
if (logoAllocation)
this._logoBin.allocate(logoAllocation, flags);
},
_ensureUserListLoaded: function() {
@ -532,24 +719,36 @@ const LoginDialog = new Lang.Class({
}
},
_updateLogoTexture: function(cache, uri) {
if (this._logoFileUri != uri)
_fadeInBannerView: function() {
Tweener.addTween(this._bannerView,
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad' });
},
_hideBannerView: function() {
Tweener.removeTweens(this._bannerView);
this._bannerView.opacity = 0;
},
_updateLogoTexture: function(cache, file) {
if (this._logoFile && !this._logoFile.equal(file))
return;
this._logoBin.destroy_all_children();
if (this._logoFileUri) {
if (this._logoFile) {
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._logoBin.add_child(this._textureCache.load_uri_async(this._logoFileUri,
-1, _LOGO_ICON_HEIGHT,
scaleFactor));
this._logoBin.add_child(this._textureCache.load_file_async(this._logoFile,
-1, _LOGO_ICON_HEIGHT,
scaleFactor));
}
},
_updateLogo: function() {
let path = this._settings.get_string(GdmUtil.LOGO_KEY);
this._logoFileUri = path ? Gio.file_new_for_path(path).get_uri() : null;
this._updateLogoTexture(this._textureCache, this._logoFileUri);
this._logoFile = path ? Gio.file_new_for_path(path) : null;
this._updateLogoTexture(this._textureCache, this._logoFile);
},
_onPrompted: function() {
@ -599,6 +798,7 @@ const LoginDialog = new Lang.Class({
{ opacity: 255,
time: _FADE_ANIMATION_TIME,
transition: 'easeOutQuad' });
this._fadeInBannerView();
},
_showRealmLoginHint: function(realmManager, hint) {
@ -638,6 +838,8 @@ const LoginDialog = new Lang.Class({
realmManager.release();
}));
this._updateCancelButton();
this._authPrompt.updateSensitivity(true);
this._showPrompt();
},
@ -665,10 +867,12 @@ const LoginDialog = new Lang.Class({
},
_gotGreeterSessionProxy: function(proxy) {
proxy.connect('g-properties-changed', Lang.bind(this, function() {
if (proxy.Active)
this._loginScreenSessionActivated();
}));
this._greeterSessionProxy = proxy;
this._greeterSessionProxyChangedId =
proxy.connect('g-properties-changed', Lang.bind(this, function() {
if (proxy.Active)
this._loginScreenSessionActivated();
}));
},
_startSession: function(serviceName) {
@ -851,6 +1055,7 @@ const LoginDialog = new Lang.Class({
_showUserList: function() {
this._ensureUserListLoaded();
this._authPrompt.hide();
this._hideBannerView();
this._sessionMenuButton.close();
this._setUserListExpanded(true);
this._notListedButton.show();
@ -890,6 +1095,30 @@ const LoginDialog = new Lang.Class({
this._userManager.disconnect(this._userManagerLoadedId);
this._userManagerLoadedId = 0;
}
if (this._userAddedId) {
this._userManager.disconnect(this._userAddedId);
this._userAddedId = 0;
}
if (this._userRemovedId) {
this._userManager.disconnect(this._userRemovedId);
this._userRemovedId = 0;
}
this._textureCache.disconnect(this._updateLogoTextureId);
Main.layoutManager.disconnect(this._startupCompleteId);
if (this._settings) {
this._settings.run_dispose();
this._settings = null;
}
if (this._greeter) {
this._greeter.disconnect(this._defaultSessionChangedId);
this._greeter.disconnect(this._sessionOpenedId);
this._greeter.disconnect(this._timedLoginRequestedId);
this._greeter = null;
}
if (this._greeterSessionProxy) {
this._greeterSessionProxy.disconnect(this._greeterSessionProxyChangedId);
this._greeterSessionProxy = null;
}
},
_loadUserList: function() {
@ -904,15 +1133,15 @@ const LoginDialog = new Lang.Class({
this._userList.addUser(users[i]);
}
this._userManager.connect('user-added',
Lang.bind(this, function(userManager, user) {
this._userList.addUser(user);
}));
this._userAddedId = this._userManager.connect('user-added',
Lang.bind(this, function(userManager, user) {
this._userList.addUser(user);
}));
this._userManager.connect('user-removed',
Lang.bind(this, function(userManager, user) {
this._userList.removeUser(user);
}));
this._userRemovedId = this._userManager.connect('user-removed',
Lang.bind(this, function(userManager, user) {
this._userList.removeUser(user);
}));
return GLib.SOURCE_REMOVE;
},
@ -926,7 +1155,7 @@ const LoginDialog = new Lang.Class({
this.actor.show();
this.actor.opacity = 0;
Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOGIN_SCREEN });
Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOGIN_SCREEN });
Tweener.addTween(this.actor,
{ opacity: 255,

View File

@ -142,10 +142,10 @@ const ShellUserVerifier = new Lang.Class({
// after a user has been picked.
this._checkForSmartcard();
this._smartcardManager.connect('smartcard-inserted',
Lang.bind(this, this._checkForSmartcard));
this._smartcardManager.connect('smartcard-removed',
Lang.bind(this, this._checkForSmartcard));
this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted',
Lang.bind(this, this._checkForSmartcard));
this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed',
Lang.bind(this, this._checkForSmartcard));
this._messageQueue = [];
this._messageQueueTimeoutId = 0;
@ -159,8 +159,8 @@ const ShellUserVerifier = new Lang.Class({
if (this._oVirtCredentialsManager.hasToken())
this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken());
this._oVirtCredentialsManager.connect('user-authenticated',
Lang.bind(this, this._oVirtUserAuthenticated));
this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated',
Lang.bind(this, this._oVirtUserAuthenticated));
},
begin: function(userName, hold) {
@ -191,20 +191,37 @@ const ShellUserVerifier = new Lang.Class({
}
},
_clearUserVerifier: function() {
if (this._userVerifier) {
this._userVerifier.run_dispose();
this._userVerifier = null;
}
},
clear: function() {
if (this._cancellable) {
this._cancellable.cancel();
this._cancellable = null;
}
if (this._userVerifier) {
this._userVerifier.run_dispose();
this._userVerifier = null;
}
this._clearUserVerifier();
this._clearMessageQueue();
},
destroy: function() {
this.clear();
this._settings.run_dispose();
this._settings = null;
this._smartcardManager.disconnect(this._smartcardInsertedId);
this._smartcardManager.disconnect(this._smartcardRemovedId);
this._smartcardManager = null;
this._oVirtCredentialsManager.disconnect(this._oVirtUserAuthenticatedId);
this._oVirtCredentialsManager = null;
},
answerQuery: function(serviceName, answer) {
if (!this.hasPendingMessages) {
this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null);
@ -283,9 +300,10 @@ const ShellUserVerifier = new Lang.Class({
this._fprintManager.GetDefaultDeviceRemote(Gio.DBusCallFlags.NONE, this._cancellable, Lang.bind(this,
function(device, error) {
if (!error && device)
if (!error && device) {
this._haveFingerprintReader = true;
this._updateDefaultService();
}
}));
},
@ -326,6 +344,7 @@ const ShellUserVerifier = new Lang.Class({
_reauthenticationChannelOpened: function(client, result) {
try {
this._clearUserVerifier();
this._userVerifier = client.open_reauthentication_channel_finish(result);
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
return;
@ -349,6 +368,7 @@ const ShellUserVerifier = new Lang.Class({
_userVerifierGot: function(client, result) {
try {
this._clearUserVerifier();
this._userVerifier = client.get_user_verifier_finish(result);
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
return;

View File

@ -43,7 +43,7 @@ function getCurrentExtension() {
let path = match[1];
let file = Gio.File.new_for_path(path);
// Walk up the directory tree, looking for an extesion with
// Walk up the directory tree, looking for an extension with
// the same UUID as a directory name.
while (file != null) {
let extension = extensions[file.get_basename()];

View File

@ -1,13 +1,14 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Signals = imports.signals;
try {
var IBus = imports.gi.IBus;
if (!('new_async' in IBus.Bus))
throw "IBus version is too old";
_checkIBusVersion();
const IBusCandidatePopup = imports.ui.ibusCandidatePopup;
} catch (e) {
var IBus = null;
@ -16,6 +17,22 @@ try {
let _ibusManager = null;
function _checkIBusVersion() {
var requiredMajor = 1;
var requiredMinor = 5;
var requiredMicro = 2;
if ((IBus.MAJOR_VERSION > requiredMajor) ||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION > requiredMinor) ||
(IBus.MAJOR_VERSION == requiredMajor && IBus.MINOR_VERSION == requiredMinor &&
IBus.MICRO_VERSION >= requiredMicro))
return;
throw "Found IBus version %d.%d.%d but required is %d.%d.%d".
format(IBus.MAJOR_VERSION, IBus.MINOR_VERSION, IBus.MINOR_VERSION,
requiredMajor, requiredMinor, requiredMicro);
}
function getIBusManager() {
if (_ibusManager == null)
_ibusManager = new IBusManager();
@ -28,6 +45,7 @@ const IBusManager = new Lang.Class({
// This is the longest we'll keep the keyboard frozen until an input
// source is active.
_MAX_INPUT_SOURCE_ACTIVATION_TIME: 4000, // ms
_PRELOAD_ENGINES_DELAY_TIME: 30, // sec
_init: function() {
if (!IBus)
@ -42,6 +60,7 @@ const IBusManager = new Lang.Class({
this._ready = false;
this._registerPropertiesId = 0;
this._currentEngineName = null;
this._preloadEnginesId = 0;
this._ibus = IBus.Bus.new_async();
this._ibus.connect('connected', Lang.bind(this, this._onConnected));
@ -176,5 +195,27 @@ const IBusManager = new Lang.Class({
this._ibus.set_global_engine_async(id, this._MAX_INPUT_SOURCE_ACTIVATION_TIME,
null, callback);
},
preloadEngines: function(ids) {
if (!IBus || !this._ibus || ids.length == 0)
return;
if (this._preloadEnginesId != 0) {
Mainloop.source_remove(this._preloadEnginesId);
this._preloadEnginesId = 0;
}
this._preloadEnginesId =
Mainloop.timeout_add_seconds(this._PRELOAD_ENGINES_DELAY_TIME,
Lang.bind(this, function() {
this._ibus.preload_engines_async(
ids,
-1,
null,
null);
this._preloadEnginesId = 0;
return GLib.SOURCE_REMOVE;
}));
},
});
Signals.addSignalMethods(IBusManager.prototype);

View File

@ -35,7 +35,7 @@ function releaseKeyboard() {
}
function holdKeyboard() {
global.freeze_keyboard(global.get_current_time());
global.display.freeze_keyboard(global.get_current_time());
}
const KeyboardManager = new Lang.Class({

View File

@ -81,7 +81,6 @@ const AppSwitcherPopup = new Lang.Class({
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
let vPadding = this.actor.get_theme_node().get_vertical_padding();
let hPadding = leftPadding + rightPadding;
let icon = this._items[this._selectedIndex].actor;

View File

@ -12,7 +12,7 @@ const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
const Animation = new Lang.Class({
Name: 'Animation',
_init: function(filename, width, height, speed) {
_init: function(file, width, height, speed) {
this.actor = new St.Bin();
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._speed = speed;
@ -23,7 +23,7 @@ const Animation = new Lang.Class({
this._frame = 0;
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this._animations = St.TextureCache.get_default().load_sliced_image (filename, width, height, scaleFactor,
this._animations = St.TextureCache.get_default().load_sliced_image (file, width, height, scaleFactor,
Lang.bind(this, this._animationsLoaded));
this.actor.set_child(this._animations);
},
@ -82,7 +82,7 @@ const AnimatedIcon = new Lang.Class({
Name: 'AnimatedIcon',
Extends: Animation,
_init: function(filename, size) {
this.parent(filename, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
_init: function(file, size) {
this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
}
});

View File

@ -379,9 +379,7 @@ const AllView = new Lang.Class({
this.actor.add_actor(this._scrollView);
this._scrollView.set_policy(Gtk.PolicyType.NEVER,
Gtk.PolicyType.AUTOMATIC);
// we are only using ScrollView for the fade effect, hide scrollbars
this._scrollView.vscroll.hide();
Gtk.PolicyType.EXTERNAL);
this._adjustment = this._scrollView.vscroll.adjustment;
this._pageIndicators = new PageIndicators();
@ -1564,10 +1562,11 @@ const AppIcon = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._menuTimeoutId = 0;
this._stateChangedId = this.app.connect('notify::state',
Lang.bind(this,
this._onStateChanged));
this._onStateChanged();
this._stateChangedId = this.app.connect('notify::state', Lang.bind(this,
function () {
this._updateRunningStyle();
}));
this._updateRunningStyle();
},
_onDestroy: function() {
@ -1588,7 +1587,7 @@ const AppIcon = new Lang.Class({
}
},
_onStateChanged: function() {
_updateRunningStyle: function() {
if (this.app.state != Shell.AppState.STOPPED)
this.actor.add_style_class_name('running');
else

View File

@ -106,6 +106,8 @@ const Main = imports.ui.main;
const Params = imports.misc.params;
const Tweener = imports.ui.tweener;
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
const BACKGROUND_SCHEMA = 'org.gnome.desktop.background';
const PRIMARY_COLOR_KEY = 'primary-color';
const SECONDARY_COLOR_KEY = 'secondary-color';
@ -125,6 +127,16 @@ const ANIMATION_MIN_WAKEUP_INTERVAL = 1.0;
let _backgroundCache = null;
function _fileEqual0(file1, file2) {
if (file1 == file2)
return true;
if (!file1 || !file2)
return false;
return file1.equal(file2);
}
const BackgroundCache = new Lang.Class({
Name: 'BackgroundCache',
@ -134,25 +146,25 @@ const BackgroundCache = new Lang.Class({
this._backgroundSources = {};
},
monitorFile: function(filename) {
if (this._fileMonitors[filename])
monitorFile: function(file) {
let key = file.hash();
if (this._fileMonitors[key])
return;
let file = Gio.File.new_for_path(filename);
let monitor = file.monitor(Gio.FileMonitorFlags.NONE, null);
monitor.connect('changed',
Lang.bind(this, function() {
this.emit('file-changed', filename);
this.emit('file-changed', file);
}));
this._fileMonitors[filename] = monitor;
this._fileMonitors[key] = monitor;
},
getAnimation: function(params) {
params = Params.parse(params, { filename: null,
params = Params.parse(params, { file: null,
onLoaded: null });
if (this._animationFilename == params.filename) {
if (_fileEqual0(this._animationFile, params.file)) {
if (params.onLoaded) {
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
params.onLoaded(this._animation);
@ -160,12 +172,13 @@ const BackgroundCache = new Lang.Class({
}));
GLib.Source.set_name_by_id(id, '[gnome-shell] params.onLoaded');
}
return;
}
let animation = new Animation({ filename: params.filename });
let animation = new Animation({ file: params.file });
animation.load(Lang.bind(this, function() {
this._animationFilename = params.filename;
this._animationFile = params.file;
this._animation = animation;
if (params.onLoaded) {
@ -218,14 +231,14 @@ const Background = new Lang.Class({
params = Params.parse(params, { monitorIndex: 0,
layoutManager: Main.layoutManager,
settings: null,
filename: null,
file: null,
style: null });
this.background = new Meta.Background({ meta_screen: global.screen });
this.background._delegate = this;
this._settings = params.settings;
this._filename = params.filename;
this._file = params.file;
this._style = params.style;
this._monitorIndex = params.monitorIndex;
this._layoutManager = params.layoutManager;
@ -292,18 +305,21 @@ const Background = new Lang.Class({
this.background.set_gradient(shadingType, color, secondColor);
},
_watchFile: function(filename) {
if (this._fileWatches[filename])
_watchFile: function(file) {
let key = file.hash();
if (this._fileWatches[key])
return;
this._cache.monitorFile(filename);
this._cache.monitorFile(file);
let signalId = this._cache.connect('file-changed',
Lang.bind(this, function(cache, changedFile) {
if (changedFile == filename) {
if (changedFile.equal(file)) {
let imageCache = Meta.BackgroundImageCache.get_default();
imageCache.purge(changedFile);
this.emit('changed');
}
}));
this._fileWatches[filename] = signalId;
this._fileWatches[key] = signalId;
},
_removeAnimationTimeout: function() {
@ -326,9 +342,9 @@ const Background = new Lang.Class({
this._animation.transitionProgress,
this._style);
} else if (files.length > 0) {
this.background.set_filename(files[0], this._style);
this.background.set_file(files[0], this._style);
} else {
this.background.set_filename(null, this._style);
this.background.set_file(null, this._style);
}
this._queueUpdateAnimation();
});
@ -385,28 +401,28 @@ const Background = new Lang.Class({
GLib.Source.set_name_by_id(this._updateAnimationTimeoutId, '[gnome-shell] this._updateAnimation');
},
_loadAnimation: function(filename) {
this._cache.getAnimation({ filename: filename,
onLoaded: Lang.bind(this, function(animation) {
this._animation = animation;
_loadAnimation: function(file) {
this._cache.getAnimation({ file: file,
onLoaded: Lang.bind(this, function(animation) {
this._animation = animation;
if (!this._animation || this._cancellable.is_cancelled()) {
this._setLoaded();
return;
}
if (!this._animation || this._cancellable.is_cancelled()) {
this._setLoaded();
return;
}
this._updateAnimation();
this._watchFile(filename);
})
});
this._updateAnimation();
this._watchFile(file);
})
});
},
_loadImage: function(filename) {
this.background.set_filename(filename, this._style);
this._watchFile(filename);
_loadImage: function(file) {
this.background.set_file(file, this._style);
this._watchFile(file);
let cache = Meta.BackgroundImageCache.get_default();
let image = cache.load(filename);
let image = cache.load(file);
if (image.is_loaded())
this._setLoaded();
else {
@ -418,11 +434,11 @@ const Background = new Lang.Class({
}
},
_loadFile: function(filename) {
if (filename.endsWith('.xml'))
this._loadAnimation(filename);
_loadFile: function(file) {
if (file.get_basename().endsWith('.xml'))
this._loadAnimation(file);
else
this._loadImage(filename);
this._loadImage(file);
},
_load: function () {
@ -430,12 +446,12 @@ const Background = new Lang.Class({
this._loadPattern();
if (!this._filename) {
if (!this._file) {
this._setLoaded();
return;
}
this._loadFile(this._filename);
this._loadFile(this._file);
},
});
Signals.addSignalMethods(Background.prototype);
@ -446,11 +462,12 @@ const SystemBackground = new Lang.Class({
Name: 'SystemBackground',
_init: function() {
let filename = global.datadir + '/theme/noise-texture.png';
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/noise-texture.png');
if (_systemBackground == null) {
_systemBackground = new Meta.Background({ meta_screen: global.screen });
_systemBackground.set_filename(filename, GDesktopEnums.BackgroundStyle.WALLPAPER);
_systemBackground.set_color(DEFAULT_BACKGROUND_COLOR);
_systemBackground.set_file(file, GDesktopEnums.BackgroundStyle.WALLPAPER);
}
this.actor = new Meta.BackgroundActor({ meta_screen: global.screen,
@ -458,7 +475,7 @@ const SystemBackground = new Lang.Class({
background: _systemBackground });
let cache = Meta.BackgroundImageCache.get_default();
let image = cache.load(filename);
let image = cache.load(file);
if (image.is_loaded()) {
image = null;
let id = GLib.idle_add(GLib.PRIORITY_DEFAULT, Lang.bind(this, function() {
@ -507,20 +524,17 @@ const BackgroundSource = new Lang.Class({
},
getBackground: function(monitorIndex) {
let filename = null;
let file = null;
let style;
if (this._overrideImage != null) {
filename = this._overrideImage;
file = Gio.File.new_for_path(this._overrideImage);
style = GDesktopEnums.BackgroundStyle.ZOOM; // Hardcode
} else {
style = this._settings.get_enum(BACKGROUND_STYLE_KEY);
if (style != GDesktopEnums.BackgroundStyle.NONE) {
let uri = this._settings.get_string(PICTURE_URI_KEY);
if (GLib.uri_parse_scheme(uri) != null)
filename = Gio.File.new_for_uri(uri).get_path();
else
filename = uri;
file = Gio.File.new_for_commandline_arg(uri);
}
}
@ -528,7 +542,7 @@ const BackgroundSource = new Lang.Class({
// they can have variants that depend on the aspect ratio and
// size of the monitor; for other backgrounds we can use the
// same background object for all monitors.
if (filename == null || !filename.endsWith('.xml'))
if (file == null || !file.get_basename().endsWith('.xml'))
monitorIndex = 0;
if (!(monitorIndex in this._backgrounds)) {
@ -536,7 +550,7 @@ const BackgroundSource = new Lang.Class({
monitorIndex: monitorIndex,
layoutManager: this._layoutManager,
settings: this._settings,
filename: filename,
file: file,
style: style
});
@ -569,9 +583,9 @@ const Animation = new Lang.Class({
Name: 'Animation',
_init: function(params) {
params = Params.parse(params, { filename: null });
params = Params.parse(params, { file: null });
this.filename = params.filename;
this.file = params.file;
this.keyFrameFiles = [];
this.transitionProgress = 0.0;
this.transitionDuration = 0.0;
@ -579,9 +593,7 @@ const Animation = new Lang.Class({
},
load: function(callback) {
let file = Gio.File.new_for_path(this.filename);
this._show = new GnomeDesktop.BGSlideShow({ filename: this.filename });
this._show = new GnomeDesktop.BGSlideShow({ filename: this.file.get_path() });
this._show.load_async(null,
Lang.bind(this,
@ -601,16 +613,16 @@ const Animation = new Lang.Class({
if (this._show.get_num_slides() < 1)
return;
let [progress, duration, isFixed, file1, file2] = this._show.get_current_slide(monitor.width, monitor.height);
let [progress, duration, isFixed, filename1, filename2] = this._show.get_current_slide(monitor.width, monitor.height);
this.transitionDuration = duration;
this.transitionProgress = progress;
if (file1)
this.keyFrameFiles.push(file1);
if (filename1)
this.keyFrameFiles.push(Gio.File.new_for_path(filename1));
if (file2)
this.keyFrameFiles.push(file2);
if (filename2)
this.keyFrameFiles.push(Gio.File.new_for_path(filename2));
},
});
Signals.addSignalMethods(Animation.prototype);

View File

@ -13,9 +13,11 @@ const Shell = imports.gi.Shell;
const MSECS_IN_DAY = 24 * 60 * 60 * 1000;
const SHOW_WEEKDATE_KEY = 'show-weekdate';
const ELLIPSIS_CHAR = '\u2026';
// alias to prevent xgettext from picking up strings translated in GTK+
const gtk30_ = Gettext_gtk30.gettext;
const NC_ = function(context, str) { return str; };
// in org.gnome.desktop.interface
const CLOCK_FORMAT_KEY = 'clock-format';
@ -32,12 +34,10 @@ function _sameDay(dateA, dateB) {
return _sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
}
/* TODO: maybe needs config - right now we assume that Saturday and
* Sunday are non-work days (not true in e.g. Israel, it's Sunday and
* Monday there)
*/
function _isWorkDay(date) {
return date.getDay() != 0 && date.getDay() != 6;
/* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
let days = C_('calendar-no-work', "06");
return days.indexOf(date.getDay().toString()) == -1;
}
function _getBeginningOfDay(date) {
@ -58,19 +58,21 @@ function _getEndOfDay(date) {
return ret;
}
function _formatEventTime(event, clockFormat) {
function _formatEventTime(event, clockFormat, periodBegin, periodEnd) {
let ret;
if (event.allDay) {
let allDay = (event.allDay || (event.date <= periodBegin && event.end >= periodEnd));
if (allDay) {
/* Translators: Shown in calendar event list for all day events
* Keep it short, best if you can use less then 10 characters
*/
ret = C_("event list time", "All Day");
} else {
let date = event.date >= periodBegin ? event.date : event.end;
switch (clockFormat) {
case '24h':
/* Translators: Shown in calendar event list, if 24h format,
\u2236 is a ratio character, similar to : */
ret = event.date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
ret = date.toLocaleFormat(C_("event list time", "%H\u2236%M"));
break;
default:
@ -79,30 +81,13 @@ function _formatEventTime(event, clockFormat) {
/* Translators: Shown in calendar event list, if 12h format,
\u2236 is a ratio character, similar to : and \u2009 is
a thin space */
ret = event.date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
ret = date.toLocaleFormat(C_("event list time", "%l\u2236%M\u2009%p"));
break;
}
}
return ret;
}
function _getCalendarWeekForDate(date) {
// Based on the algorithms found here:
// http://en.wikipedia.org/wiki/Talk:ISO_week_date
let midnightDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
// Need to get Monday to be 1 ... Sunday to be 7
let dayOfWeek = 1 + ((midnightDate.getDay() + 6) % 7);
let nearestThursday = new Date(midnightDate.getFullYear(), midnightDate.getMonth(),
midnightDate.getDate() + (4 - dayOfWeek));
let jan1st = new Date(nearestThursday.getFullYear(), 0, 1);
let diffDate = nearestThursday - jan1st;
let dayNumber = Math.floor(Math.abs(diffDate) / MSECS_IN_DAY);
let weekNumber = Math.floor(dayNumber / 7) + 1;
return weekNumber;
}
function _getCalendarDayAbbreviation(dayNumber) {
let abbreviations = [
/* Translators: Calendar grid abbreviation for Sunday.
@ -248,11 +233,24 @@ const DBusEventSource = new Lang.Class({
this._initialized = false;
this._dbusProxy = new CalendarServer();
this._dbusProxy.init_async(GLib.PRIORITY_DEFAULT, null, Lang.bind(this, function(object, result) {
let loaded = false;
try {
this._dbusProxy.init_finish(result);
loaded = true;
} catch(e) {
log('Error loading calendars: ' + e.message);
return;
if (e.matches(Gio.DBusError, Gio.DBusError.TIMED_OUT)) {
// Ignore timeouts and install signals as normal, because with high
// probability the service will appear later on, and we will get a
// NameOwnerChanged which will finish loading
//
// (But still _initialized to false, because the proxy does not know
// about the HasCalendars property and would cause an exception trying
// to read it)
} else {
log('Error loading calendars: ' + e.message);
return;
}
}
this._dbusProxy.connectSignal('Changed', Lang.bind(this, this._onChanged));
@ -268,9 +266,11 @@ const DBusEventSource = new Lang.Class({
this.emit('notify::has-calendars');
}));
this._initialized = true;
this.emit('notify::has-calendars');
this._onNameAppeared();
this._initialized = loaded;
if (loaded) {
this.emit('notify::has-calendars');
this._onNameAppeared();
}
}));
},
@ -292,6 +292,7 @@ const DBusEventSource = new Lang.Class({
},
_onNameAppeared: function(owner) {
this._initialized = true;
this._resetCache();
this._loadEvents(true);
},
@ -361,6 +362,12 @@ const DBusEventSource = new Lang.Class({
result.push(event);
}
}
result.sort(function(event1, event2) {
// sort events by end time on ending day
let d1 = event1.date < begin && event1.end <= end ? event1.end : event1.date;
let d2 = event2.date < begin && event2.end <= end ? event2.end : event2.date;
return d1.getTime() - d2.getTime();
});
return result;
},
@ -661,7 +668,7 @@ const Calendar = new Lang.Class({
this._buttons.push(button);
if (this._useWeekdate && iter.getDay() == 4) {
let label = new St.Label({ text: _getCalendarWeekForDate(iter).toString(),
let label = new St.Label({ text: iter.toLocaleFormat('%V'),
style_class: 'calendar-day-base calendar-week-number'});
layout.attach(label, rtl ? 7 : 0, row, 1, 1);
}
@ -721,12 +728,16 @@ const EventsList = new Lang.Class({
this._eventSource.connect('changed', Lang.bind(this, this._update));
},
_addEvent: function(event, index, includeDayName) {
_addEvent: function(event, index, includeDayName, periodBegin, periodEnd) {
let dayString;
if (includeDayName)
dayString = _getEventDayAbbreviation(event.date.getDay());
else
if (includeDayName) {
if (event.date >= periodBegin)
dayString = _getEventDayAbbreviation(event.date.getDay());
else /* show event end day if it began earlier */
dayString = _getEventDayAbbreviation(event.end.getDay());
} else {
dayString = '';
}
let dayLabel = new St.Label({ style_class: 'events-day-dayname',
text: dayString,
@ -739,16 +750,30 @@ const EventsList = new Lang.Class({
let layout = this.actor.layout_manager;
layout.attach(dayLabel, rtl ? 2 : 0, index, 1, 1);
let clockFormat = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
let timeString = _formatEventTime(event, clockFormat);
let timeString = _formatEventTime(event, clockFormat, periodBegin, periodEnd);
let timeLabel = new St.Label({ style_class: 'events-day-time',
text: timeString,
y_align: Clutter.ActorAlign.START });
timeLabel.clutter_text.line_wrap = false;
timeLabel.clutter_text.ellipsize = false;
layout.attach(timeLabel, 1, index, 1, 1);
let preEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
text: ELLIPSIS_CHAR,
y_align: Clutter.ActorAlign.START });
let postEllipsisLabel = new St.Label({ style_class: 'events-day-time-ellipses',
text: ELLIPSIS_CHAR,
y_align: Clutter.ActorAlign.START });
if (event.allDay || event.date >= periodBegin)
preEllipsisLabel.opacity = 0;
if (event.allDay || event.end <= periodEnd)
postEllipsisLabel.opacity = 0;
let timeLabelBoxLayout = new St.BoxLayout();
timeLabelBoxLayout.add(preEllipsisLabel);
timeLabelBoxLayout.add(timeLabel);
timeLabelBoxLayout.add(postEllipsisLabel);
layout.attach(timeLabelBoxLayout, 1, index, 1, 1);
let titleLabel = new St.Label({ style_class: 'events-day-task',
text: event.summary,
@ -759,8 +784,8 @@ const EventsList = new Lang.Class({
layout.attach(titleLabel, rtl ? 0 : 2, index, 1, 1);
},
_addPeriod: function(header, index, begin, end, includeDayName, showNothingScheduled) {
let events = this._eventSource.getEvents(begin, end);
_addPeriod: function(header, index, periodBegin, periodEnd, includeDayName, showNothingScheduled) {
let events = this._eventSource.getEvents(periodBegin, periodEnd);
if (events.length == 0 && !showNothingScheduled)
return index;
@ -771,15 +796,14 @@ const EventsList = new Lang.Class({
index++;
for (let n = 0; n < events.length; n++) {
this._addEvent(events[n], index, includeDayName);
this._addEvent(events[n], index, includeDayName, periodBegin, periodEnd);
index++;
}
if (events.length == 0 && showNothingScheduled) {
let now = new Date();
/* Translators: Text to show if there are no events */
let nothingEvent = new CalendarEvent(now, now, _("Nothing Scheduled"), true);
this._addEvent(nothingEvent, index, false);
let nothingEvent = new CalendarEvent(periodBegin, periodBegin, _("Nothing Scheduled"), true);
this._addEvent(nothingEvent, index, false, periodBegin, periodEnd);
index++;
}
@ -792,14 +816,17 @@ const EventsList = new Lang.Class({
let dayBegin = _getBeginningOfDay(day);
let dayEnd = _getEndOfDay(day);
let dayString;
let dayFormat;
let now = new Date();
if (_sameYear(day, now))
/* Translators: Shown on calendar heading when selected day occurs on current year */
dayString = day.toLocaleFormat(C_("calendar heading", "%A, %B %d"));
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
"%A, %B %d"));
else
/* Translators: Shown on calendar heading when selected day occurs on different year */
dayString = day.toLocaleFormat(C_("calendar heading", "%A, %B %d, %Y"));
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
"%A, %B %d, %Y"));
let dayString = day.toLocaleFormat(dayFormat);
this._addPeriod(dayString, 0, dayBegin, dayEnd, false, true);
},

View File

@ -380,6 +380,12 @@ const VPNRequestHandler = new Lang.Class({
argv.push('-i');
if (flags & NMClient.SecretAgentGetSecretsFlags.REQUEST_NEW)
argv.push('-r');
if (authHelper.supportsHints) {
for (let i = 0; i < hints.length; i++) {
argv.push('-t');
argv.push(hints[i]);
}
}
this._newStylePlugin = authHelper.externalUIMode;
@ -598,7 +604,9 @@ const NetworkAgent = new Lang.Class({
Name: 'NetworkAgent',
_init: function() {
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent' });
this._native = new Shell.NetworkAgent({ identifier: 'org.gnome.Shell.NetworkAgent',
capabilities: NMClient.SecretAgentCapabilities.VPN_HINTS
});
this._dialogs = { };
this._vpnRequests = { };
@ -698,16 +706,23 @@ const NetworkAgent = new Lang.Class({
let service = keyfile.get_string('VPN Connection', 'service');
let binary = keyfile.get_string('GNOME', 'auth-dialog');
let externalUIMode = false;
let hints = false;
try {
externalUIMode = keyfile.get_boolean('GNOME', 'supports-external-ui-mode');
} catch(e) { } // ignore errors if key does not exist
try {
hints = keyfile.get_boolean('GNOME', 'supports-hints');
} catch(e) { } // ignore errors if key does not exist
let path = binary;
if (!GLib.path_is_absolute(path)) {
path = GLib.build_filenamev([Config.LIBEXECDIR, path]);
}
if (GLib.file_test(path, GLib.FileTest.IS_EXECUTABLE))
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode };
this._vpnBinaries[service] = { fileName: path, externalUIMode: externalUIMode, supportsHints: hints };
else
throw new Error('VPN plugin at %s is not executable'.format(path));
} catch(e) {

View File

@ -36,6 +36,8 @@ const NotificationDirection = {
RECEIVED: 'chat-received'
};
const N_ = function(s) { return s; };
function makeMessageFromTpMessage(tpMessage, direction) {
let [text, flags] = tpMessage.to_text();
@ -950,70 +952,70 @@ const ChatNotification = new Lang.Class({
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%H\u2236%M");
format = N_("%H\u2236%M");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 24h format. i.e. "Yesterday, 14:30" */
// xgettext:no-c-format
format = _("Yesterday, %H\u2236%M");
format = N_("Yesterday, %H\u2236%M");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 24h format. i.e. "Monday, 14:30" */
// xgettext:no-c-format
format = _("%A, %H\u2236%M");
format = N_("%A, %H\u2236%M");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 24h format.
i.e. "May 25, 14:30" */
// xgettext:no-c-format
format = _("%B %d, %H\u2236%M");
format = N_("%B %d, %H\u2236%M");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 24h format.
i.e. "May 25 2012, 14:30" */
// xgettext:no-c-format
format = _("%B %d %Y, %H\u2236%M");
format = N_("%B %d %Y, %H\u2236%M");
}
} else {
// Show only the time if date is on today
if(daysAgo < 1){
/* Translators: Time in 24h format */
format = _("%l\u2236%M %p");
format = N_("%l\u2236%M %p");
}
// Show the word "Yesterday" and time if date is on yesterday
else if(daysAgo <2){
/* Translators: this is the word "Yesterday" followed by a
time string in 12h format. i.e. "Yesterday, 2:30 pm" */
// xgettext:no-c-format
format = _("Yesterday, %l\u2236%M %p");
format = N_("Yesterday, %l\u2236%M %p");
}
// Show a week day and time if date is in the last week
else if (daysAgo < 7) {
/* Translators: this is the week day name followed by a time
string in 12h format. i.e. "Monday, 2:30 pm" */
// xgettext:no-c-format
format = _("%A, %l\u2236%M %p");
format = N_("%A, %l\u2236%M %p");
} else if (date.getYear() == now.getYear()) {
/* Translators: this is the month name and day number
followed by a time string in 12h format.
i.e. "May 25, 2:30 pm" */
// xgettext:no-c-format
format = _("%B %d, %l\u2236%M %p");
format = N_("%B %d, %l\u2236%M %p");
} else {
/* Translators: this is the month name, day number, year
number followed by a time string in 12h format.
i.e. "May 25 2012, 2:30 pm"*/
// xgettext:no-c-format
format = _("%B %d %Y, %l\u2236%M %p");
format = N_("%B %d %Y, %l\u2236%M %p");
}
}
return date.toLocaleFormat(format);
return date.toLocaleFormat(Shell.util_translate_time_string(format));
},
appendTimestamp: function() {
@ -1264,9 +1266,8 @@ const SubscriptionRequestNotification = new Lang.Class({
let file = contact.get_avatar_file();
if (file) {
let uri = file.get_uri();
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
iconBox.child = textureCache.load_uri_async(uri, iconBox._size, iconBox._size, scaleFactor);
iconBox.child = textureCache.load_file_async(file, iconBox._size, iconBox._size, scaleFactor);
}
else {
iconBox.child = new St.Icon({ icon_name: 'avatar-default',

View File

@ -3,6 +3,7 @@
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const GnomeDesktop = imports.gi.GnomeDesktop;
const GObject = imports.gi.GObject;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Cairo = imports.cairo;
@ -124,14 +125,19 @@ const DateMenuButton = new Lang.Class({
if (isOpen) {
let now = new Date();
this._calendar.setDate(now);
/* Translators: This is the date format to use when the calendar popup is
* shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
*/
let dateFormat = Shell.util_translate_time_string (N_("%A %B %e, %Y"));
this._date.set_label(now.toLocaleFormat(dateFormat));
}
}));
// Done with hbox for calendar and event list
this._clock = new GnomeDesktop.WallClock();
this._clock.connect('notify::clock', Lang.bind(this, this._updateClockAndDate));
this._updateClockAndDate();
this._clock.bind_property('clock', this._clockDisplay, 'text', GObject.BindingFlags.SYNC_CREATE);
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
this._sessionUpdated();
@ -141,7 +147,7 @@ const DateMenuButton = new Lang.Class({
let now = new Date();
return now.getYear() == date.getYear() &&
now.getMonth() == date.getMonth() &&
now.getDay() == date.getDay();
now.getDate() == date.getDate();
},
_appInstalledChanged: function() {
@ -167,6 +173,10 @@ const DateMenuButton = new Lang.Class({
}
},
_getEventSource: function() {
return new Calendar.DBusEventSource();
},
_setEventSource: function(eventSource) {
if (this._eventSource)
this._eventSource.destroy();
@ -184,7 +194,7 @@ const DateMenuButton = new Lang.Class({
let eventSource;
let showEvents = Main.sessionMode.showCalendarEvents;
if (showEvents) {
eventSource = new Calendar.DBusEventSource();
eventSource = this._getEventSource();
} else {
eventSource = new Calendar.EmptyEventSource();
}
@ -196,16 +206,6 @@ const DateMenuButton = new Lang.Class({
this._dateAndTimeSeparator.actor.visible = Main.sessionMode.allowSettings;
},
_updateClockAndDate: function() {
this._clockDisplay.set_text(this._clock.clock);
/* Translators: This is the date format to use when the calendar popup is
* shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
*/
let dateFormat = _("%A %B %e, %Y");
let displayDate = new Date();
this._date.set_label(displayDate.toLocaleFormat(dateFormat));
},
_getCalendarApp: function() {
if (this._calendarApp !== undefined)
return this._calendarApp;

View File

@ -6,6 +6,8 @@ const Meta = imports.gi.Meta;
const Clutter = imports.gi.Clutter;
const St = imports.gi.St;
const Main = imports.ui.main;
const EDGE_THRESHOLD = 20;
const DRAG_DISTANCE = 80;
@ -13,9 +15,10 @@ const EdgeDragAction = new Lang.Class({
Name: 'EdgeDragAction',
Extends: Clutter.GestureAction,
_init : function(side) {
_init : function(side, allowedModes) {
this.parent();
this._side = side;
this._allowedModes = allowedModes;
this.set_n_touch_points(1);
global.display.connect('grab-op-begin', Lang.bind(this, function() {
@ -34,6 +37,9 @@ const EdgeDragAction = new Lang.Class({
if (this.get_n_current_points() == 0)
return false;
if (!(this._allowedModes & Main.actionMode))
return false;
let [x, y] = this.get_press_coords(0);
let monitorRect = this._getMonitorRect(x, y);

View File

@ -77,6 +77,7 @@ function init() {
window._ = Gettext.gettext;
window.C_ = Gettext.pgettext;
window.ngettext = Gettext.ngettext;
window.N_ = function(s) { return s; };
// Miscellaneous monkeypatching
_patchContainerClass(St.BoxLayout);

View File

@ -203,14 +203,16 @@ const InstallExtensionDialog = new Lang.Class({
let message = _("Download and install “%s” from extensions.gnome.org?").format(info.name);
let box = new St.BoxLayout();
let box = new St.BoxLayout({ style_class: 'prompt-dialog-main-layout',
vertical: false });
this.contentLayout.add(box);
let gicon = new Gio.FileIcon({ file: Gio.File.new_for_uri(REPOSITORY_URL_BASE + info.icon) })
let icon = new St.Icon({ gicon: gicon });
box.add(icon);
let label = new St.Label({ text: message });
let label = new St.Label({ style_class: 'prompt-dialog-headline',
text: message });
box.add(label);
},

View File

@ -74,7 +74,7 @@ function disableExtension(uuid) {
if (extension.stylesheet) {
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
theme.unload_stylesheet(extension.stylesheet.get_path());
theme.unload_stylesheet(extension.stylesheet);
}
try {
@ -118,7 +118,7 @@ function enableExtension(uuid) {
let stylesheetFile = extension.dir.get_child(stylesheetNames[i]);
if (stylesheetFile.query_exists(null)) {
let theme = St.ThemeContext.get_for_stage(global.stage).get_theme();
theme.load_stylesheet(stylesheetFile.get_path());
theme.load_stylesheet(stylesheetFile);
extension.stylesheet = stylesheetFile;
break;
}

View File

@ -20,6 +20,7 @@ const EXTRA_SPACE_ANIMATION_TIME = 0.25;
const ANIMATION_TIME_IN = 0.350;
const ANIMATION_TIME_OUT = 1/2 * ANIMATION_TIME_IN;
const ANIMATION_MAX_DELAY_FOR_ITEM = 2/3 * ANIMATION_TIME_IN;
const ANIMATION_BASE_DELAY_FOR_ITEM = 1/4 * ANIMATION_MAX_DELAY_FOR_ITEM;
const ANIMATION_MAX_DELAY_OUT_FOR_ITEM = 2/3 * ANIMATION_TIME_OUT;
const ANIMATION_FADE_IN_TIME_FOR_ITEM = 1/4 * ANIMATION_TIME_IN;
@ -429,33 +430,30 @@ const IconGrid = new Lang.Class({
return;
}
// For few items the animation can be slow, so use a smaller
// delay when there are less than 4 items
// (ANIMATION_BASE_DELAY_FOR_ITEM = 1/4 *
// ANIMATION_MAX_DELAY_FOR_ITEM)
let maxDelay = Math.min(ANIMATION_BASE_DELAY_FOR_ITEM * actors.length,
ANIMATION_MAX_DELAY_FOR_ITEM);
for (let index = 0; index < actors.length; index++) {
let actor = actors[index];
actor.opacity = 0;
actor.reactive = false;
actor.set_scale(0, 0);
actor.set_pivot_point(0.5, 0.5);
let delay = index / actors.length * ANIMATION_MAX_DELAY_FOR_ITEM;
let [originalX, originalY] = actor.get_transformed_position();
let [originalWidth, originalHeight,,] = this._getAllocatedChildSizeAndSpacing(actor);
let actorClone = new Clutter.Clone({ source: actor });
Main.uiGroup.add_actor(actorClone);
actorClone.set_position(originalX, originalY);
actorClone.set_scale(0, 0);
actorClone.set_pivot_point(0.5, 0.5);
actorClone.set_size(originalWidth, originalHeight);
let delay = index / actors.length * maxDelay;
let bounceUpTime = ANIMATION_TIME_IN / 4;
let isLastItem = index == actors.length - 1;
Tweener.addTween(actorClone,
Tweener.addTween(actor,
{ time: bounceUpTime,
transition: 'easeInOutQuad',
delay: delay,
scale_x: ANIMATION_BOUNCE_ICON_SCALE,
scale_y: ANIMATION_BOUNCE_ICON_SCALE,
onComplete: Lang.bind(this, function() {
Tweener.addTween(actorClone,
Tweener.addTween(actor,
{ time: ANIMATION_TIME_IN - bounceUpTime,
transition: 'easeInOutQuad',
scale_x: 1,
@ -463,10 +461,7 @@ const IconGrid = new Lang.Class({
onComplete: Lang.bind(this, function() {
if (isLastItem)
this._animationDone();
actor.opacity = 255;
actor.reactive = true;
actorClone.destroy();
})
});
})

View File

@ -75,6 +75,7 @@ const Key = new Lang.Class({
_init : function(key) {
this._key = key;
this.actor = this._makeKey(key, GLib.markup_escape_text(key.label, -1));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._extended_keys = this._key.get_extended_keys();
this._extended_keyboard = null;
@ -97,6 +98,13 @@ const Key = new Lang.Class({
}
},
_onDestroy: function() {
if (this._boxPointer) {
this._boxPointer.actor.destroy();
this._boxPointer = null;
}
},
_makeKey: function (key, label) {
let button = new St.Button ({ label: label,
style_class: 'keyboard-key' });
@ -179,14 +187,7 @@ const Keyboard = new Lang.Class({
this._watchNameId = Gio.bus_watch_name(Gio.BusType.SESSION, CURSOR_BUS_NAME, 0,
Lang.bind(this, this._sync),
Lang.bind(this, this._sync));
this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
CARIBOU_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
}));
this._daemonProxy = null;
this._cursorProxy = new CursorManagerProxy(Gio.DBus.session, CURSOR_BUS_NAME,
CURSOR_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
@ -248,15 +249,28 @@ const Keyboard = new Lang.Class({
this.actor = null;
this._destroySource();
this._daemonProxy.QuitRemote(function (result, error) {
if (error) {
log(error.message);
return;
}
});
if (this._daemonProxy) {
this._daemonProxy.QuitRemote(function (result, error) {
if (error) {
log(error.message);
return;
}
});
this._daemonProxy = null;
}
},
_setupKeyboard: function() {
if (!this._daemonProxy) {
this._daemonProxy = new CaribouDaemonProxy(Gio.DBus.session, CARIBOU_BUS_NAME,
CARIBOU_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
}));
}
this._daemonProxy.RunRemote(function (result, error) {
if (error) {
log(error.message);
@ -602,7 +616,7 @@ const Keyboard = new Lang.Class({
_moveTemporarily: function () {
let currentWindow = global.screen.get_display().focus_window;
let rect = currentWindow.get_outer_rect();
let rect = currentWindow.get_frame_rect();
let newX = rect.x;
let newY = 3 * this.actor.height / 2;

View File

@ -20,7 +20,6 @@ const Tweener = imports.ui.tweener;
const STARTUP_ANIMATION_TIME = 0.5;
const KEYBOARD_ANIMATION_TIME = 0.15;
const BACKGROUND_FADE_ANIMATION_TIME = 1.0;
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
// The message tray takes this much pressure
// in the pressure barrier at once to release it.
@ -160,10 +159,10 @@ const LayoutManager = new Lang.Class({
this._isPopupWindowVisible = false;
this._startingUp = true;
// Normally, the stage is always covered so Clutter doesn't need to clear
// it; however it becomes visible during the startup animation
// See the comment below for a longer explanation
global.stage.background_color = DEFAULT_BACKGROUND_COLOR;
// We don't want to paint the stage background color because either
// the SystemBackground we create or the MetaBackgroundActor inside
// global.window_group covers the entirety of the screen.
global.stage.no_clear_hint = true;
// Set up stage hierarchy to group all UI actors under one container.
this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' });
@ -230,6 +229,10 @@ const LayoutManager = new Lang.Class({
global.stage.remove_actor(global.top_window_group);
this.uiGroup.add_actor(global.top_window_group);
let feedbackGroup = Meta.get_feedback_group_for_screen(global.screen);
global.stage.remove_actor(feedbackGroup);
this.uiGroup.add_actor(feedbackGroup);
this._backgroundGroup = new Meta.BackgroundGroup();
global.window_group.add_child(this._backgroundGroup);
this._backgroundGroup.lower_bottom();
@ -259,7 +262,6 @@ const LayoutManager = new Lang.Class({
this._inOverview = true;
this._updateVisibility();
this._updateRegions();
},
hideOverview: function() {
@ -267,7 +269,6 @@ const LayoutManager = new Lang.Class({
this._inOverview = false;
this._updateVisibility();
this._queueUpdateRegions();
},
_sessionUpdated: function() {
@ -421,10 +422,7 @@ const LayoutManager = new Lang.Class({
this.panelBox.set_position(this.primaryMonitor.x, this.primaryMonitor.y);
this.panelBox.set_size(this.primaryMonitor.width, -1);
if (this.keyboardIndex < 0)
this.keyboardIndex = this.primaryIndex;
else
this._updateKeyboardBox();
this.keyboardIndex = this.primaryIndex;
this.trayBox.set_position(this.bottomMonitor.x,
this.bottomMonitor.y + this.bottomMonitor.height);
@ -460,8 +458,8 @@ const LayoutManager = new Lang.Class({
_setupTrayPressure: function() {
this._trayPressure = new PressureBarrier(MESSAGE_TRAY_PRESSURE_THRESHOLD,
MESSAGE_TRAY_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
this._trayPressure.setEventFilter(this._trayBarrierEventFilter);
this._trayPressure.connect('trigger', function(barrier) {
if (Main.layoutManager.bottomMonitor.inFullscreen)
@ -589,10 +587,6 @@ const LayoutManager = new Lang.Class({
//
// When starting a normal user session, we want to grow it out of the middle
// of the screen.
//
// Usually, we don't want to paint the stage background color because the
// MetaBackgroundActor inside global.window_group covers the entirety of the
// screen. So, we set no_clear_hint at the end of the animation.
_prepareStartupAnimation: function() {
// During the initial transition, add a simple actor to block all events,
@ -673,10 +667,6 @@ const LayoutManager = new Lang.Class({
},
_startupAnimationComplete: function() {
// At this point, the UI group is covering everything, so
// we no longer need to clear the stage
global.stage.no_clear_hint = true;
this._coverPane.destroy();
this._coverPane = null;
@ -915,9 +905,6 @@ const LayoutManager = new Lang.Class({
},
_queueUpdateRegions: function() {
if (Main.sessionMode.isGreeter)
return;
if (this._startingUp)
return;
@ -951,13 +938,16 @@ const LayoutManager = new Lang.Class({
},
_updateRegions: function() {
let rects = [], struts = [], i;
if (this._updateRegionIdle) {
Meta.later_remove(this._updateRegionIdle);
delete this._updateRegionIdle;
}
// No need to update when we have a modal.
if (Main.modalCount > 0)
return GLib.SOURCE_REMOVE;
let rects = [], struts = [], i;
let isPopupMenuVisible = global.top_window_group.get_children().some(isPopupMetaWindow);
let wantsInputRegion = !isPopupMenuVisible;
@ -1043,7 +1033,13 @@ const LayoutManager = new Lang.Class({
}
return GLib.SOURCE_REMOVE;
}
},
modalEnded: function() {
// We don't update the stage input region while in a modal,
// so queue an update now.
this._queueUpdateRegions();
},
});
Signals.addSignalMethods(LayoutManager.prototype);
@ -1071,8 +1067,8 @@ const HotCorner = new Lang.Class({
this._pressureBarrier = new PressureBarrier(HOT_CORNER_PRESSURE_THRESHOLD,
HOT_CORNER_PRESSURE_TIMEOUT,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
this._pressureBarrier.connect('trigger', Lang.bind(this, this._toggleOverview));
// Cache the three ripples instead of dynamically creating and destroying them.
@ -1249,10 +1245,10 @@ const HotCorner = new Lang.Class({
const PressureBarrier = new Lang.Class({
Name: 'PressureBarrier',
_init: function(threshold, timeout, keybindingMode) {
_init: function(threshold, timeout, actionMode) {
this._threshold = threshold;
this._timeout = timeout;
this._keybindingMode = keybindingMode;
this._actionMode = actionMode;
this._barriers = [];
this._eventFilter = null;
@ -1355,7 +1351,7 @@ const PressureBarrier = new Lang.Class({
return;
// Throw out all events not in the proper keybinding mode
if (!(this._keybindingMode & Main.keybindingMode))
if (!(this._actionMode & Main.actionMode))
return;
let slide = this._getDistanceAlongBarrier(barrier, event);

View File

@ -1086,7 +1086,7 @@ const LookingGlass = new Lang.Class({
if (this._open)
return;
if (!Main.pushModal(this._entry, { keybindingMode: Shell.KeyBindingMode.LOOKING_GLASS }))
if (!Main.pushModal(this._entry, { actionMode: Shell.ActionMode.LOOKING_GLASS }))
return;
this._notebook.selectIndex(0);

View File

@ -1198,12 +1198,7 @@ const ZoomRegion = new Lang.Class({
// Add a background for when the magnified uiGroup is scrolled
// out of view (don't want to see desktop showing through).
this._background = new Clutter.Actor({ background_color: Main.DEFAULT_BACKGROUND_COLOR,
layout_manager: new Clutter.BinLayout(),
width: global.screen_width,
height: global.screen_height });
let noiseTexture = (new Background.SystemBackground()).actor;
this._background.add_actor(noiseTexture);
this._background = (new Background.SystemBackground()).actor;
mainGroup.add_actor(this._background);
// Clone the group that contains all of UI on the screen. This is the

View File

@ -4,6 +4,7 @@ const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Meta = imports.gi.Meta;
@ -40,8 +41,6 @@ const Magnifier = imports.ui.magnifier;
const XdndHandler = imports.ui.xdndHandler;
const Util = imports.misc.util;
const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff);
const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard';
const STICKY_KEYS_ENABLE = 'stickykeys-enable';
const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';
@ -64,7 +63,7 @@ let shellMountOpDBusService = null;
let screenSaverDBus = null;
let screencastService = null;
let modalCount = 0;
let keybindingMode = Shell.KeyBindingMode.NONE;
let actionMode = Shell.ActionMode.NONE;
let modalActorFocusStack = [];
let uiGroup = null;
let magnifier = null;
@ -77,18 +76,19 @@ let _cssStylesheet = null;
let _a11ySettings = null;
function _sessionUpdated() {
_loadDefaultStylesheet();
if (sessionMode.isPrimary)
_loadDefaultStylesheet();
wm.setCustomKeybindingHandler('panel-main-menu',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
sessionMode.hasOverview ? Lang.bind(overview, overview.toggle) : null);
wm.allowKeybinding('overlay-key', Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW);
wm.allowKeybinding('overlay-key', Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
wm.setCustomKeybindingHandler('panel-run-dialog',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
sessionMode.hasRunDialog ? openRunDialog : null);
if (!sessionMode.hasRunDialog) {
@ -111,6 +111,8 @@ function start() {
sessionMode = new SessionMode.SessionMode();
sessionMode.connect('updated', _sessionUpdated);
Gtk.Settings.get_default().connect('notify::gtk-theme-name',
_loadDefaultStylesheet);
_initializeUI();
shellDBusService = new ShellDBus.GnomeShell();
@ -131,6 +133,9 @@ function _initializeUI() {
Shell.WindowTracker.get_default();
Shell.AppUsage.get_default();
let resource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource');
resource._register();
_loadDefaultStylesheet();
// Setup the stage hierarchy early
@ -204,8 +209,8 @@ function _initializeUI() {
}
layoutManager.connect('startup-complete', function() {
if (keybindingMode == Shell.KeyBindingMode.NONE) {
keybindingMode = Shell.KeyBindingMode.NORMAL;
if (actionMode == Shell.ActionMode.NONE) {
actionMode = Shell.ActionMode.NORMAL;
}
if (screenShield) {
screenShield.lockIfWasLocked();
@ -224,12 +229,38 @@ function _initializeUI() {
});
}
function _loadDefaultStylesheet() {
if (!sessionMode.isPrimary)
return;
function _getStylesheet(name) {
let stylesheet;
let stylesheet = global.datadir + '/theme/' + sessionMode.stylesheetName;
if (_defaultCssStylesheet == stylesheet)
stylesheet = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/' + name);
if (stylesheet.query_exists(null))
return stylesheet;
stylesheet = Gio.File.new_for_path(global.datadir + '/theme/' + name);
if (stylesheet.query_exists(null))
return stylesheet;
return null;
}
function _getDefaultStylesheet() {
let stylesheet = null;
let name = sessionMode.stylesheetName;
// Look for a high-contrast variant first when using GTK+'s HighContrast
// theme
if (Gtk.Settings.get_default().gtk_theme_name == 'HighContrast')
stylesheet = _getStylesheet(name.replace('.css', '-high-contrast.css'));
if (stylesheet == null)
stylesheet = _getStylesheet(sessionMode.stylesheetName);
return stylesheet;
}
function _loadDefaultStylesheet() {
let stylesheet = _getDefaultStylesheet();
if (_defaultCssStylesheet && _defaultCssStylesheet.equal(stylesheet))
return;
_defaultCssStylesheet = stylesheet;
@ -241,7 +272,7 @@ function _loadDefaultStylesheet() {
*
* Get the theme CSS file that the shell will load
*
* Returns: A file path that contains the theme CSS,
* Returns: A #GFile that contains the theme CSS,
* null if using the default
*/
function getThemeStylesheet() {
@ -256,7 +287,7 @@ function getThemeStylesheet() {
* Set the theme CSS file that the shell will load
*/
function setThemeStylesheet(cssStylesheet) {
_cssStylesheet = cssStylesheet;
_cssStylesheet = cssStylesheet ? Gio.File.new_for_path(cssStylesheet) : null;
}
/**
@ -341,7 +372,7 @@ function _findModal(actor) {
* - options: Meta.ModalOptions flags to indicate that the pointer is
* already grabbed
*
* - keybindingMode: used to set the current Shell.KeyBindingMode to filter
* - actionMode: used to set the current Shell.ActionMode to filter
* global keybindings; the default of NONE will filter
* out all keybindings
*
@ -350,7 +381,7 @@ function _findModal(actor) {
function pushModal(actor, params) {
params = Params.parse(params, { timestamp: global.get_current_time(),
options: 0,
keybindingMode: Shell.KeyBindingMode.NONE });
actionMode: Shell.ActionMode.NONE });
if (modalCount == 0) {
if (!global.begin_modal(params.timestamp, params.options)) {
@ -380,9 +411,9 @@ function pushModal(actor, params) {
destroyId: actorDestroyId,
prevFocus: prevFocus,
prevFocusDestroyId: prevFocusDestroyId,
keybindingMode: keybindingMode });
actionMode: actionMode });
keybindingMode = params.keybindingMode;
actionMode = params.actionMode;
global.stage.set_key_focus(actor);
return true;
}
@ -408,7 +439,7 @@ function popModal(actor, timestamp) {
if (focusIndex < 0) {
global.stage.set_key_focus(null);
global.end_modal(timestamp);
keybindingMode = Shell.KeyBindingMode.NORMAL;
actionMode = Shell.ActionMode.NORMAL;
throw new Error('incorrect pop');
}
@ -421,7 +452,7 @@ function popModal(actor, timestamp) {
if (focusIndex == modalActorFocusStack.length - 1) {
if (record.prevFocus)
record.prevFocus.disconnect(record.prevFocusDestroyId);
keybindingMode = record.keybindingMode;
actionMode = record.actionMode;
global.stage.set_key_focus(record.prevFocus);
} else {
// If we have:
@ -446,7 +477,7 @@ function popModal(actor, timestamp) {
for (let i = modalActorFocusStack.length - 1; i > focusIndex; i--) {
modalActorFocusStack[i].prevFocus = modalActorFocusStack[i - 1].prevFocus;
modalActorFocusStack[i].prevFocusDestroyId = modalActorFocusStack[i - 1].prevFocusDestroyId;
modalActorFocusStack[i].keybindingMode = modalActorFocusStack[i - 1].keybindingMode;
modalActorFocusStack[i].actionMode = modalActorFocusStack[i - 1].actionMode;
}
}
modalActorFocusStack.splice(focusIndex, 1);
@ -454,9 +485,10 @@ function popModal(actor, timestamp) {
if (modalCount > 0)
return;
layoutManager.modalEnded();
global.end_modal(timestamp);
Meta.enable_unredirect_for_screen(global.screen);
keybindingMode = Shell.KeyBindingMode.NORMAL;
actionMode = Shell.ActionMode.NORMAL;
}
function createLookingGlass() {

View File

@ -1159,6 +1159,7 @@ const SourceActor = new Lang.Class({
this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight));
this.actor.connect('allocate', Lang.bind(this, this._allocate));
this.actor.connect('destroy', Lang.bind(this, function() {
this._source.disconnect(this._iconUpdatedId);
this._actorDestroyed = true;
}));
this._actorDestroyed = false;
@ -1170,7 +1171,7 @@ const SourceActor = new Lang.Class({
this.actor.add_actor(this._iconBin);
this._source.connect('icon-updated', Lang.bind(this, this._updateIcon));
this._iconUpdatedId = this._source.connect('icon-updated', Lang.bind(this, this._updateIcon));
this._updateIcon();
},
@ -1228,8 +1229,12 @@ const SourceActorWithLabel = new Lang.Class({
this.actor.add_actor(this._counterBin);
this._source.connect('count-updated', Lang.bind(this, this._updateCount));
this._countUpdatedId = this._source.connect('count-updated', Lang.bind(this, this._updateCount));
this._updateCount();
this.actor.connect('destroy', function() {
this._source.disconnect(this._countUpdatedId);
});
},
_allocate: function(actor, box, flags) {
@ -1847,7 +1852,7 @@ const MessageTray = new Lang.Class({
this.idleMonitor = Meta.IdleMonitor.get_core();
this._grabHelper = new GrabHelper.GrabHelper(this.actor,
{ keybindingMode: Shell.KeyBindingMode.MESSAGE_TRAY });
{ actionMode: Shell.ActionMode.MESSAGE_TRAY });
this._grabHelper.addActor(this._summaryBoxPointer.actor);
this._grabHelper.addActor(this.actor);
@ -1911,16 +1916,16 @@ const MessageTray = new Lang.Class({
Main.wm.addKeybinding('toggle-message-tray',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.MESSAGE_TRAY |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this.toggleAndNavigate));
Main.wm.addKeybinding('focus-active-notification',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.MESSAGE_TRAY |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.MESSAGE_TRAY |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._expandActiveNotification));
this._sources = new Map();
@ -1946,7 +1951,9 @@ const MessageTray = new Lang.Class({
this._messageTrayMenuButton.actor.connect('key-press-event',
Lang.bind(this, this._onTrayButtonKeyPress));
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM);
let gesture = new EdgeDragAction.EdgeDragAction(St.Side.BOTTOM,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW);
gesture.connect('activated', Lang.bind(this, this.toggle));
global.stage.add_action(gesture);
},
@ -2427,8 +2434,22 @@ const MessageTray = new Lang.Class({
if (shouldShowNotification && nextNotification) {
let limited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen;
let showNextNotification = (!limited || nextNotification.forFeedback || nextNotification.urgency == Urgency.CRITICAL);
if (showNextNotification)
this._showNotification();
if (showNextNotification) {
let len = this._notificationQueue.length;
if (len > 1) {
this._notificationQueue.length = 0;
let source = new SystemNotificationSource();
this.add(source);
let notification = new Notification(source, ngettext("%d new message", "%d new messages", len).format(len));
notification.setTransient(true);
notification.connect('clicked', Lang.bind(this, function() {
this.openTray();
}));
source.notify(notification);
} else {
this._showNotification();
}
}
}
} else if (this._notificationState == State.SHOWN) {
let expired = (this._userActiveWhileNotificationShown &&

View File

@ -41,14 +41,14 @@ const ModalDialog = new Lang.Class({
_init: function(params) {
params = Params.parse(params, { shellReactive: false,
styleClass: null,
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
actionMode: Shell.ActionMode.SYSTEM_MODAL,
shouldFadeIn: true,
shouldFadeOut: true,
destroyOnClose: true });
this.state = State.CLOSED;
this._hasModal = false;
this._keybindingMode = params.keybindingMode;
this._actionMode = params.actionMode;
this._shellReactive = params.shellReactive;
this._shouldFadeIn = params.shouldFadeIn;
this._shouldFadeOut = params.shouldFadeOut;
@ -194,7 +194,7 @@ const ModalDialog = new Lang.Class({
},
placeSpinner: function(layoutInfo) {
let spinnerIcon = global.datadir + '/theme/process-working.svg';
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0;
this._workSpinner.actor.show();
@ -362,7 +362,7 @@ const ModalDialog = new Lang.Class({
if (this._hasModal)
return true;
if (!Main.pushModal(this._group, { timestamp: timestamp,
keybindingMode: this._keybindingMode }))
actionMode: this._actionMode }))
return false;
this._hasModal = true;

View File

@ -509,7 +509,7 @@ const Overview = new Lang.Class({
if (shouldBeModal) {
if (!this._modal) {
if (Main.pushModal(this._overview,
{ keybindingMode: Shell.KeyBindingMode.OVERVIEW })) {
{ actionMode: Shell.ActionMode.OVERVIEW })) {
this._modal = true;
} else {
this.hide();
@ -605,9 +605,9 @@ const Overview = new Lang.Class({
return;
}
this._animateNotVisible();
this._shown = false;
this._animateNotVisible();
this._syncGrab();
},

View File

@ -64,7 +64,8 @@ const SlideLayout = new Lang.Class({
// flags only determine what to do if the allocated box is bigger
// than the actor's box.
let realDirection = getRtlSlideDirection(this._direction, child);
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth) : 0;
let alignX = (realDirection == SlideDirection.LEFT) ? (availWidth - natWidth)
: (availWidth - natWidth * this._slideX);
let actorBox = new Clutter.ActorBox();
actorBox.x1 = box.x1 + alignX + this._translationX;

View File

@ -181,6 +181,7 @@ const AppMenuButton = new Lang.Class({
this._targetApp = null;
this._appMenuNotifyId = 0;
this._actionGroupNotifyId = 0;
this._busyNotifyId = 0;
let bin = new St.Bin({ name: 'appMenu' });
bin.connect('style-changed', Lang.bind(this, this._onStyleChanged));
@ -273,7 +274,7 @@ const AppMenuButton = new Lang.Class({
_onStyleChanged: function(actor) {
let node = actor.get_theme_node();
let [success, icon] = node.lookup_url('spinner-image', false);
if (!success || this._spinnerIcon == icon)
if (!success || (this._spinnerIcon && this._spinnerIcon.equal(icon)))
return;
this._spinnerIcon = icon;
this._spinner = new Animation.AnimatedIcon(this._spinnerIcon, PANEL_ICON_SIZE);
@ -457,12 +458,17 @@ const AppMenuButton = new Lang.Class({
this._targetApp.disconnect(this._actionGroupNotifyId);
this._actionGroupNotifyId = 0;
}
if (this._busyNotifyId) {
this._targetApp.disconnect(this._busyNotifyId);
this._busyNotifyId = 0;
}
this._targetApp = targetApp;
if (this._targetApp) {
this._appMenuNotifyId = this._targetApp.connect('notify::menu', Lang.bind(this, this._sync));
this._actionGroupNotifyId = this._targetApp.connect('notify::action-group', Lang.bind(this, this._sync));
this._busyNotifyId = this._targetApp.connect('notify::busy', Lang.bind(this, this._sync));
this._label.setText(this._targetApp.get_name());
this.actor.set_accessible_name(this._targetApp.get_name());
}
@ -476,7 +482,7 @@ const AppMenuButton = new Lang.Class({
let isBusy = (this._targetApp != null &&
(this._targetApp.get_state() == Shell.AppState.STARTING ||
this._targetApp.get_state() == Shell.AppState.BUSY));
this._targetApp.get_busy()));
if (isBusy)
this.startAnimation();
else
@ -887,7 +893,7 @@ const Panel = new Lang.Class({
this.statusArea = {};
this.menuManager = new PopupMenu.PopupMenuManager(this, { keybindingMode: Shell.KeyBindingMode.TOPBAR_POPUP });
this.menuManager = new PopupMenu.PopupMenuManager(this, { actionMode: Shell.ActionMode.TOPBAR_POPUP });
this._leftBox = new St.BoxLayout({ name: 'panelLeft' });
this.actor.add_actor(this._leftBox);
@ -1019,7 +1025,7 @@ const Panel = new Lang.Class({
if (!dragWindow)
return Clutter.EVENT_PROPAGATE;
let rect = dragWindow.get_outer_rect();
let rect = dragWindow.get_frame_rect();
let [stageX, stageY] = event.get_coords();
let allowDrag = dragWindow.maximized_vertically &&

View File

@ -85,7 +85,8 @@ const Clock = new Lang.Class({
let date = new Date();
/* Translators: This is a time format for a date in
long format */
this._date.text = date.toLocaleFormat(_("%A, %B %d"));
let dateFormat = Shell.util_translate_time_string(N_("%A, %B %d"));
this._date.text = date.toLocaleFormat(dateFormat);
},
destroy: function() {
@ -646,14 +647,14 @@ const ScreenShield = new Lang.Class({
if (this._isModal)
return true;
this._isModal = Main.pushModal(this.actor, { keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN });
this._isModal = Main.pushModal(this.actor, { actionMode: Shell.ActionMode.LOCK_SCREEN });
if (this._isModal)
return true;
// We failed to get a pointer grab, it means that
// something else has it. Try with a keyboard grab only
this._isModal = Main.pushModal(this.actor, { options: Meta.ModalOptions.POINTER_ALREADY_GRABBED,
keybindingMode: Shell.KeyBindingMode.LOCK_SCREEN });
actionMode: Shell.ActionMode.LOCK_SCREEN });
return this._isModal;
},
@ -669,7 +670,9 @@ const ScreenShield = new Lang.Class({
if (this._lockScreenState != MessageTray.State.SHOWN)
return Clutter.EVENT_PROPAGATE;
let isEnter = (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_KP_Enter);
let isEnter = (symbol == Clutter.KEY_Return ||
symbol == Clutter.KEY_KP_Enter ||
symbol == Clutter.KEY_ISO_Enter);
if (!isEnter && !(GLib.unichar_isprint(unichar) || symbol == Clutter.KEY_Escape))
return Clutter.EVENT_PROPAGATE;
@ -919,6 +922,11 @@ const ScreenShield = new Lang.Class({
this._lockScreenState = MessageTray.State.HIDDEN;
this._lockScreenGroup.hide();
if (this._dialog) {
this._dialog.actor.grab_key_focus();
this._dialog.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}
},
_hideLockScreen: function(animate, velocity) {
@ -1327,6 +1335,8 @@ const ScreenShield = new Lang.Class({
// If the previous shell crashed, and gnome-session restarted us, then re-lock
lockIfWasLocked: function() {
if (!this._settings.get_boolean(LOCK_ENABLED_KEY))
return;
let wasLocked = global.get_runtime_state('b', LOCKED_STATE_STR);
if (wasLocked === null)
return;

View File

@ -43,6 +43,8 @@ const ScreencastService = new Lang.Class({
this._recorders = new Map();
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
Main.sessionMode.connect('updated', Lang.bind(this, this._sessionUpdated));
},
@ -68,8 +70,8 @@ const ScreencastService = new Lang.Class({
if (Main.sessionMode.allowScreencast)
return;
this._recorders.clear();
this.emit('updated');
for (let sender of this._recorders.keys())
this._stopRecordingForSender(sender);
},
_onNameVanished: function(connection, name) {
@ -103,7 +105,8 @@ const ScreencastService = new Lang.Class({
ScreencastAsync: function(params, invocation) {
let returnValue = [false, ''];
if (!Main.sessionMode.allowScreencast) {
if (!Main.sessionMode.allowScreencast ||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
return;
}
@ -117,6 +120,8 @@ const ScreencastService = new Lang.Class({
this._applyOptionalParameters(recorder, options);
let [success, fileName] = recorder.record();
returnValue = [success, fileName ? fileName : ''];
if (!success)
this._stopRecordingForSender(sender);
}
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
@ -124,7 +129,8 @@ const ScreencastService = new Lang.Class({
ScreencastAreaAsync: function(params, invocation) {
let returnValue = [false, ''];
if (!Main.sessionMode.allowScreencast) {
if (!Main.sessionMode.allowScreencast ||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
invocation.return_value(GLib.Variant.new('(bs)', returnValue));
return;
}
@ -150,6 +156,8 @@ const ScreencastService = new Lang.Class({
this._applyOptionalParameters(recorder, options);
let [success, fileName] = recorder.record();
returnValue = [success, fileName ? fileName : ''];
if (!success)
this._stopRecordingForSender(sender);
}
invocation.return_value(GLib.Variant.new('(bs)', returnValue));

View File

@ -65,9 +65,44 @@ const ScreenshotService = new Lang.Class({
this._dbusImpl = Gio.DBusExportedObject.wrapJSObject(ScreenshotIface, this);
this._dbusImpl.export(Gio.DBus.session, '/org/gnome/Shell/Screenshot');
this._screenShooter = new Map();
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
Gio.DBus.session.own_name('org.gnome.Shell.Screenshot', Gio.BusNameOwnerFlags.REPLACE, null, null);
},
_createScreenshot: function(invocation) {
let sender = invocation.get_sender();
if (this._screenShooter.has(sender) ||
this._lockdownSettings.get_boolean('disable-save-to-disk')) {
invocation.return_value(GLib.Variant.new('(bs)', [false, '']));
return null;
}
let shooter = new Shell.Screenshot();
shooter._watchNameId =
Gio.bus_watch_name(Gio.BusType.SESSION, sender, 0, null,
Lang.bind(this, this._onNameVanished));
this._screenShooter.set(sender, shooter);
return shooter;
},
_onNameVanished: function(connection, name) {
this._removeShooterForSender(name);
},
_removeShooterForSender: function(sender) {
let shooter = this._screenShooter.get(sender);
if (!shooter)
return;
Gio.bus_unwatch_name(shooter._watchNameId);
this._screenShooter.delete(sender);
},
_checkArea: function(x, y, width, height) {
return x >= 0 && y >= 0 &&
width > 0 && height > 0 &&
@ -76,9 +111,15 @@ const ScreenshotService = new Lang.Class({
},
_onScreenshotComplete: function(obj, result, area, filenameUsed, flash, invocation) {
if (flash && result) {
let flashspot = new Flashspot(area);
flashspot.fire();
if (result) {
if (flash) {
let flashspot = new Flashspot(area);
flashspot.fire(Lang.bind(this, function() {
this._removeShooterForSender(invocation.get_sender());
}));
}
else
this._removeShooterForSender(invocation.get_sender());
}
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
@ -112,7 +153,9 @@ const ScreenshotService = new Lang.Class({
"Invalid params");
return;
}
let screenshot = new Shell.Screenshot();
let screenshot = this._createScreenshot(invocation);
if (!screenshot)
return;
screenshot.screenshot_area (x, y, width, height, filename,
Lang.bind(this, this._onScreenshotComplete,
flash, invocation));
@ -120,7 +163,9 @@ const ScreenshotService = new Lang.Class({
ScreenshotWindowAsync : function (params, invocation) {
let [include_frame, include_cursor, flash, filename] = params;
let screenshot = new Shell.Screenshot();
let screenshot = this._createScreenshot(invocation);
if (!screenshot)
return;
screenshot.screenshot_window (include_frame, include_cursor, filename,
Lang.bind(this, this._onScreenshotComplete,
flash, invocation));
@ -128,7 +173,9 @@ const ScreenshotService = new Lang.Class({
ScreenshotAsync : function (params, invocation) {
let [include_cursor, flash, filename] = params;
let screenshot = new Shell.Screenshot();
let screenshot = this._createScreenshot(invocation);
if (!screenshot)
return;
screenshot.screenshot(include_cursor, filename,
Lang.bind(this, this._onScreenshotComplete,
flash, invocation));
@ -302,7 +349,7 @@ const Flashspot = new Lang.Class({
this.actor.set_position(area.x, area.y);
},
fire: function() {
fire: function(doneCallback) {
this.actor.show();
this.actor.opacity = 255;
Tweener.addTween(this.actor,
@ -310,6 +357,8 @@ const Flashspot = new Lang.Class({
time: FLASHSPOT_ANIMATION_OUT_TIME,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
if (doneCallback)
doneCallback();
this.destroy();
})
});

View File

@ -452,6 +452,24 @@ const SearchResults = new Lang.Class({
this._updateResults(provider, results);
},
_clearSearchTimeout: function() {
if (this._searchTimeoutId > 0) {
GLib.source_remove(this._searchTimeoutId);
this._searchTimeoutId = 0;
}
},
_reset: function() {
this._terms = [];
this._results = {};
this._clearDisplay();
this._clearSearchTimeout();
this._defaultResult = null;
this._startingSearch = false;
this._updateSearchProgress();
},
_doSearch: function() {
this._startingSearch = false;
@ -470,10 +488,7 @@ const SearchResults = new Lang.Class({
this._updateSearchProgress();
if (this._searchTimeoutId > 0) {
GLib.source_remove(this._searchTimeoutId);
this._searchTimeoutId = 0;
}
this._clearSearchTimeout();
},
_onSearchTimeout: function() {
@ -483,24 +498,25 @@ const SearchResults = new Lang.Class({
},
setTerms: function(terms) {
// Check for the case of making a duplicate previous search before
// setting state of the current search or cancelling the search.
// This will prevent incorrect state being as a result of a duplicate
// search while the previous search is still active.
let searchString = terms.join(' ');
let previousSearchString = this._terms.join(' ');
if (searchString == previousSearchString)
return;
this._startingSearch = true;
this._cancellable.cancel();
this._cancellable.reset();
if (!terms) {
if (this._searchTimeoutId > 0) {
GLib.source_remove(this._searchTimeoutId);
this._searchTimeoutId = 0;
}
if (terms.length == 0) {
this._reset();
return;
}
let searchString = terms.join(' ');
let previousSearchString = this._terms.join(' ');
if (searchString == previousSearchString)
return;
let isSubSearch = false;
if (this._terms.length > 0)
isSubSearch = searchString.indexOf(previousSearchString) == 0;
@ -535,6 +551,7 @@ const SearchResults = new Lang.Class({
providerDisplay = new GridSearchResults(provider, this.actor);
providerDisplay.connect('key-focus-in', Lang.bind(this, this._keyFocusIn));
providerDisplay.actor.hide();
this._content.add(providerDisplay.actor);
provider.display = providerDisplay;
},

View File

@ -90,6 +90,12 @@ const GnomeShell = new Lang.Class({
function(display, action, deviceid, timestamp) {
this._emitAcceleratorActivated(action, deviceid, timestamp);
}));
this._cachedOverviewVisible = false;
Main.overview.connect('showing',
Lang.bind(this, this._checkOverviewVisibleChanged));
Main.overview.connect('hidden',
Lang.bind(this, this._checkOverviewVisibleChanged));
},
/**
@ -134,7 +140,7 @@ const GnomeShell = new Lang.Class({
params[param] = params[param].deep_unpack();
let monitorIndex = -1;
if (params['monitor'])
if (params['monitor'] >= 0)
monitorIndex = params['monitor'];
let icon = null;
@ -235,8 +241,15 @@ const GnomeShell = new Lang.Class({
Mode: global.session_mode,
_checkOverviewVisibleChanged: function() {
if (Main.overview.visible !== this._cachedOverviewVisible) {
this._cachedOverviewVisible = Main.overview.visible;
this._dbusImpl.emit_property_changed('OverviewActive', new GLib.Variant('b', this._cachedOverviewVisible));
}
},
get OverviewActive() {
return Main.overview.visible;
return this._cachedOverviewVisible;
},
set OverviewActive(visible) {

View File

@ -163,13 +163,13 @@ const InputSourceManager = new Lang.Class({
Main.wm.addKeybinding('switch-input-source',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.ALL,
Shell.ActionMode.ALL,
Lang.bind(this, this._switchInputSource));
this._keybindingActionBackward =
Main.wm.addKeybinding('switch-input-source-backward',
new Gio.Settings({ schema_id: "org.gnome.desktop.wm.keybindings" }),
Meta.KeyBindingFlags.IS_REVERSED,
Shell.KeyBindingMode.ALL,
Shell.ActionMode.ALL,
Lang.bind(this, this._switchInputSource));
this._settings = new Gio.Settings({ schema_id: DESKTOP_INPUT_SOURCES_SCHEMA });
this._settings.connect('changed::' + KEY_INPUT_SOURCES, Lang.bind(this, this._inputSourcesChanged));
@ -239,8 +239,8 @@ const InputSourceManager = new Lang.Class({
// effect without considerable work to consolidate the usage
// of pushModal/popModal and grabHelper. See
// https://bugzilla.gnome.org/show_bug.cgi?id=695143 .
if (Main.keybindingMode == Shell.KeyBindingMode.MESSAGE_TRAY ||
Main.keybindingMode == Shell.KeyBindingMode.TOPBAR_POPUP) {
if (Main.actionMode == Shell.ActionMode.MESSAGE_TRAY ||
Main.actionMode == Shell.ActionMode.TOPBAR_POPUP) {
this._modifiersSwitcher();
return;
}
@ -298,8 +298,7 @@ const InputSourceManager = new Lang.Class({
this._inputSources = {};
this._ibusSources = {};
let inputSourcesByShortName = {};
let infosList = [];
for (let i = 0; i < nSources; i++) {
let displayName;
let shortName;
@ -323,11 +322,24 @@ const InputSourceManager = new Lang.Class({
}
}
if (!exists)
continue;
if (exists)
infosList.push({ type: type, id: id, displayName: displayName, shortName: shortName });
}
let is = new InputSource(type, id, displayName, shortName, i);
if (infosList.length == 0) {
let type = INPUT_SOURCE_TYPE_XKB;
let id = KeyboardManager.DEFAULT_LAYOUT;
let [ , displayName, shortName, , ] = this._xkbInfo.get_layout_info(id);
infosList.push({ type: type, id: id, displayName: displayName, shortName: shortName });
}
let inputSourcesByShortName = {};
for (let i = 0; i < infosList.length; i++) {
let is = new InputSource(infosList[i].type,
infosList[i].id,
infosList[i].displayName,
infosList[i].shortName,
i);
is.connect('activate', Lang.bind(this, this._activateInputSource));
if (!(is.shortName in inputSourcesByShortName))
@ -369,6 +381,10 @@ const InputSourceManager = new Lang.Class({
if (this._mruSources.length > 0)
this._mruSources[0].activate();
// All ibus engines are preloaded here to reduce the launching time
// when users switch the input sources.
this._ibusManager.preloadEngines(Object.keys(this._ibusSources));
},
_makeEngineShortName: function(engineDesc) {
@ -747,7 +763,7 @@ const InputSourceIndicator = new Lang.Class({
let engineDesc = IBusManager.getIBusManager().getEngineDesc(source.id);
if (engineDesc) {
xkbLayout = engineDesc.get_layout();
xkbVariant = '';
xkbVariant = engineDesc.get_layout_variant();
}
}

View File

@ -876,7 +876,8 @@ const NMWirelessDialog = new Lang.Class({
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER });
this._noNetworksSpinner = new Animation.AnimatedIcon(global.datadir + '/theme/process-working.svg', 24, 24);
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 24, 24);
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
text: _("No Networks") }));
@ -1866,7 +1867,7 @@ const NMApplet = new Lang.Class({
_connectionRemoved: function(connection) {
let pos = this._connections.indexOf(connection);
if (pos != -1)
this._connections.splice(connection, 1);
this._connections.splice(pos, 1);
let section = connection._section;

View File

@ -15,6 +15,7 @@ const RfkillManagerInterface = '<node> \
<interface name="org.gnome.SettingsDaemon.Rfkill"> \
<property name="AirplaneMode" type="b" access="readwrite" /> \
<property name="HardwareAirplaneMode" type="b" access="read" /> \
<property name="ShouldShowAirplaneMode" type="b" access="read" /> \
</interface> \
</node>';
@ -48,6 +49,10 @@ const RfkillManager = new Lang.Class({
return this._proxy.HardwareAirplaneMode;
},
get shouldShowAirplaneMode() {
return this._proxy.ShouldShowAirplaneMode;
},
_changed: function() {
this.emit('airplane-mode-changed');
}
@ -101,11 +106,10 @@ const Indicator = new Lang.Class({
_sync: function() {
let airplaneMode = this._manager.airplaneMode;
let hwAirplaneMode = this._manager.hwAirplaneMode;
let changed = (airplaneMode != this._indicator.visible) ||
(hwAirplaneMode != this._offItem.actor.visible);
let showAirplaneMode = this._manager.shouldShowAirplaneMode;
this._indicator.visible = airplaneMode;
this._item.actor.visible = airplaneMode;
this._indicator.visible = (airplaneMode && showAirplaneMode);
this._item.actor.visible = (airplaneMode && showAirplaneMode);
this._offItem.setSensitive(!hwAirplaneMode);
if (hwAirplaneMode)

View File

@ -87,8 +87,6 @@ const SwitcherPopup = new Lang.Class({
let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT);
let rightPadding = this.actor.get_theme_node().get_padding(St.Side.RIGHT);
let bottomPadding = this.actor.get_theme_node().get_padding(St.Side.BOTTOM);
let vPadding = this.actor.get_theme_node().get_vertical_padding();
let hPadding = leftPadding + rightPadding;
// Allocate the switcherList

View File

@ -154,7 +154,7 @@ const UnlockDialog = new Lang.Class({
return true;
if (!Main.pushModal(this.actor, { timestamp: timestamp,
keybindingMode: Shell.KeyBindingMode.UNLOCK_SCREEN }))
actionMode: Shell.ActionMode.UNLOCK_SCREEN }))
return false;
this._isModal = true;

View File

@ -28,11 +28,12 @@ const Avatar = new Lang.Class({
styleClass: 'framed-user-icon' });
this._iconSize = params.iconSize;
let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor;
this.actor = new St.Bin({ style_class: params.styleClass,
track_hover: params.reactive,
reactive: params.reactive,
width: this._iconSize,
height: this._iconSize });
width: this._iconSize * scaleFactor,
height: this._iconSize * scaleFactor });
},
setSensitive: function(sensitive) {

View File

@ -65,7 +65,8 @@ const ShowOverviewAction = new Lang.Class({
},
vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points();
return Main.actionMode == Shell.ActionMode.NORMAL &&
this.get_n_current_points() == this.get_n_touch_points();
},
_getBoundingRect : function(motion) {
@ -193,27 +194,30 @@ const ViewSelector = new Lang.Class({
// the windows to animate, but now we no longer want to
// show it given that we are now on the apps page or
// search page.
if (this._activePage != this._workspacesPage)
if (this._activePage != this._workspacesPage) {
this._workspacesPage.opacity = 0;
this._workspacesPage.hide();
}
}));
Main.wm.addKeybinding('toggle-application-view',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._toggleAppsPage));
Main.wm.addKeybinding('toggle-overview',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(Main.overview, Main.overview.toggle));
let gesture;
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT);
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT,
Shell.ActionMode.NORMAL);
gesture.connect('activated', Lang.bind(this, function() {
if (Main.overview.visible)
Main.overview.hide();

View File

@ -413,7 +413,7 @@ const TilePreview = new Lang.Class({
y: monitor.y,
width: monitor.width,
height: monitor.height });
let [, rect] = window.get_outer_rect().intersect(monitorRect);
let [, rect] = window.get_frame_rect().intersect(monitorRect);
this.actor.set_size(rect.width, rect.height);
this.actor.set_position(rect.x, rect.y);
this.actor.opacity = 0;
@ -478,7 +478,9 @@ const WorkspaceSwitchAction = new Lang.Class({
},
vfunc_gesture_prepare : function(action, actor) {
return this.get_n_current_points() == this.get_n_touch_points();
let allowedModes = Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW;
return this.get_n_current_points() == this.get_n_touch_points() &&
(allowedModes & Main.actionMode);
},
vfunc_gesture_end : function(action, actor) {
@ -526,7 +528,7 @@ const AppSwitchAction = new Lang.Class({
},
vfunc_gesture_prepare : function(action, actor) {
if (Main.overview.visible) {
if (Main.actionMode != Shell.ActionMode.NORMAL) {
this.cancel();
return false;
}
@ -616,177 +618,178 @@ const WindowManager = new Lang.Class({
this._shellwm.connect('destroy', Lang.bind(this, this._destroyWindow));
this._shellwm.connect('filter-keybinding', Lang.bind(this, this._filterKeybinding));
this._shellwm.connect('confirm-display-change', Lang.bind(this, this._confirmDisplayChange));
global.screen.connect('restacked', Lang.bind(this, this._syncStacking));
this._workspaceSwitcherPopup = null;
this._tilePreview = null;
this.setCustomKeybindingHandler('switch-to-workspace-left',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-right',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-up',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-down',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-last',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-left',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-right',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-up',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-down',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-1',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-2',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-3',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-4',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-5',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-6',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-7',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-8',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-9',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-10',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-11',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-to-workspace-12',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-1',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-2',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-3',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-4',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-5',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-6',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-7',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-8',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-9',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-10',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-11',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-12',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('move-to-workspace-last',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._showWorkspaceSwitcher));
this.setCustomKeybindingHandler('switch-applications',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-group',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-applications-backward',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-group-backward',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startAppSwitcher));
this.setCustomKeybindingHandler('switch-windows',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startWindowSwitcher));
this.setCustomKeybindingHandler('switch-windows-backward',
Shell.KeyBindingMode.NORMAL,
Shell.ActionMode.NORMAL,
Lang.bind(this, this._startWindowSwitcher));
this.setCustomKeybindingHandler('switch-panels',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW |
Shell.KeyBindingMode.LOCK_SCREEN |
Shell.KeyBindingMode.UNLOCK_SCREEN |
Shell.KeyBindingMode.LOGIN_SCREEN,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW |
Shell.ActionMode.LOCK_SCREEN |
Shell.ActionMode.UNLOCK_SCREEN |
Shell.ActionMode.LOGIN_SCREEN,
Lang.bind(this, this._startA11ySwitcher));
this.setCustomKeybindingHandler('switch-panels-backward',
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.OVERVIEW |
Shell.KeyBindingMode.LOCK_SCREEN |
Shell.KeyBindingMode.UNLOCK_SCREEN |
Shell.KeyBindingMode.LOGIN_SCREEN,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW |
Shell.ActionMode.LOCK_SCREEN |
Shell.ActionMode.UNLOCK_SCREEN |
Shell.ActionMode.LOGIN_SCREEN,
Lang.bind(this, this._startA11ySwitcher));
this.addKeybinding('pause-resume-tweens',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.ALL,
Shell.ActionMode.ALL,
Lang.bind(this, this._toggleTweens));
this.addKeybinding('open-application-menu',
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.KeyBindingMode.NORMAL |
Shell.KeyBindingMode.TOPBAR_POPUP,
Shell.ActionMode.NORMAL |
Shell.ActionMode.TOPBAR_POPUP,
Lang.bind(this, this._toggleAppMenu));
Main.overview.connect('showing', Lang.bind(this, function() {
@ -875,7 +878,7 @@ const WindowManager = new Lang.Class({
removeKeybinding: function(name) {
if (global.display.remove_keybinding(name))
this.allowKeybinding(name, Shell.KeyBindingMode.NONE);
this.allowKeybinding(name, Shell.ActionMode.NONE);
},
allowKeybinding: function(name, modes) {
@ -1232,18 +1235,36 @@ const WindowManager = new Lang.Class({
},
_filterKeybinding: function(shellwm, binding) {
if (Main.keybindingMode == Shell.KeyBindingMode.NONE)
if (Main.actionMode == Shell.ActionMode.NONE)
return true;
// There's little sense in implementing a keybinding in mutter and
// not having it work in NORMAL mode; handle this case generically
// so we don't have to explicitly allow all builtin keybindings in
// NORMAL mode.
if (Main.keybindingMode == Shell.KeyBindingMode.NORMAL &&
if (Main.actionMode == Shell.ActionMode.NORMAL &&
binding.is_builtin())
return false;
return !(this._allowedKeybindings[binding.get_name()] & Main.keybindingMode);
return !(this._allowedKeybindings[binding.get_name()] & Main.actionMode);
},
_syncStacking: function() {
if (this._switchData == null)
return;
// Update stacking of windows in inGroup (aka the workspace we are
// switching to). Windows in outGroup are about to be hidden anyway,
// so we just ignore them here.
let windows = global.get_window_actors();
let sibling = null;
for (let i = 0; i < windows.length; i++) {
if (windows[i].get_parent() != this._switchData.inGroup)
continue;
this._switchData.inGroup.set_child_above_sibling(windows[i], sibling);
sibling = windows[i];
}
},
_switchWorkspace : function(shellwm, from, to, direction) {

View File

@ -75,7 +75,7 @@ const WindowMenu = new Lang.Class({
}));
if (window.is_above())
item.setOrnament(PopupMenu.Ornament.DOT);
if (window.get_maximized() ||
if (window.get_maximized() == Meta.MaximizeFlags.BOTH ||
type == Meta.WindowType.DOCK ||
type == Meta.WindowType.DESKTOP ||
type == Meta.WindowType.SPLASHSCREEN)

View File

@ -254,7 +254,7 @@ const WindowClone = new Lang.Class({
},
_computeBoundingBox: function() {
let rect = this.metaWindow.get_outer_rect();
let rect = this.metaWindow.get_frame_rect();
this.actor.get_children().forEach(function (child) {
let realWindow;
@ -264,7 +264,7 @@ const WindowClone = new Lang.Class({
realWindow = child.source;
let metaWindow = realWindow.meta_window;
rect = rect.union(metaWindow.get_outer_rect());
rect = rect.union(metaWindow.get_frame_rect());
}, this);
// Convert from a MetaRectangle to a native JS object

View File

@ -161,14 +161,14 @@ const WindowClone = new Lang.Class({
_updateDialogPosition: function(realDialog, cloneDialog) {
let metaDialog = realDialog.meta_window;
let dialogRect = metaDialog.get_outer_rect();
let rect = this.metaWindow.get_outer_rect();
let dialogRect = metaDialog.get_frame_rect();
let rect = this.metaWindow.get_frame_rect();
cloneDialog.set_position(dialogRect.x - rect.x, dialogRect.y - rect.y);
},
_onPositionChanged: function() {
let rect = this.metaWindow.get_outer_rect();
let rect = this.metaWindow.get_frame_rect();
this.actor.set_position(this.realWindow.x, this.realWindow.y);
},

View File

@ -68,6 +68,7 @@ th
tr
ug
uk
uz@cyrillic
vi
zh_CN
zh_HK

1768
po/af.po

File diff suppressed because it is too large Load Diff

998
po/an.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

375
po/cs.po

File diff suppressed because it is too large Load Diff

View File

@ -20,9 +20,9 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-15 07:36+0000\n"
"PO-Revision-Date: 2014-09-15 18:29+0100\n"
"Last-Translator: <dev@hmt.im>\n"
"POT-Creation-Date: 2014-10-01 19:43+0000\n"
"PO-Revision-Date: 2014-10-01 22:16+0100\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
@ -409,28 +409,28 @@ msgstr "Häufig"
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1789
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "Neues Fenster"
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Aus Favoriten entfernen"
#: ../js/ui/appDisplay.js:1821
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "Zu Favoriten hinzufügen"
#: ../js/ui/appDisplay.js:1830
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "Details anzeigen"
#: ../js/ui/appFavorites.js:124
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
#: ../js/ui/appFavorites.js:158
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt"
@ -1175,7 +1175,7 @@ msgstr "Installieren"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "Tastatur"
@ -1231,39 +1231,39 @@ msgstr "Quelle zeigen"
msgid "Web Page"
msgstr "Webseite"
#: ../js/ui/messageTray.js:1326
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "Öffnen"
#: ../js/ui/messageTray.js:1333
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "Entfernen"
#: ../js/ui/messageTray.js:1630
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "Benachrichtigungen"
#: ../js/ui/messageTray.js:1637
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "Nachrichten leeren"
#: ../js/ui/messageTray.js:1656
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "Benachrichtigungseinstellungen"
#: ../js/ui/messageTray.js:1709
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "Benachrichtigungsfeldmenü"
#: ../js/ui/messageTray.js:1926
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "Keine Nachrichten"
#: ../js/ui/messageTray.js:1968
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/messageTray.js:2971
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "Systeminformationen"
@ -1357,11 +1357,11 @@ msgstr "Sperrung fehlgeschlagen"
msgid "Lock was blocked by an application"
msgstr "Sperrung wurde von einer Anwendung blockiert"
#: ../js/ui/search.js:594
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "Suche läuft …"
#: ../js/ui/search.js:596
#: ../js/ui/search.js:613
msgid "No results."
msgstr "Keine Ergebnisse."
@ -1411,7 +1411,7 @@ msgstr "Visuelle Warnungen"
#: ../js/ui/status/accessibility.js:75
msgid "Sticky Keys"
msgstr "Klebrige Tasten"
msgstr "Einrastfunktion"
#: ../js/ui/status/accessibility.js:78
msgid "Slow Keys"
@ -1419,7 +1419,7 @@ msgstr "Tastenverzögerung"
#: ../js/ui/status/accessibility.js:81
msgid "Bounce Keys"
msgstr "Springende Tasten"
msgstr "Tastenanschlagfunktion"
#: ../js/ui/status/accessibility.js:84
msgid "Mouse Keys"
@ -1476,7 +1476,6 @@ msgid "Disable"
msgstr "Deaktivieren"
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "Einstellungen zur Privatsphäre"

332
po/es.po
View File

@ -10,8 +10,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-20 07:41+0000\n"
"PO-Revision-Date: 2014-09-20 19:01+0200\n"
"POT-Creation-Date: 2014-11-12 08:29+0000\n"
"PO-Revision-Date: 2014-11-12 12:29+0100\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
"Language: es\n"
@ -304,8 +304,9 @@ msgstr ""
"Retardo al cambiar el foco del ratón hasta que el puntero deja de moverse"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
msgstr "Portal captivo"
#| msgid "Network error"
msgid "Network Login"
msgstr "Inicio de sesión de la red"
#: ../js/extensionPrefs/main.js:123
#, javascript-format
@ -319,7 +320,7 @@ msgstr "Extensiones de GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "Cancelar"
@ -337,33 +338,33 @@ msgctxt "button"
msgid "Sign In"
msgstr "Iniciar sesión"
#: ../js/gdm/loginDialog.js:269
#: ../js/gdm/loginDialog.js:275
msgid "Choose Session"
msgstr "Elegir sesión"
#: ../js/gdm/loginDialog.js:429
#: ../js/gdm/loginDialog.js:434
msgid "Not listed?"
msgstr "¿No está en la lista?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:619
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ej., usuario o %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Nombre de usuario:"
#: ../js/gdm/loginDialog.js:922
#: ../js/gdm/loginDialog.js:953
msgid "Login Window"
msgstr "Ventana de inicio de sesión"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:341
msgid "Authentication error"
msgstr "Error de autenticación"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:473
msgid "(or swipe finger)"
msgstr "(o pase el dedo)"
@ -384,31 +385,31 @@ msgstr "Falló la ejecución de «%s»:"
msgid "Web Authentication Redirect"
msgstr "Redirección para autenticación web"
#: ../js/ui/appDisplay.js:772
#: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here"
msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:883
#: ../js/ui/appDisplay.js:881
msgid "Frequent"
msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:890
#: ../js/ui/appDisplay.js:888
msgid "All"
msgstr "Todas"
#: ../js/ui/appDisplay.js:1790
#: ../js/ui/appDisplay.js:1789
msgid "New Window"
msgstr "Ventana nueva"
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Quitar de los favoritos"
#: ../js/ui/appDisplay.js:1822
#: ../js/ui/appDisplay.js:1821
msgid "Add to Favorites"
msgstr "Añadir a los favoritos"
#: ../js/ui/appDisplay.js:1831
#: ../js/ui/appDisplay.js:1830
msgid "Show Details"
msgstr "Mostrar detalles"
@ -431,17 +432,23 @@ msgstr "Configuración"
msgid "Change Background…"
msgstr "Cambiar el fondo…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:68
msgctxt "event list time"
msgid "All Day"
msgstr "Todo el día"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:75
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -449,7 +456,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:84
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -459,43 +466,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:115
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:117
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:119
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:121
msgctxt "grid wednesday"
msgid "W"
msgstr "X"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:123
msgctxt "grid thursday"
msgid "T"
msgstr "J"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:125
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:127
msgctxt "grid saturday"
msgid "S"
msgstr "S"
@ -506,85 +513,83 @@ msgstr "S"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:140
msgctxt "list sunday"
msgid "Su"
msgstr "Dom"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:142
msgctxt "list monday"
msgid "M"
msgstr "L"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:144
msgctxt "list tuesday"
msgid "T"
msgstr "M"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:146
msgctxt "list wednesday"
msgid "W"
msgstr "X"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:148
msgctxt "list thursday"
msgid "Th"
msgstr "J"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:150
msgctxt "list friday"
msgid "F"
msgstr "V"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:152
msgctxt "list saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:461
msgid "Previous month"
msgstr "Mes anterior"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:471
msgid "Next month"
msgstr "Siguiente mes"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781
#: ../js/ui/calendar.js:806
msgid "Nothing Scheduled"
msgstr "Nada programado"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:799
#: ../js/ui/calendar.js:825
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:802
#: ../js/ui/calendar.js:829
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:813
#: ../js/ui/calendar.js:841
msgid "Today"
msgstr "Hoy"
#: ../js/ui/calendar.js:817
#: ../js/ui/calendar.js:845
msgid "Tomorrow"
msgstr "Mañana"
#: ../js/ui/calendar.js:828
#: ../js/ui/calendar.js:856
msgid "This week"
msgstr "Esta semana"
#: ../js/ui/calendar.js:836
#: ../js/ui/calendar.js:864
msgid "Next week"
msgstr "La semana que viene"
@ -618,7 +623,7 @@ msgid "Type again:"
msgstr "Escriba de nuevo:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Conectar"
@ -712,102 +717,102 @@ msgstr "Autenticar"
msgid "Sorry, that didn't work. Please try again."
msgstr "Inténtelo de nuevo,"
#: ../js/ui/components/telepathyClient.js:240
#: ../js/ui/components/telepathyClient.js:242
msgid "Invitation"
msgstr "Invitación"
#: ../js/ui/components/telepathyClient.js:300
#: ../js/ui/components/telepathyClient.js:302
msgid "Call"
msgstr "Llamar"
#: ../js/ui/components/telepathyClient.js:316
#: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer"
msgstr "Transferencia de archivos"
#: ../js/ui/components/telepathyClient.js:420
#: ../js/ui/components/telepathyClient.js:422
msgid "Chat"
msgstr "Chat"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Unmute"
msgstr "Dar voz"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Mute"
msgstr "Silenciar"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Ayer, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d de %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993
#: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p"
msgstr "Ayer a las %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1045
#: ../js/ui/components/telepathyClient.js:1047
#, javascript-format
msgid "%s is now known as %s"
msgstr "Ahora %s se llama %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149
#: ../js/ui/components/telepathyClient.js:1151
#, javascript-format
msgid "Invitation to %s"
msgstr "Invitación a %s"
@ -815,38 +820,38 @@ msgstr "Invitación a %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1157
#: ../js/ui/components/telepathyClient.js:1159
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s le está invitando a unirse a %s"
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1286
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1287
msgid "Decline"
msgstr "Rechazar"
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1292
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184
#: ../js/ui/components/telepathyClient.js:1186
#, javascript-format
msgid "Video call from %s"
msgstr "Videollamada de %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Call from %s"
msgstr "Llamada de %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201
#: ../js/ui/components/telepathyClient.js:1203
msgid "Answer"
msgstr "Responder"
@ -855,112 +860,112 @@ msgstr "Responder"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1222
#: ../js/ui/components/telepathyClient.js:1224
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s le está enviando %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251
#: ../js/ui/components/telepathyClient.js:1253
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s solicita permiso para ver cuándo está en línea"
#: ../js/ui/components/telepathyClient.js:1337
#: ../js/ui/components/telepathyClient.js:1338
msgid "Network error"
msgstr "Error de la red"
#: ../js/ui/components/telepathyClient.js:1339
#: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed"
msgstr "Falló la autenticación"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error"
msgstr "Error de cifrado"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided"
msgstr "Certificado no proporcionado"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted"
msgstr "No se confía en el certificado"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired"
msgstr "Certificado caducado"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated"
msgstr "Certificado no activado"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch"
msgstr "El nombre del servidor dle certificado no coincide"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch"
msgstr "La huella del certificado no coincide"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed"
msgstr "Certificado autofirmado"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline"
msgstr "El estado está establecido a «desconectado»"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available"
msgstr "El cifrado no está disponible"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid"
msgstr "El certificado no es válido"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused"
msgstr "Se ha rechazado la conexión"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established"
msgstr "No se puede establecer la conexión"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost"
msgstr "Se ha perdido la conexión"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server"
msgstr "Esta cuenta ya está conectada al servidor"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server"
msgstr "La cuenta ya existe en el servidor"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection"
msgstr ""
"Actualmente el servidor está muy ocupado intentando gestionar la conexión"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked"
msgstr "Se ha revocado el certificado"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
"débil"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -969,22 +974,22 @@ msgstr ""
"certificado del servidor exceden los límites impuestos por la biblioteca de "
"criptografía"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error"
msgstr "Error interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393
#: ../js/ui/components/telepathyClient.js:1394
#, javascript-format
msgid "Unable to connect to %s"
msgstr "No se pudo conectar a %s"
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1399
msgid "View account"
msgstr "Ver cuenta"
#: ../js/ui/components/telepathyClient.js:1435
#: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason"
msgstr "Razón desconocida"
@ -1000,22 +1005,22 @@ msgstr "Mostrar aplicaciones"
msgid "Dash"
msgstr "Tablero"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:99
msgid "Open Calendar"
msgstr "Abrir calendario"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:103
msgid "Open Clocks"
msgstr "Abrir Relojes"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:110
msgid "Date & Time Settings"
msgstr "Configuración de hora y fecha"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:134
msgid "%A %B %e, %Y"
msgstr "%A, %e de %B de %Y"
@ -1159,7 +1164,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:535
msgid "Keyboard"
msgstr "Teclado"
@ -1215,39 +1220,47 @@ msgstr "Ver fuente"
msgid "Web Page"
msgstr "Página web"
#: ../js/ui/messageTray.js:1327
#: ../js/ui/messageTray.js:1332
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1334
#: ../js/ui/messageTray.js:1339
msgid "Remove"
msgstr "Quitar"
#: ../js/ui/messageTray.js:1631
#: ../js/ui/messageTray.js:1636
msgid "Notifications"
msgstr "Notificaciones"
#: ../js/ui/messageTray.js:1638
#: ../js/ui/messageTray.js:1643
msgid "Clear Messages"
msgstr "Limpiar mensajes"
#: ../js/ui/messageTray.js:1657
#: ../js/ui/messageTray.js:1662
msgid "Notification Settings"
msgstr "Configuración de las notificaciones"
#: ../js/ui/messageTray.js:1710
#: ../js/ui/messageTray.js:1715
msgid "Tray Menu"
msgstr "Bandeja de menú"
#: ../js/ui/messageTray.js:1934
#: ../js/ui/messageTray.js:1939
msgid "No Messages"
msgstr "No hay mensajes"
#: ../js/ui/messageTray.js:1979
#: ../js/ui/messageTray.js:1984
msgid "Message Tray"
msgstr "Bandeja de mensajes"
#: ../js/ui/messageTray.js:2992
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d mensaje nuevo"
msgstr[1] "%d mensajes nuevos"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Información del sistema"
@ -1256,13 +1269,6 @@ msgctxt "program"
msgid "Unknown"
msgstr "Desconocido"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d mensaje nuevo"
msgstr[1] "%d mensajes nuevos"
#: ../js/ui/overview.js:84
msgid "Undo"
msgstr "Deshacer"
@ -1315,34 +1321,34 @@ msgstr "Reiniciando…"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: ../js/ui/screenShield.js:153
#: ../js/ui/screenShield.js:154
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d notificación nueva"
msgstr[1] "%d notificaciones nuevas"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Bloquear"
#: ../js/ui/screenShield.js:706
#: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen"
msgstr "GNOME necesita bloquear la pantalla"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock"
msgstr "No se pudo bloquear"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application"
msgstr "Una aplicación impidió el bloqueo"
#: ../js/ui/search.js:594
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "Buscando…"
#: ../js/ui/search.js:596
#: ../js/ui/search.js:613
msgid "No results."
msgstr "No se encontraron resultados."
@ -1419,9 +1425,9 @@ msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "Apagar"
@ -1436,7 +1442,7 @@ msgid_plural "%d Connected Devices"
msgstr[0] "%d dispositivo conectado"
msgstr[1] "%d dispositivos conectados"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected"
msgstr "No conectado"
@ -1444,7 +1450,7 @@ msgstr "No conectado"
msgid "Brightness"
msgstr "Brillo"
#: ../js/ui/status/keyboard.js:547
#: ../js/ui/status/keyboard.js:559
msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado"
@ -1457,7 +1463,6 @@ msgid "Disable"
msgstr "Desactivar"
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "Configuración de privacidad"
@ -1473,8 +1478,8 @@ msgstr "Activar"
msgid "<unknown>"
msgstr "<desconocido>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "Desconectado"
@ -1492,7 +1497,7 @@ msgstr "Sin gestionar"
msgid "Disconnecting"
msgstr "Desconectando"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting"
msgstr "Conectando"
@ -1513,7 +1518,7 @@ msgstr "Falta el «firmware»"
msgid "Unavailable"
msgstr "No disponible"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed"
msgstr "Falló la conexión"
@ -1525,7 +1530,7 @@ msgstr "Configuración de red cableada"
msgid "Mobile Broadband Settings"
msgstr "Configuración de banda ancha móvil"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled"
msgstr "Hardware desactivado"
@ -1565,60 +1570,60 @@ msgstr "Redes Wi-Fi"
msgid "Select a network"
msgstr "Seleccionar una red"
#: ../js/ui/status/network.js:882
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "No hay redes"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off"
msgstr "Usar el interruptor hardware para apagar"
#: ../js/ui/status/network.js:1173
#: ../js/ui/status/network.js:1174
msgid "Select Network"
msgstr "Seleccionar red"
#: ../js/ui/status/network.js:1179
#: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings"
msgstr "Configuración de Wi-Fi"
#: ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1282
msgid "Turn On"
msgstr "Enceder"
msgstr "Encender"
#: ../js/ui/status/network.js:1298
#: ../js/ui/status/network.js:1299
msgid "Hotspot Active"
msgstr "Punto de acceso activo"
#: ../js/ui/status/network.js:1409
#: ../js/ui/status/network.js:1410
msgid "connecting..."
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1412
#: ../js/ui/status/network.js:1413
msgid "authentication required"
msgstr "se necesita autenticación"
#: ../js/ui/status/network.js:1414
#: ../js/ui/status/network.js:1415
msgid "connection failed"
msgstr "falló la conexión"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings"
msgstr "Configuración de la red"
#: ../js/ui/status/network.js:1482
#: ../js/ui/status/network.js:1483
msgid "VPN Settings"
msgstr "Configuración de VPN"
#: ../js/ui/status/network.js:1501
#: ../js/ui/status/network.js:1502
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1656
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Gestor de la red"
#: ../js/ui/status/network.js:1696
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red"
@ -1652,11 +1657,11 @@ msgstr "SAI"
msgid "Battery"
msgstr "Batería"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode"
msgstr "Modo avión"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:90
msgid "On"
msgstr "Encender"
@ -1836,6 +1841,9 @@ msgstr "La contraseña no puede estar vacía"
msgid "Authentication dialog was dismissed by the user"
msgstr "El usuario rechazó el diálogo de autenticación"
#~ msgid "Captive Portal"
#~ msgstr "Portal captivo"
#~ msgid "The maximum accuracy level of location."
#~ msgstr "El nivel máximo de precisión de la ubicación."

582
po/eu.po

File diff suppressed because it is too large Load Diff

207
po/fa.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-08-28 07:38+0000\n"
"PO-Revision-Date: 2014-08-28 20:57+0430\n"
"POT-Creation-Date: 2014-10-06 19:42+0000\n"
"PO-Revision-Date: 2014-10-10 10:51+0330\n"
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
"Language-Team: Persian <>\n"
"Language: fa\n"
@ -19,7 +19,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Poedit-SourceCharset: utf-8\n"
"X-Generator: Gtranslator 2.91.6\n"
"X-Generator: Poedit 1.6.9\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -81,16 +81,10 @@ msgstr ""
"F2."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable"
msgstr "شناسه‌های UUID افزونه‌ها جهت فعال‌سازی"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -143,14 +137,10 @@ msgid "History for the looking glass dialog"
msgstr "تاریخچه برای نما محاوره شیشه‌ای"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu."
msgstr "همیشه «خروج از سیستم» را در منو کاربر نمایش بده."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
@ -307,18 +297,17 @@ msgstr ""
msgid "Captive Portal"
msgstr "پرتال درگیر"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:123
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "خطایی هنگام باز کردن محاوره‌ی ترجیحات برای %s رُخ داد:"
#: ../js/extensionPrefs/main.js:159
#| msgid "Configure GNOME Shell Extensions"
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extensions"
msgstr "افزونه‌های گنوم‌شل"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
msgid "Cancel"
@ -378,50 +367,47 @@ msgstr "عدم توانایی در تجزیه فرمان:"
#: ../js/misc/util.js:156
#, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:"
msgstr "اجرای «%s» شکست خورد:"
#: ../js/portalHelper/main.js:85
#| msgid "Authentication Required"
msgid "Web Authentication Redirect"
msgstr "تغییر مسیر برای تایید هویت وب"
#: ../js/ui/appDisplay.js:660
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr "برنامه‌های بیشتر استفاده شده در اینجا نمایش داده می‌شود"
#: ../js/ui/appDisplay.js:771
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
msgstr "پُراستفاده"
#: ../js/ui/appDisplay.js:778
#: ../js/ui/appDisplay.js:890
msgid "All"
msgstr "همه"
#: ../js/ui/appDisplay.js:1650
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "پنجره‌ی جدید"
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "حذف از مورد پسندها"
#: ../js/ui/appDisplay.js:1679
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "اضافه کردن به مورد پسندها"
#: ../js/ui/appDisplay.js:1688
#| msgid "Show Text"
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "نمایش جزئیات"
#: ../js/ui/appFavorites.js:122
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "مورد %s به مورد پسندهای شما اضافه شد."
#: ../js/ui/appFavorites.js:156
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "مورد %s ازمورد پسندهای شما حذف شد."
@ -613,11 +599,11 @@ msgstr "باز کردن با %s"
msgid "Eject"
msgstr "بیرون دادن"
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
msgid "Password:"
msgstr "گذرواژه"
#: ../js/ui/components/keyring.js:113
#: ../js/ui/components/keyring.js:120
msgid "Type again:"
msgstr "تلاش مجدد:"
@ -656,9 +642,6 @@ msgstr "تایید هویت برای شبکه بی‌سیم لازم است"
#: ../js/ui/components/networkAgent.js:319
#, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
@ -694,7 +677,6 @@ msgstr "گذرواژه شبکه پهن‌باند تلفن همراه"
#: ../js/ui/components/networkAgent.js:346
#, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”."
msgstr "برای اتصال به «%s» گذرواژه لازم است."
@ -744,23 +726,18 @@ msgstr "بی‌صدا"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%H%M"
msgstr "%OH%OM"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M"
msgstr "<b>دیروز</b>، <b>%OH:%OM"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%A, %H%M"
msgstr "%A، %OH%OM"
@ -768,8 +745,6 @@ msgstr "%A، %OH%OM"
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974
#| msgctxt "event list time"
#| msgid "%H%M"
msgid "%B %d, %H%M"
msgstr "%d %B، %OH%OM"
@ -782,8 +757,6 @@ msgstr "%Od %OB %OY، %OH:%OM"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#| msgctxt "event list time"
#| msgid "%l%M%p"
msgid "%l%M %p"
msgstr "%Ol%OM%p"
@ -796,7 +769,6 @@ msgstr "دیروز، %OI:%OM"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#| msgid "%a %l:%M %p"
msgid "%A, %l%M %p"
msgstr "%A، %OH:%OM"
@ -804,7 +776,6 @@ msgstr "%A، %OH:%OM"
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d, %l%M %p"
msgstr "%Od %B، %OH:%OM"
@ -812,7 +783,6 @@ msgstr "%Od %B، %OH:%OM"
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d %Y, %l%M %p"
msgstr "%Od %B، %OH:%OM"
@ -1004,7 +974,7 @@ msgstr "نمایش حساب"
msgid "Unknown reason"
msgstr "دلیل ناشناخته"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
msgid "Windows"
msgstr "پنجره‌‌ها"
@ -1016,105 +986,105 @@ msgstr "نمایش برنامه‌ها"
msgid "Dash"
msgstr "دَش"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "بازکردن تقویم"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "باز کردن ساعت‌ها"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "تنظیمات تاریخ و ساعت"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%A %Od %B"
#: ../js/ui/endSessionDialog.js:66
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "خروج از %s"
#: ../js/ui/endSessionDialog.js:67
#: ../js/ui/endSessionDialog.js:65
msgctxt "title"
msgid "Log Out"
msgstr "خروج از سیستم"
#: ../js/ui/endSessionDialog.js:69
#: ../js/ui/endSessionDialog.js:67
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
#: ../js/ui/endSessionDialog.js:74
#: ../js/ui/endSessionDialog.js:72
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج می‌شوید."
msgstr[1] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج می‌شوید."
#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:78
msgctxt "button"
msgid "Log Out"
msgstr "خروج از سیستم"
#: ../js/ui/endSessionDialog.js:86
#: ../js/ui/endSessionDialog.js:84
msgctxt "title"
msgid "Power Off"
msgstr "خاموش کردن"
#: ../js/ui/endSessionDialog.js:87
#: ../js/ui/endSessionDialog.js:85
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "نصب بروزرسانی‌ها و خاموش کردن"
#: ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:87
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار خاموش می‌شود."
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار خاموش می‌شود."
#: ../js/ui/endSessionDialog.js:93
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "نصب بروزرسانی‌هایِ در انتظار"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
msgctxt "button"
msgid "Restart"
msgstr "راه‌اندازی مجدد"
#: ../js/ui/endSessionDialog.js:98
#: ../js/ui/endSessionDialog.js:96
msgctxt "button"
msgid "Power Off"
msgstr "خاموش کردن"
#: ../js/ui/endSessionDialog.js:105
#: ../js/ui/endSessionDialog.js:103
msgctxt "title"
msgid "Restart"
msgstr "راه‌اندازی مجدد"
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:105
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار مجددا راه‌اندازی می‌شود."
msgstr[1] "سیستم پس از %Id ثانیه به طور خودکار مجددا راه‌اندازی می‌شود."
#: ../js/ui/endSessionDialog.js:121
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "راه‌اندازی مجدد و نصب بروزرسانی‌ها"
#: ../js/ui/endSessionDialog.js:123
#: ../js/ui/endSessionDialog.js:121
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1126,44 +1096,42 @@ msgstr[1] ""
"سیستم پس از %Id ثانیه به طور خودکار مجددا راه‌اندازی می‌شود و بروزرسانی‌های را "
"نصب می‌کند."
#: ../js/ui/endSessionDialog.js:129
#| msgctxt "button"
#| msgid "Restart & Install"
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "راه‌اندازی مجدد و نصب"
#: ../js/ui/endSessionDialog.js:130
#: ../js/ui/endSessionDialog.js:128
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "نصب و خاموش کردن"
#: ../js/ui/endSessionDialog.js:131
#: ../js/ui/endSessionDialog.js:129
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "خاموش کردن بعد از نصب بروزرسانی‌ها"
#: ../js/ui/endSessionDialog.js:315
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
"درحال اجرا بر روی انرژی باتری: لطفا قبل از نصب بروزرسانی‌ها، به برق وصل کنید."
#: ../js/ui/endSessionDialog.js:332
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr "تعدادی از برنامه‌ها مشغول هستند یا کارهای ذخیره نشده دارند."
#: ../js/ui/endSessionDialog.js:339
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
msgstr "کاربران دیگر وارد سیستم هستند."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:640
#, javascript-format
msgid "%s (remote)"
msgstr "%s (دوردست)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:643
#, javascript-format
msgid "%s (console)"
msgstr "%s (پایانه)"
@ -1174,11 +1142,10 @@ msgstr "نصب"
#: ../js/ui/extensionDownloader.js:204
#, javascript-format
#| msgid "Download and install '%s' from extensions.gnome.org?"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "صفحه‌کلید"
@ -1200,8 +1167,8 @@ msgstr "مخفی کردن خطاها"
msgid "Show Errors"
msgstr "نمایش خطاها"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:166
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "به کار انداختن"
@ -1209,7 +1176,7 @@ msgstr "به کار انداختن"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "از کار انداختن"
@ -1234,39 +1201,39 @@ msgstr "نمایش منبع"
msgid "Web Page"
msgstr "صفحه‌ی وب"
#: ../js/ui/messageTray.js:1325
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "بازکردن"
#: ../js/ui/messageTray.js:1332
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "حذف"
#: ../js/ui/messageTray.js:1629
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "اعلان‌ها"
#: ../js/ui/messageTray.js:1636
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "پاک کردن پیام‌ها"
#: ../js/ui/messageTray.js:1655
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "تنظیمات اعلان‌ها"
#: ../js/ui/messageTray.js:1708
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "منو سینی"
#: ../js/ui/messageTray.js:1925
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "پیامی وجود ندارد"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "سینی پیام"
#: ../js/ui/messageTray.js:2966
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "اطلاعات سیستم"
@ -1294,7 +1261,7 @@ msgstr "نمای‌کلی"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#: ../js/ui/overview.js:246
msgid "Type to search…"
msgstr "برای جستجو تایپ کنید..."
@ -1325,7 +1292,6 @@ msgid "Close"
msgstr "بستن"
#: ../js/ui/runDialog.js:277
#| msgid "Estimating…"
msgid "Restarting…"
msgstr "درحال راه‌اندازی مجدد..."
@ -1358,27 +1324,27 @@ msgstr "نمی‌توان قفل کرد"
msgid "Lock was blocked by an application"
msgstr "قفل توسط یک برنامه مسدود شده بود"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "درحال حستجو..."
#: ../js/ui/search.js:652
#: ../js/ui/search.js:613
msgid "No results."
msgstr "بدون نتیجه."
#: ../js/ui/shellEntry.js:27
#: ../js/ui/shellEntry.js:25
msgid "Copy"
msgstr "رونوشت"
#: ../js/ui/shellEntry.js:32
#: ../js/ui/shellEntry.js:30
msgid "Paste"
msgstr "چسباندن"
#: ../js/ui/shellEntry.js:99
#: ../js/ui/shellEntry.js:97
msgid "Show Text"
msgstr "نمایش متن"
#: ../js/ui/shellEntry.js:101
#: ../js/ui/shellEntry.js:99
msgid "Hide Text"
msgstr "مخفی‌کردن متن"
@ -1464,26 +1430,27 @@ msgstr "متصل نیست"
msgid "Brightness"
msgstr "روشنایی"
#: ../js/ui/status/keyboard.js:406
#: ../js/ui/status/keyboard.js:547
msgid "Show Keyboard Layout"
msgstr "نمایش چیدمان صفحه‌کلید"
#: ../js/ui/status/location.js:56
#| msgid "Notifications"
#: ../js/ui/status/location.js:65
msgid "Location"
msgstr "مکان"
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
#| msgid "Disabled"
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
msgid "Disable"
msgstr "از کار انداختن"
#: ../js/ui/status/location.js:166
#: ../js/ui/status/location.js:73
msgid "Privacy Settings"
msgstr "تنظیمات حریم‌خصوصی"
#: ../js/ui/status/location.js:176
msgid "In Use"
msgstr "درحال استفاده"
#: ../js/ui/status/location.js:170
#| msgid "Enabled"
#: ../js/ui/status/location.js:180
msgid "Enable"
msgstr "به کار انداختن"
@ -1497,37 +1464,31 @@ msgid "Off"
msgstr "خاموش"
#: ../js/ui/status/network.js:459
#| msgid "Connect"
msgid "Connected"
msgstr "متصل شده"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:463
#| msgid "unmanaged"
msgid "Unmanaged"
msgstr "مدیریت نشده"
#: ../js/ui/status/network.js:465
#| msgid "disconnecting..."
msgid "Disconnecting"
msgstr "درحال قطع ارتباط"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#| msgid "Connection"
msgid "Connecting"
msgstr "درحال اتصال"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:474
#| msgid "authentication required"
msgid "Authentication required"
msgstr "تایید هویت لازم است"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:482
#| msgid "firmware missing"
msgid "Firmware missing"
msgstr "میان‌افزار موجود نیست"
@ -1542,7 +1503,6 @@ msgid "Connection failed"
msgstr "اتصال شکست خورد"
#: ../js/ui/status/network.js:504
#| msgid "Wi-Fi Settings"
msgid "Wired Settings"
msgstr "تنظیمات اتصال سیمی"
@ -1559,7 +1519,6 @@ msgid "Use as Internet connection"
msgstr "استفاده به عنوان اتصال اینترنت"
#: ../js/ui/status/network.js:813
#| msgid "Airplane Mode"
msgid "Airplane Mode is On"
msgstr "حالت هواپیمایی روشن است"
@ -1568,12 +1527,10 @@ msgid "Wi-Fi is disabled when airplane mode is on."
msgstr "در زمان روشن بودن حالت هواپیمایی وای-فای غیرفعال می‌شود."
#: ../js/ui/status/network.js:815
#| msgid "Airplane Mode"
msgid "Turn Off Airplane Mode"
msgstr "خاموش کردن حالت هواپیمایی"
#: ../js/ui/status/network.js:824
#| msgid "Wi-Fi Settings"
msgid "Wi-Fi is Off"
msgstr "بی‌سیم خاموش است"
@ -1582,7 +1539,6 @@ msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr "برای اتصال به شبکه باید وای-فای روشن شود."
#: ../js/ui/status/network.js:826
#| msgid "Turn On"
msgid "Turn On Wi-Fi"
msgstr "روشن کردن بی‌سیم"
@ -1636,7 +1592,6 @@ msgid "Network Settings"
msgstr "تنظیمات شبکه"
#: ../js/ui/status/network.js:1482
#| msgid "Settings"
msgid "VPN Settings"
msgstr "تنظیمات VPN"
@ -1730,17 +1685,16 @@ msgstr "ورود به سیستم بعنوان کاربری دیگر"
msgid "Unlock Window"
msgstr "بازکردن قفل پنجره"
#: ../js/ui/viewSelector.js:232
#: ../js/ui/viewSelector.js:158
msgid "Applications"
msgstr "برنامه‌ها"
#: ../js/ui/viewSelector.js:236
#: ../js/ui/viewSelector.js:162
msgid "Search"
msgstr "جستجو"
#: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready"
msgstr "«%s» آماده است"
@ -1832,25 +1786,24 @@ msgstr[1] "%Iu ورودی"
msgid "System Sounds"
msgstr "صداهای سیستم"
#: ../src/main.c:371
#: ../src/main.c:373
msgid "Print version"
msgstr "چاپ نسخه"
#: ../src/main.c:377
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "حالت استفاده شده توسط GDM برای صفحه ورود به سیستم"
#: ../src/main.c:383
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "استفاده از حالت مشخص، مثال «gdm» برای صفحه ورود به سیستم"
#: ../src/main.c:389
#: ../src/main.c:391
msgid "List possible modes"
msgstr "فهرست کردن حالت‌های ممکن"
#: ../src/shell-app.c:666
#, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”"
msgstr "راه‌اندازی «%s» شکست خورد"

308
po/gl.po
View File

@ -11,8 +11,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-25 23:06+0200\n"
"PO-Revision-Date: 2014-08-25 23:08+0200\n"
"POT-Creation-Date: 2014-09-23 01:50+0200\n"
"PO-Revision-Date: 2014-09-23 01:51+0200\n"
"Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
"Language-Team: gnome-l10n-gl@gnome.org\n"
"Language: gl\n"
@ -300,17 +300,17 @@ msgstr "Atrasar os cambios de foco no modo rato até que o punteiro se pare"
msgid "Captive Portal"
msgstr "Portal cautivo"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:123
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "Produciuse un erro ao cargar o diálogo de preferenzas para %s:"
#: ../js/extensionPrefs/main.js:159
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extensions"
msgstr "Extensións de GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
msgid "Cancel"
@ -334,15 +334,23 @@ msgstr "Iniciar sesión"
msgid "Choose Session"
msgstr "Escolla unha sesión"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:429
msgid "Not listed?"
msgstr "Non está na lista?"
#. 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:614
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(p.ex., usuario ou %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
@ -356,6 +364,11 @@ msgstr "Xanela de inicio de sesión"
msgid "Authentication error"
msgstr "Erro de autenticación"
#. We don't show fingerprint messages directly since it's
#. not the main auth service. Instead we use the messages
#. as a cue to display our own message.
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/util.js:453
msgid "(or swipe finger)"
msgstr "(ou pase o dedo)"
@ -364,6 +377,8 @@ msgstr "(ou pase o dedo)"
msgid "Command not found"
msgstr "Orde non atopada"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:148
msgid "Could not parse command:"
msgstr "Non foi posíbel analizar a orde:"
@ -373,44 +388,46 @@ msgstr "Non foi posíbel analizar a orde:"
msgid "Execution of “%s” failed:"
msgstr "Produciuse un fallo na execución de «%s»:"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. window, until we know the title of the actual login page
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Redirección web de autenticación"
#: ../js/ui/appDisplay.js:660
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr "Os aplicativos usados recentemente aparecerán aquí"
#: ../js/ui/appDisplay.js:771
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
msgstr "Frecuentes"
#: ../js/ui/appDisplay.js:778
#: ../js/ui/appDisplay.js:890
msgid "All"
msgstr "Todos"
#: ../js/ui/appDisplay.js:1650
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "Xanela nova"
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "Retirar dos marcadores"
#: ../js/ui/appDisplay.js:1679
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "Engadir aos favoritos"
#: ../js/ui/appDisplay.js:1688
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "Mostrar detalles"
#: ../js/ui/appFavorites.js:122
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s foi engadido aos seus favoritos."
#: ../js/ui/appFavorites.js:156
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s retirouse dos seus marcadores."
@ -426,14 +443,14 @@ msgstr "Cambiar fondo de escritorio…"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#.
#: ../js/ui/calendar.js:67
msgctxt "event list time"
msgid "All Day"
msgstr "Todo o día"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#. \u2236 is a ratio character, similar to :
#: ../js/ui/calendar.js:73
msgctxt "event list time"
msgid "%H%M"
@ -441,7 +458,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#. a thin space
#: ../js/ui/calendar.js:82
msgctxt "event list time"
msgid "%l%M%p"
@ -451,43 +468,43 @@ msgstr "%l%M%p"
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#.
#: ../js/ui/calendar.js:113
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:115
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:117
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:119
msgctxt "grid wednesday"
msgid "W"
msgstr "W"
#. Translators: Calendar grid abbreviation for Thursday */
#. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:121
msgctxt "grid thursday"
msgid "T"
msgstr "X"
#. Translators: Calendar grid abbreviation for Friday */
#. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:123
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:125
msgctxt "grid saturday"
msgid "S"
@ -498,43 +515,43 @@ msgstr "S"
#. * NOTE: These list abbreviations are normally not shown together
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#.
#: ../js/ui/calendar.js:138
msgctxt "list sunday"
msgid "Su"
msgstr "Do"
#. Translators: Event list abbreviation for Monday */
#. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:140
msgctxt "list monday"
msgid "M"
msgstr "L"
#. Translators: Event list abbreviation for Tuesday */
#. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:142
msgctxt "list tuesday"
msgid "T"
msgstr "M"
#. Translators: Event list abbreviation for Wednesday */
#. Translators: Event list abbreviation for Wednesday
#: ../js/ui/calendar.js:144
msgctxt "list wednesday"
msgid "W"
msgstr "W"
#. Translators: Event list abbreviation for Thursday */
#. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:146
msgctxt "list thursday"
msgid "Th"
msgstr "X"
#. Translators: Event list abbreviation for Friday */
#. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:148
msgctxt "list friday"
msgid "F"
msgstr "V"
#. Translators: Event list abbreviation for Saturday */
#. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:150
msgctxt "list saturday"
msgid "S"
@ -548,18 +565,18 @@ msgstr "Anterior mes"
msgid "Next month"
msgstr "Seguinte mes"
#. Translators: Text to show if there are no events */
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:781
msgid "Nothing Scheduled"
msgstr "Nada programado"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:799
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:802
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
@ -602,11 +619,11 @@ msgstr "Abrir con %s"
msgid "Eject"
msgstr "Expulsar"
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
msgid "Password:"
msgstr "Contrasinal:"
#: ../js/ui/components/keyring.js:113
#: ../js/ui/components/keyring.js:120
msgid "Type again:"
msgstr "Escriba de novo:"
@ -615,6 +632,7 @@ msgstr "Escriba de novo:"
msgid "Connect"
msgstr "Conectar"
#. Cisco LEAP
#: ../js/ui/components/networkAgent.js:231
#: ../js/ui/components/networkAgent.js:243
#: ../js/ui/components/networkAgent.js:271
@ -623,6 +641,7 @@ msgstr "Conectar"
msgid "Password: "
msgstr "Contrasinal: "
#. static WEP
#: ../js/ui/components/networkAgent.js:236
msgid "Key: "
msgstr "Chave: "
@ -700,19 +719,23 @@ msgstr "Autenticar"
#. Translators: "that didn't work" refers to the fact that the
#. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password),
#. * for instance. */
#. * for instance.
#: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383
msgid "Sorry, that didn't work. Please try again."
msgstr "Desculpe, iso non funcionou. Ténteo de novo."
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
#: ../js/ui/components/telepathyClient.js:240
msgid "Invitation"
msgstr "Convite"
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:300
msgid "Call"
msgstr "Chamar"
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:316
msgid "File Transfer"
msgstr "Transferencia de ficheiro"
@ -729,77 +752,85 @@ msgstr "Desactivar silencio"
msgid "Mute"
msgstr "Silenciar"
#. Translators: Time in 24h format */
#. Translators: Time in 24h format
#: ../js/ui/components/telepathyClient.js:953
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#. time string in 24h format. i.e. "Yesterday, 14:30"
#: ../js/ui/components/telepathyClient.js:960
#, no-c-format
msgid "Yesterday, %H%M"
msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#. string in 24h format. i.e. "Monday, 14:30"
#: ../js/ui/components/telepathyClient.js:967
#, no-c-format
msgid "%A, %H%M"
msgstr "%A ás %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#. i.e. "May 25, 14:30"
#: ../js/ui/components/telepathyClient.js:974
#, no-c-format
msgid "%B %d, %H%M"
msgstr "%d de %B ás %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#. i.e. "May 25 2012, 14:30"
#: ../js/ui/components/telepathyClient.js:980
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%d de %B de %Y ás %H:%M"
#. Translators: Time in 24h format */
#. Translators: Time in 24h format
#: ../js/ui/components/telepathyClient.js:986
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:993
#, no-c-format
msgid "Yesterday, %l%M %p"
msgstr "Onte, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#. string in 12h format. i.e. "Monday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1000
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#. i.e. "May 25, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1007
#, no-c-format
msgid "%B %d, %l%M %p"
msgstr "%d de %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#. i.e. "May 25 2012, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1013
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%d de %B de %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#. IM name.
#: ../js/ui/components/telepathyClient.js:1045
#, javascript-format
msgid "%s is now known as %s"
msgstr "Agora %s chámase %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#. * room@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1149
#, javascript-format
msgid "Invitation to %s"
@ -807,7 +838,7 @@ msgstr "Convite a %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#. * for example.
#: ../js/ui/components/telepathyClient.js:1157
#, javascript-format
msgid "%s is inviting you to join %s"
@ -826,19 +857,19 @@ msgstr "Rexeitar"
msgid "Accept"
msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. */
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1184
#, javascript-format
msgid "Video call from %s"
msgstr "Videochamada de %s"
#. translators: argument is a contact name like Alice for example. */
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1187
#, javascript-format
msgid "Call from %s"
msgstr "Chamada de %s"
#. translators: this is a button label (verb), not a noun */
#. translators: this is a button label (verb), not a noun
#: ../js/ui/components/telepathyClient.js:1201
msgid "Answer"
msgstr "Responder"
@ -847,13 +878,13 @@ msgstr "Responder"
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#.
#: ../js/ui/components/telepathyClient.js:1222
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s esta enviándolle %s"
#. To translators: The parameter is the contact's alias */
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1251
#, javascript-format
msgid "%s would like permission to see when you are online"
@ -967,7 +998,7 @@ msgid "Internal error"
msgstr "Erro interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#. * name@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1393
#, javascript-format
msgid "Unable to connect to %s"
@ -981,7 +1012,7 @@ msgstr "Ver conta"
msgid "Unknown reason"
msgstr "Razón descoñecida"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
msgid "Windows"
msgstr "Xanelas"
@ -989,6 +1020,8 @@ msgstr "Xanelas"
msgid "Show Applications"
msgstr "Mostrar aplicativos"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/dash.js:445
msgid "Dash"
msgstr "Taboleiro"
@ -1007,91 +1040,91 @@ msgstr "Preferencias de data e hora"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#.
#: ../js/ui/dateMenu.js:204
msgid "%A %B %e, %Y"
msgstr "%a, %e de %B, %Y"
#: ../js/ui/endSessionDialog.js:66
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "Saír da sesión %s"
#: ../js/ui/endSessionDialog.js:67
#: ../js/ui/endSessionDialog.js:65
msgctxt "title"
msgid "Log Out"
msgstr "Saír da sesión"
#: ../js/ui/endSessionDialog.js:69
#: ../js/ui/endSessionDialog.js:67
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "Vaise pechar a sesión de %s en %d segundo."
msgstr[1] "Vaise pechar a sesión de %s en %d segundos."
#: ../js/ui/endSessionDialog.js:74
#: ../js/ui/endSessionDialog.js:72
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "A súa sesión pecharase automaticamente en %d segundo."
msgstr[1] "A súa sesión pecharase automaticamente en %d segundos."
#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:78
msgctxt "button"
msgid "Log Out"
msgstr "Saír da sesión"
#: ../js/ui/endSessionDialog.js:86
#: ../js/ui/endSessionDialog.js:84
msgctxt "title"
msgid "Power Off"
msgstr "Apagar"
#: ../js/ui/endSessionDialog.js:87
#: ../js/ui/endSessionDialog.js:85
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "Instalar anovacións e apagar"
#: ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:87
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "O sistema apagarase automaticamente en %d segundo."
msgstr[1] "O sistema apagarase automaticamente en %d segundos."
#: ../js/ui/endSessionDialog.js:93
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "Instalar anovacións de software pendentes"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
msgctxt "button"
msgid "Restart"
msgstr "Reiniciar"
#: ../js/ui/endSessionDialog.js:98
#: ../js/ui/endSessionDialog.js:96
msgctxt "button"
msgid "Power Off"
msgstr "Apagar"
#: ../js/ui/endSessionDialog.js:105
#: ../js/ui/endSessionDialog.js:103
msgctxt "title"
msgid "Restart"
msgstr "Reiniciar"
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:105
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "O sistema reiniciarase automaticamente en %d segundo."
msgstr[1] "O sistema reiniciarase automaticamente en %d segundos."
#: ../js/ui/endSessionDialog.js:121
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "Reiniciar e instalar actualizacións"
#: ../js/ui/endSessionDialog.js:123
#: ../js/ui/endSessionDialog.js:121
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
@ -1103,41 +1136,41 @@ msgstr[1] ""
"O sistema reiniciarase automaticamente e instalará as actualizacións en %d "
"segundos."
#: ../js/ui/endSessionDialog.js:129
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "Reiniciar e instalar"
#: ../js/ui/endSessionDialog.js:130
#: ../js/ui/endSessionDialog.js:128
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "Instalar e apagar"
#: ../js/ui/endSessionDialog.js:131
#: ../js/ui/endSessionDialog.js:129
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "Apagar despois de instalar as anovacións"
#: ../js/ui/endSessionDialog.js:315
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr "Con enerxía da batería: enchufar antes de instalar anovacións."
#: ../js/ui/endSessionDialog.js:332
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr "Algúns aplicativos están ocupados ou teñen traballo sen gardar."
#: ../js/ui/endSessionDialog.js:339
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
msgstr "Hai outros usuarios conectados."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#. Translators: Remote here refers to a remote session, like a ssh login
#: ../js/ui/endSessionDialog.js:640
#, javascript-format
msgid "%s (remote)"
msgstr "%s (remoto)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#. Translators: Console here refers to a tty like a VT console
#: ../js/ui/endSessionDialog.js:643
#, javascript-format
msgid "%s (console)"
msgstr "%s (consola)"
@ -1151,7 +1184,7 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Desexa descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "Teclado"
@ -1159,7 +1192,7 @@ msgstr "Teclado"
msgid "No extensions installed"
msgstr "Non hai ningunha extensión instalada"
#. Translators: argument is an extension UUID. */
#. Translators: argument is an extension UUID.
#: ../js/ui/lookingGlass.js:697
#, javascript-format
msgid "%s has not emitted any errors."
@ -1173,16 +1206,16 @@ msgstr "Ocultar erros"
msgid "Show Errors"
msgstr "Mostrar erros"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:166
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "Activado"
#. Translators: this is for a network device that cannot be activated
#. because it's disabled by rfkill (airplane mode) */
#. because it's disabled by rfkill (airplane mode)
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Desactivado"
@ -1207,39 +1240,39 @@ msgstr "Ver fonte"
msgid "Web Page"
msgstr "Páxina web"
#: ../js/ui/messageTray.js:1325
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "Abrir"
#: ../js/ui/messageTray.js:1332
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "Retirar"
#: ../js/ui/messageTray.js:1629
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "Notificacións"
#: ../js/ui/messageTray.js:1636
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "Limpar mensaxes"
#: ../js/ui/messageTray.js:1655
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "Preferencias das notificacións"
#: ../js/ui/messageTray.js:1708
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "Menú da bandexa do sistema"
#: ../js/ui/messageTray.js:1925
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "Non hai mensaxes"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "Bandexa de mensaxes"
#: ../js/ui/messageTray.js:2966
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "Información do sistema"
@ -1266,8 +1299,8 @@ msgstr "Vista xeral"
#. Translators: this is the text displayed
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#. characters.
#: ../js/ui/overview.js:246
msgid "Type to search…"
msgstr "Escriba para buscar…"
@ -1276,7 +1309,7 @@ msgid "Quit"
msgstr "Saír"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:567
msgid "Activities"
msgstr "Actividades"
@ -1285,6 +1318,11 @@ msgstr "Actividades"
msgid "Top Bar"
msgstr "Barra superior"
#. Translators: this MUST be either "toggle-switch-us"
#. (for toggle switches containing the English words
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:269
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@ -1302,7 +1340,7 @@ msgid "Restarting…"
msgstr "Restimando…"
#. Translators: This is a time format for a date in
#. long format */
#. long format
#: ../js/ui/screenShield.js:88
msgid "%A, %B %d"
msgstr "%A, %d de %B"
@ -1322,6 +1360,13 @@ msgstr "Bloquear"
msgid "GNOME needs to lock the screen"
msgstr "GNOME precisa bloquear a pantalla"
#. We could not become modal, so we can't activate the
#. screenshield. The user is probably very upset at this
#. point, but any application using global grabs is broken
#. Just tell him to stop using this app
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
msgid "Unable to lock"
msgstr "Non foi posíbel bloquear"
@ -1330,27 +1375,27 @@ msgstr "Non foi posíbel bloquear"
msgid "Lock was blocked by an application"
msgstr "Un aplicativo impediu o bloqueo"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:594
msgid "Searching…"
msgstr "Buscando…"
#: ../js/ui/search.js:652
#: ../js/ui/search.js:596
msgid "No results."
msgstr "Sen resultados."
#: ../js/ui/shellEntry.js:27
#: ../js/ui/shellEntry.js:25
msgid "Copy"
msgstr "Copiar"
#: ../js/ui/shellEntry.js:32
#: ../js/ui/shellEntry.js:30
msgid "Paste"
msgstr "Pegar"
#: ../js/ui/shellEntry.js:99
#: ../js/ui/shellEntry.js:97
msgid "Show Text"
msgstr "Mostrar texto"
#: ../js/ui/shellEntry.js:101
#: ../js/ui/shellEntry.js:99
msgid "Hide Text"
msgstr "Ocultar texto"
@ -1406,6 +1451,8 @@ msgstr "Contraste alto"
msgid "Large Text"
msgstr "Texto grande"
#. The Bluetooth menu only appears when Bluetooth is in use,
#. so just statically build it with a "Turn Off" menu item.
#: ../js/ui/status/bluetooth.js:49
msgid "Bluetooth"
msgstr "Bluetooth"
@ -1436,23 +1483,27 @@ msgstr "Non conectado"
msgid "Brightness"
msgstr "Brillo"
#: ../js/ui/status/keyboard.js:406
#: ../js/ui/status/keyboard.js:547
msgid "Show Keyboard Layout"
msgstr "Mostrar a distribución do teclado"
#: ../js/ui/status/location.js:56
#: ../js/ui/status/location.js:65
msgid "Location"
msgstr "Localización"
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
msgid "Disable"
msgstr "Desactivar"
#: ../js/ui/status/location.js:166
#: ../js/ui/status/location.js:73
msgid "Privacy Settings"
msgstr "Preferencias da privacidade"
#: ../js/ui/status/location.js:176
msgid "In Use"
msgstr "En uso"
#: ../js/ui/status/location.js:170
#: ../js/ui/status/location.js:180
msgid "Enable"
msgstr "Activar"
@ -1470,7 +1521,7 @@ msgid "Connected"
msgstr "Conectado"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#. under NetworkManager's control (and thus cannot be used in the menu)
#: ../js/ui/status/network.js:463
msgid "Unmanaged"
msgstr "Sen xestionar"
@ -1483,19 +1534,19 @@ msgstr "Desconectando…"
msgid "Connecting"
msgstr "Conectando"
#. Translators: this is for network connections that require some kind of key or password */
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:474
msgid "Authentication required"
msgstr "Requírese autenticación"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#. module, which is missing
#: ../js/ui/status/network.js:482
msgid "Firmware missing"
msgstr "Falta o «firmware»"
#. Translators: this is for a network device that cannot be activated (for example it
#. is disabled by rfkill, or it has no coverage */
#. is disabled by rfkill, or it has no coverage
#: ../js/ui/status/network.js:486
msgid "Unavailable"
msgstr "Non dispoñíbel"
@ -1580,7 +1631,7 @@ msgstr "Punto wifi activo"
msgid "connecting..."
msgstr "conectando…"
#. Translators: this is for network connections that require some kind of key or password */
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:1412
msgid "authentication required"
msgstr "requírese autenticación"
@ -1617,15 +1668,19 @@ msgstr "Preferencias de enerxía"
msgid "Fully Charged"
msgstr "Carga completa"
#. 0 is reported when UPower does not have enough data
#. to estimate battery life
#: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78
msgid "Estimating…"
msgstr "Estimando…"
#. Translators: this is <hours>:<minutes> Remaining (<percentage>)
#: ../js/ui/status/power.js:86
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "Faltan %d:%02d (%d%%)"
#. Translators: this is <hours>:<minutes> Until Full (<percentage>)
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
@ -1639,6 +1694,9 @@ msgstr "SAI"
msgid "Battery"
msgstr "Batería"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
#. changing the menu contents.
#: ../js/ui/status/rfkill.js:83
msgid "Airplane Mode"
msgstr "Modo avión"
@ -1687,11 +1745,11 @@ msgstr "Iniciar sesión como outro usuario"
msgid "Unlock Window"
msgstr "Desbloquear xanela"
#: ../js/ui/viewSelector.js:232
#: ../js/ui/viewSelector.js:158
msgid "Applications"
msgstr "Aplicativos"
#: ../js/ui/viewSelector.js:236
#: ../js/ui/viewSelector.js:162
msgid "Search"
msgstr "Buscar"
@ -1706,7 +1764,7 @@ msgstr "Desexa manter estas preferencias de pantalla?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
#. */
#.
#: ../js/ui/windowManager.js:84
msgid "Revert Settings"
msgstr "Reverter preferencias"
@ -1788,21 +1846,21 @@ msgstr[1] "%u entradas"
msgid "System Sounds"
msgstr "Sons do sistema"
#: ../src/main.c:371
#: ../src/main.c:373
msgid "Print version"
msgstr "Imprimir versión"
#: ../src/main.c:377
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "Modo usado por GDM para a pantalla de inicio"
#: ../src/main.c:383
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr ""
"Usar un modo específico, por exemplo, «gdm» para a pantalla de inicio de "
"sesión"
#: ../src/main.c:389
#: ../src/main.c:391
msgid "List possible modes"
msgstr "Listar os modos posíbeis"

242
po/gu.po
View File

@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: gu\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug."
"cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-08-26 07:37+0000\n"
"PO-Revision-Date: 2014-09-08 12:52+0530\n"
"POT-Creation-Date: 2014-10-01 07:39+0000\n"
"PO-Revision-Date: 2014-10-01 15:51+0530\n"
"Last-Translator: \n"
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
"Language: \n"
@ -63,7 +63,7 @@ msgstr "GNOME Shell ઍક્સટેન્શનને રૂપરેખા
#: ../data/gnome-shell-wayland.desktop.in.in.h:1
msgid "GNOME Shell (wayland compositor)"
msgstr ""
msgstr "GNOME Shell (વેલૅન્ડ કંપોઝીટર)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
@ -76,12 +76,10 @@ msgid ""
msgstr "Alt-F2 સંવાદની મદદથી આંતરિક ડિબગીંગ અને મોનિટરીંગ સાધનોને વાપરવા પરવાનગી આપે છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable"
msgstr "સક્રિય કરવા માટે એક્સટેન્શનનું UUIDs"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#, fuzzy
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
@ -93,14 +91,14 @@ msgid ""
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension D-Bus methods on org.gnome.Shell."
msgstr ""
"GNOME Shell ઍક્સટેન્શન પાસે uuid ગુણધર્મ છે; આ કી ઍક્સટેન્શનની યાદી કરે છે કે જેને લાવેલ હોવુ "
"GNOME Shell ઍક્સટેન્શન પાસે UUID ગુણધર્મ છે; આ કી ઍક્સટેન્શનની યાદી કરે છે કે જેને લાવેલ હોવુ "
"જોઇએ. કોઇપણ ઍક્સટેન્શન કે જેને આ યાદીમાં લાવવાની જરૂર છે. તમે પણ org.gnome.Shell પર "
"EnableExtension અને DisableExtension DBus પદ્દતિઓ સાથે આ યાદીને કુશળતાપૂર્વક વાપરી "
"શકો છો."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
msgstr ""
msgstr "ઍક્સટેન્શન આવૃત્તિ સુસંગતતાની માન્યતાને નિષ્ક્રિય કરે છે"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
msgid ""
@ -108,6 +106,9 @@ msgid ""
"running version. Enabling this option will disable this check and try to "
"load all extensions regardless of the versions they claim to support."
msgstr ""
"GNOME Shell એ ફક્ત ઍક્સટેન્શનને લાવશે કે જે હાલની ચાલતી આવૃત્તિને આધાર આપવા માટે દાવો કરે છે. "
"આ વિકલ્પને સક્રિય કરવાનું આ ચકાસણીને નિષ્ક્રિય કરશે અને આવૃત્તિને બાદ કરતા બધા ઍક્સટેન્શનને "
"લાવવાનો પ્રયત્ન કરે છે જે તેઓ આધાર આપવા માટે દાવો કરે છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
@ -121,7 +122,7 @@ msgstr "કાર્યક્રમો આ ઓળખકર્તાઓ સાથ
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "App Picker View"
msgstr ""
msgstr "કાર્યક્રમ પસંદકર્તા દૃશ્ય"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
msgid "Index of the currently selected view in the application picker."
@ -136,12 +137,10 @@ msgid "History for the looking glass dialog"
msgstr "ગ્લાસ સંવાદને જોવા માટે ઇતિહાસ"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu."
msgstr "વપરાશકર્તા મેનુમાં હંમેશા 'બહાર નીકળો' મેનુ વસ્તુને બતાવો."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
#, fuzzy
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
@ -149,7 +148,8 @@ msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
msgstr ""
"આ કી એકજ વપરાશકર્તામાં 'બહાર નીકળો' મેનુવસ્તુને આપમેળે છુપાવવા આ કીને ઓવરરાઇડ કરવામાં "
"આ કી એકજ વપરાશકર્તા, એકજ-સત્ર પરિસ્થિતિઓમાં 'બહાર નીકળો' મેનુવસ્તુને આપમેળે છુપાવવા આ કીને "
"ઓવરરાઇડ કરવામાં "
"આવી છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
@ -192,12 +192,10 @@ msgid "Keybinding to open the \"Show Applications\" view of the Activities Overv
msgstr "પ્રવૃત્તિ ઝાંખીનાં \"કાર્યક્રમો બતાવો\" દૃશ્યને ખોલવા માટે કિબાઇન્ડીંગ."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the overview"
msgstr "ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the Activities Overview."
msgstr "પ્રવૃત્તિ ઝાંખીને ખોલવા માટે કિબાઇન્ડીંગ"
@ -219,7 +217,7 @@ msgstr "સક્રિય સૂચના પર પ્રકાશ નાં
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
msgstr "કીબાઇન્ડીંગ કે જે બધી ચાલતી ટ્વીનને અટકાવે છે અને પાછુ લાવે છે, ડિબગીંગ હેતુઓ માટે"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "Which keyboard to use"
@ -231,13 +229,15 @@ msgstr "વાપરવા માટે કિબોર્ડનો પ્રક
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "Limit switcher to current workspace."
msgstr ""
msgstr "વર્તમાન કામ કરવાની જગ્યા માટે સ્વિચર મર્યાદિત કરી છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
msgstr ""
"જો true હોય તો, ફક્ત કાર્યક્રમો કે જેની પાસે હાલની કાર્ય કરવાની જગ્યા પર વિન્ડો છે તે "
"સ્વીચરમાં બતાવેલ છે. નહિંતો, બધા કાર્યક્રમનો સમાવેલ છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "The application icon mode."
@ -258,6 +258,8 @@ msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
msgstr ""
"જો true હોય તો, હાલની કાર્ય કરવાની જગ્યામાંથી વિન્ડો સ્વીચરમાં બતાવેલ છે. નહિં તો, બધી "
"વિન્ડોને સમાવેલ છે."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Attach modal dialog to the parent window"
@ -281,24 +283,23 @@ msgstr "ફક્ત પ્રાથમિક મોનિટર પર કા
#: ../data/org.gnome.shell.gschema.xml.in.in.h:42
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr ""
msgstr "માઉસ સ્થિતિમાં ફેરફારો કરવામાં વિલંબ જ્યાં સુધી પોઇંટર ખસેડવાનું બંધ થાય"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
msgstr ""
msgstr "કૅપ્ટીવ પોર્ટલ"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:123
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "ત્યાં %s માટે પસંદગી સંવાદને લાવવામાં ભૂલ હતી:"
#: ../js/extensionPrefs/main.js:159
#| msgid "Configure GNOME Shell Extensions"
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extensions"
msgstr "GNOME Shell ઍક્સટેન્શન"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
msgid "Cancel"
@ -319,7 +320,6 @@ msgid "Sign In"
msgstr "પ્રવેશો"
#: ../js/gdm/loginDialog.js:269
#| msgid "Switch Session"
msgid "Choose Session"
msgstr "સત્ર પસંદ કરો"
@ -359,50 +359,47 @@ msgstr "આદેશનું પદચ્છેદન કરી શક્યા
#: ../js/misc/util.js:156
#, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:"
msgstr "“%s” ને અમલમાં મૂકવાનુ નિષ્ફળ:"
#: ../js/portalHelper/main.js:85
#| msgid "Authentication Required"
msgid "Web Authentication Redirect"
msgstr "વેબ સત્તાધિકરણ દિશામાન"
#: ../js/ui/appDisplay.js:660
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr "વારંવાર વપરાતા કાર્યક્રમો અહિંયા દેખાશે"
#: ../js/ui/appDisplay.js:771
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
msgstr "સામાન્ય"
#: ../js/ui/appDisplay.js:778
#: ../js/ui/appDisplay.js:890
msgid "All"
msgstr "બધા"
#: ../js/ui/appDisplay.js:1650
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "નવી વિન્ડો"
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "પસંદીદાઓ માંથી દૂર કરો"
#: ../js/ui/appDisplay.js:1679
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "પસંદીદાને ઉમેરો"
#: ../js/ui/appDisplay.js:1688
#| msgid "Show Text"
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "વિગતો બતાવો"
#: ../js/ui/appFavorites.js:122
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s ને તમારી પસંદીદામાં ઉમેરી દેવામાં આવ્યુ છે."
#: ../js/ui/appFavorites.js:156
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s ને તમારી પસંદીદામાંથી દૂર કરી દેવામાં આવ્યુ છે."
@ -594,11 +591,11 @@ msgstr "%s સાથે ખોલો"
msgid "Eject"
msgstr "રદ કરો"
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
msgid "Password:"
msgstr "પાસવર્ડ:"
#: ../js/ui/components/keyring.js:113
#: ../js/ui/components/keyring.js:120
msgid "Type again:"
msgstr "ફરીથી પ્રયત્ન કરો:"
@ -637,9 +634,6 @@ msgstr "વાયરલેસ નેટવર્ક દ્દારાસત્
#: ../js/ui/components/networkAgent.js:319
#, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
@ -675,7 +669,6 @@ msgstr "મોબાઇલ બ્રોડબેન્ડ નેટવર્ક
#: ../js/ui/components/networkAgent.js:346
#, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”."
msgstr "પાસવર્ડ “%s” સાથે જોડાવા માટે જરૂરી છે."
@ -731,14 +724,12 @@ msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M"
msgstr "ગઇ કાલે, %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#| msgid "%A, %B %d"
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -758,8 +749,6 @@ msgstr "%B %d %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#| msgctxt "event list time"
#| msgid "%l:%M %p"
msgid "%l%M %p"
msgstr "%l%M %p"
@ -772,7 +761,6 @@ msgstr "ગઈકાલે %l:%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#| msgid "%a %l:%M %p"
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -780,7 +768,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d, %l%M %p"
msgstr "%B %d, %l%M %p"
@ -788,7 +775,6 @@ msgstr "%B %d, %l%M %p"
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d %Y, %l%M %p"
msgstr "%B %d %Y, %l%M %p"
@ -975,7 +961,7 @@ msgstr "ખાતામાં જુઓ"
msgid "Unknown reason"
msgstr "અજ્ઞાત કારણ"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
msgid "Windows"
msgstr "વિન્ડો"
@ -1006,131 +992,129 @@ msgstr "તારીખ અને સમય સુયોજનો"
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
#: ../js/ui/endSessionDialog.js:66
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "%s માંથી બહાર નીકળો"
#: ../js/ui/endSessionDialog.js:67
#: ../js/ui/endSessionDialog.js:65
msgctxt "title"
msgid "Log Out"
msgstr "બહાર નીકળો"
#: ../js/ui/endSessionDialog.js:69
#: ../js/ui/endSessionDialog.js:67
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s એ %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
msgstr[1] "%s એ %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
#: ../js/ui/endSessionDialog.js:74
#: ../js/ui/endSessionDialog.js:72
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "તમે %d સેકંડમાં આપમેળે બહાર નીકળી જશે."
msgstr[1] "તમે %d સેકંડોમાં આપમેળે બહાર નીકળી જશે."
#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:78
msgctxt "button"
msgid "Log Out"
msgstr "બહાર નીકળો"
#: ../js/ui/endSessionDialog.js:86
#: ../js/ui/endSessionDialog.js:84
msgctxt "title"
msgid "Power Off"
msgstr "પાવર બંધ"
#: ../js/ui/endSessionDialog.js:87
#| msgid "Install Updates & Restart"
#: ../js/ui/endSessionDialog.js:85
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "સુધારા સ્થાપિત કરો અને પાવર બંધ કરો"
#: ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:87
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
msgstr[1] "સિસ્ટમ %d સેકંડમાં આપમેળે પાવર બંધ થઇ જશે."
#: ../js/ui/endSessionDialog.js:93
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "બાકી રહેલા સોફ્ટવેર સુધારાને સ્થાપિત કરો"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
msgctxt "button"
msgid "Restart"
msgstr "પુન:શરૂ કરો"
#: ../js/ui/endSessionDialog.js:98
#: ../js/ui/endSessionDialog.js:96
msgctxt "button"
msgid "Power Off"
msgstr "પાવર બંધ"
#: ../js/ui/endSessionDialog.js:105
#: ../js/ui/endSessionDialog.js:103
msgctxt "title"
msgid "Restart"
msgstr "પુન:શરૂ કરો"
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:105
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે પુન:શરૂ થઇ જશે."
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે."
#: ../js/ui/endSessionDialog.js:121
#| msgid "Install Updates & Restart"
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "સુધારા સ્થાપિત કરો અને પુન:શરૂ કરો"
#: ../js/ui/endSessionDialog.js:123
#, fuzzy, javascript-format
#: ../js/ui/endSessionDialog.js:121
#, javascript-format
#| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds."
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[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે પુન:શરૂ થઇ જશે."
msgstr[0] "સિસ્ટમ %d સેકંડમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે."
msgstr[1] "સિસ્ટમ %d સેકંડોમાં આપમેળે સુધારાઓને પુન:શરૂ અને સ્થાપિત કરશે."
#: ../js/ui/endSessionDialog.js:129
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "પુન:શરૂ કરો અને સ્થાપિત કરો"
#: ../js/ui/endSessionDialog.js:130
#: ../js/ui/endSessionDialog.js:128
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "સ્થાપિત કરો અને પાવર બંધ "
#: ../js/ui/endSessionDialog.js:131
#: ../js/ui/endSessionDialog.js:129
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "સુધારા સ્થાપિત થાય પછી પાવર બંધ કરો"
#: ../js/ui/endSessionDialog.js:315
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr "બેટરી પાવર પર ચાલી રહ્યુ છે: મહેરબાની કરીને સુધારા સ્થાપિત કરતા પહેલાં પ્લગઇન કરો."
#: ../js/ui/endSessionDialog.js:332
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr "અમુક કાર્યક્રમો વ્યસ્ત છે અથવા તેની પાસે અસંગ્રહેલ કામ છે."
#: ../js/ui/endSessionDialog.js:339
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
msgstr "બીજા વપરાશકર્તાઓ પ્રવેશેલ છે."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:640
#, javascript-format
msgid "%s (remote)"
msgstr "%s (દૂરસ્થ)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:643
#, javascript-format
msgid "%s (console)"
msgstr "%s (કન્સોલ)"
@ -1141,11 +1125,10 @@ msgstr "સ્થાપિત કરો"
#: ../js/ui/extensionDownloader.js:204
#, javascript-format
#| msgid "Download and install '%s' from extensions.gnome.org?"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org માંથી “%s” ને સ્થાપિત અને ડાઉનલોડ કરો?"
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "કિબોર્ડ"
@ -1167,8 +1150,8 @@ msgstr "ભૂલો છુપાડો"
msgid "Show Errors"
msgstr "ભૂલો બતાવો"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:166
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "સક્રિય"
@ -1176,7 +1159,7 @@ msgstr "સક્રિય"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "નિષ્ક્રિય"
@ -1201,39 +1184,39 @@ msgstr "સ્ત્રોત દર્શાવો"
msgid "Web Page"
msgstr "વેબ પાનું"
#: ../js/ui/messageTray.js:1325
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "ખોલો"
#: ../js/ui/messageTray.js:1332
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "દૂર કરો"
#: ../js/ui/messageTray.js:1629
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "સૂચનાઓ"
#: ../js/ui/messageTray.js:1636
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "સંદેશા સાફ કરો"
#: ../js/ui/messageTray.js:1655
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "સૂચના સુયોજનો"
#: ../js/ui/messageTray.js:1708
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "ટ્રે મેનુ"
#: ../js/ui/messageTray.js:1925
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "સંદેશા નથી"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "સંદેશો ટ્રે"
#: ../js/ui/messageTray.js:2966
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "સિસ્ટમ જાણકારી"
@ -1261,7 +1244,7 @@ msgstr "ઝાંખી"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#: ../js/ui/overview.js:246
msgid "Type to search…"
msgstr "શોધવા માટે ટાઇપ કરો..."
@ -1292,7 +1275,6 @@ msgid "Close"
msgstr "બંધ કરો"
#: ../js/ui/runDialog.js:277
#| msgid "Estimating…"
msgid "Restarting…"
msgstr "પુન:શરૂ કરી રહ્યા છે…"
@ -1325,27 +1307,27 @@ msgstr "તાળુ મારવામાં અસમર્થ"
msgid "Lock was blocked by an application"
msgstr "તાળુ કાર્યક્રમ દ્દારા બ્લોક થયેલ છે"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:607
msgid "Searching…"
msgstr "શોધી રહ્યા છે..."
#: ../js/ui/search.js:652
#: ../js/ui/search.js:609
msgid "No results."
msgstr "પરિણામો નથી."
#: ../js/ui/shellEntry.js:27
#: ../js/ui/shellEntry.js:25
msgid "Copy"
msgstr "નકલ કરો"
#: ../js/ui/shellEntry.js:32
#: ../js/ui/shellEntry.js:30
msgid "Paste"
msgstr "ચોંટાડો"
#: ../js/ui/shellEntry.js:99
#: ../js/ui/shellEntry.js:97
msgid "Show Text"
msgstr "લખાણ બતાવો"
#: ../js/ui/shellEntry.js:101
#: ../js/ui/shellEntry.js:99
msgid "Hide Text"
msgstr "લખાણ છુપાડો"
@ -1418,14 +1400,12 @@ msgstr "બ્લુટુથ સુયોજનો"
#: ../js/ui/status/bluetooth.js:104
#, javascript-format
#| msgid "Connected (private)"
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d જોડાયેલ ઉપકરણ"
msgstr[1] "%d જોડાયેલ ઉપકરણો"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#| msgid "Connect"
msgid "Not Connected"
msgstr "જોડાયેલ નથી"
@ -1433,26 +1413,28 @@ msgstr "જોડાયેલ નથી"
msgid "Brightness"
msgstr "તેજસ્વિતા"
#: ../js/ui/status/keyboard.js:406
#: ../js/ui/status/keyboard.js:547
msgid "Show Keyboard Layout"
msgstr "કીબોર્ડ લેઆઉટને બતાવો"
#: ../js/ui/status/location.js:56
#| msgid "Notifications"
#: ../js/ui/status/location.js:65
msgid "Location"
msgstr "સ્થાન"
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
#| msgid "Disabled"
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
msgid "Disable"
msgstr "નિષ્ક્રિય"
#: ../js/ui/status/location.js:166
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "ખાનગી સુયોજનો"
#: ../js/ui/status/location.js:176
msgid "In Use"
msgstr "વપરાશમાં"
#: ../js/ui/status/location.js:170
#| msgid "Enabled"
#: ../js/ui/status/location.js:180
msgid "Enable"
msgstr "સક્રિય"
@ -1462,42 +1444,35 @@ msgstr "<અજ્ઞાત>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#| msgid "Offline"
msgid "Off"
msgstr "બંધ"
#: ../js/ui/status/network.js:459
#| msgid "Connect"
msgid "Connected"
msgstr "જોડાયેલ"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:463
#| msgid "unmanaged"
msgid "Unmanaged"
msgstr "સંચાલિત થયેલ નથી"
#: ../js/ui/status/network.js:465
#| msgid "disconnecting..."
msgid "Disconnecting"
msgstr "જોડાઇ તૂટી રહ્યુ છે"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#| msgid "Connection"
msgid "Connecting"
msgstr "જોડાઇ રહ્યા છે"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:474
#| msgid "authentication required"
msgid "Authentication required"
msgstr "સત્તાધિકરણ જરૂરી"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:482
#| msgid "firmware missing"
msgid "Firmware missing"
msgstr "ફર્મવેર ગેરહાજર"
@ -1512,17 +1487,14 @@ msgid "Connection failed"
msgstr "જોડાણ નિષ્ફળ"
#: ../js/ui/status/network.js:504
#| msgid "Settings"
msgid "Wired Settings"
msgstr "વાયર થયેલ સુયોજનો"
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624
#| msgid "Mobile broadband"
msgid "Mobile Broadband Settings"
msgstr "મોબાઇલ બ્રોડબેન્ડ સુયોજનો"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#| msgid "hardware disabled"
msgid "Hardware Disabled"
msgstr "હાર્ડવેર નિષ્ક્રિય"
@ -1555,31 +1527,26 @@ msgid "Turn On Wi-Fi"
msgstr "Wi-Fi ચાલુ કરો"
#: ../js/ui/status/network.js:851
#| msgid "Network"
msgid "Wi-Fi Networks"
msgstr "Wi-Fi નેટવર્ક"
#: ../js/ui/status/network.js:853
#| msgid "Enable networking"
msgid "Select a network"
msgstr "નેટવર્ક પસંદ કરો"
#: ../js/ui/status/network.js:882
#| msgid "Network"
msgid "No Networks"
msgstr "નેટવર્ક નથી"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
msgid "Use hardware switch to turn off"
msgstr ""
msgstr "બંધ કરવા માટે હાર્ડવેર સ્વીચને વાપરો"
#: ../js/ui/status/network.js:1173
#| msgid "Network"
msgid "Select Network"
msgstr "નેટવર્ક પસંદ કરો"
#: ../js/ui/status/network.js:1179
#| msgid "Settings"
msgid "Wi-Fi Settings"
msgstr "Wi-Fi સુયોજનો"
@ -1609,7 +1576,6 @@ msgid "Network Settings"
msgstr "નેટવર્ક સુયોજનો"
#: ../js/ui/status/network.js:1482
#| msgid "Settings"
msgid "VPN Settings"
msgstr "VPN સુયોજનો"
@ -1645,7 +1611,7 @@ msgstr "%d%02d બાકી રહેલ છે (%d%%)"
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr ""
msgstr "%d%02d જ્યાં સુધી સંપૂર્ણ થાય (%d%%)"
#: ../js/ui/status/power.js:119
msgid "UPS"
@ -1660,7 +1626,6 @@ msgid "Airplane Mode"
msgstr "ઍરપ્લેન સ્થિતિ"
#: ../js/ui/status/rfkill.js:85
#| msgid "Open"
msgid "On"
msgstr "ચાલુ"
@ -1674,7 +1639,7 @@ msgstr "બહાર નીકળો"
#: ../js/ui/status/system.js:341
msgid "Orientation Lock"
msgstr ""
msgstr "દિશા તાળુ"
#: ../js/ui/status/system.js:349
msgid "Suspend"
@ -1704,17 +1669,16 @@ msgstr "બીજા વપરાશકર્તા તરીકે પ્રવ
msgid "Unlock Window"
msgstr "વિન્ડોનું તાળુ ખોલો"
#: ../js/ui/viewSelector.js:232
#: ../js/ui/viewSelector.js:158
msgid "Applications"
msgstr "કાર્યક્રમો"
#: ../js/ui/viewSelector.js:236
#: ../js/ui/viewSelector.js:162
msgid "Search"
msgstr "શોધો"
#: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready"
msgstr "“%s” તૈયાર છે"
@ -1726,20 +1690,19 @@ msgstr "શું તમને આ દર્શાવ સુયોજનોન
#. to avoid ellipsizing the labels.
#. */
#: ../js/ui/windowManager.js:84
#| msgid "Power Settings"
msgid "Revert Settings"
msgstr "સુયોજનોને પાછા લાવો"
#: ../js/ui/windowManager.js:88
msgid "Keep Changes"
msgstr ""
msgstr "ફેરફારો કરો"
#: ../js/ui/windowManager.js:107
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "સુયોજન ફેરફારો એ %d સેકંડમાં પાછા આવશે"
msgstr[1] "સુયોજન ફેરફારો એ %d સેકંડોમાં પાછા આવશે"
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
@ -1807,25 +1770,24 @@ msgstr[1] "%u ઇનપુટો"
msgid "System Sounds"
msgstr "સિસ્ટમ અવાજો"
#: ../src/main.c:371
#: ../src/main.c:373
msgid "Print version"
msgstr "ા"
#: ../src/main.c:377
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "લૉગિન સ્ક્રીન માટે GDM દ્દારા વાપરેલ સ્થિતિ"
#: ../src/main.c:383
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "ખાસ સ્થિતિને વાપરો, દા.ત. પ્રવેશ સ્ક્રીન માટે \"gdm\""
#: ../src/main.c:389
#: ../src/main.c:391
msgid "List possible modes"
msgstr "શક્ય સ્થિતિઓની યાદી કરો"
#: ../src/shell-app.c:666
#, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”"
msgstr "“%s” ને શરૂ કરવામાં નિષ્ફળતા"

326
po/he.po
View File

@ -10,8 +10,8 @@ msgid ""
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-09-13 23:32+0300\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-11-24 20:00+0200\n"
"PO-Revision-Date: 2014-11-24 20:03+0200\n"
"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
"Language-Team: עברית <>\n"
@ -292,8 +292,8 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Delay focus changes in mouse mode until the pointer stops moving"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Network Login"
msgstr "Network Login"
#: ../js/extensionPrefs/main.js:123
@ -307,7 +307,7 @@ msgstr "הרחבות GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "ביטול"
@ -325,20 +325,20 @@ msgctxt "button"
msgctxt "button"
msgid "Sign In"
msgstr "כניסה"
#: ../js/gdm/loginDialog.js:275
msgid "Choose Session"
msgstr "בחירת הפעלה"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#. manually entering the username.
#: ../js/gdm/loginDialog.js:434
msgid "Not listed?"
msgstr "לא רשום?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#. to clue the user in on how to login to the local network realm
#: ../js/gdm/loginDialog.js:619
#, javascript-format
msgid "(e.g., user or %s)"
@ -346,16 +346,16 @@ 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)
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "שם משתמש:"
#: ../js/gdm/loginDialog.js:955
msgid "Login Window"
msgstr "חלון כניסה"
#: ../js/gdm/util.js:341
msgid "Authentication error"
msgstr "שגיאת אימות"
@ -364,7 +364,7 @@ msgstr "שגיאת אימות"
#. not the main auth service. Instead we use the messages
#. as a cue to display our own message.
#. Translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#. to indicate the user can swipe their finger instead
#: ../js/gdm/util.js:473
msgid "(or swipe finger)"
msgstr "(או להעביר אצבע)"
@ -389,15 +389,15 @@ msgstr "ההרצה של „%s” נכשלה:"
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "אימות ניתוב הרשת"
#: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here"
msgstr "יישומים בשימוש תדיר יופיעו כאן"
#: ../js/ui/appDisplay.js:881
msgid "Frequent"
msgstr "תדיר"
#: ../js/ui/appDisplay.js:888
msgid "All"
msgstr "הכול"
@ -417,12 +417,12 @@ msgstr "הוספה למועדפים"
#: ../js/ui/appDisplay.js:1830
msgid "Show Details"
msgstr "הצגת פרטים"
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s נוסף למועדפים שלך."
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
@ -436,17 +436,23 @@ msgstr "הגדרות"
#: ../js/ui/backgroundMenu.js:21
msgid "Change Background…"
msgstr "החלפת הרקע…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "65"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#.
#: ../js/ui/calendar.js:68
msgctxt "event list time"
msgid "All Day"
msgstr "יום שלם"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to :
#. \u2236 is a ratio character, similar to :
#: ../js/ui/calendar.js:75
msgctxt "event list time"
msgid "%H%M"
@ -454,7 +460,7 @@ msgstr "%H:%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space
#. a thin space
#: ../js/ui/calendar.js:84
msgctxt "event list time"
msgid "%l%M%p"
@ -464,43 +470,43 @@ msgstr "%l\\u2236%M%p"
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
#.
#: ../js/ui/calendar.js:115
msgctxt "grid sunday"
msgid "S"
msgstr "א"
#. Translators: Calendar grid abbreviation for Monday
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:117
msgctxt "grid monday"
msgid "M"
msgstr "ב"
#. Translators: Calendar grid abbreviation for Tuesday
#. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:119
msgctxt "grid tuesday"
msgid "T"
msgstr "ג"
#. Translators: Calendar grid abbreviation for Wednesday
#. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:121
msgctxt "grid wednesday"
msgid "W"
msgstr "ד"
#. Translators: Calendar grid abbreviation for Thursday
#. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:123
msgctxt "grid thursday"
msgid "T"
msgstr "ה"
#. Translators: Calendar grid abbreviation for Friday
#. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:125
msgctxt "grid friday"
msgid "F"
msgstr "ו"
#. Translators: Calendar grid abbreviation for Saturday
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:127
msgctxt "grid saturday"
msgid "S"
@ -511,85 +517,83 @@ msgstr "ש"
#. * NOTE: These list abbreviations are normally not shown together
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#.
#.
#: ../js/ui/calendar.js:140
msgctxt "list sunday"
msgid "Su"
msgstr "א׳"
#. Translators: Event list abbreviation for Monday
#. Translators: Event list abbreviation for Monday
#: ../js/ui/calendar.js:142
msgctxt "list monday"
msgid "M"
msgstr "ב׳"
#. Translators: Event list abbreviation for Tuesday
#. Translators: Event list abbreviation for Tuesday
#: ../js/ui/calendar.js:144
msgctxt "list tuesday"
msgid "T"
msgstr "ג׳"
#. Translators: Event list abbreviation for Wednesday
#. Translators: Event list abbreviation for Wednesday
#: ../js/ui/calendar.js:146
msgctxt "list wednesday"
msgid "W"
msgstr "ד׳"
#. Translators: Event list abbreviation for Thursday
#. Translators: Event list abbreviation for Thursday
#: ../js/ui/calendar.js:148
msgctxt "list thursday"
msgid "Th"
msgstr "ה"
#. Translators: Event list abbreviation for Friday
#. Translators: Event list abbreviation for Friday
#: ../js/ui/calendar.js:150
msgctxt "list friday"
msgid "F"
msgstr "ו׳"
#. Translators: Event list abbreviation for Saturday
#. Translators: Event list abbreviation for Saturday
#: ../js/ui/calendar.js:152
msgctxt "list saturday"
msgid "S"
msgstr "ש׳"
#: ../js/ui/calendar.js:461
msgid "Previous month"
msgstr "חודש קודם"
#: ../js/ui/calendar.js:471
msgid "Next month"
msgstr "חודש הבא"
#. Translators: Text to show if there are no events
#. Translators: Text to show if there are no events
#: ../js/ui/calendar.js:806
msgid "Nothing Scheduled"
msgstr "היומן ריק"
#. Translators: Shown on calendar heading when selected day occurs on current year
#: ../js/ui/calendar.js:825
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, ה־%e ב%B"
#. Translators: Shown on calendar heading when selected day occurs on different year
#: ../js/ui/calendar.js:829
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, ה־%e ב%B, %Y"
#: ../js/ui/calendar.js:841
msgid "Today"
msgstr "היום"
#: ../js/ui/calendar.js:845
msgid "Tomorrow"
msgstr "מחר"
#: ../js/ui/calendar.js:856
msgid "This week"
msgstr "השבוע"
#: ../js/ui/calendar.js:864
msgid "Next week"
msgstr "בשבוע הבא"
@ -623,7 +627,7 @@ msgid "Type again:"
msgid "Type again:"
msgstr "נא להקליד שוב:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "התחברות"
@ -719,47 +723,47 @@ msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסל
msgstr "פעולה זו לא הצליחה, נא לנסות שוב. עמך הסליחה."
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
#. system-users for now as Empathy does.
#: ../js/ui/components/telepathyClient.js:242
msgid "Invitation"
msgstr "הזמנה"
#. We got the TpContact
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:302
msgid "Call"
msgstr "התקשרות"
#. We got the TpContact
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer"
msgstr "העברת קבצים"
#: ../js/ui/components/telepathyClient.js:422
msgid "Chat"
msgstr "שיחה"
#: ../js/ui/components/telepathyClient.js:485
msgid "Unmute"
msgstr "ביטול ההשתקה"
#: ../js/ui/components/telepathyClient.js:485
msgid "Mute"
msgstr "השתקה"
#. Translators: Time in 24h format
#. Translators: Time in 24h format
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30"
#. time string in 24h format. i.e. "Yesterday, 14:30"
#: ../js/ui/components/telepathyClient.js:962
#, no-c-format
msgid "Yesterday, %H%M"
msgstr "אתמול, %H\\u2236%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30"
#. string in 24h format. i.e. "Monday, 14:30"
#: ../js/ui/components/telepathyClient.js:969
#, no-c-format
msgid "%A, %H%M"
@ -767,7 +771,7 @@ msgstr "%A, %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30"
#. i.e. "May 25, 14:30"
#: ../js/ui/components/telepathyClient.js:976
#, no-c-format
msgid "%B %d, %H%M"
@ -775,26 +779,26 @@ msgstr "%d ב%B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30"
#. i.e. "May 25 2012, 14:30"
#: ../js/ui/components/telepathyClient.js:982
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%d ב%B, %H:%M"
#. Translators: Time in 24h format
#. Translators: Time in 24h format
#: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:995
#, no-c-format
msgid "Yesterday, %l%M %p"
msgstr "אתמול, %l\\u2236%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm"
#. string in 12h format. i.e. "Monday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1002
#, no-c-format
msgid "%A, %l%M %p"
@ -802,7 +806,7 @@ msgstr "%l:%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm"
#. i.e. "May 25, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1009
#, no-c-format
msgid "%B %d, %l%M %p"
@ -810,21 +814,21 @@ msgstr "%d ב%B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"
#. i.e. "May 25 2012, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:1015
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%d ב%B %Y, %l\\u2236%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#. IM name.
#: ../js/ui/components/telepathyClient.js:1047
#, javascript-format
msgid "%s is now known as %s"
msgstr "השם של %s הוחלף ל־%s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#. * room@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1151
#, javascript-format
msgid "Invitation to %s"
@ -832,38 +836,38 @@ msgstr "הזמנה ל־%s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#. * for example.
#: ../js/ui/components/telepathyClient.js:1159
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "הוזמנת על ידי %s להצטרף אל %s"
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1287
msgid "Decline"
msgstr "דחייה"
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1292
msgid "Accept"
msgstr "אישור"
#. translators: argument is a contact name like Alice for example.
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1186
#, javascript-format
msgid "Video call from %s"
msgstr "שיחת וידאו מאת %s"
#. translators: argument is a contact name like Alice for example.
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Call from %s"
msgstr "שיחה מאת %s"
#. translators: this is a button label (verb), not a noun
#. translators: this is a button label (verb), not a noun
#: ../js/ui/components/telepathyClient.js:1203
msgid "Answer"
msgstr "מענה"
@ -872,108 +876,108 @@ msgstr "מענה"
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#.
#: ../js/ui/components/telepathyClient.js:1224
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s שולח/ת אליך %s"
#. To translators: The parameter is the contact's alias
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1253
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s רוצה לקבל הרשאות כדי לראות מתי מצבך הוא מקוון"
#: ../js/ui/components/telepathyClient.js:1338
msgid "Network error"
msgstr "שגיאת רשת"
#: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed"
msgstr "האימות נכשל"
#: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error"
msgstr "שגיאת הצפנה"
#: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided"
msgstr "לא סופק אישור"
#: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted"
msgstr "האישור אינו מהימן"
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired"
msgstr "האישור פג"
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated"
msgstr "האישור לא מופעל"
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch"
msgstr "שם המארח באישור אינו תואם"
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch"
msgstr "חוסר התאמה בטביעת האצבע של האישור"
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed"
msgstr "אישור בחתימה עצמית"
#: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline"
msgstr "המצב הוגדר ל'מנותק'"
#: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available"
msgstr "ההצפנה אינה זמינה"
#: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid"
msgstr "האישור אינו תקף"
#: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused"
msgstr "ההתחברות נשללה"
#: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established"
msgstr "לא ניתן להפעיל את החיבור"
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost"
msgstr "החיבור אבד"
#: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server"
msgstr "חשבון זה כבר מחובר לשרת"
#: ../js/ui/components/telepathyClient.js:1372
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "החיבור הוחלף בחיבור חדש באמצעות אותו המשאב"
#: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server"
msgstr "החשבון כבר קיים בשרת"
#: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection"
msgstr "השרת עסוק ברגע זה מכדי לטפל בחיבור"
#: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked"
msgstr "האישור נשלל"
#: ../js/ui/components/telepathyClient.js:1380
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "האישור משתמש באלגוריתם הצפנה שאינו בטוח או חלש מבחינת הצפנה"
#: ../js/ui/components/telepathyClient.js:1382
msgid ""
"The length of the server certificate, or the depth of the server certificate "
@ -981,22 +985,22 @@ msgstr ""
msgstr ""
"אורך אישור השרת, או עומק שרשרת אישור השרת, חורגים מהמגבלות שנכפו על ידי "
"ספריית ההצפנה"
#: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error"
msgstr "שגיאה פנימית"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#. * name@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1394
#, javascript-format
msgid "Unable to connect to %s"
msgstr "לא ניתן להתחבר אל %s"
#: ../js/ui/components/telepathyClient.js:1399
msgid "View account"
msgstr "צפייה בחשבון"
#: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason"
msgstr "סיבה לא ידועה"
@ -1014,22 +1018,22 @@ msgstr "הצגת יישומים"
#: ../js/ui/dash.js:445
msgid "Dash"
msgstr "חלונית"
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "פתיחת היומן"
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "פתיחת השעונים"
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "הגדרות תאריך ושעה"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#.
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%A ה־%e ב%B, %Y"
@ -1168,7 +1172,7 @@ msgstr "התקנה"
#, javascript-format
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "הורדה והתקנה של „%s” מ־extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard"
msgstr "מקלדת"
@ -1224,39 +1228,48 @@ msgstr "צפייה במקור"
#: ../js/ui/lookingGlass.js:758
msgid "Web Page"
msgstr "דף אינטרנט"
#: ../js/ui/messageTray.js:1332
msgid "Open"
msgstr "פתיחה"
#: ../js/ui/messageTray.js:1339
msgid "Remove"
msgstr "הסרה"
#: ../js/ui/messageTray.js:1636
msgid "Notifications"
msgstr "התרעות"
#: ../js/ui/messageTray.js:1643
msgid "Clear Messages"
msgstr "פינוי ההודעות"
#: ../js/ui/messageTray.js:1662
msgid "Notification Settings"
msgstr "הגדרות התרעה"
#: ../js/ui/messageTray.js:1715
msgid "Tray Menu"
msgstr "תפריט מגש"
#: ../js/ui/messageTray.js:1939
msgid "No Messages"
msgstr "אין הודעות"
#: ../js/ui/messageTray.js:1984
msgid "Message Tray"
msgstr "אזור דיווח ההודעות"
# javascript-format
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "הודעה חדשה אחת"
msgstr[1] "%d הודעות חדשות"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "פרטי המערכת"
@ -1265,14 +1278,6 @@ msgctxt "program"
msgctxt "program"
msgid "Unknown"
msgstr "לא ידוע"
# javascript-format
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#, c-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "הודעה חדשה אחת"
msgstr[1] "%d הודעות חדשות"
#: ../js/ui/overview.js:84
msgid "Undo"
@ -1331,18 +1336,18 @@ msgid "%A, %B %d"
msgid "%A, %B %d"
msgstr "%A, ה־%d ב%B"
# javascript-format
# javascript-format
#: ../js/ui/screenShield.js:154
#, c-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "התרעה חדשה אחת"
msgstr[1] "%d התרעות חדשות"
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "נעילה"
#: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen"
msgstr "על GNOME לנעול את המסך"
@ -1353,19 +1358,19 @@ msgstr "על GNOME לנעול את המסך"
#. Just tell him to stop using this app
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock"
msgstr "לא ניתן לנעול"
#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application"
msgstr "הנעילה נחסמה ע״י היישום"
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "בחיפוש…"
#: ../js/ui/search.js:613
msgid "No results."
msgstr "אין תוצאות."
@ -1444,9 +1449,9 @@ msgid "Bluetooth"
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "כיבוי"
@ -1462,7 +1467,7 @@ msgid_plural "%d Connected Devices"
msgid_plural "%d Connected Devices"
msgstr[0] "התקן אחד מחובר"
msgstr[1] "%d התקנים מחוברים"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected"
msgstr "לא מחובר"
@ -1470,7 +1475,7 @@ msgstr "לא מחובר"
#: ../js/ui/status/brightness.js:44
msgid "Brightness"
msgstr "בהירות"
#: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout"
msgstr "הצגת פריסת המקלדת"
@ -1498,8 +1503,8 @@ msgstr "אפשור"
#: ../js/ui/status/network.js:101
msgid "<unknown>"
msgstr "<לא ידוע>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "כבוי"
@ -1517,7 +1522,7 @@ msgstr "לא מנוהל"
#: ../js/ui/status/network.js:465
msgid "Disconnecting"
msgstr "בהליכי ניתוק"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting"
msgstr "בהתחברות"
@ -1538,7 +1543,7 @@ msgstr "הקושחה חסרה"
#: ../js/ui/status/network.js:486
msgid "Unavailable"
msgstr "לא זמין"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed"
msgstr "ההתחברות נכשלה"
@ -1550,7 +1555,7 @@ msgstr "הגדרות רשת קווית"
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624
msgid "Mobile Broadband Settings"
msgstr "הגדרות פס־רחב נייד"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled"
msgstr "מנוטרל חומרתית"
@ -1590,60 +1595,60 @@ msgstr "רשתות אלחוטיות"
#: ../js/ui/status/network.js:853
msgid "Select a network"
msgstr "בחירת רשת"
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "אין רשתות"
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off"
msgstr "שימוש במתג של החומרה לכיבוי"
#: ../js/ui/status/network.js:1174
msgid "Select Network"
msgstr "בחירת רשת"
#: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings"
msgstr "הגדרות רשת אלחוטית"
#: ../js/ui/status/network.js:1282
msgid "Turn On"
msgstr "הפעלה"
#: ../js/ui/status/network.js:1299
msgid "Hotspot Active"
msgstr "נקודה חמה פעילה"
#: ../js/ui/status/network.js:1410
msgid "connecting..."
msgstr "בהתחברות..."
#. Translators: this is for network connections that require some kind of key or password
#. Translators: this is for network connections that require some kind of key or password
#: ../js/ui/status/network.js:1413
msgid "authentication required"
msgstr "נדרש אימות"
#: ../js/ui/status/network.js:1415
msgid "connection failed"
msgstr "ההתחברות נכשלה"
#: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings"
msgstr "הגדרות הרשת"
#: ../js/ui/status/network.js:1483
msgid "VPN Settings"
msgstr "הגדרות VPN"
#: ../js/ui/status/network.js:1502
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "מנהל הרשתות"
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "הפעלת חיבור הרשת נכשלה"
@ -1684,11 +1689,11 @@ msgstr "סוללה"
#. The menu only appears when airplane mode is on, so just
#. statically build it as if it was on, rather than dynamically
#. changing the menu contents.
#. changing the menu contents.
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode"
msgstr "מצב טיסה"
#: ../js/ui/status/rfkill.js:90
msgid "On"
msgstr "פועל"
@ -1867,6 +1872,9 @@ msgstr "הססמה לא יכולה להישאר ריקה"
#: ../src/shell-polkit-authentication-agent.c:346
msgid "Authentication dialog was dismissed by the user"
msgstr "המשתמש בחר להתעלם מתיבת דו־שיח האימות"
#~ msgid "Captive Portal"
#~ msgstr "Captive Portal"
#~ msgid "The maximum accuracy level of location."
#~ msgstr "The maximum accuracy level of location."

113
po/hi.po
View File

@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell.master.hi\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-19 07:33+0000\n"
"PO-Revision-Date: 2014-09-19 21:36+0630\n"
"POT-Creation-Date: 2014-09-19 19:40+0000\n"
"PO-Revision-Date: 2014-09-23 15:37+0630\n"
"Last-Translator: rajesh <rajesh>\n"
"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
"Language: hi\n"
@ -81,16 +81,10 @@ msgstr ""
"Alt-F2 संवाद का उपयोग करके आंतरिक डिबगिंग और निगरानी उपकरण तक पहुँच पायें."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
#| msgid "Uuids of extensions to enable"
msgid "UUIDs of extensions to enable"
msgstr "एक्सटेंशन का UUIDs सक्रिय किया जाना है"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
#| msgid ""
#| "GNOME Shell extensions have a uuid property; this key lists extensions "
#| "which should be loaded. Any extension that wants to be loaded needs to be "
#| "in this list. You can also manipulate this list with the EnableExtension "
#| "and DisableExtension DBus methods on org.gnome.Shell."
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
@ -107,7 +101,7 @@ msgstr ""
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
msgstr ""
msgstr "विस्तार संस्करण संगतता के वैधीकरण को निष्क्रिय करता है"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
msgid ""
@ -115,6 +109,10 @@ msgid ""
"running version. Enabling this option will disable this check and try to "
"load all extensions regardless of the versions they claim to support."
msgstr ""
"गनोम शेल केवल वही विस्तार लोड करेगा जो मौजूदा कार्यशील संस्करण के समर्थन का "
"दावा करता है. इस विकल्प का सक्रिय करना इस चेक को निष्क्रिय करेगा और सभी "
"विस्तार को लोड करने की कोशिश करेगा उन संस्करण से अलग जिसके समर्थन का वे दावा "
"करते हैं."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
@ -133,7 +131,7 @@ msgstr "एप्प पिकर दृश्य"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:10
msgid "Index of the currently selected view in the application picker."
msgstr ""
msgstr "अनुप्रयोग पिकर में मौजूदा चयनित दृश्य की सूची."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:11
msgid "History for command (Alt-F2) dialog"
@ -144,14 +142,10 @@ msgid "History for the looking glass dialog"
msgstr "ग्लास खोज संवाद के लिए इतिहास"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:13
#| msgid "Always show the 'Log out' menuitem in the user menu."
msgid "Always show the 'Log out' menu item in the user menu."
msgstr "हमेशा 'लॉग आउट' मेन्यू मद को उपयोक्ता मेन्यू में दिखाएँ."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
#| msgid ""
#| "This key overrides the automatic hiding of the 'Log out' menuitem in "
#| "single-user, single-session situations."
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
@ -206,16 +200,14 @@ msgstr ""
"कीबाइंडिंग"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
#, fuzzy
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the overview"
msgstr "\"अनुप्रयोग दिखाएँ\" दृश्य खोलने के लिए खोलने के लिए कीबाइंडिंग"
msgstr "सारांश खोलने के लिए कीबाइंडिंग"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:24
#, fuzzy
#| msgid "Keybinding to open the \"Show Applications\" view"
msgid "Keybinding to open the Activities Overview."
msgstr "\"अनुप्रयोग दिखाएँ\" दृश्य खोलने के लिए खोलने के लिए कीबाइंडिंग"
msgstr "गतिविधि सारांश खोलने के लिए कीबाइंडिंग"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to toggle the visibility of the message tray"
@ -237,6 +229,8 @@ msgstr "सक्रिय अधिसूचना फोकस करने
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"डिबगिंग उद्देश्य के लिए कीबाइंडिंग जो सभी कार्यशील ट्विन्स को रोकता है और "
"पुनर्बहाल करता है"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "Which keyboard to use"
@ -248,13 +242,15 @@ msgstr "उपयोग करने के लिए कीबोर्ड क
#: ../data/org.gnome.shell.gschema.xml.in.in.h:32
msgid "Limit switcher to current workspace."
msgstr ""
msgstr "मौजूदा कार्यस्थान में स्विचर सीमित करें."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
msgstr ""
"यदि सही है, मौजूदा कार्यस्थान पर विंडोयुक्त अनुप्रयोग इस स्विचर में दिखेगा. "
"अन्यथा, सभी अनुप्रयोग शामिल किए जाते हैं."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "The application icon mode."
@ -276,6 +272,8 @@ msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
msgstr ""
"यदि सही है, मौजूदा कार्यस्थान से आनेवाला विंडो इस स्विचर में दिखेगा. अन्यथा, "
"सभी विंडो शामिल किए जाते हैं."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Attach modal dialog to the parent window"
@ -315,7 +313,6 @@ msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s के लिए वरीयता संवाद लोड करने में एक त्रुटि थी:"
#: ../js/extensionPrefs/main.js:155
#| msgid "Configure GNOME Shell Extensions"
msgid "GNOME Shell Extensions"
msgstr "गनोम शेल एक्सटेंशन"
@ -341,7 +338,6 @@ msgid "Sign In"
msgstr "साइन इन"
#: ../js/gdm/loginDialog.js:269
#| msgid "Switch Session"
msgid "Choose Session"
msgstr "सत्र चुनें"
@ -381,18 +377,16 @@ msgstr "कमांड का विश्लेषण नहीं कर स
#: ../js/misc/util.js:156
#, javascript-format
#| msgid "Execution of '%s' failed:"
msgid "Execution of “%s” failed:"
msgstr "“%s” का निष्पादन विफल:"
#: ../js/portalHelper/main.js:85
#| msgid "Authentication Required"
msgid "Web Authentication Redirect"
msgstr "वेब सत्यापन रिडायरेक्ट"
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr ""
msgstr "बारंबार उपयोग वाला अनुप्रयोग यहाँ प्रकट होगा"
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
@ -402,20 +396,19 @@ msgstr "बारंबार"
msgid "All"
msgstr "सभी"
#: ../js/ui/appDisplay.js:1789
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "नया विंडो"
#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "पसंदीदा से हटाएँ"
#: ../js/ui/appDisplay.js:1821
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "पसंदीदा में जोड़ें"
#: ../js/ui/appDisplay.js:1830
#| msgid "Show Text"
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "विवरण दिखाएँ"
@ -659,9 +652,6 @@ msgstr "बेतार संजाल के द्वारा सत्य
#: ../js/ui/components/networkAgent.js:319
#, javascript-format
#| msgid ""
#| "Passwords or encryption keys are required to access the wireless network "
#| "'%s'."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
@ -697,7 +687,6 @@ msgstr "मोबाइल ब्रॉडबैंज संजाल कूट
#: ../js/ui/components/networkAgent.js:346
#, javascript-format
#| msgid "A password is required to connect to '%s'."
msgid "A password is required to connect to “%s”."
msgstr "“%s” में कनेक्ट होने के लिए एक कूटशब्द जरूरी है."
@ -753,14 +742,12 @@ msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#| msgid "<b>Yesterday</b>, <b>%H:%M</b>"
msgid "Yesterday, %H%M"
msgstr "कल %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#| msgid "%A, %B %d"
msgid "%A, %H%M"
msgstr "%A, %H%M"
@ -780,8 +767,6 @@ msgstr "%B %d %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#| msgctxt "event list time"
#| msgid "%l:%M %p"
msgid "%l%M %p"
msgstr "%l%M %p"
@ -794,7 +779,6 @@ msgstr "कल, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#| msgid "%a %l:%M %p"
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
@ -802,7 +786,6 @@ msgstr "%A, %l%M %p"
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d, %l%M %p"
msgstr "%B %d, %l%M %p"
@ -810,7 +793,6 @@ msgstr "%B %d, %l%M %p"
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#| msgid "%a %b %e, %l:%M %p"
msgid "%B %d %Y, %l%M %p"
msgstr "%B %d %Y, %l%M %p"
@ -1069,7 +1051,6 @@ msgid "Power Off"
msgstr "बंद करें"
#: ../js/ui/endSessionDialog.js:85
#| msgid "Install Updates & Restart"
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "अद्यतन संस्थापित करें और बंद करें"
@ -1109,20 +1090,21 @@ msgstr[0] "यह तंत्र %d सेकेंड में स्वत
msgstr[1] "यह तंत्र %d सेकेंडों में स्वतः फिर आरंभ हो जाएगा."
#: ../js/ui/endSessionDialog.js:119
#| msgid "Install Updates & Restart"
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "अद्यतन संस्थापित करें और फिर आरंभ करें"
#: ../js/ui/endSessionDialog.js:121
#, fuzzy, javascript-format
#, javascript-format
#| msgid "The system will restart automatically in %d second."
#| msgid_plural "The system will restart automatically in %d seconds."
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[1] "यह तंत्र %d सेकेंडों में स्वतः फिर आरंभ हो जाएगा."
msgstr[0] ""
"यह तंत्र %d सेकेंड में स्वतः फिर आरंभ हो जाएगा और अद्यतन संस्थापित करेगा."
msgstr[1] ""
"यह तंत्र %d सेकेंड में स्वतः फिर आरंभ हो जाएगा और अद्यतन संस्थापित करेगा."
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
@ -1141,11 +1123,11 @@ msgstr "अद्यतन संस्थापित होने के ब
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr ""
msgstr "बैटरी ऊर्जा पर चल रहा है: अद्यतन संस्थापन के पहले प्लगिन करें."
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr ""
msgstr "कुछ अनुप्रयोग व्यस्त हैं या बिना सहेजा कार्य है."
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
@ -1169,7 +1151,6 @@ msgstr "संस्थापित करें"
#: ../js/ui/extensionDownloader.js:204
#, javascript-format
#| msgid "Download and install '%s' from extensions.gnome.org?"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "“%s” को extensions.gnome.org से डाउनलोड कर संस्थापित करें?"
@ -1320,7 +1301,6 @@ msgid "Close"
msgstr "बंद करें"
#: ../js/ui/runDialog.js:277
#| msgid "Estimating…"
msgid "Restarting…"
msgstr "फिर आरंभ कर रहा है..."
@ -1446,14 +1426,12 @@ msgstr "ब्लूटूथ सेटिंग्स"
#: ../js/ui/status/bluetooth.js:104
#, javascript-format
#| msgid "Connected (private)"
msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d कनेक्टेड युक्ति"
msgstr[1] "%d कनेक्टेड युक्ति"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#| msgid "Connect"
msgid "Not Connected"
msgstr "मत कनेक्ट करें"
@ -1466,17 +1444,14 @@ msgid "Show Keyboard Layout"
msgstr "कुंजीपट लेआउट दिखाएँ"
#: ../js/ui/status/location.js:65
#| msgid "Notifications"
msgid "Location"
msgstr "स्थान"
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
#| msgid "Disabled"
msgid "Disable"
msgstr "निष्क्रिय करें"
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "गोपनीयता विन्यास"
@ -1485,7 +1460,6 @@ msgid "In Use"
msgstr "उपयोग में"
#: ../js/ui/status/location.js:180
#| msgid "Enabled"
msgid "Enable"
msgstr "सक्रिय करें"
@ -1495,42 +1469,35 @@ msgstr "<अज्ञात>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#| msgid "Offline"
msgid "Off"
msgstr "बंद"
#: ../js/ui/status/network.js:459
#| msgid "Connect"
msgid "Connected"
msgstr "कनेक्टेड"
#. Translators: this is for network devices that are physically present but are not
#. under NetworkManager's control (and thus cannot be used in the menu) */
#: ../js/ui/status/network.js:463
#| msgid "unmanaged"
msgid "Unmanaged"
msgstr "अप्रबंधित"
#: ../js/ui/status/network.js:465
#| msgid "disconnecting..."
msgid "Disconnecting"
msgstr "डिसकनेक्ट कर रहा है"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#| msgid "Connection"
msgid "Connecting"
msgstr "कनेक्शन"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:474
#| msgid "authentication required"
msgid "Authentication required"
msgstr "सत्यापन जरूरी"
#. Translators: this is for devices that require some kind of firmware or kernel
#. module, which is missing */
#: ../js/ui/status/network.js:482
#| msgid "firmware missing"
msgid "Firmware missing"
msgstr "फर्मवेयर अनुपस्थित"
@ -1545,17 +1512,14 @@ msgid "Connection failed"
msgstr "कनेक्शन असफल"
#: ../js/ui/status/network.js:504
#| msgid "Settings"
msgid "Wired Settings"
msgstr "बेतार सेटिंग"
#: ../js/ui/status/network.js:546 ../js/ui/status/network.js:624
#| msgid "Mobile broadband"
msgid "Mobile Broadband Settings"
msgstr "मोबाइल ब्रॉडबैंड सेटिंग"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#| msgid "hardware disabled"
msgid "Hardware Disabled"
msgstr "हार्डवेयर निष्क्रिय"
@ -1569,7 +1533,7 @@ msgstr "हवाई जहाज मोड चालू है"
#: ../js/ui/status/network.js:814
msgid "Wi-Fi is disabled when airplane mode is on."
msgstr ""
msgstr "वाई-फ़ाइल निष्क्रिय है जब हवाईजहाज अवस्था चालू है."
#: ../js/ui/status/network.js:815
msgid "Turn Off Airplane Mode"
@ -1581,7 +1545,7 @@ msgstr "वाई फाई बंद करें"
#: ../js/ui/status/network.js:825
msgid "Wi-Fi needs to be turned on in order to connect to a network."
msgstr ""
msgstr "वाई-फ़ाई को चलाने की जरूरत है ताकि संजाल से जोड़ा जा सके."
#: ../js/ui/status/network.js:826
msgid "Turn On Wi-Fi"
@ -1592,7 +1556,6 @@ msgid "Wi-Fi Networks"
msgstr " वाई फाई संजाल"
#: ../js/ui/status/network.js:853
#| msgid "Enable networking"
msgid "Select a network"
msgstr "एक नेटवर्क चुनें"
@ -1602,14 +1565,13 @@ msgstr "कोई संजाल नहीं"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
msgid "Use hardware switch to turn off"
msgstr ""
msgstr "बंद करने के लिए हार्डवेयर स्विच का उपयोग करें"
#: ../js/ui/status/network.js:1173
msgid "Select Network"
msgstr "एक नेटवर्क चुनें"
#: ../js/ui/status/network.js:1179
#| msgid "Settings"
msgid "Wi-Fi Settings"
msgstr "वाइ फाइ सेटिंग"
@ -1639,7 +1601,6 @@ msgid "Network Settings"
msgstr "नेटवर्क सेटिंग्स"
#: ../js/ui/status/network.js:1482
#| msgid "Settings"
msgid "VPN Settings"
msgstr "वीपीएन सेटिंग"
@ -1690,7 +1651,6 @@ msgid "Airplane Mode"
msgstr "हवाई जहाज मोड"
#: ../js/ui/status/rfkill.js:85
#| msgid "Open"
msgid "On"
msgstr "चालू"
@ -1744,7 +1704,6 @@ msgstr "ढूँढें"
#: ../js/ui/windowAttentionHandler.js:19
#, javascript-format
#| msgid "'%s' is ready"
msgid "“%s” is ready"
msgstr "“%s” तैयार है"
@ -1756,7 +1715,6 @@ msgstr "क्या आप इस प्रदर्शन जमावट क
#. to avoid ellipsizing the labels.
#. */
#: ../js/ui/windowManager.js:84
#| msgid "Power Settings"
msgid "Revert Settings"
msgstr "सेटिंग्स में वापस जाएँ"
@ -1768,8 +1726,8 @@ msgstr "परिवर्तन बनाए रखें"
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] ""
msgstr[1] ""
msgstr[0] "सेटिंग बदलाव %d सेकेंड में वापस होगा"
msgstr[1] "सेटिंग बदलाव %d सेकेंड में वापस होगा"
#: ../js/ui/windowMenu.js:34
msgid "Minimize"
@ -1793,7 +1751,7 @@ msgstr "आकार बदलें"
#: ../js/ui/windowMenu.js:65
msgid "Move Titlebar Onscreen"
msgstr ""
msgstr "ऑनस्क्रीन शीर्षकपट्टी खिसकाएँ"
#: ../js/ui/windowMenu.js:70
msgid "Always on Top"
@ -1855,7 +1813,6 @@ msgstr "संभावित अवस्था सूचीबद्ध कर
#: ../src/shell-app.c:666
#, c-format
#| msgid "Failed to launch '%s'"
msgid "Failed to launch “%s”"
msgstr "“%s” लॉन्च करने में विफल"

344
po/hu.po
View File

@ -11,10 +11,10 @@ msgstr ""
"Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-14 07:38+0000\n"
"PO-Revision-Date: 2014-09-14 15:21+0200\n"
"POT-Creation-Date: 2014-11-30 08:32+0000\n"
"PO-Revision-Date: 2014-11-30 16:24+0100\n"
"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
"Language-Team: Hungarian <openscope at googlegroups dot com>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -300,8 +300,9 @@ msgstr ""
"Fókuszváltozások késleltetése a mutató mozgásának megállásáig egér módban"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
msgstr "Fogoly portál"
#| msgid "Network error"
msgid "Network Login"
msgstr "Hálózati bejelentkezés"
#: ../js/extensionPrefs/main.js:123
#, javascript-format
@ -315,7 +316,7 @@ msgstr "GNOME Shell kiterjesztések"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "Mégse"
@ -333,33 +334,33 @@ msgctxt "button"
msgid "Sign In"
msgstr "Bejelentkezés"
#: ../js/gdm/loginDialog.js:269
#: ../js/gdm/loginDialog.js:275
msgid "Choose Session"
msgstr "Válasszon munkamenetet"
#: ../js/gdm/loginDialog.js:429
#: ../js/gdm/loginDialog.js:434
msgid "Not listed?"
msgstr "Nincs a listán?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:619
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(például: felhasználó vagy %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Felhasználónév: "
#: ../js/gdm/loginDialog.js:922
#: ../js/gdm/loginDialog.js:955
msgid "Login Window"
msgstr "Bejelentkezési ablak"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:341
msgid "Authentication error"
msgstr "Hitelesítési hiba"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:473
msgid "(or swipe finger)"
msgstr "(vagy húzza le az ujját)"
@ -377,19 +378,18 @@ msgid "Execution of “%s” failed:"
msgstr "„%s” végrehajtása meghiúsult:"
#: ../js/portalHelper/main.js:85
#| msgid "Authentication Required"
msgid "Web Authentication Redirect"
msgstr "Web hitelesítés átirányítás"
#: ../js/ui/appDisplay.js:772
#: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here"
msgstr "Itt jelennek meg a gyakran használt alkalmazások"
#: ../js/ui/appDisplay.js:883
#: ../js/ui/appDisplay.js:881
msgid "Frequent"
msgstr "Gyakori"
#: ../js/ui/appDisplay.js:890
#: ../js/ui/appDisplay.js:888
msgid "All"
msgstr "Összes"
@ -409,17 +409,17 @@ msgstr "Hozzáadás a Kedvencekhez"
msgid "Show Details"
msgstr "Részletek megjelenítése"
#: ../js/ui/appFavorites.js:124
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s felvéve a Kedvencek közé."
#: ../js/ui/appFavorites.js:158
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s eltávolítva a Kedvencek közül"
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Beállítások"
@ -428,17 +428,23 @@ msgstr "Beállítások"
msgid "Change Background…"
msgstr "Háttér megváltoztatása…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:68
msgctxt "event list time"
msgid "All Day"
msgstr "Egész nap"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:75
msgctxt "event list time"
msgid "%H%M"
msgstr "%k.%M"
@ -446,7 +452,7 @@ msgstr "%k.%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:84
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l.%M %p"
@ -456,43 +462,43 @@ msgstr "%l.%M %p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:98
msgctxt "grid sunday"
msgid "S"
msgstr "V"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:100
msgctxt "grid monday"
msgid "M"
msgstr "H"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:102
msgctxt "grid tuesday"
msgid "T"
msgstr "K"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:104
msgctxt "grid wednesday"
msgid "W"
msgstr "Sz"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:106
msgctxt "grid thursday"
msgid "T"
msgstr "Cs"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:108
msgctxt "grid friday"
msgid "F"
msgstr "P"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:110
msgctxt "grid saturday"
msgid "S"
msgstr "Sz"
@ -503,85 +509,83 @@ msgstr "Sz"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:123
msgctxt "list sunday"
msgid "Su"
msgstr "V"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:125
msgctxt "list monday"
msgid "M"
msgstr "H"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:127
msgctxt "list tuesday"
msgid "T"
msgstr "K"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:129
msgctxt "list wednesday"
msgid "W"
msgstr "Sze"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:131
msgctxt "list thursday"
msgid "Th"
msgstr "Cs"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:133
msgctxt "list friday"
msgid "F"
msgstr "P"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:135
msgctxt "list saturday"
msgid "S"
msgstr "Szo"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:444
msgid "Previous month"
msgstr "Előző hónap"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:454
msgid "Next month"
msgstr "Következő hónap"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781
#: ../js/ui/calendar.js:789
msgid "Nothing Scheduled"
msgstr "Semmi sincs ütemezve"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:799
#: ../js/ui/calendar.js:808
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %B %d."
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:802
#: ../js/ui/calendar.js:812
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %Y. %B %d."
#: ../js/ui/calendar.js:813
#: ../js/ui/calendar.js:824
msgid "Today"
msgstr "Ma"
#: ../js/ui/calendar.js:817
#: ../js/ui/calendar.js:828
msgid "Tomorrow"
msgstr "Holnap"
#: ../js/ui/calendar.js:828
#: ../js/ui/calendar.js:839
msgid "This week"
msgstr "Ezen a héten"
#: ../js/ui/calendar.js:836
#: ../js/ui/calendar.js:847
msgid "Next week"
msgstr "Jövő héten"
@ -615,7 +619,7 @@ msgid "Type again:"
msgstr "Írja be újra:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Kapcsolódás"
@ -709,102 +713,102 @@ msgstr "Hitelesítés"
msgid "Sorry, that didn't work. Please try again."
msgstr "A hitelesítés sikertelen. Próbálja újra."
#: ../js/ui/components/telepathyClient.js:240
#: ../js/ui/components/telepathyClient.js:242
msgid "Invitation"
msgstr "Meghívás"
#: ../js/ui/components/telepathyClient.js:300
#: ../js/ui/components/telepathyClient.js:302
msgid "Call"
msgstr "Hívás"
#: ../js/ui/components/telepathyClient.js:316
#: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer"
msgstr "Fájlátvitel"
#: ../js/ui/components/telepathyClient.js:420
#: ../js/ui/components/telepathyClient.js:422
msgid "Chat"
msgstr "Csevegés"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Unmute"
msgstr "Visszahangosítás"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Mute"
msgstr "Némítás"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%k.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Tegnap, %k.%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A %k.%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%B %d., %k.%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%Y. %B %d., %k.%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p"
msgstr "%P %l.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993
#: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p"
msgstr "Tegnap %l.%M %P"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p"
msgstr "%A, %l.%M %P"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p"
msgstr "%B %d., %l.%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p"
msgstr "%Y. %B %d., %l.%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1045
#: ../js/ui/components/telepathyClient.js:1047
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s mostantól %s néven ismert"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149
#: ../js/ui/components/telepathyClient.js:1151
#, javascript-format
msgid "Invitation to %s"
msgstr "Meghívás ide: %s"
@ -812,38 +816,38 @@ msgstr "Meghívás ide: %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1157
#: ../js/ui/components/telepathyClient.js:1159
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s kéri, hogy csatlakozzon ehhez: %s"
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1286
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1287
msgid "Decline"
msgstr "Elutasítás"
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1292
msgid "Accept"
msgstr "Elfogadás"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184
#: ../js/ui/components/telepathyClient.js:1186
#, javascript-format
msgid "Video call from %s"
msgstr "Videohívás tőle: %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Call from %s"
msgstr "Hívás tőle: %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201
#: ../js/ui/components/telepathyClient.js:1203
msgid "Answer"
msgstr "Válasz"
@ -852,111 +856,111 @@ msgstr "Válasz"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1222
#: ../js/ui/components/telepathyClient.js:1224
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s a következőt küldi: %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251
#: ../js/ui/components/telepathyClient.js:1253
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s engedélyt kér, hogy láthassa az Ön elérhető állapotát"
#: ../js/ui/components/telepathyClient.js:1337
#: ../js/ui/components/telepathyClient.js:1338
msgid "Network error"
msgstr "Hálózati hiba"
#: ../js/ui/components/telepathyClient.js:1339
#: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed"
msgstr "A hitelesítés meghiúsult"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error"
msgstr "Titkosítási hiba"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided"
msgstr "Nincs megadva tanúsítvány"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted"
msgstr "A tanúsítvány nem megbízható"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired"
msgstr "A tanúsítvány lejárt"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated"
msgstr "A tanúsítvány nincs aktiválva"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch"
msgstr "A tanúsítvány gépneve eltér"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch"
msgstr "A tanúsítvány ujjlenyomata eltér"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed"
msgstr "A tanúsítvány önaláírt"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline"
msgstr "Az állapot beállítva kilépettre"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available"
msgstr "A titkosítás nem érhető el"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid"
msgstr "A tanúsítvány érvénytelen"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused"
msgstr "A kapcsolat visszautasítva"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established"
msgstr "A kapcsolat nem hozható létre"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost"
msgstr "A kapcsolat elveszett"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server"
msgstr "Ez a fiók már kapcsolódik a kiszolgálóhoz"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"A kapcsolatot leváltotta egy új, ugyanazt az erőforrást használó kapcsolat"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server"
msgstr "A fiók már létezik a kiszolgálón"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection"
msgstr "A kiszolgáló pillanatnyilag túl elfoglalt a kapcsolat kezeléséhez"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked"
msgstr "A tanúsítvány visszavonva"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"A tanúsítvány nem biztonságos titkosító algoritmust használ, vagy "
"titkosításilag gyenge"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -964,22 +968,22 @@ msgstr ""
"A kiszolgáló tanúsítványának hossza, vagy a kiszolgáló tanúsítványláncának "
"mélysége túllépi a titkosítási programkönyvtár korlátozásait"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error"
msgstr "Belső hiba"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393
#: ../js/ui/components/telepathyClient.js:1394
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Nem lehet kapcsolódni ehhez: %s"
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1399
msgid "View account"
msgstr "Fiók megtekintése"
#: ../js/ui/components/telepathyClient.js:1435
#: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason"
msgstr "Ismeretlen ok"
@ -996,22 +1000,22 @@ msgstr "Alkalmazások megjelenítése"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "Naptár megnyitása"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "Órák megnyitása"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "Dátum- és időbeállítások"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%A, %Y. %B %d."
@ -1157,7 +1161,7 @@ msgid "Download and install “%s” from extensions.gnome.org?"
msgstr ""
"Letölti és telepíti a következőt az extensions.gnome.org webhelyről: „%s”?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard"
msgstr "Billentyűzet"
@ -1213,54 +1217,55 @@ msgstr "Forrás megtekintése"
msgid "Web Page"
msgstr "Weblap"
#: ../js/ui/messageTray.js:1326
#: ../js/ui/messageTray.js:1332
msgid "Open"
msgstr "Megnyitás"
#: ../js/ui/messageTray.js:1333
#: ../js/ui/messageTray.js:1339
msgid "Remove"
msgstr "Eltávolítás"
#: ../js/ui/messageTray.js:1630
#: ../js/ui/messageTray.js:1636
msgid "Notifications"
msgstr "Értesítések"
#: ../js/ui/messageTray.js:1637
#: ../js/ui/messageTray.js:1643
msgid "Clear Messages"
msgstr "Üzenetek törlése"
#: ../js/ui/messageTray.js:1656
#: ../js/ui/messageTray.js:1662
msgid "Notification Settings"
msgstr "Értesítések beállításai"
#: ../js/ui/messageTray.js:1709
#: ../js/ui/messageTray.js:1715
msgid "Tray Menu"
msgstr "Tálcamenü"
#: ../js/ui/messageTray.js:1926
#: ../js/ui/messageTray.js:1939
msgid "No Messages"
msgstr "Nincs üzenet"
#: ../js/ui/messageTray.js:1968
#: ../js/ui/messageTray.js:1984
msgid "Message Tray"
msgstr "Üzenettálca"
#: ../js/ui/messageTray.js:2971
msgid "System Information"
msgstr "Rendszerinformációk"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Ismeretlen"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d új üzenet"
msgstr[1] "%d új üzenet"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Rendszerinformációk"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Ismeretlen"
#: ../js/ui/overview.js:84
msgid "Undo"
msgstr "Visszavonás"
@ -1277,17 +1282,17 @@ msgstr "Áttekintés"
msgid "Type to search…"
msgstr "Gépeljen a kereséshez…"
#: ../js/ui/panel.js:515
#: ../js/ui/panel.js:521
msgid "Quit"
msgstr "Kilépés"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567
#: ../js/ui/panel.js:573
msgid "Activities"
msgstr "Tevékenységek"
#: ../js/ui/panel.js:918
#: ../js/ui/panel.js:924
msgid "Top Bar"
msgstr "Felső sáv"
@ -1304,7 +1309,6 @@ msgid "Close"
msgstr "Bezárás"
#: ../js/ui/runDialog.js:277
#| msgid "Estimating…"
msgid "Restarting…"
msgstr "Újraindítás…"
@ -1314,34 +1318,34 @@ msgstr "Újraindítás…"
msgid "%A, %B %d"
msgstr "%A, %B %d."
#: ../js/ui/screenShield.js:153
#: ../js/ui/screenShield.js:154
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d új értesítés"
msgstr[1] "%d új értesítés"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Zárolás"
#: ../js/ui/screenShield.js:706
#: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen"
msgstr "A GNOME-nak zárolnia kell a képernyőt"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock"
msgstr "Nem lehet zárolni"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application"
msgstr "A zárolást egy alkalmazás blokkolta"
#: ../js/ui/search.js:594
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "Keresés…"
#: ../js/ui/search.js:596
#: ../js/ui/search.js:613
msgid "No results."
msgstr "Nincs találat."
@ -1418,9 +1422,9 @@ msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "Kikapcsolás"
@ -1435,7 +1439,7 @@ msgid_plural "%d Connected Devices"
msgstr[0] "%d eszköz kapcsolódott"
msgstr[1] "%d eszköz kapcsolódott"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected"
msgstr "Nincs kapcsolat"
@ -1443,7 +1447,7 @@ msgstr "Nincs kapcsolat"
msgid "Brightness"
msgstr "Fényerő"
#: ../js/ui/status/keyboard.js:547
#: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout"
msgstr "Billentyűzetkiosztás megjelenítése"
@ -1456,7 +1460,6 @@ msgid "Disable"
msgstr "Letiltás"
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "Adatvédelmi beállítások"
@ -1472,8 +1475,8 @@ msgstr "Engedélyezés"
msgid "<unknown>"
msgstr "<ismeretlen>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "Ki"
@ -1491,7 +1494,7 @@ msgstr "Felügyeletlen"
msgid "Disconnecting"
msgstr "Bontás…"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting"
msgstr "Kapcsolódás"
@ -1512,7 +1515,7 @@ msgstr "Hiányzó firmware"
msgid "Unavailable"
msgstr "Nem érhető el"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed"
msgstr "Kapcsolódás meghiúsult"
@ -1524,7 +1527,7 @@ msgstr "Vezetékes beállítások"
msgid "Mobile Broadband Settings"
msgstr "Mobil széles sáv beállításai"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled"
msgstr "Hardver kikapcsolva"
@ -1564,60 +1567,60 @@ msgstr "Wi-Fi hálózatok"
msgid "Select a network"
msgstr "Válasszon egy hálózatot"
#: ../js/ui/status/network.js:882
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "Nincs hálózat"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off"
msgstr "A hardveres kapcsolóval kapcsolja ki"
#: ../js/ui/status/network.js:1173
#: ../js/ui/status/network.js:1174
msgid "Select Network"
msgstr "Válasszon hálózatot"
#: ../js/ui/status/network.js:1179
#: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings"
msgstr "Wi-Fi beállítások"
#: ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1282
msgid "Turn On"
msgstr "Bekapcsolás"
#: ../js/ui/status/network.js:1298
#: ../js/ui/status/network.js:1299
msgid "Hotspot Active"
msgstr "A hotspot aktív"
#: ../js/ui/status/network.js:1409
#: ../js/ui/status/network.js:1410
msgid "connecting..."
msgstr "kapcsolódás…"
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1412
#: ../js/ui/status/network.js:1413
msgid "authentication required"
msgstr "hitelesítés szükséges"
#: ../js/ui/status/network.js:1414
#: ../js/ui/status/network.js:1415
msgid "connection failed"
msgstr "a kapcsolódás meghiúsult"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings"
msgstr "Hálózati beállítások"
#: ../js/ui/status/network.js:1482
#: ../js/ui/status/network.js:1483
msgid "VPN Settings"
msgstr "VPN beállítások"
#: ../js/ui/status/network.js:1501
#: ../js/ui/status/network.js:1502
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1656
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Hálózatkezelő"
#: ../js/ui/status/network.js:1696
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "A hálózati kapcsolat aktiválása meghiúsult"
@ -1651,11 +1654,11 @@ msgstr "Szünetmentes táp"
msgid "Battery"
msgstr "Akkumulátor"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode"
msgstr "Repülőgép üzemmód"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:90
msgid "On"
msgstr "Be"
@ -1817,7 +1820,7 @@ msgstr ""
msgid "List possible modes"
msgstr "Lehetséges módok listázása"
#: ../src/shell-app.c:666
#: ../src/shell-app.c:680
#, c-format
msgid "Failed to launch “%s”"
msgstr "„%s” indítása meghiúsult"
@ -1834,6 +1837,9 @@ msgstr "A jelszó nem lehet üres"
msgid "Authentication dialog was dismissed by the user"
msgstr "A hitelesítési ablakot a felhasználó bezárta"
#~ msgid "Captive Portal"
#~ msgstr "Fogoly portál"
#~ msgid "The maximum accuracy level of location."
#~ msgstr "A hely maximális pontossági szintje."

778
po/it.po

File diff suppressed because it is too large Load Diff

1060
po/kk.po

File diff suppressed because it is too large Load Diff

View File

@ -19,7 +19,7 @@ msgstr ""
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-13 07:37+0000\n"
"PO-Revision-Date: 2014-09-18 01:41+0900\n"
"PO-Revision-Date: 2014-11-16 03:54+0900\n"
"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
"Language: Korean\n"
@ -1444,7 +1444,7 @@ msgstr "<알 수 없음>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
msgid "Off"
msgstr "끄기"
msgstr ""
#: ../js/ui/status/network.js:459
msgid "Connected"
@ -1626,7 +1626,7 @@ msgstr "비행기 모드"
#: ../js/ui/status/rfkill.js:85
msgid "On"
msgstr "켜기"
msgstr ""
#: ../js/ui/status/system.js:317
msgid "Switch User"

949
po/lv.po

File diff suppressed because it is too large Load Diff

539
po/nb.po

File diff suppressed because it is too large Load Diff

902
po/pt.po

File diff suppressed because it is too large Load Diff

962
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

348
po/sv.po
View File

@ -3,22 +3,23 @@
# This file is distributed under the same license as the gnome-shell package.
# Daniel Nylander <po@danielnylander.se>, 2009, 2010, 2011, 2012.
# Marcus Lundblad <ml@update.uu.se>, 2014.
# Åke Engelbrektson <eson57@gmail.com, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-12 21:57+0000\n"
"PO-Revision-Date: 2014-09-15 09:47+0100\n"
"Last-Translator: Mattias Eriksson <snaggen@gmail.com>\n"
"POT-Creation-Date: 2014-12-11 08:30+0000\n"
"PO-Revision-Date: 2014-12-11 08:57+0100\n"
"Last-Translator: Åke Engelbrektson <eson57@gmail.com>\n"
"Language-Team: svenska <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.5.4\n"
"X-Generator: Poedit 1.7.1\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -292,8 +293,8 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Fördröj fokusändringar i musläge tills pekare slutar röra sig"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
msgstr "Fångstportal"
msgid "Network Login"
msgstr "Nätverksinloggning"
#: ../js/extensionPrefs/main.js:123
#, javascript-format
@ -307,7 +308,7 @@ msgstr "Tillägg för GNOME-skal"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "Avbryt"
@ -325,33 +326,33 @@ msgctxt "button"
msgid "Sign In"
msgstr "Logga in"
#: ../js/gdm/loginDialog.js:269
#: ../js/gdm/loginDialog.js:275
msgid "Choose Session"
msgstr "Välj session"
#: ../js/gdm/loginDialog.js:429
#: ../js/gdm/loginDialog.js:434
msgid "Not listed?"
msgstr "Inte listad?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:619
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(till exempel användare eller %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Användarnamn: "
#: ../js/gdm/loginDialog.js:922
#: ../js/gdm/loginDialog.js:955
msgid "Login Window"
msgstr "Inloggningsfönster"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:341
msgid "Authentication error"
msgstr "Autentiseringsfel"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:473
msgid "(or swipe finger)"
msgstr "(eller dra fingret)"
@ -372,15 +373,15 @@ msgstr "Körning av ”%s” misslyckades:"
msgid "Web Authentication Redirect"
msgstr "Omdirigering för webautentisering"
#: ../js/ui/appDisplay.js:772
#: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here"
msgstr "Ofta använda program kommer visas här"
#: ../js/ui/appDisplay.js:883
#: ../js/ui/appDisplay.js:881
msgid "Frequent"
msgstr "Ofta använda"
#: ../js/ui/appDisplay.js:890
#: ../js/ui/appDisplay.js:888
msgid "All"
msgstr "Alla"
@ -400,17 +401,17 @@ msgstr "Lägg till som favorit"
msgid "Show Details"
msgstr "Visa detaljer"
#: ../js/ui/appFavorites.js:124
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s har lagts till i dina favoriter."
#: ../js/ui/appFavorites.js:158
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s har tagits bort från dina favoriter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Inställningar"
@ -419,17 +420,23 @@ msgstr "Inställningar"
msgid "Change Background…"
msgstr "Ändra bakgrund…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr ""
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:68
msgctxt "event list time"
msgid "All Day"
msgstr "Hela dagen"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:75
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -437,7 +444,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:84
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -447,43 +454,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:98
msgctxt "grid sunday"
msgid "S"
msgstr "S"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:100
msgctxt "grid monday"
msgid "M"
msgstr "M"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:102
msgctxt "grid tuesday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:104
msgctxt "grid wednesday"
msgid "W"
msgstr "O"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:106
msgctxt "grid thursday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:108
msgctxt "grid friday"
msgid "F"
msgstr "F"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:110
msgctxt "grid saturday"
msgid "S"
msgstr "L"
@ -494,85 +501,83 @@ msgstr "L"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:123
msgctxt "list sunday"
msgid "Su"
msgstr "Sö"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:125
msgctxt "list monday"
msgid "M"
msgstr "Må"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:127
msgctxt "list tuesday"
msgid "T"
msgstr "Ti"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:129
msgctxt "list wednesday"
msgid "W"
msgstr "On"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:131
msgctxt "list thursday"
msgid "Th"
msgstr "To"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:133
msgctxt "list friday"
msgid "F"
msgstr "Fr"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:135
msgctxt "list saturday"
msgid "S"
msgstr "Lö"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:444
msgid "Previous month"
msgstr "Föregående månad"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:454
msgid "Next month"
msgstr "Nästa månad"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781
#: ../js/ui/calendar.js:789
msgid "Nothing Scheduled"
msgstr "Ingenting i schemat"
#. Translators: Shown on calendar heading when selected day occurs on current year */
#: ../js/ui/calendar.js:799
#: ../js/ui/calendar.js:808
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on different year */
#: ../js/ui/calendar.js:802
#: ../js/ui/calendar.js:812
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:813
#: ../js/ui/calendar.js:824
msgid "Today"
msgstr "Idag"
#: ../js/ui/calendar.js:817
#: ../js/ui/calendar.js:828
msgid "Tomorrow"
msgstr "Imorgon"
#: ../js/ui/calendar.js:828
#: ../js/ui/calendar.js:839
msgid "This week"
msgstr "Denna vecka"
#: ../js/ui/calendar.js:836
#: ../js/ui/calendar.js:847
msgid "Next week"
msgstr "Nästa vecka"
@ -606,7 +611,7 @@ msgid "Type again:"
msgstr "Skriv igen:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Anslut"
@ -700,102 +705,102 @@ msgstr "Autentisera"
msgid "Sorry, that didn't work. Please try again."
msgstr "Tyvärr, det fungerade inte. Försök igen."
#: ../js/ui/components/telepathyClient.js:240
#: ../js/ui/components/telepathyClient.js:242
msgid "Invitation"
msgstr "Inbjudan"
#: ../js/ui/components/telepathyClient.js:300
#: ../js/ui/components/telepathyClient.js:302
msgid "Call"
msgstr "Samtal"
#: ../js/ui/components/telepathyClient.js:316
#: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer"
msgstr "Filöverföring"
#: ../js/ui/components/telepathyClient.js:420
#: ../js/ui/components/telepathyClient.js:422
msgid "Chat"
msgstr "Chatt"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Unmute"
msgstr "Aktivera ljud"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Mute"
msgstr "Tyst"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Igår, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p"
msgstr "%l%M%p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993
#: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p"
msgstr "Igår, %l%M%p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p"
msgstr "%A, %I%M%p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M%p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M%p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1045
#: ../js/ui/components/telepathyClient.js:1047
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s är nu känd som %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149
#: ../js/ui/components/telepathyClient.js:1151
#, javascript-format
msgid "Invitation to %s"
msgstr "Inbjudan till %s"
@ -803,38 +808,38 @@ msgstr "Inbjudan till %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1157
#: ../js/ui/components/telepathyClient.js:1159
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s bjuder in dig till %s"
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1286
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1287
msgid "Decline"
msgstr "Neka"
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1292
msgid "Accept"
msgstr "Acceptera"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184
#: ../js/ui/components/telepathyClient.js:1186
#, javascript-format
msgid "Video call from %s"
msgstr "Videosamtal från %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Call from %s"
msgstr "Samtal från %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201
#: ../js/ui/components/telepathyClient.js:1203
msgid "Answer"
msgstr "Svara"
@ -843,109 +848,109 @@ msgstr "Svara"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1222
#: ../js/ui/components/telepathyClient.js:1224
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s skickar dig %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251
#: ../js/ui/components/telepathyClient.js:1253
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s vill få behörighet att se när du är ansluten"
#: ../js/ui/components/telepathyClient.js:1337
#: ../js/ui/components/telepathyClient.js:1338
msgid "Network error"
msgstr "Nätverksfel"
#: ../js/ui/components/telepathyClient.js:1339
#: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed"
msgstr "Autentisering misslyckades"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error"
msgstr "Krypteringsfel"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided"
msgstr "Certifikat tillhandahålls inte"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted"
msgstr "Certifikatet är inte pålitligt"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired"
msgstr "Certifikatet är utgånget"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated"
msgstr "Certifikatet är inte aktiverat"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch"
msgstr "Certifikatets värdnamn stämmer inte"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch"
msgstr "Certifikatets fingeravtryck stämmer inte"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed"
msgstr "Certifikatet är självsignerat"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline"
msgstr "Status är inställd till frånkopplad"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available"
msgstr "Kryptering är inte tillgänglig"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid"
msgstr "Certifikatet är ogiltigt"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused"
msgstr "Anslutningen har nekats"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established"
msgstr "Anslutningen kan inte etableras"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost"
msgstr "Anslutningen har förlorats"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server"
msgstr "Detta konto är redan anslutet till servern"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Anslutningen har ersatts av en ny anslutning med samma resurs"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server"
msgstr "Kontot finns redan på servern"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection"
msgstr "Servern är för närvarande för upptagen för att hantera anslutningen"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked"
msgstr "Certifikatet har spärrats"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Certifikatet använder en osäker skifferalgoritm eller är kryptografiskt svagt"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
@ -953,22 +958,22 @@ msgstr ""
"Längden på serverns certifikat, eller djupet av serverns certifikatkedja, "
"överstiger gränserna som satts av det kryptografiska biblioteket"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error"
msgstr "Internt fel"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393
#: ../js/ui/components/telepathyClient.js:1394
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Misslyckades att ansluta till %s"
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1399
msgid "View account"
msgstr "Visa konto"
#: ../js/ui/components/telepathyClient.js:1435
#: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason"
msgstr "Okänd anledning"
@ -982,24 +987,24 @@ msgstr "Visa program"
#: ../js/ui/dash.js:445
msgid "Dash"
msgstr "Favoriter"
msgstr "Snabbstartspanel"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "Öppna kalender"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "Öppna klockor"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "Inställningar för datum och tid"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%A %e %B, %Y"
@ -1144,7 +1149,7 @@ msgstr "Installera"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Hämta och installera ”%s” från extensions.gnome.org?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard"
msgstr "Tangentbord"
@ -1200,54 +1205,55 @@ msgstr "Visa källa"
msgid "Web Page"
msgstr "Webbsida"
#: ../js/ui/messageTray.js:1326
#: ../js/ui/messageTray.js:1332
msgid "Open"
msgstr "Öppna"
#: ../js/ui/messageTray.js:1333
#: ../js/ui/messageTray.js:1339
msgid "Remove"
msgstr "Ta bort"
#: ../js/ui/messageTray.js:1630
#: ../js/ui/messageTray.js:1636
msgid "Notifications"
msgstr "Notifieringar"
#: ../js/ui/messageTray.js:1637
#: ../js/ui/messageTray.js:1643
msgid "Clear Messages"
msgstr "Rensa meddelanden"
#: ../js/ui/messageTray.js:1656
#: ../js/ui/messageTray.js:1662
msgid "Notification Settings"
msgstr "Inställningar för notifieringar"
#: ../js/ui/messageTray.js:1709
#: ../js/ui/messageTray.js:1715
msgid "Tray Menu"
msgstr "Fältmeny"
#: ../js/ui/messageTray.js:1926
#: ../js/ui/messageTray.js:1939
msgid "No Messages"
msgstr "Inga meddelanden"
#: ../js/ui/messageTray.js:1968
#: ../js/ui/messageTray.js:1984
msgid "Message Tray"
msgstr "Meddelandefält"
#: ../js/ui/messageTray.js:2971
msgid "System Information"
msgstr "Systeminformation"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Okänt"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d nytt meddelande"
msgstr[1] "%d nya meddelanden"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Systeminformation"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Okänt"
#: ../js/ui/overview.js:84
msgid "Undo"
msgstr "Ångra"
@ -1264,17 +1270,17 @@ msgstr "Översikt"
msgid "Type to search…"
msgstr "Skriv för att söka…"
#: ../js/ui/panel.js:515
#: ../js/ui/panel.js:521
msgid "Quit"
msgstr "Avsluta"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567
#: ../js/ui/panel.js:573
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:918
#: ../js/ui/panel.js:924
msgid "Top Bar"
msgstr "Systemrad"
@ -1300,34 +1306,34 @@ msgstr "Startar om…"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: ../js/ui/screenShield.js:153
#: ../js/ui/screenShield.js:154
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d ny notifiering"
msgstr[1] "%d nya notifieringar"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Lås"
#: ../js/ui/screenShield.js:706
#: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen"
msgstr "GNOME behöver låsa skärmen"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock"
msgstr "Kunde inte låsa"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application"
msgstr "Låsning hindrades av ett program"
#: ../js/ui/search.js:594
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "Söker…"
#: ../js/ui/search.js:596
#: ../js/ui/search.js:613
msgid "No results."
msgstr "Inga sökträffar."
@ -1404,9 +1410,9 @@ msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "Stäng av"
@ -1421,7 +1427,7 @@ msgid_plural "%d Connected Devices"
msgstr[0] "%d ansluten enhet"
msgstr[1] "%d anslutna enheter"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected"
msgstr "Ej ansluten"
@ -1429,7 +1435,7 @@ msgstr "Ej ansluten"
msgid "Brightness"
msgstr "Ljusstyrka"
#: ../js/ui/status/keyboard.js:547
#: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout"
msgstr "Visa tangentbordslayout"
@ -1442,7 +1448,6 @@ msgid "Disable"
msgstr "Inaktivera"
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "Sekretessinställningar"
@ -1458,8 +1463,8 @@ msgstr "Aktivera"
msgid "<unknown>"
msgstr "<okänd>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "Frånkopplad"
@ -1477,7 +1482,7 @@ msgstr "Ohanterade"
msgid "Disconnecting"
msgstr "Kopplar från"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting"
msgstr "Ansluter"
@ -1498,7 +1503,7 @@ msgstr "Fast programvara saknas"
msgid "Unavailable"
msgstr "Inte tillgänglig"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed"
msgstr "Anslutningen misslyckades"
@ -1510,7 +1515,7 @@ msgstr "Trådbundna inställningar"
msgid "Mobile Broadband Settings"
msgstr "Inställningar för mobilt bredband"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled"
msgstr "Maskinvara inaktiverad"
@ -1551,60 +1556,60 @@ msgstr "Trådlösa nätverk"
msgid "Select a network"
msgstr "Välj ett nätverk"
#: ../js/ui/status/network.js:882
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "Inga nätverk"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off"
msgstr "Använd hårdvarubrytare för att slå av"
#: ../js/ui/status/network.js:1173
#: ../js/ui/status/network.js:1174
msgid "Select Network"
msgstr "Välj nätverk"
#: ../js/ui/status/network.js:1179
#: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings"
msgstr "Inställningar för trådlösa nätverk"
#: ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1282
msgid "Turn On"
msgstr "Slå på"
#: ../js/ui/status/network.js:1298
#: ../js/ui/status/network.js:1299
msgid "Hotspot Active"
msgstr "Surfpunkt Aktiv"
msgstr "Surfzon aktiv"
#: ../js/ui/status/network.js:1409
#: ../js/ui/status/network.js:1410
msgid "connecting..."
msgstr "ansluter..."
#. Translators: this is for network connections that require some kind of key or password */
#: ../js/ui/status/network.js:1412
#: ../js/ui/status/network.js:1413
msgid "authentication required"
msgstr "autentisering krävs"
#: ../js/ui/status/network.js:1414
#: ../js/ui/status/network.js:1415
msgid "connection failed"
msgstr "anslutningen misslyckades"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings"
msgstr "Nätverksinställningar"
#: ../js/ui/status/network.js:1482
#: ../js/ui/status/network.js:1483
msgid "VPN Settings"
msgstr "VPN-inställningar"
#: ../js/ui/status/network.js:1501
#: ../js/ui/status/network.js:1502
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1656
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Nätverkshanterare"
#: ../js/ui/status/network.js:1696
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Aktivering av nätverksanslutning misslyckades"
@ -1638,11 +1643,11 @@ msgstr "Avbrottsfri kraftförsörjning (UPS)"
msgid "Battery"
msgstr "Batteri"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode"
msgstr "Flygplansläge"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:90
msgid "On"
msgstr "På"
@ -1803,7 +1808,7 @@ msgstr "Använd ett specifikt läge, t.ex. ”gdm” för inloggningsskärm"
msgid "List possible modes"
msgstr "Lista möjliga lägen"
#: ../src/shell-app.c:666
#: ../src/shell-app.c:680
#, c-format
msgid "Failed to launch “%s”"
msgstr "Misslyckades med att starta ”%s”"
@ -1820,6 +1825,9 @@ msgstr "Lösenordet får inte vara blankt"
msgid "Authentication dialog was dismissed by the user"
msgstr "Autentiseringsdialogen stängdes av användaren"
#~ msgid "Captive Portal"
#~ msgstr "Fångstportal"
#~ msgid "The maximum accuracy level of location."
#~ msgstr "Högsta grad av noggrannhet för plats."

232
po/te.po
View File

@ -1,7 +1,7 @@
# Telugu translation for gnome-shell.
# Copyright (C) 2011, 2012 Swecha telugu translations team <localization@swecha.net>
# This file is distributed under the same license as the gnome-shell package.
# Krishnababu Krothapalli <kkrothap@redhat.com>, 2011, 2012, 2013.
# Krishnababu Krothapalli <kkrothap@redhat.com>, 2011, 2012, 2013, 2014.
# Hari Krishna <hari@swecha.net>, 2011.
# Sasi Bhushan Boddepalli <sasi@swecha.net>, 2012.
# Praveen Illa <mail2ipn@gmail.com>, 2011, 2012, 2013, 2014.
@ -10,16 +10,16 @@ msgstr ""
"Project-Id-Version: gnome-shell gnome-3-0\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-08-26 19:34+0000\n"
"PO-Revision-Date: 2014-08-27 10:45+0530\n"
"Last-Translator: Praveen Illa <mail2ipn@gmail.com>\n"
"Language-Team: indlinux-telugu@lists.sourceforge.net\n"
"POT-Creation-Date: 2014-09-23 07:38+0000\n"
"PO-Revision-Date: 2014-09-23 15:55+0530\n"
"Last-Translator: Krishnababu Krothapalli <kkrothap@redhat.com>\n"
"Language-Team: American English <kde-i18n-doc@kde.org>\n"
"Language: te\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Virtaal 0.7.1\n"
"X-Generator: Lokalize 1.5\n"
"X-Project-Style: gnome\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
@ -69,14 +69,16 @@ msgstr "గ్నోమ్ షెల్ (వేల్యాండ్ సృష
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "అభివృద్ధికారులకు మరియు పరీక్షకులకు ఉపయోగపడే సాధనాలను Alt-F2 నుండి చేతనపరుచు"
msgstr ""
"అభివృద్ధికారులకు మరియు పరీక్షకులకు ఉపయోగపడే సాధనాలను Alt-F2 నుండి చేతనపరుచు"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Alt-F2 డైలాగుని వాడి అంతర్గత దోషశుద్ది మరియు సాధనాలను పర్యవేక్షించుటకు సౌలభ్యతను అనుమతిస్తుంది."
"Alt-F2 డైలాగుని వాడి అంతర్గత దోషశుద్ది మరియు సాధనాలను పర్యవేక్షించుటకు "
"సౌలభ్యతను అనుమతిస్తుంది."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
msgid "UUIDs of extensions to enable"
@ -89,8 +91,10 @@ msgid ""
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension D-Bus methods on org.gnome.Shell."
msgstr ""
"గ్నోమ్ షెల్ పొడిగింతలు ఒక UUID లక్షణాన్ని కలిగివున్నాయి; ఏ పొడిగింతలు లోడుచేయదగినవి కాదో ఈ కీ జాబితాచేయును. "
"ఏ పొడిగింత లోడవ్వాలో అది ఈ జాబితా నందు ఉండాలి. అంతేకాకుండా మీరు ఈ జాబితాను పాడిగింతను చేతనపరుచు లేదా "
"గ్నోమ్ షెల్ పొడిగింతలు ఒక UUID లక్షణాన్ని కలిగివున్నాయి; ఏ పొడిగింతలు "
"లోడుచేయదగినవి కాదో ఈ కీ జాబితాచేయును. "
"ఏ పొడిగింత లోడవ్వాలో అది ఈ జాబితా నందు ఉండాలి. అంతేకాకుండా మీరు ఈ జాబితాను "
"పాడిగింతను చేతనపరుచు లేదా "
"పొడిగింతను అచేతనపరుచు డిబస్ పద్ధతులలో గ్నోమ్ షెల్ నందు మార్చవచ్చును."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
@ -103,8 +107,10 @@ msgid ""
"running version. Enabling this option will disable this check and try to "
"load all extensions regardless of the versions they claim to support."
msgstr ""
"ప్రస్తుతం నడుస్తున్న రూపాంతరం తోడ్పాటుందని పేర్కొంటేనే గ్నోమ్ షెల్ పొడిగింతలను లోడు చేస్తుంది. ఈ "
"ఐచ్ఛికాన్ని చేతనం చేస్తే ఈ తనిఖీని అచేనించి, తోడ్పాటు ఉన్నాదా లేదా అనే విషయంతో సంబంధం లేకుండా అన్ని "
"ప్రస్తుతం నడుస్తున్న రూపాంతరం తోడ్పాటుందని పేర్కొంటేనే గ్నోమ్ షెల్ "
"పొడిగింతలను లోడు చేస్తుంది. ఈ "
"ఐచ్ఛికాన్ని చేతనం చేస్తే ఈ తనిఖీని అచేనించి, తోడ్పాటు ఉన్నాదా లేదా అనే "
"విషయంతో సంబంధం లేకుండా అన్ని "
"పొడిగింతలను నింపుటకు ప్రయత్నిస్తుంది"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
@ -115,7 +121,8 @@ msgstr "ప్రియమైన అనువర్తనాల కోసం డ
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr "ఈ గుర్తింపకాలకు అనుగుణమైన అనువర్తనాలు ప్రియమైన ప్రదేశములో ప్రదర్శించబడతాయి."
msgstr ""
"ఈ గుర్తింపకాలకు అనుగుణమైన అనువర్తనాలు ప్రియమైన ప్రదేశములో ప్రదర్శించబడతాయి."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "App Picker View"
@ -142,13 +149,16 @@ msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
msgstr ""
"ఏక-వాడుకరి, ఏక-ఘట్టం పరిస్థితులలో 'నిష్క్రమించు' మెనూ అంశము స్వయంచాలకంగా దాగుటను ఈ మీట భర్తీ "
"ఏక-వాడుకరి, ఏక-ఘట్టం పరిస్థితులలో 'నిష్క్రమించు' మెనూ అంశము స్వయంచాలకంగా "
"దాగుటను ఈ మీట భర్తీ "
"చేస్తుంది."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid ""
"Whether to remember password for mounting encrypted or remote filesystems"
msgstr "ఎన్క్రిప్టెడ్ లేదా రిమోట్ దస్త్రవ్యవస్థల మౌంటు చేయుటకు సంకేతపదాలను గుర్తుంచుకోవాలా"
msgstr ""
"ఎన్క్రిప్టెడ్ లేదా రిమోట్ దస్త్రవ్యవస్థల మౌంటు చేయుటకు సంకేతపదాలను "
"గుర్తుంచుకోవాలా"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid ""
@ -157,8 +167,10 @@ msgid ""
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"ఎన్క్రిప్టెడ్ పరికరం లేదా రిమోట్ దస్త్రవ్యవస్థ మౌంటవునప్పుడు షెల్ సంకేతపదం కొరకు అభ్యర్ధించును. భవిష్య "
"వినియోగం కొరకు సంకేతపదం దాయగలిగితే 'సంకేతపదం గుర్తుంచు' చెక్‌బాక్స్ వస్తుంది. ఈ కీ చెక్‌బాక్స్ యొక్క "
"ఎన్క్రిప్టెడ్ పరికరం లేదా రిమోట్ దస్త్రవ్యవస్థ మౌంటవునప్పుడు షెల్ సంకేతపదం "
"కొరకు అభ్యర్ధించును. భవిష్య "
"వినియోగం కొరకు సంకేతపదం దాయగలిగితే 'సంకేతపదం గుర్తుంచు' చెక్‌బాక్స్ వస్తుంది. "
"ఈ కీ చెక్‌బాక్స్ యొక్క "
"అప్రమేయ స్థితిని అమర్చును."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
@ -184,7 +196,8 @@ msgstr "\"అనువర్తనములు చూపు\" దర్శనం
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "కార్యకలాపాల అవలోకనం యొక్క \"అనువర్తనములు చూపించు\" వీక్షణం తెరువుటకు కీ బందనం."
msgstr ""
"కార్యకలాపాల అవలోకనం యొక్క \"అనువర్తనములు చూపించు\" వీక్షణం తెరువుటకు కీ బందనం."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Keybinding to open the overview"
@ -214,8 +227,8 @@ msgstr "క్రియాశీల ప్రకటన ఫోకస్‌కు
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"దోషవిశ్లేషణ కోసం, కీబైండింగు నడుస్తున్న అన్ని ట్వీన్లను తిరిగి కొనసాగిస్తుంది"
" మరియు నిలిపివేస్తుంది."
"దోషవిశ్లేషణ కోసం, కీబైండింగు నడుస్తున్న అన్ని ట్వీన్లను తిరిగి కొనసాగిస్తుంది "
"మరియు నిలిపివేస్తుంది."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "Which keyboard to use"
@ -235,7 +248,8 @@ msgid ""
"shown in the switcher. Otherwise, all applications are included."
msgstr ""
"ఒకవేళ నిజమైతే, ప్రస్తుత కార్యక్షేత్రంలో ఉన్న అనువర్తనాల కిటికీలు మాత్రమే "
"మార్పకంలో చూపించబడతాయి. లేదంటే, అన్ని అనువర్తనాలు ఉంచబడతాయి."
"మార్పకంలో చూపించబడతాయి. లేదంటే, "
"అన్ని అనువర్తనాలు ఉంచబడతాయి."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "The application icon mode."
@ -247,8 +261,10 @@ msgid ""
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"స్విచర్ నందు కిటికీలు ఎలా చూపునో ఆకృతీకరించును. చెల్లునటువంటి సాధ్యాలు 'thumbnail-only' (విండో "
"థంబ్‌నెయిల్ చూపును), 'app-icon-only' (అనువర్తన ప్రతిమ మాత్రమే చూపును) లేదా 'both'."
"స్విచర్ నందు కిటికీలు ఎలా చూపునో ఆకృతీకరించును. చెల్లునటువంటి సాధ్యాలు "
"'thumbnail-only' (విండో "
"థంబ్‌నెయిల్ చూపును), 'app-icon-only' (అనువర్తన ప్రతిమ మాత్రమే చూపును) లేదా "
"'both'."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid ""
@ -256,7 +272,8 @@ msgid ""
"Otherwise, all windows are included."
msgstr ""
"ఒకవేళ నిజమైతే, ప్రస్తుత కార్యక్షేత్రంలో ఉన్న కిటికీలు మాత్రమే మార్పకంలో "
"చూపించబడతాయి. లేదంటే, అన్ని కిటికీలు ఉంచబడతాయి."
"చూపించబడతాయి. లేదంటే, అన్ని కిటికీలు "
"ఉంచబడతాయి."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Attach modal dialog to the parent window"
@ -265,7 +282,9 @@ msgstr "పేరెంట్ కిటికీకు మోడల్ డైల
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid ""
"This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "గ్నోమ్ షెల్ నందు నడుచునప్పుడు ఈ కీ org.gnome.mutter నందలి కీను వోవర్‌రైడ్ చేయును."
msgstr ""
"గ్నోమ్ షెల్ నందు నడుచునప్పుడు ఈ కీ org.gnome.mutter నందలి కీను వోవర్‌రైడ్ "
"చేయును."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid "Enable edge tiling when dropping windows on screen edges"
@ -287,17 +306,17 @@ msgstr "మౌసు రీతిలో కేంద్రీకరణ మార
msgid "Captive Portal"
msgstr "కాప్టివ్ పోర్టల్"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:123
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "%s కొరకు ప్రాధాన్యతల సంభాషణను నింపుటలో అక్కడ ఒక దోషం ఉన్నది:"
#: ../js/extensionPrefs/main.js:159
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extensions"
msgstr "గ్నోమ్ షెల్ పొడిగింతలు"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
msgid "Cancel"
@ -364,40 +383,40 @@ msgstr "“%s” అమలు విఫలమైంది:"
msgid "Web Authentication Redirect"
msgstr "జాల ధృవీకరణ దారిమార్పు"
#: ../js/ui/appDisplay.js:660
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr "తరచూ వాడే అనువర్తనాలు ఇక్కడ కనిపిస్తాయి"
#: ../js/ui/appDisplay.js:771
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
msgstr "తరచు"
#: ../js/ui/appDisplay.js:778
#: ../js/ui/appDisplay.js:890
msgid "All"
msgstr "అన్ని"
#: ../js/ui/appDisplay.js:1650
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "కొత్త కిటికీ"
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "ఇష్టాంశాల నుండి తొలగించు"
#: ../js/ui/appDisplay.js:1679
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "ఇష్టాంశాలకు జతచేయి"
#: ../js/ui/appDisplay.js:1688
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "వివరాలను చూపించు"
#: ../js/ui/appFavorites.js:122
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s మీ ఇష్టాంశాలకు జతచేయబడింది."
#: ../js/ui/appFavorites.js:156
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s మీ ఇష్టాంశాల నుండి తీసివేయబడింది."
@ -589,11 +608,11 @@ msgstr "%sతో తెరువు"
msgid "Eject"
msgstr "బయటకునెట్టు"
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
msgid "Password:"
msgstr "సంకేతపదం:"
#: ../js/ui/components/keyring.js:113
#: ../js/ui/components/keyring.js:120
msgid "Type again:"
msgstr "మళ్ళీ టంకించండి:"
@ -635,7 +654,9 @@ msgstr "వైర్‌లెస్ నెట్‌వర్క్ చేత ధ
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr "నిస్తంత్రి నెట్‌వర్కు “%s” ప్రాప్యించుటకు సంకేతపదాలు లేదా ఎన్క్రిప్షన్ మీటలు అవసరం."
msgstr ""
"నిస్తంత్రి నెట్‌వర్కు “%s” ప్రాప్యించుటకు సంకేతపదాలు లేదా ఎన్క్రిప్షన్ మీటలు "
"అవసరం."
#: ../js/ui/components/networkAgent.js:323
msgid "Wired 802.1X authentication"
@ -933,14 +954,16 @@ msgstr "ధృవీకరణపత్రం కొట్టివేయబడ
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"ధృవీకరణపత్రం సురక్షితం కాని సైఫర్ ఆల్గార్దెమ్ వుపయోగించుచున్నది లేదా క్రిప్టోగ్రఫీ పరంగా బలహీనంగా వుంది"
"ధృవీకరణపత్రం సురక్షితం కాని సైఫర్ ఆల్గార్దెమ్ వుపయోగించుచున్నది లేదా "
"క్రిప్టోగ్రఫీ పరంగా బలహీనంగా వుంది"
#: ../js/ui/components/telepathyClient.js:1381
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"సేవిక ధృవీకరణపత్రం యొక్క పొడవు, లేదా సేవిక ధృవీకరణపత్రం చైన్ యొక్క లోతు, క్రిప్టోగ్రఫీ లైబ్రరీ చేత "
"సేవిక ధృవీకరణపత్రం యొక్క పొడవు, లేదా సేవిక ధృవీకరణపత్రం చైన్ యొక్క లోతు, "
"క్రిప్టోగ్రఫీ లైబ్రరీ చేత "
"నిర్దేశితమైన పరిమితులను మించును"
#: ../js/ui/components/telepathyClient.js:1383
@ -962,7 +985,7 @@ msgstr "ఖాతాను చూడండి"
msgid "Unknown reason"
msgstr "తెలియని కారణం"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
msgid "Windows"
msgstr "కిటికీలు"
@ -993,128 +1016,132 @@ msgstr "తేదీ మరియు సమయం అమరికలు"
msgid "%A %B %e, %Y"
msgstr "%A %B %e, %Y"
#: ../js/ui/endSessionDialog.js:66
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "%s నిష్క్రమించు"
#: ../js/ui/endSessionDialog.js:67
#: ../js/ui/endSessionDialog.js:65
msgctxt "title"
msgid "Log Out"
msgstr "నిష్క్రమించు"
#: ../js/ui/endSessionDialog.js:69
#: ../js/ui/endSessionDialog.js:67
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s స్వయంచాలకంగా %d సెకనులో నిష్క్రమించును."
msgstr[1] "%s స్వయంచాలకంగా %d సెకనులలో నిష్క్రమించును."
#: ../js/ui/endSessionDialog.js:74
#: ../js/ui/endSessionDialog.js:72
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "మీరు %d సెకనులో స్వయంచాలకంగా నిష్క్రమిస్తారు."
msgstr[1] "మీరు %d సెకనులలో స్వయంచాలకంగా నిష్క్రమిస్తారు."
#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:78
msgctxt "button"
msgid "Log Out"
msgstr "నిష్క్రమించు"
#: ../js/ui/endSessionDialog.js:86
#: ../js/ui/endSessionDialog.js:84
msgctxt "title"
msgid "Power Off"
msgstr "విద్యుత్ ఆపు"
#: ../js/ui/endSessionDialog.js:87
#: ../js/ui/endSessionDialog.js:85
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "నవీకరణలను స్థాపించి, విద్యుత్ ఆపు"
#: ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:87
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "%d సెకన్లలో వ్యవస్థ స్వయంచాలకంగా ఆపివేయబడుతుంది."
msgstr[1] "%d సెకన్లలో వ్యవస్థ స్వయంచాలకంగా ఆపివేయబడుతుంది."
#: ../js/ui/endSessionDialog.js:93
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "పెండింగులో ఉన్న సాఫ్ట్‌వేర్ నవీకరణలను స్థాపించు"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
msgctxt "button"
msgid "Restart"
msgstr "పునఃప్రారంభించు"
#: ../js/ui/endSessionDialog.js:98
#: ../js/ui/endSessionDialog.js:96
msgctxt "button"
msgid "Power Off"
msgstr "విద్యుత్ ఆపు"
#: ../js/ui/endSessionDialog.js:105
#: ../js/ui/endSessionDialog.js:103
msgctxt "title"
msgid "Restart"
msgstr "పునఃప్రారంభించు"
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:105
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "%d సెకనులో వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."
msgstr[1] "%d సెకనులలో వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."
#: ../js/ui/endSessionDialog.js:121
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "నవీకరణలను స్థాపించి, పునఃప్రారంభించు"
#: ../js/ui/endSessionDialog.js:123
#: ../js/ui/endSessionDialog.js:121
#, 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[1] "%d క్షణాలలో నవీకరణలను స్థాపించి, వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."
msgstr[0] ""
"%d క్షణాలలో నవీకరణలను స్థాపించి, వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."
msgstr[1] ""
"%d క్షణాలలో నవీకరణలను స్థాపించి, వ్యవస్థ స్వయంచాలకంగా పునఃప్రారంభించబడుతుంది."
#: ../js/ui/endSessionDialog.js:129
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "పునఃప్రారంభించి &amp; స్థాపించు"
#: ../js/ui/endSessionDialog.js:130
#: ../js/ui/endSessionDialog.js:128
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "స్థాపించి &amp; విద్యుత్ ఆపు"
#: ../js/ui/endSessionDialog.js:131
#: ../js/ui/endSessionDialog.js:129
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "నవీకరణలు స్థాపించిన తరువాత విద్యుత్ ఆపు"
#: ../js/ui/endSessionDialog.js:315
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr "బ్యాటరీ శక్తితో నడుస్తూంది: దయచేసి నవీకరణలు స్థాపించే ముందు విద్యుత్ అనుసంధానించండి."
msgstr ""
"బ్యాటరీ శక్తితో నడుస్తూంది: దయచేసి నవీకరణలు స్థాపించే ముందు విద్యుత్ "
"అనుసంధానించండి."
#: ../js/ui/endSessionDialog.js:332
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr "కొన్ని అనువర్తనాలు బిజీగా ఉన్నాయి లేదా భద్రపరుచని పని ఉండిపోయింది."
#: ../js/ui/endSessionDialog.js:339
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
msgstr "వేరే వాడుకరులు లాగిన్ అయివున్నారు."
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:640
#, javascript-format
msgid "%s (remote)"
msgstr "%s (రిమోట్)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:643
#, javascript-format
msgid "%s (console)"
msgstr "%s (కన్సోల్)"
@ -1128,7 +1155,7 @@ msgstr "స్థాపించు"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org నుండి “%s” దింపుకొని, స్థాపించాలా?"
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "కీబోర్డు"
@ -1150,8 +1177,8 @@ msgstr "దోషాలను దాయి"
msgid "Show Errors"
msgstr "దోషాలను చూపించు"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:166
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "చేతనమైనది"
@ -1159,7 +1186,7 @@ msgstr "చేతనమైనది"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:169
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "అచేతనమైనది"
@ -1184,39 +1211,39 @@ msgstr "మూలాన్ని చూడు"
msgid "Web Page"
msgstr "జాల పుట"
#: ../js/ui/messageTray.js:1325
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "తెరువు"
#: ../js/ui/messageTray.js:1332
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "తీసివేయి"
#: ../js/ui/messageTray.js:1629
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "ప్రకటనలు"
#: ../js/ui/messageTray.js:1636
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "సందేశాలు తుడిచివేయి"
#: ../js/ui/messageTray.js:1655
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "ప్రకటనల అమరికలు"
#: ../js/ui/messageTray.js:1708
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "పళ్ళెం జాబితా"
#: ../js/ui/messageTray.js:1925
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "సందేశాలు లేవు"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "సందేశ పళ్ళెం"
#: ../js/ui/messageTray.js:2966
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "వ్యవస్థ సమాచారం"
@ -1244,7 +1271,7 @@ msgstr "పర్యావలోకనం"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#: ../js/ui/overview.js:246
msgid "Type to search…"
msgstr "వెతకడానికి టైపు చేయండి…"
@ -1307,27 +1334,27 @@ msgstr "తాళం వేయలేకపోతూంది"
msgid "Lock was blocked by an application"
msgstr "తాళం ఒక అనువర్తనం చేత నిరోధించబడింది"
#: ../js/ui/search.js:606
#: ../js/ui/search.js:594
msgid "Searching…"
msgstr "వెతుకుతోంది..."
#: ../js/ui/search.js:652
#: ../js/ui/search.js:596
msgid "No results."
msgstr "ఏ ఫలితాలు లేవు."
#: ../js/ui/shellEntry.js:27
#: ../js/ui/shellEntry.js:25
msgid "Copy"
msgstr "నకలించు"
#: ../js/ui/shellEntry.js:32
#: ../js/ui/shellEntry.js:30
msgid "Paste"
msgstr "అతికించు"
#: ../js/ui/shellEntry.js:99
#: ../js/ui/shellEntry.js:97
msgid "Show Text"
msgstr "పాఠం చూపించు"
#: ../js/ui/shellEntry.js:101
#: ../js/ui/shellEntry.js:99
msgid "Hide Text"
msgstr "పాఠ్యం దాయి"
@ -1413,23 +1440,28 @@ msgstr "అనుసంధానించబడలేదు"
msgid "Brightness"
msgstr "ప్రకాశత"
#: ../js/ui/status/keyboard.js:406
#: ../js/ui/status/keyboard.js:547
msgid "Show Keyboard Layout"
msgstr "కీబోర్డు నమూనాను చూపించు"
#: ../js/ui/status/location.js:56
#: ../js/ui/status/location.js:65
msgid "Location"
msgstr "స్థానం"
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:167
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
msgid "Disable"
msgstr "అచేతనించు"
#: ../js/ui/status/location.js:166
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "గోప్యతా అమరికలు"
#: ../js/ui/status/location.js:176
msgid "In Use"
msgstr "వాడుకలో వుంది"
#: ../js/ui/status/location.js:170
#: ../js/ui/status/location.js:180
msgid "Enable"
msgstr "చేతనించు"
@ -1664,11 +1696,11 @@ msgstr "వేరొక వాడుకరి వలె ప్రవేశిం
msgid "Unlock Window"
msgstr "కిటికీ తాళంతీయి"
#: ../js/ui/viewSelector.js:232
#: ../js/ui/viewSelector.js:158
msgid "Applications"
msgstr "అనువర్తనాలు"
#: ../js/ui/viewSelector.js:236
#: ../js/ui/viewSelector.js:162
msgid "Search"
msgstr "వెతుకు"
@ -1765,19 +1797,19 @@ msgstr[1] "%u ఇన్‌పుట్‌లు"
msgid "System Sounds"
msgstr "వ్యవస్థ శబ్దములు"
#: ../src/main.c:371
#: ../src/main.c:373
msgid "Print version"
msgstr "ముద్రిత రూపాంతరం"
#: ../src/main.c:377
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "ప్రవేశ తెర కొరకు GDM చే ఉపయోగించబడిన రీతి"
#: ../src/main.c:383
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "ఒక నిర్దిష్ట రీతిని వాడు, ఉదా. ప్రవేశ తెర కొరకు \"gdm\""
#: ../src/main.c:389
#: ../src/main.c:391
msgid "List possible modes"
msgstr "సాధ్యమగు రీతులను జాబితాగా చేయి"

343
po/tr.po
View File

@ -7,14 +7,15 @@
# Osman Karagöz <osmank3@gmail.com>, 2013.
# Bayram Güçlü <byrmgcl@yandex.com.tr>, 2014.
# sabri ünal <yakushabb@gmail.com>, 2014.
# Gökhan Gurbetoğlu <ggurbet@gmail.com>, 2014.
# Muhammet Kara <muhammetk@gmail.com>, 2011, 2012, 2013, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-09-15 09:30+0000\n"
"PO-Revision-Date: 2014-09-16 09:01+0000\n"
"POT-Creation-Date: 2014-12-13 08:33+0000\n"
"PO-Revision-Date: 2014-12-13 17:43+0000\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
"MIME-Version: 1.0\n"
@ -267,8 +268,8 @@ msgid "Delay focus changes in mouse mode until the pointer stops moving"
msgstr "Fare kipinde odak değişikliklerini işaretçi hareketi durana kadar beklet"
#: ../data/org.gnome.Shell.PortalHelper.desktop.in.h:1
msgid "Captive Portal"
msgstr "Esir Portal"
msgid "Network Login"
msgstr "Ağ Girişi"
#: ../js/extensionPrefs/main.js:123
#, javascript-format
@ -282,7 +283,7 @@ msgstr "GNOME Kabuğu Uzantıları"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "İptal"
@ -300,33 +301,33 @@ msgctxt "button"
msgid "Sign In"
msgstr "Giriş"
#: ../js/gdm/loginDialog.js:269
#: ../js/gdm/loginDialog.js:275
msgid "Choose Session"
msgstr "Oturum Seçin"
#: ../js/gdm/loginDialog.js:429
#: ../js/gdm/loginDialog.js:434
msgid "Not listed?"
msgstr "Listede yok mu?"
#: ../js/gdm/loginDialog.js:614
#: ../js/gdm/loginDialog.js:619
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)"
#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:624 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Kullanıcı Adı: "
#: ../js/gdm/loginDialog.js:922
#: ../js/gdm/loginDialog.js:955
msgid "Login Window"
msgstr "Oturum Açma Penceresi"
#: ../js/gdm/util.js:323
#: ../js/gdm/util.js:341
msgid "Authentication error"
msgstr "Kimlik doğrulama hatası"
#: ../js/gdm/util.js:453
#: ../js/gdm/util.js:473
msgid "(or swipe finger)"
msgstr "(ya da parmak izi okutun)"
@ -347,15 +348,15 @@ msgstr "“%s” çalıştırılması başarısız:"
msgid "Web Authentication Redirect"
msgstr "Web Kimlik Doğrulama Yönlendirmesi"
#: ../js/ui/appDisplay.js:772
#: ../js/ui/appDisplay.js:770
msgid "Frequently used applications will appear here"
msgstr "Sık kullanılan uygulamalar burada yer alacak"
#: ../js/ui/appDisplay.js:883
#: ../js/ui/appDisplay.js:881
msgid "Frequent"
msgstr "Sık sık"
#: ../js/ui/appDisplay.js:890
#: ../js/ui/appDisplay.js:888
msgid "All"
msgstr "Hepsi"
@ -375,17 +376,17 @@ msgstr "Sık Kullanılanlara Ekle"
msgid "Show Details"
msgstr "Ayrıntıları Göster"
#: ../js/ui/appFavorites.js:124
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s sık kullanılanlarınıza eklendi."
#: ../js/ui/appFavorites.js:158
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s sık kullanılanlarınızdan çıkarıldı."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:819
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Ayarlar"
@ -394,17 +395,24 @@ msgstr "Ayarlar"
msgid "Change Background…"
msgstr "Arkaplanı Değiştir…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0"
#. (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:39
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:67
#: ../js/ui/calendar.js:68
msgctxt "event list time"
msgid "All Day"
msgstr "Tüm Gün"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:73
#: ../js/ui/calendar.js:75
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
@ -412,7 +420,7 @@ msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:82
#: ../js/ui/calendar.js:84
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
@ -422,43 +430,43 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:98
msgctxt "grid sunday"
msgid "S"
msgstr "P"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:100
msgctxt "grid monday"
msgid "M"
msgstr "P"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:102
msgctxt "grid tuesday"
msgid "T"
msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:104
msgctxt "grid wednesday"
msgid "W"
msgstr "Ç"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:106
msgctxt "grid thursday"
msgid "T"
msgstr "P"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:108
msgctxt "grid friday"
msgid "F"
msgstr "C"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:125
#: ../js/ui/calendar.js:110
msgctxt "grid saturday"
msgid "S"
msgstr "C"
@ -469,87 +477,83 @@ msgstr "C"
#. * so they need to be unique (e.g. Tuesday and Thursday cannot
#. * both be 'T').
#. */
#: ../js/ui/calendar.js:138
#: ../js/ui/calendar.js:123
msgctxt "list sunday"
msgid "Su"
msgstr "Pa"
#. Translators: Event list abbreviation for Monday */
#: ../js/ui/calendar.js:140
#: ../js/ui/calendar.js:125
msgctxt "list monday"
msgid "M"
msgstr "Pz"
#. Translators: Event list abbreviation for Tuesday */
#: ../js/ui/calendar.js:142
#: ../js/ui/calendar.js:127
msgctxt "list tuesday"
msgid "T"
msgstr "S"
#. Translators: Event list abbreviation for Wednesday */
#: ../js/ui/calendar.js:144
#: ../js/ui/calendar.js:129
msgctxt "list wednesday"
msgid "W"
msgstr "Ç"
#. Translators: Event list abbreviation for Thursday */
#: ../js/ui/calendar.js:146
#: ../js/ui/calendar.js:131
msgctxt "list thursday"
msgid "Th"
msgstr "Pe"
#. Translators: Event list abbreviation for Friday */
#: ../js/ui/calendar.js:148
#: ../js/ui/calendar.js:133
msgctxt "list friday"
msgid "F"
msgstr "C"
#. Translators: Event list abbreviation for Saturday */
#: ../js/ui/calendar.js:150
#: ../js/ui/calendar.js:135
msgctxt "list saturday"
msgid "S"
msgstr "Ct"
#: ../js/ui/calendar.js:453
#: ../js/ui/calendar.js:444
msgid "Previous month"
msgstr "Önceki ay"
#: ../js/ui/calendar.js:463
#: ../js/ui/calendar.js:454
msgid "Next month"
msgstr "Gelecek ay"
#. Translators: Text to show if there are no events */
#: ../js/ui/calendar.js:781
#: ../js/ui/calendar.js:789
msgid "Nothing Scheduled"
msgstr "Planınız Boş"
#. Translators: Shown on calendar heading when selected day occurs on current
#. year */
#: ../js/ui/calendar.js:799
#: ../js/ui/calendar.js:808
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#. Translators: Shown on calendar heading when selected day occurs on
#. different year */
#: ../js/ui/calendar.js:802
#: ../js/ui/calendar.js:812
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:813
#: ../js/ui/calendar.js:824
msgid "Today"
msgstr "Bugün"
#: ../js/ui/calendar.js:817
#: ../js/ui/calendar.js:828
msgid "Tomorrow"
msgstr "Yarın"
#: ../js/ui/calendar.js:828
#: ../js/ui/calendar.js:839
msgid "This week"
msgstr "Bu hafta"
#: ../js/ui/calendar.js:836
#: ../js/ui/calendar.js:847
msgid "Next week"
msgstr "Gelecek hafta"
@ -583,7 +587,7 @@ msgid "Type again:"
msgstr "Terkar yazın:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:918
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Bağlan"
@ -675,103 +679,103 @@ msgstr "Doğrula"
msgid "Sorry, that didn't work. Please try again."
msgstr "Üzgünüm ama işe yaramadı. Lütfen tekrar deneyin."
#: ../js/ui/components/telepathyClient.js:240
#: ../js/ui/components/telepathyClient.js:242
msgid "Invitation"
msgstr "Davet"
#: ../js/ui/components/telepathyClient.js:300
#: ../js/ui/components/telepathyClient.js:302
msgid "Call"
msgstr "Çağrı"
#: ../js/ui/components/telepathyClient.js:316
#: ../js/ui/components/telepathyClient.js:318
msgid "File Transfer"
msgstr "Dosya Aktarımı"
#: ../js/ui/components/telepathyClient.js:420
#: ../js/ui/components/telepathyClient.js:422
msgid "Chat"
msgstr "Sohbet"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Unmute"
msgstr "Sesi Aç"
#: ../js/ui/components/telepathyClient.js:483
#: ../js/ui/components/telepathyClient.js:485
msgid "Mute"
msgstr "Sesi Kapat"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:953
#: ../js/ui/components/telepathyClient.js:955
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:960
#: ../js/ui/components/telepathyClient.js:962
msgid "Yesterday, %H%M"
msgstr "Dün, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:967
#: ../js/ui/components/telepathyClient.js:969
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:974
#: ../js/ui/components/telepathyClient.js:976
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:980
#: ../js/ui/components/telepathyClient.js:982
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:986
#: ../js/ui/components/telepathyClient.js:988
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:993
#: ../js/ui/components/telepathyClient.js:995
msgid "Yesterday, %l%M %p"
msgstr "Dün, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1000
#: ../js/ui/components/telepathyClient.js:1002
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1007
#: ../js/ui/components/telepathyClient.js:1009
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1013
#: ../js/ui/components/telepathyClient.js:1015
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their
#. new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1045
#: ../js/ui/components/telepathyClient.js:1047
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s, şimdi %s olarak biliniyor"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1149
#: ../js/ui/components/telepathyClient.js:1151
#, javascript-format
msgid "Invitation to %s"
msgstr "%s'e Davet"
@ -779,38 +783,38 @@ msgstr "%s'e Davet"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1157
#: ../js/ui/components/telepathyClient.js:1159
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1286
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1196
#: ../js/ui/components/telepathyClient.js:1230
#: ../js/ui/components/telepathyClient.js:1287
msgid "Decline"
msgstr "Reddet"
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1291
#: ../js/ui/components/telepathyClient.js:1167
#: ../js/ui/components/telepathyClient.js:1236
#: ../js/ui/components/telepathyClient.js:1292
msgid "Accept"
msgstr "Kabul Et"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1184
#: ../js/ui/components/telepathyClient.js:1186
#, javascript-format
msgid "Video call from %s"
msgstr "%s'den görüntülü arama"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1187
#: ../js/ui/components/telepathyClient.js:1189
#, javascript-format
msgid "Call from %s"
msgstr "%s'den çağrı"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1201
#: ../js/ui/components/telepathyClient.js:1203
msgid "Answer"
msgstr "Cevapla"
@ -819,129 +823,129 @@ msgstr "Cevapla"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1222
#: ../js/ui/components/telepathyClient.js:1224
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s, size %s dosyasını gönderiyor"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1251
#: ../js/ui/components/telepathyClient.js:1253
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
#: ../js/ui/components/telepathyClient.js:1337
#: ../js/ui/components/telepathyClient.js:1338
msgid "Network error"
msgstr "Ağ hatası"
#: ../js/ui/components/telepathyClient.js:1339
#: ../js/ui/components/telepathyClient.js:1340
msgid "Authentication failed"
msgstr "Kimlik doğrulama başarısız"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1342
msgid "Encryption error"
msgstr "Şifreleme hatası"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1344
msgid "Certificate not provided"
msgstr "Sertifika sağlanmamış"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1346
msgid "Certificate untrusted"
msgstr "Sertifika güvenilmez"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1348
msgid "Certificate expired"
msgstr "Sertifikanın süresi dolmuş"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1350
msgid "Certificate not activated"
msgstr "Sertifika etkinleştirilmemiş"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1352
msgid "Certificate hostname mismatch"
msgstr "Sertifikanın makine adı uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1354
msgid "Certificate fingerprint mismatch"
msgstr "Sertifikanın parmak izi uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1356
msgid "Certificate self-signed"
msgstr "Sertifika kendinden-imzalı"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1358
msgid "Status is set to offline"
msgstr "Durum çevrimdıına ayarlı"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1360
msgid "Encryption is not available"
msgstr "Şifreleme kullanılabilir değil"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1362
msgid "Certificate is invalid"
msgstr "Sertifika geçersiz"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1364
msgid "Connection has been refused"
msgstr "Bağlantı reddedildi"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1366
msgid "Connection can't be established"
msgstr "Bağlantı kurulamıyor"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1368
msgid "Connection has been lost"
msgstr "Bağlantı koptu"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1370
msgid "This account is already connected to the server"
msgstr "Bu hesap zaten sunucuya bağlı"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1372
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1374
msgid "The account already exists on the server"
msgstr "Sunucuda böyle bir hesap zaten var"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1376
msgid "Server is currently too busy to handle the connection"
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1378
msgid "Certificate has been revoked"
msgstr "Sertifika hükümsüz kılınmış"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1380
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik olarak zayıf"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1382
msgid ""
"The length of the server certificate, or the depth of the server certificate"
" chain, exceed the limits imposed by the cryptography library"
msgstr "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1384
msgid "Internal error"
msgstr "İç hata"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1393
#: ../js/ui/components/telepathyClient.js:1394
#, javascript-format
msgid "Unable to connect to %s"
msgstr "%s bağlantısı sağlanamadı"
#: ../js/ui/components/telepathyClient.js:1398
#: ../js/ui/components/telepathyClient.js:1399
msgid "View account"
msgstr "Hesabı göster"
#: ../js/ui/components/telepathyClient.js:1435
#: ../js/ui/components/telepathyClient.js:1436
msgid "Unknown reason"
msgstr "Bilinmeyen sebep"
@ -957,15 +961,15 @@ msgstr "Uygulamaları Göster"
msgid "Dash"
msgstr "Konsol"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "Takvimi Aç"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "Saati Aç"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "Tarih ve Saat Ayarları"
@ -973,9 +977,9 @@ msgstr "Tarih ve Saat Ayarları"
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29
#. AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%e %B %A, %Y"
msgstr "%e %B %Y %A"
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
@ -1108,7 +1112,7 @@ msgstr "Kur"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:539
msgid "Keyboard"
msgstr "Klavye"
@ -1164,53 +1168,54 @@ msgstr "Kaynağı Görüntüle"
msgid "Web Page"
msgstr "Web Sayfası"
#: ../js/ui/messageTray.js:1326
#: ../js/ui/messageTray.js:1332
msgid "Open"
msgstr "Aç"
#: ../js/ui/messageTray.js:1333
#: ../js/ui/messageTray.js:1339
msgid "Remove"
msgstr "Sil"
#: ../js/ui/messageTray.js:1630
#: ../js/ui/messageTray.js:1636
msgid "Notifications"
msgstr "Bildirimler"
#: ../js/ui/messageTray.js:1637
#: ../js/ui/messageTray.js:1643
msgid "Clear Messages"
msgstr "Mesajları Temizle"
#: ../js/ui/messageTray.js:1656
#: ../js/ui/messageTray.js:1662
msgid "Notification Settings"
msgstr "Bildirim Ayarları"
#: ../js/ui/messageTray.js:1709
#: ../js/ui/messageTray.js:1715
msgid "Tray Menu"
msgstr "Tepsi Menüsü"
#: ../js/ui/messageTray.js:1926
#: ../js/ui/messageTray.js:1939
msgid "No Messages"
msgstr "Mesaj Yok"
#: ../js/ui/messageTray.js:1968
#: ../js/ui/messageTray.js:1984
msgid "Message Tray"
msgstr "Mesaj Tepsisi"
#: ../js/ui/messageTray.js:2971
msgid "System Information"
msgstr "Sistem Bilgisi"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:425
msgctxt "program"
msgid "Unknown"
msgstr "Bilinmeyen"
#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151
#: ../js/ui/messageTray.js:2441 ../js/ui/overviewControls.js:483
#: ../js/ui/screenShield.js:152
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d yeni mesaj"
#: ../js/ui/messageTray.js:3011
msgid "System Information"
msgstr "Sistem Bilgisi"
#: ../js/ui/notificationDaemon.js:513 ../src/shell-app.c:439
msgctxt "program"
msgid "Unknown"
msgstr "Bilinmeyen"
#: ../js/ui/overview.js:84
msgid "Undo"
msgstr "Geri Al"
@ -1227,17 +1232,17 @@ msgstr "Genel Görünüm"
msgid "Type to search…"
msgstr "Aramak için buraya yazın..."
#: ../js/ui/panel.js:515
#: ../js/ui/panel.js:521
msgid "Quit"
msgstr "Kapat"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:567
#: ../js/ui/panel.js:573
msgid "Activities"
msgstr "Etkinlikler"
#: ../js/ui/panel.js:918
#: ../js/ui/panel.js:924
msgid "Top Bar"
msgstr "Tepe Çubuğu"
@ -1261,35 +1266,35 @@ msgstr "Yeniden başlatılıyor..."
#. long format */
#: ../js/ui/screenShield.js:88
msgid "%A, %B %d"
msgstr "%d %B, %A"
msgstr "%d %B %A"
#: ../js/ui/screenShield.js:153
#: ../js/ui/screenShield.js:154
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d yeni bildirim"
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Kilitle"
#: ../js/ui/screenShield.js:706
#: ../js/ui/screenShield.js:709
msgid "GNOME needs to lock the screen"
msgstr "GNOME'un ekranı kilitlemesi gerekiyor"
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312
msgid "Unable to lock"
msgstr "Kilitlenemedi"
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313
msgid "Lock was blocked by an application"
msgstr "Kilitleme bir uygulama tarafından engellendi"
#: ../js/ui/search.js:594
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "Aranıyor…"
#: ../js/ui/search.js:596
#: ../js/ui/search.js:613
msgid "No results."
msgstr "Sonuç yok."
@ -1366,9 +1371,9 @@ msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1392 ../js/ui/status/rfkill.js:86
#: ../js/ui/status/rfkill.js:114
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "Kapat"
@ -1382,7 +1387,7 @@ msgid "%d Connected Device"
msgid_plural "%d Connected Devices"
msgstr[0] "%d Bağlı Cihaz"
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1309
#: ../js/ui/status/bluetooth.js:106 ../js/ui/status/network.js:1310
msgid "Not Connected"
msgstr "Bağlı Değil"
@ -1390,7 +1395,7 @@ msgstr "Bağlı Değil"
msgid "Brightness"
msgstr "Parlaklık"
#: ../js/ui/status/keyboard.js:547
#: ../js/ui/status/keyboard.js:563
msgid "Show Keyboard Layout"
msgstr "Klavye Düzenini Göster"
@ -1418,8 +1423,8 @@ msgstr "Etkinleştir"
msgid "<unknown>"
msgstr "<bilinmeyen>"
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1307
#: ../js/ui/status/network.js:1511
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "Kapalı"
@ -1438,7 +1443,7 @@ msgstr "Yönetilmeyen"
msgid "Disconnecting"
msgstr "Bağlantı Kesiliyor"
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1301
#: ../js/ui/status/network.js:471 ../js/ui/status/network.js:1302
msgid "Connecting"
msgstr "Bağlantı Kuruluyor"
@ -1462,7 +1467,7 @@ msgstr "Ürün Bilgisi eksik"
msgid "Unavailable"
msgstr "Kullanılamaz"
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1695
#: ../js/ui/status/network.js:488 ../js/ui/status/network.js:1696
msgid "Connection failed"
msgstr "Bağlantı başarısız oldu"
@ -1474,7 +1479,7 @@ msgstr "Kablolu Ağ Ayarları"
msgid "Mobile Broadband Settings"
msgstr "Mobil Geniş Bant Ayarları"
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305
#: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1306
msgid "Hardware Disabled"
msgstr "Donanım Devre Dışı"
@ -1514,61 +1519,61 @@ msgstr "Kablosuz Ağlar"
msgid "Select a network"
msgstr "Bir ağ seçin"
#: ../js/ui/status/network.js:882
#: ../js/ui/status/network.js:883
msgid "No Networks"
msgstr "Ağ Yok"
#: ../js/ui/status/network.js:903 ../js/ui/status/rfkill.js:112
#: ../js/ui/status/network.js:904 ../js/ui/status/rfkill.js:116
msgid "Use hardware switch to turn off"
msgstr "Kapatmak için donanım anahtarını kullanın."
#: ../js/ui/status/network.js:1173
#: ../js/ui/status/network.js:1174
msgid "Select Network"
msgstr "Ağ Seç"
#: ../js/ui/status/network.js:1179
#: ../js/ui/status/network.js:1180
msgid "Wi-Fi Settings"
msgstr "Kablosuz Ağ Ayarları"
#: ../js/ui/status/network.js:1281
#: ../js/ui/status/network.js:1282
msgid "Turn On"
msgstr "Aç"
#: ../js/ui/status/network.js:1298
#: ../js/ui/status/network.js:1299
msgid "Hotspot Active"
msgstr "Hotspot Etkin"
#: ../js/ui/status/network.js:1409
#: ../js/ui/status/network.js:1410
msgid "connecting..."
msgstr "bağlanıyor..."
#. Translators: this is for network connections that require some kind of key
#. or password */
#: ../js/ui/status/network.js:1412
#: ../js/ui/status/network.js:1413
msgid "authentication required"
msgstr "kimlik doğrulaması gerekli"
#: ../js/ui/status/network.js:1414
#: ../js/ui/status/network.js:1415
msgid "connection failed"
msgstr "bağlantı başarısız"
#: ../js/ui/status/network.js:1480 ../js/ui/status/rfkill.js:89
#: ../js/ui/status/network.js:1481 ../js/ui/status/rfkill.js:94
msgid "Network Settings"
msgstr "Ağ Ayarları"
#: ../js/ui/status/network.js:1482
#: ../js/ui/status/network.js:1483
msgid "VPN Settings"
msgstr "VPN Ayarları"
#: ../js/ui/status/network.js:1501
#: ../js/ui/status/network.js:1502
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1656
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Ağ Yöneticisi"
#: ../js/ui/status/network.js:1696
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Ağ bağlantısının etkinleştirilmesi başarısız oldu"
@ -1602,11 +1607,11 @@ msgstr "UPS"
msgid "Battery"
msgstr "Pil"
#: ../js/ui/status/rfkill.js:83
#: ../js/ui/status/rfkill.js:88
msgid "Airplane Mode"
msgstr "Uçak Kipi"
#: ../js/ui/status/rfkill.js:85
#: ../js/ui/status/rfkill.js:90
msgid "On"
msgstr "Açık"
@ -1764,7 +1769,7 @@ msgstr "Oturum açma için -\"gdm\" gibi- özel bir kip kullan"
msgid "List possible modes"
msgstr "Mevcut kipleri listele"
#: ../src/shell-app.c:666
#: ../src/shell-app.c:680
#, c-format
msgid "Failed to launch “%s”"
msgstr "“%s” başlatılamadı"

1877
po/uz@cyrillic.po Normal file

File diff suppressed because it is too large Load Diff

2108
po/vi.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -9,16 +9,16 @@ msgstr ""
"Project-Id-Version: gnome-shell 3.3.90\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2014-08-15 21:08+0000\n"
"PO-Revision-Date: 2014-08-19 09:31+0800\n"
"Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n"
"POT-Creation-Date: 2014-10-02 07:43+0000\n"
"PO-Revision-Date: 2014-10-02 20:02+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 1.6.5\n"
"X-Generator: Poedit 1.5.4\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@ -279,17 +279,17 @@ msgstr "在滑鼠模式中延遲焦點變更直到指標停止移動"
msgid "Captive Portal"
msgstr "網頁入口管制"
#: ../js/extensionPrefs/main.js:127
#: ../js/extensionPrefs/main.js:123
#, javascript-format
msgid "There was an error loading the preferences dialog for %s:"
msgstr "載入 %s 的偏好設定對話盒時發生錯誤:"
#: ../js/extensionPrefs/main.js:159
#: ../js/extensionPrefs/main.js:155
msgid "GNOME Shell Extensions"
msgstr "GNOME Shell 擴充功能"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:429
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:915
msgid "Cancel"
@ -352,44 +352,44 @@ msgstr "無法分析指令:"
msgid "Execution of “%s” failed:"
msgstr "執行「%s」失敗"
#: ../js/portalHelper/main.js:84
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "網頁核對重新導向"
#: ../js/ui/appDisplay.js:660
#: ../js/ui/appDisplay.js:772
msgid "Frequently used applications will appear here"
msgstr "經常使用的應用程式會出現在這裡"
#: ../js/ui/appDisplay.js:771
#: ../js/ui/appDisplay.js:883
msgid "Frequent"
msgstr "常用"
#: ../js/ui/appDisplay.js:778
#: ../js/ui/appDisplay.js:890
msgid "All"
msgstr "全部"
#: ../js/ui/appDisplay.js:1650
#: ../js/ui/appDisplay.js:1790
msgid "New Window"
msgstr "新視窗"
#: ../js/ui/appDisplay.js:1673 ../js/ui/dash.js:285
#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285
msgid "Remove from Favorites"
msgstr "自喜好中移除"
#: ../js/ui/appDisplay.js:1679
#: ../js/ui/appDisplay.js:1822
msgid "Add to Favorites"
msgstr "加入喜好"
#: ../js/ui/appDisplay.js:1688
#: ../js/ui/appDisplay.js:1831
msgid "Show Details"
msgstr "顯示詳細資訊"
#: ../js/ui/appFavorites.js:122
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s 已加入您的喜好中。"
#: ../js/ui/appFavorites.js:156
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s 已經從您的喜好中移除。"
@ -581,11 +581,11 @@ msgstr "用 %s 開啟"
msgid "Eject"
msgstr "退出"
#: ../js/ui/components/keyring.js:93 ../js/ui/components/polkitAgent.js:285
#: ../js/ui/components/keyring.js:94 ../js/ui/components/polkitAgent.js:285
msgid "Password:"
msgstr "密碼: "
#: ../js/ui/components/keyring.js:113
#: ../js/ui/components/keyring.js:120
msgid "Type again:"
msgstr "再輸入一次:"
@ -707,77 +707,77 @@ msgid "Mute"
msgstr "靜音"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:957
#: ../js/ui/components/telepathyClient.js:953
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:964
#: ../js/ui/components/telepathyClient.js:960
msgid "Yesterday, %H%M"
msgstr "昨天 %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:971
#: ../js/ui/components/telepathyClient.js:967
msgid "%A, %H%M"
msgstr "%A %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:978
#: ../js/ui/components/telepathyClient.js:974
msgid "%B %d, %H%M"
msgstr "%m月%d日 %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:984
#: ../js/ui/components/telepathyClient.js:980
msgid "%B %d %Y, %H%M"
msgstr "%Y年%m月%d日 %H:%M"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:990
#: ../js/ui/components/telepathyClient.js:986
msgid "%l%M %p"
msgstr "%p %l%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:997
#: ../js/ui/components/telepathyClient.js:993
msgid "Yesterday, %l%M %p"
msgstr "昨天 %p %l%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1004
#: ../js/ui/components/telepathyClient.js:1000
msgid "%A, %l%M %p"
msgstr "%A%p %l%M"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:1011
#: ../js/ui/components/telepathyClient.js:1007
msgid "%B %d, %l%M %p"
msgstr "%m月%d日%p %l%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:1017
#: ../js/ui/components/telepathyClient.js:1013
msgid "%B %d %Y, %l%M %p"
msgstr "%Y年%m月%d日%p %l%M"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1049
#: ../js/ui/components/telepathyClient.js:1045
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s 現在被稱為 %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1153
#: ../js/ui/components/telepathyClient.js:1149
#, javascript-format
msgid "Invitation to %s"
msgstr "邀請加入 %s"
@ -785,38 +785,38 @@ msgstr "邀請加入 %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1161
#: ../js/ui/components/telepathyClient.js:1157
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s 正在邀請您加入 %s"
#: ../js/ui/components/telepathyClient.js:1163
#: ../js/ui/components/telepathyClient.js:1198
#: ../js/ui/components/telepathyClient.js:1232
#: ../js/ui/components/telepathyClient.js:1290
#: ../js/ui/components/telepathyClient.js:1159
#: ../js/ui/components/telepathyClient.js:1194
#: ../js/ui/components/telepathyClient.js:1228
#: ../js/ui/components/telepathyClient.js:1286
msgid "Decline"
msgstr "拒絕"
#: ../js/ui/components/telepathyClient.js:1169
#: ../js/ui/components/telepathyClient.js:1238
#: ../js/ui/components/telepathyClient.js:1295
#: ../js/ui/components/telepathyClient.js:1165
#: ../js/ui/components/telepathyClient.js:1234
#: ../js/ui/components/telepathyClient.js:1291
msgid "Accept"
msgstr "接受"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1188
#: ../js/ui/components/telepathyClient.js:1184
#, javascript-format
msgid "Video call from %s"
msgstr "來自 %s 的視訊電話"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1191
#: ../js/ui/components/telepathyClient.js:1187
#, javascript-format
msgid "Call from %s"
msgstr "%s 來電"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1205
#: ../js/ui/components/telepathyClient.js:1201
msgid "Answer"
msgstr "接聽"
@ -825,133 +825,133 @@ msgstr "接聽"
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1226
#: ../js/ui/components/telepathyClient.js:1222
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s 正傳送給您 %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1255
#: ../js/ui/components/telepathyClient.js:1251
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s 想要得到查看您上線狀態的許可"
#: ../js/ui/components/telepathyClient.js:1341
#: ../js/ui/components/telepathyClient.js:1337
msgid "Network error"
msgstr "網路錯誤"
#: ../js/ui/components/telepathyClient.js:1343
#: ../js/ui/components/telepathyClient.js:1339
msgid "Authentication failed"
msgstr "核對失敗"
#: ../js/ui/components/telepathyClient.js:1345
#: ../js/ui/components/telepathyClient.js:1341
msgid "Encryption error"
msgstr "加密發生錯誤"
#: ../js/ui/components/telepathyClient.js:1347
#: ../js/ui/components/telepathyClient.js:1343
msgid "Certificate not provided"
msgstr "沒有提供憑證"
#: ../js/ui/components/telepathyClient.js:1349
#: ../js/ui/components/telepathyClient.js:1345
msgid "Certificate untrusted"
msgstr "憑證不被信任"
#: ../js/ui/components/telepathyClient.js:1351
#: ../js/ui/components/telepathyClient.js:1347
msgid "Certificate expired"
msgstr "憑證已逾期"
#: ../js/ui/components/telepathyClient.js:1353
#: ../js/ui/components/telepathyClient.js:1349
msgid "Certificate not activated"
msgstr "憑證尚未使用"
#: ../js/ui/components/telepathyClient.js:1355
#: ../js/ui/components/telepathyClient.js:1351
msgid "Certificate hostname mismatch"
msgstr "憑證主機名稱不符"
#: ../js/ui/components/telepathyClient.js:1357
#: ../js/ui/components/telepathyClient.js:1353
msgid "Certificate fingerprint mismatch"
msgstr "憑證數位指紋不符"
#: ../js/ui/components/telepathyClient.js:1359
#: ../js/ui/components/telepathyClient.js:1355
msgid "Certificate self-signed"
msgstr "憑證為自我簽署"
#: ../js/ui/components/telepathyClient.js:1361
#: ../js/ui/components/telepathyClient.js:1357
msgid "Status is set to offline"
msgstr "狀態設為離線"
#: ../js/ui/components/telepathyClient.js:1363
#: ../js/ui/components/telepathyClient.js:1359
msgid "Encryption is not available"
msgstr "加密無法使用"
#: ../js/ui/components/telepathyClient.js:1365
#: ../js/ui/components/telepathyClient.js:1361
msgid "Certificate is invalid"
msgstr "憑證無效"
#: ../js/ui/components/telepathyClient.js:1367
#: ../js/ui/components/telepathyClient.js:1363
msgid "Connection has been refused"
msgstr "連線遭到拒絕"
#: ../js/ui/components/telepathyClient.js:1369
#: ../js/ui/components/telepathyClient.js:1365
msgid "Connection can't be established"
msgstr "無法建立連線"
#: ../js/ui/components/telepathyClient.js:1371
#: ../js/ui/components/telepathyClient.js:1367
msgid "Connection has been lost"
msgstr "已失去連線"
#: ../js/ui/components/telepathyClient.js:1373
#: ../js/ui/components/telepathyClient.js:1369
msgid "This account is already connected to the server"
msgstr "這個帳號已連接至該伺服器"
#: ../js/ui/components/telepathyClient.js:1375
#: ../js/ui/components/telepathyClient.js:1371
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "連線已被使用相同資源的新連線取代"
#: ../js/ui/components/telepathyClient.js:1377
#: ../js/ui/components/telepathyClient.js:1373
msgid "The account already exists on the server"
msgstr "該帳號已經存在於伺服器上"
#: ../js/ui/components/telepathyClient.js:1379
#: ../js/ui/components/telepathyClient.js:1375
msgid "Server is currently too busy to handle the connection"
msgstr "伺服器目前過於忙碌以致於無法處理該連線"
#: ../js/ui/components/telepathyClient.js:1381
#: ../js/ui/components/telepathyClient.js:1377
msgid "Certificate has been revoked"
msgstr "憑證已被撤銷"
#: ../js/ui/components/telepathyClient.js:1383
#: ../js/ui/components/telepathyClient.js:1379
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "憑證使用不安全的密碼演算法,或是密碼處理上較弱"
#: ../js/ui/components/telepathyClient.js:1385
#: ../js/ui/components/telepathyClient.js:1381
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr "伺服器憑證的長度,或是伺服器憑證鏈的深度超過密碼函式庫所能處理的範圍"
#: ../js/ui/components/telepathyClient.js:1387
#: ../js/ui/components/telepathyClient.js:1383
msgid "Internal error"
msgstr "內部的錯誤"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1397
#: ../js/ui/components/telepathyClient.js:1393
#, javascript-format
msgid "Unable to connect to %s"
msgstr "無法連線到 %s"
#: ../js/ui/components/telepathyClient.js:1402
#: ../js/ui/components/telepathyClient.js:1398
msgid "View account"
msgstr "檢視帳號"
#: ../js/ui/components/telepathyClient.js:1439
#: ../js/ui/components/telepathyClient.js:1435
msgid "Unknown reason"
msgstr "不明原因"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:228
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154
msgid "Windows"
msgstr "視窗"
@ -963,142 +963,142 @@ msgstr "顯示應用程式"
msgid "Dash"
msgstr "Dash"
#: ../js/ui/dateMenu.js:96
#: ../js/ui/dateMenu.js:97
msgid "Open Calendar"
msgstr "開啟行事曆"
#: ../js/ui/dateMenu.js:100
#: ../js/ui/dateMenu.js:101
msgid "Open Clocks"
msgstr "開啟時鐘"
#: ../js/ui/dateMenu.js:107
#: ../js/ui/dateMenu.js:108
msgid "Date & Time Settings"
msgstr "日期與時刻設定值"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:204
#: ../js/ui/dateMenu.js:132
msgid "%A %B %e, %Y"
msgstr "%Y年%m月%e日%A"
#: ../js/ui/endSessionDialog.js:66
#: ../js/ui/endSessionDialog.js:64
#, javascript-format
msgctxt "title"
msgid "Log Out %s"
msgstr "登出 %s"
#: ../js/ui/endSessionDialog.js:67
#: ../js/ui/endSessionDialog.js:65
msgctxt "title"
msgid "Log Out"
msgstr "登出"
#: ../js/ui/endSessionDialog.js:69
#: ../js/ui/endSessionDialog.js:67
#, javascript-format
msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s 會在 %d 秒後自動登出。"
#: ../js/ui/endSessionDialog.js:74
#: ../js/ui/endSessionDialog.js:72
#, javascript-format
msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "您會在 %d 秒後自動登出。"
#: ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:78
msgctxt "button"
msgid "Log Out"
msgstr "登出"
#: ../js/ui/endSessionDialog.js:86
#: ../js/ui/endSessionDialog.js:84
msgctxt "title"
msgid "Power Off"
msgstr "關閉電源"
#: ../js/ui/endSessionDialog.js:87
#: ../js/ui/endSessionDialog.js:85
msgctxt "title"
msgid "Install Updates & Power Off"
msgstr "安裝更新並關機"
#: ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:87
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "系統會在 %d 秒後關閉電源。"
#: ../js/ui/endSessionDialog.js:93
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
msgid "Install pending software updates"
msgstr "安裝擱置的軟體更新"
#: ../js/ui/endSessionDialog.js:96 ../js/ui/endSessionDialog.js:113
#: ../js/ui/endSessionDialog.js:94 ../js/ui/endSessionDialog.js:111
msgctxt "button"
msgid "Restart"
msgstr "重新啟動"
#: ../js/ui/endSessionDialog.js:98
#: ../js/ui/endSessionDialog.js:96
msgctxt "button"
msgid "Power Off"
msgstr "關閉電源"
#: ../js/ui/endSessionDialog.js:105
#: ../js/ui/endSessionDialog.js:103
msgctxt "title"
msgid "Restart"
msgstr "重新啟動"
#: ../js/ui/endSessionDialog.js:107
#: ../js/ui/endSessionDialog.js:105
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "系統會在 %d 秒後自動重新啟動。"
#: ../js/ui/endSessionDialog.js:121
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
msgid "Restart & Install Updates"
msgstr "重新啟動並安裝更新"
#: ../js/ui/endSessionDialog.js:123
#: ../js/ui/endSessionDialog.js:121
#, 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 秒後自動重新啟動。"
#: ../js/ui/endSessionDialog.js:129
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
msgid "Restart &amp; Install"
msgstr "重新啟動並安裝"
#: ../js/ui/endSessionDialog.js:130
#: ../js/ui/endSessionDialog.js:128
msgctxt "button"
msgid "Install &amp; Power Off"
msgstr "安裝並關機"
#: ../js/ui/endSessionDialog.js:131
#: ../js/ui/endSessionDialog.js:129
msgctxt "checkbox"
msgid "Power off after updates are installed"
msgstr "在安裝完更新之後關機"
#: ../js/ui/endSessionDialog.js:315
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr "正使用電池電源執行:請在安裝更新之前插入電源線。"
#: ../js/ui/endSessionDialog.js:332
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
msgstr "部分應用程式忙碌中或有未儲存的工作。"
#: ../js/ui/endSessionDialog.js:339
#: ../js/ui/endSessionDialog.js:362
msgid "Other users are logged in."
msgstr "其他使用者已登入。"
#. Translators: Remote here refers to a remote session, like a ssh login */
#: ../js/ui/endSessionDialog.js:619
#: ../js/ui/endSessionDialog.js:640
#, javascript-format
msgid "%s (remote)"
msgstr "%s (遠端)"
#. Translators: Console here refers to a tty like a VT console */
#: ../js/ui/endSessionDialog.js:622
#: ../js/ui/endSessionDialog.js:643
#, javascript-format
msgid "%s (console)"
msgstr "%s (主控臺)"
@ -1112,7 +1112,7 @@ msgstr "安裝"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "是否從 extensions.gnome.org 下載並安裝「%s」"
#: ../js/ui/keyboard.js:653 ../js/ui/status/keyboard.js:339
#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523
msgid "Keyboard"
msgstr "鍵盤"
@ -1134,8 +1134,8 @@ msgstr "隱藏錯誤"
msgid "Show Errors"
msgstr "顯示錯誤"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:62
#: ../js/ui/status/location.js:164
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "已啟用"
@ -1143,7 +1143,7 @@ msgstr "已啟用"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:167
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "已停用"
@ -1168,39 +1168,39 @@ msgstr "檢示來源"
msgid "Web Page"
msgstr "網頁"
#: ../js/ui/messageTray.js:1325
#: ../js/ui/messageTray.js:1327
msgid "Open"
msgstr "開啟"
#: ../js/ui/messageTray.js:1332
#: ../js/ui/messageTray.js:1334
msgid "Remove"
msgstr "移除"
#: ../js/ui/messageTray.js:1629
#: ../js/ui/messageTray.js:1631
msgid "Notifications"
msgstr "通知"
#: ../js/ui/messageTray.js:1636
#: ../js/ui/messageTray.js:1638
msgid "Clear Messages"
msgstr "清除訊息"
#: ../js/ui/messageTray.js:1655
#: ../js/ui/messageTray.js:1657
msgid "Notification Settings"
msgstr "通知設定值"
#: ../js/ui/messageTray.js:1708
#: ../js/ui/messageTray.js:1710
msgid "Tray Menu"
msgstr "系統匣選單"
#: ../js/ui/messageTray.js:1925
#: ../js/ui/messageTray.js:1934
msgid "No Messages"
msgstr "沒有訊息"
#: ../js/ui/messageTray.js:1963
#: ../js/ui/messageTray.js:1979
msgid "Message Tray"
msgstr "訊息匣"
#: ../js/ui/messageTray.js:2966
#: ../js/ui/messageTray.js:2992
msgid "System Information"
msgstr "系統資訊"
@ -1227,7 +1227,7 @@ msgstr "概覽"
#. in the search entry when no search is
#. active; it should not exceed ~30
#. characters. */
#: ../js/ui/overview.js:250
#: ../js/ui/overview.js:246
msgid "Type to search…"
msgstr "輸入以搜尋…"
@ -1245,7 +1245,7 @@ msgstr "概覽 "
msgid "Top Bar"
msgstr "頂端列"
#: ../js/ui/popupMenu.js:280
#: ../js/ui/popupMenu.js:269
msgid "toggle-switch-us"
msgstr "toggle-switch-us"
@ -1257,7 +1257,7 @@ msgstr "請輸入指令"
msgid "Close"
msgstr "關閉"
#: ../js/ui/runDialog.js:273
#: ../js/ui/runDialog.js:277
msgid "Restarting…"
msgstr "重新啟動…"
@ -1273,43 +1273,43 @@ msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d 個新通知"
#: ../js/ui/screenShield.js:474 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "鎖定"
#: ../js/ui/screenShield.js:708
#: ../js/ui/screenShield.js:706
msgid "GNOME needs to lock the screen"
msgstr "GNOME 需要鎖定螢幕"
#: ../js/ui/screenShield.js:835 ../js/ui/screenShield.js:1306
#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304
msgid "Unable to lock"
msgstr "無法鎖定"
#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1307
#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305
msgid "Lock was blocked by an application"
msgstr "鎖定被應用程式阻擋"
#: ../js/ui/search.js:614
#: ../js/ui/search.js:611
msgid "Searching…"
msgstr "搜尋…"
#: ../js/ui/search.js:660
#: ../js/ui/search.js:613
msgid "No results."
msgstr "沒有結果。"
#: ../js/ui/shellEntry.js:27
#: ../js/ui/shellEntry.js:25
msgid "Copy"
msgstr "複製"
#: ../js/ui/shellEntry.js:32
#: ../js/ui/shellEntry.js:30
msgid "Paste"
msgstr "貼上"
#: ../js/ui/shellEntry.js:99
#: ../js/ui/shellEntry.js:97
msgid "Show Text"
msgstr "顯示文字"
#: ../js/ui/shellEntry.js:101
#: ../js/ui/shellEntry.js:99
msgid "Hide Text"
msgstr "隱藏文字"
@ -1394,23 +1394,28 @@ msgstr "未連線"
msgid "Brightness"
msgstr "亮度"
#: ../js/ui/status/keyboard.js:407
#: ../js/ui/status/keyboard.js:547
msgid "Show Keyboard Layout"
msgstr "顯示鍵盤配置"
#: ../js/ui/status/location.js:56
#: ../js/ui/status/location.js:65
msgid "Location"
msgstr "位置"
#: ../js/ui/status/location.js:63 ../js/ui/status/location.js:165
#: ../js/ui/status/location.js:72 ../js/ui/status/location.js:177
msgid "Disable"
msgstr "停用"
#: ../js/ui/status/location.js:164
#: ../js/ui/status/location.js:73
#| msgid "Power Settings"
msgid "Privacy Settings"
msgstr "隱私設定值"
#: ../js/ui/status/location.js:176
msgid "In Use"
msgstr "使用中"
#: ../js/ui/status/location.js:168
#: ../js/ui/status/location.js:180
msgid "Enable"
msgstr "啟用"
@ -1582,12 +1587,12 @@ msgstr "評估中…"
#: ../js/ui/status/power.js:86
#, javascript-format
msgid "%d%02d Remaining (%d%%)"
msgstr "%d剩餘 %02d (%d%%)"
msgstr "剩餘時間 %d%02d (%d%%)"
#: ../js/ui/status/power.js:91
#, javascript-format
msgid "%d%02d Until Full (%d%%)"
msgstr "%d直到充滿 %02d (%d%%)"
msgstr "直到充滿還需 %d%02d (%d%%)"
#: ../js/ui/status/power.js:119
msgid "UPS"
@ -1645,11 +1650,11 @@ msgstr "以另一個使用者身分登入"
msgid "Unlock Window"
msgstr "解鎖視窗"
#: ../js/ui/viewSelector.js:232
#: ../js/ui/viewSelector.js:158
msgid "Applications"
msgstr "應用程式"
#: ../js/ui/viewSelector.js:236
#: ../js/ui/viewSelector.js:162
msgid "Search"
msgstr "搜尋"
@ -1743,19 +1748,19 @@ msgstr[0] "%u 輸入"
msgid "System Sounds"
msgstr "系統音效"
#: ../src/main.c:371
#: ../src/main.c:373
msgid "Print version"
msgstr "顯示版本"
#: ../src/main.c:377
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"
msgstr "GDM 在登入畫面使用的模式"
#: ../src/main.c:383
#: ../src/main.c:385
msgid "Use a specific mode, e.g. \"gdm\" for login screen"
msgstr "使用指定的模式例如「gdm」為登入畫面"
#: ../src/main.c:389
#: ../src/main.c:391
msgid "List possible modes"
msgstr "列出可能的模式"

View File

@ -51,6 +51,13 @@ gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile
gnome-shell-perf-tool: gnome-shell-perf-tool.in Makefile
$(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@
org-gtk-application.c org-gtk-application.h: org.gtk.Application.xml Makefile
$(AM_V_GEN) $(GDBUS_CODEGEN) \
--generate-c-code org-gtk-application \
--c-namespace Shell \
$<
EXTRA_DIST += org.gtk.Application.xml
CLEANFILES += gnome-shell $(bin_SCRIPTS)
include Makefile-st.am
@ -75,6 +82,8 @@ privlib_LTLIBRARIES = libgnome-shell-js.la libgnome-shell-menu.la libgnome-shell
noinst_LTLIBRARIES += libgnome-shell-base.la
shell_built_sources = \
org-gtk-application.h \
org-gtk-application.c \
shell-enum-types.h \
shell-enum-types.c
@ -90,7 +99,7 @@ shell_public_headers_h = \
shell-gtk-embed.h \
shell-global.h \
shell-invert-lightness-effect.h \
shell-keybinding-modes.h \
shell-action-modes.h \
shell-mount-operation.h \
shell-perf-log.h \
shell-screenshot.h \
@ -178,8 +187,12 @@ libgnome_shell_built_sources = \
libgnome_shell_la_SOURCES = $(libgnome_shell_sources)
nodist_libgnome_shell_la_SOURCES = $(libgnome_shell_built_sources)
shell_no_gir_sources = \
org-gtk-application.h \
org-gtk-application.c
libgnome_shell_la_gir_sources = \
$(filter-out %-private.h $(shell_private_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources) $(libgnome_shell_built_sources))
$(filter-out %-private.h $(shell_private_sources) $(shell_no_gir_sources), $(shell_public_headers_h) $(libgnome_shell_base_la_SOURCES) $(libgnome_shell_sources) $(libgnome_shell_built_sources))
gnome_shell_SOURCES = main.c
gnome_shell_CPPFLAGS = \

View File

@ -176,18 +176,54 @@ static void
calendar_sources_init (CalendarSources *sources)
{
GError *error = NULL;
GDBusConnection *session_bus;
GVariant *result;
sources->priv = CALENDAR_SOURCES_GET_PRIVATE (sources);
/* XXX Not sure what to do if this fails.
* Should this class implement GInitable or pass the
* registry in as a G_PARAM_CONSTRUCT_ONLY property? */
sources->priv->registry = e_source_registry_new_sync (NULL, &error);
/* WORKAROUND: the hardcoded timeout for e_source_registry_new_sync()
(and other library calls that eventually call g_dbus_proxy_new[_sync]())
is 25 seconds. This has been shown to be too small for
evolution-source-registry in certain cases (slow disk, concurrent IO,
many configured sources), so we first ensure that the service
starts with a manual call and a higher timeout.
HACK: every time the DBus API is bumped in e-d-s we need
to update this!
*/
session_bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error);
if (session_bus == NULL)
{
g_error ("Failed to connect to the session bus: %s", error->message);
}
result = g_dbus_connection_call_sync (session_bus, "org.freedesktop.DBus",
"/", "org.freedesktop.DBus",
"StartServiceByName",
g_variant_new ("(su)",
"org.gnome.evolution.dataserver.Sources3",
0),
NULL,
G_DBUS_CALL_FLAGS_NONE,
60 * 1000,
NULL, &error);
if (result != NULL)
{
g_variant_unref (result);
sources->priv->registry = e_source_registry_new_sync (NULL, &error);
}
if (error != NULL)
{
g_error ("%s: %s", G_STRFUNC, error->message);
/* Any error is fatal, but we don't want to crash gnome-shell-calendar-server
because of e-d-s problems. So just exit here.
*/
g_warning ("Failed to start evolution-source-registry: %s", error->message);
exit(EXIT_FAILURE);
}
g_object_unref (session_bus);
sources->priv->source_added_id = g_signal_connect (sources->priv->registry,
"source-added",
G_CALLBACK (calendar_sources_registry_source_changed_cb),

View File

@ -14,7 +14,7 @@ except ImportError:
try:
import simplejson as json
except ImportError:
print 'The Python simplejson module is required'
print('The Python simplejson module is required')
sys.exit(1)
from gi.repository import Gio
@ -88,36 +88,36 @@ function disable() {
}
def create_extension():
print
print '''Name should be a very short (ideally descriptive) string.
print()
print('''Name should be a very short (ideally descriptive) string.
Examples are: "Click To Focus", "Adblock", "Shell Window Shrinker".
'''
name = raw_input('Name: ').strip()
print
print '''Description is a single-sentence explanation of what your extension does.
''')
name = input('Name: ').strip()
print()
print('''Description is a single-sentence explanation of what your extension does.
Examples are: "Make windows visible on click", "Block advertisement popups"
"Animate windows shrinking on minimize"
'''
description = raw_input('Description: ').strip()
''')
description = input('Description: ').strip()
underifier = re.compile('[^A-Za-z]')
sample_uuid = underifier.sub('_', name)
# TODO use evolution data server
hostname = socket.gethostname()
sample_uuid = sample_uuid + '@' + hostname
print
print '''Uuid is a globally-unique identifier for your extension.
print()
print('''Uuid is a globally-unique identifier for your extension.
This should be in the format of an email address (foo.bar@extensions.example.com), but
need not be an actual email address, though it's a good idea to base the uuid on your
email address. For example, if your email address is janedoe@example.com, you might
use an extension title clicktofocus@janedoe.example.com.'''
uuid = raw_input('Uuid [%s]: ' % (sample_uuid, )).strip()
use an extension title clicktofocus@janedoe.example.com.''')
uuid = input('Uuid [%s]: ' % (sample_uuid, )).strip()
if uuid == '':
uuid = sample_uuid
extension_path = os.path.join(os.path.expanduser('~/.local'), 'share', 'gnome-shell', 'extensions', uuid)
if os.path.exists(extension_path):
print "Extension path %r already exists" % (extension_path, )
print("Extension path %r already exists" % (extension_path, ))
sys.exit(0)
os.makedirs(extension_path)
meta = { 'name': name,
@ -132,13 +132,13 @@ use an extension title clicktofocus@janedoe.example.com.'''
f.write(json.write(meta) + '\n')
f.close()
for filename, contents in SAMPLE_EXTENSION_FILES.iteritems():
for filename, contents in SAMPLE_EXTENSION_FILES.items():
path = os.path.join(extension_path, filename)
f = open(path, 'w')
f.write(contents)
f.close()
print "Created extension in %r" % (extension_path, )
print("Created extension in %r" % (extension_path, ))
extensionjs_path = os.path.join(extension_path, 'extension.js')
subprocess.Popen(['xdg-open', extensionjs_path])
@ -149,19 +149,19 @@ def enable_extension(uuid):
extensions = settings.get_strv(ENABLED_EXTENSIONS_KEY)
if uuid in extensions:
print >> sys.stderr, "%r is already enabled." % (uuid,)
print("%r is already enabled." % (uuid,), file=sys.stderr)
sys.exit(1)
extensions.append(uuid)
settings.set_strv(ENABLED_EXTENSIONS_KEY, extensions)
print >> sys.stderr, "%r is now enabled." % (uuid,)
print("%r is now enabled." % (uuid,), file=sys.stderr)
def disable_extension(uuid):
settings = Gio.Settings(schema='org.gnome.shell')
extensions = settings.get_strv(ENABLED_EXTENSIONS_KEY)
if uuid not in extensions:
print >> sys.stderr, "%r is not enabled or installed." % (uuid,)
print("%r is not enabled or installed." % (uuid,), file=sys.stderr)
sys.exit(1)
# Use a while loop here to remove *all* mentions instances
@ -170,7 +170,7 @@ def disable_extension(uuid):
extensions.remove(uuid)
settings.set_strv(ENABLED_EXTENSIONS_KEY, extensions)
print >> sys.stderr, "%r is now disabled." % (uuid,)
print("%r is now disabled." % (uuid,), file=sys.stderr)
def main():
parser = optparse.OptionParser()

View File

@ -14,15 +14,14 @@ import subprocess
import sys
import tempfile
import base64
from ConfigParser import RawConfigParser
from configparser import RawConfigParser
import hashlib
import hmac
import httplib
import urlparse
import urllib
from http import client
from urllib import parse
def show_version(option, opt_str, value, parser):
print "GNOME Shell Performance Test @VERSION@"
print("GNOME Shell Performance Test @VERSION@")
sys.exit()
def wait_for_dbus_name(wait_name):
@ -41,7 +40,7 @@ def wait_for_dbus_name(wait_name):
None)
def on_timeout():
print "\nFailed to start %s: timed out" % (wait_name,)
print("\nFailed to start %s: timed out" % (wait_name,))
sys.exit(1)
GLib.timeout_add_seconds(7, on_timeout)
@ -131,15 +130,15 @@ def upload_performance_report(report_text):
base_url = config.get('upload', 'url')
system_name = config.get('upload', 'name')
secret_key = config.get('upload', 'key')
except Exception, e:
print "Can't read upload configuration from %s: %s" % (config_file, str(e))
except Exception as e:
print("Can't read upload configuration from %s: %s" % (config_file, str(e)))
sys.exit(1)
# Determine host, port and upload URL from provided data, we're
# a bit extra-careful about normalization since the URL is part
# of the signature.
split = urlparse.urlsplit(base_url)
split = parse.urlsplit(base_url)
scheme = split[0].lower()
netloc = split[1]
base_path = split[2]
@ -151,7 +150,7 @@ def upload_performance_report(report_text):
host, port = m.group(1), None
if scheme != "http":
print "'%s' is not a HTTP URL" % base_url
print("'%s' is not a HTTP URL" % base_url)
sys.exit(1)
if port is None:
@ -166,7 +165,7 @@ def upload_performance_report(report_text):
normalized_base = "%s://%s:%d%s" % (scheme, host, port, base_path)
upload_url = normalized_base + '/system/%s/upload' % system_name
upload_path = urlparse.urlsplit(upload_url)[2] # path portion
upload_path = parse.urlsplit(upload_url)[2] # path portion
# Create signature based on upload URL and the report data
@ -174,7 +173,7 @@ def upload_performance_report(report_text):
h = hmac.new(secret_key, digestmod=hashlib.sha1)
h.update(signature_data)
h.update(report_text)
signature = urllib.quote(base64.b64encode(h.digest()), "~")
signature = parse.quote(base64.b64encode(h.digest()), "~")
headers = {
'User-Agent': 'gnome-shell-performance-tool/@VERSION@',
@ -182,15 +181,15 @@ def upload_performance_report(report_text):
'X-Shell-Signature': 'HMAC-SHA1 ' + signature
};
connection = httplib.HTTPConnection(host, port)
connection = client.HTTPConnection(host, port)
connection.request('POST', upload_path, report_text, headers)
response = connection.getresponse()
if response.status == 200:
print "Performance report upload succeeded"
print("Performance report upload succeeded")
else:
print "Performance report upload failed with status %d" % response.status
print response.read()
print("Performance report upload failed with status %d" % response.status)
print(response.read())
def gnome_hwtest_log(*args):
command = ['gnome-hwtest-log', '-t', 'gnome-shell-perf-tool']
@ -207,7 +206,7 @@ def run_performance_test():
start_perf_helper()
for i in xrange(0, iters):
for i in range(0, iters):
# We create an empty temporary file that the shell will overwrite
# with the contents.
handle, output_file = tempfile.mkstemp(".json", "gnome-shell-perf.")
@ -306,12 +305,12 @@ def run_performance_test():
gnome_hwtest_log('--finished')
else:
# Write a human readable summary
print '------------------------------------------------------------';
print('------------------------------------------------------------')
for metric in sorted(metric_summaries.keys()):
summary = metric_summaries[metric]
print "#", summary['description']
print metric, ", ".join((str(x) for x in summary['values']))
print '------------------------------------------------------------';
print("#", summary['description'])
print(metric, ", ".join((str(x) for x in summary['values'])))
print('------------------------------------------------------------')
return True

View File

@ -0,0 +1,19 @@
<node>
<interface name='org.gtk.Application'>
<method name='Activate'>
<arg type='a{sv}' name='platform_data' direction='in'/>
</method>
<method name='Open'>
<arg type='as' name='uris' direction='in'/>
<arg type='s' name='hint' direction='in'/>
<arg type='a{sv}' name='platform_data' direction='in'/>
</method>
<method name='CommandLine'>
<arg type='o' name='path' direction='in'/>
<arg type='aay' name='arguments' direction='in'/>
<arg type='a{sv}' name='platform_data' direction='in'/>
<arg type='i' name='exit_status' direction='out'/>
</method>
<property name='Busy' type='b' access='read'/>
</interface>
</node>

39
src/shell-action-modes.h Normal file
View File

@ -0,0 +1,39 @@
/**
* ShellActionMode:
* @SHELL_ACTION_MODE_NONE: block action
* @SHELL_ACTION_MODE_NORMAL: allow action when in window mode,
* e.g. when the focus is in an application window
* @SHELL_ACTION_MODE_OVERVIEW: allow action while the overview
* is active
* @SHELL_ACTION_MODE_LOCK_SCREEN: allow action when the screen
* is locked, e.g. when the screen shield is shown
* @SHELL_ACTION_MODE_UNLOCK_SCREEN: allow action in the unlock
* dialog
* @SHELL_ACTION_MODE_LOGIN_SCREEN: allow action in the login screen
* @SHELL_ACTION_MODE_MESSAGE_TRAY: allow action while the message
* tray is popped up
* @SHELL_ACTION_MODE_SYSTEM_MODAL: allow action when a system modal
* dialog (e.g. authentification or session dialogs) is open
* @SHELL_ACTION_MODE_LOOKING_GLASS: allow action in looking glass
* @SHELL_ACTION_MODE_TOPBAR_POPUP: allow action while a top bar menu
* is open
* @SHELL_ACTION_MODE_ALL: always allow action
*
* Controls in which GNOME Shell states an action (like keybindings and gestures)
* should be handled.
*/
typedef enum {
SHELL_ACTION_MODE_NONE = 0,
SHELL_ACTION_MODE_NORMAL = 1 << 0,
SHELL_ACTION_MODE_OVERVIEW = 1 << 1,
SHELL_ACTION_MODE_LOCK_SCREEN = 1 << 2,
SHELL_ACTION_MODE_UNLOCK_SCREEN = 1 << 3,
SHELL_ACTION_MODE_LOGIN_SCREEN = 1 << 4,
SHELL_ACTION_MODE_MESSAGE_TRAY = 1 << 5,
SHELL_ACTION_MODE_SYSTEM_MODAL = 1 << 6,
SHELL_ACTION_MODE_LOOKING_GLASS = 1 << 7,
SHELL_ACTION_MODE_TOPBAR_POPUP = 1 << 8,
SHELL_ACTION_MODE_ALL = ~0,
} ShellActionMode;

View File

@ -335,7 +335,6 @@ _shell_app_system_notify_app_state_changed (ShellAppSystem *self,
switch (state)
{
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
g_hash_table_insert (self->priv->running_apps, g_object_ref (app), NULL);
break;
case SHELL_APP_STATE_STARTING:

View File

@ -16,6 +16,7 @@
#include "shell-window-tracker-private.h"
#include "st.h"
#include "gtkactionmuxer.h"
#include "org-gtk-application.h"
#ifdef HAVE_SYSTEMD
#include <systemd/sd-journal.h>
@ -47,14 +48,16 @@ typedef struct {
/* Whether or not we need to resort the windows; this is done on demand */
guint window_sort_stale : 1;
/* DBus property notification subscription */
guint properties_changed_id : 1;
/* See GApplication documentation */
GDBusMenuModel *remote_menu;
GtkActionMuxer *muxer;
char *unique_bus_name;
GDBusConnection *session;
/* GDBus Proxy for getting application busy state */
ShellOrgGtkApplication *application_proxy;
GCancellable *cancellable;
} ShellAppRunningState;
/**
@ -89,6 +92,7 @@ struct _ShellApp
enum {
PROP_0,
PROP_STATE,
PROP_BUSY,
PROP_ID,
PROP_DBUS_ID,
PROP_ACTION_GROUP,
@ -120,6 +124,9 @@ shell_app_get_property (GObject *gobject,
case PROP_STATE:
g_value_set_enum (value, app->state);
break;
case PROP_BUSY:
g_value_set_boolean (value, shell_app_get_busy (app));
break;
case PROP_ID:
g_value_set_string (value, shell_app_get_id (app));
break;
@ -202,27 +209,23 @@ shell_app_create_icon_texture (ShellApp *app,
int size)
{
GIcon *icon;
gint scale;
ClutterActor *ret;
ShellGlobal *global;
StThemeContext *context;
global = shell_global_get ();
context = st_theme_context_get_for_stage (shell_global_get_stage (global));
g_object_get (context, "scale-factor", &scale, NULL);
ret = NULL;
if (app->info == NULL)
return window_backed_app_get_icon (app, size);
ret = st_icon_new ();
st_icon_set_icon_size (ST_ICON (ret), size);
icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL)
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size, scale);
if (ret == NULL)
{
st_icon_set_gicon (ST_ICON (ret), icon);
}
else
{
icon = g_themed_icon_new ("application-x-executable");
ret = st_texture_cache_load_gicon (st_texture_cache_get_default (), NULL, icon, size, scale);
st_icon_set_gicon (ST_ICON (ret), icon);
g_object_unref (icon);
}
@ -234,6 +237,7 @@ typedef struct {
int size;
int scale;
ClutterTextDirection direction;
StThemeNode *theme_node;
} CreateFadedIconData;
static CoglHandle
@ -261,19 +265,28 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
guint8 *pixels;
GIcon *icon;
GtkIconInfo *info;
GtkIconLookupFlags lookup_flags;
StIconStyle icon_style;
app = data->app;
size = data->size;
scale = data->scale;
icon_style = st_theme_node_get_icon_style (data->theme_node);
info = NULL;
lookup_flags = GTK_ICON_LOOKUP_FORCE_SIZE;
if (icon_style == ST_ICON_STYLE_REGULAR)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_REGULAR;
else if (icon_style == ST_ICON_STYLE_SYMBOLIC)
lookup_flags |= GTK_ICON_LOOKUP_FORCE_SYMBOLIC;
icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL)
{
info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (),
icon, size, scale,
GTK_ICON_LOOKUP_FORCE_SIZE);
lookup_flags);
}
if (info == NULL)
@ -281,7 +294,7 @@ shell_app_create_faded_icon_cpu (StTextureCache *cache,
icon = g_themed_icon_new ("application-x-executable");
info = gtk_icon_theme_lookup_by_gicon_for_scale (gtk_icon_theme_get_default (),
icon, size, scale,
GTK_ICON_LOOKUP_FORCE_SIZE);
lookup_flags);
g_object_unref (icon);
}
@ -388,6 +401,7 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio
data.size = size;
data.scale = scale;
data.direction = direction;
data.theme_node = st_theme_context_get_root_node (context);
texture = st_texture_cache_load (st_texture_cache_get_default (),
cache_key,
ST_TEXTURE_CACHE_POLICY_FOREVER,
@ -675,7 +689,6 @@ shell_app_activate_full (ShellApp *app,
case SHELL_APP_STATE_STARTING:
break;
case SHELL_APP_STATE_RUNNING:
case SHELL_APP_STATE_BUSY:
shell_app_activate_window (app, NULL, timestamp);
break;
}
@ -1057,38 +1070,55 @@ shell_app_on_ws_switch (MetaScreen *screen,
g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
}
gboolean
shell_app_get_busy (ShellApp *app)
{
if (app->running_state != NULL &&
app->running_state->application_proxy != NULL &&
shell_org_gtk_application_get_busy (app->running_state->application_proxy))
return TRUE;
return FALSE;
}
static void
application_properties_changed (GDBusConnection *connection,
const gchar *sender_name,
const gchar *object_path,
const gchar *interface_name,
const gchar *signal_name,
GVariant *parameters,
gpointer user_data)
busy_changed_cb (GObject *object,
GParamSpec *pspec,
gpointer user_data)
{
ShellApp *app = user_data;
GVariant *changed_properties;
gboolean busy = FALSE;
const gchar *interface_name_for_signal;
g_variant_get (parameters,
"(&s@a{sv}as)",
&interface_name_for_signal,
&changed_properties,
NULL);
g_assert (SHELL_IS_APP (app));
if (g_strcmp0 (interface_name_for_signal, "org.gtk.Application") != 0)
return;
g_object_notify (G_OBJECT (app), "busy");
}
g_variant_lookup (changed_properties, "Busy", "b", &busy);
static void
get_application_proxy (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
ShellApp *app = user_data;
ShellOrgGtkApplication *proxy;
if (busy)
shell_app_state_transition (app, SHELL_APP_STATE_BUSY);
else
shell_app_state_transition (app, SHELL_APP_STATE_RUNNING);
g_assert (SHELL_IS_APP (app));
if (changed_properties != NULL)
g_variant_unref (changed_properties);
proxy = shell_org_gtk_application_proxy_new_finish (result, NULL);
if (proxy != NULL)
{
app->running_state->application_proxy = proxy;
g_signal_connect (proxy,
"notify::busy",
G_CALLBACK (busy_changed_cb),
app);
if (shell_org_gtk_application_get_busy (proxy))
g_object_notify (G_OBJECT (app), "busy");
}
if (app->running_state != NULL)
g_clear_object (&app->running_state->cancellable);
g_object_unref (app);
}
static void
@ -1098,7 +1128,8 @@ shell_app_ensure_busy_watch (ShellApp *app)
MetaWindow *window;
const gchar *object_path;
if (running_state->properties_changed_id != 0)
if (running_state->application_proxy != NULL ||
running_state->cancellable != NULL)
return;
if (running_state->unique_bus_name == NULL)
@ -1110,15 +1141,16 @@ shell_app_ensure_busy_watch (ShellApp *app)
if (object_path == NULL)
return;
running_state->properties_changed_id =
g_dbus_connection_signal_subscribe (running_state->session,
running_state->unique_bus_name,
"org.freedesktop.DBus.Properties",
"PropertiesChanged",
object_path,
"org.gtk.Application",
G_DBUS_SIGNAL_FLAGS_NONE,
application_properties_changed, app, NULL);
running_state->cancellable = g_cancellable_new();
/* Take a reference to app to make sure it isn't finalized before
get_application_proxy runs */
shell_org_gtk_application_proxy_new (running_state->session,
G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START,
running_state->unique_bus_name,
object_path,
running_state->cancellable,
get_application_proxy,
g_object_ref (app));
}
void
@ -1461,8 +1493,13 @@ unref_running_state (ShellAppRunningState *state)
screen = shell_global_get_screen (shell_global_get ());
g_signal_handler_disconnect (screen, state->workspace_switch_id);
if (state->properties_changed_id != 0)
g_dbus_connection_signal_unsubscribe (state->session, state->properties_changed_id);
g_clear_object (&state->application_proxy);
if (state->cancellable != NULL)
{
g_cancellable_cancel (state->cancellable);
g_clear_object (&state->cancellable);
}
g_clear_object (&state->remote_menu);
g_clear_object (&state->muxer);
@ -1555,6 +1592,19 @@ shell_app_class_init(ShellAppClass *klass)
SHELL_APP_STATE_STOPPED,
G_PARAM_READABLE));
/**
* ShellApp:busy:
*
* Whether the application has marked itself as busy.
*/
g_object_class_install_property (gobject_class,
PROP_BUSY,
g_param_spec_boolean ("busy",
"Busy",
"Busy state",
FALSE,
G_PARAM_READABLE));
/**
* ShellApp:id:
*

View File

@ -30,8 +30,7 @@ struct _ShellAppClass
typedef enum {
SHELL_APP_STATE_STOPPED,
SHELL_APP_STATE_STARTING,
SHELL_APP_STATE_RUNNING,
SHELL_APP_STATE_BUSY
SHELL_APP_STATE_RUNNING
} ShellAppState;
GType shell_app_get_type (void) G_GNUC_CONST;
@ -87,6 +86,8 @@ int shell_app_compare (ShellApp *app, ShellApp *other);
void shell_app_update_window_actions (ShellApp *app, MetaWindow *window);
void shell_app_update_app_menu (ShellApp *app, MetaWindow *window);
gboolean shell_app_get_busy (ShellApp *app);
G_END_DECLS
#endif /* __SHELL_APP_H__ */

View File

@ -1132,14 +1132,6 @@ shell_global_end_modal (ShellGlobal *global,
sync_input_region (global);
}
void
shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp)
{
if (global->stage_xwindow != None)
meta_display_freeze_keyboard (global->meta_display, global->stage_xwindow, timestamp);
}
/* Code to close all file descriptors before we exec; copied from gspawn.c in GLib.
*
* Authors: Padraig O'Briain, Matthias Clasen, Lennart Poettering

View File

@ -45,8 +45,6 @@ gboolean shell_global_begin_modal (ShellGlobal *global,
MetaModalOptions options);
void shell_global_end_modal (ShellGlobal *global,
guint32 timestamp);
void shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp);
void shell_global_set_stage_input_region (ShellGlobal *global,
GSList *rectangles);

View File

@ -106,9 +106,6 @@ shell_gtk_embed_window_created_cb (MetaDisplay *display,
0, 0 /* offset x/y */);
cairo_region_destroy (empty_region);
/* Set the actor as unreative so Clutter doesn't pick it, either */
clutter_actor_set_reactive (window_actor, FALSE);
gdk_window_lower (gdk_window);
/* Now that we've found the window we don't need to listen for

View File

@ -1,38 +0,0 @@
/**
* ShellKeyBindingMode:
* @SHELL_KEYBINDING_MODE_NONE: block keybinding
* @SHELL_KEYBINDING_MODE_NORMAL: allow keybinding when in window mode,
* e.g. when the focus is in an application window
* @SHELL_KEYBINDING_MODE_OVERVIEW: allow keybinding while the overview
* is active
* @SHELL_KEYBINDING_MODE_LOCK_SCREEN: allow keybinding when the screen
* is locked, e.g. when the screen shield is shown
* @SHELL_KEYBINDING_MODE_UNLOCK_SCREEN: allow keybinding in the unlock
* dialog
* @SHELL_KEYBINDING_MODE_LOGIN_SCREEN: allow keybinding in the login screen
* @SHELL_KEYBINDING_MODE_MESSAGE_TRAY: allow keybinding while the message
* tray is popped up
* @SHELL_KEYBINDING_MODE_SYSTEM_MODAL: allow keybinding when a system modal
* dialog (e.g. authentification or session dialogs) is open
* @SHELL_KEYBINDING_MODE_LOOKING_GLASS: allow keybinding in looking glass
* @SHELL_KEYBINDING_MODE_TOPBAR_POPUP: allow keybinding while a top bar menu
* is open
* @SHELL_KEYBINDING_MODE_ALL: always allow keybinding
*
* Controls in which GNOME Shell states a keybinding should be handled.
*/
typedef enum {
SHELL_KEYBINDING_MODE_NONE = 0,
SHELL_KEYBINDING_MODE_NORMAL = 1 << 0,
SHELL_KEYBINDING_MODE_OVERVIEW = 1 << 1,
SHELL_KEYBINDING_MODE_LOCK_SCREEN = 1 << 2,
SHELL_KEYBINDING_MODE_UNLOCK_SCREEN = 1 << 3,
SHELL_KEYBINDING_MODE_LOGIN_SCREEN = 1 << 4,
SHELL_KEYBINDING_MODE_MESSAGE_TRAY = 1 << 5,
SHELL_KEYBINDING_MODE_SYSTEM_MODAL = 1 << 6,
SHELL_KEYBINDING_MODE_LOOKING_GLASS = 1 << 7,
SHELL_KEYBINDING_MODE_TOPBAR_POPUP = 1 << 8,
SHELL_KEYBINDING_MODE_ALL = ~0,
} ShellKeyBindingMode;

View File

@ -17,7 +17,9 @@
#include <cogl/cogl.h>
#include <meta/screen.h>
#include <meta/meta-cursor-tracker.h>
#include <meta/compositor-mutter.h>
#include "shell-global.h"
#include "shell-recorder-src.h"
#include "shell-recorder.h"
@ -1535,6 +1537,9 @@ shell_recorder_record (ShellRecorder *recorder,
recorder_update_pointer (recorder);
recorder_add_update_pointer_timeout (recorder);
/* Disable unredirection while we are recoring */
meta_disable_unredirect_for_screen (shell_global_get_screen (shell_global_get ()));
/* Set up repaint hook */
recorder->repaint_hook_id = clutter_threads_add_repaint_func(recorder_repaint_hook, recorder->stage, NULL);
@ -1583,6 +1588,9 @@ shell_recorder_close (ShellRecorder *recorder)
recorder->state = RECORDER_STATE_CLOSED;
/* Reenable after the recording */
meta_enable_unredirect_for_screen (shell_global_get_screen (shell_global_get ()));
/* Release the refcount we took when we started recording */
g_object_unref (recorder);
}

View File

@ -23,12 +23,12 @@ struct _ShellScreenshot
{
GObject parent_instance;
ShellGlobal *global;
ShellScreenshotPrivate *priv;
};
/* Used for async screenshot grabbing */
typedef struct _screenshot_data {
ShellScreenshot *screenshot;
struct _ShellScreenshotPrivate
{
ShellGlobal *global;
char *filename;
char *filename_used;
@ -39,9 +39,9 @@ typedef struct _screenshot_data {
gboolean include_cursor;
ShellScreenshotCallback callback;
} _screenshot_data;
};
G_DEFINE_TYPE(ShellScreenshot, shell_screenshot, G_TYPE_OBJECT);
G_DEFINE_TYPE_WITH_PRIVATE (ShellScreenshot, shell_screenshot, G_TYPE_OBJECT);
static void
shell_screenshot_class_init (ShellScreenshotClass *screenshot_class)
@ -52,7 +52,8 @@ shell_screenshot_class_init (ShellScreenshotClass *screenshot_class)
static void
shell_screenshot_init (ShellScreenshot *screenshot)
{
screenshot->global = shell_global_get ();
screenshot->priv = shell_screenshot_get_instance_private (screenshot);
screenshot->priv->global = shell_global_get ();
}
static void
@ -60,18 +61,18 @@ on_screenshot_written (GObject *source,
GAsyncResult *result,
gpointer user_data)
{
_screenshot_data *screenshot_data = (_screenshot_data*) user_data;
if (screenshot_data->callback)
screenshot_data->callback (screenshot_data->screenshot,
g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (result)),
&screenshot_data->screenshot_area,
screenshot_data->filename_used);
ShellScreenshot *screenshot = SHELL_SCREENSHOT (source);
ShellScreenshotPrivate *priv = screenshot->priv;
cairo_surface_destroy (screenshot_data->image);
g_object_unref (screenshot_data->screenshot);
g_free (screenshot_data->filename);
g_free (screenshot_data->filename_used);
g_free (screenshot_data);
if (priv->callback)
priv->callback (screenshot,
g_simple_async_result_get_op_res_gboolean (G_SIMPLE_ASYNC_RESULT (result)),
&priv->screenshot_area,
priv->filename_used);
g_clear_pointer (&priv->image, cairo_surface_destroy);
g_clear_pointer (&priv->filename, g_free);
g_clear_pointer (&priv->filename_used, g_free);
}
/* called in an I/O thread */
@ -170,12 +171,15 @@ write_screenshot_thread (GSimpleAsyncResult *result,
{
cairo_status_t status;
GOutputStream *stream;
_screenshot_data *screenshot_data = g_async_result_get_user_data (G_ASYNC_RESULT (result));
ShellScreenshot *screenshot = SHELL_SCREENSHOT (object);
ShellScreenshotPrivate *priv;
g_assert (screenshot_data != NULL);
g_assert (screenshot != NULL);
stream = prepare_write_stream (screenshot_data->filename,
&screenshot_data->filename_used);
priv = screenshot->priv;
stream = prepare_write_stream (priv->filename,
&priv->filename_used);
if (stream == NULL)
status = CAIRO_STATUS_FILE_NOT_FOUND;
@ -183,10 +187,10 @@ write_screenshot_thread (GSimpleAsyncResult *result,
{
GdkPixbuf *pixbuf;
pixbuf = gdk_pixbuf_get_from_surface (screenshot_data->image,
pixbuf = gdk_pixbuf_get_from_surface (priv->image,
0, 0,
cairo_image_surface_get_width (screenshot_data->image),
cairo_image_surface_get_height (screenshot_data->image));
cairo_image_surface_get_width (priv->image),
cairo_image_surface_get_height (priv->image));
if (gdk_pixbuf_save_to_stream (pixbuf, stream, "png", NULL, NULL,
"tEXt::Software", "gnome-screenshot", NULL))
@ -204,7 +208,7 @@ write_screenshot_thread (GSimpleAsyncResult *result,
}
static void
do_grab_screenshot (_screenshot_data *screenshot_data,
do_grab_screenshot (ShellScreenshot *screenshot,
int x,
int y,
int width,
@ -215,16 +219,17 @@ do_grab_screenshot (_screenshot_data *screenshot_data,
CoglContext *context;
int stride;
guchar *data;
ShellScreenshotPrivate *priv = screenshot->priv;
backend = clutter_get_default_backend ();
context = clutter_backend_get_cogl_context (backend);
screenshot_data->image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
width, height);
priv->image = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
width, height);
data = cairo_image_surface_get_data (screenshot_data->image);
stride = cairo_image_surface_get_stride (screenshot_data->image);
data = cairo_image_surface_get_data (priv->image);
stride = cairo_image_surface_get_stride (priv->image);
bitmap = cogl_bitmap_new_for_data (context,
width,
@ -237,7 +242,7 @@ do_grab_screenshot (_screenshot_data *screenshot_data,
COGL_READ_PIXELS_COLOR_BUFFER,
bitmap);
cairo_surface_mark_dirty (screenshot_data->image);
cairo_surface_mark_dirty (priv->image);
cogl_object_unref (bitmap);
}
@ -310,17 +315,19 @@ _draw_cursor_image (MetaCursorTracker *tracker,
static void
grab_screenshot (ClutterActor *stage,
_screenshot_data *screenshot_data)
ShellScreenshot *screenshot)
{
MetaScreen *screen = shell_global_get_screen (screenshot_data->screenshot->global);
MetaScreen *screen;
MetaCursorTracker *tracker;
int width, height;
GSimpleAsyncResult *result;
GSettings *settings;
ShellScreenshotPrivate *priv = screenshot->priv;
screen = shell_global_get_screen (priv->global);
meta_screen_get_size (screen, &width, &height);
do_grab_screenshot (screenshot_data, 0, 0, width, height);
do_grab_screenshot (screenshot, 0, 0, width, height);
if (meta_screen_get_n_monitors (screen) > 1)
{
@ -346,7 +353,7 @@ grab_screenshot (ClutterActor *stage,
cairo_region_xor (stage_region, screen_region);
cairo_region_destroy (screen_region);
cr = cairo_create (screenshot_data->image);
cr = cairo_create (priv->image);
for (i = 0; i < cairo_region_num_rectangles (stage_region); i++)
{
@ -360,41 +367,42 @@ grab_screenshot (ClutterActor *stage,
cairo_region_destroy (stage_region);
}
screenshot_data->screenshot_area.x = 0;
screenshot_data->screenshot_area.y = 0;
screenshot_data->screenshot_area.width = width;
screenshot_data->screenshot_area.height = height;
priv->screenshot_area.x = 0;
priv->screenshot_area.y = 0;
priv->screenshot_area.width = width;
priv->screenshot_area.height = height;
settings = g_settings_new (A11Y_APPS_SCHEMA);
if (screenshot_data->include_cursor &&
if (priv->include_cursor &&
!g_settings_get_boolean (settings, MAGNIFIER_ACTIVE_KEY))
{
tracker = meta_cursor_tracker_get_for_screen (screen);
_draw_cursor_image (tracker, screenshot_data->image, screenshot_data->screenshot_area);
_draw_cursor_image (tracker, priv->image, priv->screenshot_area);
}
g_object_unref (settings);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_screenshot, (gpointer)screenshot_data);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_screenshot, (gpointer)screenshot);
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, grab_screenshot);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}
static void
grab_area_screenshot (ClutterActor *stage,
_screenshot_data *screenshot_data)
ShellScreenshot *screenshot)
{
GSimpleAsyncResult *result;
ShellScreenshotPrivate *priv = screenshot->priv;
do_grab_screenshot (screenshot_data,
screenshot_data->screenshot_area.x,
screenshot_data->screenshot_area.y,
screenshot_data->screenshot_area.width,
screenshot_data->screenshot_area.height);
do_grab_screenshot (screenshot,
priv->screenshot_area.x,
priv->screenshot_area.y,
priv->screenshot_area.width,
priv->screenshot_area.height);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_area_screenshot, (gpointer)screenshot_data);
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, grab_area_screenshot);
g_signal_handlers_disconnect_by_func (stage, (void *)grab_area_screenshot, (gpointer)screenshot);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, grab_area_screenshot);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}
@ -418,16 +426,21 @@ shell_screenshot_screenshot (ShellScreenshot *screenshot,
ShellScreenshotCallback callback)
{
ClutterActor *stage;
_screenshot_data *data = g_new0 (_screenshot_data, 1);
ShellScreenshotPrivate *priv = screenshot->priv;
data->screenshot = g_object_ref (screenshot);
data->filename = g_strdup (filename);
data->callback = callback;
data->include_cursor = include_cursor;
if (priv->filename != NULL) {
if (callback)
callback (screenshot, FALSE, NULL, "");
return;
}
stage = CLUTTER_ACTOR (shell_global_get_stage (screenshot->global));
priv->filename = g_strdup (filename);
priv->callback = callback;
priv->include_cursor = include_cursor;
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_screenshot), (gpointer)data);
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_screenshot), (gpointer)screenshot);
clutter_actor_queue_redraw (stage);
}
@ -457,19 +470,24 @@ shell_screenshot_screenshot_area (ShellScreenshot *screenshot,
ShellScreenshotCallback callback)
{
ClutterActor *stage;
_screenshot_data *data = g_new0 (_screenshot_data, 1);
ShellScreenshotPrivate *priv = screenshot->priv;
data->screenshot = g_object_ref (screenshot);
data->filename = g_strdup (filename);
data->screenshot_area.x = x;
data->screenshot_area.y = y;
data->screenshot_area.width = width;
data->screenshot_area.height = height;
data->callback = callback;
if (priv->filename != NULL) {
if (callback)
callback (screenshot, FALSE, NULL, "");
return;
}
stage = CLUTTER_ACTOR (shell_global_get_stage (screenshot->global));
priv->filename = g_strdup (filename);
priv->screenshot_area.x = x;
priv->screenshot_area.y = y;
priv->screenshot_area.width = width;
priv->screenshot_area.height = height;
priv->callback = callback;
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_area_screenshot), (gpointer)data);
stage = CLUTTER_ACTOR (shell_global_get_stage (priv->global));
g_signal_connect_after (stage, "paint", G_CALLBACK (grab_area_screenshot), (gpointer)screenshot);
clutter_actor_queue_redraw (stage);
}
@ -496,10 +514,9 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot,
{
GSimpleAsyncResult *result;
GSettings *settings;
ShellScreenshotPrivate *priv = screenshot->priv;
_screenshot_data *screenshot_data = g_new0 (_screenshot_data, 1);
MetaScreen *screen = shell_global_get_screen (screenshot->global);
MetaScreen *screen = shell_global_get_screen (priv->global);
MetaCursorTracker *tracker;
MetaDisplay *display = meta_screen_get_display (screen);
MetaWindow *window = meta_display_get_focus_window (display);
@ -509,20 +526,14 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot,
MetaRectangle rect;
cairo_rectangle_int_t clip;
screenshot_data->screenshot = g_object_ref (screenshot);
screenshot_data->filename = g_strdup (filename);
screenshot_data->callback = callback;
if (priv->filename != NULL || !window) {
if (callback)
callback (screenshot, FALSE, NULL, "");
return;
}
if (!window)
{
screenshot_data->filename_used = g_strdup ("");
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, shell_screenshot_screenshot_window);
g_simple_async_result_set_op_res_gboolean (result, FALSE);
g_simple_async_result_complete (result);
g_object_unref (result);
return;
}
priv->filename = g_strdup (filename);
priv->callback = callback;
window_actor = CLUTTER_ACTOR (meta_window_get_compositor_private (window));
clutter_actor_get_position (window_actor, &actor_x, &actor_y);
@ -532,26 +543,26 @@ shell_screenshot_screenshot_window (ShellScreenshot *screenshot,
if (!include_frame)
meta_window_frame_rect_to_client_rect (window, &rect, &rect);
screenshot_data->screenshot_area.x = rect.x;
screenshot_data->screenshot_area.y = rect.y;
priv->screenshot_area.x = rect.x;
priv->screenshot_area.y = rect.y;
clip.x = rect.x - (gint) actor_x;
clip.y = rect.y - (gint) actor_y;
clip.width = screenshot_data->screenshot_area.width = rect.width;
clip.height = screenshot_data->screenshot_area.height = rect.height;
clip.width = priv->screenshot_area.width = rect.width;
clip.height = priv->screenshot_area.height = rect.height;
stex = META_SHAPED_TEXTURE (meta_window_actor_get_texture (META_WINDOW_ACTOR (window_actor)));
screenshot_data->image = meta_shaped_texture_get_image (stex, &clip);
priv->image = meta_shaped_texture_get_image (stex, &clip);
settings = g_settings_new (A11Y_APPS_SCHEMA);
if (include_cursor && !g_settings_get_boolean (settings, MAGNIFIER_ACTIVE_KEY))
{
tracker = meta_cursor_tracker_get_for_screen (screen);
_draw_cursor_image (tracker, screenshot_data->image, screenshot_data->screenshot_area);
_draw_cursor_image (tracker, priv->image, priv->screenshot_area);
}
g_object_unref (settings);
result = g_simple_async_result_new (NULL, on_screenshot_written, (gpointer)screenshot_data, shell_screenshot_screenshot_window);
result = g_simple_async_result_new (G_OBJECT (screenshot), on_screenshot_written, NULL, shell_screenshot_screenshot_window);
g_simple_async_result_run_in_thread (result, write_screenshot_thread, G_PRIORITY_DEFAULT, NULL);
g_object_unref (result);
}

View File

@ -11,8 +11,9 @@
*
*/
typedef struct _ShellScreenshot ShellScreenshot;
typedef struct _ShellScreenshotClass ShellScreenshotClass;
typedef struct _ShellScreenshot ShellScreenshot;
typedef struct _ShellScreenshotPrivate ShellScreenshotPrivate;
typedef struct _ShellScreenshotClass ShellScreenshotClass;
#define SHELL_TYPE_SCREENSHOT (shell_screenshot_get_type ())
#define SHELL_SCREENSHOT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_SCREENSHOT, ShellScreenshot))

View File

@ -12,6 +12,7 @@
#include <gdk/gdkx.h>
#include <X11/extensions/XTest.h>
#include <locale.h>
#ifdef HAVE__NL_TIME_FIRST_WEEKDAY
#include <langinfo.h>
#endif
@ -208,6 +209,32 @@ shell_util_get_week_start ()
return week_start;
}
/**
* shell_util_translate_time_string:
* @str: String to translate
*
* Translate @str according to the locale defined by LC_TIME; unlike
* dcgettext(), the translations is still taken from the LC_MESSAGES
* catalogue and not the LC_TIME one.
*
* Returns: the translated string
*/
const char *
shell_util_translate_time_string (const char *str)
{
const char *locale = g_getenv ("LC_TIME");
const char *res;
if (locale)
setlocale (LC_MESSAGES, locale);
res = gettext (str);
setlocale (LC_MESSAGES, "");
return res;
}
/**
* shell_write_string_to_stream:
* @stream: a #GOutputStream

View File

@ -21,6 +21,7 @@ int shell_util_get_week_start (void);
char *shell_util_format_date (const char *format,
gint64 time_ms);
const char *shell_util_translate_time_string (const char *str);
gboolean shell_write_string_to_stream (GOutputStream *stream,
const char *str,

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