Compare commits

...

186 Commits

Author SHA1 Message Date
5ea032bbf7 Bump version to 3.2.1
Update NEWS
2011-10-18 00:23:51 -04:00
897fadfb40 Require Mutter 3.2.1
This is needed for meta_display_unmanage_screen()
2011-10-18 00:19:32 -04:00
b05f71eb9b messageTray: Add banner body when setting the image for a notification
We always place the banner in the body if the notification has additional
content.

https://bugzilla.gnome.org/show_bug.cgi?id=659158
2011-10-18 00:16:25 -04:00
4ce0e80956 user-menu: Be more cautious about saving status
When requesting a presence change, the actual presence set by
mission control does not necessarily match the requested presence
(if an active account does not support the requested presence),
which may result in the wrong presence being restored.
As a fix, be more cautious about saving status by assuming that
users do not request presence changes between an automatic presence
change request and the actual change.

https://bugzilla.gnome.org/show_bug.cgi?id=661485
2011-10-18 04:25:57 +02:00
577ccc4d56 Unmanage the screen before reexecing
This ensures a 'clean shutdown' of mutter.

https://bugzilla.gnome.org/show_bug.cgi?id=660848
2011-10-17 21:55:13 -04:00
39d12351ba gdm: move focus to first item in list
This allows the user to just hit when the user
list first comes up (in many cases).

https://bugzilla.gnome.org/show_bug.cgi?id=657996
2011-10-17 20:49:04 -04:00
e37bc6d7f0 Updated Galician translations 2011-10-18 00:05:07 +02:00
9593ff3582 notificationDaemon: only display a large image if an icon is also specified
Historically, when applications set "image-data" they expect it to show up
as an icon. So we display it as such if an icon is not specified with an
"app_icon" argument to Notify(). We also use "image-path" for an icon if
an icon is not specified.

We only display a large image specified with "image-data" or "image-path"
if an icon is also specified.

https://bugzilla.gnome.org/show_bug.cgi?id=659158
2011-10-17 17:53:16 -04:00
ad8dfd7b04 Updated Hungarian translation 2011-10-17 23:44:33 +02:00
ca5ab20f67 gdm: don't clear bullets while authenticating
Users don't expect the bullets they just typed into an entry
field to disappear as soon as they hit enter.

Instead, they want the dialog to become insensitive during the
authentication process, so that it's clear that what they typed
in is being processed.

https://bugzilla.gnome.org/show_bug.cgi?id=657894
2011-10-17 17:37:06 -04:00
0eab448221 css: Style the capslock warning in password entries
https://bugzilla.gnome.org/show_bug.cgi?id=660806
2011-10-17 22:43:47 +02:00
a26a77f9db st-entry: Display a capslock warning in password entries
Implement the GtkEntry behavior of showing a warning icon when
capslock is turned on while entering hidden text.

https://bugzilla.gnome.org/show_bug.cgi?id=660806
2011-10-17 22:43:47 +02:00
c3df6bb8bd [l10n] Updated German translation 2011-10-17 22:07:46 +02:00
ce3a26cf37 Updated Polish translation 2011-10-17 22:04:00 +02:00
04482c23c4 Updated POTFILES.in 2011-10-17 22:02:37 +02:00
ff20fe856e keyboard: show the keyboard immediately when the user toggles it on
Enabling the keyboard currently doesn't give much notification. Make
it so that the keyboard shows right away when it first gets turned on.

https://bugzilla.gnome.org/show_bug.cgi?id=659743
2011-10-17 14:55:17 -04:00
12e3921f81 messageTray: only set stage input mode when necessary
The message tray focus grabbing code sets the stage input
mode to Shell.StageInputMode.FOCUSED when the overview is
not visible. This ensures the stage window's input
region gets reshaped to include the notification chrome,
and so that input events get delivered appropriately to
the notification that grabbed focus.

The message tray code never tries to restore the stage input
mode later. Instead, the code relies on the stage input
mode (and input region) getting reset to
shell.StageInputMode.NORMAL automatically when focus moves
back from the shell chrome to a window in the user's session.

It's not really correct to set the stage input mode based
on the overview's visibility, though. At the login screen,
even though no overview is visible, the stage input mode is
Shell.StageInputMode.FULLSCREEN which is sufficient
for the notification's needs,  Furthermore,
Shell.StageInputMode.FOCUSED is insufficient for the login
dialog's needs since the login dialog isn't considered
part of the shell's chrome and won't get included in the
stage input region.

This commit changes the message tray code to only set the
stage input mode if the current stage input mode isn't good enough,
rather than assuming the input mode isn't good enough just because
the overview is hidden.

https://bugzilla.gnome.org/show_bug.cgi?id=660919
2011-10-17 13:24:12 -04:00
928fbee15b altTab: fix app ordering in certain edge cases
Because we were sorting the Alt+Tab list by user_time rather than
stacking order / MRU, it was possible for the currently-focused window
to sometimes not be the first app in the list. Fix this by using
meta_display_get_tab_list() to get the proper MRU ordering of windows
on the current workspace, and then convert that to an ordered list of
apps.

https://bugzilla.gnome.org/show_bug.cgi?id=645026
2011-10-17 12:54:03 -04:00
a103c028f9 gdm: add prelight to Not Listed? button
The prelight makes it clearer that the button is
clickable, and makes it more consistent with other
clickable parts of the dialog.

https://bugzilla.gnome.org/show_bug.cgi?id=659763
2011-10-17 11:55:46 -04:00
775347d865 Updated Japanese translation 2011-10-18 00:54:05 +09:00
6d0be86a4e dash: Add minor optimization to _adjustIconSize()
In case _adjustIconSize() is called while the the dash icons are
animating, some extra work is required to yield the expected result.
Skip those extra steps when the icons are not actually animating.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
2011-10-17 16:07:52 +02:00
a4b69db8af dash: Rework _adjustIconSize()
The current code uses the dash's height and current icon size to
calculate the new icon size. However, the height does not correctly
relate to the icon size while the icons are animating, in which
case the resulting icon size may be wrong.
Rework the function to be independent from the actual icon sizes,
so that a correct size is calculated even when called during an
animation.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
2011-10-17 16:07:52 +02:00
790b9d3371 dash: Ignore hiding items in _adjustIconSize()
Rather than relying on the caller to hide the remove target and
removed items before calling _adjustIconSize(), move that logic
into _adjustIconSize() itself.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
2011-10-17 16:07:52 +02:00
adef2009a5 Revert "dash: Ignore hiding items in _adjustIconSize()"
Ooops, a patch got lost in rebase.

This reverts commit b07f9932db.
2011-10-17 16:01:19 +02:00
1721db6d8d Revert "dash: Add minor optimization to _adjustIconSize()"
Ooops, a patch got lost in rebase ...

This reverts commit 6d95e8b988.
2011-10-17 16:00:52 +02:00
6d95e8b988 dash: Add minor optimization to _adjustIconSize()
In case _adjustIconSize() is called while the the dash icons are
animating, some extra work is required to yield the expected result.
Skip those extra steps when the icons are not actually animating.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
2011-10-17 15:58:25 +02:00
b07f9932db dash: Ignore hiding items in _adjustIconSize()
Rather than relying on the caller to hide the remove target and
removed items before calling _adjustIconSize(), move that logic
into _adjustIconSize() itself.

https://bugzilla.gnome.org/show_bug.cgi?id=649248
2011-10-17 15:58:16 +02:00
9439da81c4 Add context menus to some entries
Use ShellEntry.addContextMenu() to add context menus to most
existing entries, with the exception of:

 - the login dialog - it may act be used to enter either the
                      username (e.g. no password entry) or the
                      password, and copy/paste does not make sense
                      (nowhere to copy from, nowhere to paste to)
 - notifications    - while adding a context menu is useful here as
                      well, it will require changes to the tray's
                      focus grab handling, so leave those entries
                      out for now

https://bugzilla.gnome.org/show_bug.cgi?id=659275
2011-10-17 15:29:32 +02:00
6257e64d03 shell-entry: Add API to support entry context menus
Add addContextMenu() to support context menus on right-click/long-press.
Depending on the parameters passed, the context menu only contains
"Copy"/"Paste" actions or an additional "Show/Hide Text" toggle action
for password entries.

https://bugzilla.gnome.org/show_bug.cgi?id=659275
2011-10-17 15:29:32 +02:00
ba110f2d2e network-agent: Remove "Show password" switch
While the ability to show the password can be useful at times,
the existing implementation is problematic:

  1) The use of a switch is wrong (as even noted in a code
     comment).

  2) It is inconsistent with any other password dialog (login screen,
     polkit).

In lack of a properly designed solution (for all password dialogs),
the designers agreed to remove the switch for now.

https://bugzilla.gnome.org/show_bug.cgi?id=658948
2011-10-17 15:29:32 +02:00
6bdf621d05 Fixed some strings in Brazilian Portuguese translation 2011-10-17 10:38:23 -02:00
1c4db98c95 added Kurdish translation 2011-10-17 14:28:49 +02:00
dadac957e4 updated Kurdish translation 2011-10-17 13:38:39 +02:00
cf3976d496 l10n: updated Italian translation 2011-10-17 10:31:24 +02:00
82ed80c9c3 extensionSystem: Load user extensions after system ones
https://bugzilla.gnome.org/show_bug.cgi?id=661815
2011-10-16 14:54:17 -04:00
67222525ad Updated Korean translation 2011-10-17 03:00:56 +09:00
fff0861773 Updated French translation 2011-10-16 12:50:22 +02:00
13ffe41498 Updated Persian translations 2011-10-15 16:05:29 +03:30
96e0528a7b Updated Bulgarian translation 2011-10-15 10:43:14 +03:00
3df30fbd57 Updated Bulgarian translation 2011-10-15 10:00:14 +03:00
b57d8b336b Updated British English translation 2011-10-14 19:12:28 +01:00
3169b2c440 keyboard: fix the keyboard hiding when an extended key is selected
Add a corner case for when the extended key is clicked in order to stop the keyboard
from prematurely closing.

https://bugzilla.gnome.org/show_bug.cgi?id=661707
2011-10-13 16:12:16 -04:00
6bc34e0f32 shell-app: Plug a small memory leak 2011-10-13 22:09:39 +02:00
cecb1a41fb st-texture-cache: Fix a minor crash when computing our border-radius
If we add a 0-sized actor with a border-radius, we will crash as we try to
allocate a 0-sized texture in Cogl. Bail out early instead of doing that.

https://bugzilla.gnome.org/show_bug.cgi?id=661617
2011-10-13 14:15:18 -04:00
b9069df85c search: fix keyboard hiding when user starts a new search
The keyboard hides prematurely when the user is typing into
an empty search box because the click is a captured event that
triggers a loss of entry focus. By adding a keyboard check to
this event, the problem is solved.

https://bugzilla.gnome.org/show_bug.cgi?id=661340
2011-10-13 14:12:21 -04:00
aee3c6f041 shell-app: Remove MATCH_MULTIPLE_{PREFIX,SUFFIX}
We originally OR'ed search terms and favored results which matched
multiple times to get more relevant results. When changing search
to AND search terms, the semantics of "multiple matches" were
changed to refer to a single term matching multiple criteria (name,
executable), which seemed like a good idea at the time.

However in practice this just results in applications whose
user-visible name matches the executable name on disk being
favored over applications using a more generic name, which
isn't too useful (in particular when taking usage frequency
into account).

https://bugzilla.gnome.org/show_bug.cgi?id=623372
2011-10-13 17:46:45 +02:00
c427bba9f1 shell-app: Improve prefix matches
Currently we use a very strict definition of "prefix", where the
search term has to match at the very beginning of the searched
criteria (application name, executable name). Use a more liberal
definition by including matches where the preceding character is
a space (application name) or hyphen (executable name) as well;
as many applications use a prefix, this should improve the quality
of results.

https://bugzilla.gnome.org/show_bug.cgi?id=623372
2011-10-13 17:46:45 +02:00
da83ad561b app-system: Consider usage frequency in search results
Application search results are internally categorized in four sets,
multiple and single prefix matches and multiple and single substring
matches. Each set is currently sorted alphabetically by application
name when concatenating the sets to the final result.
Change the last step to sort each set by usage frequency instead,
which is more likely to favor the most relevant match than
"arbitrary" alphabetic order.

https://bugzilla.gnome.org/show_bug.cgi?id=623372
2011-10-13 17:46:45 +02:00
85520e34ab popup-menu: Allow adjusting where in the source the arrow points to
Currently BoxPointer/Menus always point to the center of the
associated source actor. This is generally what we want, but
add some API to adjust that behavior for the cases where it
isn't.

https://bugzilla.gnome.org/show_bug.cgi?id=659274
2011-10-13 15:03:32 +02:00
d0edd970e1 gdm: clean up spacing
There's a lot of dead vertical space right now from
the session list, even if there are no sessions.

This commit mops that up.

https://bugzilla.gnome.org/show_bug.cgi?id=661479
2011-10-11 17:27:42 -04:00
8529ca70af gdm: don't show fingerprint message right away
Right now we show "(or swipe finger)" at the user login prompt
any time we detect a fingerprint reader.

Checking for the presense of a fingerprint reader isn't really
sufficient for knowing if it is appropriate or not to show the
message, though. Often, a user's fingerprint won't be enrolled
in the system even if the machine has a fingerprint reader.

In this scenario, we end up in a situation where the code will
fade out the message right after fading it in, or worse, fade
out the message while fading it in.

The former case looks flickery and bad, and the latter case
causes the login dialog to lock up since it never completes its
"show prompt" animation and we don't procede with the login
process until after that animation.

If a user is enrolled in the system, the fingerprint pam module
tries to tell the user to swipe their finger.  We never show the
user that message because it's redundant with our own "(or swipe
finger)" message and because it uses techy words like "UPEK" and
"TouchStrip".

This commit changes the code to defer showing "(or swipe
finger)" until the fingerprint pam module forwards us its own
message. This makes it less likely we'll show the message when
fingerprint login won't work, and also removes the fingerprint
animation from the critical path "show prompt" animation.

https://bugzilla.gnome.org/show_bug.cgi?id=660492
2011-10-11 17:25:44 -04:00
1a8d78212f layoutManager: Ignore 1px overlap in _isAboveOrBelowPrimary()
Nvidia's twin view option does not align monitors properly, but with
a one pixel overlap. It looks safe to ignore an overlap this small
to make this case work.

https://bugzilla.gnome.org/show_bug.cgi?id=661387
2011-10-11 16:20:12 +02:00
4270a2806d Updated Hungarian translation 2011-10-11 16:12:28 +02:00
4333bdc709 *.[ch]: add emacs modeline to C files that were missing it
(excluding files that are synced from another module)

https://bugzilla.gnome.org/show_bug.cgi?id=660358
2011-10-11 08:05:17 -04:00
75b824d032 *.js: Make emacs modelines consistent
js2-mode is no longer developed and we recommend js-mode these days,
so switch the modelines to specify that, and make them consistent
across all files.

https://bugzilla.gnome.org/show_bug.cgi?id=660358
2011-10-11 08:05:12 -04:00
7bc2573d85 window-clone: Use ClutterClickAction
Right-click menus in the dash can be dismissed by clicking anywhere
outside the menu. However, if a window clone is located beneath the
pointer when doing so, the window is activated and the overview
closed.
The cause of this unexpected behavior is that window previews are
activated on button-release, which is delivered to the preview after
the menu releases its grab on button-press. Use a ClutterClickAction
instead and let Clutter do the right thing, i.e. only trigger a
'clicked' signal when a button-release event is matched by a
corresponding button-press event.

https://bugzilla.gnome.org/show_bug.cgi?id=661151
2011-10-11 12:56:34 +02:00
67b7b7a950 shell-util: Fix a bogus annotation
Creating a new instance is not (transfer none), unless I'm missing
somehting here...

https://bugzilla.gnome.org/show_bug.cgi?id=661231
2011-10-11 00:07:31 -04:00
786cfbd397 shell-util: Remove shell_util_icon_from_string
GJS doesn't need to be able to represent interfaces for you to be able to
access an interface method, so Gio.icon_new_for_string works fine.

https://bugzilla.gnome.org/show_bug.cgi?id=661231
2011-10-11 00:07:31 -04:00
9df8b583cf Updated Telugu Translations 2011-10-10 16:53:43 +05:30
8e32290dc9 Change default of saved-im-presence to Offline
Unset is not a valid presence type so the Shell shouldn't try setting it when
starting for the first time.

https://bugzilla.gnome.org/show_bug.cgi?id=661272
2011-10-09 15:23:59 -04:00
23478f3336 Updated Lithuanian translation 2011-10-09 00:40:32 +03:00
2e244ecb63 Updated Latvian translation. 2011-10-08 22:48:44 +03:00
e307680206 [l10n] Updated German translation 2011-10-08 20:38:19 +02:00
6bb1a3e2c4 Updated Russian translation 2011-10-08 11:34:28 +04:00
8a1ac6b13f Updated Dutch translation by Wouter Bolsterlee 2011-10-08 02:04:37 +02:00
61b8af2252 Add translator comment for button label 2011-10-08 01:50:20 +02:00
c99afed012 messageTray: Fix accidental typo 2011-10-07 16:34:04 -04:00
2947b92148 user-menu: Restore previous session presence at startup
Save the session presence in GSettings and restore it on startup.

https://bugzilla.gnome.org/show_bug.cgi?id=659021
2011-10-07 07:24:21 +02:00
39c5d23a87 user-menu: Restore previous IM presence on startup
Move the saved user-set presence to GSettings, so it is preserved
between logins.

https://bugzilla.gnome.org/show_bug.cgi?id=659021
2011-10-07 07:24:21 +02:00
d839670f54 Updated Spanish translation 2011-10-06 23:39:36 +02:00
0d1b7e15d1 Updated Swedish translation 2011-10-06 08:09:28 +02:00
ac678f63ee Updated Galician translations 2011-10-06 02:52:18 +02:00
d862c0879b telepathyClient: Check for a no-op before pushing an alias change message
tp-glib can sometimes emit a notify::alias signal when the alias doesn't
actually change. Bail out early instead of pushing an alias change message.

https://bugzilla.gnome.org/show_bug.cgi?id=660774
2011-10-05 15:34:40 -04:00
23a4d4c69e texture-cache: Don't share requests for uncachable textures
Make create_texture_and_ensure_request() aware of the caching
policy to avoid returning the same texture for different
images.

https://bugzilla.gnome.org/show_bug.cgi?id=660585
2011-10-05 21:30:27 +02:00
472b20d933 ShellContactSystem: Make address search actually work
The code was not dealing properly with what folks returns
for im and email addresses.

https://bugzilla.gnome.org/show_bug.cgi?id=660925
2011-10-05 20:26:39 +02:00
492dd718fb ShellContactSystem: make search terms conjunctive
Require that all terms match. This is the expected behaviour
and matches what gnome-contacts does. Keep the prefix/infix
weights in place for now.

https://bugzilla.gnome.org/show_bug.cgi?id=660912
2011-10-05 20:26:38 +02:00
0d5618fdd1 contact-display: Try harder to display a meaningful name
We now match individuals on other properties than alias, so take
this into account when representing a contact in search results
to avoid having them show up as "Unknown".

https://bugzilla.gnome.org/show_bug.cgi?id=660580
2011-10-05 20:26:38 +02:00
503508af41 contact-system: Add helper method to get a (display) email
Folks uses collection/set objects from libgee to store email addresses
associated with an individual. Unfortunately to extract addresses, parts
of libgee which are unusable from (introspected) bindings have to be
used[0], so add a helper method.

[0] in particular gee_iterator_get(), which is annotated as
    "return: (transfer full): gpointer"

https://bugzilla.gnome.org/show_bug.cgi?id=660580
2011-10-05 20:26:38 +02:00
4ec5e55122 Move shell contacts search closer to gnome-contacts
Match folks' name and nick fields, in addition to alias,
and look at email addresses in addition to im addresses.
This is more in line with what gnome-contacts does.

To match this new usage, rename the ALIAS_..._WEIGHT and
IM_..._WEIGHT constants to NAME_ and ADDR_, respectively.

https://bugzilla.gnome.org/show_bug.cgi?id=660580
2011-10-05 20:26:38 +02:00
8daca865ca Updated Slovenian translation 2011-10-05 19:59:01 +02:00
f9b37a21e8 StThemeNodeDrawing: Remove useless LoadCornerData
Done as part of my quest to merge Mx and St:

https://github.com/magcius/mx/tree/st-rebase

https://bugzilla.gnome.org/show_bug.cgi?id=660968
2011-10-05 12:24:28 -04:00
c398f319fc [l10n]Updated Catalan translation 2011-10-04 23:30:47 +02:00
1e049f88b8 Updated Polish translation 2011-10-04 23:25:07 +02:00
4831d9c3a3 lookingGlass: Fix referencing undefined variables 2011-10-04 16:50:58 -04:00
f13f5bc1bb Use '' for non-translated strings
Pay attention to the style guidelines.

https://bugzilla.gnome.org/show_bug.cgi?id=660600
2011-10-04 16:47:53 -04:00
4e114107ed keyboard: Add a missed translation
The word "tray" should be translated to other languages.

https://bugzilla.gnome.org/show_bug.cgi?id=660600
2011-10-04 16:47:53 -04:00
0ccb280008 st-theme-node-drawing: Fix centering when the image needs to be scaled
The translate coordinates are calculated as the offset after the scale, so it
needs to be applied after the scale as well. This fixes random centering issues
in the UI.

https://bugzilla.gnome.org/show_bug.cgi?id=660674
2011-10-04 15:46:01 -04:00
28c3e0693e workspaces-view: Remove window dnd between workspaces
When workspace "previews" in the overview were just tiny gray
rectangles, it made sense to provide a way to move windows
directly between workspaces (by switching workspaces when dragging
a window to the corresponding screen edge). As the overview has
evolved however, the workspace switcher provides a good and
intuitive drop target already, so the alternative provided by the
screen edges is no longer necessary. As it also conflicts with
moving windows between monitors when using a vertical layout,
just remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=660838
2011-10-04 20:30:20 +02:00
c321c8a02f Updated Polish translation 2011-10-04 20:09:02 +02:00
2407ec7b47 Revert "lookingGlass: Add an easier way to see extension errors"
This reverts commit 1e6b824ede.
2011-10-04 13:15:10 -04:00
70eeb75716 lookingGlass: Show extension state in gnome-shell
We translate and create an actor to show the extension state, but we never
actually add it anywhere. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=660494
2011-10-04 13:14:54 -04:00
751d250471 autorun: fix a typo in a variable name
The variable |type| doesn't exist here; what we want to do is using the
first member of the contentTypes array instead.
Probably a leftover of some refactoring of the code I did while working
on this.

This patch fixes starting of the default application for a given content
type if the control-center panel is set to run it when a device is
plugged.

https://bugzilla.gnome.org/show_bug.cgi?id=660821
2011-10-03 16:34:59 -04:00
c28217db80 Updated Esperanto translation 2011-10-03 20:40:41 +02:00
0968e556fa WindowDimmer: Make effect private
There is no need for making this public as it is only accessed from within
WindowDimmer.
2011-10-03 18:22:58 +02:00
130f2cf808 WindowDimmer: Don't try to use a ShaderEffect when GLSL is not available
This obviously won't work anyway but will just spam stderr with warnings,
so don't do it.
2011-10-03 18:22:47 +02:00
4eec7413c7 Revert "lookingGlass: Show extension state in gnome-shell"
This reverts commit 32dc24c59b, as it caused
a string break.

https://bugzilla.gnome.org/show_bug.cgi?id=660494
2011-10-02 12:05:21 -04:00
efc3246d26 Updated Bulgarian translation 2011-10-02 13:52:37 +03:00
9930dbc0ff Updated Galician translations 2011-10-02 00:24:03 +02:00
754f87dac3 Updated Swedish translation 2011-10-01 21:57:10 +02:00
51139bd096 Updated Irish translation 2011-10-01 13:26:46 -06:00
6e0119d620 Updated Irish translation 2011-10-01 13:16:56 -06:00
a3528bf973 layout: Fix the actor tracking parameter parsing
It's not appropriate to inherit from the parent property if we pass "false"
as a value, especially when all current parameters are booleans.

https://bugzilla.gnome.org/show_bug.cgi?id=660608
2011-10-01 14:41:53 -04:00
77c36af588 [l10n]Updated Catalan (Valencian) translation 2011-10-01 16:04:25 +02:00
69c0a52a33 [l10n]Updated Catalan translation 2011-10-01 16:04:18 +02:00
a7442cd0a5 Updated Vietnamese translation 2011-10-01 10:31:24 +10:00
d47a013931 vi.po: import from Damned Lies 2011-10-01 10:29:31 +10:00
745f9c0e6e Added asturian language 2011-09-30 21:04:02 +02:00
414f49fd80 Updated asturian translation 2011-09-30 21:02:57 +02:00
e49a595f54 st-texture-cache: Don't cache GIcons which cannot be serialized
For GIcons we use g_icon_to_string() in the key, but the function
will return NULL if the icon cannot be serialized. As a result,
all non-serializable GIcons of the same size end up with the same
cache key - an example for this are contacts with avatars, which
currently all end up with the same image.
To fix, opt out of caching for GIcons which cannot be serialized.

https://bugzilla.gnome.org/show_bug.cgi?id=660585
2011-09-30 20:14:25 +02:00
77485c2a04 [l10n] Updated German translation 2011-09-30 20:07:51 +02:00
e9b28634e5 Updated Slovenian translation 2011-09-30 19:13:24 +02:00
b43dcb8876 layout: Fix setting fullscreen for screen sized windows
We have to set the flag for all monitors in that case.
2011-09-30 18:46:14 +02:00
f0c1eeece8 Updated Spanish translation 2011-09-30 18:27:07 +02:00
1e6b824ede lookingGlass: Add an easier way to see extension errors
Use the extensions tab to show errors belonging to each extension.

https://bugzilla.gnome.org/show_bug.cgi?id=660546
2011-09-30 12:19:30 -04:00
1e2d16273c layoutManager: Treat screen_sized OR windows as fullscreen
https://bugzilla.gnome.org/show_bug.cgi?id=660166
2011-09-29 21:38:05 +02:00
32dc24c59b lookingGlass: Show extension state in gnome-shell
We translate and create an actor to show the extension state, but we never
actually add it anywhere. Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=660494
2011-09-29 13:15:27 -04:00
7a8a189c48 boxpointer: Don't constrain box pointer to primary monitor
A boxPointer should be able to be attached to any actor, not just ones on the
primary monitor. Assume that the sourceActor doesn't straddle monitors, and
constrain the boxPointer to the monitor the sourceActor is on.

https://bugzilla.gnome.org/show_bug.cgi?id=659861
2011-09-29 13:15:01 -04:00
6aa411fecc keyboard: ignore D-Bus requests when the OSK isn't enabled
Fixes spurious warnings about "this.actor is null" when processing
org.gnome.Caribou.Keyboard messages when the keyboard isn't enabled.

https://bugzilla.gnome.org/show_bug.cgi?id=659940
2011-09-29 10:28:49 -04:00
9c76318df8 main: remove a stray second keyboard.init() call
Originally the keyboard was initialized in the user-session-specific
code, but it was later moved to the generic code. Except that it was
accidentally copied rather than moved.

https://bugzilla.gnome.org/show_bug.cgi?id=659940
2011-09-29 10:28:46 -04:00
6510904711 windowAttentionHandler: Remove "%s has finished starting"
The message is verbose and confusing. Use the traditional "'%s' is ready"
for all cases.

https://bugzilla.gnome.org/show_bug.cgi?id=660310
2011-09-29 09:59:09 -04:00
a9817f4832 automountManager: Don't mount already-mounted volumes
Don't pester the user with autorun popups if a volume is already mounted.

https://bugzilla.gnome.org/show_bug.cgi?id=660397
2011-09-28 16:51:02 -04:00
9067689839 power-status: Use correct DBus signatures
Devices are represented as susdut, not susbut (i.e. the percentage
is a double rather than a boolean) - apparently the wrong signature
works, but correct it anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=660122
2011-09-28 19:56:23 +02:00
4e9e91fdce recorder: Use CoglHandle instead of CoglHandle*
The latter has always been wrong and should have been fixed a
while ago, but somehow we overlooked shell-recorder.

https://bugzilla.gnome.org/show_bug.cgi?id=659822
2011-09-28 19:56:23 +02:00
73cc91ba60 update zh_CN translation 2011-09-28 01:01:12 +08:00
0ab0d0860f Uploaded Ukranian 2011-09-27 14:56:16 +03:00
337b399a75 Updated Serbian translation 2011-09-27 02:47:53 +02:00
46f21e81e3 updated Tamil translation 2011-09-27 05:14:59 +05:30
c1300ddbbc Bump version to 3.2.0
Update NEWS
2011-09-26 16:39:21 -04:00
8bd5b1e696 st: Fix crash in theme-node-transition
Setting up the framebuffers for transitions may fail, in which case
the material used for drawing is left uninitialized, so trying to
access it results in a crash.
Instead bail out in this case, which means that we won't paint
anything during the transition - still, drawing errors are better
than crashes ...

https://bugzilla.gnome.org/show_bug.cgi?id=659676
2011-09-26 19:52:36 +02:00
40c5db397d messageTray: unset this._clickedSummaryItem if we are hiding the summary box pointer and don't have a new clicked summary item
This ensures that this._clickedSummaryItem is always unset correctly.

Because we disconnect the signals that have _adjustSummaryBoxPointerPosition()
as a callback when unsetting this._clickedSummaryItem, we no longer call
setPosition() on this._summaryBoxPointer after it is hidden. Calling
setPosition() shows the box pointer again, which previously resulted in
an empty box pointer staying behind when a notification associated with
a tray icon was clicked.

https://bugzilla.gnome.org/show_bug.cgi?id=659862
2011-09-26 13:30:46 -04:00
8b52919b4d Updated Telugu Translation 2011-09-26 22:46:26 +05:30
2859f23038 Fixed some strings in Brazilian Portuguese translation 2011-09-26 10:36:54 -03:00
00384ccb47 telepathyClient: call delay on context when approving a FT or call
Not doing so is considered as a bug as we don't accept the context right away.
It leads to tp-glib returning directly from the AddDispatchOperation() D-Bus
call and so automatically approve the channel if the Shell is the only
approver running.

https://bugzilla.gnome.org/show_bug.cgi?id=660084
2011-09-26 14:49:21 +02:00
0191cc589a Updated Finnish translation 2011-09-26 15:43:09 +03:00
dae6db9b51 [l10n]Updated Catalan (Valencian) translation 2011-09-26 14:26:05 +02:00
4d912c9feb Updated Japanese translation 2011-09-26 11:59:08 +09:00
07c4b46466 Update Czech translation 2011-09-26 02:00:30 +02:00
e9cdce49a3 Updated Russian translation 2011-09-26 01:18:09 +04:00
84c3ce8778 Updated Latvian translation. 2011-09-25 21:55:16 +03:00
d5a32a7fe4 Updated Japanese translation 2011-09-26 01:04:14 +09:00
cc4dfda21b Updated Indonesian translation 2011-09-25 15:41:58 +07:00
703b37aa7b Updated Traditional Chinese translation(Hong Kong and Taiwan) 2011-09-25 14:52:31 +08:00
b433de9022 Updated Bulgarian translation 2011-09-25 08:34:54 +03:00
0c1a22ff95 Updated Slovak translation 2011-09-24 22:57:48 +02:00
4d526e40c3 [l10n] Updated German translation 2011-09-24 20:46:15 +02:00
4586c7b36b Fix display of dates in the Hungarian translation 2011-09-24 19:18:51 +02:00
3d60b73b60 Updated Lithuanian translation 2011-09-24 15:41:38 +03:00
4ef5cd8ef6 Updated Hungarian translation 2011-09-24 01:46:46 +02:00
6959bd19f1 Updated Basque language 2011-09-23 18:19:56 +02:00
17e4ce5ea8 Updated French translation 2011-09-23 18:08:57 +02:00
33094b4988 messageTray: fix notification/keyboard interaction
If the pointer moves from the notification into the keyboard, don't
treat that as moving out of the tray.

https://bugzilla.gnome.org/show_bug.cgi?id=658603
2011-09-23 07:56:45 -04:00
a8fdcffd44 messageTray: move the summary box pointer up when the keyboard shows
If the keyboard is shown when a summary boxpointer is visible (eg,
when opening a chat source), animate the boxpointer up with the tray.

https://bugzilla.gnome.org/show_bug.cgi?id=658603
2011-09-23 07:55:47 -04:00
5adb5411fa keyboard: fix D-Bus name acquisition flags to totally block Antler
We never want the antler keyboard to run if gnome-shell is running, so
grab org.gnome.Caribou.Keyboard without the "allow replacement" flag.

https://bugzilla.gnome.org/show_bug.cgi?id=659865
2011-09-23 07:53:51 -04:00
ff0d11c89c Updated Hebrew translation. 2011-09-23 08:51:57 +03:00
5f6dce2b5c popup-menu: Fix allocation in RTL locales
Commit ed7d4928e5 fixed some width-for-height cases in popup menu items,
but did not consider RTL locales. Fix this.

https://bugzilla.gnome.org/show_bug.cgi?id=659827
2011-09-22 21:52:26 +02:00
a7405e8b39 Updated translation for Afrikaans (af) not including latest strings since freeze 2011-09-22 21:20:29 +02:00
d87c520bad Updated Esperanto translation 2011-09-22 20:29:31 +02:00
24959f8d34 Updated Esperanto translation 2011-09-22 20:26:25 +02:00
6d1432e166 [l10n]Updated Catalan translation 2011-09-22 19:54:11 +02:00
2c7ba2c125 Updated Korean translation 2011-09-23 02:33:19 +09:00
a0ba664c64 messageTray: only update an icon when necessary on notification update
This avoids unnecessarily removing and resetting the icon in the notifications.

This fixes the new chat notification sliding down and up slightly when new
messages are received.

https://bugzilla.gnome.org/show_bug.cgi?id=659768
2011-09-22 13:25:35 -04:00
131da5f523 telepathyClient: update the avatar correctly when it changes
Previously, when the avatar changed, we would not update the summary icon
for the source at all and would only update the notification icon when the
next message was received. Instead, we should update both immediately upon
recieving the signal that the avatar has changed.

https://bugzilla.gnome.org/show_bug.cgi?id=659768
2011-09-22 13:25:35 -04:00
7c6144450a Updated Slovenian translation 2011-09-22 18:06:45 +02:00
4c7369db16 build: Switch to stable cogl/clutter branches for now 2011-09-22 16:35:45 +02:00
f4355de896 Updated Telugu Translation 2011-09-22 19:56:35 +05:30
4a3db9f44d Updated Danish translation 2011-09-22 16:07:11 +02:00
6c0a9ff9cc Updated Brazilian Portuguese translation. Reviewed by Djavan Fagundes <djavanf@gnome.org>. 2011-09-22 09:59:50 -03:00
57b1695fcf keyboard: don't try to move windows out of the way of the keyboard
This code was never tested very well, and has several problems
currently (windows creeping down and to the right, windows snapping to
a different location after you move them). To be fixed in 3.4.

https://bugzilla.gnome.org/show_bug.cgi?id=659643
2011-09-22 07:55:20 -04:00
045c6546cc Add Assamese translation 2011-09-22 12:19:02 +02:00
ce5bd954bf Add Assamese translation 2011-09-22 12:18:08 +02:00
6ef00a4a3b Updated Spanish translation 2011-09-22 11:47:37 +02:00
569d9718a0 Updated Norwegian bokmål translation 2011-09-22 10:10:41 +02:00
00a3a8697f [l10n] Updated German translation 2011-09-22 08:50:50 +02:00
c93444e390 Updated Swedish translation 2011-09-22 06:38:15 +02:00
5e5788ab14 update Punjabi Translation 2011-09-22 06:16:06 +05:30
abf57e6362 Updated Portuguese translation 2011-09-22 00:35:36 +01:00
74c2074d5a Updated Galician translations 2011-09-21 22:51:32 +02:00
b74606312e Updated Polish translation 2011-09-21 22:05:00 +02:00
0c849df4d5 Updated Belarusian translation. 2011-09-21 22:18:23 +03:00
38690d4a09 autorun: mark string as translatable 2011-09-21 21:10:50 +02:00
b64c237cb3 Updated Polish translation 2011-09-21 20:39:04 +02:00
3fbee8e027 configure.ac: switch to tar-ustar
tar-ustar is the GNOME standard and has some small advantages
over the default tar-v7, like support for long file names.
2011-09-21 12:33:11 -04:00
a68e6e3c63 Updated Danish translation 2011-09-21 17:57:09 +02:00
db5a72774d configure: Require gjs 1.29.18 for GC stuff 2011-09-21 10:04:36 -04:00
966f90f24a Updated Hungarian translation 2011-09-21 03:08:49 +02:00
eaa664c023 Updated Portuguese translation 2011-09-21 00:45:47 +01:00
176 changed files with 20247 additions and 9776 deletions

104
NEWS
View File

@ -1,3 +1,107 @@
3.2.1
=====
* Restore the IM state on startup - if you were available in when you logged
out, then you'll be set available again when you log in.
[Florian; #65902, #661485]
* Improve searching for contacts in the overview: search more fields,
show a more meaningful name, require that all search terms match.
[Florian, Matthias; #660580]
* Improve search for applications in the overview: take frequency into
account and tweak match algorithm [Florian; #623372]
* Remove the "Show Password" switch from network password prompts, and
move the functionality to a right-click menu [Florian; #658948]
* Add context menus with Cut/Paste options to most entries [Florian; #659275]
* On screen keyboard:
- Show the keyboard immediately when it's turned enabled [Dan; #659743]
- Fix problem where keyboard would hide when starting to type
in the search entry [Nohemi; #661340]
- Fix problem with keyboard hiding when selected accented characters
[Nohemi; 661707]
* Login mode:
- Allow hitting Enter to select the first user [Ray; #657996]
- Fix flicker of a fingerprint prompt that could show up [Ray; #660492]
- Fix password bullets vanishing during login [Ray; #657894]
- Misc bug fixes and visual tweaks [Ray; #659763, #660919, #661479]
* Display a caps-lock warning in password entries [Florian; #660806]
* Show the state of installed extensions in Looking Glass [Jasper; #660494]
* Load user extensions after system ones [Jasper; #661815]
* Fix problem with many applications showing extra-large icons in
notifications [Marina; #659158]
* Fix a problem where alt-Tab had trouble tracking the current
application with certain applications such as Emacs. [Dan; #645026]
* Fix confusion between different users avatar images [Florian; #660585]
* Remove behavior where you could switch workspaces by bumping
a dragged window in the overview against a screen edge; it was
leftover and just confusing. [Florian; #660838]
* Fix long-standing bug where the Dash in the overview could end up mis-sized
and run off the screen [Florian; #649248]
* Fix automatic launching of applications when media is inserted
[Cosimo; #660821]
* Fix handling of vertically stacked monitors with NVIDIA drivers
[Florian; #661387]
* Translation marking fixes [Jasper, Wouter; #660600]
* Code cleanups and warning fixes [Adel, Dan, Florian, Jasper;
#659822, #659940, #660122, #660358, #660968, #661231]
* Small memory leak fixes [Florian, Jasper; #661231]
* Misc bug fixes [Adel, Florian, Jasper; #659274, #659861, #660166, #660310,
#660397, #660608, #660606, #660674, #660774. #660848, #661151, #661617]
Contributors:
Wouter Bolsterlee, Cosimo Cecchi, Matthias Clasen, Nohemi Fernandez,
Adel Gadllah, Florian Müllner, Jasper St. Pierre, Ray Strode, Dan Winship,
Marina Zhurakhinskaya
Translations:
Tiffany Antopolski [eo], Xandru Armesto [ast], Alexander Shopov,
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
Mario Blättermann, Paul Seyfert [de], Bruce Cowan [en_GB],
Jorge González, Daniel Mustieles [es], Arash Mousavi [fa], Bruno Brouard [fr],
Seán de Búrca [ga], Fran Diéguez [gl], Gabor Kelemen [hu], Luca Ferretti [it],
Takayuki Kusano [ja], Changwoo Ryu [ko], Erdal Ronahi [ku],
Algimantas Margevičius [lt], Rudolfs Mazurs [lv], Wouter Bolsterlee [nl],
Piotr Drąg [pl], Adorilson Bezerra [pt_BR], Yuri Myasoedov [ru],
Matej Urbančič [sl], Daniel Nylander [sv], Miroslav Nikolić [sr, sr@latin],
Tirumurti Vasudevan [ta], Krishnababu Krothapalli [te], Daniel Korostil [uk],
Nguyễn Thái Ngọc Duy [vi], YunQiang Su [zh_CN]
3.2.0
=====
* Prevent the fallback on-screen keyboard from showing up while
GNOME Shell is running [Dan, #659865]
* Disable code to reposition windows around the on-screen keyboard;
it wasn't finished or working properly. [Dan; #659643]
* Fix interaction between on-screen keyboard and notifications
[Dan; #658603]
* Fix menu-sizing problems in right-to-left locales. [Florian; #659827]
* Update chat icons in the message tray when an avatar image changes
[Marina; #659768]
* Fix problem with empty notification bubbles being left [Marina; #659862]
* Fix problem with chat notifications bouncing when new messages come in.
[Marina; #659768]
* Fix bug that was causing SIP calls to automatically be accepted in some
circumstances [Guillaume; #660084]
* Fix string that should have been marked translatable [Frédéric]
* Fix a crash that could happen during CSS transitions [Florian; #659676]
* Build fixes [Colin, Florian]
Contributors:
Guillaume Desmottes, Florian Müllner, Frédéric Péters, Colin Walters,
Dan Winship, Marina Zhurakhinskaya
Translations:
Friedel Wolff [af], Nilamdyuti Goswami [as], Ihar Hrachyshka [be],
Ivaylo Valkov [bg], Gil Forcada [ca], Carles Ferrando [ca@valencia],
Petr Kovar [cz], Mario Blättermann [de], Kris Thomsen [dk],
Tiffany Antopolski, Kristjan Schmidt [eo], Daniel Mustieles [es],
Inaki Larranaga Murgoitio [eu], Tommi Vainikainen [fi], Bruno Brouard [fr],
Fran Dieguez [gl], Yaron Shahrabani [he], Gabor Kelemen [hu],
Andika Triwidada [id], Jiro Matsuzawa [ja], Changwoo Ryu [ko],
Rudolfs Mazurs [lv], Aurimas Černius [lt], Kjartan Maraas [nb],
A S Alam [pa], Piotr Drąg [pl], Duarte Loreto [pt], Djavan Fagundes,
Rodolfo Ribeiro Gomes, Gabriel F. Vilar [pt_BR], Yuri Myasoedov [ru],
Daniel Nylander [se], Martin Srebotnjak [sl], Michal Štrba [sv],
Krishnababu Krothapalli, Praveen Illa [te], Cheng-Chia Tseng [zh_KH, zh_TW]
3.1.92 3.1.92
====== ======

View File

@ -1,5 +1,5 @@
AC_PREREQ(2.63) AC_PREREQ(2.63)
AC_INIT([gnome-shell],[3.1.92],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_INIT([gnome-shell],[3.2.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_SRCDIR([src/shell-global.c])
@ -9,7 +9,7 @@ AC_CONFIG_AUX_DIR([config])
AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"]) AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"])
AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"]) AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"])
AM_INIT_AUTOMAKE([1.10 dist-xz no-dist-gzip foreign]) AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar foreign])
AM_MAINTAINER_MODE([enable]) AM_MAINTAINER_MODE([enable])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
@ -66,8 +66,8 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder)
CLUTTER_MIN_VERSION=1.7.5 CLUTTER_MIN_VERSION=1.7.5
GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1
GJS_MIN_VERSION=1.29.15 GJS_MIN_VERSION=1.29.18
MUTTER_MIN_VERSION=3.0.0 MUTTER_MIN_VERSION=3.2.1
FOLKS_MIN_VERSION=0.5.2 FOLKS_MIN_VERSION=0.5.2
GTK_MIN_VERSION=3.0.0 GTK_MIN_VERSION=3.0.0
GIO_MIN_VERSION=2.29.10 GIO_MIN_VERSION=2.29.10

View File

@ -50,6 +50,14 @@
<default>[]</default> <default>[]</default>
<_summary>History for the looking glass dialog</_summary> <_summary>History for the looking glass dialog</_summary>
</key> </key>
<key name="saved-im-presence" type="i">
<default>1</default>
<_summary></_summary>
</key>
<key name="saved-session-presence" type="i">
<default>0</default>
<_summary></_summary>
</key>
<child name="clock" schema="org.gnome.shell.clock"/> <child name="clock" schema="org.gnome.shell.clock"/>
<child name="calendar" schema="org.gnome.shell.calendar"/> <child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="recorder" schema="org.gnome.shell.recorder"/> <child name="recorder" schema="org.gnome.shell.recorder"/>

View File

@ -98,8 +98,12 @@
color: #666666; color: #666666;
} }
.login-dialog-not-listed-button:hover .login-dialog-not-listed-label {
color: white;
}
.login-dialog-prompt-layout { .login-dialog-prompt-layout {
padding-bottom: 64px; padding-bottom: 32px;
} }
.login-dialog-prompt-label { .login-dialog-prompt-label {
color: white; color: white;
@ -117,6 +121,16 @@
width: 15em; width: 15em;
} }
.login-dialog-prompt-entry .capslock-warning {
icon-size: 16px;
warning-color: #999;
}
.login-dialog-prompt-entry:insensitive {
color: rgba(0,0,0,0.7);
border: 2px solid #565656;
}
.login-dialog-session-list { .login-dialog-session-list {
color: #ffffff; color: #ffffff;
font-size: 10.5pt; font-size: 10.5pt;

View File

@ -907,7 +907,7 @@ StTooltip StLabel {
font-weight: bold; font-weight: bold;
} }
.lg-extension-actions { .lg-extension-meta {
spacing: 6px; spacing: 6px;
} }
@ -1907,6 +1907,12 @@ StTooltip StLabel {
border: 2px solid #3465a4; border: 2px solid #3465a4;
} }
.polkit-dialog-password-entry .capslock-warning {
icon-size: 16px;
warning-color: #999;
padding: 0 4px;
}
.polkit-dialog-error-label { .polkit-dialog-error-label {
font-size: 10pt; font-size: 10pt;
color: #ffff00; color: #ffff00;
@ -1925,14 +1931,6 @@ StTooltip StLabel {
padding-bottom: 8px; padding-bottom: 8px;
} }
.network-dialog-show-password-checkbox {
padding-top: 5px;
padding-bottom: 5px;
font-size: 10pt;
color: white;
spacing: 10px;
}
.network-dialog-secret-table { .network-dialog-secret-table {
spacing-rows: 15px; spacing-rows: 15px;
} }

View File

@ -46,6 +46,7 @@ nobase_dist_js_DATA = \
ui/messageTray.js \ ui/messageTray.js \
ui/modalDialog.js \ ui/modalDialog.js \
ui/networkAgent.js \ ui/networkAgent.js \
ui/shellEntry.js \
ui/shellMountOperation.js \ ui/shellMountOperation.js \
ui/notificationDaemon.js \ ui/notificationDaemon.js \
ui/overview.js \ ui/overview.js \

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2011 Red Hat, Inc * Copyright 2011 Red Hat, Inc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -1,4 +1,4 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;

View File

@ -1,4 +1,4 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2011 Red Hat, Inc * Copyright 2011 Red Hat, Inc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -297,6 +297,20 @@ UserList.prototype = {
x_align: St.Align.START, x_align: St.Align.START,
y_align: St.Align.MIDDLE }); y_align: St.Align.MIDDLE });
this._items = {}; this._items = {};
this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems));
},
_moveFocusToItems: function() {
let hasItems = Object.keys(this._items).length > 0;
if (!hasItems)
return;
if (global.stage.get_key_focus() != this.actor)
return;
this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false);
}, },
_showItem: function(item) { _showItem: function(item) {
@ -502,6 +516,8 @@ UserList.prototype = {
item.showFocusAnimation(0); item.showFocusAnimation(0);
})); }));
this._moveFocusToItems();
this.emit('item-added', item); this.emit('item-added', item);
}, },
@ -694,10 +710,13 @@ SessionList.prototype = {
let ids = GdmGreeter.get_session_ids(); let ids = GdmGreeter.get_session_ids();
ids.sort(); ids.sort();
if (ids.length <= 1) if (ids.length <= 1) {
this._box.hide(); this._box.hide();
else this._button.hide();
} else {
this._button.show();
this._box.show(); this._box.show();
}
for (let i = 0; i < ids.length; i++) { for (let i = 0; i < ids.length; i++) {
let [sessionName, sessionDescription] = GdmGreeter.get_session_name_and_description(ids[i]); let [sessionName, sessionDescription] = GdmGreeter.get_session_name_and_description(ids[i]);
@ -922,6 +941,7 @@ LoginDialog.prototype = {
function() { function() {
this._sessionList.close(); this._sessionList.close();
this._promptFingerprintMessage.hide();
this._userList.actor.show(); this._userList.actor.show();
this._userList.actor.opacity = 255; this._userList.actor.opacity = 255;
return this._userList.showItems(); return this._userList.showItems();
@ -943,7 +963,18 @@ LoginDialog.prototype = {
}, },
_onInfo: function(client, serviceName, info) { _onInfo: function(client, serviceName, info) {
// we don't want fingerprint messages with the word UPEK in them // We don't display fingerprint messages, because they
// have words like UPEK in them. Instead we use the messages
// as a cue to display our own message.
if (serviceName == _FINGERPRINT_SERVICE_NAME &&
this._haveFingerprintReader &&
(!this._promptFingerprintMessage.visible ||
this._promptFingerprintMessage.opacity != 255)) {
_fadeInActor(this._promptFingerprintMessage);
return;
}
if (serviceName != _PASSWORD_SERVICE_NAME) if (serviceName != _PASSWORD_SERVICE_NAME)
return; return;
Main.notifyError(info); Main.notifyError(info);
@ -971,10 +1002,10 @@ LoginDialog.prototype = {
}, },
function() { function() {
if (!this._haveFingerprintReader) // Show it with 0 opacity so we preallocate space for it
return null; // in the event we need to fade in the message
this._promptFingerprintMessage.opacity = 0;
return _fadeInActor(this._promptFingerprintMessage); this._promptFingerprintMessage.show();
}, },
function() { function() {
@ -1046,6 +1077,8 @@ LoginDialog.prototype = {
function() { function() {
this._promptFingerprintMessage.hide(); this._promptFingerprintMessage.hide();
this._promptEntry.reactive = true;
this._promptEntry.remove_style_pseudo_class('insensitive');
this._promptEntry.set_text(''); this._promptEntry.set_text('');
}]; }];
@ -1061,7 +1094,8 @@ LoginDialog.prototype = {
function() { function() {
let _text = this._promptEntry.get_text(); let _text = this._promptEntry.get_text();
this._promptEntry.set_text(''); this._promptEntry.reactive = false;
this._promptEntry.add_style_pseudo_class('insensitive');
this._greeterClient.call_answer_query(serviceName, _text); this._greeterClient.call_answer_query(serviceName, _text);
}]; }];

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2011 Red Hat, Inc * Copyright 2011 Red Hat, Inc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -1,4 +1,5 @@
/* mode: js2; indent-tabs-mode: nil; tab-size: 4 */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* The name of this package (not localized) */ /* The name of this package (not localized) */
const PACKAGE_NAME = '@PACKAGE_NAME@'; const PACKAGE_NAME = '@PACKAGE_NAME@';
/* The version of this package */ /* The version of this package */

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const St = imports.gi.St; const St = imports.gi.St;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;

View File

@ -1,3 +1,5 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* /*
* This function is intended to extend the String object and provide * This function is intended to extend the String object and provide

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;
@ -78,7 +78,7 @@ function Inhibitor(objectPath) {
Inhibitor.prototype = { Inhibitor.prototype = {
_init: function(objectPath) { _init: function(objectPath) {
DBus.session.proxifyObject(this, DBus.session.proxifyObject(this,
"org.gnome.SessionManager", 'org.gnome.SessionManager',
objectPath); objectPath);
this.isLoaded = false; this.isLoaded = false;
this._loadingPropertiesCount = InhibitorIface.properties.length; this._loadingPropertiesCount = InhibitorIface.properties.length;
@ -94,7 +94,7 @@ Inhibitor.prototype = {
if (this._loadingPropertiesCount == 0) { if (this._loadingPropertiesCount == 0) {
this.isLoaded = true; this.isLoaded = true;
this.emit("is-loaded"); this.emit('is-loaded');
} }
})); }));
} }

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;

View File

@ -1,4 +1,4 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
// parse: // parse:
// @params: caller-provided parameter object, or %null // @params: caller-provided parameter object, or %null

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Main = imports.ui.main; const Main = imports.ui.main;
const Scripting = imports.ui.scripting; const Scripting = imports.ui.scripting;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;
@ -134,11 +134,40 @@ AltTabPopup.prototype = {
} }
}, },
show : function(backward, binding, mask) { _getAppLists: function() {
let tracker = Shell.WindowTracker.get_default();
let appSys = Shell.AppSystem.get_default(); let appSys = Shell.AppSystem.get_default();
let apps = appSys.get_running (); let allApps = appSys.get_running ();
if (!apps.length) let screen = global.screen;
let display = screen.get_display();
let windows = display.get_tab_list(Meta.TabList.NORMAL, screen,
screen.get_active_workspace());
// windows is only the windows on the current workspace. For
// each one, if it corresponds to an app we know, move that
// app from allApps to apps.
let apps = [];
for (let i = 0; i < windows.length && allApps.length != 0; i++) {
let app = tracker.get_window_app(windows[i]);
let index = allApps.indexOf(app);
if (index != -1) {
apps.push(app);
allApps.splice(index, 1);
}
}
// Now @apps is a list of apps on the current workspace, in
// standard Alt+Tab order (MRU except for minimized windows),
// and allApps is a list of apps that only appear on other
// workspaces, sorted by user_time, which is good enough.
return [apps, allApps];
},
show : function(backward, binding, mask) {
let [localApps, otherApps] = this._getAppLists();
if (localApps.length == 0 && otherApps.length == 0)
return false; return false;
if (!Main.pushModal(this.actor)) if (!Main.pushModal(this.actor))
@ -152,7 +181,7 @@ AltTabPopup.prototype = {
this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside)); this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside));
this.actor.connect('scroll-event', Lang.bind(this, this._onScroll)); this.actor.connect('scroll-event', Lang.bind(this, this._onScroll));
this._appSwitcher = new AppSwitcher(apps, this); this._appSwitcher = new AppSwitcher(localApps, otherApps, this);
this.actor.add_actor(this._appSwitcher.actor); this.actor.add_actor(this._appSwitcher.actor);
this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated)); this._appSwitcher.connect('item-activated', Lang.bind(this, this._appActivated));
this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered)); this._appSwitcher.connect('item-entered', Lang.bind(this, this._appEntered));
@ -846,33 +875,32 @@ AppIcon.prototype = {
} }
}; };
function AppSwitcher(apps, altTabPopup) { function AppSwitcher() {
this._init(apps, altTabPopup); this._init.apply(this, arguments);
} }
AppSwitcher.prototype = { AppSwitcher.prototype = {
__proto__ : SwitcherList.prototype, __proto__ : SwitcherList.prototype,
_init : function(apps, altTabPopup) { _init : function(localApps, otherApps, altTabPopup) {
SwitcherList.prototype._init.call(this, true); SwitcherList.prototype._init.call(this, true);
// Construct the AppIcons, sort by time, add to the popup // Construct the AppIcons, add to the popup
let activeWorkspace = global.screen.get_active_workspace(); let activeWorkspace = global.screen.get_active_workspace();
let workspaceIcons = []; let workspaceIcons = [];
let otherIcons = []; let otherIcons = [];
for (let i = 0; i < apps.length; i++) { for (let i = 0; i < localApps.length; i++) {
let appIcon = new AppIcon(apps[i]); let appIcon = new AppIcon(localApps[i]);
// Cache the window list now; we don't handle dynamic changes here, // Cache the window list now; we don't handle dynamic changes here,
// and we don't want to be continually retrieving it // and we don't want to be continually retrieving it
appIcon.cachedWindows = appIcon.app.get_windows(); appIcon.cachedWindows = appIcon.app.get_windows();
if (this._hasWindowsOnWorkspace(appIcon, activeWorkspace)) workspaceIcons.push(appIcon);
workspaceIcons.push(appIcon); }
else for (let i = 0; i < otherApps.length; i++) {
otherIcons.push(appIcon); let appIcon = new AppIcon(otherApps[i]);
appIcon.cachedWindows = appIcon.app.get_windows();
otherIcons.push(appIcon);
} }
workspaceIcons.sort(Lang.bind(this, this._sortAppIcon));
otherIcons.sort(Lang.bind(this, this._sortAppIcon));
this.icons = []; this.icons = [];
this._arrows = []; this._arrows = [];
@ -1012,19 +1040,6 @@ AppSwitcher.prototype = {
if (appIcon.cachedWindows.length == 1) if (appIcon.cachedWindows.length == 1)
arrow.hide(); arrow.hide();
},
_hasWindowsOnWorkspace: function(appIcon, workspace) {
let windows = appIcon.cachedWindows;
for (let i = 0; i < windows.length; i++) {
if (windows[i].get_workspace() == workspace)
return true;
}
return false;
},
_sortAppIcon : function(appIcon1, appIcon2) {
return appIcon1.app.compare(appIcon2.app);
} }
}; };

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -209,10 +209,14 @@ AutomountManager.prototype = {
} }
} }
// Volume is already mounted, don't bother.
if (volume.get_mount())
return;
if (!this._settings.get_boolean(SETTING_ENABLE_AUTOMOUNT) || if (!this._settings.get_boolean(SETTING_ENABLE_AUTOMOUNT) ||
!volume.should_automount() || !volume.should_automount() ||
!volume.can_mount()) { !volume.can_mount()) {
// allow the autorun to run anyway; this can happen if the // allow the autorun to run anyway; this can happen if the
// mount gets added programmatically later, even if // mount gets added programmatically later, even if
// should_automount() or can_mount() are false, like for // should_automount() or can_mount() are false, like for
// blank optical media. // blank optical media.

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -277,7 +277,7 @@ AutorunResidentSource.prototype = {
__proto__: MessageTray.Source.prototype, __proto__: MessageTray.Source.prototype,
_init: function() { _init: function() {
MessageTray.Source.prototype._init.call(this, _('Removable Devices')); MessageTray.Source.prototype._init.call(this, _("Removable Devices"));
this._mounts = []; this._mounts = [];
@ -491,7 +491,7 @@ AutorunTransientDispatcher.prototype = {
let app = null; let app = null;
if (setting == AutorunSetting.RUN) { if (setting == AutorunSetting.RUN) {
app = Gio.app_info_get_default_for_type(type, false); app = Gio.app_info_get_default_for_type(contentTypes[0], false);
} else if (setting == AutorunSetting.FILES) { } else if (setting == AutorunSetting.FILES) {
app = Gio.app_info_get_default_for_type('inode/directory', false); app = Gio.app_info_get_default_for_type('inode/directory', false);
} }

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
@ -46,6 +46,7 @@ BoxPointer.prototype = {
this._yOffset = 0; this._yOffset = 0;
this._xPosition = 0; this._xPosition = 0;
this._yPosition = 0; this._yPosition = 0;
this._sourceAlignment = 0.5;
}, },
show: function(animate, onComplete) { show: function(animate, onComplete) {
@ -75,7 +76,7 @@ BoxPointer.prototype = {
Tweener.addTween(this, { opacity: 255, Tweener.addTween(this, { opacity: 255,
xOffset: 0, xOffset: 0,
yOffset: 0, yOffset: 0,
transition: "linear", transition: 'linear',
onComplete: onComplete, onComplete: onComplete,
time: POPUP_ANIMATION_TIME }); time: POPUP_ANIMATION_TIME });
}, },
@ -106,7 +107,7 @@ BoxPointer.prototype = {
Tweener.addTween(this, { opacity: 0, Tweener.addTween(this, { opacity: 0,
xOffset: xOffset, xOffset: xOffset,
yOffset: yOffset, yOffset: yOffset,
transition: "linear", transition: 'linear',
time: POPUP_ANIMATION_TIME, time: POPUP_ANIMATION_TIME,
onComplete: Lang.bind(this, function () { onComplete: Lang.bind(this, function () {
this.actor.hide(); this.actor.hide();
@ -180,7 +181,7 @@ BoxPointer.prototype = {
this.bin.allocate(childBox, flags); this.bin.allocate(childBox, flags);
if (this._sourceActor && this._sourceActor.mapped) if (this._sourceActor && this._sourceActor.mapped)
this._reposition(this._sourceActor, this._alignment); this._reposition(this._sourceActor, this._arrowAlignment);
}, },
_drawBorder: function(area) { _drawBorder: function(area) {
@ -312,24 +313,37 @@ BoxPointer.prototype = {
this.actor.show(); this.actor.show();
this._sourceActor = sourceActor; this._sourceActor = sourceActor;
this._alignment = alignment; this._arrowAlignment = alignment;
this._reposition(sourceActor, alignment); this._reposition(sourceActor, alignment);
}, },
setSourceAlignment: function(alignment) {
this._sourceAlignment = alignment;
if (!this._sourceActor)
return;
// We need to show it now to force an allocation,
// so that we can query the correct size.
this.actor.show();
this._reposition(this._sourceActor, this._arrowAlignment);
},
_reposition: function(sourceActor, alignment) { _reposition: function(sourceActor, alignment) {
// Position correctly relative to the sourceActor // Position correctly relative to the sourceActor
let sourceNode = sourceActor.get_theme_node(); let sourceNode = sourceActor.get_theme_node();
let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box()); let sourceContentBox = sourceNode.get_content_box(sourceActor.get_allocation_box());
let sourceAllocation = Shell.util_get_transformed_allocation(sourceActor); let sourceAllocation = Shell.util_get_transformed_allocation(sourceActor);
let sourceCenterX = sourceAllocation.x1 + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) / 2; let sourceCenterX = sourceAllocation.x1 + sourceContentBox.x1 + (sourceContentBox.x2 - sourceContentBox.x1) * this._sourceAlignment;
let sourceCenterY = sourceAllocation.y1 + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) / 2; let sourceCenterY = sourceAllocation.y1 + sourceContentBox.y1 + (sourceContentBox.y2 - sourceContentBox.y1) * this._sourceAlignment;
let [minWidth, minHeight, natWidth, natHeight] = this.actor.get_preferred_size(); let [minWidth, minHeight, natWidth, natHeight] = this.actor.get_preferred_size();
// We also want to keep it onscreen, and separated from the // We also want to keep it onscreen, and separated from the
// edge by the same distance as the main part of the box is // edge by the same distance as the main part of the box is
// separated from its sourceActor // separated from its sourceActor
let primary = Main.layoutManager.primaryMonitor; let monitor = Main.layoutManager.findMonitorForActor(sourceActor);
let themeNode = this.actor.get_theme_node(); let themeNode = this.actor.get_theme_node();
let borderWidth = themeNode.get_length('-arrow-border-width'); let borderWidth = themeNode.get_length('-arrow-border-width');
let arrowBase = themeNode.get_length('-arrow-base'); let arrowBase = themeNode.get_length('-arrow-base');
@ -364,8 +378,8 @@ BoxPointer.prototype = {
case St.Side.BOTTOM: case St.Side.BOTTOM:
resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment); resX = sourceCenterX - (halfMargin + (natWidth - margin) * alignment);
resX = Math.max(resX, primary.x + 10); resX = Math.max(resX, monitor.x + 10);
resX = Math.min(resX, primary.x + primary.width - (10 + natWidth)); resX = Math.min(resX, monitor.x + monitor.width - (10 + natWidth));
this.setArrowOrigin(sourceCenterX - resX); this.setArrowOrigin(sourceCenterX - resX);
break; break;
@ -373,8 +387,8 @@ BoxPointer.prototype = {
case St.Side.RIGHT: case St.Side.RIGHT:
resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment); resY = sourceCenterY - (halfMargin + (natHeight - margin) * alignment);
resY = Math.max(resY, primary.y + 10); resY = Math.max(resY, monitor.y + 10);
resY = Math.min(resY, primary.y + primary.height - (10 + natHeight)); resY = Math.min(resY, monitor.y + monitor.height - (10 + natHeight));
this.setArrowOrigin(sourceCenterY - resY); this.setArrowOrigin(sourceCenterY - resY);
break; break;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Folks = imports.gi.Folks const Folks = imports.gi.Folks
const Lang = imports.lang; const Lang = imports.lang;
@ -26,7 +26,8 @@ function Contact(id) {
Contact.prototype = { Contact.prototype = {
_init: function(id) { _init: function(id) {
this.individual = Shell.ContactSystem.get_default().get_individual(id); this._contactSys = Shell.ContactSystem.get_default();
this.individual = this._contactSys.get_individual(id);
this.actor = new St.Bin({ style_class: 'contact', this.actor = new St.Bin({ style_class: 'contact',
reactive: true, reactive: true,
@ -56,7 +57,12 @@ Contact.prototype = {
x_align: St.Align.START, x_align: St.Align.START,
y_align: St.Align.MIDDLE }); y_align: St.Align.MIDDLE });
let aliasText = this.individual.alias || _("Unknown"); let email = this._contactSys.get_email_for_display(this.individual);
let aliasText = this.individual.alias ||
this.individual.full_name ||
this.individual.nickname ||
email ||
_("Unknown");
let aliasLabel = new St.Label({ text: aliasText, let aliasLabel = new St.Label({ text: aliasText,
style_class: 'contact-details-alias' }); style_class: 'contact-details-alias' });
details.add(aliasLabel, { x_fill: true, details.add(aliasLabel, { x_fill: true,

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Signals = imports.signals; const Signals = imports.signals;
@ -37,6 +37,7 @@ DashItemContainer.prototype = {
this.child = null; this.child = null;
this._childScale = 1; this._childScale = 1;
this._childOpacity = 255; this._childOpacity = 255;
this.animatingOut = false;
}, },
_allocate: function(actor, box, flags) { _allocate: function(actor, box, flags) {
@ -115,6 +116,7 @@ DashItemContainer.prototype = {
return; return;
} }
this.animatingOut = true;
this.childScale = 1.0; this.childScale = 1.0;
Tweener.addTween(this, Tweener.addTween(this,
{ childScale: 0.0, { childScale: 0.0,
@ -177,12 +179,6 @@ RemoveFavoriteIcon.prototype = {
this._iconBin._delegate = this; this._iconBin._delegate = this;
this.setChild(this._iconBin); this.setChild(this._iconBin);
this.hiding = false;
},
animateOutAndDestroy: function() {
DashItemContainer.prototype.animateOutAndDestroy.call(this);
this.hiding = true;
}, },
_createIcon: function(size) { _createIcon: function(size) {
@ -314,15 +310,12 @@ Dash.prototype = {
_endDrag: function() { _endDrag: function() {
this._clearDragPlaceholder(); this._clearDragPlaceholder();
if (this._favRemoveTarget) { if (this._favRemoveTarget) {
this._favRemoveTarget.actor.hide();
this._adjustIconSize();
this._favRemoveTarget.actor.show();
this._favRemoveTarget.animateOutAndDestroy(); this._favRemoveTarget.animateOutAndDestroy();
this._favRemoveTarget.actor.connect('destroy', Lang.bind(this, this._favRemoveTarget.actor.connect('destroy', Lang.bind(this,
function() { function() {
this._favRemoveTarget = null; this._favRemoveTarget = null;
})); }));
this._adjustIconSize();
} }
DND.removeDragMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
}, },
@ -401,8 +394,18 @@ Dash.prototype = {
}, },
_adjustIconSize: function() { _adjustIconSize: function() {
let children = this._box.get_children(); // For the icon size, we only consider children which are "proper"
if (children.length == 0) { // icons (i.e. ignoring drag placeholders) and which are not
// animating out (which means they will be destroyed at the end of
// the animation)
let iconChildren = this._box.get_children().filter(function(actor) {
return actor._delegate.child &&
actor._delegate.child._delegate &&
actor._delegate.child._delegate.icon &&
!actor._delegate.animatingOut;
});
if (iconChildren.length == 0) {
this._box.add_style_pseudo_class('empty'); this._box.add_style_pseudo_class('empty');
return; return;
} }
@ -412,23 +415,45 @@ Dash.prototype = {
if (this._maxHeight == -1) if (this._maxHeight == -1)
return; return;
let iconChildren = children.filter(function(actor) {
return actor.visible &&
actor._delegate.child &&
actor._delegate.child._delegate &&
actor._delegate.child._delegate.icon;
});
// Compute the amount of extra space (or missing space) we have let themeNode = this.actor.get_theme_node();
// per icon with the current icon size let maxAllocation = new Clutter.ActorBox({ x1: 0, y1: 0,
let [minHeight, natHeight] = this.actor.get_preferred_height(-1); x2: 42 /* whatever */,
let diff = (this._maxHeight - natHeight) / iconChildren.length; y2: this._maxHeight });
let maxContent = themeNode.get_content_box(maxAllocation);
let availHeight = maxContent.y2 - maxContent.y1;
let spacing = themeNode.get_length('spacing');
let firstIcon = iconChildren[0]._delegate.child._delegate.icon;
let minHeight, natHeight;
// Enforce the current icon size during the size request if
// the icon is animating
if (firstIcon._animating) {
let [currentWidth, currentHeight] = firstIcon.icon.get_size();
firstIcon.icon.set_size(this.iconSize, this.iconSize);
[minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
firstIcon.icon.set_size(currentWidth, currentHeight);
} else {
[minHeight, natHeight] = iconChildren[0].get_preferred_height(-1);
}
// Subtract icon padding and box spacing from the available height
availHeight -= iconChildren.length * (natHeight - this.iconSize) +
(iconChildren.length - 1) * spacing;
let availSize = availHeight / iconChildren.length;
let iconSizes = [ 16, 22, 24, 32, 48, 64 ]; let iconSizes = [ 16, 22, 24, 32, 48, 64 ];
let newIconSize = 16; let newIconSize = 16;
for (let i = 0; i < iconSizes.length; i++) { for (let i = 0; i < iconSizes.length; i++) {
if (iconSizes[i] < this.iconSize + diff) if (iconSizes[i] < availSize)
newIconSize = iconSizes[i]; newIconSize = iconSizes[i];
} }
@ -459,11 +484,15 @@ Dash.prototype = {
icon.icon.set_size(icon.icon.width * scale, icon.icon.set_size(icon.icon.width * scale,
icon.icon.height * scale); icon.icon.height * scale);
icon._animating = true;
Tweener.addTween(icon.icon, Tweener.addTween(icon.icon,
{ width: targetWidth, { width: targetWidth,
height: targetHeight, height: targetHeight,
time: DASH_ANIMATION_TIME, time: DASH_ANIMATION_TIME,
transition: 'easeOutQuad' transition: 'easeOutQuad',
onComplete: function() {
icon._animating = false;
}
}); });
} }
}, },
@ -566,29 +595,7 @@ Dash.prototype = {
this._box.insert_actor(addedItems[i].item.actor, this._box.insert_actor(addedItems[i].item.actor,
addedItems[i].pos); addedItems[i].pos);
// Hide removed actors to not take them into account
// when adjusting the icon size ...
for (let i = 0; i < removedActors.length; i++)
removedActors[i].hide();
// ... and do the same for the remove target if necessary
if (this._favRemoveTarget && this._favRemoveTarget.hiding)
this._favRemoveTarget.actor.hide();
this._adjustIconSize();
if (this._favRemoveTarget && this._favRemoveTarget.hiding)
this._favRemoveTarget.actor.show();
// Skip animations on first run when adding the initial set
// of items, to avoid all items zooming in at once
if (!this._shownInitially) {
this._shownInitially = true;
return;
}
for (let i = 0; i < removedActors.length; i++) { for (let i = 0; i < removedActors.length; i++) {
removedActors[i].show();
let item = removedActors[i]._delegate; let item = removedActors[i]._delegate;
// Don't animate item removal when the overview is hidden // Don't animate item removal when the overview is hidden
@ -598,6 +605,15 @@ Dash.prototype = {
item.actor.destroy(); item.actor.destroy();
} }
this._adjustIconSize();
// Skip animations on first run when adding the initial set
// of items, to avoid all items zooming in at once
if (!this._shownInitially) {
this._shownInitially = true;
return;
}
// Don't animate item addition when the overview is hidden // Don't animate item addition when the overview is hidden
if (!Main.overview.visible) if (!Main.overview.visible)
return; return;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DocInfo = imports.misc.docInfo; const DocInfo = imports.misc.docInfo;
const Params = imports.misc.params; const Params = imports.misc.params;

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2010 Red Hat, Inc * Copyright 2010 Red Hat, Inc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
imports.gi.versions.Clutter = '1.0'; imports.gi.versions.Clutter = '1.0';
imports.gi.versions.Gio = '2.0'; imports.gi.versions.Gio = '2.0';

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;
@ -289,7 +289,7 @@ function loadExtension(dir, enabled, type) {
} }
if (extensions[uuid] != undefined) { if (extensions[uuid] != undefined) {
logExtensionError(uuid, "extension already loaded"); logExtensionError(uuid, 'extension already loaded');
return; return;
} }
@ -450,7 +450,6 @@ function _loadExtensionsIn(dir, type) {
} }
function loadExtensions() { function loadExtensions() {
_loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER);
let systemDataDirs = GLib.get_system_data_dirs(); let systemDataDirs = GLib.get_system_data_dirs();
for (let i = 0; i < systemDataDirs.length; i++) { for (let i = 0; i < systemDataDirs.length; i++) {
let dirPath = systemDataDirs[i] + '/gnome-shell/extensions'; let dirPath = systemDataDirs[i] + '/gnome-shell/extensions';
@ -458,6 +457,7 @@ function loadExtensions() {
if (dir.query_exists(null)) if (dir.query_exists(null))
_loadExtensionsIn(dir, ExtensionType.SYSTEM); _loadExtensionsIn(dir, ExtensionType.SYSTEM);
} }
_loadExtensionsIn(userExtensionsDir, ExtensionType.PER_USER);
} }
function InstallExtensionDialog(uuid, version_tag, name) { function InstallExtensionDialog(uuid, version_tag, name) {

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Caribou = imports.gi.Caribou; const Caribou = imports.gi.Caribou;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
@ -75,7 +75,7 @@ Key.prototype = {
this._extended_keys = this._key.get_extended_keys(); this._extended_keys = this._key.get_extended_keys();
this._extended_keyboard = null; this._extended_keyboard = null;
if (this._key.name == "Control_L" || this._key.name == "Alt_L") if (this._key.name == 'Control_L' || this._key.name == 'Alt_L')
this._key.latch = true; this._key.latch = true;
this._key.connect('key-pressed', Lang.bind(this, function () this._key.connect('key-pressed', Lang.bind(this, function ()
@ -218,7 +218,7 @@ Keyboard.prototype = {
this._redraw(); this._redraw();
}, },
_settingsChanged: function () { _settingsChanged: function (settings, key) {
this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD); this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD);
if (!this._enableKeyboard && !this._keyboard) if (!this._enableKeyboard && !this._keyboard)
return; return;
@ -228,9 +228,20 @@ Keyboard.prototype = {
if (this._keyboard) if (this._keyboard)
this._destroyKeyboard(); this._destroyKeyboard();
if (this._enableKeyboard)
this._setupKeyboard(); if (this._enableKeyboard) {
else // If we've been called because the setting actually just
// changed to true (as opposed to being called from
// this._init()), then we want to pop up the keyboard.
let showKeyboard = (settings != null);
// However, caribou-gtk-module or this._onKeyFocusChanged
// will probably immediately tell us to hide it, so we
// have to fake things out so we'll ignore that request.
if (showKeyboard)
this._timestamp = global.display.get_current_time_roundtrip() + 1;
this._setupKeyboard(showKeyboard);
} else
Main.layoutManager.hideKeyboard(true); Main.layoutManager.hideKeyboard(true);
}, },
@ -246,7 +257,7 @@ Keyboard.prototype = {
this._destroySource(); this._destroySource();
}, },
_setupKeyboard: function() { _setupKeyboard: function(show) {
this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true }); this.actor = new St.BoxLayout({ name: 'keyboard', vertical: true, reactive: true });
Main.layoutManager.keyboardBox.add_actor(this.actor); Main.layoutManager.keyboardBox.add_actor(this.actor);
Main.layoutManager.trackChrome(this.actor); Main.layoutManager.trackChrome(this.actor);
@ -263,20 +274,26 @@ Keyboard.prototype = {
this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged)); this._keyboardNotifyId = this._keyboard.connect('notify::active-group', Lang.bind(this, this._onGroupChanged));
this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged)); this._focusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged));
this._createSource();
if (show)
this.show();
else
this._createSource();
}, },
_onKeyFocusChanged: function () { _onKeyFocusChanged: function () {
let focus = global.stage.key_focus; let focus = global.stage.key_focus;
// Showing an extended key popup will grab focus, but ignore that // Showing an extended key popup and clicking a key from the extended keys
if (focus && focus._extended_keys) // will grab focus, but ignore that
if (focus && (focus._extended_keys || (focus._key && focus._key.extended_key)))
return; return;
let time = global.current_event_time();
if (focus instanceof Clutter.Text) if (focus instanceof Clutter.Text)
this.show(); this.Show(time);
else else
this.hide(); this.Hide(time);
}, },
_addKeys: function () { _addKeys: function () {
@ -305,7 +322,8 @@ Keyboard.prototype = {
}, },
_getTrayIcon: function () { _getTrayIcon: function () {
let trayButton = new St.Button ({ label: "tray", style_class: 'keyboard-key' }); let trayButton = new St.Button ({ label: _("tray"),
style_class: 'keyboard-key' });
trayButton.key_width = 1; trayButton.key_width = 1;
trayButton.connect('button-press-event', Lang.bind(this, function () { trayButton.connect('button-press-event', Lang.bind(this, function () {
Main.messageTray.toggle(); Main.messageTray.toggle();
@ -339,7 +357,7 @@ Keyboard.prototype = {
right_box.add(button.actor); right_box.add(button.actor);
else else
left_box.add(button.actor); left_box.add(button.actor);
if (key.name == "Caribou_Prefs") { if (key.name == 'Caribou_Prefs') {
key.connect('key-released', Lang.bind(this, this.hide)); key.connect('key-released', Lang.bind(this, this.hide));
// Add new key for hiding message tray // Add new key for hiding message tray
@ -476,6 +494,9 @@ Keyboard.prototype = {
// D-Bus methods // D-Bus methods
Show: function(timestamp) { Show: function(timestamp) {
if (!this._enableKeyboard)
return;
if (timestamp - this._timestamp < 0) if (timestamp - this._timestamp < 0)
return; return;
@ -484,6 +505,9 @@ Keyboard.prototype = {
}, },
Hide: function(timestamp) { Hide: function(timestamp) {
if (!this._enableKeyboard)
return;
if (timestamp - this._timestamp < 0) if (timestamp - this._timestamp < 0)
return; return;
@ -492,11 +516,17 @@ Keyboard.prototype = {
}, },
SetCursorLocation: function(x, y, w, h) { SetCursorLocation: function(x, y, w, h) {
this._setLocation(x, y); if (!this._enableKeyboard)
return;
// this._setLocation(x, y);
}, },
SetEntryLocation: function(x, y, w, h) { SetEntryLocation: function(x, y, w, h) {
this._setLocation(x, y); if (!this._enableKeyboard)
return;
// this._setLocation(x, y);
}, },
get Name() { get Name() {

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
@ -45,7 +45,9 @@ LayoutManager.prototype = {
this.trayBox.connect('allocation-changed', this.trayBox.connect('allocation-changed',
Lang.bind(this, this._updateTrayBarrier)); Lang.bind(this, this._updateTrayBarrier));
this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox' }); this.keyboardBox = new St.BoxLayout({ name: 'keyboardBox',
reactive: true,
track_hover: true });
this.addChrome(this.keyboardBox, { visibleInFullscreen: true }); this.addChrome(this.keyboardBox, { visibleInFullscreen: true });
this._keyboardHeightNotifyId = 0; this._keyboardHeightNotifyId = 0;
@ -214,10 +216,10 @@ LayoutManager.prototype = {
let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width; let monitorLeft = monitor.x, monitorRight = monitor.x + monitor.width;
let primaryLeft = primary.x, primaryRight = primary.x + primary.width; let primaryLeft = primary.x, primaryRight = primary.x + primary.width;
if ((monitorLeft >= primaryLeft && monitorLeft <= primaryRight) || if ((monitorLeft >= primaryLeft && monitorLeft < primaryRight) ||
(monitorRight >= primaryLeft && monitorRight <= primaryRight) || (monitorRight > primaryLeft && monitorRight <= primaryRight) ||
(primaryLeft >= monitorLeft && primaryLeft <= monitorRight) || (primaryLeft >= monitorLeft && primaryLeft < monitorRight) ||
(primaryRight >= monitorLeft && primaryRight <= monitorRight)) (primaryRight > monitorLeft && primaryRight <= monitorRight))
return true; return true;
return false; return false;
@ -367,6 +369,10 @@ LayoutManager.prototype = {
// Removes @actor from the chrome // Removes @actor from the chrome
removeChrome: function(actor) { removeChrome: function(actor) {
this._chrome.removeActor(actor); this._chrome.removeActor(actor);
},
findMonitorForActor: function(actor) {
return this._chrome.findMonitorForActor(actor);
} }
}; };
Signals.addSignalMethods(LayoutManager.prototype); Signals.addSignalMethods(LayoutManager.prototype);
@ -619,7 +625,7 @@ Chrome.prototype = {
// We can't use Params.parse here because we want to drop // We can't use Params.parse here because we want to drop
// the extra values like ancestorData.actor // the extra values like ancestorData.actor
for (let prop in defaultParams) { for (let prop in defaultParams) {
if (!params[prop]) if (!params.hasOwnProperty(prop))
params[prop] = ancestorData[prop]; params[prop] = ancestorData[prop];
} }
@ -698,7 +704,7 @@ Chrome.prototype = {
else if (this._inOverview) else if (this._inOverview)
visible = true; visible = true;
else if (!actorData.visibleInFullscreen && else if (!actorData.visibleInFullscreen &&
this._findMonitorForActor(actorData.actor).inFullscreen) this.findMonitorForActor(actorData.actor).inFullscreen)
visible = false; visible = false;
else else
visible = true; visible = true;
@ -760,7 +766,7 @@ Chrome.prototype = {
// This call guarantees that we return some monitor to simplify usage of it // This call guarantees that we return some monitor to simplify usage of it
// In practice all tracked actors should be visible on some monitor anyway // In practice all tracked actors should be visible on some monitor anyway
_findMonitorForActor: function(actor) { findMonitorForActor: function(actor) {
let [x, y] = actor.get_transformed_position(); let [x, y] = actor.get_transformed_position();
let [w, h] = actor.get_transformed_size(); let [w, h] = actor.get_transformed_size();
let monitor = this._findMonitorForRect(x, y, w, h); let monitor = this._findMonitorForRect(x, y, w, h);
@ -819,6 +825,18 @@ Chrome.prototype = {
monitor.inFullscreen = true; monitor.inFullscreen = true;
} }
if (layer == Meta.StackLayer.OVERRIDE_REDIRECT) { if (layer == Meta.StackLayer.OVERRIDE_REDIRECT) {
// Check whether the window is screen sized
let isScreenSized =
(window.x == 0 && window.y == 0 &&
window.width == global.screen_width &&
window.height == global.screen_height);
if (isScreenSized) {
for (let i = 0; i < this._monitors.length; i++)
this._monitors[i].inFullscreen = true;
}
// Or whether it is monitor sized
let monitor = this._findMonitorForWindow(window); let monitor = this._findMonitorForWindow(window);
if (monitor && if (monitor &&
window.x <= monitor.x && window.x <= monitor.x &&

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Meta = imports.gi.Meta; const Meta = imports.gi.Meta;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Cogl = imports.gi.Cogl; const Cogl = imports.gi.Cogl;
@ -17,6 +17,7 @@ const Mainloop = imports.mainloop;
const History = imports.misc.history; const History = imports.misc.history;
const ExtensionSystem = imports.ui.extensionSystem; const ExtensionSystem = imports.ui.extensionSystem;
const Link = imports.ui.link; const Link = imports.ui.link;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -157,9 +158,9 @@ Signals.addSignalMethods(Notebook.prototype);
function objectToString(o) { function objectToString(o) {
if (typeof(o) == typeof(objectToString)) { if (typeof(o) == typeof(objectToString)) {
// special case this since the default is way, way too verbose // special case this since the default is way, way too verbose
return "<js function>"; return '<js function>';
} else { } else {
return "" + o; return '' + o;
} }
} }
@ -322,7 +323,7 @@ ObjInspector.prototype = {
link = new St.Label({ text: '<error>' }); link = new St.Label({ text: '<error>' });
} }
let hbox = new St.BoxLayout(); let hbox = new St.BoxLayout();
let propText = propName + ": " + valueStr; let propText = propName + ': ' + valueStr;
hbox.add(new St.Label({ text: propName + ': ' })); hbox.add(new St.Label({ text: propName + ': ' }));
hbox.add(link); hbox.add(link);
this._container.add_actor(hbox); this._container.add_actor(hbox);
@ -343,7 +344,7 @@ ObjInspector.prototype = {
this.actor.move_anchor_point(Math.floor(sourceX + sourceWidth / 2), this.actor.move_anchor_point(Math.floor(sourceX + sourceWidth / 2),
Math.floor(sourceY + sourceHeight / 2)); Math.floor(sourceY + sourceHeight / 2));
Tweener.addTween(this.actor, { scale_x: 1, scale_y: 1, Tweener.addTween(this.actor, { scale_x: 1, scale_y: 1,
transition: "easeOutQuad", transition: 'easeOutQuad',
time: 0.2 }); time: 0.2 });
} else { } else {
this.actor.set_scale(1, 1); this.actor.set_scale(1, 1);
@ -710,27 +711,23 @@ Extensions.prototype = {
text: meta.description || 'No description' }); text: meta.description || 'No description' });
box.add(description, { expand: true }); box.add(description, { expand: true });
let metaBox = new St.BoxLayout(); let metaBox = new St.BoxLayout({ style_class: 'lg-extension-meta' });
box.add(metaBox); box.add(metaBox);
let stateString = this._stateToString(meta.state); let stateString = this._stateToString(meta.state);
let state = new St.Label({ style_class: 'lg-extension-state', let state = new St.Label({ style_class: 'lg-extension-state',
text: this._stateToString(meta.state) }); text: this._stateToString(meta.state) });
metaBox.add(state);
let actionsContainer = new St.Bin({ x_align: St.Align.END });
metaBox.add(actionsContainer);
let actionsBox = new St.BoxLayout({ style_class: 'lg-extension-actions' });
actionsContainer.set_child(actionsBox);
let viewsource = new Link.Link({ label: _("View Source") }); let viewsource = new Link.Link({ label: _("View Source") });
viewsource.actor._extensionMeta = meta; viewsource.actor._extensionMeta = meta;
viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource)); viewsource.actor.connect('clicked', Lang.bind(this, this._onViewSource));
actionsBox.add(viewsource.actor); metaBox.add(viewsource.actor);
if (meta.url) { if (meta.url) {
let webpage = new Link.Link({ label: _("Web Page") }); let webpage = new Link.Link({ label: _("Web Page") });
webpage.actor._extensionMeta = meta; webpage.actor._extensionMeta = meta;
webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage)); webpage.actor.connect('clicked', Lang.bind(this, this._onWebPage));
actionsBox.add(webpage.actor); metaBox.add(webpage.actor);
} }
return box; return box;
@ -820,6 +817,7 @@ LookingGlass.prototype = {
entryArea.add(label); entryArea.add(label);
this._entry = new St.Entry({ can_focus: true }); this._entry = new St.Entry({ can_focus: true });
ShellEntry.addContextMenu(this._entry);
entryArea.add(this._entry, { expand: true }); entryArea.add(this._entry, { expand: true });
this._windowList = new WindowList(); this._windowList = new WindowList();

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Main = imports.ui.main; const Main = imports.ui.main;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -129,8 +129,6 @@ function _initRecorder() {
function _initUserSession() { function _initUserSession() {
_initRecorder(); _initRecorder();
keyboard.init();
global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1); global.screen.override_workspace_layout(Meta.ScreenCorner.TOPLEFT, false, -1, 1);
ExtensionSystem.init(); ExtensionSystem.init();
@ -496,9 +494,9 @@ function notify(msg, details) {
function notifyError(msg, details) { function notifyError(msg, details) {
// Also print to stderr so it's logged somewhere // Also print to stderr so it's logged somewhere
if (details) if (details)
log("error: " + msg + ": " + details); log('error: ' + msg + ': ' + details);
else else
log("error: " + msg) log('error: ' + msg);
notify(msg, details); notify(msg, details);
} }

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
@ -252,7 +252,8 @@ FocusGrabber.prototype = {
this._prevFocusedWindow = global.display.focus_window; this._prevFocusedWindow = global.display.focus_window;
this._prevKeyFocusActor = global.stage.get_key_focus(); this._prevKeyFocusActor = global.stage.get_key_focus();
if (!Main.overview.visible) if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE ||
global.stage_input_mode == Shell.StageInputMode.NORMAL)
global.set_stage_input_mode(Shell.StageInputMode.FOCUSED); global.set_stage_input_mode(Shell.StageInputMode.FOCUSED);
// Use captured-event to notice clicks outside the focused actor // Use captured-event to notice clicks outside the focused actor
@ -416,6 +417,7 @@ Notification.prototype = {
_init: function(source, title, banner, params) { _init: function(source, title, banner, params) {
this.source = source; this.source = source;
this.title = title;
this.urgency = Urgency.NORMAL; this.urgency = Urgency.NORMAL;
this.resident = false; this.resident = false;
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name // 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
@ -503,8 +505,11 @@ Notification.prototype = {
let oldFocus = global.stage.key_focus; let oldFocus = global.stage.key_focus;
if (this._icon) if (this._icon && (params.icon || params.clear)) {
this._icon.destroy(); this._icon.destroy();
this._icon = null;
}
// We always clear the content area if we don't have custom // We always clear the content area if we don't have custom
// content because it might contain the @banner that didn't // content because it might contain the @banner that didn't
// fit in the banner mode. // fit in the banner mode.
@ -530,14 +535,17 @@ Notification.prototype = {
if (!this._scrollArea && !this._actionArea && !this._imageBin) if (!this._scrollArea && !this._actionArea && !this._imageBin)
this._table.remove_style_class_name('multi-line-notification'); this._table.remove_style_class_name('multi-line-notification');
this._icon = params.icon || this.source.createNotificationIcon(); if (!this._icon) {
this._table.add(this._icon, { row: 0, this._icon = params.icon || this.source.createNotificationIcon();
col: 0, this._table.add(this._icon, { row: 0,
x_expand: false, col: 0,
y_expand: false, x_expand: false,
y_fill: false, y_expand: false,
y_align: St.Align.START }); y_fill: false,
y_align: St.Align.START });
}
this.title = title;
title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : ''; title = title ? _fixMarkup(title.replace(/\n/g, ' '), params.titleMarkup) : '';
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>'); this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
@ -695,6 +703,7 @@ Notification.prototype = {
this._imageBin.opacity = 230; this._imageBin.opacity = 230;
this._table.add_style_class_name('multi-line-notification'); this._table.add_style_class_name('multi-line-notification');
this._table.add_style_class_name('notification-with-image'); this._table.add_style_class_name('notification-with-image');
this._addBannerBody();
this._updateLastColumnSettings(); this._updateLastColumnSettings();
this._table.add(this._imageBin, { row: 1, this._table.add(this._imageBin, { row: 1,
col: 1, col: 1,
@ -1349,6 +1358,7 @@ MessageTray.prototype = {
this._summaryBin.opacity = 0; this._summaryBin.opacity = 0;
this._summaryMotionId = 0; this._summaryMotionId = 0;
this._trayMotionId = 0;
this._summaryBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM, this._summaryBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM,
{ reactive: true, { reactive: true,
@ -1388,12 +1398,15 @@ MessageTray.prototype = {
})); }));
this._focusGrabber.connect('escape-pressed', Lang.bind(this, this._escapeTray)); this._focusGrabber.connect('escape-pressed', Lang.bind(this, this._escapeTray));
Main.layoutManager.keyboardBox.connect('notify::hover', Lang.bind(this, this._onKeyboardHoverChanged));
this._trayState = State.HIDDEN; this._trayState = State.HIDDEN;
this._locked = false; this._locked = false;
this._traySummoned = false; this._traySummoned = false;
this._useLongerTrayLeftTimeout = false; this._useLongerTrayLeftTimeout = false;
this._trayLeftTimeoutId = 0; this._trayLeftTimeoutId = 0;
this._pointerInTray = false; this._pointerInTray = false;
this._pointerInKeyboard = false;
this._summaryState = State.HIDDEN; this._summaryState = State.HIDDEN;
this._summaryTimeoutId = 0; this._summaryTimeoutId = 0;
this._pointerInSummary = false; this._pointerInSummary = false;
@ -1574,7 +1587,7 @@ MessageTray.prototype = {
summaryItemToRemove.actor.destroy(); summaryItemToRemove.actor.destroy();
if (needUpdate); if (needUpdate)
this._updateState(); this._updateState();
}, },
@ -1843,6 +1856,24 @@ MessageTray.prototype = {
} }
}, },
_onKeyboardHoverChanged: function(keyboard) {
this._pointerInKeyboard = keyboard.hover;
if (!keyboard.hover) {
let event = Clutter.get_current_event();
if (event && event.type() == Clutter.EventType.LEAVE) {
let into = event.get_related();
if (into && this.actor.contains(into)) {
// Don't call _updateState, because pointerInTray is
// still false
return;
}
}
}
this._updateState();
},
_onStatusChanged: function(presence, status) { _onStatusChanged: function(presence, status) {
this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status); this._backFromAway = (this._userStatus == GnomeSession.PresenceStatus.IDLE && this._userStatus != status);
this._userStatus = status; this._userStatus = status;
@ -1907,7 +1938,7 @@ MessageTray.prototype = {
let notificationsPending = this._notificationQueue.length > 0 && (!this._busy || notificationUrgent); let notificationsPending = this._notificationQueue.length > 0 && (!this._busy || notificationUrgent);
let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved; let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved;
let notificationExpanded = this._notificationBin.y < 0; let notificationExpanded = this._notificationBin.y < 0;
let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked) || this._notificationRemoved; let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked && !(this._pointerInKeyboard && notificationExpanded)) || this._notificationRemoved;
let canShowNotification = notificationsPending && this._summaryState == State.HIDDEN; let canShowNotification = notificationsPending && this._summaryState == State.HIDDEN;
if (this._notificationState == State.HIDDEN) { if (this._notificationState == State.HIDDEN) {
@ -2265,6 +2296,8 @@ MessageTray.prototype = {
// _clickedSummaryItem.actor can change absolute position without changing allocation // _clickedSummaryItem.actor can change absolute position without changing allocation
this._summaryMotionId = this._summary.connect('allocation-changed', this._summaryMotionId = this._summary.connect('allocation-changed',
Lang.bind(this, this._adjustSummaryBoxPointerPosition)); Lang.bind(this, this._adjustSummaryBoxPointerPosition));
this._trayMotionId = Main.layoutManager.trayBox.connect('notify::anchor-y',
Lang.bind(this, this._adjustSummaryBoxPointerPosition));
this._summaryBoxPointer.actor.opacity = 0; this._summaryBoxPointer.actor.opacity = 0;
this._summaryBoxPointer.actor.show(); this._summaryBoxPointer.actor.show();
@ -2296,8 +2329,10 @@ MessageTray.prototype = {
if (this._clickedSummaryItemAllocationChangedId) { if (this._clickedSummaryItemAllocationChangedId) {
this._clickedSummaryItem.actor.disconnect(this._clickedSummaryItemAllocationChangedId); this._clickedSummaryItem.actor.disconnect(this._clickedSummaryItemAllocationChangedId);
this._summary.disconnect(this._summaryMotionId); this._summary.disconnect(this._summaryMotionId);
Main.layoutManager.trayBox.disconnect(this._trayMotionId);
this._clickedSummaryItemAllocationChangedId = 0; this._clickedSummaryItemAllocationChangedId = 0;
this._summaryMotionId = 0; this._summaryMotionId = 0;
this._trayMotionId = 0;
} }
if (this._clickedSummaryItem) if (this._clickedSummaryItem)
@ -2316,8 +2351,9 @@ MessageTray.prototype = {
} }
this._summaryBoxPointerState = State.HIDING; this._summaryBoxPointerState = State.HIDING;
// Unset this._clickedSummaryItem if we are no longer showing the summary // Unset this._clickedSummaryItem if we are no longer showing the summary or if
if (this._summaryState != State.SHOWN) // this._clickedSummaryItem is still the item associated with the currently showing box pointer
if (this._summaryState != State.SHOWN || this._summaryBoxPointerItem == this._clickedSummaryItem)
this._unsetClickedSummaryItem(); this._unsetClickedSummaryItem();
this._focusGrabber.ungrabFocus(); this._focusGrabber.ungrabFocus();

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2011 Giovanni Campagna <scampa.giovanni@gmail.com> * Copyright 2011 Giovanni Campagna <scampa.giovanni@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -30,6 +30,7 @@ const St = imports.gi.St;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const PopupMenu = imports.ui.popupMenu; const PopupMenu = imports.ui.popupMenu;
const ShellEntry = imports.ui.shellEntry;
function NetworkSecretDialog() { function NetworkSecretDialog() {
this._init.apply(this, arguments); this._init.apply(this, arguments);
@ -103,6 +104,8 @@ NetworkSecretDialog.prototype = {
secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry', secret.entry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
text: secret.value, can_focus: reactive, text: secret.value, can_focus: reactive,
reactive: reactive }); reactive: reactive });
ShellEntry.addContextMenu(secret.entry,
{ isPassword: secret.password });
if (secret.validate) if (secret.validate)
secret.valid = secret.validate(secret); secret.valid = secret.validate(secret);
@ -127,34 +130,14 @@ NetworkSecretDialog.prototype = {
} else } else
secret.valid = true; secret.valid = true;
secretTable.add(label, { row: pos, col: 0, x_align: St.Align.START, y_align: St.Align.START }); secretTable.add(label, { row: pos, col: 0, x_expand: false, x_fill: true, x_align: St.Align.START, y_align: St.Align.START });
secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END }); secretTable.add(secret.entry, { row: pos, col: 1, x_expand: true, x_fill: true, y_align: St.Align.END });
pos++; pos++;
if (secret.password) { if (secret.password)
secret.entry.clutter_text.set_password_char('\u25cf'); secret.entry.clutter_text.set_password_char('\u25cf');
// FIXME: need a real checkbox here
let button = new St.Button({ button_mask: St.ButtonMask.ONE,
can_focus: true });
let checkbox = new St.BoxLayout({ vertical: false,
style_class: 'network-dialog-show-password-checkbox'
});
let _switch = new PopupMenu.Switch(false);
checkbox.add(_switch.actor);
checkbox.add(new St.Label({ text: _("Show password") }), { expand: true });
button.connect('clicked', function() {
_switch.toggle();
if (_switch.state)
secret.entry.clutter_text.set_password_char('');
else
secret.entry.clutter_text.set_password_char('\u25cf');
});
button.child = checkbox;
secretTable.add(button, { row: pos, col: 1, x_expand: true, x_fill: true, y_fill: true })
pos++;
}
} }
messageBox.add(secretTable); messageBox.add(secretTable);
this._okButton = { label: _("Connect"), this._okButton = { label: _("Connect"),
@ -404,4 +387,4 @@ NetworkAgent.prototype = {
this._dialogs[requestId].close(global.get_current_time()); this._dialogs[requestId].close(global.get_current_time());
this._dialogs[requestId].destroy(); this._dialogs[requestId].destroy();
} }
}; };

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -109,6 +109,14 @@ NotificationDaemon.prototype = {
_iconForNotificationData: function(icon, hints, size) { _iconForNotificationData: function(icon, hints, size) {
let textureCache = St.TextureCache.get_default(); let textureCache = St.TextureCache.get_default();
// If an icon is not specified, we use 'image-data' or 'image-path' hint for an icon
// and don't show a large image. There are currently many applications that use
// notify_notification_set_icon_from_pixbuf() from libnotify, which in turn sets
// the 'image-data' hint. These applications don't typically pass in 'app_icon'
// argument to Notify() and actually expect the pixbuf to be shown as an icon.
// So the logic here does the right thing for this case. If both an icon and either
// one of 'image-data' or 'image-path' are specified, we show both an icon and
// a large image.
if (icon) { if (icon) {
if (icon.substr(0, 7) == 'file://') if (icon.substr(0, 7) == 'file://')
return textureCache.load_uri_async(icon, size, size); return textureCache.load_uri_async(icon, size, size);
@ -119,6 +127,12 @@ NotificationDaemon.prototype = {
return new St.Icon({ icon_name: icon, return new St.Icon({ icon_name: icon,
icon_type: St.IconType.FULLCOLOR, icon_type: St.IconType.FULLCOLOR,
icon_size: size }); icon_size: size });
} else if (hints['image-data']) {
let [width, height, rowStride, hasAlpha,
bitsPerSample, nChannels, data] = hints['image-data'];
return textureCache.load_from_raw(data, hasAlpha, width, height, rowStride, size);
} else if (hints['image-path']) {
return textureCache.load_uri_async(GLib.filename_to_uri(hints['image-path'], null), size, size);
} else { } else {
let stockIcon; let stockIcon;
switch (hints.urgency) { switch (hints.urgency) {
@ -330,7 +344,8 @@ NotificationDaemon.prototype = {
clear: true }); clear: true });
} }
if (hints['image-data'] || hints['image-path']) { // We only display a large image if an icon is also specified.
if (icon && (hints['image-data'] || hints['image-path'])) {
let image = null; let image = null;
if (hints['image-data']) { if (hints['image-data']) {
let [width, height, rowStride, hasAlpha, let [width, height, rowStride, hasAlpha,

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Cairo = imports.cairo; const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;

View File

@ -1,5 +1,5 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
* /*
* Copyright 2010 Red Hat, Inc * Copyright 2010 Red Hat, Inc
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@ -33,6 +33,7 @@ const Polkit = imports.gi.Polkit;
const PolkitAgent = imports.gi.PolkitAgent; const PolkitAgent = imports.gi.PolkitAgent;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
function AuthenticationDialog(actionId, message, cookie, userNames) { function AuthenticationDialog(actionId, message, cookie, userNames) {
this._init(actionId, message, cookie, userNames); this._init(actionId, message, cookie, userNames);
@ -139,6 +140,7 @@ AuthenticationDialog.prototype = {
this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry', this._passwordEntry = new St.Entry({ style_class: 'polkit-dialog-password-entry',
text: "", text: "",
can_focus: true}); can_focus: true});
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate)); this._passwordEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivate));
this._passwordBox.add(this._passwordEntry, this._passwordBox.add(this._passwordEntry,
{expand: true }); {expand: true });

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Cairo = imports.cairo; const Cairo = imports.cairo;
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
@ -320,10 +320,14 @@ PopupBaseMenuItem.prototype = {
} }
extraWidth = availWidth - naturalWidth; extraWidth = availWidth - naturalWidth;
} else { } else {
if (child.span == -1) if (child.span == -1) {
availWidth = box.x2 - x; if (direction == St.TextDirection.LTR)
else availWidth = box.x2 - x;
else
availWidth = x - box.x1;
} else {
availWidth = naturalWidth; availWidth = naturalWidth;
}
extraWidth = 0; extraWidth = 0;
} }
@ -1138,10 +1142,10 @@ function PopupMenu() {
PopupMenu.prototype = { PopupMenu.prototype = {
__proto__: PopupMenuBase.prototype, __proto__: PopupMenuBase.prototype,
_init: function(sourceActor, alignment, arrowSide) { _init: function(sourceActor, arrowAlignment, arrowSide) {
PopupMenuBase.prototype._init.call (this, sourceActor, 'popup-menu-content'); PopupMenuBase.prototype._init.call (this, sourceActor, 'popup-menu-content');
this._alignment = alignment; this._arrowAlignment = arrowAlignment;
this._arrowSide = arrowSide; this._arrowSide = arrowSide;
this._boxPointer = new BoxPointer.BoxPointer(arrowSide, this._boxPointer = new BoxPointer.BoxPointer(arrowSide,
@ -1194,13 +1198,17 @@ PopupMenu.prototype = {
this._boxPointer.setArrowOrigin(origin); this._boxPointer.setArrowOrigin(origin);
}, },
setSourceAlignment: function(alignment) {
this._boxPointer.setSourceAlignment(alignment);
},
open: function(animate) { open: function(animate) {
if (this.isOpen) if (this.isOpen)
return; return;
this.isOpen = true; this.isOpen = true;
this._boxPointer.setPosition(this.sourceActor, this._alignment); this._boxPointer.setPosition(this.sourceActor, this._arrowAlignment);
this._boxPointer.show(animate); this._boxPointer.show(animate);
this.actor.raise_top(); this.actor.raise_top();

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
@ -12,6 +12,7 @@ const Signals = imports.signals;
const FileUtils = imports.misc.fileUtils; const FileUtils = imports.misc.fileUtils;
const Main = imports.ui.main; const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
const Util = imports.misc.util; const Util = imports.misc.util;
const History = imports.misc.history; const History = imports.misc.history;
@ -210,6 +211,7 @@ __proto__: ModalDialog.ModalDialog.prototype,
this.contentLayout.add(label, { y_align: St.Align.START }); this.contentLayout.add(label, { y_align: St.Align.START });
let entry = new St.Entry({ style_class: 'run-dialog-entry' }); let entry = new St.Entry({ style_class: 'run-dialog-entry' });
ShellEntry.addContextMenu(entry);
this._entryText = entry.clutter_text; this._entryText = entry.clutter_text;
this.contentLayout.add(entry, { y_align: St.Align.START }); this.contentLayout.add(entry, { y_align: St.Align.START });

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Lang = imports.lang; const Lang = imports.lang;

173
js/ui/shellEntry.js Normal file
View File

@ -0,0 +1,173 @@
const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const St = imports.gi.St;
const Main = imports.ui.main;
const Params = imports.misc.params;
const PopupMenu = imports.ui.popupMenu;
function _EntryMenu(entry, params) {
this._init(entry, params);
};
_EntryMenu.prototype = {
__proto__: PopupMenu.PopupMenu.prototype,
_init: function(entry, params) {
params = Params.parse (params, { isPassword: false });
PopupMenu.PopupMenu.prototype._init.call(this, entry, 0, St.Side.TOP);
this.actor.add_style_class_name('entry-context-menu');
this._entry = entry;
this._clipboard = St.Clipboard.get_default();
// Populate menu
let item;
item = new PopupMenu.PopupMenuItem(_("Copy"));
item.connect('activate', Lang.bind(this, this._onCopyActivated));
this.addMenuItem(item);
this._copyItem = item;
item = new PopupMenu.PopupMenuItem(_("Paste"));
item.connect('activate', Lang.bind(this, this._onPasteActivated));
this.addMenuItem(item);
this._pasteItem = item;
this._passwordItem = null;
if (params.isPassword) {
item = new PopupMenu.PopupMenuItem('');
item.connect('activate', Lang.bind(this,
this._onPasswordActivated));
this.addMenuItem(item);
this._passwordItem = item;
}
Main.uiGroup.add_actor(this.actor);
this.actor.hide();
},
open: function() {
this._updatePasteItem();
this._updateCopyItem();
if (this._passwordItem)
this._updatePasswordItem();
let direction = Gtk.DirectionType.TAB_FORWARD;
if (!this.actor.navigate_focus(null, direction, false))
this.actor.grab_key_focus();
PopupMenu.PopupMenu.prototype.open.call(this);
},
_updateCopyItem: function() {
let selection = this._entry.clutter_text.get_selection();
this._copyItem.setSensitive(selection && selection != '');
},
_updatePasteItem: function() {
this._clipboard.get_text(Lang.bind(this,
function(clipboard, text) {
this._pasteItem.setSensitive(text && text != '');
}));
},
_updatePasswordItem: function() {
let textHidden = (this._entry.clutter_text.password_char);
if (textHidden)
this._passwordItem.label.set_text(_("Show Text"));
else
this._passwordItem.label.set_text(_("Hide Text"));
},
_onCopyActivated: function() {
let selection = this._entry.clutter_text.get_selection();
this._clipboard.set_text(selection);
},
_onPasteActivated: function() {
this._clipboard.get_text(Lang.bind(this,
function(clipboard, text) {
if (!text)
return;
this._entry.clutter_text.delete_selection();
let pos = this._entry.clutter_text.get_cursor_position();
this._entry.clutter_text.insert_text(text, pos);
}));
},
_onPasswordActivated: function() {
let visible = !!(this._entry.clutter_text.password_char);
this._entry.clutter_text.set_password_char(visible ? '' : '\u25cf');
}
};
function _setMenuAlignment(entry, stageX) {
let [success, entryX, entryY] = entry.transform_stage_point(stageX, 0);
if (success)
entry._menu.setSourceAlignment(entryX / entry.width);
};
function _onClicked(action, actor) {
let entry = actor._menu ? actor : actor.get_parent();
if (entry._menu.isOpen) {
entry._menu.close();
} else if (action.get_button() == 3) {
let [stageX, stageY] = action.get_coords();
_setMenuAlignment(entry, stageX);
entry._menu.open();
}
};
function _onLongPress(action, actor, state) {
let entry = actor._menu ? actor : actor.get_parent();
if (state == Clutter.LongPressState.QUERY)
return action.get_button() == 1 && !entry._menu.isOpen;
if (state == Clutter.LongPressState.ACTIVATE) {
let [stageX, stageY] = action.get_coords();
_setMenuAlignment(entry, stageX);
entry._menu.open();
}
return false;
};
function _onPopup(actor) {
let entry = actor._menu ? actor : actor.get_parent();
let [success, textX, textY, lineHeight] = entry.clutter_text.position_to_coords(-1);
if (success)
entry._menu.setSourceAlignment(textX / entry.width);
entry._menu.open();
};
function addContextMenu(entry, params) {
if (entry._menu)
return;
entry._menu = new _EntryMenu(entry, params);
entry._menuManager = new PopupMenu.PopupMenuManager({ actor: entry });
entry._menuManager.addMenu(entry._menu);
let clickAction;
// Add a click action to both the entry and its clutter_text; the former
// so padding is included in the clickable area, the latter because the
// event processing of ClutterText prevents event-bubbling.
clickAction = new Clutter.ClickAction();
clickAction.connect('clicked', _onClicked);
clickAction.connect('long-press', _onLongPress);
entry.clutter_text.add_action(clickAction);
clickAction = new Clutter.ClickAction();
clickAction.connect('clicked', _onClicked);
clickAction.connect('long-press', _onLongPress);
entry.add_action(clickAction);
entry.connect('popup-menu', _onPopup);
}

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Signals = imports.signals; const Signals = imports.signals;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const GConf = imports.gi.GConf; const GConf = imports.gi.GConf;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gdk = imports.gi.Gdk; const Gdk = imports.gi.Gdk;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GdkPixbuf = imports.gi.GdkPixbuf; const GdkPixbuf = imports.gi.GdkPixbuf;

View File

@ -1,4 +1,4 @@
// -*- mode: js2; indent-tabs-mode: nil; js2-basic-offset: 4 -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const ByteArray = imports.byteArray; const ByteArray = imports.byteArray;
const DBus = imports.dbus; const DBus = imports.dbus;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -43,8 +43,8 @@ const UPDeviceState = {
const PowerManagerInterface = { const PowerManagerInterface = {
name: 'org.gnome.SettingsDaemon.Power', name: 'org.gnome.SettingsDaemon.Power',
methods: [ methods: [
{ name: 'GetDevices', inSignature: '', outSignature: 'a(susbut)' }, { name: 'GetDevices', inSignature: '', outSignature: 'a(susdut)' },
{ name: 'GetPrimaryDevice', inSignature: '', outSignature: '(susbut)' }, { name: 'GetPrimaryDevice', inSignature: '', outSignature: '(susdut)' },
], ],
signals: [ signals: [
{ name: 'Changed', inSignature: '' }, { name: 'Changed', inSignature: '' },
@ -155,7 +155,7 @@ Indicator.prototype = {
_devicesChanged: function() { _devicesChanged: function() {
this._proxy.GetRemote('Icon', Lang.bind(this, function(icon, error) { this._proxy.GetRemote('Icon', Lang.bind(this, function(icon, error) {
if (icon) { if (icon) {
let gicon = Shell.util_icon_from_string (icon); let gicon = Gio.icon_new_for_string(icon);
this.setGIcon(gicon); this.setGIcon(gicon);
this.actor.show(); this.actor.show();
} else { } else {
@ -183,7 +183,7 @@ DeviceItem.prototype = {
this._box = new St.BoxLayout({ style_class: 'popup-device-menu-item' }); this._box = new St.BoxLayout({ style_class: 'popup-device-menu-item' });
this._label = new St.Label({ text: this._deviceTypeToString(device_type) }); this._label = new St.Label({ text: this._deviceTypeToString(device_type) });
this._icon = new St.Icon({ gicon: Shell.util_icon_from_string(icon), this._icon = new St.Icon({ gicon: Gio.icon_new_for_string(icon),
icon_type: St.IconType.SYMBOLIC, icon_type: St.IconType.SYMBOLIC,
style_class: 'popup-menu-icon' }); style_class: 'popup-menu-icon' });

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const DBus = imports.dbus; const DBus = imports.dbus;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const DBus = imports.dbus; const DBus = imports.dbus;
const Gio = imports.gi.Gio; const Gio = imports.gi.Gio;
@ -257,7 +257,7 @@ Client.prototype = {
// FIXME: We don't have a 'chat room' icon (bgo #653737) use // 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.
let source = new ApproverSource(dispatchOp, _("Invitation"), let source = new ApproverSource(dispatchOp, _("Invitation"),
Shell.util_icon_from_string('system-users')); Gio.icon_new_for_string('system-users'));
Main.messageTray.add(source); Main.messageTray.add(source);
let notif = new RoomInviteNotification(source, dispatchOp, channel, contacts[0]); let notif = new RoomInviteNotification(source, dispatchOp, channel, contacts[0]);
@ -305,6 +305,8 @@ Client.prototype = {
Shell.get_tp_contacts(conn, [targetHandle], Shell.get_tp_contacts(conn, [targetHandle],
contactFeatures, contactFeatures,
Lang.bind(this, this._createAudioVideoSource, channel, context, dispatchOp)); Lang.bind(this, this._createAudioVideoSource, channel, context, dispatchOp));
context.delay();
}, },
_createAudioVideoSource: function(connection, contacts, failed, channel, context, dispatchOp) { _createAudioVideoSource: function(connection, contacts, failed, channel, context, dispatchOp) {
@ -323,8 +325,8 @@ Client.prototype = {
// We got the TpContact // We got the TpContact
let source = new ApproverSource(dispatchOp, _("Call"), isVideo ? let source = new ApproverSource(dispatchOp, _("Call"), isVideo ?
Shell.util_icon_from_string('camera-web') : Gio.icon_new_for_string('camera-web') :
Shell.util_icon_from_string('audio-input-microphone')); Gio.icon_new_for_string('audio-input-microphone'));
Main.messageTray.add(source); Main.messageTray.add(source);
let notif = new AudioVideoNotification(source, dispatchOp, channel, contacts[0], isVideo); let notif = new AudioVideoNotification(source, dispatchOp, channel, contacts[0], isVideo);
@ -338,6 +340,8 @@ Client.prototype = {
Shell.get_tp_contacts(conn, [targetHandle], Shell.get_tp_contacts(conn, [targetHandle],
contactFeatures, contactFeatures,
Lang.bind(this, this._createFileTransferSource, channel, context, dispatchOp)); Lang.bind(this, this._createFileTransferSource, channel, context, dispatchOp));
context.delay();
}, },
_createFileTransferSource: function(connection, contacts, failed, channel, context, dispatchOp) { _createFileTransferSource: function(connection, contacts, failed, channel, context, dispatchOp) {
@ -535,21 +539,18 @@ ChatSource.prototype = {
_updateAlias: function() { _updateAlias: function() {
let oldAlias = this.title; let oldAlias = this.title;
this.setTitle(this._contact.get_alias()); let newAlias = this._contact.get_alias();
this._notification.appendAliasChange(oldAlias, this.title);
this.pushNotification(this._notification); if (oldAlias == newAlias)
return;
this.setTitle(newAlias);
this._notification.appendAliasChange(oldAlias, newAlias);
}, },
createNotificationIcon: function() { createNotificationIcon: function() {
this._iconBox = new St.Bin({ style_class: 'avatar-box' }); this._iconBox = new St.Bin({ style_class: 'avatar-box' });
this._iconBox._size = this.ICON_SIZE; this._iconBox._size = this.ICON_SIZE;
this._updateAvatarIcon();
return this._iconBox;
},
_updateAvatarIcon: function() {
let textureCache = St.TextureCache.get_default(); let textureCache = St.TextureCache.get_default();
let file = this._contact.get_avatar_file(); let file = this._contact.get_avatar_file();
@ -561,12 +562,19 @@ ChatSource.prototype = {
icon_type: St.IconType.FULLCOLOR, icon_type: St.IconType.FULLCOLOR,
icon_size: this._iconBox._size }); icon_size: this._iconBox._size });
} }
return this._iconBox;
},
_updateAvatarIcon: function() {
this._setSummaryIcon(this.createNotificationIcon());
this._notification.update(this._notification.title, null, { customContent: true, icon: this.createNotificationIcon() });
}, },
open: function(notification) { open: function(notification) {
if (this._client.is_handling_channel(this._channel)) { if (this._client.is_handling_channel(this._channel)) {
// We are handling the channel, try to pass it to Empathy // We are handling the channel, try to pass it to Empathy
this._client.delegate_channels_async([this._channel], global.get_current_time(), "", null); this._client.delegate_channels_async([this._channel], global.get_current_time(), '', null);
} }
else { else {
// We are not the handler, just ask to present the channel // We are not the handler, just ask to present the channel
@ -1194,6 +1202,7 @@ AudioVideoNotification.prototype = {
this.setResident(true); this.setResident(true);
this.addButton('reject', _("Reject")); this.addButton('reject', _("Reject"));
/* translators: this is a button label (verb), not a noun */
this.addButton('answer', _("Answer")); this.addButton('answer', _("Answer"));
this.connect('action-invoked', Lang.bind(this, function(self, action) { this.connect('action-invoked', Lang.bind(this, function(self, action) {

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const AccountsService = imports.gi.AccountsService; const AccountsService = imports.gi.AccountsService;
const DBus = imports.dbus; const DBus = imports.dbus;
@ -158,22 +158,29 @@ IMStatusChooserItem.prototype = {
Lang.bind(this, this._changeIMStatus)); Lang.bind(this, this._changeIMStatus));
this._presence = new GnomeSession.Presence(); this._presence = new GnomeSession.Presence();
this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged));
this._presence.connect('StatusChanged', this._presence.connect('StatusChanged',
Lang.bind(this, this._sessionStatusChanged)); Lang.bind(this, this._sessionStatusChanged));
this._sessionPresenceRestored = false;
this._imPresenceRestored = false;
this._currentPresence = undefined; this._currentPresence = undefined;
this._previousPresence = undefined;
this._accountMgr = Tp.AccountManager.dup() this._accountMgr = Tp.AccountManager.dup()
this._accountMgr.connect('most-available-presence-changed', this._accountMgr.connect('most-available-presence-changed',
Lang.bind(this, this._IMStatusChanged)); Lang.bind(this, this._IMStatusChanged));
this._accountMgr.prepare_async(null, Lang.bind(this, this._accountMgr.prepare_async(null, Lang.bind(this,
function(mgr) { function(mgr) {
let [presence, s, msg] = mgr.get_most_available_presence(); let [presence, status, msg] = mgr.get_most_available_presence();
this._previousPresence = presence; let savedPresence = global.settings.get_int('saved-im-presence');
this._IMStatusChanged(mgr, presence, s, msg); if (savedPresence == presence) {
this._IMStatusChanged(mgr, presence, status, msg);
} else {
this._setComboboxPresence(savedPresence);
status = this._statusForPresence(savedPresence);
msg = msg ? msg : '';
mgr.set_all_requested_presences(savedPresence, status, msg);
}
})); }));
this._userManager = AccountsService.UserManager.get_default(); this._userManager = AccountsService.UserManager.get_default();
@ -261,19 +268,35 @@ IMStatusChooserItem.prototype = {
}, },
_IMStatusChanged: function(accountMgr, presence, status, message) { _IMStatusChanged: function(accountMgr, presence, status, message) {
if (!this._imPresenceRestored)
this._imPresenceRestored = true;
if (presence == this._currentPresence) if (presence == this._currentPresence)
return; return;
this._currentPresence = presence; this._currentPresence = presence;
this._setComboboxPresence(presence);
if (!this._sessionPresenceRestored) {
this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged));
return;
}
if (presence == Tp.ConnectionPresenceType.AVAILABLE) if (presence == Tp.ConnectionPresenceType.AVAILABLE)
this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE); this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE);
if (!this._expectedPresence || presence != this._expectedPresence) // We ignore the actual value of _expectedPresence and never safe
this._previousPresence = presence; // the first presence change after an "automatic" change, assuming
// that it is the response to our request; this is to account for
// mission control falling back to "similar" presences if an account
// type does not implement the requested presence.
if (!this._expectedPresence)
global.settings.set_int('saved-im-presence', presence);
else else
this._expectedPresence = undefined; this._expectedPresence = undefined;
},
_setComboboxPresence: function(presence) {
let activatedItem; let activatedItem;
if (presence == Tp.ConnectionPresenceType.AVAILABLE) if (presence == Tp.ConnectionPresenceType.AVAILABLE)
@ -310,13 +333,16 @@ IMStatusChooserItem.prototype = {
return; return;
status = this._statusForPresence(newPresence); status = this._statusForPresence(newPresence);
msg = msg ? msg : ""; msg = msg ? msg : '';
this._accountMgr.set_all_requested_presences(newPresence, status, msg); this._accountMgr.set_all_requested_presences(newPresence, status, msg);
}, },
getIMPresenceForSessionStatus: function(sessionStatus) { getIMPresenceForSessionStatus: function(sessionStatus) {
// Restore the last user-set presence when coming back from
// BUSY/IDLE (otherwise the last user-set presence matches
// the current one)
if (sessionStatus == GnomeSession.PresenceStatus.AVAILABLE) if (sessionStatus == GnomeSession.PresenceStatus.AVAILABLE)
return this._previousPresence; return global.settings.get_int('saved-im-presence');
if (sessionStatus == GnomeSession.PresenceStatus.BUSY) { if (sessionStatus == GnomeSession.PresenceStatus.BUSY) {
// Only change presence if the current one is "more present" than // Only change presence if the current one is "more present" than
@ -337,6 +363,20 @@ IMStatusChooserItem.prototype = {
}, },
_sessionStatusChanged: function(sessionPresence, sessionStatus) { _sessionStatusChanged: function(sessionPresence, sessionStatus) {
if (!this._imPresenceRestored)
return;
if (!this._sessionPresenceRestored) {
let savedStatus = global.settings.get_int('saved-session-presence');
if (sessionStatus != savedStatus) {
this._presence.setStatus(savedStatus);
return;
}
this._sessionPresenceRestored = true;
}
global.settings.set_int('saved-session-presence', sessionStatus);
let [presence, s, msg] = this._accountMgr.get_most_available_presence(); let [presence, s, msg] = this._accountMgr.get_most_available_presence();
let newPresence, status; let newPresence, status;
@ -346,7 +386,7 @@ IMStatusChooserItem.prototype = {
return; return;
status = this._statusForPresence(newPresence); status = this._statusForPresence(newPresence);
msg = msg ? msg : ""; msg = msg ? msg : '';
this._expectedPresence = newPresence; this._expectedPresence = newPresence;
this._accountMgr.set_all_requested_presences(newPresence, status, msg); this._accountMgr.set_all_requested_presences(newPresence, status, msg);

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Gtk = imports.gi.Gtk; const Gtk = imports.gi.Gtk;
@ -12,6 +12,7 @@ const St = imports.gi.St;
const Main = imports.ui.main; const Main = imports.ui.main;
const Search = imports.ui.search; const Search = imports.ui.search;
const SearchDisplay = imports.ui.searchDisplay; const SearchDisplay = imports.ui.searchDisplay;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener; const Tweener = imports.ui.tweener;
function BaseTab(titleActor, pageActor, name, a11yIcon) { function BaseTab(titleActor, pageActor, name, a11yIcon) {
@ -120,6 +121,7 @@ SearchTab.prototype = {
hint_text: _("Type to search..."), hint_text: _("Type to search..."),
track_hover: true, track_hover: true,
can_focus: true }); can_focus: true });
ShellEntry.addContextMenu(this._entry);
this._text = this._entry.clutter_text; this._text = this._entry.clutter_text;
this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress)); this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress));
@ -289,9 +291,11 @@ SearchTab.prototype = {
_onCapturedEvent: function(actor, event) { _onCapturedEvent: function(actor, event) {
if (event.type() == Clutter.EventType.BUTTON_PRESS) { if (event.type() == Clutter.EventType.BUTTON_PRESS) {
let source = event.get_source(); let source = event.get_source();
if (source != this._text && this._text.text == '') { if (source != this._text && this._text.text == '' &&
!Main.layoutManager.keyboardBox.contains(source)) {
// the user clicked outside after activating the entry, but // the user clicked outside after activating the entry, but
// with no search term entered - cancel the search // with no search term entered and no keyboard button pressed
// - cancel the search
this._reset(); this._reset();
} }
} }

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Lang = imports.lang; const Lang = imports.lang;
const Shell = imports.gi.Shell; const Shell = imports.gi.Shell;
@ -12,35 +12,10 @@ function WindowAttentionHandler() {
WindowAttentionHandler.prototype = { WindowAttentionHandler.prototype = {
_init : function() { _init : function() {
this._startupIds = {};
this._tracker = Shell.WindowTracker.get_default(); this._tracker = Shell.WindowTracker.get_default();
this._tracker.connect('startup-sequence-changed', Lang.bind(this, this._onStartupSequenceChanged));
global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention)); global.display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention));
}, },
_onStartupSequenceChanged : function(tracker) {
let sequences = tracker.get_startup_sequences();
this._startupIds = {};
for(let i = 0; i < sequences.length; i++) {
this._startupIds[sequences[i].get_id()] = true;
}
},
_getTitle : function(app, window) {
if (this._startupIds[window.get_startup_id()])
return app.get_name();
else
return window.title;
},
_getBanner : function(app, window) {
if (this._startupIds[window.get_startup_id()])
return _("%s has finished starting").format(app.get_name());
else
return _("'%s' is ready").format(window.title);
},
_onWindowDemandsAttention : function(display, window) { _onWindowDemandsAttention : function(display, window) {
// We don't want to show the notification when the window is already focused, // We don't want to show the notification when the window is already focused,
// because this is rather pointless. // because this is rather pointless.
@ -57,12 +32,16 @@ WindowAttentionHandler.prototype = {
let source = new Source(app, window); let source = new Source(app, window);
Main.messageTray.add(source); Main.messageTray.add(source);
let notification = new MessageTray.Notification(source, this._getTitle(app, window), this._getBanner(app, window)); let banner = _("'%s' is ready").format(window.title);
let title = app.get_name();
let notification = new MessageTray.Notification(source, title, banner);
source.notify(notification); source.notify(notification);
source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function(win) { source.signalIDs.push(window.connect('notify::title',
notification.update(this._getTitle(app, win), this._getBanner(app, win)); Lang.bind(this, function() {
}))); notification.update(title, banner);
})));
} }
}; };

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
@ -37,28 +37,36 @@ function WindowDimmer(actor) {
WindowDimmer.prototype = { WindowDimmer.prototype = {
_init: function(actor) { _init: function(actor) {
this.effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER }); if (Clutter.feature_available(Clutter.FeatureFlags.SHADERS_GLSL)) {
this.effect.set_shader_source(getDimShaderSource()); this._effect = new Clutter.ShaderEffect({ shader_type: Clutter.ShaderType.FRAGMENT_SHADER });
this._effect.set_shader_source(getDimShaderSource());
} else {
this._effect = null;
}
this.actor = actor; this.actor = actor;
}, },
set dimFraction(fraction) { set dimFraction(fraction) {
this._dimFraction = fraction; this._dimFraction = fraction;
if (this._effect == null)
return;
if (!Meta.prefs_get_attach_modal_dialogs()) { if (!Meta.prefs_get_attach_modal_dialogs()) {
this.effect.enabled = false; this._effect.enabled = false;
return; return;
} }
if (fraction > 0.01) { if (fraction > 0.01) {
Shell.shader_effect_set_double_uniform(this.effect, 'height', this.actor.get_height()); Shell.shader_effect_set_double_uniform(this._effect, 'height', this.actor.get_height());
Shell.shader_effect_set_double_uniform(this.effect, 'fraction', fraction); Shell.shader_effect_set_double_uniform(this._effect, 'fraction', fraction);
if (!this.effect.actor) if (!this._effect.actor)
this.actor.add_effect(this.effect); this.actor.add_effect(this._effect);
} else { } else {
if (this.effect.actor) if (this._effect.actor)
this.actor.remove_effect(this.effect); this.actor.remove_effect(this._effect);
} }
}, },

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const GConf = imports.gi.GConf; const GConf = imports.gi.GConf;
@ -135,8 +135,11 @@ WindowClone.prototype = {
this._realWindowDestroyId = this.realWindow.connect('destroy', this._realWindowDestroyId = this.realWindow.connect('destroy',
Lang.bind(this, this._disconnectRealWindowSignals)); Lang.bind(this, this._disconnectRealWindowSignals));
this.actor.connect('button-release-event', let clickAction = new Clutter.ClickAction();
Lang.bind(this, this._onButtonRelease)); clickAction.connect('clicked', Lang.bind(this, this._onClicked));
clickAction.connect('long-press', Lang.bind(this, this._onLongPress));
this.actor.add_action(clickAction);
this.actor.connect('scroll-event', this.actor.connect('scroll-event',
Lang.bind(this, this._onScroll)); Lang.bind(this, this._onScroll));
@ -147,6 +150,7 @@ WindowClone.prototype = {
this._draggable = DND.makeDraggable(this.actor, this._draggable = DND.makeDraggable(this.actor,
{ restoreOnSuccess: true, { restoreOnSuccess: true,
manualMode: true,
dragActorMaxSize: WINDOW_DND_SIZE, dragActorMaxSize: WINDOW_DND_SIZE,
dragActorOpacity: DRAGGING_WINDOW_OPACITY }); dragActorOpacity: DRAGGING_WINDOW_OPACITY });
this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin)); this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin));
@ -345,9 +349,27 @@ WindowClone.prototype = {
this._zoomStep = undefined; this._zoomStep = undefined;
}, },
_onButtonRelease : function (actor, event) { _onClicked: function(action, actor) {
this._selected = true; this._selected = true;
this.emit('selected', event.get_time()); this.emit('selected', global.get_current_time());
},
_onLongPress: function(action, actor, state) {
// Take advantage of the Clutter policy to consider
// a long-press canceled when the pointer movement
// exceeds dnd-drag-threshold to manually start the drag
if (state == Clutter.LongPressState.CANCEL) {
// A click cancels a long-press before any click handler is
// run - make sure to not start a drag in that case
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
function() {
if (this._selected)
return;
let [x, y] = action.get_coords();
this._draggable.startDrag(x, y, global.get_current_time());
}));
}
return true;
}, },
_onDragBegin : function (draggable, time) { _onDragBegin : function (draggable, time) {

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;
@ -109,8 +109,6 @@ WorkspacesView.prototype = {
this._scrollAdjustment.connect('notify::value', this._scrollAdjustment.connect('notify::value',
Lang.bind(this, this._onScroll)); Lang.bind(this, this._onScroll));
this._timeoutId = 0;
this._switchWorkspaceNotifyId = this._switchWorkspaceNotifyId =
global.window_manager.connect('switch-workspace', global.window_manager.connect('switch-workspace',
Lang.bind(this, this._activeWorkspaceChanged)); Lang.bind(this, this._activeWorkspaceChanged));
@ -321,10 +319,6 @@ WorkspacesView.prototype = {
if (this._inDrag) if (this._inDrag)
this._dragEnd(); this._dragEnd();
if (this._timeoutId) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
if (this._itemDragBeginId > 0) { if (this._itemDragBeginId > 0) {
Main.overview.disconnect(this._itemDragBeginId); Main.overview.disconnect(this._itemDragBeginId);
this._itemDragBeginId = 0; this._itemDragBeginId = 0;
@ -383,72 +377,10 @@ WorkspacesView.prototype = {
this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate); this._extraWorkspaces[i].setReservedSlot(dragEvent.dragActor._delegate);
} }
let primary = Main.layoutManager.primaryMonitor; return DND.DragMotionResult.CONTINUE;
let activeWorkspaceIndex = global.screen.get_active_workspace_index();
let topWorkspace, bottomWorkspace;
topWorkspace = this._workspaces[activeWorkspaceIndex - 1];
bottomWorkspace = this._workspaces[activeWorkspaceIndex + 1];
let hoverWorkspace = null;
// reactive monitor edges
let topEdge = primary.y;
let switchTop = (dragEvent.y <= topEdge && topWorkspace);
if (switchTop && this._dragOverLastY != topEdge) {
topWorkspace.metaWorkspace.activate(global.get_current_time());
this._dragOverLastY = topEdge;
return DND.DragMotionResult.CONTINUE;
}
let bottomEdge = primary.y + primary.height - 1;
let switchBottom = (dragEvent.y >= bottomEdge && bottomWorkspace);
if (switchBottom && this._dragOverLastY != bottomEdge) {
bottomWorkspace.metaWorkspace.activate(global.get_current_time());
this._dragOverLastY = bottomEdge;
return DND.DragMotionResult.CONTINUE;
}
this._dragOverLastY = dragEvent.y;
let result = DND.DragMotionResult.CONTINUE;
// check hover state of new workspace area / inactive workspaces
if (topWorkspace) {
if (topWorkspace.actor.contains(dragEvent.targetActor)) {
hoverWorkspace = topWorkspace;
result = topWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
}
}
if (bottomWorkspace) {
if (bottomWorkspace.actor.contains(dragEvent.targetActor)) {
hoverWorkspace = bottomWorkspace;
result = bottomWorkspace.handleDragOver(dragEvent.source, dragEvent.dragActor);
}
}
// handle delayed workspace switches
if (hoverWorkspace) {
if (!this._timeoutId)
this._timeoutId = Mainloop.timeout_add_seconds(1,
Lang.bind(this, function() {
hoverWorkspace.metaWorkspace.activate(global.get_current_time());
return false;
}));
} else {
if (this._timeoutId) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
}
return result;
}, },
_dragEnd: function() { _dragEnd: function() {
if (this._timeoutId) {
Mainloop.source_remove(this._timeoutId);
this._timeoutId = 0;
}
DND.removeDragMonitor(this._dragMonitor); DND.removeDragMonitor(this._dragMonitor);
this._inDrag = false; this._inDrag = false;

View File

@ -1,4 +1,4 @@
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter; const Clutter = imports.gi.Clutter;
const Lang = imports.lang; const Lang = imports.lang;

View File

@ -1,6 +1,8 @@
af af
an an
ar ar
as
ast
be be
bg bg
bn bn
@ -30,6 +32,7 @@ it
ja ja
ko ko
kn kn
ku
lt lt
lv lv
mr mr

View File

@ -25,6 +25,7 @@ js/ui/polkitAuthenticationAgent.js
js/ui/popupMenu.js js/ui/popupMenu.js
js/ui/runDialog.js js/ui/runDialog.js
js/ui/searchDisplay.js js/ui/searchDisplay.js
js/ui/shellEntry.js
js/ui/shellMountOperation.js js/ui/shellMountOperation.js
js/ui/status/accessibility.js js/ui/status/accessibility.js
js/ui/status/bluetooth.js js/ui/status/bluetooth.js
@ -44,4 +45,3 @@ src/shell-global.c
src/shell-mobile-providers.c src/shell-mobile-providers.c
src/shell-polkit-authentication-agent.c src/shell-polkit-authentication-agent.c
src/shell-util.c src/shell-util.c

1024
po/af.po

File diff suppressed because it is too large Load Diff

1616
po/as.po Normal file

File diff suppressed because it is too large Load Diff

1630
po/ast.po Normal file

File diff suppressed because it is too large Load Diff

136
po/be.po
View File

@ -2,8 +2,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-09-19 21:58+0300\n" "POT-Creation-Date: 2011-09-21 22:18+0300\n"
"PO-Revision-Date: 2011-09-19 21:58+0300\n" "PO-Revision-Date: 2011-09-21 22:18+0300\n"
"Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n" "Last-Translator: Ігар Грачышка <ihar.hrachyshka@gmail.com>\n"
"Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n" "Language-Team: Belarusian <i18n-bel-gnome@googlegroups.com>\n"
"Language: be\n" "Language: be\n"
@ -169,8 +169,8 @@ msgid "Not listed?"
msgstr "Няма ў спісе?" msgstr "Няма ў спісе?"
#: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426 #: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:158 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
#: ../js/ui/polkitAuthenticationAgent.js:170 ../js/ui/status/bluetooth.js:480 #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "Скасаваць" msgstr "Скасаваць"
@ -183,8 +183,8 @@ msgstr "Увайсці"
msgid "Login Window" msgid "Login Window"
msgstr "Акно ўваходу" msgstr "Акно ўваходу"
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:525 #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:514
#: ../js/ui/userMenu.js:527 ../js/ui/userMenu.js:596 #: ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:585
msgid "Suspend" msgid "Suspend"
msgstr "Прыпыніць камп'ютар" msgstr "Прыпыніць камп'ютар"
@ -248,12 +248,16 @@ msgstr "%s дададзены ў ваш спіс упадабанага."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s выдалены з вашага спіса ўпадабанага." msgstr "%s выдалены з вашага спіса ўпадабанага."
#: ../js/ui/autorunManager.js:592 #: ../js/ui/autorunManager.js:280
msgid "Removable Devices"
msgstr "Зменныя прыстасаванні"
#: ../js/ui/autorunManager.js:590
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Адкрыць у %s" msgstr "Адкрыць у %s"
#: ../js/ui/autorunManager.js:618 #: ../js/ui/autorunManager.js:616
msgid "Eject" msgid "Eject"
msgstr "Выняць" msgstr "Выняць"
@ -408,15 +412,15 @@ msgstr "На наступным тыдні"
msgid "Unknown" msgid "Unknown"
msgstr "Невядома" msgstr "Невядома"
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:147 #: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:139
msgid "Available" msgid "Available"
msgstr "Даступны" msgstr "Даступны"
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:156 #: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:148
msgid "Away" msgid "Away"
msgstr "Адсутны" msgstr "Адсутны"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:150 #: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:142
msgid "Busy" msgid "Busy"
msgstr "Заняты" msgstr "Заняты"
@ -428,7 +432,7 @@ msgstr "Па-за сеткай"
msgid "CONTACTS" msgid "CONTACTS"
msgstr "КАНТАКТЫ" msgstr "КАНТАКТЫ"
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1196 #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1197
msgid "Remove" msgid "Remove"
msgstr "Выдаліць" msgstr "Выдаліць"
@ -609,58 +613,58 @@ msgstr "Паглядзець выточны код"
msgid "Web Page" msgid "Web Page"
msgstr "Сеціўная старонка" msgstr "Сеціўная старонка"
#: ../js/ui/messageTray.js:1189 #: ../js/ui/messageTray.js:1190
msgid "Open" msgid "Open"
msgstr "Адкрыць" msgstr "Адкрыць"
#: ../js/ui/messageTray.js:2371 #: ../js/ui/messageTray.js:2372
msgid "System Information" msgid "System Information"
msgstr "Сістэмная інфармацыя" msgstr "Сістэмная інфармацыя"
#: ../js/ui/networkAgent.js:138 #: ../js/ui/networkAgent.js:145
msgid "Show password" msgid "Show password"
msgstr "Паказваць пароль" msgstr "Паказваць пароль"
#: ../js/ui/networkAgent.js:153 #: ../js/ui/networkAgent.js:160
msgid "Connect" msgid "Connect"
msgstr "Злучыць" msgstr "Злучыць"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 ../js/ui/networkAgent.js:260 #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
#: ../js/ui/networkAgent.js:287 ../js/ui/networkAgent.js:307 #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
#: ../js/ui/networkAgent.js:317 #: ../js/ui/networkAgent.js:324
msgid "Password: " msgid "Password: "
msgstr "Пароль: " msgstr "Пароль: "
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253 #: ../js/ui/networkAgent.js:260
msgid "Key: " msgid "Key: "
msgstr "Ключ: " msgstr "Ключ: "
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 ../js/ui/networkAgent.js:303 #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
msgid "Username: " msgid "Username: "
msgstr "Імя карыстальніка: " msgstr "Імя карыстальніка: "
#: ../js/ui/networkAgent.js:291 #: ../js/ui/networkAgent.js:298
msgid "Identity: " msgid "Identity: "
msgstr "Ідэнтычнасць: " msgstr "Ідэнтычнасць: "
#: ../js/ui/networkAgent.js:293 #: ../js/ui/networkAgent.js:300
msgid "Private key password: " msgid "Private key password: "
msgstr "Пароль да прыватнага ключа: " msgstr "Пароль да прыватнага ключа: "
#: ../js/ui/networkAgent.js:305 #: ../js/ui/networkAgent.js:312
msgid "Service: " msgid "Service: "
msgstr "Паслуга: " msgstr "Паслуга: "
#: ../js/ui/networkAgent.js:334 #: ../js/ui/networkAgent.js:341
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Для бесправадной сеткі патрэбная ідэнтыфікацыя" msgstr "Для бесправадной сеткі патрэбная ідэнтыфікацыя"
#: ../js/ui/networkAgent.js:335 #: ../js/ui/networkAgent.js:342
#, c-format #, c-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -669,37 +673,37 @@ msgstr ""
"Для доступу да бесправадной сеткі \"%s\" патрэбны пароль або ключы " "Для доступу да бесправадной сеткі \"%s\" патрэбны пароль або ключы "
"шыфравання." "шыфравання."
#: ../js/ui/networkAgent.js:339 #: ../js/ui/networkAgent.js:346
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Правадная ідэнтыфікацыя 802.1X" msgstr "Правадная ідэнтыфікацыя 802.1X"
#: ../js/ui/networkAgent.js:341 #: ../js/ui/networkAgent.js:348
msgid "Network name: " msgid "Network name: "
msgstr "Назва сеткі: " msgstr "Назва сеткі: "
#: ../js/ui/networkAgent.js:346 #: ../js/ui/networkAgent.js:353
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-ідэнтыфікацыя" msgstr "DSL-ідэнтыфікацыя"
#: ../js/ui/networkAgent.js:353 #: ../js/ui/networkAgent.js:360
msgid "PIN code required" msgid "PIN code required"
msgstr "Патрэбны PIN-код" msgstr "Патрэбны PIN-код"
#: ../js/ui/networkAgent.js:354 #: ../js/ui/networkAgent.js:361
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "" msgstr ""
"Для прыстасавання для доступу да шырокапалоснай мабільнай сеткі патрэбны PIN-" "Для прыстасавання для доступу да шырокапалоснай мабільнай сеткі патрэбны PIN-"
"код" "код"
#: ../js/ui/networkAgent.js:355 #: ../js/ui/networkAgent.js:362
msgid "PIN: " msgid "PIN: "
msgstr "PIN-код: " msgstr "PIN-код: "
#: ../js/ui/networkAgent.js:361 #: ../js/ui/networkAgent.js:368
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Пароль да шырокапалоснай мабільнай сеткі" msgstr "Пароль да шырокапалоснай мабільнай сеткі"
#: ../js/ui/networkAgent.js:362 #: ../js/ui/networkAgent.js:369
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Каб злучыцца з \"%s\", патрэбны пароль." msgstr "Каб злучыцца з \"%s\", патрэбны пароль."
@ -763,7 +767,7 @@ msgstr "Патрэбная ідэнтыфікацыя"
msgid "Administrator" msgid "Administrator"
msgstr "Адміністратар" msgstr "Адміністратар"
#: ../js/ui/polkitAuthenticationAgent.js:174 #: ../js/ui/polkitAuthenticationAgent.js:175
msgid "Authenticate" msgid "Authenticate"
msgstr "Ідэнтыфікаваць" msgstr "Ідэнтыфікаваць"
@ -771,11 +775,11 @@ msgstr "Ідэнтыфікаваць"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262 #: ../js/ui/polkitAuthenticationAgent.js:256
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "На жаль, ідэнтыфікацыя не адбылася. Паўтарыце спробу." msgstr "На жаль, ідэнтыфікацыя не адбылася. Паўтарыце спробу."
#: ../js/ui/polkitAuthenticationAgent.js:274 #: ../js/ui/polkitAuthenticationAgent.js:268
msgid "Password:" msgid "Password:"
msgstr "Пароль:" msgstr "Пароль:"
@ -784,7 +788,7 @@ msgstr "Пароль:"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:709 #: ../js/ui/popupMenu.js:727
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -974,11 +978,11 @@ msgstr "Увядзіце PIN, які паказвае прыстасаванне
msgid "OK" msgid "OK"
msgstr "Добра" msgstr "Добра"
#: ../js/ui/status/keyboard.js:72 #: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Паказаць раскладку" msgstr "Паказаць раскладку"
#: ../js/ui/status/keyboard.js:77 #: ../js/ui/status/keyboard.js:78
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "Настройкі мясцовасці і мовы" msgstr "Настройкі мясцовасці і мовы"
@ -1023,13 +1027,13 @@ msgstr "недаступна"
msgid "connection failed" msgid "connection failed"
msgstr "не ўдалося злучыцца" msgstr "не ўдалося злучыцца"
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1515 #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
msgid "More..." msgid "More..."
msgstr "Яшчэ..." msgstr "Яшчэ..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1455 #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Злучана (прыватна)" msgstr "Злучана (прыватна)"
@ -1046,7 +1050,7 @@ msgid "Auto dial-up"
msgstr "Аўтаматычна: мадэм" msgstr "Аўтаматычна: мадэм"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1467 #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Аўтаматычна: %s" msgstr "Аўтаматычна: %s"
@ -1055,47 +1059,47 @@ msgstr "Аўтаматычна: %s"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Аўтаматычна: Bluetooth" msgstr "Аўтаматычна: Bluetooth"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1472
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Аўтаматычна: wireless" msgstr "Аўтаматычна: wireless"
#: ../js/ui/status/network.js:1558 #: ../js/ui/status/network.js:1566
msgid "Enable networking" msgid "Enable networking"
msgstr "Уключыць сеткавыя функцыі" msgstr "Уключыць сеткавыя функцыі"
#: ../js/ui/status/network.js:1570 #: ../js/ui/status/network.js:1578
msgid "Wired" msgid "Wired"
msgstr "Правадное злучэнне" msgstr "Правадное злучэнне"
#: ../js/ui/status/network.js:1581 #: ../js/ui/status/network.js:1589
msgid "Wireless" msgid "Wireless"
msgstr "Бесправадное злучэнне" msgstr "Бесправадное злучэнне"
#: ../js/ui/status/network.js:1591 #: ../js/ui/status/network.js:1599
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Мабільны broadband" msgstr "Мабільны broadband"
#: ../js/ui/status/network.js:1601 #: ../js/ui/status/network.js:1609
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN-злучэнні" msgstr "VPN-злучэнні"
#: ../js/ui/status/network.js:1612 #: ../js/ui/status/network.js:1620
msgid "Network Settings" msgid "Network Settings"
msgstr "Сеткавыя настройкі" msgstr "Сеткавыя настройкі"
#: ../js/ui/status/network.js:1749 #: ../js/ui/status/network.js:1757
msgid "Connection failed" msgid "Connection failed"
msgstr "Не ўдалося злучыцца" msgstr "Не ўдалося злучыцца"
#: ../js/ui/status/network.js:1750 #: ../js/ui/status/network.js:1758
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Не ўдалося ўключыць сеткавае злучэнне" msgstr "Не ўдалося ўключыць сеткавае злучэнне"
#: ../js/ui/status/network.js:2000 #: ../js/ui/status/network.js:2008
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Сеткавыя функцыі выключаныя" msgstr "Сеткавыя функцыі выключаныя"
#: ../js/ui/status/network.js:2125 #: ../js/ui/status/network.js:2133
msgid "Network Manager" msgid "Network Manager"
msgstr "Сеткавы кіраўнік" msgstr "Сеткавы кіраўнік"
@ -1447,51 +1451,51 @@ msgstr "Рэдагаваць конт"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Невядомая прычына" msgstr "Невядомая прычына"
#: ../js/ui/userMenu.js:153 #: ../js/ui/userMenu.js:145
msgid "Hidden" msgid "Hidden"
msgstr "Схаваны" msgstr "Схаваны"
#: ../js/ui/userMenu.js:159 #: ../js/ui/userMenu.js:151
msgid "Idle" msgid "Idle"
msgstr "Бяздзейны" msgstr "Бяздзейны"
#: ../js/ui/userMenu.js:162 #: ../js/ui/userMenu.js:154
msgid "Unavailable" msgid "Unavailable"
msgstr "Недаступны" msgstr "Недаступны"
#: ../js/ui/userMenu.js:523 ../js/ui/userMenu.js:527 ../js/ui/userMenu.js:597 #: ../js/ui/userMenu.js:512 ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:586
msgid "Power Off..." msgid "Power Off..."
msgstr "Выключыць камп'ютар..." msgstr "Выключыць камп'ютар..."
#: ../js/ui/userMenu.js:559 #: ../js/ui/userMenu.js:548
msgid "Notifications" msgid "Notifications"
msgstr "Апавяшчэнні" msgstr "Апавяшчэнні"
#: ../js/ui/userMenu.js:567 #: ../js/ui/userMenu.js:556
msgid "Online Accounts" msgid "Online Accounts"
msgstr "Сеціўныя конты" msgstr "Сеціўныя конты"
#: ../js/ui/userMenu.js:571 #: ../js/ui/userMenu.js:560
msgid "System Settings" msgid "System Settings"
msgstr "Сістэмныя настройкі" msgstr "Сістэмныя настройкі"
#: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:567
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Замкнуць экран" msgstr "Замкнуць экран"
#: ../js/ui/userMenu.js:583 #: ../js/ui/userMenu.js:572
msgid "Switch User" msgid "Switch User"
msgstr "Перамяніць карыстальніка" msgstr "Перамяніць карыстальніка"
#: ../js/ui/userMenu.js:588 #: ../js/ui/userMenu.js:577
msgid "Log Out..." msgid "Log Out..."
msgstr "Скончыць сеанс..." msgstr "Скончыць сеанс..."
#: ../js/ui/userMenu.js:616 #: ../js/ui/userMenu.js:605
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "Вам прызначаны стан занятасці для чату" msgstr "Вам прызначаны стан занятасці для чату"
#: ../js/ui/userMenu.js:617 #: ../js/ui/userMenu.js:606
msgid "" msgid ""
"Notifications are now disabled, including chat messages. Your online status " "Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages." "has been adjusted to let others know that you might not see their messages."

364
po/bg.po
View File

@ -7,8 +7,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-09-18 11:40+0300\n" "POT-Creation-Date: 2011-10-15 10:43+0300\n"
"PO-Revision-Date: 2011-09-18 11:40+0300\n" "PO-Revision-Date: 2011-10-05 13:04+0300\n"
"Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n" "Last-Translator: Ivaylo Valkov <ivaylo@e-valkov.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n" "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n" "Language: bg\n"
@ -70,24 +70,20 @@ msgid "If true, display date in the clock, in addition to time."
msgstr "Показване на дата в допълнение към времето, ако е истина." msgstr "Показване на дата в допълнение към времето, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:9 #: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display onscreen keyboard."
msgstr "Показване на екранната клавиатура, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display seconds in time." msgid "If true, display seconds in time."
msgstr "Показване на секундите в допълнение към времето, ако е истина." msgstr "Показване на секундите в допълнение към времето, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:11 #: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar." msgid "If true, display the ISO week date in the calendar."
msgstr "Показване на деня от седмицата по ISO, ако е истина." msgstr "Показване на деня от седмицата по ISO, ако е истина."
#: ../data/org.gnome.shell.gschema.xml.in.h:12 #: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications" msgid "List of desktop file IDs for favorite applications"
msgstr "" msgstr ""
"Списък на идентификаторите на файловете във формат .desktop за любими " "Списък на идентификаторите на файловете във формат .desktop за любими "
"програми" "програми"
#: ../data/org.gnome.shell.gschema.xml.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format #, no-c-format
msgid "" msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
@ -113,23 +109,19 @@ msgstr ""
"WEBM и използва кодера VP8. Стойността в „%T“ замества предполагаемия " "WEBM и използва кодера VP8. Стойността в „%T“ замества предполагаемия "
"оптимален брой нишки за системата." "оптимален брой нишки за системата."
#: ../data/org.gnome.shell.gschema.xml.in.h:15 #: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock" msgid "Show date in clock"
msgstr "Показване на дата в часовника" msgstr "Показване на дата в часовника"
#: ../data/org.gnome.shell.gschema.xml.in.h:16 #: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the onscreen keyboard"
msgstr "Показване на екранната клавиатура"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Show the week date in the calendar" msgid "Show the week date in the calendar"
msgstr "Показване на деня от седмицата в календара" msgstr "Показване на деня от седмицата в календара"
#: ../data/org.gnome.shell.gschema.xml.in.h:18 #: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds" msgid "Show time with seconds"
msgstr "Показване на секунди към времето" msgstr "Показване на секунди към времето"
#: ../data/org.gnome.shell.gschema.xml.in.h:19 #: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "" msgid ""
"The applications corresponding to these identifiers will be displayed in the " "The applications corresponding to these identifiers will be displayed in the "
"favorites area." "favorites area."
@ -137,7 +129,7 @@ msgstr ""
"Програмите, които отговарят на тези идентификатор, ще бъдат показани в " "Програмите, които отговарят на тези идентификатор, ще бъдат показани в "
"областта „Любими“." "областта „Любими“."
#: ../data/org.gnome.shell.gschema.xml.in.h:20 #: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "" msgid ""
"The filename for recorded screencasts will be a unique filename based on the " "The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to " "current date, and use this extension. It should be changed when recording to "
@ -147,7 +139,7 @@ msgstr ""
"екрана, което ще бъде уникално и ще зависи от текущата дата. Трябва да го " "екрана, което ще бъде уникално и ще зависи от текущата дата. Трябва да го "
"промените, когато записвате в различен формат на контейнера." "промените, когато записвате в различен формат на контейнера."
#: ../data/org.gnome.shell.gschema.xml.in.h:21 #: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "" msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's " "The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second." "screencast recorder in frames-per-second."
@ -155,11 +147,11 @@ msgstr ""
"Честота на кадрите за записа на екрана създаден от записващата програма на " "Честота на кадрите за записа на екрана създаден от записващата програма на "
"Обвивката на GNOME в кадри за секунда." "Обвивката на GNOME в кадри за секунда."
#: ../data/org.gnome.shell.gschema.xml.in.h:22 #: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast" msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Конвейерът на gstreamer за кодиране на записа на екрана" msgstr "Конвейерът на gstreamer за кодиране на записа на екрана"
#: ../data/org.gnome.shell.gschema.xml.in.h:23 #: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "" msgid ""
"The shell normally monitors active applications in order to present the most " "The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may " "used ones (e.g. in launchers). While this data will be kept private, you may "
@ -172,54 +164,75 @@ msgstr ""
"защитите личните си данни. Забележете, че дори да го направите, това няма да " "защитите личните си данни. Забележете, че дори да го направите, това няма да "
"премахне вече запазените данни." "премахне вече запазените данни."
#: ../data/org.gnome.shell.gschema.xml.in.h:24 #: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The type of keyboard to use." msgid "The type of keyboard to use."
msgstr "Видът на клавиатурата, която да се ползва." msgstr "Видът на клавиатурата, която да се ползва."
#: ../data/org.gnome.shell.gschema.xml.in.h:25 #: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Uuids of extensions to enable" msgid "Uuids of extensions to enable"
msgstr "Идентификатори (uuid) на разширения, които да бъдат включени" msgstr "Идентификатори (uuid) на разширения, които да бъдат включени"
#: ../data/org.gnome.shell.gschema.xml.in.h:26 #: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Whether to collect stats about applications usage" msgid "Whether to collect stats about applications usage"
msgstr "Дали да се събира статистика за използването на програми" msgstr "Дали да се събира статистика за използването на програми"
#: ../data/org.gnome.shell.gschema.xml.in.h:27 #: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "Which keyboard to use" msgid "Which keyboard to use"
msgstr "Коя клавиатура да бъде да се ползва" msgstr "Коя клавиатура да бъде да се ползва"
#: ../data/org.gnome.shell.gschema.xml.in.h:28 #: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "disabled OpenSearch providers" msgid "disabled OpenSearch providers"
msgstr "изключени доставчици на OpenSearch" msgstr "изключени доставчици на OpenSearch"
#: ../js/gdm/loginDialog.js:608 #: ../js/gdm/loginDialog.js:617
msgid "Session..." msgid "Session..."
msgstr "Сесия…" msgstr "Сесия…"
#: ../js/gdm/loginDialog.js:765 #: ../js/gdm/loginDialog.js:788
msgctxt "title" msgctxt "title"
msgid "Sign In" msgid "Sign In"
msgstr "Регистриране" msgstr "Регистриране"
#: ../js/gdm/loginDialog.js:822 #. translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
#: ../js/gdm/loginDialog.js:833
msgid "(or swipe finger)"
msgstr "(или се регистрирайте с пръстов отпечатък)"
#: ../js/gdm/loginDialog.js:851
msgid "Not listed?" msgid "Not listed?"
msgstr "Липсва в списъка?" msgstr "Липсва в списъка?"
#: ../js/gdm/loginDialog.js:932 ../js/ui/endSessionDialog.js:426 #: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:158 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
#: ../js/ui/polkitAuthenticationAgent.js:170 ../js/ui/status/bluetooth.js:480 #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "Отказване" msgstr "Отказване"
#: ../js/gdm/loginDialog.js:937 #: ../js/gdm/loginDialog.js:1024
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Регистриране" msgstr "Регистриране"
#: ../js/gdm/loginDialog.js:1257 #: ../js/gdm/loginDialog.js:1373
msgid "Login Window" msgid "Login Window"
msgstr "Екран за идентификация" msgstr "Екран за идентификация"
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
#: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
msgid "Suspend"
msgstr "Приспиване"
#: ../js/gdm/powerMenu.js:121 ../js/ui/endSessionDialog.js:89
#: ../js/ui/endSessionDialog.js:97 ../js/ui/endSessionDialog.js:106
msgid "Restart"
msgstr "Рестартиране"
#: ../js/gdm/powerMenu.js:126 ../js/ui/endSessionDialog.js:80
#: ../js/ui/endSessionDialog.js:91
msgid "Power Off"
msgstr "Изключване"
#: ../js/misc/util.js:92 #: ../js/misc/util.js:92
msgid "Command not found" msgid "Command not found"
msgstr "Командата не беше открита" msgstr "Командата не беше открита"
@ -270,12 +283,16 @@ msgstr "Програмата „%s“ беше добавена в „Любим
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Програмата „%s“ беше премахната от „Любими“" msgstr "Програмата „%s“ беше премахната от „Любими“"
#: ../js/ui/autorunManager.js:592 #: ../js/ui/autorunManager.js:280
msgid "Removable Devices"
msgstr "Външни устройства"
#: ../js/ui/autorunManager.js:590
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Отваряне с %s" msgstr "Отваряне с %s"
#: ../js/ui/autorunManager.js:618 #: ../js/ui/autorunManager.js:616
msgid "Eject" msgid "Eject"
msgstr "Изваждане" msgstr "Изваждане"
@ -425,32 +442,32 @@ msgstr "Тази седмица"
msgid "Next week" msgid "Next week"
msgstr "Следващата седмица" msgstr "Следващата седмица"
#: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444 #: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
#: ../js/ui/status/power.js:223 ../src/shell-app.c:355 #: ../js/ui/status/power.js:223 ../src/shell-app.c:353
msgid "Unknown" msgid "Unknown"
msgstr "Неизвестно" msgstr "Неизвестно"
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:147 #: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139
msgid "Available" msgid "Available"
msgstr "На линия" msgstr "На линия"
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:156 #: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148
msgid "Away" msgid "Away"
msgstr "Отсъстващ" msgstr "Отсъстващ"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:150 #: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142
msgid "Busy" msgid "Busy"
msgstr "Зает" msgstr "Зает"
#: ../js/ui/contactDisplay.js:93 #: ../js/ui/contactDisplay.js:99
msgid "Offline" msgid "Offline"
msgstr "Извън мрежата" msgstr "Извън мрежата"
#: ../js/ui/contactDisplay.js:140 #: ../js/ui/contactDisplay.js:146
msgid "CONTACTS" msgid "CONTACTS"
msgstr "КОНТАКТИ" msgstr "КОНТАКТИ"
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1196 #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
msgid "Remove" msgid "Remove"
msgstr "Изтриване" msgstr "Изтриване"
@ -547,10 +564,6 @@ msgstr[1] "Ще излезете от системата автоматично
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Излизане от системата." msgstr "Излизане от системата."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:91
msgid "Power Off"
msgstr "Изключване"
#: ../js/ui/endSessionDialog.js:81 #: ../js/ui/endSessionDialog.js:81
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "" msgstr ""
@ -568,11 +581,6 @@ msgstr[1] "Системата ще се изключи автоматично с
msgid "Powering off the system." msgid "Powering off the system."
msgstr "Изключване на системата." msgstr "Изключване на системата."
#: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:97
#: ../js/ui/endSessionDialog.js:106
msgid "Restart"
msgstr "Рестартиране"
#: ../js/ui/endSessionDialog.js:98 #: ../js/ui/endSessionDialog.js:98
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "" msgstr ""
@ -599,7 +607,11 @@ msgstr "Инсталиране"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?" msgstr "Да се изтегли и инсталира ли „%s“ от from extensions.gnome.org?"
#: ../js/ui/keyboard.js:513 ../js/ui/status/power.js:211 #: ../js/ui/keyboard.js:309
msgid "tray"
msgstr "област за уведомяване"
#: ../js/ui/keyboard.js:531 ../js/ui/status/power.js:211
msgid "Keyboard" msgid "Keyboard"
msgstr "Клавиатура" msgstr "Клавиатура"
@ -629,66 +641,66 @@ msgstr "Остаряло"
msgid "Downloading" msgid "Downloading"
msgstr "Изтегляне" msgstr "Изтегляне"
#: ../js/ui/lookingGlass.js:724 #: ../js/ui/lookingGlass.js:720
msgid "View Source" msgid "View Source"
msgstr "Преглед на изходния код" msgstr "Преглед на изходния код"
#: ../js/ui/lookingGlass.js:730 #: ../js/ui/lookingGlass.js:726
msgid "Web Page" msgid "Web Page"
msgstr "Домашна страница" msgstr "Домашна страница"
#: ../js/ui/messageTray.js:1189 #: ../js/ui/messageTray.js:1197
msgid "Open" msgid "Open"
msgstr "Отваряне" msgstr "Отваряне"
#: ../js/ui/messageTray.js:2368 #: ../js/ui/messageTray.js:2406
msgid "System Information" msgid "System Information"
msgstr "Информация за системата" msgstr "Информация за системата"
#: ../js/ui/networkAgent.js:138 #: ../js/ui/networkAgent.js:145
msgid "Show password" msgid "Show password"
msgstr "Показване на парола" msgstr "Показване на парола"
#: ../js/ui/networkAgent.js:153 #: ../js/ui/networkAgent.js:160
msgid "Connect" msgid "Connect"
msgstr "Свързване" msgstr "Свързване"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 ../js/ui/networkAgent.js:260 #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
#: ../js/ui/networkAgent.js:287 ../js/ui/networkAgent.js:307 #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
#: ../js/ui/networkAgent.js:317 #: ../js/ui/networkAgent.js:324
msgid "Password: " msgid "Password: "
msgstr "Парола: " msgstr "Парола: "
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253 #: ../js/ui/networkAgent.js:260
msgid "Key: " msgid "Key: "
msgstr "Ключ: " msgstr "Ключ: "
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 ../js/ui/networkAgent.js:303 #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
msgid "Username: " msgid "Username: "
msgstr "Потребител: " msgstr "Потребител: "
#: ../js/ui/networkAgent.js:291 #: ../js/ui/networkAgent.js:298
msgid "Identity: " msgid "Identity: "
msgstr "Самоличност: " msgstr "Самоличност: "
#: ../js/ui/networkAgent.js:293 #: ../js/ui/networkAgent.js:300
msgid "Private key password: " msgid "Private key password: "
msgstr "Парола за частният ключ: " msgstr "Парола за частният ключ: "
#: ../js/ui/networkAgent.js:305 #: ../js/ui/networkAgent.js:312
msgid "Service: " msgid "Service: "
msgstr "Услуга: " msgstr "Услуга: "
#: ../js/ui/networkAgent.js:334 #: ../js/ui/networkAgent.js:341
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Изисква се удостоверяване за безжична мрежа" msgstr "Изисква се удостоверяване за безжична мрежа"
#: ../js/ui/networkAgent.js:335 #: ../js/ui/networkAgent.js:342
#, c-format #, c-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network " "Passwords or encryption keys are required to access the wireless network "
@ -697,35 +709,35 @@ msgstr ""
"За достъп до безжичната мрежа „%s“ са необходими пароли или криптирани " "За достъп до безжичната мрежа „%s“ са необходими пароли или криптирани "
"ключове." "ключове."
#: ../js/ui/networkAgent.js:339 #: ../js/ui/networkAgent.js:346
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Жична идентификация 802.1Х" msgstr "Жична идентификация 802.1Х"
#: ../js/ui/networkAgent.js:341 #: ../js/ui/networkAgent.js:348
msgid "Network name: " msgid "Network name: "
msgstr "Име на мрежата: " msgstr "Име на мрежата: "
#: ../js/ui/networkAgent.js:346 #: ../js/ui/networkAgent.js:353
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Удостоверяване за DSL" msgstr "Удостоверяване за DSL"
#: ../js/ui/networkAgent.js:353 #: ../js/ui/networkAgent.js:360
msgid "PIN code required" msgid "PIN code required"
msgstr "Необходим е PIN" msgstr "Необходим е PIN"
#: ../js/ui/networkAgent.js:354 #: ../js/ui/networkAgent.js:361
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Мобилното устройство изисква ПИН" msgstr "Мобилното устройство изисква ПИН"
#: ../js/ui/networkAgent.js:355 #: ../js/ui/networkAgent.js:362
msgid "PIN: " msgid "PIN: "
msgstr "ПИН: " msgstr "ПИН: "
#: ../js/ui/networkAgent.js:361 #: ../js/ui/networkAgent.js:368
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Парола за мобилна широколентова връзка" msgstr "Парола за мобилна широколентова връзка"
#: ../js/ui/networkAgent.js:362 #: ../js/ui/networkAgent.js:369
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "За свързване към „%s“ се изисква парола." msgstr "За свързване към „%s“ се изисква парола."
@ -789,7 +801,7 @@ msgstr "Необходимо е удостоверяване"
msgid "Administrator" msgid "Administrator"
msgstr "Администратор" msgstr "Администратор"
#: ../js/ui/polkitAuthenticationAgent.js:174 #: ../js/ui/polkitAuthenticationAgent.js:175
msgid "Authenticate" msgid "Authenticate"
msgstr "Удостоверяване" msgstr "Удостоверяване"
@ -797,11 +809,11 @@ msgstr "Удостоверяване"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262 #: ../js/ui/polkitAuthenticationAgent.js:256
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Действието не беше успешно. Опитайте отново." msgstr "Действието не беше успешно. Опитайте отново."
#: ../js/ui/polkitAuthenticationAgent.js:274 #: ../js/ui/polkitAuthenticationAgent.js:268
msgid "Password:" msgid "Password:"
msgstr "Парола:" msgstr "Парола:"
@ -810,7 +822,7 @@ msgstr "Парола:"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:687 #: ../js/ui/popupMenu.js:731
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -837,9 +849,10 @@ msgstr "Увеличаване"
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
#. 'screen-reader-enabled'); #. 'screen-reader-enabled');
#. this.menu.addMenuItem(screenReader); #. this.menu.addMenuItem(screenReader);
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA, #: ../js/ui/status/accessibility.js:71
#. 'screen-keyboard-enabled'); msgid "Screen Keyboard"
#. this.menu.addMenuItem(screenKeyboard); msgstr "Екранна клавиатура"
#: ../js/ui/status/accessibility.js:75 #: ../js/ui/status/accessibility.js:75
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Визуална помощ" msgstr "Визуална помощ"
@ -958,7 +971,7 @@ msgstr "Винаги позволяване на достъп"
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Позволяване само този път" msgstr "Позволяване само този път"
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1196 #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204
msgid "Reject" msgid "Reject"
msgstr "Отхвърляне" msgstr "Отхвърляне"
@ -998,11 +1011,11 @@ msgstr "Въведете кода на устройството %s."
msgid "OK" msgid "OK"
msgstr "Добре" msgstr "Добре"
#: ../js/ui/status/keyboard.js:72 #: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Показване на клавиатурната подредба" msgstr "Показване на клавиатурната подредба"
#: ../js/ui/status/keyboard.js:77 #: ../js/ui/status/keyboard.js:78
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "Настройки на региона и езика" msgstr "Настройки на региона и езика"
@ -1047,13 +1060,13 @@ msgstr "недостъпно"
msgid "connection failed" msgid "connection failed"
msgstr "връзката е неуспешна" msgstr "връзката е неуспешна"
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1515 #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
msgid "More..." msgid "More..."
msgstr "Повече…" msgstr "Повече…"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1455 #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Връзката е осъществена (няма налични данни)" msgstr "Връзката е осъществена (няма налични данни)"
@ -1070,7 +1083,7 @@ msgid "Auto dial-up"
msgstr "Автоматична мрежа през модем" msgstr "Автоматична мрежа през модем"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1467 #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Автоматична мрежа към „%s“" msgstr "Автоматична мрежа към „%s“"
@ -1079,47 +1092,47 @@ msgstr "Автоматична мрежа към „%s“"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Автоматична мрежа по Bluetooth" msgstr "Автоматична мрежа по Bluetooth"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1472
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Автоматична безжична мрежа" msgstr "Автоматична безжична мрежа"
#: ../js/ui/status/network.js:1558 #: ../js/ui/status/network.js:1566
msgid "Enable networking" msgid "Enable networking"
msgstr "Включване на мрежата" msgstr "Включване на мрежата"
#: ../js/ui/status/network.js:1570 #: ../js/ui/status/network.js:1578
msgid "Wired" msgid "Wired"
msgstr "Жична" msgstr "Жична"
#: ../js/ui/status/network.js:1581 #: ../js/ui/status/network.js:1589
msgid "Wireless" msgid "Wireless"
msgstr "Безжична" msgstr "Безжична"
#: ../js/ui/status/network.js:1591 #: ../js/ui/status/network.js:1599
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Мобилна широколентова" msgstr "Мобилна широколентова"
#: ../js/ui/status/network.js:1601 #: ../js/ui/status/network.js:1609
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Връзки към ВЧМ" msgstr "Връзки към ВЧМ"
#: ../js/ui/status/network.js:1612 #: ../js/ui/status/network.js:1620
msgid "Network Settings" msgid "Network Settings"
msgstr "Настройки на мрежата" msgstr "Настройки на мрежата"
#: ../js/ui/status/network.js:1749 #: ../js/ui/status/network.js:1757
msgid "Connection failed" msgid "Connection failed"
msgstr "Връзката е неуспешна" msgstr "Връзката е неуспешна"
#: ../js/ui/status/network.js:1750 #: ../js/ui/status/network.js:1758
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Осъществяването на връзка към мрежата е неуспешно" msgstr "Осъществяването на връзка към мрежата е неуспешно"
#: ../js/ui/status/network.js:2000 #: ../js/ui/status/network.js:2008
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Мрежата е изключена" msgstr "Мрежата е изключена"
#: ../js/ui/status/network.js:2125 #: ../js/ui/status/network.js:2133
msgid "Network Manager" msgid "Network Manager"
msgstr "Управление на мрежата" msgstr "Управление на мрежата"
@ -1227,39 +1240,39 @@ msgid "Invitation"
msgstr "Покана" msgstr "Покана"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:325 #: ../js/ui/telepathyClient.js:327
msgid "Call" msgid "Call"
msgstr "Разговор" msgstr "Разговор"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:353 #: ../js/ui/telepathyClient.js:357
msgid "File Transfer" msgid "File Transfer"
msgstr "Обмен на файлове" msgstr "Обмен на файлове"
#: ../js/ui/telepathyClient.js:434 #: ../js/ui/telepathyClient.js:438
msgid "Subscription request" msgid "Subscription request"
msgstr "Искане за записване" msgstr "Искане за записване"
#: ../js/ui/telepathyClient.js:470 #: ../js/ui/telepathyClient.js:474
msgid "Connection error" msgid "Connection error"
msgstr "Грешка при свързване" msgstr "Грешка при свързване"
#: ../js/ui/telepathyClient.js:733 #: ../js/ui/telepathyClient.js:741
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s е на линия." msgstr "%s е на линия."
#: ../js/ui/telepathyClient.js:738 #: ../js/ui/telepathyClient.js:746
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s не е на линия." msgstr "%s не е на линия."
#: ../js/ui/telepathyClient.js:741 #: ../js/ui/telepathyClient.js:749
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s отсъства." msgstr "%s отсъства."
#: ../js/ui/telepathyClient.js:744 #: ../js/ui/telepathyClient.js:752
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s е зает." msgstr "%s е зает."
@ -1267,35 +1280,35 @@ msgstr "%s е зает."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:978 #: ../js/ui/telepathyClient.js:986
#, no-c-format #, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>" msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Изпратено в <b>%X</b> на <b>%A</b>" msgstr "Изпратено в <b>%X</b> на <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25", #. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year. #. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:984 #: ../js/ui/telepathyClient.js:992
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>" msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Изпратено на <b>%3$d %2$B</b>, <b>%1$A</b>" msgstr "Изпратено на <b>%3$d %2$B</b>, <b>%1$A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year. #. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:989 #: ../js/ui/telepathyClient.js:997
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y" msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Изпратено на <b>%3$d %2$B %4$Y</b>, <b>%1$A</b>" msgstr "Изпратено на <b>%3$d %2$B %4$Y</b>, <b>%1$A</b>"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: ../js/ui/telepathyClient.js:1031 #: ../js/ui/telepathyClient.js:1039
#, c-format #, c-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s в момента е познат като %s" msgstr "%s в момента е познат като %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. #. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1140 #: ../js/ui/telepathyClient.js:1148
#, c-format #, c-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Покана за присъединяване към %s" msgstr "Покана за присъединяване към %s"
@ -1303,34 +1316,35 @@ msgstr "Покана за присъединяване към %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. #. * for example.
#: ../js/ui/telepathyClient.js:1148 #: ../js/ui/telepathyClient.js:1156
#, c-format #, c-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s ви кани да се присъедините към %s" msgstr "%s ви кани да се присъедините към %s"
#: ../js/ui/telepathyClient.js:1150 ../js/ui/telepathyClient.js:1239 #: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248
#: ../js/ui/telepathyClient.js:1343 #: ../js/ui/telepathyClient.js:1352
msgid "Decline" msgid "Decline"
msgstr "Отклоняване" msgstr "Отклоняване"
#: ../js/ui/telepathyClient.js:1151 ../js/ui/telepathyClient.js:1240 #: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249
#: ../js/ui/telepathyClient.js:1344 #: ../js/ui/telepathyClient.js:1353
msgid "Accept" msgid "Accept"
msgstr "Приемане" msgstr "Приемане"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1184 #: ../js/ui/telepathyClient.js:1192
#, c-format #, c-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Видео разговор от %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/telepathyClient.js:1187 #: ../js/ui/telepathyClient.js:1195
#, c-format #, c-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Повикване от %s" msgstr "Повикване от %s"
#: ../js/ui/telepathyClient.js:1197 #. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Отговор" msgstr "Отговор"
@ -1339,109 +1353,109 @@ msgstr "Отговор"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. #.
#: ../js/ui/telepathyClient.js:1233 #: ../js/ui/telepathyClient.js:1242
#, c-format #, c-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s ви праща „%s“" msgstr "%s ви праща „%s“"
#. To translators: The parameter is the contact's alias #. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1308 #: ../js/ui/telepathyClient.js:1317
#, c-format #, c-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s иска разрешение да вижда дали сте в мрежата" msgstr "%s иска разрешение да вижда дали сте в мрежата"
#: ../js/ui/telepathyClient.js:1406 #: ../js/ui/telepathyClient.js:1415
msgid "Network error" msgid "Network error"
msgstr "Мрежова грешка" msgstr "Мрежова грешка"
#: ../js/ui/telepathyClient.js:1408 #: ../js/ui/telepathyClient.js:1417
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Неуспешно идентифициране" msgstr "Неуспешно идентифициране"
#: ../js/ui/telepathyClient.js:1410 #: ../js/ui/telepathyClient.js:1419
msgid "Encryption error" msgid "Encryption error"
msgstr "Грешка в шифрирането" msgstr "Грешка в шифрирането"
#: ../js/ui/telepathyClient.js:1412 #: ../js/ui/telepathyClient.js:1421
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Не е предоставен сертификат" msgstr "Не е предоставен сертификат"
#: ../js/ui/telepathyClient.js:1414 #: ../js/ui/telepathyClient.js:1423
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Сертификатът не е доверен" msgstr "Сертификатът не е доверен"
#: ../js/ui/telepathyClient.js:1416 #: ../js/ui/telepathyClient.js:1425
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Сертификатът е изтекъл" msgstr "Сертификатът е изтекъл"
#: ../js/ui/telepathyClient.js:1418 #: ../js/ui/telepathyClient.js:1427
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Сертификатът не е влязъл в сила" msgstr "Сертификатът не е влязъл в сила"
#: ../js/ui/telepathyClient.js:1420 #: ../js/ui/telepathyClient.js:1429
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Несъвпадане на името с това в сертификата" msgstr "Несъвпадане на името с това в сертификата"
#: ../js/ui/telepathyClient.js:1422 #: ../js/ui/telepathyClient.js:1431
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Несъвпадане на отпечатъка на сертификата" msgstr "Несъвпадане на отпечатъка на сертификата"
#: ../js/ui/telepathyClient.js:1424 #: ../js/ui/telepathyClient.js:1433
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Сертификатът е самоподписан" msgstr "Сертификатът е самоподписан"
#: ../js/ui/telepathyClient.js:1426 #: ../js/ui/telepathyClient.js:1435
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Състоянието е „Извън мрежата“." msgstr "Състоянието е „Извън мрежата“."
#: ../js/ui/telepathyClient.js:1428 #: ../js/ui/telepathyClient.js:1437
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Не е налично шифриране" msgstr "Не е налично шифриране"
#: ../js/ui/telepathyClient.js:1430 #: ../js/ui/telepathyClient.js:1439
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Сертификатът е неправилен" msgstr "Сертификатът е неправилен"
#: ../js/ui/telepathyClient.js:1432 #: ../js/ui/telepathyClient.js:1441
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Връзката е отказана" msgstr "Връзката е отказана"
#: ../js/ui/telepathyClient.js:1434 #: ../js/ui/telepathyClient.js:1443
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Не може да се установи връзка" msgstr "Не може да се установи връзка"
#: ../js/ui/telepathyClient.js:1436 #: ../js/ui/telepathyClient.js:1445
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Връзката прекъсна" msgstr "Връзката прекъсна"
#: ../js/ui/telepathyClient.js:1438 #: ../js/ui/telepathyClient.js:1447
msgid "This resource is already connected to the server" msgid "This resource is already connected to the server"
msgstr "Ресурсът вече е свързан към сървъра" msgstr "Ресурсът вече е свързан към сървъра"
#: ../js/ui/telepathyClient.js:1440 #: ../js/ui/telepathyClient.js:1449
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "Връзката бе заместена от нова връзка, използваща същия ресурс" msgstr "Връзката бе заместена от нова връзка, използваща същия ресурс"
#: ../js/ui/telepathyClient.js:1442 #: ../js/ui/telepathyClient.js:1451
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "На сървъра вече има регистрация с такова име." msgstr "На сървъра вече има регистрация с такова име."
#: ../js/ui/telepathyClient.js:1444 #: ../js/ui/telepathyClient.js:1453
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"В момента сървърът е твърде натоварен, за да обработи заявката за свързване" "В момента сървърът е твърде натоварен, за да обработи заявката за свързване"
#: ../js/ui/telepathyClient.js:1446 #: ../js/ui/telepathyClient.js:1455
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Сертификатът е анулиран" msgstr "Сертификатът е анулиран"
#: ../js/ui/telepathyClient.js:1448 #: ../js/ui/telepathyClient.js:1457
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "Сертификатът използва несигурен шифър или слаб алгоритъм за шифриране" msgstr "Сертификатът използва несигурен шифър или слаб алгоритъм за шифриране"
#: ../js/ui/telepathyClient.js:1450 #: ../js/ui/telepathyClient.js:1459
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -1451,72 +1465,68 @@ msgstr ""
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. #. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1459 #: ../js/ui/telepathyClient.js:1468
#, c-format #, c-format
msgid "Connection to %s failed" msgid "Connection to %s failed"
msgstr "Връзката е към „%s“ е неуспешна" msgstr "Връзката е към „%s“ е неуспешна"
#: ../js/ui/telepathyClient.js:1468 #: ../js/ui/telepathyClient.js:1477
msgid "Reconnect" msgid "Reconnect"
msgstr "Ново свързване" msgstr "Ново свързване"
#: ../js/ui/telepathyClient.js:1469 #: ../js/ui/telepathyClient.js:1478
msgid "Edit account" msgid "Edit account"
msgstr "Редактиране на регистрацията" msgstr "Редактиране на регистрацията"
#: ../js/ui/telepathyClient.js:1515 #: ../js/ui/telepathyClient.js:1524
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Неизвестна причина" msgstr "Неизвестна причина"
#: ../js/ui/userMenu.js:153 #: ../js/ui/userMenu.js:145
msgid "Hidden" msgid "Hidden"
msgstr "Скрит" msgstr "Скрит"
#: ../js/ui/userMenu.js:159 #: ../js/ui/userMenu.js:151
msgid "Idle" msgid "Idle"
msgstr "Бездействие" msgstr "Бездействие"
#: ../js/ui/userMenu.js:162 #: ../js/ui/userMenu.js:154
msgid "Unavailable" msgid "Unavailable"
msgstr "Недостъпно" msgstr "Недостъпно"
#: ../js/ui/userMenu.js:518 ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:592 #: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
msgid "Power Off..." msgid "Power Off..."
msgstr "Изключване..." msgstr "Изключване..."
#: ../js/ui/userMenu.js:520 ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:591 #: ../js/ui/userMenu.js:583
msgid "Suspend"
msgstr "Приспиване"
#: ../js/ui/userMenu.js:554
msgid "Notifications" msgid "Notifications"
msgstr "Известяване" msgstr "Известяване"
#: ../js/ui/userMenu.js:562 #: ../js/ui/userMenu.js:591
msgid "Online Accounts" msgid "Online Accounts"
msgstr "Мрежови регистрации" msgstr "Мрежови регистрации"
#: ../js/ui/userMenu.js:566 #: ../js/ui/userMenu.js:595
msgid "System Settings" msgid "System Settings"
msgstr "Настройки на системата" msgstr "Настройки на системата"
#: ../js/ui/userMenu.js:573 #: ../js/ui/userMenu.js:602
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Заключване на екрана" msgstr "Заключване на екрана"
#: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:607
msgid "Switch User" msgid "Switch User"
msgstr "Смяна на потребител" msgstr "Смяна на потребител"
#: ../js/ui/userMenu.js:583 #: ../js/ui/userMenu.js:612
msgid "Log Out..." msgid "Log Out..."
msgstr "Изход…" msgstr "Изход…"
#: ../js/ui/userMenu.js:611 #: ../js/ui/userMenu.js:640
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "Състоянието ви ще се зададе да е „Зает“" msgstr "Състоянието ви ще се зададе да е „Зает“"
#: ../js/ui/userMenu.js:612 #: ../js/ui/userMenu.js:641
msgid "" msgid ""
"Notifications are now disabled, including chat messages. Your online status " "Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages." "has been adjusted to let others know that you might not see their messages."
@ -1537,12 +1547,7 @@ msgstr "Търсене на написаното…"
msgid "Search" msgid "Search"
msgstr "Търсене" msgstr "Търсене"
#: ../js/ui/windowAttentionHandler.js:39 #: ../js/ui/windowAttentionHandler.js:35
#, c-format
msgid "%s has finished starting"
msgstr "Програмата „%s“ стартира успешно"
#: ../js/ui/windowAttentionHandler.js:41
#, c-format #, c-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "Програмата „%s“ е готова за употреба" msgstr "Програмата „%s“ е готова за употреба"
@ -1577,7 +1582,7 @@ msgstr "Показване на версията"
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Режим използван от GDM за екрана за влизане" msgstr "Режим използван от GDM за екрана за влизане"
#: ../src/shell-app.c:581 #: ../src/shell-app.c:579
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "Неуспех при стартиране на „%s“" msgstr "Неуспех при стартиране на „%s“"
@ -1613,3 +1618,12 @@ msgstr "Файлова система"
#, c-format #, c-format
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "%s has not emitted any errors."
#~ msgstr "Разширение %s не е давало грешки."
#~ msgid "Hide Errors"
#~ msgstr "Скриване на грешките"
#~ msgid "Show Errors"
#~ msgstr "Показване на грешките"

1078
po/ca.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1119
po/cs.po

File diff suppressed because it is too large Load Diff

662
po/da.po

File diff suppressed because it is too large Load Diff

362
po/de.po
View File

@ -15,15 +15,16 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "Project-Id-Version: gnome-shell master\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"POT-Creation-Date: 2011-09-19 20:15+0200\n" "shell&keywords=I18N+L10N&component=general\n"
"PO-Revision-Date: 2011-09-19 20:16+0100\n" "POT-Creation-Date: 2011-10-17 20:04+0000\n"
"Last-Translator: Mario Blättermann <mariobl@freenet.de>\n" "PO-Revision-Date: 2011-10-17 22:05+0100\n"
"Last-Translator: Paul Seyfert <pseyfert@mathphys.fsk.uni-heidelberg.de>\n"
"Language-Team: Deutsch <gnome-de@gnome.org>\n" "Language-Team: Deutsch <gnome-de@gnome.org>\n"
"Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Language: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Poedit-Language: German\n" "X-Poedit-Language: German\n"
"X-Poedit-Country: GERMANY\n" "X-Poedit-Country: GERMANY\n"
@ -112,11 +113,11 @@ msgstr ""
"Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei " "Auffüllung haben; die Ausgabe dieser Auffüllung wird in die Ausgabedatei "
"geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. " "geschrieben. Die Weiterleitung kann auch mit ihrer eigenen Ausgabe umgehen. "
"Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder " "Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder "
"Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) gesetzt, " "Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) "
"so wird die vorgegebene Weiterleitung verwendet, welche derzeit »videorate ! " "gesetzt, so wird die vorgegebene Weiterleitung verwendet, welche derzeit "
"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux« lautet und nach WEBM " "»videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux« lautet "
"mittels des VP8-Codecs aufzeichnet. %T wird als Platzhalter für die vermutete " "und nach WEBM mittels des VP8-Codecs aufzeichnet. %T wird als Platzhalter "
"optimale Threadanzahl auf dem System verwendet." "für die vermutete optimale Threadanzahl auf dem System verwendet."
#: ../data/org.gnome.shell.gschema.xml.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock" msgid "Show date in clock"
@ -135,8 +136,8 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the " "The applications corresponding to these identifiers will be displayed in the "
"favorites area." "favorites area."
msgstr "" msgstr ""
"Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-Bereich " "Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-"
"angezeigt." "Bereich angezeigt."
#: ../data/org.gnome.shell.gschema.xml.in.h:18 #: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "" msgid ""
@ -199,38 +200,38 @@ msgstr "deaktivierte OpenSearch-Provider"
msgid "Session..." msgid "Session..."
msgstr "Sitzung …" msgstr "Sitzung …"
#: ../js/gdm/loginDialog.js:785 #: ../js/gdm/loginDialog.js:788
msgctxt "title" msgctxt "title"
msgid "Sign In" msgid "Sign In"
msgstr "Anmelden" msgstr "Anmelden"
#. translators: this message is shown below the password entry field #. 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/loginDialog.js:830 #: ../js/gdm/loginDialog.js:833
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(oder benutzen Sie den Fingerabdruckleser)" msgstr "(oder benutzen Sie den Fingerabdruckleser)"
#: ../js/gdm/loginDialog.js:848 #: ../js/gdm/loginDialog.js:851
msgid "Not listed?" msgid "Not listed?"
msgstr "Nicht aufgeführt?" msgstr "Nicht aufgeführt?"
#: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426 #: ../js/gdm/loginDialog.js:1019 ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:158 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:148
#: ../js/ui/polkitAuthenticationAgent.js:170 ../js/ui/status/bluetooth.js:480 #: ../js/ui/polkitAuthenticationAgent.js:173 ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "Abbrechen" msgstr "Abbrechen"
#: ../js/gdm/loginDialog.js:1009 #: ../js/gdm/loginDialog.js:1024
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Anmelden" msgstr "Anmelden"
#: ../js/gdm/loginDialog.js:1358 #: ../js/gdm/loginDialog.js:1373
msgid "Login Window" msgid "Login Window"
msgstr "Anmeldefenster" msgstr "Anmeldefenster"
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:525 ../js/ui/userMenu.js:527 #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:549
#: ../js/ui/userMenu.js:596 #: ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:620
msgid "Suspend" msgid "Suspend"
msgstr "Bereitschaft" msgstr "Bereitschaft"
@ -294,12 +295,16 @@ msgstr "%s wurde zu Ihren Favoriten hinzugefügt"
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s wurde aus Ihren Favoriten entfernt" msgstr "%s wurde aus Ihren Favoriten entfernt"
#: ../js/ui/autorunManager.js:592 #: ../js/ui/autorunManager.js:280
msgid "Removable Devices"
msgstr "Wechseldatenträger"
#: ../js/ui/autorunManager.js:590
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Öffnen mit %s" msgstr "Öffnen mit %s"
#: ../js/ui/autorunManager.js:618 #: ../js/ui/autorunManager.js:616
msgid "Eject" msgid "Eject"
msgstr "Auswerfen" msgstr "Auswerfen"
@ -453,32 +458,32 @@ msgstr "Diese Woche"
msgid "Next week" msgid "Next week"
msgstr "Nächste Woche" msgstr "Nächste Woche"
#: ../js/ui/contactDisplay.js:59 ../js/ui/notificationDaemon.js:444 #: ../js/ui/contactDisplay.js:65 ../js/ui/notificationDaemon.js:444
#: ../js/ui/status/power.js:223 ../src/shell-app.c:355 #: ../js/ui/status/power.js:223 ../src/shell-app.c:353
msgid "Unknown" msgid "Unknown"
msgstr "Unbekannt" msgstr "Unbekannt"
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:147 #: ../js/ui/contactDisplay.js:86 ../js/ui/userMenu.js:139
msgid "Available" msgid "Available"
msgstr "Verfügbar" msgstr "Verfügbar"
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:156 #: ../js/ui/contactDisplay.js:91 ../js/ui/userMenu.js:148
msgid "Away" msgid "Away"
msgstr "Abwesend" msgstr "Abwesend"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:150 #: ../js/ui/contactDisplay.js:95 ../js/ui/userMenu.js:142
msgid "Busy" msgid "Busy"
msgstr "Beschäftigt" msgstr "Beschäftigt"
#: ../js/ui/contactDisplay.js:93 #: ../js/ui/contactDisplay.js:99
msgid "Offline" msgid "Offline"
msgstr "Abgemeldet" msgstr "Abgemeldet"
#: ../js/ui/contactDisplay.js:140 #: ../js/ui/contactDisplay.js:146
msgid "CONTACTS" msgid "CONTACTS"
msgstr "KONTAKTE" msgstr "KONTAKTE"
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1196 #: ../js/ui/dash.js:174 ../js/ui/messageTray.js:1205
msgid "Remove" msgid "Remove"
msgstr "Entfernen" msgstr "Entfernen"
@ -617,132 +622,133 @@ msgstr "Installieren"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" msgstr "»%s« von extensions.gnome.org herunterladen und installieren?"
#: ../js/ui/keyboard.js:517 ../js/ui/status/power.js:211 #: ../js/ui/keyboard.js:325
msgid "tray"
msgstr "Benachrichtigungsfeld"
#: ../js/ui/keyboard.js:547 ../js/ui/status/power.js:211
msgid "Keyboard" msgid "Keyboard"
msgstr "Tastatur" msgstr "Tastatur"
#: ../js/ui/lookingGlass.js:645 #: ../js/ui/lookingGlass.js:646
msgid "No extensions installed" msgid "No extensions installed"
msgstr "Keine Erweiterungen installiert" msgstr "Keine Erweiterungen installiert"
#: ../js/ui/lookingGlass.js:691 #: ../js/ui/lookingGlass.js:692
msgid "Enabled" msgid "Enabled"
msgstr "Aktiviert" msgstr "Aktiviert"
#. translators: #. translators:
#. * The device has been disabled #. * The device has been disabled
#: ../js/ui/lookingGlass.js:693 ../src/gvc/gvc-mixer-control.c:1093 #: ../js/ui/lookingGlass.js:694 ../src/gvc/gvc-mixer-control.c:1093
msgid "Disabled" msgid "Disabled"
msgstr "Deaktiviert" msgstr "Deaktiviert"
#: ../js/ui/lookingGlass.js:695 #: ../js/ui/lookingGlass.js:696
msgid "Error" msgid "Error"
msgstr "Fehler" msgstr "Fehler"
#: ../js/ui/lookingGlass.js:697 #: ../js/ui/lookingGlass.js:698
msgid "Out of date" msgid "Out of date"
msgstr "Veraltet" msgstr "Veraltet"
#: ../js/ui/lookingGlass.js:699 #: ../js/ui/lookingGlass.js:700
msgid "Downloading" msgid "Downloading"
msgstr "Herunterladen" msgstr "Herunterladen"
#: ../js/ui/lookingGlass.js:724 #: ../js/ui/lookingGlass.js:721
msgid "View Source" msgid "View Source"
msgstr "Quelle zeigen" msgstr "Quelle zeigen"
#: ../js/ui/lookingGlass.js:730 #: ../js/ui/lookingGlass.js:727
msgid "Web Page" msgid "Web Page"
msgstr "Webseite" msgstr "Webseite"
#: ../js/ui/messageTray.js:1189 #: ../js/ui/messageTray.js:1198
msgid "Open" msgid "Open"
msgstr "Öffnen" msgstr "Öffnen"
#: ../js/ui/messageTray.js:2371 #: ../js/ui/messageTray.js:2407
msgid "System Information" msgid "System Information"
msgstr "Systeminformationen" msgstr "Systeminformationen"
#: ../js/ui/networkAgent.js:138 #: ../js/ui/networkAgent.js:143
msgid "Show password"
msgstr "Passwort anzeigen"
#: ../js/ui/networkAgent.js:153
msgid "Connect" msgid "Connect"
msgstr "Verbinden" msgstr "Verbinden"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 ../js/ui/networkAgent.js:260 #: ../js/ui/networkAgent.js:238 ../js/ui/networkAgent.js:250
#: ../js/ui/networkAgent.js:287 ../js/ui/networkAgent.js:307 #: ../js/ui/networkAgent.js:277 ../js/ui/networkAgent.js:297
#: ../js/ui/networkAgent.js:317 #: ../js/ui/networkAgent.js:307
msgid "Password: " msgid "Password: "
msgstr "Passwort:" msgstr "Passwort:"
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253 #: ../js/ui/networkAgent.js:243
msgid "Key: " msgid "Key: "
msgstr "Schlüssel:" msgstr "Schlüssel:"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 ../js/ui/networkAgent.js:303 #: ../js/ui/networkAgent.js:275 ../js/ui/networkAgent.js:293
msgid "Username: " msgid "Username: "
msgstr "Benutzername:" msgstr "Benutzername:"
#: ../js/ui/networkAgent.js:291 #: ../js/ui/networkAgent.js:281
msgid "Identity: " msgid "Identity: "
msgstr "Identität:" msgstr "Identität:"
#: ../js/ui/networkAgent.js:293 #: ../js/ui/networkAgent.js:283
msgid "Private key password: " msgid "Private key password: "
msgstr "Passwort für geheimen Schlüssel:" msgstr "Passwort für geheimen Schlüssel:"
#: ../js/ui/networkAgent.js:305 #: ../js/ui/networkAgent.js:295
msgid "Service: " msgid "Service: "
msgstr "Dienst:" msgstr "Dienst:"
#: ../js/ui/networkAgent.js:334 #: ../js/ui/networkAgent.js:324
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Legitimierung für Funknetzwerk wird benötigt" msgstr "Legitimierung für Funknetzwerk wird benötigt"
#: ../js/ui/networkAgent.js:335 #: ../js/ui/networkAgent.js:325
#, c-format #, c-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network '%s'." "Passwords or encryption keys are required to access the wireless network '%"
"s'."
msgstr "" msgstr ""
"Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« " "Passwörter oder Schlüssel sind erforderlich, um auf das Funknetzwerk »%s« "
"zuzugreifen." "zuzugreifen."
#: ../js/ui/networkAgent.js:339 #: ../js/ui/networkAgent.js:329
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Kabelgebundene 802.1X-Legitimierung" msgstr "Kabelgebundene 802.1X-Legitimierung"
#: ../js/ui/networkAgent.js:341 #: ../js/ui/networkAgent.js:331
msgid "Network name: " msgid "Network name: "
msgstr "Netzwerkname:" msgstr "Netzwerkname:"
#: ../js/ui/networkAgent.js:346 #: ../js/ui/networkAgent.js:336
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-Legitimierung" msgstr "DSL-Legitimierung"
#: ../js/ui/networkAgent.js:353 #: ../js/ui/networkAgent.js:343
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-Code ist erforderlich" msgstr "PIN-Code ist erforderlich"
#: ../js/ui/networkAgent.js:354 #: ../js/ui/networkAgent.js:344
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt." msgstr "Für das mobile Breitbandgerät wird ein PIN-Code benötigt."
#: ../js/ui/networkAgent.js:355 #: ../js/ui/networkAgent.js:345
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: ../js/ui/networkAgent.js:361 #: ../js/ui/networkAgent.js:351
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Passwort der mobilen Breitbandverbindung" msgstr "Passwort der mobilen Breitbandverbindung"
#: ../js/ui/networkAgent.js:362 #: ../js/ui/networkAgent.js:352
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden." msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden."
@ -799,15 +805,15 @@ msgstr "Verbinden mit …"
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
msgstr "ORTE UND GERÄTE" msgstr "ORTE UND GERÄTE"
#: ../js/ui/polkitAuthenticationAgent.js:72 #: ../js/ui/polkitAuthenticationAgent.js:73
msgid "Authentication Required" msgid "Authentication Required"
msgstr "Legitimierung erforderlich" msgstr "Legitimierung erforderlich"
#: ../js/ui/polkitAuthenticationAgent.js:106 #: ../js/ui/polkitAuthenticationAgent.js:107
msgid "Administrator" msgid "Administrator"
msgstr "Systemverwalter" msgstr "Systemverwalter"
#: ../js/ui/polkitAuthenticationAgent.js:174 #: ../js/ui/polkitAuthenticationAgent.js:177
msgid "Authenticate" msgid "Authenticate"
msgstr "Legitimieren" msgstr "Legitimieren"
@ -815,11 +821,11 @@ msgstr "Legitimieren"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262 #: ../js/ui/polkitAuthenticationAgent.js:258
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Entschuldigung, das hat nicht geklappt. Bitte versuchen Sie es erneut." msgstr "Entschuldigung, das hat nicht geklappt. Bitte versuchen Sie es erneut."
#: ../js/ui/polkitAuthenticationAgent.js:274 #: ../js/ui/polkitAuthenticationAgent.js:270
msgid "Password:" msgid "Password:"
msgstr "Passwort:" msgstr "Passwort:"
@ -828,11 +834,11 @@ msgstr "Passwort:"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:709 #: ../js/ui/popupMenu.js:731
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
#: ../js/ui/runDialog.js:208 #: ../js/ui/runDialog.js:209
msgid "Please enter a command:" msgid "Please enter a command:"
msgstr "Bitte geben Sie einen Befehl ein:" msgstr "Bitte geben Sie einen Befehl ein:"
@ -844,6 +850,22 @@ msgstr "Suche läuft …"
msgid "No matching results." msgid "No matching results."
msgstr "Keine passenden Ergebnisse." msgstr "Keine passenden Ergebnisse."
#: ../js/ui/shellEntry.js:30
msgid "Copy"
msgstr "Kopieren"
#: ../js/ui/shellEntry.js:35
msgid "Paste"
msgstr "Einfügen"
#: ../js/ui/shellEntry.js:81
msgid "Show Text"
msgstr "Text anzeigen"
#: ../js/ui/shellEntry.js:83
msgid "Hide Text"
msgstr "Text verbergen"
#: ../js/ui/shellMountOperation.js:285 #: ../js/ui/shellMountOperation.js:285
msgid "Wrong password, please try again" msgid "Wrong password, please try again"
msgstr "Falsches Passwort, bitte versuchen Sie es erneut" msgstr "Falsches Passwort, bitte versuchen Sie es erneut"
@ -877,7 +899,7 @@ msgstr "Springende Tasten"
#: ../js/ui/status/accessibility.js:87 #: ../js/ui/status/accessibility.js:87
msgid "Mouse Keys" msgid "Mouse Keys"
msgstr "Maustasten" msgstr "Tastaturmaus"
#: ../js/ui/status/accessibility.js:91 #: ../js/ui/status/accessibility.js:91
msgid "Universal Access Settings" msgid "Universal Access Settings"
@ -978,7 +1000,7 @@ msgstr "Immer Zugriff gewähren"
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Nur dieses Mal gewähren" msgstr "Nur dieses Mal gewähren"
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1196 #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1204
msgid "Reject" msgid "Reject"
msgstr "Abweisen" msgstr "Abweisen"
@ -1019,11 +1041,11 @@ msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein."
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
#: ../js/ui/status/keyboard.js:72 #: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Tastaturbelegung zeigen" msgstr "Tastaturbelegung zeigen"
#: ../js/ui/status/keyboard.js:77 #: ../js/ui/status/keyboard.js:78
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "Einstellungen für Region und Sprache" msgstr "Einstellungen für Region und Sprache"
@ -1068,13 +1090,13 @@ msgstr "nicht verfügbar"
msgid "connection failed" msgid "connection failed"
msgstr "Verbindung gescheitert" msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1515 #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
msgid "More..." msgid "More..."
msgstr "Mehr ..." msgstr "Mehr ..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1455 #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Verbunden (privat)" msgstr "Verbunden (privat)"
@ -1091,7 +1113,7 @@ msgid "Auto dial-up"
msgstr "Einwählverbindung (automatisch)" msgstr "Einwählverbindung (automatisch)"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1467 #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "%s (automatisch)" msgstr "%s (automatisch)"
@ -1100,47 +1122,47 @@ msgstr "%s (automatisch)"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Bluetooth (automatisch)" msgstr "Bluetooth (automatisch)"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1472
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Drahtlos (automatisch)" msgstr "Drahtlos (automatisch)"
#: ../js/ui/status/network.js:1558 #: ../js/ui/status/network.js:1566
msgid "Enable networking" msgid "Enable networking"
msgstr "Netzwerk aktivieren" msgstr "Netzwerk aktivieren"
#: ../js/ui/status/network.js:1570 #: ../js/ui/status/network.js:1578
msgid "Wired" msgid "Wired"
msgstr "Kabelgebunden" msgstr "Kabelgebunden"
#: ../js/ui/status/network.js:1581 #: ../js/ui/status/network.js:1589
msgid "Wireless" msgid "Wireless"
msgstr "Drahtlos" msgstr "Drahtlos"
#: ../js/ui/status/network.js:1591 #: ../js/ui/status/network.js:1599
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Mobiles Breitband" msgstr "Mobiles Breitband"
#: ../js/ui/status/network.js:1601 #: ../js/ui/status/network.js:1609
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN-Verbindungen" msgstr "VPN-Verbindungen"
#: ../js/ui/status/network.js:1612 #: ../js/ui/status/network.js:1620
msgid "Network Settings" msgid "Network Settings"
msgstr "Netzwerkeinstellungen" msgstr "Netzwerkeinstellungen"
#: ../js/ui/status/network.js:1749 #: ../js/ui/status/network.js:1757
msgid "Connection failed" msgid "Connection failed"
msgstr "Verbindung gescheitert" msgstr "Verbindung gescheitert"
#: ../js/ui/status/network.js:1750 #: ../js/ui/status/network.js:1758
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Aktivierung der Netzwerkverbindung ist gescheitert" msgstr "Aktivierung der Netzwerkverbindung ist gescheitert"
#: ../js/ui/status/network.js:2000 #: ../js/ui/status/network.js:2008
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Netzwerk ist deaktiviert" msgstr "Netzwerk ist deaktiviert"
#: ../js/ui/status/network.js:2125 #: ../js/ui/status/network.js:2133
msgid "Network Manager" msgid "Network Manager"
msgstr "Netzwerk-Verwaltung" msgstr "Netzwerk-Verwaltung"
@ -1248,39 +1270,39 @@ msgid "Invitation"
msgstr "Einladung" msgstr "Einladung"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:325 #: ../js/ui/telepathyClient.js:327
msgid "Call" msgid "Call"
msgstr "Anruf" msgstr "Anruf"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:353 #: ../js/ui/telepathyClient.js:357
msgid "File Transfer" msgid "File Transfer"
msgstr "Dateiübertragung" msgstr "Dateiübertragung"
#: ../js/ui/telepathyClient.js:434 #: ../js/ui/telepathyClient.js:438
msgid "Subscription request" msgid "Subscription request"
msgstr "Abonnementanfrage" msgstr "Abonnementanfrage"
#: ../js/ui/telepathyClient.js:470 #: ../js/ui/telepathyClient.js:474
msgid "Connection error" msgid "Connection error"
msgstr "Verbindungsfehler" msgstr "Verbindungsfehler"
#: ../js/ui/telepathyClient.js:733 #: ../js/ui/telepathyClient.js:741
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s ist angemeldet." msgstr "%s ist angemeldet."
#: ../js/ui/telepathyClient.js:738 #: ../js/ui/telepathyClient.js:746
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s ist abgemeldet." msgstr "%s ist abgemeldet."
#: ../js/ui/telepathyClient.js:741 #: ../js/ui/telepathyClient.js:749
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "»%s« ist abwesend." msgstr "»%s« ist abwesend."
#: ../js/ui/telepathyClient.js:744 #: ../js/ui/telepathyClient.js:752
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s ist beschäftigt." msgstr "%s ist beschäftigt."
@ -1288,35 +1310,35 @@ msgstr "%s ist beschäftigt."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:978 #: ../js/ui/telepathyClient.js:986
#, no-c-format #, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>" msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Gesendet am <b>%A</b> um <b>%X</b> " msgstr "Gesendet am <b>%A</b> um <b>%X</b> "
#. Translators: this is a time format in the style of "Wednesday, May 25", #. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year. #. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:984 #: ../js/ui/telepathyClient.js:992
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>" msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b>" msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year. #. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:989 #: ../js/ui/telepathyClient.js:997
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y" msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b> %Y" msgstr "Gesendet am <b>%A</b>, <b>%d. %B</b> %Y"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: ../js/ui/telepathyClient.js:1031 #: ../js/ui/telepathyClient.js:1039
#, c-format #, c-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s heißt jetzt %s" msgstr "%s heißt jetzt %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. #. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1140 #: ../js/ui/telepathyClient.js:1148
#, c-format #, c-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Einladung zum Betreten von %s" msgstr "Einladung zum Betreten von %s"
@ -1324,34 +1346,35 @@ msgstr "Einladung zum Betreten von %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. #. * for example.
#: ../js/ui/telepathyClient.js:1148 #: ../js/ui/telepathyClient.js:1156
#, c-format #, c-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s lädt Sie ein, %s beizutreten" msgstr "%s lädt Sie ein, %s beizutreten"
#: ../js/ui/telepathyClient.js:1150 ../js/ui/telepathyClient.js:1239 #: ../js/ui/telepathyClient.js:1158 ../js/ui/telepathyClient.js:1248
#: ../js/ui/telepathyClient.js:1343 #: ../js/ui/telepathyClient.js:1352
msgid "Decline" msgid "Decline"
msgstr "Ablehnen" msgstr "Ablehnen"
#: ../js/ui/telepathyClient.js:1151 ../js/ui/telepathyClient.js:1240 #: ../js/ui/telepathyClient.js:1159 ../js/ui/telepathyClient.js:1249
#: ../js/ui/telepathyClient.js:1344 #: ../js/ui/telepathyClient.js:1353
msgid "Accept" msgid "Accept"
msgstr "Annehmen" msgstr "Annehmen"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1184 #: ../js/ui/telepathyClient.js:1192
#, c-format #, c-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Video-Anruf von %s" msgstr "Video-Anruf von %s"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1187 #: ../js/ui/telepathyClient.js:1195
#, c-format #, c-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Anruf von %s" msgstr "Anruf von %s"
#: ../js/ui/telepathyClient.js:1197 #. translators: this is a button label (verb), not a noun
#: ../js/ui/telepathyClient.js:1206
msgid "Answer" msgid "Answer"
msgstr "Antworten" msgstr "Antworten"
@ -1360,112 +1383,113 @@ msgstr "Antworten"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. #.
#: ../js/ui/telepathyClient.js:1233 #: ../js/ui/telepathyClient.js:1242
#, c-format #, c-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s sendet Ihnen %s" msgstr "%s sendet Ihnen %s"
#. To translators: The parameter is the contact's alias #. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1308 #: ../js/ui/telepathyClient.js:1317
#, c-format #, c-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen" msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen"
#: ../js/ui/telepathyClient.js:1406 #: ../js/ui/telepathyClient.js:1415
msgid "Network error" msgid "Network error"
msgstr "Netzwerkfehler" msgstr "Netzwerkfehler"
#: ../js/ui/telepathyClient.js:1408 #: ../js/ui/telepathyClient.js:1417
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Legitimierung fehlgeschlagen" msgstr "Legitimierung fehlgeschlagen"
#: ../js/ui/telepathyClient.js:1410 #: ../js/ui/telepathyClient.js:1419
msgid "Encryption error" msgid "Encryption error"
msgstr "Verschlüsselungsfehler" msgstr "Verschlüsselungsfehler"
#: ../js/ui/telepathyClient.js:1412 #: ../js/ui/telepathyClient.js:1421
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Zertifikat wurde nicht bereitgestellt" msgstr "Zertifikat wurde nicht bereitgestellt"
#: ../js/ui/telepathyClient.js:1414 #: ../js/ui/telepathyClient.js:1423
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "Zertifikat nicht vertrauenswürdig" msgstr "Zertifikat nicht vertrauenswürdig"
#: ../js/ui/telepathyClient.js:1416 #: ../js/ui/telepathyClient.js:1425
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Zertifikat abgelaufen" msgstr "Zertifikat abgelaufen"
#: ../js/ui/telepathyClient.js:1418 #: ../js/ui/telepathyClient.js:1427
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Zertifikat nicht aktiviert" msgstr "Zertifikat nicht aktiviert"
#: ../js/ui/telepathyClient.js:1420 #: ../js/ui/telepathyClient.js:1429
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "Rechnername des Zertifikats stimmt nicht überein" msgstr "Rechnername des Zertifikats stimmt nicht überein"
#: ../js/ui/telepathyClient.js:1422 #: ../js/ui/telepathyClient.js:1431
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "Fingerabdruck des Zertifikats stimmt nicht überein" msgstr "Fingerabdruck des Zertifikats stimmt nicht überein"
#: ../js/ui/telepathyClient.js:1424 #: ../js/ui/telepathyClient.js:1433
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Selbstsigniertes Zertifikat" msgstr "Selbstsigniertes Zertifikat"
#: ../js/ui/telepathyClient.js:1426 #: ../js/ui/telepathyClient.js:1435
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "Der Status ist auf »Abgemeldet« gesetzt" msgstr "Der Status ist auf »Abgemeldet« gesetzt"
#: ../js/ui/telepathyClient.js:1428 #: ../js/ui/telepathyClient.js:1437
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "Verschlüsselung ist nicht verfügbar" msgstr "Verschlüsselung ist nicht verfügbar"
#: ../js/ui/telepathyClient.js:1430 #: ../js/ui/telepathyClient.js:1439
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "Zertifikat ist ungültig" msgstr "Zertifikat ist ungültig"
#: ../js/ui/telepathyClient.js:1432 #: ../js/ui/telepathyClient.js:1441
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Verbindungsaufbau wurde verweigert" msgstr "Verbindungsaufbau wurde verweigert"
#: ../js/ui/telepathyClient.js:1434 #: ../js/ui/telepathyClient.js:1443
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "Verbindung kann nicht hergestellt werden" msgstr "Verbindung kann nicht hergestellt werden"
#: ../js/ui/telepathyClient.js:1436 #: ../js/ui/telepathyClient.js:1445
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Verbindung wurde unterbrochen" msgstr "Verbindung wurde unterbrochen"
#: ../js/ui/telepathyClient.js:1438 #: ../js/ui/telepathyClient.js:1447
msgid "This resource is already connected to the server" msgid "This resource is already connected to the server"
msgstr "Diese Ressource ist bereits mit dem Server verbunden" msgstr "Diese Ressource ist bereits mit dem Server verbunden"
#: ../js/ui/telepathyClient.js:1440 #: ../js/ui/telepathyClient.js:1449
msgid "Connection has been replaced by a new connection using the same resource" msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource " "Die Verbindung wurde durch eine neue Verbindung mit der gleichen Ressource "
"ersetzt" "ersetzt"
#: ../js/ui/telepathyClient.js:1442 #: ../js/ui/telepathyClient.js:1451
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "Dieses Konto ist bereits auf dem Server vorhanden" msgstr "Dieses Konto ist bereits auf dem Server vorhanden"
#: ../js/ui/telepathyClient.js:1444 #: ../js/ui/telepathyClient.js:1453
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"Der Server ist derzeit überlastet und kann die Verbindung nicht annehmen" "Der Server ist derzeit überlastet und kann die Verbindung nicht annehmen"
#: ../js/ui/telepathyClient.js:1446 #: ../js/ui/telepathyClient.js:1455
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Zertifikat wurde zurückgezogen" msgstr "Zertifikat wurde zurückgezogen"
#: ../js/ui/telepathyClient.js:1448 #: ../js/ui/telepathyClient.js:1457
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"Das Zertifikat verwendet einen unsicheren Chiffrier-Algorithmus oder ist " "Das Zertifikat verwendet einen unsicheren Chiffrier-Algorithmus oder ist "
"kryptografisch schwach" "kryptografisch schwach"
#: ../js/ui/telepathyClient.js:1450 #: ../js/ui/telepathyClient.js:1459
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -1476,68 +1500,68 @@ msgstr ""
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. #. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1459 #: ../js/ui/telepathyClient.js:1468
#, c-format #, c-format
msgid "Connection to %s failed" msgid "Connection to %s failed"
msgstr "Verbindung zu %s ist fehlgeschlagen" msgstr "Verbindung zu %s ist fehlgeschlagen"
#: ../js/ui/telepathyClient.js:1468 #: ../js/ui/telepathyClient.js:1477
msgid "Reconnect" msgid "Reconnect"
msgstr "Erneut verbinden" msgstr "Erneut verbinden"
#: ../js/ui/telepathyClient.js:1469 #: ../js/ui/telepathyClient.js:1478
msgid "Edit account" msgid "Edit account"
msgstr "Konto bearbeiten" msgstr "Konto bearbeiten"
#: ../js/ui/telepathyClient.js:1515 #: ../js/ui/telepathyClient.js:1524
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Unbekannter Grund" msgstr "Unbekannter Grund"
#: ../js/ui/userMenu.js:153 #: ../js/ui/userMenu.js:145
msgid "Hidden" msgid "Hidden"
msgstr "Verborgen" msgstr "Verborgen"
#: ../js/ui/userMenu.js:159 #: ../js/ui/userMenu.js:151
msgid "Idle" msgid "Idle"
msgstr "Untätig" msgstr "Untätig"
#: ../js/ui/userMenu.js:162 #: ../js/ui/userMenu.js:154
msgid "Unavailable" msgid "Unavailable"
msgstr "Nicht verfügbar" msgstr "Nicht verfügbar"
#: ../js/ui/userMenu.js:523 ../js/ui/userMenu.js:527 ../js/ui/userMenu.js:597 #: ../js/ui/userMenu.js:547 ../js/ui/userMenu.js:551 ../js/ui/userMenu.js:621
msgid "Power Off..." msgid "Power Off..."
msgstr "Ausschalten …" msgstr "Ausschalten …"
#: ../js/ui/userMenu.js:559 #: ../js/ui/userMenu.js:583
msgid "Notifications" msgid "Notifications"
msgstr "Benachrichtigungen" msgstr "Benachrichtigungen"
#: ../js/ui/userMenu.js:567 #: ../js/ui/userMenu.js:591
msgid "Online Accounts" msgid "Online Accounts"
msgstr "Online-Konten" msgstr "Online-Konten"
#: ../js/ui/userMenu.js:571 #: ../js/ui/userMenu.js:595
msgid "System Settings" msgid "System Settings"
msgstr "Systemeinstellungen" msgstr "Systemeinstellungen"
#: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:602
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Bildschirm sperren" msgstr "Bildschirm sperren"
#: ../js/ui/userMenu.js:583 #: ../js/ui/userMenu.js:607
msgid "Switch User" msgid "Switch User"
msgstr "Benutzer wechseln" msgstr "Benutzer wechseln"
#: ../js/ui/userMenu.js:588 #: ../js/ui/userMenu.js:612
msgid "Log Out..." msgid "Log Out..."
msgstr "Abmelden …" msgstr "Abmelden …"
#: ../js/ui/userMenu.js:616 #: ../js/ui/userMenu.js:640
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt" msgstr "Ihr Anwesenheitsstatus wird auf »Beschäftigt« gesetzt"
#: ../js/ui/userMenu.js:617 #: ../js/ui/userMenu.js:641
msgid "" msgid ""
"Notifications are now disabled, including chat messages. Your online status " "Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages." "has been adjusted to let others know that you might not see their messages."
@ -1550,20 +1574,15 @@ msgstr ""
#. in the search entry when no search is #. in the search entry when no search is
#. active; it should not exceed ~30 #. active; it should not exceed ~30
#. characters. #. characters.
#: ../js/ui/viewSelector.js:120 #: ../js/ui/viewSelector.js:121
msgid "Type to search..." msgid "Type to search..."
msgstr "Suchbegriff eingeben …" msgstr "Suchbegriff eingeben …"
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261 #: ../js/ui/viewSelector.js:142 ../src/shell-util.c:261
msgid "Search" msgid "Search"
msgstr "Suchen" msgstr "Suchen"
#: ../js/ui/windowAttentionHandler.js:39 #: ../js/ui/windowAttentionHandler.js:35
#, c-format
msgid "%s has finished starting"
msgstr "Start von %s ist abgeschlossen"
#: ../js/ui/windowAttentionHandler.js:41
#, c-format #, c-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "»%s« ist bereit" msgstr "»%s« ist bereit"
@ -1598,7 +1617,7 @@ msgstr "Version ausgeben"
msgid "Mode used by GDM for login screen" msgid "Mode used by GDM for login screen"
msgstr "Der durch GDM im Anmeldefenster verwendete Modus" msgstr "Der durch GDM im Anmeldefenster verwendete Modus"
#: ../src/shell-app.c:581 #: ../src/shell-app.c:579
#, c-format #, c-format
msgid "Failed to launch '%s'" msgid "Failed to launch '%s'"
msgstr "»%s« konnte nicht gestartet werden" msgstr "»%s« konnte nicht gestartet werden"
@ -1635,6 +1654,21 @@ msgstr "Dateisystem"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "Show password"
#~ msgstr "Passwort anzeigen"
#~ msgid "%s has not emitted any errors."
#~ msgstr "%s hat keine Fehler ausgegeben."
#~ msgid "Hide Errors"
#~ msgstr "Fehler verbergen"
#~ msgid "Show Errors"
#~ msgstr "Fehler anzeigen"
#~ msgid "%s has finished starting"
#~ msgstr "Start von %s ist abgeschlossen"
#~ msgid "If true, display onscreen keyboard." #~ msgid "If true, display onscreen keyboard."
#~ msgstr "Legt fest, ob eine Bildschirmtastatur angezeigt wird." #~ msgstr "Legt fest, ob eine Bildschirmtastatur angezeigt wird."

File diff suppressed because it is too large Load Diff

1317
po/eo.po

File diff suppressed because it is too large Load Diff

328
po/es.po
View File

@ -2,22 +2,22 @@
# Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER
# This file is distributed under the same license as the gnome-shell package. # This file is distributed under the same license as the gnome-shell package.
# Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011. # Benjamín Valero Espinosa <benjavalero@gmail.com>, 2011.
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011. # Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011.
# Jorge González <jorgegonz@svn.gnome.org>, 2009, 2010, 2011.
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell.master\n" "Project-Id-Version: gnome-shell.master\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n" "shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-09-19 11:34+0000\n" "POT-Creation-Date: 2011-10-04 20:49+0000\n"
"PO-Revision-Date: 2011-09-19 14:57+0200\n" "PO-Revision-Date: 2011-10-06 23:37+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n" "Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
"Language-Team: Español <gnome-es-list@gnome.org>\n" "Language-Team: Español; Castellano <gnome-es-list@gnome.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n"
#: ../data/gnome-shell.desktop.in.in.h:1 #: ../data/gnome-shell.desktop.in.in.h:1
msgid "GNOME Shell" msgid "GNOME Shell"
@ -98,16 +98,16 @@ msgid ""
"at the optimal thread count on the system." "at the optimal thread count on the system."
msgstr "" msgstr ""
"Establece la tubería GStreamer usada para codificar grabaciones. Sigue la " "Establece la tubería GStreamer usada para codificar grabaciones. Sigue la "
"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») " "sintaxis usada para gst-launch. La tubería debería tener un sumidero "
"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. " "(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se "
"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese " "graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida "
"punto se escibirá en el archivo de salida. No obstante la tubería también " "de ese punto se escibirá en el archivo de salida. No obstante la tubería "
"puede tomar parte en su propia salida; esto se puede usar para enviar la " "también puede tomar parte en su propia salida; esto se puede usar para "
"salida a un servidor «icecast» a través de shout2send o similar. Cuando no " "enviar la salida a un servidor «icecast» a través de shout2send o similar. "
"está establecido o lo está a un valor vacío, se usará la tubería " "Cuando no está establecido o lo está a un valor vacío, se usará la tubería "
"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads=" "predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 "
"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como " "threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T "
"suposición para el número de hilos óptimos en el sistema." "como suposición para el número de hilos óptimos en el sistema."
#: ../data/org.gnome.shell.gschema.xml.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock" msgid "Show date in clock"
@ -204,8 +204,8 @@ msgid "Not listed?"
msgstr "¿No está listado?" msgstr "¿No está listado?"
#: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426 #: ../js/gdm/loginDialog.js:1004 ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:158 #: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:165
#: ../js/ui/polkitAuthenticationAgent.js:170 ../js/ui/status/bluetooth.js:480 #: ../js/ui/polkitAuthenticationAgent.js:171 ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "Cancelar" msgstr "Cancelar"
@ -218,8 +218,8 @@ msgstr "Iniciar sesión"
msgid "Login Window" msgid "Login Window"
msgstr "Ventana de inicio de sesión" msgstr "Ventana de inicio de sesión"
#: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:520 #: ../js/gdm/powerMenu.js:116 ../js/ui/userMenu.js:514
#: ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:591 #: ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:585
msgid "Suspend" msgid "Suspend"
msgstr "Suspender" msgstr "Suspender"
@ -283,12 +283,16 @@ msgstr "Se ha añadido %s a sus favoritos."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "Se ha quitado %s de sus favoritos." msgstr "Se ha quitado %s de sus favoritos."
#: ../js/ui/autorunManager.js:592 #: ../js/ui/autorunManager.js:280
msgid "Removable Devices"
msgstr "Dispositivos extraíbles"
#: ../js/ui/autorunManager.js:590
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Abrir con %s" msgstr "Abrir con %s"
#: ../js/ui/autorunManager.js:618 #: ../js/ui/autorunManager.js:616
msgid "Eject" msgid "Eject"
msgstr "Expulsar" msgstr "Expulsar"
@ -443,15 +447,15 @@ msgstr "La semana que viene"
msgid "Unknown" msgid "Unknown"
msgstr "Desconocido" msgstr "Desconocido"
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:147 #: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:139
msgid "Available" msgid "Available"
msgstr "Disponible" msgstr "Disponible"
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:156 #: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:148
msgid "Away" msgid "Away"
msgstr "Ausente" msgstr "Ausente"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:150 #: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:142
msgid "Busy" msgid "Busy"
msgstr "Ocupado" msgstr "Ocupado"
@ -463,7 +467,7 @@ msgstr "Desconectado"
msgid "CONTACTS" msgid "CONTACTS"
msgstr "CONTACTOS" msgstr "CONTACTOS"
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1196 #: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1204
msgid "Remove" msgid "Remove"
msgstr "Quitar" msgstr "Quitar"
@ -599,7 +603,12 @@ msgstr "Instalar"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?"
#: ../js/ui/keyboard.js:517 ../js/ui/status/power.js:211 #: ../js/ui/keyboard.js:308
#| msgid "Retry"
msgid "tray"
msgstr "bandeja"
#: ../js/ui/keyboard.js:530 ../js/ui/status/power.js:211
msgid "Keyboard" msgid "Keyboard"
msgstr "Teclado" msgstr "Teclado"
@ -629,103 +638,103 @@ msgstr "Caducado"
msgid "Downloading" msgid "Downloading"
msgstr "Descargando" msgstr "Descargando"
#: ../js/ui/lookingGlass.js:724 #: ../js/ui/lookingGlass.js:720
msgid "View Source" msgid "View Source"
msgstr "Ver fuente" msgstr "Ver fuente"
#: ../js/ui/lookingGlass.js:730 #: ../js/ui/lookingGlass.js:726
msgid "Web Page" msgid "Web Page"
msgstr "Página web" msgstr "Página web"
#: ../js/ui/messageTray.js:1189 #: ../js/ui/messageTray.js:1197
msgid "Open" msgid "Open"
msgstr "Abrir" msgstr "Abrir"
#: ../js/ui/messageTray.js:2368 #: ../js/ui/messageTray.js:2406
msgid "System Information" msgid "System Information"
msgstr "Información del sistema" msgstr "Información del sistema"
#: ../js/ui/networkAgent.js:138 #: ../js/ui/networkAgent.js:145
msgid "Show password" msgid "Show password"
msgstr "Mostrar contraseña" msgstr "Mostrar contraseña"
#: ../js/ui/networkAgent.js:153 #: ../js/ui/networkAgent.js:160
msgid "Connect" msgid "Connect"
msgstr "Conectar" msgstr "Conectar"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 ../js/ui/networkAgent.js:260 #: ../js/ui/networkAgent.js:255 ../js/ui/networkAgent.js:267
#: ../js/ui/networkAgent.js:287 ../js/ui/networkAgent.js:307 #: ../js/ui/networkAgent.js:294 ../js/ui/networkAgent.js:314
#: ../js/ui/networkAgent.js:317 #: ../js/ui/networkAgent.js:324
msgid "Password: " msgid "Password: "
msgstr "Contraseña: " msgstr "Contraseña: "
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253 #: ../js/ui/networkAgent.js:260
msgid "Key: " msgid "Key: "
msgstr "Clave:" msgstr "Clave:"
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 ../js/ui/networkAgent.js:303 #: ../js/ui/networkAgent.js:292 ../js/ui/networkAgent.js:310
msgid "Username: " msgid "Username: "
msgstr "Nombre de usuario:" msgstr "Nombre de usuario:"
#: ../js/ui/networkAgent.js:291 #: ../js/ui/networkAgent.js:298
msgid "Identity: " msgid "Identity: "
msgstr "Identidad:" msgstr "Identidad:"
#: ../js/ui/networkAgent.js:293 #: ../js/ui/networkAgent.js:300
msgid "Private key password: " msgid "Private key password: "
msgstr "Contraseña de la clave privada:" msgstr "Contraseña de la clave privada:"
#: ../js/ui/networkAgent.js:305 #: ../js/ui/networkAgent.js:312
msgid "Service: " msgid "Service: "
msgstr "Servicio:" msgstr "Servicio:"
#: ../js/ui/networkAgent.js:334 #: ../js/ui/networkAgent.js:341
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "La red inalámbrica requiere autenticación" msgstr "La red inalámbrica requiere autenticación"
#: ../js/ui/networkAgent.js:335 #: ../js/ui/networkAgent.js:342
#, c-format #, c-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network '%" "Passwords or encryption keys are required to access the wireless network "
"s'." "'%s'."
msgstr "" msgstr ""
"Se necesitan contraseñas o claves de cifrado para acceder a la red " "Se necesitan contraseñas o claves de cifrado para acceder a la red "
"inalámbrica «%s»." "inalámbrica «%s»."
#: ../js/ui/networkAgent.js:339 #: ../js/ui/networkAgent.js:346
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Autenticación 802.1X cableada" msgstr "Autenticación 802.1X cableada"
#: ../js/ui/networkAgent.js:341 #: ../js/ui/networkAgent.js:348
msgid "Network name: " msgid "Network name: "
msgstr "Nombre de la red" msgstr "Nombre de la red"
#: ../js/ui/networkAgent.js:346 #: ../js/ui/networkAgent.js:353
msgid "DSL authentication" msgid "DSL authentication"
msgstr "Autenticación DSL" msgstr "Autenticación DSL"
#: ../js/ui/networkAgent.js:353 #: ../js/ui/networkAgent.js:360
msgid "PIN code required" msgid "PIN code required"
msgstr "Código PIN requerido" msgstr "Código PIN requerido"
#: ../js/ui/networkAgent.js:354 #: ../js/ui/networkAgent.js:361
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil" msgstr "Se necesita un código PIN para el dispositivo de banda ancha móvil"
#: ../js/ui/networkAgent.js:355 #: ../js/ui/networkAgent.js:362
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: ../js/ui/networkAgent.js:361 #: ../js/ui/networkAgent.js:368
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Contraseña de la red de banda ancha móvil" msgstr "Contraseña de la red de banda ancha móvil"
#: ../js/ui/networkAgent.js:362 #: ../js/ui/networkAgent.js:369
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Se requiere una contraseña para conectar a «%s»." msgstr "Se requiere una contraseña para conectar a «%s»."
@ -789,7 +798,7 @@ msgstr "Se necesita autenticación"
msgid "Administrator" msgid "Administrator"
msgstr "Administrador" msgstr "Administrador"
#: ../js/ui/polkitAuthenticationAgent.js:174 #: ../js/ui/polkitAuthenticationAgent.js:175
msgid "Authenticate" msgid "Authenticate"
msgstr "Autenticar" msgstr "Autenticar"
@ -797,11 +806,11 @@ msgstr "Autenticar"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262 #: ../js/ui/polkitAuthenticationAgent.js:256
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Inténtelo de nuevo," msgstr "Inténtelo de nuevo,"
#: ../js/ui/polkitAuthenticationAgent.js:274 #: ../js/ui/polkitAuthenticationAgent.js:268
msgid "Password:" msgid "Password:"
msgstr "Contraseña:" msgstr "Contraseña:"
@ -810,7 +819,7 @@ msgstr "Contraseña:"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:687 #: ../js/ui/popupMenu.js:731
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -838,7 +847,6 @@ msgstr "Ampliación"
#. 'screen-reader-enabled'); #. 'screen-reader-enabled');
#. this.menu.addMenuItem(screenReader); #. this.menu.addMenuItem(screenReader);
#: ../js/ui/status/accessibility.js:71 #: ../js/ui/status/accessibility.js:71
#| msgid "Screen Reader"
msgid "Screen Keyboard" msgid "Screen Keyboard"
msgstr "Teclado en pantalla" msgstr "Teclado en pantalla"
@ -960,7 +968,7 @@ msgstr "Conceder acceso siempre"
msgid "Grant this time only" msgid "Grant this time only"
msgstr "Conceder sólo esta vez" msgstr "Conceder sólo esta vez"
#: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1196 #: ../js/ui/status/bluetooth.js:392 ../js/ui/telepathyClient.js:1200
msgid "Reject" msgid "Reject"
msgstr "Rechazar" msgstr "Rechazar"
@ -1000,11 +1008,11 @@ msgstr "Introduzca el PIN mencionado en el dispositivo."
msgid "OK" msgid "OK"
msgstr "Aceptar" msgstr "Aceptar"
#: ../js/ui/status/keyboard.js:72 #: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Mostrar la distribución del teclado" msgstr "Mostrar la distribución del teclado"
#: ../js/ui/status/keyboard.js:77 #: ../js/ui/status/keyboard.js:78
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "Configuración de región e idioma" msgstr "Configuración de región e idioma"
@ -1049,13 +1057,13 @@ msgstr "no disponible"
msgid "connection failed" msgid "connection failed"
msgstr "falló la conexión" msgstr "falló la conexión"
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1515 #: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1523
msgid "More..." msgid "More..."
msgstr "Más…" msgstr "Más…"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1455 #: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1458
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Conectada (privada)" msgstr "Conectada (privada)"
@ -1072,7 +1080,7 @@ msgid "Auto dial-up"
msgstr "Marcado automático" msgstr "Marcado automático"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1467 #: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1470
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "%s automática" msgstr "%s automática"
@ -1081,47 +1089,47 @@ msgstr "%s automática"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Bluetooth automático" msgstr "Bluetooth automático"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1472
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Inalámbrica automática" msgstr "Inalámbrica automática"
#: ../js/ui/status/network.js:1558 #: ../js/ui/status/network.js:1566
msgid "Enable networking" msgid "Enable networking"
msgstr "Activar red" msgstr "Activar red"
#: ../js/ui/status/network.js:1570 #: ../js/ui/status/network.js:1578
msgid "Wired" msgid "Wired"
msgstr "Cableada" msgstr "Cableada"
#: ../js/ui/status/network.js:1581 #: ../js/ui/status/network.js:1589
msgid "Wireless" msgid "Wireless"
msgstr "Inalámbrica" msgstr "Inalámbrica"
#: ../js/ui/status/network.js:1591 #: ../js/ui/status/network.js:1599
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Banda ancha móvil" msgstr "Banda ancha móvil"
#: ../js/ui/status/network.js:1601 #: ../js/ui/status/network.js:1609
msgid "VPN Connections" msgid "VPN Connections"
msgstr "Conexiones VPN" msgstr "Conexiones VPN"
#: ../js/ui/status/network.js:1612 #: ../js/ui/status/network.js:1620
msgid "Network Settings" msgid "Network Settings"
msgstr "Configuración de la red" msgstr "Configuración de la red"
#: ../js/ui/status/network.js:1749 #: ../js/ui/status/network.js:1757
msgid "Connection failed" msgid "Connection failed"
msgstr "Falló la conexión" msgstr "Falló la conexión"
#: ../js/ui/status/network.js:1750 #: ../js/ui/status/network.js:1758
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Falló la activación de la conexión de red" msgstr "Falló la activación de la conexión de red"
#: ../js/ui/status/network.js:2000 #: ../js/ui/status/network.js:2008
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "La red está desactivada" msgstr "La red está desactivada"
#: ../js/ui/status/network.js:2125 #: ../js/ui/status/network.js:2133
msgid "Network Manager" msgid "Network Manager"
msgstr "Gestor de la red" msgstr "Gestor de la red"
@ -1229,39 +1237,39 @@ msgid "Invitation"
msgstr "Invitación" msgstr "Invitación"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:325 #: ../js/ui/telepathyClient.js:327
msgid "Call" msgid "Call"
msgstr "Llamar" msgstr "Llamar"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:353 #: ../js/ui/telepathyClient.js:357
msgid "File Transfer" msgid "File Transfer"
msgstr "Transferencia de archivos" msgstr "Transferencia de archivos"
#: ../js/ui/telepathyClient.js:434 #: ../js/ui/telepathyClient.js:438
msgid "Subscription request" msgid "Subscription request"
msgstr "Solicitud de suscripción" msgstr "Solicitud de suscripción"
#: ../js/ui/telepathyClient.js:470 #: ../js/ui/telepathyClient.js:474
msgid "Connection error" msgid "Connection error"
msgstr "Error de conexión" msgstr "Error de conexión"
#: ../js/ui/telepathyClient.js:733 #: ../js/ui/telepathyClient.js:737
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s está conectado/a." msgstr "%s está conectado/a."
#: ../js/ui/telepathyClient.js:738 #: ../js/ui/telepathyClient.js:742
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s está desconectado/a." msgstr "%s está desconectado/a."
#: ../js/ui/telepathyClient.js:741 #: ../js/ui/telepathyClient.js:745
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s está ausente." msgstr "%s está ausente."
#: ../js/ui/telepathyClient.js:744 #: ../js/ui/telepathyClient.js:748
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s está ocupado/a." msgstr "%s está ocupado/a."
@ -1269,35 +1277,35 @@ msgstr "%s está ocupado/a."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:978 #: ../js/ui/telepathyClient.js:982
#, no-c-format #, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>" msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>" msgstr "Enviado el <b>%A</b> a las <b>%H:%M</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25", #. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year. #. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:984 #: ../js/ui/telepathyClient.js:988
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>" msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>" msgstr "Enviado el <b>%A</b>, <b>%d de %B</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year. #. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:989 #: ../js/ui/telepathyClient.js:993
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y" msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y" msgstr "Enviado el <b>%A</b>, <b>%d de %B</b> de %Y"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: ../js/ui/telepathyClient.js:1031 #: ../js/ui/telepathyClient.js:1035
#, c-format #, c-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "Ahora %s se llama %s" msgstr "Ahora %s se llama %s"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. #. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1140 #: ../js/ui/telepathyClient.js:1144
#, c-format #, c-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "Invitación a %s" msgstr "Invitación a %s"
@ -1305,34 +1313,34 @@ msgstr "Invitación a %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. #. * for example.
#: ../js/ui/telepathyClient.js:1148 #: ../js/ui/telepathyClient.js:1152
#, c-format #, c-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s le está invitando a unirse a %s" msgstr "%s le está invitando a unirse a %s"
#: ../js/ui/telepathyClient.js:1150 ../js/ui/telepathyClient.js:1239 #: ../js/ui/telepathyClient.js:1154 ../js/ui/telepathyClient.js:1243
#: ../js/ui/telepathyClient.js:1343 #: ../js/ui/telepathyClient.js:1347
msgid "Decline" msgid "Decline"
msgstr "Rechazar" msgstr "Rechazar"
#: ../js/ui/telepathyClient.js:1151 ../js/ui/telepathyClient.js:1240 #: ../js/ui/telepathyClient.js:1155 ../js/ui/telepathyClient.js:1244
#: ../js/ui/telepathyClient.js:1344 #: ../js/ui/telepathyClient.js:1348
msgid "Accept" msgid "Accept"
msgstr "Aceptar" msgstr "Aceptar"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1184 #: ../js/ui/telepathyClient.js:1188
#, c-format #, c-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "Videollamada de %s" msgstr "Videollamada de %s"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1187 #: ../js/ui/telepathyClient.js:1191
#, c-format #, c-format
msgid "Call from %s" msgid "Call from %s"
msgstr "Llamada de %s" msgstr "Llamada de %s"
#: ../js/ui/telepathyClient.js:1197 #: ../js/ui/telepathyClient.js:1201
msgid "Answer" msgid "Answer"
msgstr "Responder" msgstr "Responder"
@ -1341,112 +1349,112 @@ msgstr "Responder"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. #.
#: ../js/ui/telepathyClient.js:1233 #: ../js/ui/telepathyClient.js:1237
#, c-format #, c-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s le está enviando %s" msgstr "%s le está enviando %s"
#. To translators: The parameter is the contact's alias #. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1308 #: ../js/ui/telepathyClient.js:1312
#, c-format #, c-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s solicita permiso para ver cuándo está en línea" msgstr "%s solicita permiso para ver cuándo está en línea"
#: ../js/ui/telepathyClient.js:1406 #: ../js/ui/telepathyClient.js:1410
msgid "Network error" msgid "Network error"
msgstr "Error de la red" msgstr "Error de la red"
#: ../js/ui/telepathyClient.js:1408 #: ../js/ui/telepathyClient.js:1412
msgid "Authentication failed" msgid "Authentication failed"
msgstr "Falló la autenticación" msgstr "Falló la autenticación"
#: ../js/ui/telepathyClient.js:1410 #: ../js/ui/telepathyClient.js:1414
msgid "Encryption error" msgid "Encryption error"
msgstr "Error de cifrado" msgstr "Error de cifrado"
#: ../js/ui/telepathyClient.js:1412 #: ../js/ui/telepathyClient.js:1416
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "Certificado no proporcionado" msgstr "Certificado no proporcionado"
#: ../js/ui/telepathyClient.js:1414 #: ../js/ui/telepathyClient.js:1418
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "No se confía en el certificado" msgstr "No se confía en el certificado"
#: ../js/ui/telepathyClient.js:1416 #: ../js/ui/telepathyClient.js:1420
msgid "Certificate expired" msgid "Certificate expired"
msgstr "Certificado caducado" msgstr "Certificado caducado"
#: ../js/ui/telepathyClient.js:1418 #: ../js/ui/telepathyClient.js:1422
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "Certificado no activado" msgstr "Certificado no activado"
#: ../js/ui/telepathyClient.js:1420 #: ../js/ui/telepathyClient.js:1424
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "El nombre del servidor dle certificado no coincide" msgstr "El nombre del servidor dle certificado no coincide"
#: ../js/ui/telepathyClient.js:1422 #: ../js/ui/telepathyClient.js:1426
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "La huella del certificado no coincide" msgstr "La huella del certificado no coincide"
#: ../js/ui/telepathyClient.js:1424 #: ../js/ui/telepathyClient.js:1428
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "Certificado autofirmado" msgstr "Certificado autofirmado"
#: ../js/ui/telepathyClient.js:1426 #: ../js/ui/telepathyClient.js:1430
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "El estado está establecido a «desconectado»" msgstr "El estado está establecido a «desconectado»"
#: ../js/ui/telepathyClient.js:1428 #: ../js/ui/telepathyClient.js:1432
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "El cifrado no está disponible" msgstr "El cifrado no está disponible"
#: ../js/ui/telepathyClient.js:1430 #: ../js/ui/telepathyClient.js:1434
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "El certificado no es válido" msgstr "El certificado no es válido"
#: ../js/ui/telepathyClient.js:1432 #: ../js/ui/telepathyClient.js:1436
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "Se ha rechazado la conexión" msgstr "Se ha rechazado la conexión"
#: ../js/ui/telepathyClient.js:1434 #: ../js/ui/telepathyClient.js:1438
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "No se puede establecer la conexión" msgstr "No se puede establecer la conexión"
#: ../js/ui/telepathyClient.js:1436 #: ../js/ui/telepathyClient.js:1440
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "Se ha perdido la conexión" msgstr "Se ha perdido la conexión"
#: ../js/ui/telepathyClient.js:1438 #: ../js/ui/telepathyClient.js:1442
msgid "This resource is already connected to the server" msgid "This resource is already connected to the server"
msgstr "Este recurso ya está conectado al servidor" msgstr "Este recurso ya está conectado al servidor"
#: ../js/ui/telepathyClient.js:1440 #: ../js/ui/telepathyClient.js:1444
msgid "" msgid ""
"Connection has been replaced by a new connection using the same resource" "Connection has been replaced by a new connection using the same resource"
msgstr "" msgstr ""
"Se ha sustituido la conexión por una nueva conexión usando el mismo recurso" "Se ha sustituido la conexión por una nueva conexión usando el mismo recurso"
#: ../js/ui/telepathyClient.js:1442 #: ../js/ui/telepathyClient.js:1446
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "La cuenta ya existe en el servidor" msgstr "La cuenta ya existe en el servidor"
#: ../js/ui/telepathyClient.js:1444 #: ../js/ui/telepathyClient.js:1448
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "" msgstr ""
"Actualmente el servidor está muy ocupado intentando gestionar la conexión" "Actualmente el servidor está muy ocupado intentando gestionar la conexión"
#: ../js/ui/telepathyClient.js:1446 #: ../js/ui/telepathyClient.js:1450
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "Se ha revocado el certificado" msgstr "Se ha revocado el certificado"
#: ../js/ui/telepathyClient.js:1448 #: ../js/ui/telepathyClient.js:1452
msgid "" msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak" "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "" msgstr ""
"El certificado usa un algoritmo de cifrado inseguro o es criptográficamente " "El certificado usa un algoritmo de cifrado inseguro o es criptográficamente "
"débil" "débil"
#: ../js/ui/telepathyClient.js:1450 #: ../js/ui/telepathyClient.js:1454
msgid "" msgid ""
"The length of the server certificate, or the depth of the server certificate " "The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library" "chain, exceed the limits imposed by the cryptography library"
@ -1457,68 +1465,68 @@ msgstr ""
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. #. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1459 #: ../js/ui/telepathyClient.js:1463
#, c-format #, c-format
msgid "Connection to %s failed" msgid "Connection to %s failed"
msgstr "Falló la conexión a %s" msgstr "Falló la conexión a %s"
#: ../js/ui/telepathyClient.js:1468 #: ../js/ui/telepathyClient.js:1472
msgid "Reconnect" msgid "Reconnect"
msgstr "Reconectar" msgstr "Reconectar"
#: ../js/ui/telepathyClient.js:1469 #: ../js/ui/telepathyClient.js:1473
msgid "Edit account" msgid "Edit account"
msgstr "Editar cuenta" msgstr "Editar cuenta"
#: ../js/ui/telepathyClient.js:1515 #: ../js/ui/telepathyClient.js:1519
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Razón desconocida" msgstr "Razón desconocida"
#: ../js/ui/userMenu.js:153 #: ../js/ui/userMenu.js:145
msgid "Hidden" msgid "Hidden"
msgstr "Oculto" msgstr "Oculto"
#: ../js/ui/userMenu.js:159 #: ../js/ui/userMenu.js:151
msgid "Idle" msgid "Idle"
msgstr "Inactivo" msgstr "Inactivo"
#: ../js/ui/userMenu.js:162 #: ../js/ui/userMenu.js:154
msgid "Unavailable" msgid "Unavailable"
msgstr "No disponible" msgstr "No disponible"
#: ../js/ui/userMenu.js:518 ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:592 #: ../js/ui/userMenu.js:512 ../js/ui/userMenu.js:516 ../js/ui/userMenu.js:586
msgid "Power Off..." msgid "Power Off..."
msgstr "Apagar…" msgstr "Apagar…"
#: ../js/ui/userMenu.js:554 #: ../js/ui/userMenu.js:548
msgid "Notifications" msgid "Notifications"
msgstr "Notificaciones" msgstr "Notificaciones"
#: ../js/ui/userMenu.js:562 #: ../js/ui/userMenu.js:556
msgid "Online Accounts" msgid "Online Accounts"
msgstr "Cuentas en línea" msgstr "Cuentas en línea"
#: ../js/ui/userMenu.js:566 #: ../js/ui/userMenu.js:560
msgid "System Settings" msgid "System Settings"
msgstr "Configuración del sistema" msgstr "Configuración del sistema"
#: ../js/ui/userMenu.js:573 #: ../js/ui/userMenu.js:567
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Bloquear la pantalla" msgstr "Bloquear la pantalla"
#: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:572
msgid "Switch User" msgid "Switch User"
msgstr "Cambiar de usuario" msgstr "Cambiar de usuario"
#: ../js/ui/userMenu.js:583 #: ../js/ui/userMenu.js:577
msgid "Log Out..." msgid "Log Out..."
msgstr "Cerrar la sesión…" msgstr "Cerrar la sesión…"
#: ../js/ui/userMenu.js:611 #: ../js/ui/userMenu.js:605
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "Su estado del chat se establecerá a «ocupado»" msgstr "Su estado del chat se establecerá a «ocupado»"
#: ../js/ui/userMenu.js:612 #: ../js/ui/userMenu.js:606
msgid "" msgid ""
"Notifications are now disabled, including chat messages. Your online status " "Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages." "has been adjusted to let others know that you might not see their messages."
@ -1539,12 +1547,7 @@ msgstr "Teclear para buscar…"
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
#: ../js/ui/windowAttentionHandler.js:39 #: ../js/ui/windowAttentionHandler.js:35
#, c-format
msgid "%s has finished starting"
msgstr "%s finalizó su lanzamiento"
#: ../js/ui/windowAttentionHandler.js:41
#, c-format #, c-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "«%s» está preparado" msgstr "«%s» está preparado"
@ -1616,6 +1619,20 @@ msgstr "Sistema de archivos"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "%s has not emitted any errors."
#~ msgstr "%s no ha generado ningún error."
#~| msgid "Error"
#~ msgid "Hide Errors"
#~ msgstr "Ocultar errores"
#~| msgid "Error"
#~ msgid "Show Errors"
#~ msgstr "Mostrar errores"
#~ msgid "%s has finished starting"
#~ msgstr "%s finalizó su lanzamiento"
#~ msgid "If true, display onscreen keyboard." #~ msgid "If true, display onscreen keyboard."
#~ msgstr "Si es cierta, muestra el teclado en pantalla." #~ msgstr "Si es cierta, muestra el teclado en pantalla."
@ -1882,8 +1899,8 @@ msgstr "%1$s: %2$s"
#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds "
#~ "in time." #~ "in time."
#~ msgstr "" #~ msgstr ""
#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos " #~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los "
#~ "en la hora." #~ "segundos en la hora."
#~ msgid "" #~ msgid ""
#~ "This key specifies the format used by the panel clock when the format key " #~ "This key specifies the format used by the panel clock when the format key "
@ -1900,18 +1917,19 @@ msgstr "%1$s: %2$s"
#~ msgid "" #~ msgid ""
#~ "This key specifies the hour format used by the panel clock. Possible " #~ "This key specifies the hour format used by the panel clock. Possible "
#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to "
#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-" #~ "\"unix\", the clock will display time in seconds since Epoch, i.e. "
#~ "01-01. If set to \"custom\", the clock will display time according to the " #~ "1970-01-01. If set to \"custom\", the clock will display time according "
#~ "format specified in the custom_format key. Note that if set to either " #~ "to the format specified in the custom_format key. Note that if set to "
#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored." #~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are "
#~ "ignored."
#~ msgstr "" #~ msgstr ""
#~ "Esta clave especifica el formato de la hora especificado por el reloj del " #~ "Esta clave especifica el formato de la hora especificado por el reloj del "
#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), " #~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 "
#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará " #~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el "
#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece " #~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). "
#~ "a «custom» el reloj mostrará la hora según el formato especificado en la " #~ "Si se establece a «custom» el reloj mostrará la hora según el formato "
#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se " #~ "especificado en la clave «custom_format». Note que si se establece a "
#~ "ignoran las claves «show_date» y «show_seconds»." #~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»."
#~ msgid "Clock Format" #~ msgid "Clock Format"
#~ msgstr "Formato del reloj" #~ msgstr "Formato del reloj"

1156
po/eu.po

File diff suppressed because it is too large Load Diff

348
po/fa.po
View File

@ -8,8 +8,8 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell master\n" "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" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2011-09-19 03:42+0000\n" "POT-Creation-Date: 2011-10-04 20:49+0000\n"
"PO-Revision-Date: 2011-09-19 14:32+0330\n" "PO-Revision-Date: 2011-10-15 16:02+0330\n"
"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n" "Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
"Language-Team: Persian <>\n" "Language-Team: Persian <>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -62,125 +62,115 @@ msgid "If true, display date in the clock, in addition to time."
msgstr "اگر روی «درست» تنظیم شود، تاریخ را در کنار ساعت نشان می‌دهد." msgstr "اگر روی «درست» تنظیم شود، تاریخ را در کنار ساعت نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:9 #: ../data/org.gnome.shell.gschema.xml.in.h:9
msgid "If true, display onscreen keyboard."
msgstr "در صورت تنظیم بر روی «درست»، صفحه‌کلید مجازی نمایش داده می‌شود."
#: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display seconds in time." msgid "If true, display seconds in time."
msgstr "در صورت تنظیم بر روی «درست»، ثانیه‌ها را در ساعت نشان می‌دهد." msgstr "در صورت تنظیم بر روی «درست»، ثانیه‌ها را در ساعت نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:11 #: ../data/org.gnome.shell.gschema.xml.in.h:10
msgid "If true, display the ISO week date in the calendar." msgid "If true, display the ISO week date in the calendar."
msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان می‌دهد." msgstr "در صورت تنظیم بر روی «درست»، تاریخ هفتگی ایزو را در تقویم نشان می‌دهد."
#: ../data/org.gnome.shell.gschema.xml.in.h:12 #: ../data/org.gnome.shell.gschema.xml.in.h:11
msgid "List of desktop file IDs for favorite applications" msgid "List of desktop file IDs for favorite applications"
msgstr "فهرست شناسه‌های پرونده‌ی رومیزی برای برنامه‌های مورد پسند" msgstr "فهرست شناسه‌های پرونده‌ی رومیزی برای برنامه‌های مورد پسند"
#: ../data/org.gnome.shell.gschema.xml.in.h:14 #: ../data/org.gnome.shell.gschema.xml.in.h:13
#, no-c-format #, no-c-format
msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." msgstr "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system."
#: ../data/org.gnome.shell.gschema.xml.in.h:15 #: ../data/org.gnome.shell.gschema.xml.in.h:14
msgid "Show date in clock" msgid "Show date in clock"
msgstr "نمایش تاریخ در ساعت" msgstr "نمایش تاریخ در ساعت"
#: ../data/org.gnome.shell.gschema.xml.in.h:16 #: ../data/org.gnome.shell.gschema.xml.in.h:15
msgid "Show the onscreen keyboard"
msgstr "نمایش صفحه‌کلید مجازی"
#: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "Show the week date in the calendar" msgid "Show the week date in the calendar"
msgstr "نمایش هفته در تقویم" msgstr "نمایش هفته در تقویم"
#: ../data/org.gnome.shell.gschema.xml.in.h:18 #: ../data/org.gnome.shell.gschema.xml.in.h:16
msgid "Show time with seconds" msgid "Show time with seconds"
msgstr "نمایش ساعت همراه با ثانیه" msgstr "نمایش ساعت همراه با ثانیه"
#: ../data/org.gnome.shell.gschema.xml.in.h:19 #: ../data/org.gnome.shell.gschema.xml.in.h:17
msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
msgstr "برنامه‌های مشابه این شناسه‌ها در قسمت مورد پسندها نمایش داده می‌شود." msgstr "برنامه‌های مشابه این شناسه‌ها در قسمت مورد پسندها نمایش داده می‌شود."
#: ../data/org.gnome.shell.gschema.xml.in.h:20 #: ../data/org.gnome.shell.gschema.xml.in.h:18
msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format." msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format."
msgstr "نام پرونده‌ی ضبط شده برای تصویربرداری از صفحه‌نمایش یکتا و براساس تاریخ جاری خواهد بود و از این افزونه استفاده خواهد کرد. اگر در زمان ضبط از قالب دیگری استفاده کنید باید تغییر کند." msgstr "نام پرونده‌ی ضبط شده برای تصویربرداری از صفحه‌نمایش یکتا و براساس تاریخ جاری خواهد بود و از این افزونه استفاده خواهد کرد. اگر در زمان ضبط از قالب دیگری استفاده کنید باید تغییر کند."
#: ../data/org.gnome.shell.gschema.xml.in.h:21 #: ../data/org.gnome.shell.gschema.xml.in.h:19
msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second."
msgstr "سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر پوسته‌ی گنوم بر اساس فریم بر ثانیه" msgstr "سرعت فریم حاصل از تصویربرداری از صفحه نمایش با استفاده از ضبط کننده نمایشگر پوسته‌ی گنوم بر اساس فریم بر ثانیه"
#: ../data/org.gnome.shell.gschema.xml.in.h:22 #: ../data/org.gnome.shell.gschema.xml.in.h:20
msgid "The gstreamer pipeline used to encode the screencast" msgid "The gstreamer pipeline used to encode the screencast"
msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش" msgstr "مجرای ارتباطی gstreamer برای کدگذاری تصویربرداری از صفحه نمایش"
#: ../data/org.gnome.shell.gschema.xml.in.h:23 #: ../data/org.gnome.shell.gschema.xml.in.h:21
msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data."
msgstr "پوسته گنوم در حالت عادی برنامه‌های فعال را جهت ارائه برنامه‌های بیشتر استفاده شده پایش می کند. (برای مثال در اجرا کننده‌ها). با اینکه که این اطلاعات به صورت خصوصی نگاه‌داری می‌شود، ممکن است شما بخواهید این امکان را به دلایل امنیتی غیرفعال کنید. لطفا توجه کنید این کار باعث پاک شدن اطلاعاتی که تاکنون ذخیره شده‌اند نمی‌شود." msgstr "پوسته گنوم در حالت عادی برنامه‌های فعال را جهت ارائه برنامه‌های بیشتر استفاده شده پایش می کند. (برای مثال در اجرا کننده‌ها). با اینکه که این اطلاعات به صورت خصوصی نگاه‌داری می‌شود، ممکن است شما بخواهید این امکان را به دلایل امنیتی غیرفعال کنید. لطفا توجه کنید این کار باعث پاک شدن اطلاعاتی که تاکنون ذخیره شده‌اند نمی‌شود."
#: ../data/org.gnome.shell.gschema.xml.in.h:24 #: ../data/org.gnome.shell.gschema.xml.in.h:22
msgid "The type of keyboard to use." msgid "The type of keyboard to use."
msgstr "نوع صفحه‌کلید جهت استفاده" msgstr "نوع صفحه‌کلید جهت استفاده"
#: ../data/org.gnome.shell.gschema.xml.in.h:25 #: ../data/org.gnome.shell.gschema.xml.in.h:23
msgid "Uuids of extensions to enable" msgid "Uuids of extensions to enable"
msgstr "شناسه‌های Uuid افزونه‌ها جهت فعال‌سازی" msgstr "شناسه‌های Uuid افزونه‌ها جهت فعال‌سازی"
#: ../data/org.gnome.shell.gschema.xml.in.h:26 #: ../data/org.gnome.shell.gschema.xml.in.h:24
msgid "Whether to collect stats about applications usage" msgid "Whether to collect stats about applications usage"
msgstr "اینکه اطلاعات برنامه‌ها درباره‌ی میزان استفاده از منابع جمع‌آوری شود یا خیر" msgstr "اینکه اطلاعات برنامه‌ها درباره‌ی میزان استفاده از منابع جمع‌آوری شود یا خیر"
#: ../data/org.gnome.shell.gschema.xml.in.h:27 #: ../data/org.gnome.shell.gschema.xml.in.h:25
msgid "Which keyboard to use" msgid "Which keyboard to use"
msgstr "استفاده از کدام صفحه‌کلید" msgstr "استفاده از کدام صفحه‌کلید"
#: ../data/org.gnome.shell.gschema.xml.in.h:28 #: ../data/org.gnome.shell.gschema.xml.in.h:26
msgid "disabled OpenSearch providers" msgid "disabled OpenSearch providers"
msgstr "غیرفعال کردنِ تامین‌کننده‌گان OpenSearch" msgstr "غیرفعال کردنِ تامین‌کننده‌گان OpenSearch"
#: ../js/gdm/loginDialog.js:614 #: ../js/gdm/loginDialog.js:617
msgid "Session..." msgid "Session..."
msgstr "نشست..." msgstr "نشست..."
#: ../js/gdm/loginDialog.js:776 #: ../js/gdm/loginDialog.js:785
#| msgid "Sign In"
msgctxt "title" msgctxt "title"
msgid "Sign In" msgid "Sign In"
msgstr "ورود" msgstr "ورود"
#. translators: this message is shown below the password entry field #. 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/loginDialog.js:821 #: ../js/gdm/loginDialog.js:830
msgid "(or swipe finger)" msgid "(or swipe finger)"
msgstr "(یا انگشتتان را بکشید)" msgstr "(یا انگشتتان را بکشید)"
#: ../js/gdm/loginDialog.js:839 #: ../js/gdm/loginDialog.js:848
msgid "Not listed?" msgid "Not listed?"
msgstr "فهرست نشده؟" msgstr "فهرست نشده؟"
#: ../js/gdm/loginDialog.js:980 #: ../js/gdm/loginDialog.js:1004
#: ../js/ui/endSessionDialog.js:426 #: ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 #: ../js/ui/extensionSystem.js:477
#: ../js/ui/networkAgent.js:158 #: ../js/ui/networkAgent.js:165
#: ../js/ui/polkitAuthenticationAgent.js:170 #: ../js/ui/polkitAuthenticationAgent.js:171
#: ../js/ui/status/bluetooth.js:480 #: ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "لغو" msgstr "لغو"
#: ../js/gdm/loginDialog.js:985 #: ../js/gdm/loginDialog.js:1009
#| msgid "Sign In"
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "ورود" msgstr "ورود"
#: ../js/gdm/loginDialog.js:1324 #: ../js/gdm/loginDialog.js:1358
msgid "Login Window" msgid "Login Window"
msgstr "پنجره‌ی ورود به سیستم" msgstr "پنجره‌ی ورود به سیستم"
#: ../js/gdm/powerMenu.js:116 #: ../js/gdm/powerMenu.js:116
#: ../js/ui/userMenu.js:520 #: ../js/ui/userMenu.js:514
#: ../js/ui/userMenu.js:522 #: ../js/ui/userMenu.js:516
#: ../js/ui/userMenu.js:591 #: ../js/ui/userMenu.js:585
msgid "Suspend" msgid "Suspend"
msgstr "تعلیق" msgstr "تعلیق"
@ -247,12 +237,16 @@ msgstr "مورد %s به مورد پسندهای شما اضافه شد."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "مورد %s ازمورد پسندهای شما حذف شد." msgstr "مورد %s ازمورد پسندهای شما حذف شد."
#: ../js/ui/autorunManager.js:592 #: ../js/ui/autorunManager.js:280
msgid "Removable Devices"
msgstr "دستگاه‌های جدا شدنی"
#: ../js/ui/autorunManager.js:590
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "باز کردن با %s" msgstr "باز کردن با %s"
#: ../js/ui/autorunManager.js:618 #: ../js/ui/autorunManager.js:616
msgid "Eject" msgid "Eject"
msgstr "بیرون دادن" msgstr "بیرون دادن"
@ -410,17 +404,17 @@ msgid "Unknown"
msgstr "ناشناخته" msgstr "ناشناخته"
#: ../js/ui/contactDisplay.js:80 #: ../js/ui/contactDisplay.js:80
#: ../js/ui/userMenu.js:147 #: ../js/ui/userMenu.js:139
msgid "Available" msgid "Available"
msgstr "در دسترس" msgstr "در دسترس"
#: ../js/ui/contactDisplay.js:85 #: ../js/ui/contactDisplay.js:85
#: ../js/ui/userMenu.js:156 #: ../js/ui/userMenu.js:148
msgid "Away" msgid "Away"
msgstr "غائب" msgstr "غائب"
#: ../js/ui/contactDisplay.js:89 #: ../js/ui/contactDisplay.js:89
#: ../js/ui/userMenu.js:150 #: ../js/ui/userMenu.js:142
msgid "Busy" msgid "Busy"
msgstr "مشغول" msgstr "مشغول"
@ -433,7 +427,7 @@ msgid "CONTACTS"
msgstr "CONTACTS" msgstr "CONTACTS"
#: ../js/ui/dash.js:172 #: ../js/ui/dash.js:172
#: ../js/ui/messageTray.js:1196 #: ../js/ui/messageTray.js:1204
msgid "Remove" msgid "Remove"
msgstr "حذف" msgstr "حذف"
@ -512,7 +506,6 @@ msgstr "بر روی خروج از سیستم کلیک کنید تا از این
#: ../js/ui/endSessionDialog.js:64 #: ../js/ui/endSessionDialog.js:64
#, c-format #, c-format
#| msgid "%s will be logged out automatically in %d seconds."
msgid "%s will be logged out automatically in %d second." msgid "%s will be logged out automatically in %d second."
msgid_plural "%s will be logged out automatically in %d seconds." msgid_plural "%s will be logged out automatically in %d seconds."
msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد." msgstr[0] "%s به طور خودکار در مدت %Id ثانیه از سیستم خارج خواهد شد."
@ -520,7 +513,6 @@ msgstr[1] "%s به طور خودکار در مدت %Id ثانیه از سیست
#: ../js/ui/endSessionDialog.js:69 #: ../js/ui/endSessionDialog.js:69
#, c-format #, c-format
#| msgid "You will be logged out automatically in %d seconds."
msgid "You will be logged out automatically in %d second." msgid "You will be logged out automatically in %d second."
msgid_plural "You will be logged out automatically in %d seconds." msgid_plural "You will be logged out automatically in %d seconds."
msgstr[0] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج می‌شوید." msgstr[0] "شما پس از %Id ثانیه به طور خودکار از سیستم خارج می‌شوید."
@ -536,7 +528,6 @@ msgstr "بر روی خاموش کردن کلیک کنید تا از این بر
#: ../js/ui/endSessionDialog.js:83 #: ../js/ui/endSessionDialog.js:83
#, c-format #, c-format
#| msgid "The system will power off automatically in %d seconds."
msgid "The system will power off automatically in %d second." msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds." msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار خاموش می‌شود." msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار خاموش می‌شود."
@ -552,7 +543,6 @@ msgstr "بر روی راه‌اندازی مجدد کلیک کنید تا از
#: ../js/ui/endSessionDialog.js:100 #: ../js/ui/endSessionDialog.js:100
#, c-format #, c-format
#| msgid "The system will restart automatically in %d seconds."
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار مجددا راه‌اندازی می‌شود." msgstr[0] "سیستم پس از %Id ثانیه به طور خودکار مجددا راه‌اندازی می‌شود."
@ -571,7 +561,12 @@ msgstr "نصب"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟" msgstr "بارگیری و نصب «%s» از extensions.gnome.org؟"
#: ../js/ui/keyboard.js:513 #: ../js/ui/keyboard.js:308
#| msgid "Retry"
msgid "tray"
msgstr "سینی"
#: ../js/ui/keyboard.js:530
#: ../js/ui/status/power.js:211 #: ../js/ui/status/power.js:211
msgid "Keyboard" msgid "Keyboard"
msgstr "صفحه‌کلید" msgstr "صفحه‌کلید"
@ -603,102 +598,102 @@ msgstr "قدیمی"
msgid "Downloading" msgid "Downloading"
msgstr "در حال بارگیری" msgstr "در حال بارگیری"
#: ../js/ui/lookingGlass.js:724 #: ../js/ui/lookingGlass.js:720
msgid "View Source" msgid "View Source"
msgstr "نمایش منبع" msgstr "نمایش منبع"
#: ../js/ui/lookingGlass.js:730 #: ../js/ui/lookingGlass.js:726
msgid "Web Page" msgid "Web Page"
msgstr "صفحه‌ی وب" msgstr "صفحه‌ی وب"
#: ../js/ui/messageTray.js:1189 #: ../js/ui/messageTray.js:1197
msgid "Open" msgid "Open"
msgstr "بازکردن" msgstr "بازکردن"
#: ../js/ui/messageTray.js:2368 #: ../js/ui/messageTray.js:2406
msgid "System Information" msgid "System Information"
msgstr "اطلاعات سیستم" msgstr "اطلاعات سیستم"
#: ../js/ui/networkAgent.js:138 #: ../js/ui/networkAgent.js:145
msgid "Show password" msgid "Show password"
msgstr "نمایش گذرواژه" msgstr "نمایش گذرواژه"
#: ../js/ui/networkAgent.js:153 #: ../js/ui/networkAgent.js:160
msgid "Connect" msgid "Connect"
msgstr "اتصال" msgstr "اتصال"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 #: ../js/ui/networkAgent.js:255
#: ../js/ui/networkAgent.js:260 #: ../js/ui/networkAgent.js:267
#: ../js/ui/networkAgent.js:287 #: ../js/ui/networkAgent.js:294
#: ../js/ui/networkAgent.js:307 #: ../js/ui/networkAgent.js:314
#: ../js/ui/networkAgent.js:317 #: ../js/ui/networkAgent.js:324
msgid "Password: " msgid "Password: "
msgstr "گذرواژه: " msgstr "گذرواژه: "
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253 #: ../js/ui/networkAgent.js:260
msgid "Key: " msgid "Key: "
msgstr "کلید: " msgstr "کلید: "
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 #: ../js/ui/networkAgent.js:292
#: ../js/ui/networkAgent.js:303 #: ../js/ui/networkAgent.js:310
msgid "Username: " msgid "Username: "
msgstr "نام‌کاربری: " msgstr "نام‌کاربری: "
#: ../js/ui/networkAgent.js:291 #: ../js/ui/networkAgent.js:298
msgid "Identity: " msgid "Identity: "
msgstr "شناسه: " msgstr "شناسه: "
#: ../js/ui/networkAgent.js:293 #: ../js/ui/networkAgent.js:300
msgid "Private key password: " msgid "Private key password: "
msgstr "گذرواژه کلید خصوصی: " msgstr "گذرواژه کلید خصوصی: "
#: ../js/ui/networkAgent.js:305 #: ../js/ui/networkAgent.js:312
msgid "Service: " msgid "Service: "
msgstr "سرویس: " msgstr "سرویس: "
#: ../js/ui/networkAgent.js:334 #: ../js/ui/networkAgent.js:341
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "تایید هویت برای شبکه بی‌سیم لازم است" msgstr "تایید هویت برای شبکه بی‌سیم لازم است"
#: ../js/ui/networkAgent.js:335 #: ../js/ui/networkAgent.js:342
#, c-format #, c-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'."
msgstr "گذرواژه یا کلیدهای رمزنگاری برای دسترسی به شبکه «%s» لازم است." msgstr "گذرواژه یا کلیدهای رمزنگاری برای دسترسی به شبکه «%s» لازم است."
#: ../js/ui/networkAgent.js:339 #: ../js/ui/networkAgent.js:346
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "تایید هویت 802.1X سیمی" msgstr "تایید هویت 802.1X سیمی"
#: ../js/ui/networkAgent.js:341 #: ../js/ui/networkAgent.js:348
msgid "Network name: " msgid "Network name: "
msgstr "نام شبکه: " msgstr "نام شبکه: "
#: ../js/ui/networkAgent.js:346 #: ../js/ui/networkAgent.js:353
msgid "DSL authentication" msgid "DSL authentication"
msgstr "تایید هویت DSL" msgstr "تایید هویت DSL"
#: ../js/ui/networkAgent.js:353 #: ../js/ui/networkAgent.js:360
msgid "PIN code required" msgid "PIN code required"
msgstr "کد پین لازم است" msgstr "کد پین لازم است"
#: ../js/ui/networkAgent.js:354 #: ../js/ui/networkAgent.js:361
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "کد پین برای دستگاه پهن‌باند تلفن‌همراه لازم است" msgstr "کد پین برای دستگاه پهن‌باند تلفن‌همراه لازم است"
#: ../js/ui/networkAgent.js:355 #: ../js/ui/networkAgent.js:362
msgid "PIN: " msgid "PIN: "
msgstr "پین: " msgstr "پین: "
#: ../js/ui/networkAgent.js:361 #: ../js/ui/networkAgent.js:368
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "گذرواژه شبکه پهن‌باند تلفن همراه" msgstr "گذرواژه شبکه پهن‌باند تلفن همراه"
#: ../js/ui/networkAgent.js:362 #: ../js/ui/networkAgent.js:369
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "برای اتصال به «%s» گذرواژه لازم است." msgstr "برای اتصال به «%s» گذرواژه لازم است."
@ -762,7 +757,7 @@ msgstr "تایید هویت لازم است"
msgid "Administrator" msgid "Administrator"
msgstr "مدیر" msgstr "مدیر"
#: ../js/ui/polkitAuthenticationAgent.js:174 #: ../js/ui/polkitAuthenticationAgent.js:175
msgid "Authenticate" msgid "Authenticate"
msgstr "تایید هویت" msgstr "تایید هویت"
@ -770,11 +765,11 @@ msgstr "تایید هویت"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262 #: ../js/ui/polkitAuthenticationAgent.js:256
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "متاسفتم، تاثیری نداشت! مجددا تلاش کنید." msgstr "متاسفتم، تاثیری نداشت! مجددا تلاش کنید."
#: ../js/ui/polkitAuthenticationAgent.js:274 #: ../js/ui/polkitAuthenticationAgent.js:268
msgid "Password:" msgid "Password:"
msgstr "گذرواژه" msgstr "گذرواژه"
@ -783,7 +778,7 @@ msgstr "گذرواژه"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:687 #: ../js/ui/popupMenu.js:731
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -810,9 +805,11 @@ msgstr "بزرگنمایی"
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
#. 'screen-reader-enabled'); #. 'screen-reader-enabled');
#. this.menu.addMenuItem(screenReader); #. this.menu.addMenuItem(screenReader);
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA, #: ../js/ui/status/accessibility.js:71
#. 'screen-keyboard-enabled'); #| msgid "Keyboard"
#. this.menu.addMenuItem(screenKeyboard); msgid "Screen Keyboard"
msgstr "صفحه‌کلید مجازی"
#: ../js/ui/status/accessibility.js:75 #: ../js/ui/status/accessibility.js:75
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "هشدارهای نمایشی" msgstr "هشدارهای نمایشی"
@ -938,7 +935,7 @@ msgid "Grant this time only"
msgstr "موافقت تنها در همین زمان" msgstr "موافقت تنها در همین زمان"
#: ../js/ui/status/bluetooth.js:392 #: ../js/ui/status/bluetooth.js:392
#: ../js/ui/telepathyClient.js:1196 #: ../js/ui/telepathyClient.js:1200
msgid "Reject" msgid "Reject"
msgstr "رد کردن" msgstr "رد کردن"
@ -979,11 +976,11 @@ msgstr "لطفا PIN ذکر شده در دستگاه را وارد کنید."
msgid "OK" msgid "OK"
msgstr "تایید" msgstr "تایید"
#: ../js/ui/status/keyboard.js:72 #: ../js/ui/status/keyboard.js:73
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "نمایش چیدمان صفحه‌کلید" msgstr "نمایش چیدمان صفحه‌کلید"
#: ../js/ui/status/keyboard.js:77 #: ../js/ui/status/keyboard.js:78
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "تنظیمات ناحیه و زبان" msgstr "تنظیمات ناحیه و زبان"
@ -1029,14 +1026,14 @@ msgid "connection failed"
msgstr "اتصال شکست خورد" msgstr "اتصال شکست خورد"
#: ../js/ui/status/network.js:575 #: ../js/ui/status/network.js:575
#: ../js/ui/status/network.js:1515 #: ../js/ui/status/network.js:1523
msgid "More..." msgid "More..."
msgstr "بیشتر..." msgstr "بیشتر..."
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 #: ../js/ui/status/network.js:611
#: ../js/ui/status/network.js:1455 #: ../js/ui/status/network.js:1458
msgid "Connected (private)" msgid "Connected (private)"
msgstr "متصل شد (خصوصی)" msgstr "متصل شد (خصوصی)"
@ -1054,7 +1051,7 @@ msgstr "دایال‌آپ خودکار"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 #: ../js/ui/status/network.js:878
#: ../js/ui/status/network.js:1467 #: ../js/ui/status/network.js:1470
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "اتصال بیسیم %s خودکار" msgstr "اتصال بیسیم %s خودکار"
@ -1063,47 +1060,47 @@ msgstr "اتصال بیسیم %s خودکار"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "بلوتوث خودکار" msgstr "بلوتوث خودکار"
#: ../js/ui/status/network.js:1469 #: ../js/ui/status/network.js:1472
msgid "Auto wireless" msgid "Auto wireless"
msgstr "بیسیم خودکار" msgstr "بیسیم خودکار"
#: ../js/ui/status/network.js:1558 #: ../js/ui/status/network.js:1566
msgid "Enable networking" msgid "Enable networking"
msgstr "فعال‌سازی شبکه" msgstr "فعال‌سازی شبکه"
#: ../js/ui/status/network.js:1570 #: ../js/ui/status/network.js:1578
msgid "Wired" msgid "Wired"
msgstr "سیمی" msgstr "سیمی"
#: ../js/ui/status/network.js:1581 #: ../js/ui/status/network.js:1589
msgid "Wireless" msgid "Wireless"
msgstr "بیسیم" msgstr "بیسیم"
#: ../js/ui/status/network.js:1591 #: ../js/ui/status/network.js:1599
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "پهن‌باند همراه" msgstr "پهن‌باند همراه"
#: ../js/ui/status/network.js:1601 #: ../js/ui/status/network.js:1609
msgid "VPN Connections" msgid "VPN Connections"
msgstr "اتصال‌های وی‌پی‌ان" msgstr "اتصال‌های وی‌پی‌ان"
#: ../js/ui/status/network.js:1612 #: ../js/ui/status/network.js:1620
msgid "Network Settings" msgid "Network Settings"
msgstr "تنظیمات شبکه" msgstr "تنظیمات شبکه"
#: ../js/ui/status/network.js:1749 #: ../js/ui/status/network.js:1757
msgid "Connection failed" msgid "Connection failed"
msgstr "اتصال شکست خورد" msgstr "اتصال شکست خورد"
#: ../js/ui/status/network.js:1750 #: ../js/ui/status/network.js:1758
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "فعال‌سازی اتصال شبکه شکست خورد" msgstr "فعال‌سازی اتصال شبکه شکست خورد"
#: ../js/ui/status/network.js:2000 #: ../js/ui/status/network.js:2008
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "غیرفعال‌سازی شبکه" msgstr "غیرفعال‌سازی شبکه"
#: ../js/ui/status/network.js:2125 #: ../js/ui/status/network.js:2133
msgid "Network Manager" msgid "Network Manager"
msgstr "مدیریت شبکه" msgstr "مدیریت شبکه"
@ -1212,39 +1209,39 @@ msgid "Invitation"
msgstr "دعوتنامه" msgstr "دعوتنامه"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:325 #: ../js/ui/telepathyClient.js:327
msgid "Call" msgid "Call"
msgstr "تماس" msgstr "تماس"
#. We got the TpContact #. We got the TpContact
#: ../js/ui/telepathyClient.js:353 #: ../js/ui/telepathyClient.js:357
msgid "File Transfer" msgid "File Transfer"
msgstr "انتقال پرونده" msgstr "انتقال پرونده"
#: ../js/ui/telepathyClient.js:434 #: ../js/ui/telepathyClient.js:438
msgid "Subscription request" msgid "Subscription request"
msgstr "درخواست اشتراک" msgstr "درخواست اشتراک"
#: ../js/ui/telepathyClient.js:470 #: ../js/ui/telepathyClient.js:474
msgid "Connection error" msgid "Connection error"
msgstr "خطا اتصال" msgstr "خطا اتصال"
#: ../js/ui/telepathyClient.js:733 #: ../js/ui/telepathyClient.js:737
#, c-format #, c-format
msgid "%s is online." msgid "%s is online."
msgstr "%s بر خط است." msgstr "%s بر خط است."
#: ../js/ui/telepathyClient.js:738 #: ../js/ui/telepathyClient.js:742
#, c-format #, c-format
msgid "%s is offline." msgid "%s is offline."
msgstr "%s برون خط است." msgstr "%s برون خط است."
#: ../js/ui/telepathyClient.js:741 #: ../js/ui/telepathyClient.js:745
#, c-format #, c-format
msgid "%s is away." msgid "%s is away."
msgstr "%s غایب است." msgstr "%s غایب است."
#: ../js/ui/telepathyClient.js:744 #: ../js/ui/telepathyClient.js:748
#, c-format #, c-format
msgid "%s is busy." msgid "%s is busy."
msgstr "%s مشغول است." msgstr "%s مشغول است."
@ -1252,35 +1249,35 @@ msgstr "%s مشغول است."
#. Translators: this is a time format string followed by a date. #. Translators: this is a time format string followed by a date.
#. If applicable, replace %X with a strftime format valid for your #. If applicable, replace %X with a strftime format valid for your
#. locale, without seconds. #. locale, without seconds.
#: ../js/ui/telepathyClient.js:978 #: ../js/ui/telepathyClient.js:982
#, no-c-format #, no-c-format
msgid "Sent at <b>%X</b> on <b>%A</b>" msgid "Sent at <b>%X</b> on <b>%A</b>"
msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>" msgstr "ارسال در <b>%OH:%OM</b> در <b>%A</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25", #. Translators: this is a time format in the style of "Wednesday, May 25",
#. shown when you get a chat message in the same year. #. shown when you get a chat message in the same year.
#: ../js/ui/telepathyClient.js:984 #: ../js/ui/telepathyClient.js:988
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>" msgid "Sent on <b>%A</b>, <b>%B %d</b>"
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>" msgstr "ارسال در <b>%A</b>, <b>%B %d</b>"
#. Translators: this is a time format in the style of "Wednesday, May 25, 2012", #. Translators: this is a time format in the style of "Wednesday, May 25, 2012",
#. shown when you get a chat message in a different year. #. shown when you get a chat message in a different year.
#: ../js/ui/telepathyClient.js:989 #: ../js/ui/telepathyClient.js:993
#, no-c-format #, no-c-format
msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y" msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
msgstr "ارسال در <b>%A</b>, <b>%B %d</b>, %Y" msgstr "ارسال در <b>%A</b>, <b>%B %d</b>, %Y"
#. Translators: this is the other person changing their old IM name to their new #. Translators: this is the other person changing their old IM name to their new
#. IM name. #. IM name.
#: ../js/ui/telepathyClient.js:1031 #: ../js/ui/telepathyClient.js:1035
#, c-format #, c-format
msgid "%s is now known as %s" msgid "%s is now known as %s"
msgstr "%s با عنوان %s شناخته می‌شود" msgstr "%s با عنوان %s شناخته می‌شود"
#. translators: argument is a room name like #. translators: argument is a room name like
#. * room@jabber.org for example. #. * room@jabber.org for example.
#: ../js/ui/telepathyClient.js:1140 #: ../js/ui/telepathyClient.js:1144
#, c-format #, c-format
msgid "Invitation to %s" msgid "Invitation to %s"
msgstr "دعوتنامه به %s" msgstr "دعوتنامه به %s"
@ -1288,36 +1285,36 @@ msgstr "دعوتنامه به %s"
#. translators: first argument is the name of a contact and the second #. 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 #. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. #. * for example.
#: ../js/ui/telepathyClient.js:1148 #: ../js/ui/telepathyClient.js:1152
#, c-format #, c-format
msgid "%s is inviting you to join %s" msgid "%s is inviting you to join %s"
msgstr "%s از شما دعوت می‌کند که به %s بپیوندید" msgstr "%s از شما دعوت می‌کند که به %s بپیوندید"
#: ../js/ui/telepathyClient.js:1150 #: ../js/ui/telepathyClient.js:1154
#: ../js/ui/telepathyClient.js:1239 #: ../js/ui/telepathyClient.js:1243
#: ../js/ui/telepathyClient.js:1343 #: ../js/ui/telepathyClient.js:1347
msgid "Decline" msgid "Decline"
msgstr "رد کردن" msgstr "رد کردن"
#: ../js/ui/telepathyClient.js:1151 #: ../js/ui/telepathyClient.js:1155
#: ../js/ui/telepathyClient.js:1240 #: ../js/ui/telepathyClient.js:1244
#: ../js/ui/telepathyClient.js:1344 #: ../js/ui/telepathyClient.js:1348
msgid "Accept" msgid "Accept"
msgstr "پذیرفتن" msgstr "پذیرفتن"
#. translators: argument is a contact name like Alice for example. #. translators: argument is a contact name like Alice for example.
#: ../js/ui/telepathyClient.js:1184 #: ../js/ui/telepathyClient.js:1188
#, c-format #, c-format
msgid "Video call from %s" msgid "Video call from %s"
msgstr "تماس ویدئویی از طریق %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/telepathyClient.js:1187 #: ../js/ui/telepathyClient.js:1191
#, c-format #, c-format
msgid "Call from %s" msgid "Call from %s"
msgstr "تماس از طرف %s" msgstr "تماس از طرف %s"
#: ../js/ui/telepathyClient.js:1197 #: ../js/ui/telepathyClient.js:1201
msgid "Answer" msgid "Answer"
msgstr "پاسخگویی" msgstr "پاسخگویی"
@ -1326,175 +1323,175 @@ msgstr "پاسخگویی"
#. * file name. The string will be something #. * file name. The string will be something
#. * like: "Alice is sending you test.ogg" #. * like: "Alice is sending you test.ogg"
#. #.
#: ../js/ui/telepathyClient.js:1233 #: ../js/ui/telepathyClient.js:1237
#, c-format #, c-format
msgid "%s is sending you %s" msgid "%s is sending you %s"
msgstr "%s در حال ارسال %s به شما است" msgstr "%s در حال ارسال %s به شما است"
#. To translators: The parameter is the contact's alias #. To translators: The parameter is the contact's alias
#: ../js/ui/telepathyClient.js:1308 #: ../js/ui/telepathyClient.js:1312
#, c-format #, c-format
msgid "%s would like permission to see when you are online" msgid "%s would like permission to see when you are online"
msgstr "%s اجازه دسترسی برای دیدن زمان‌هایی که شما برخط هستید را دارد" msgstr "%s اجازه دسترسی برای دیدن زمان‌هایی که شما برخط هستید را دارد"
#: ../js/ui/telepathyClient.js:1406 #: ../js/ui/telepathyClient.js:1410
msgid "Network error" msgid "Network error"
msgstr "خطا شبکه" msgstr "خطا شبکه"
#: ../js/ui/telepathyClient.js:1408 #: ../js/ui/telepathyClient.js:1412
msgid "Authentication failed" msgid "Authentication failed"
msgstr "تایید هویت شکست خورد" msgstr "تایید هویت شکست خورد"
#: ../js/ui/telepathyClient.js:1410 #: ../js/ui/telepathyClient.js:1414
msgid "Encryption error" msgid "Encryption error"
msgstr "خطا رمزنگاری" msgstr "خطا رمزنگاری"
#: ../js/ui/telepathyClient.js:1412 #: ../js/ui/telepathyClient.js:1416
msgid "Certificate not provided" msgid "Certificate not provided"
msgstr "گواهینامه ارائه نشده" msgstr "گواهینامه ارائه نشده"
#: ../js/ui/telepathyClient.js:1414 #: ../js/ui/telepathyClient.js:1418
msgid "Certificate untrusted" msgid "Certificate untrusted"
msgstr "گواهینامه نامعتبر است" msgstr "گواهینامه نامعتبر است"
#: ../js/ui/telepathyClient.js:1416 #: ../js/ui/telepathyClient.js:1420
msgid "Certificate expired" msgid "Certificate expired"
msgstr "گواهینامه منقضی شده" msgstr "گواهینامه منقضی شده"
#: ../js/ui/telepathyClient.js:1418 #: ../js/ui/telepathyClient.js:1422
msgid "Certificate not activated" msgid "Certificate not activated"
msgstr "گواهینامه فعال نشده" msgstr "گواهینامه فعال نشده"
#: ../js/ui/telepathyClient.js:1420 #: ../js/ui/telepathyClient.js:1424
msgid "Certificate hostname mismatch" msgid "Certificate hostname mismatch"
msgstr "نام کارگزار گواهینامه نامنطبق است" msgstr "نام کارگزار گواهینامه نامنطبق است"
#: ../js/ui/telepathyClient.js:1422 #: ../js/ui/telepathyClient.js:1426
msgid "Certificate fingerprint mismatch" msgid "Certificate fingerprint mismatch"
msgstr "اثرانگشت گواهینامه نامنطبق است" msgstr "اثرانگشت گواهینامه نامنطبق است"
#: ../js/ui/telepathyClient.js:1424 #: ../js/ui/telepathyClient.js:1428
msgid "Certificate self-signed" msgid "Certificate self-signed"
msgstr "گواهینامه خود-امضا شده" msgstr "گواهینامه خود-امضا شده"
#: ../js/ui/telepathyClient.js:1426 #: ../js/ui/telepathyClient.js:1430
msgid "Status is set to offline" msgid "Status is set to offline"
msgstr "وضعیت بر روی برون خط تنظیم شده" msgstr "وضعیت بر روی برون خط تنظیم شده"
#: ../js/ui/telepathyClient.js:1428 #: ../js/ui/telepathyClient.js:1432
msgid "Encryption is not available" msgid "Encryption is not available"
msgstr "رمزنگاری موجود نیست" msgstr "رمزنگاری موجود نیست"
#: ../js/ui/telepathyClient.js:1430 #: ../js/ui/telepathyClient.js:1434
msgid "Certificate is invalid" msgid "Certificate is invalid"
msgstr "گواهینامه نامعتبر است" msgstr "گواهینامه نامعتبر است"
#: ../js/ui/telepathyClient.js:1432 #: ../js/ui/telepathyClient.js:1436
msgid "Connection has been refused" msgid "Connection has been refused"
msgstr "اتصال رد شده است" msgstr "اتصال رد شده است"
#: ../js/ui/telepathyClient.js:1434 #: ../js/ui/telepathyClient.js:1438
msgid "Connection can't be established" msgid "Connection can't be established"
msgstr "اتصال نمی‌تواند برقرار شود" msgstr "اتصال نمی‌تواند برقرار شود"
#: ../js/ui/telepathyClient.js:1436 #: ../js/ui/telepathyClient.js:1440
msgid "Connection has been lost" msgid "Connection has been lost"
msgstr "اتصال از دست رفته است" msgstr "اتصال از دست رفته است"
#: ../js/ui/telepathyClient.js:1438 #: ../js/ui/telepathyClient.js:1442
msgid "This resource is already connected to the server" msgid "This resource is already connected to the server"
msgstr "این منبع از قبل به کارگزار متصل شده است" msgstr "این منبع از قبل به کارگزار متصل شده است"
#: ../js/ui/telepathyClient.js:1440 #: ../js/ui/telepathyClient.js:1444
msgid "Connection has been replaced by a new connection using the same resource" msgid "Connection has been replaced by a new connection using the same resource"
msgstr "اتصال توسط یک اتصال جدید که از منبع مشابه استفاده می‌کند، جایگزین شده است" msgstr "اتصال توسط یک اتصال جدید که از منبع مشابه استفاده می‌کند، جایگزین شده است"
#: ../js/ui/telepathyClient.js:1442 #: ../js/ui/telepathyClient.js:1446
msgid "The account already exists on the server" msgid "The account already exists on the server"
msgstr "حساب از قبل بر روی کارگزار وجود دارد" msgstr "حساب از قبل بر روی کارگزار وجود دارد"
#: ../js/ui/telepathyClient.js:1444 #: ../js/ui/telepathyClient.js:1448
msgid "Server is currently too busy to handle the connection" msgid "Server is currently too busy to handle the connection"
msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است" msgstr "کارگزار در حال حاضر برای دست گرفتن اتصال بسیار مشغول است"
#: ../js/ui/telepathyClient.js:1446 #: ../js/ui/telepathyClient.js:1450
msgid "Certificate has been revoked" msgid "Certificate has been revoked"
msgstr "گواهینامه لغو شده است" msgstr "گواهینامه لغو شده است"
#: ../js/ui/telepathyClient.js:1448 #: ../js/ui/telepathyClient.js:1452
msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr "گواهینامه از الگوریتم رمزی نامطمئنی استفاده می‌کند یا از نظر cryptography ضعیف است" msgstr "گواهینامه از الگوریتم رمزی نامطمئنی استفاده می‌کند یا از نظر cryptography ضعیف است"
#: ../js/ui/telepathyClient.js:1450 #: ../js/ui/telepathyClient.js:1454
msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library" msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
msgstr "اندازه گواهینامه کارگزار، یا عمق حلقه‌ی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد" msgstr "اندازه گواهینامه کارگزار، یا عمق حلقه‌ی گواهینامه کارگزار، از محدودیت اعمال شده توسط کتابخانه cryptography تجاوز کرد"
#. translators: argument is the account name, like #. translators: argument is the account name, like
#. * name@jabber.org for example. #. * name@jabber.org for example.
#: ../js/ui/telepathyClient.js:1459 #: ../js/ui/telepathyClient.js:1463
#, c-format #, c-format
msgid "Connection to %s failed" msgid "Connection to %s failed"
msgstr "اتصال به %s شکست خورد" msgstr "اتصال به %s شکست خورد"
#: ../js/ui/telepathyClient.js:1468 #: ../js/ui/telepathyClient.js:1472
msgid "Reconnect" msgid "Reconnect"
msgstr "اتصال مجدد" msgstr "اتصال مجدد"
#: ../js/ui/telepathyClient.js:1469 #: ../js/ui/telepathyClient.js:1473
msgid "Edit account" msgid "Edit account"
msgstr "ویرایش حساب" msgstr "ویرایش حساب"
#: ../js/ui/telepathyClient.js:1515 #: ../js/ui/telepathyClient.js:1519
msgid "Unknown reason" msgid "Unknown reason"
msgstr "دلیل ناشناخته" msgstr "دلیل ناشناخته"
#: ../js/ui/userMenu.js:153 #: ../js/ui/userMenu.js:145
msgid "Hidden" msgid "Hidden"
msgstr "نامرئی" msgstr "نامرئی"
#: ../js/ui/userMenu.js:159 #: ../js/ui/userMenu.js:151
msgid "Idle" msgid "Idle"
msgstr "بی‌کار" msgstr "بی‌کار"
#: ../js/ui/userMenu.js:162 #: ../js/ui/userMenu.js:154
msgid "Unavailable" msgid "Unavailable"
msgstr "خارج از دسترس" msgstr "خارج از دسترس"
#: ../js/ui/userMenu.js:518 #: ../js/ui/userMenu.js:512
#: ../js/ui/userMenu.js:522 #: ../js/ui/userMenu.js:516
#: ../js/ui/userMenu.js:592 #: ../js/ui/userMenu.js:586
msgid "Power Off..." msgid "Power Off..."
msgstr "خاموش کردن..." msgstr "خاموش کردن..."
#: ../js/ui/userMenu.js:554 #: ../js/ui/userMenu.js:548
msgid "Notifications" msgid "Notifications"
msgstr "اعلان‌ها" msgstr "اعلان‌ها"
#: ../js/ui/userMenu.js:562 #: ../js/ui/userMenu.js:556
msgid "Online Accounts" msgid "Online Accounts"
msgstr "حساب‌های برخط" msgstr "حساب‌های برخط"
#: ../js/ui/userMenu.js:566 #: ../js/ui/userMenu.js:560
msgid "System Settings" msgid "System Settings"
msgstr "تنظیمات سیستم" msgstr "تنظیمات سیستم"
#: ../js/ui/userMenu.js:573 #: ../js/ui/userMenu.js:567
msgid "Lock Screen" msgid "Lock Screen"
msgstr "قفل کردن صفحه" msgstr "قفل کردن صفحه"
#: ../js/ui/userMenu.js:578 #: ../js/ui/userMenu.js:572
msgid "Switch User" msgid "Switch User"
msgstr "تعویض کاربر" msgstr "تعویض کاربر"
#: ../js/ui/userMenu.js:583 #: ../js/ui/userMenu.js:577
msgid "Log Out..." msgid "Log Out..."
msgstr "خروج از سیستم..." msgstr "خروج از سیستم..."
#: ../js/ui/userMenu.js:611 #: ../js/ui/userMenu.js:605
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "وضعیت گپ شما «مشغول» تنظیم می‌شود" msgstr "وضعیت گپ شما «مشغول» تنظیم می‌شود"
#: ../js/ui/userMenu.js:612 #: ../js/ui/userMenu.js:606
msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages." msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages."
msgstr "هم‌اکنون اعلان‌ها، از جمله پیام‌های گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونه‌ای تنظیم شده است که به دیگران نشان دهد ممکن است شما پیام‌هایشان را نبینید." msgstr "هم‌اکنون اعلان‌ها، از جمله پیام‌های گپ، غیرفعال هستند. وضعیتِ برخطِ شما به گونه‌ای تنظیم شده است که به دیگران نشان دهد ممکن است شما پیام‌هایشان را نبینید."
@ -1511,12 +1508,7 @@ msgstr "برای جستجو تایپ کنید..."
msgid "Search" msgid "Search"
msgstr "جستجو" msgstr "جستجو"
#: ../js/ui/windowAttentionHandler.js:39 #: ../js/ui/windowAttentionHandler.js:35
#, c-format
msgid "%s has finished starting"
msgstr "راه‌اندازی %s پایان یافته است"
#: ../js/ui/windowAttentionHandler.js:41
#, c-format #, c-format
msgid "'%s' is ready" msgid "'%s' is ready"
msgstr "«%s» آماده است" msgstr "«%s» آماده است"
@ -1588,3 +1580,11 @@ msgstr "سیستم پرونده‌ها"
msgid "%1$s: %2$s" msgid "%1$s: %2$s"
msgstr "%1$s: %2$s" msgstr "%1$s: %2$s"
#~ msgid "If true, display onscreen keyboard."
#~ msgstr "در صورت تنظیم بر روی «درست»، صفحه‌کلید مجازی نمایش داده می‌شود."
#~ msgid "Show the onscreen keyboard"
#~ msgstr "نمایش صفحه‌کلید مجازی"
#~ msgid "%s has finished starting"
#~ msgstr "راه‌اندازی %s پایان یافته است"

296
po/fi.po
View File

@ -19,11 +19,10 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: gnome-shell\n" "Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "Report-Msgid-Bugs-To: \n"
"shell&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2011-09-26 15:40+0300\n"
"POT-Creation-Date: 2011-09-17 15:25+0000\n" "PO-Revision-Date: 2011-09-26 15:39+0300\n"
"PO-Revision-Date: 2011-09-17 22:26+0300\n" "Last-Translator: Tommi Vainikainen <thv@iki.fi>\n"
"Last-Translator: Ville-Pekka Vainio <vpvainio@iki.fi>\n"
"Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n" "Language-Team: Finnish <gnome-fi-laatu@lists.sourceforge.net>\n"
"Language: fi\n" "Language: fi\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -41,38 +40,170 @@ msgstr "Gnomen ikkunanhallinta"
msgid "Window management and application launching" msgid "Window management and application launching"
msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen" msgstr "Ikkunanhallinta ja sovelluksien käynnistäminen"
#: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Salli pääsy sisäiseen vianselvitys- ja monitorointityökaluun Alt-F2-ikkunan "
"kautta."
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr ""
"Ota käyttöön sisäiset kehittäjiä ja testaajia hyödyttävät työkalut Alt-F2:sta"
msgid "File extension used for storing the screencast"
msgstr "Tiedostopääte ruutunauhoitusten tallentamiseen"
msgid "Framerate used for recording screencasts."
msgstr "Ruutunauhoitusten kuvataajuus."
msgid ""
"GNOME Shell extensions have a uuid property; this key lists extensions which "
"should be loaded. disabled-extensions overrides this setting for extensions "
"that appear in both lists."
msgstr ""
"GNOMEn ikkunanhallinan laajennuksilla on uuid-tunnisteominaisuus, ja tämä "
"avain luettelee laajennukset, jotka ladataan. ”disabled-extensions” (pois "
"kytketyt laajennukset) ylittää tämän asetuksen mikäli laajennus esiintyy "
"molemmissa luetteloissa."
msgid "History for command (Alt-F2) dialog"
msgstr "Historia komentoikkunalle (Alt-F2)"
msgid "History for the looking glass dialog"
msgstr "Historia näyttölasi-ikkunalle"
msgid "If true, display date in the clock, in addition to time."
msgstr "Jos tosi, näytä päivämäärä kellossa ajan lisäksi."
msgid "If true, display seconds in time."
msgstr "Jos tosi, näytä sekunnit ajassa."
msgid "If true, display the ISO week date in the calendar."
msgstr "Jos tosi, näytä ISO-viikonpäivät kalenterissa."
msgid "List of desktop file IDs for favorite applications"
msgstr "Luettelo työpöytätiedostojen tunnisteista lempisovelluksille"
#, no-c-format
msgid ""
"Sets the GStreamer pipeline used to encode recordings. It follows the syntax "
"used for gst-launch. The pipeline should have an unconnected sink pad where "
"the recorded video is recorded. It will normally have a unconnected source "
"pad; output from that pad will be written into the output file. However the "
"pipeline can also take care of its own output - this might be used to send "
"the output to an icecast server via shout2send or similar. When unset or set "
"to an empty value, the default pipeline will be used. This is currently "
"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and "
"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess "
"at the optimal thread count on the system."
msgstr ""
"Asettaa GStreamer-liukuhihnan, jota käytetään nauhoitusten pakkaamiseen. "
"Asetus noudattaa gst-launch-komennon syntaksia. Liukuhihnalla tulee olla "
"yhdistämätön viemärialusta, jonne nauhoitettu video syötetään. Normaalisti "
"sillä on yhdistämätön lähde, jonka tuloste kirjoitetaan tulostetiedostoon. "
"Liukuhihna voi kuitenkin huolehtia itse tulosteesta - tätä voidaan käyttää "
"vaikkapa lähettämään tuloste Icecast-palvelimelle shout2send- tai "
"vastaavalla komponentilla. Jos tätä ei aseteta tai arvona on tyhjää, "
"käytetään oletusliukuhihnaa. Oletusliukuhihna on tällä hetkellä ”videorate ! "
"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux” ja nauhoittaa WEBM-"
"muotoon VP8-koodekilla. %T korvautuu arvauksella parhaan suorituskyvy "
"antavasta säiemäärästä järjestelmässä."
msgid "Show date in clock"
msgstr "Näytä päivämäärä kellossa"
msgid "Show the week date in the calendar"
msgstr "Näytä viikonpäivä kalenterissa"
msgid "Show time with seconds"
msgstr "Näytä aika sekuntien kera"
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr "Näitä tunnisteita vastaavat sovellukset näytetään suosikkien alueella."
msgid ""
"The filename for recorded screencasts will be a unique filename based on the "
"current date, and use this extension. It should be changed when recording to "
"a different container format."
msgstr ""
"Nauhoitetuille ruutunauhoituksille valitaan yksikäsitteinen tiedostonimi "
"nykyisen päivämäärän ja tämän tiedostopäätteen mukaisesti. Tiedostopääte "
"tulisi vaihtaa mikäli nauhoitetaan eri tallennusmuotoon."
msgid ""
"The framerate of the resulting screencast recordered by GNOME Shell's "
"screencast recorder in frames-per-second."
msgstr ""
"Nauhoituksesta tuloksena saatavan ruutunauhoituksen kuvataajuus kun käytössä "
"on GNOMEn ikkunanhallinnan nauhoitin, kuvaa per sekunti."
msgid "The gstreamer pipeline used to encode the screencast"
msgstr "Gstreamer-liukuhihna jolla ruutunauhoitukset pakataan"
msgid ""
"The shell normally monitors active applications in order to present the most "
"used ones (e.g. in launchers). While this data will be kept private, you may "
"want to disable this for privacy reasons. Please note that doing so won't "
"remove already saved data."
msgstr ""
"Ikkunanhallinta seuraa normaalisti aktiivisia sovelluksia, jotta eniten "
"käytetyt voidaan esittää (esim. käynnistimissä). Vaikka nämä tiedot pysyvät "
"yksityisinä, voit silti haluta ottaa ominaisuuden pois käytöstä "
"yksityisyyden vuoksi. Huomaa että pois kytkeminen ei poista aiemmin "
"tallennettuja tietoja."
msgid "The type of keyboard to use."
msgstr "Käytettävän näppäimistön tyyppi."
msgid "Uuids of extensions to enable" msgid "Uuids of extensions to enable"
msgstr "Käyttöön otettavien laajennosten UUID:t" msgstr "Käyttöön otettavien laajennosten UUID:t"
#: ../js/gdm/loginDialog.js:604 msgid "Whether to collect stats about applications usage"
msgid "Session..." msgstr "Kerätäänkö sovellusten käytöstä tilastoja"
msgstr "Istunto..."
msgid "Which keyboard to use"
msgstr "Mitä näppäimistöä käytetään"
msgid "disabled OpenSearch providers"
msgstr "käytöstä poistetut OpenSearch-tarjoajat"
msgid "Session..."
msgstr "Istunto…"
#: ../js/gdm/loginDialog.js:761
msgctxt "title" msgctxt "title"
msgid "Sign In" msgid "Sign In"
msgstr "Kirjaudu sisään" msgstr "Kirjaudu sisään"
#: ../js/gdm/loginDialog.js:818 #. translators: this message is shown below the password entry field
#. to indicate the user can swipe their finger instead
msgid "(or swipe finger)"
msgstr "(tai pyyhkäise sormella)"
msgid "Not listed?" msgid "Not listed?"
msgstr "Ei luettelossa?" msgstr "Ei luettelossa?"
#: ../js/gdm/loginDialog.js:928 ../js/ui/endSessionDialog.js:426
#: ../js/ui/extensionSystem.js:477 ../js/ui/networkAgent.js:158
#: ../js/ui/polkitAuthenticationAgent.js:170 ../js/ui/status/bluetooth.js:480
msgid "Cancel" msgid "Cancel"
msgstr "Peru" msgstr "Peru"
#: ../js/gdm/loginDialog.js:933
msgctxt "button" msgctxt "button"
msgid "Sign In" msgid "Sign In"
msgstr "Kirjaudu sisään" msgstr "Kirjaudu sisään"
#: ../js/gdm/loginDialog.js:1253
msgid "Login Window" msgid "Login Window"
msgstr "Kirjautumisikkuna" msgstr "Kirjautumisikkuna"
msgid "Suspend"
msgstr "Valmiustila"
msgid "Restart"
msgstr "Käynnistä uudelleen"
msgid "Power Off"
msgstr "Sammuta"
#: ../js/misc/util.js:92 #: ../js/misc/util.js:92
msgid "Command not found" msgid "Command not found"
msgstr "Komentoa ei löydy" msgstr "Komentoa ei löydy"
@ -123,12 +254,13 @@ msgstr "%s on lisätty suosikkeihin."
msgid "%s has been removed from your favorites." msgid "%s has been removed from your favorites."
msgstr "%s on poistettu suosikeista." msgstr "%s on poistettu suosikeista."
#: ../js/ui/autorunManager.js:592 msgid "Removable Devices"
msgstr "Irroitettavat laitteet"
#, c-format #, c-format
msgid "Open with %s" msgid "Open with %s"
msgstr "Avaa käyttäen %s" msgstr "Avaa käyttäen %s"
#: ../js/ui/autorunManager.js:618
msgid "Eject" msgid "Eject"
msgstr "Poista asemasta" msgstr "Poista asemasta"
@ -285,15 +417,12 @@ msgstr "Ensi viikolla"
msgid "Unknown" msgid "Unknown"
msgstr "Tuntematon" msgstr "Tuntematon"
#: ../js/ui/contactDisplay.js:80 ../js/ui/userMenu.js:147
msgid "Available" msgid "Available"
msgstr "Tavoitettavissa" msgstr "Tavoitettavissa"
#: ../js/ui/contactDisplay.js:85 ../js/ui/userMenu.js:156
msgid "Away" msgid "Away"
msgstr "Poissa" msgstr "Poissa"
#: ../js/ui/contactDisplay.js:89 ../js/ui/userMenu.js:150
msgid "Busy" msgid "Busy"
msgstr "Kiireinen" msgstr "Kiireinen"
@ -305,7 +434,6 @@ msgstr "Ei linjoilla"
msgid "CONTACTS" msgid "CONTACTS"
msgstr "YHTEYSTIEDOT" msgstr "YHTEYSTIEDOT"
#: ../js/ui/dash.js:172 ../js/ui/messageTray.js:1196
msgid "Remove" msgid "Remove"
msgstr "Poista" msgstr "Poista"
@ -380,7 +508,7 @@ msgstr "VIIMEISIMMÄT"
#: ../js/ui/endSessionDialog.js:60 #: ../js/ui/endSessionDialog.js:60
#, c-format #, c-format
msgid "Log Out %s" msgid "Log Out %s"
msgstr "Kirjaudu ulos (%s)..." msgstr "Kirjaa %s ulos"
#: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75 #: ../js/ui/endSessionDialog.js:61 ../js/ui/endSessionDialog.js:75
msgid "Log Out" msgid "Log Out"
@ -410,10 +538,6 @@ msgstr[1] "Sinut kirjataan ulos automaattisesti %d sekunnin kuluttua."
msgid "Logging out of the system." msgid "Logging out of the system."
msgstr "Kirjaudutaan ulos järjestelmästä." msgstr "Kirjaudutaan ulos järjestelmästä."
#: ../js/ui/endSessionDialog.js:80 ../js/ui/endSessionDialog.js:91
msgid "Power Off"
msgstr "Sammuta"
#: ../js/ui/endSessionDialog.js:81 #: ../js/ui/endSessionDialog.js:81
msgid "Click Power Off to quit these applications and power off the system." msgid "Click Power Off to quit these applications and power off the system."
msgstr "" msgstr ""
@ -431,11 +555,6 @@ msgstr[1] "Järjestelmä sammuu automaattisesti %d sekunnin kuluttua."
msgid "Powering off the system." msgid "Powering off the system."
msgstr "Sammutetaan järjestelmää" msgstr "Sammutetaan järjestelmää"
#: ../js/ui/endSessionDialog.js:89 ../js/ui/endSessionDialog.js:97
#: ../js/ui/endSessionDialog.js:106
msgid "Restart"
msgstr "Käynnistä uudelleen"
#: ../js/ui/endSessionDialog.js:98 #: ../js/ui/endSessionDialog.js:98
msgid "Click Restart to quit these applications and restart the system." msgid "Click Restart to quit these applications and restart the system."
msgstr "" msgstr ""
@ -446,8 +565,10 @@ msgstr ""
#, c-format #, c-format
msgid "The system will restart automatically in %d second." msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds." msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua." msgstr[0] ""
msgstr[1] "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua." "Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua."
msgstr[1] ""
"Järjestelmä käynnistyy automaattisesti uudelleen %d sekunnin kuluttua."
#: ../js/ui/endSessionDialog.js:104 #: ../js/ui/endSessionDialog.js:104
msgid "Restarting the system." msgid "Restarting the system."
@ -462,7 +583,6 @@ msgstr "Asenna"
msgid "Download and install '%s' from extensions.gnome.org?" msgid "Download and install '%s' from extensions.gnome.org?"
msgstr "Lataa ja asenna ”%s” sivustolta extensions.gnome.org?" msgstr "Lataa ja asenna ”%s” sivustolta extensions.gnome.org?"
#: ../js/ui/keyboard.js:513 ../js/ui/status/power.js:211
msgid "Keyboard" msgid "Keyboard"
msgstr "Näppäimistö" msgstr "Näppäimistö"
@ -500,93 +620,71 @@ msgstr "Näytä lähde"
msgid "Web Page" msgid "Web Page"
msgstr "WWW-sivu" msgstr "WWW-sivu"
#: ../js/ui/messageTray.js:1189
msgid "Open" msgid "Open"
msgstr "Avaa" msgstr "Avaa"
#: ../js/ui/messageTray.js:2368
msgid "System Information" msgid "System Information"
msgstr "Järjestelmän tiedot" msgstr "Järjestelmän tiedot"
#: ../js/ui/networkAgent.js:138
msgid "Show password" msgid "Show password"
msgstr "Näytä salasana" msgstr "Näytä salasana"
#: ../js/ui/networkAgent.js:153
msgid "Connect" msgid "Connect"
msgstr "Yhdistä" msgstr "Yhdistä"
#. Cisco LEAP #. Cisco LEAP
#: ../js/ui/networkAgent.js:248 ../js/ui/networkAgent.js:260
#: ../js/ui/networkAgent.js:287 ../js/ui/networkAgent.js:307
#: ../js/ui/networkAgent.js:317
msgid "Password: " msgid "Password: "
msgstr "Salasana: " msgstr "Salasana: "
#. static WEP #. static WEP
#: ../js/ui/networkAgent.js:253
msgid "Key: " msgid "Key: "
msgstr "Avain: " msgstr "Avain: "
#. TTLS and PEAP are actually much more complicated, but this complication #. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication #. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one) #. (and don't even care of which one)
#: ../js/ui/networkAgent.js:285 ../js/ui/networkAgent.js:303
msgid "Username: " msgid "Username: "
msgstr "Käyttäjänimi: " msgstr "Käyttäjänimi: "
#: ../js/ui/networkAgent.js:291
msgid "Identity: " msgid "Identity: "
msgstr "Henkilöllisyys: " msgstr "Henkilöllisyys: "
#: ../js/ui/networkAgent.js:293
msgid "Private key password: " msgid "Private key password: "
msgstr "Salaisen avaimen salasana: " msgstr "Salaisen avaimen salasana: "
#: ../js/ui/networkAgent.js:305
msgid "Service: " msgid "Service: "
msgstr "Palvelu: " msgstr "Palvelu: "
#: ../js/ui/networkAgent.js:334
msgid "Authentication required by wireless network" msgid "Authentication required by wireless network"
msgstr "Langaton verkko vaatii tunnistautumisen" msgstr "Langaton verkko vaatii tunnistautumisen"
#: ../js/ui/networkAgent.js:335
#, c-format #, c-format
msgid "" msgid ""
"Passwords or encryption keys are required to access the wireless network '%" "Passwords or encryption keys are required to access the wireless network "
"s'." "'%s'."
msgstr "Langaton verkko %s vaatii salasanan tai salausavaimia." msgstr "Langaton verkko %s vaatii salasanan tai salausavaimia."
#: ../js/ui/networkAgent.js:339
msgid "Wired 802.1X authentication" msgid "Wired 802.1X authentication"
msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen" msgstr "Kiinteän 802.1X-yhteyden tunnistautuminen"
#: ../js/ui/networkAgent.js:341
msgid "Network name: " msgid "Network name: "
msgstr "Verkon nimi: " msgstr "Verkon nimi: "
#: ../js/ui/networkAgent.js:346
msgid "DSL authentication" msgid "DSL authentication"
msgstr "DSL-tunnistautuminen" msgstr "DSL-tunnistautuminen"
#: ../js/ui/networkAgent.js:353
msgid "PIN code required" msgid "PIN code required"
msgstr "PIN-koodi vaaditaan" msgstr "PIN-koodi vaaditaan"
#: ../js/ui/networkAgent.js:354
msgid "PIN code is needed for the mobile broadband device" msgid "PIN code is needed for the mobile broadband device"
msgstr "Mobiililaajakaista vaatii PIN-koodin" msgstr "Mobiililaajakaista vaatii PIN-koodin"
#: ../js/ui/networkAgent.js:355
msgid "PIN: " msgid "PIN: "
msgstr "PIN: " msgstr "PIN: "
#: ../js/ui/networkAgent.js:361
msgid "Mobile broadband network password" msgid "Mobile broadband network password"
msgstr "Mobiililaajakaistan verkkosalasana" msgstr "Mobiililaajakaistan verkkosalasana"
#: ../js/ui/networkAgent.js:362
#, c-format #, c-format
msgid "A password is required to connect to '%s'." msgid "A password is required to connect to '%s'."
msgstr "Salasana vaaditaan kohteeseen %s yhdistämiseksi." msgstr "Salasana vaaditaan kohteeseen %s yhdistämiseksi."
@ -610,18 +708,15 @@ msgid "Dash"
msgstr "Pikavalikko" msgstr "Pikavalikko"
#. TODO - _quit() doesn't really work on apps in state STARTING yet #. TODO - _quit() doesn't really work on apps in state STARTING yet
#: ../js/ui/panel.js:538
#, c-format #, c-format
msgid "Quit %s" msgid "Quit %s"
msgstr "Lopeta %s" msgstr "Lopeta %s"
#. Translators: If there is no suitable word for "Activities" #. 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:574
msgid "Activities" msgid "Activities"
msgstr "Toiminnot" msgstr "Toiminnot"
#: ../js/ui/panel.js:966
msgid "Top Bar" msgid "Top Bar"
msgstr "Yläpalkki" msgstr "Yläpalkki"
@ -636,7 +731,7 @@ msgstr "Yritä uudelleen"
#: ../js/ui/placeDisplay.js:163 #: ../js/ui/placeDisplay.js:163
msgid "Connect to..." msgid "Connect to..."
msgstr "Yhdistä..." msgstr "Yhdistä"
#: ../js/ui/placeDisplay.js:375 #: ../js/ui/placeDisplay.js:375
msgid "PLACES & DEVICES" msgid "PLACES & DEVICES"
@ -650,7 +745,6 @@ msgstr "Tunnistautuminen vaaditaan"
msgid "Administrator" msgid "Administrator"
msgstr "Ylläpitäjä" msgstr "Ylläpitäjä"
#: ../js/ui/polkitAuthenticationAgent.js:174
msgid "Authenticate" msgid "Authenticate"
msgstr "Tunnistaudu" msgstr "Tunnistaudu"
@ -658,11 +752,9 @@ msgstr "Tunnistaudu"
#. * requested authentication was not gained; this can happen #. * requested authentication was not gained; this can happen
#. * because of an authentication error (like invalid password), #. * because of an authentication error (like invalid password),
#. * for instance. #. * for instance.
#: ../js/ui/polkitAuthenticationAgent.js:262
msgid "Sorry, that didn't work. Please try again." msgid "Sorry, that didn't work. Please try again."
msgstr "Tunnistautuminen epäonnistui. Yritä uudelleen." msgstr "Tunnistautuminen epäonnistui. Yritä uudelleen."
#: ../js/ui/polkitAuthenticationAgent.js:274
msgid "Password:" msgid "Password:"
msgstr "Salasana:" msgstr "Salasana:"
@ -671,7 +763,6 @@ msgstr "Salasana:"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will #. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches. #. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:687
msgid "toggle-switch-us" msgid "toggle-switch-us"
msgstr "toggle-switch-intl" msgstr "toggle-switch-intl"
@ -681,7 +772,7 @@ msgstr "Syötä komento:"
#: ../js/ui/searchDisplay.js:340 #: ../js/ui/searchDisplay.js:340
msgid "Searching..." msgid "Searching..."
msgstr "Haetaan..." msgstr "Haetaan"
#: ../js/ui/searchDisplay.js:363 #: ../js/ui/searchDisplay.js:363
msgid "No matching results." msgid "No matching results."
@ -698,9 +789,9 @@ msgstr "Lähennys"
#. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA, #. let screenReader = this._buildItem(_("Screen Reader"), APPLICATIONS_SCHEMA,
#. 'screen-reader-enabled'); #. 'screen-reader-enabled');
#. this.menu.addMenuItem(screenReader); #. this.menu.addMenuItem(screenReader);
#. let screenKeyboard = this._buildItem(_("Screen Keyboard"), APPLICATIONS_SCHEMA, msgid "Screen Keyboard"
#. 'screen-keyboard-enabled'); msgstr "Näyttönäppäimistö"
#. this.menu.addMenuItem(screenKeyboard);
#: ../js/ui/status/accessibility.js:75 #: ../js/ui/status/accessibility.js:75
msgid "Visual Alerts" msgid "Visual Alerts"
msgstr "Visuaaliset hälytykset" msgstr "Visuaaliset hälytykset"
@ -745,11 +836,11 @@ msgstr "Näkyvyys"
#: ../js/ui/status/bluetooth.js:66 #: ../js/ui/status/bluetooth.js:66
msgid "Send Files to Device..." msgid "Send Files to Device..."
msgstr "Lähetä tiedostoja laitteelle..." msgstr "Lähetä tiedostoja laitteelle"
#: ../js/ui/status/bluetooth.js:67 #: ../js/ui/status/bluetooth.js:67
msgid "Set up a New Device..." msgid "Set up a New Device..."
msgstr "Asenna uusi laite..." msgstr "Asenna uusi laite"
#: ../js/ui/status/bluetooth.js:91 #: ../js/ui/status/bluetooth.js:91
msgid "Bluetooth Settings" msgid "Bluetooth Settings"
@ -766,19 +857,19 @@ msgstr "Yhteys"
#: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486 #: ../js/ui/status/bluetooth.js:217 ../js/ui/status/network.js:486
msgid "disconnecting..." msgid "disconnecting..."
msgstr "katkaistaan yhteyttä..." msgstr "katkaistaan yhteyttä"
#: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492 #: ../js/ui/status/bluetooth.js:230 ../js/ui/status/network.js:492
msgid "connecting..." msgid "connecting..."
msgstr "yhdistetään..." msgstr "yhdistetään"
#: ../js/ui/status/bluetooth.js:248 #: ../js/ui/status/bluetooth.js:248
msgid "Send Files..." msgid "Send Files..."
msgstr "Lähetä tiedostoja..." msgstr "Lähetä tiedostoja"
#: ../js/ui/status/bluetooth.js:253 #: ../js/ui/status/bluetooth.js:253
msgid "Browse Files..." msgid "Browse Files..."
msgstr "Selaa tiedostoja..." msgstr "Selaa tiedostoja"
#: ../js/ui/status/bluetooth.js:262 #: ../js/ui/status/bluetooth.js:262
msgid "Error browsing device" msgid "Error browsing device"
@ -859,11 +950,9 @@ msgstr "Kirjoita laitteella mainittu PIN-koodi."
msgid "OK" msgid "OK"
msgstr "OK" msgstr "OK"
#: ../js/ui/status/keyboard.js:72
msgid "Show Keyboard Layout" msgid "Show Keyboard Layout"
msgstr "Näytä näppäimistön asettelu" msgstr "Näytä näppäimistön asettelu"
#: ../js/ui/status/keyboard.js:77
msgid "Region and Language Settings" msgid "Region and Language Settings"
msgstr "Kielen ja alueen asetukset" msgstr "Kielen ja alueen asetukset"
@ -908,13 +997,11 @@ msgstr "ei käytettävissä"
msgid "connection failed" msgid "connection failed"
msgstr "yhteys katkesi" msgstr "yhteys katkesi"
#: ../js/ui/status/network.js:575 ../js/ui/status/network.js:1515
msgid "More..." msgid "More..."
msgstr "Lisää..." msgstr "Lisää"
#. TRANSLATORS: this is the indication that a connection for another logged in user is active, #. TRANSLATORS: this is the indication that a connection for another logged in user is active,
#. and we cannot access its settings (including the name) #. and we cannot access its settings (including the name)
#: ../js/ui/status/network.js:611 ../js/ui/status/network.js:1455
msgid "Connected (private)" msgid "Connected (private)"
msgstr "Yhdistetty (yksityinen)" msgstr "Yhdistetty (yksityinen)"
@ -931,7 +1018,6 @@ msgid "Auto dial-up"
msgstr "Automaattinen, puhelinverkko" msgstr "Automaattinen, puhelinverkko"
#. TRANSLATORS: this the automatic wireless connection name (including the network name) #. TRANSLATORS: this the automatic wireless connection name (including the network name)
#: ../js/ui/status/network.js:878 ../js/ui/status/network.js:1467
#, c-format #, c-format
msgid "Auto %s" msgid "Auto %s"
msgstr "Automaattinen: %s" msgstr "Automaattinen: %s"
@ -940,47 +1026,36 @@ msgstr "Automaattinen: %s"
msgid "Auto bluetooth" msgid "Auto bluetooth"
msgstr "Automaattinen: Bluetooth" msgstr "Automaattinen: Bluetooth"
#: ../js/ui/status/network.js:1469
msgid "Auto wireless" msgid "Auto wireless"
msgstr "Automaattinen: langaton" msgstr "Automaattinen: langaton"
#: ../js/ui/status/network.js:1558
msgid "Enable networking" msgid "Enable networking"
msgstr "Ota verkko käyttöön" msgstr "Ota verkko käyttöön"
#: ../js/ui/status/network.js:1570
msgid "Wired" msgid "Wired"
msgstr "Kiinteä" msgstr "Kiinteä"
#: ../js/ui/status/network.js:1581
msgid "Wireless" msgid "Wireless"
msgstr "Langaton" msgstr "Langaton"
#: ../js/ui/status/network.js:1591
msgid "Mobile broadband" msgid "Mobile broadband"
msgstr "Mobiililaajakaista" msgstr "Mobiililaajakaista"
#: ../js/ui/status/network.js:1601
msgid "VPN Connections" msgid "VPN Connections"
msgstr "VPN-yhteydet" msgstr "VPN-yhteydet"
#: ../js/ui/status/network.js:1612
msgid "Network Settings" msgid "Network Settings"
msgstr "Verkkoasetukset" msgstr "Verkkoasetukset"
#: ../js/ui/status/network.js:1749
msgid "Connection failed" msgid "Connection failed"
msgstr "Yhteys epäonnistui" msgstr "Yhteys epäonnistui"
#: ../js/ui/status/network.js:1750
msgid "Activation of network connection failed" msgid "Activation of network connection failed"
msgstr "Verkkoyhteyden aktivointi epäonnistui" msgstr "Verkkoyhteyden aktivointi epäonnistui"
#: ../js/ui/status/network.js:2000
msgid "Networking is disabled" msgid "Networking is disabled"
msgstr "Verkko ei ole käytössä" msgstr "Verkko ei ole käytössä"
#: ../js/ui/status/network.js:2125
msgid "Network Manager" msgid "Network Manager"
msgstr "Verkon hallinta" msgstr "Verkon hallinta"
@ -992,7 +1067,7 @@ msgstr "Virranhallinta"
#. to estimate battery life #. to estimate battery life
#: ../js/ui/status/power.js:103 #: ../js/ui/status/power.js:103
msgid "Estimating..." msgid "Estimating..."
msgstr "Arvioidaan..." msgstr "Arvioidaan"
#: ../js/ui/status/power.js:110 #: ../js/ui/status/power.js:110
#, c-format #, c-format
@ -1327,55 +1402,39 @@ msgstr "Muokkaa tiliä"
msgid "Unknown reason" msgid "Unknown reason"
msgstr "Tuntematon syy" msgstr "Tuntematon syy"
#: ../js/ui/userMenu.js:153
msgid "Hidden" msgid "Hidden"
msgstr "Piilotettu" msgstr "Piilotettu"
#: ../js/ui/userMenu.js:159
msgid "Idle" msgid "Idle"
msgstr "Jouten" msgstr "Jouten"
#: ../js/ui/userMenu.js:162
msgid "Unavailable" msgid "Unavailable"
msgstr "Ei tavoitettavissa" msgstr "Ei tavoitettavissa"
#: ../js/ui/userMenu.js:518 ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:592
msgid "Power Off..." msgid "Power Off..."
msgstr "Sammuta..." msgstr "Sammuta"
#: ../js/ui/userMenu.js:520 ../js/ui/userMenu.js:522 ../js/ui/userMenu.js:591
msgid "Suspend"
msgstr "Valmiustila"
#: ../js/ui/userMenu.js:554
msgid "Notifications" msgid "Notifications"
msgstr "Ilmoitukset" msgstr "Ilmoitukset"
#: ../js/ui/userMenu.js:562
msgid "Online Accounts" msgid "Online Accounts"
msgstr "Verkkotilit" msgstr "Verkkotilit"
#: ../js/ui/userMenu.js:566
msgid "System Settings" msgid "System Settings"
msgstr "Järjestelmän asetukset" msgstr "Järjestelmän asetukset"
#: ../js/ui/userMenu.js:573
msgid "Lock Screen" msgid "Lock Screen"
msgstr "Lukitse näyttö" msgstr "Lukitse näyttö"
#: ../js/ui/userMenu.js:578
msgid "Switch User" msgid "Switch User"
msgstr "Vaihda käyttäjää" msgstr "Vaihda käyttäjää"
#: ../js/ui/userMenu.js:583
msgid "Log Out..." msgid "Log Out..."
msgstr "Kirjaudu ulos..." msgstr "Kirjaudu ulos"
#: ../js/ui/userMenu.js:611
msgid "Your chat status will be set to busy" msgid "Your chat status will be set to busy"
msgstr "Pikaviestitilaksi asetetaan ”kiireinen”" msgstr "Pikaviestitilaksi asetetaan ”kiireinen”"
#: ../js/ui/userMenu.js:612
msgid "" msgid ""
"Notifications are now disabled, including chat messages. Your online status " "Notifications are now disabled, including chat messages. Your online status "
"has been adjusted to let others know that you might not see their messages." "has been adjusted to let others know that you might not see their messages."
@ -1390,7 +1449,7 @@ msgstr ""
#. characters. #. characters.
#: ../js/ui/viewSelector.js:120 #: ../js/ui/viewSelector.js:120
msgid "Type to search..." msgid "Type to search..."
msgstr "Kirjoita hakeaksesi..." msgstr "Kirjoita hakeaksesi"
#: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261 #: ../js/ui/viewSelector.js:140 ../src/shell-util.c:261
msgid "Search" msgid "Search"
@ -1508,21 +1567,12 @@ msgstr "%1$s: %2$s"
#~ msgid "Drag here to add favorites" #~ msgid "Drag here to add favorites"
#~ msgstr "Raahaa tähän lisätäksesi suosikkeihin" #~ msgstr "Raahaa tähän lisätäksesi suosikkeihin"
#~ msgid "Find..."
#~ msgstr "Etsi..."
#~ msgid "Invisible" #~ msgid "Invisible"
#~ msgstr "Näkymätön" #~ msgstr "Näkymätön"
#~ msgid "Sidebar" #~ msgid "Sidebar"
#~ msgstr "Sivupalkki" #~ msgstr "Sivupalkki"
#~ msgid "System Preferences..."
#~ msgstr "Järjestelmän asetukset"
#~ msgid "Shut Down..."
#~ msgstr "Sammuta..."
#~ msgid "Recent Documents" #~ msgid "Recent Documents"
#~ msgstr "Viimeisimmät asiakirjat" #~ msgstr "Viimeisimmät asiakirjat"

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