Compare commits

...

109 Commits

Author SHA1 Message Date
Florian Müllner
efba8774b5 messageTray: Stop including an actor with Notifications
We now stopped using notification actors directly for anything, so
we can simplify the Notification class significantly by turning it
into a purely informational object others can use to built their UI
representation from.
2015-03-17 06:17:44 +01:00
Florian Müllner
ff68e268b2 telepathyClient: Provide a custom banner implementation
Since we stopped special-casing chat notifications to use the old
notification actor, we need to provide a notification banner to
maintain the inline chat functionality, so split out the UI from
the existing ChatNotification class.
2015-03-17 06:17:36 +01:00
Florian Müllner
d7ff7e062b messageTray: Always destroy banners when done displaying
Special-casing banners of resident notifications was really a
thinly veiled special case for chat notifications, as those were
still using the old notification actor which coupled the life-time
of the notification to its actor. This is no longer the case, so
we can do the sane thing and destroy banners once they are no
longer needed.
2015-03-17 06:05:34 +01:00
Florian Müllner
87767422e4 Revert "messageTray: Special-case chat notifications to use the old actor"
This was really just a temporary hack to buy us more time to properly port
chat notifications to the new banners ...

This reverts commit cd5318baa7.
2015-03-17 06:05:34 +01:00
Florian Müllner
73c35f8629 telepathyClient: Don't remove body on updates
Passing null as body always meant clearing the existing one. While this
mattered less with the old message tray which used the expanded actor,
the new message list in the calendar uses the unexpanded body. We clearly
don't want that to disappear on icon changes, so pass the existing one.
2015-03-17 06:05:34 +01:00
Florian Müllner
8f275a79a9 Update style
Subscription messages were removed in 38a2f26e44.
2015-03-17 06:04:52 +01:00
Florian Müllner
a504dd866b calendar: Minor cleanup
Commit b61cb92053 added a close method, use that instead of
explicitly emitting the corresponding signal.
2015-03-17 05:34:14 +01:00
Florian Müllner
dfc51ef243 messageTray: Minor cleanup
Chain up to the parent instead of setting up a second signal connection.
2015-03-17 05:34:14 +01:00
Florian Müllner
a25d2dc256 telepathyClient: Remove some more dead code 2015-03-17 04:14:44 +01:00
Florian Müllner
b2ae945cf2 telepathyClient: Remove some dead code
This has been unused ever since we stopped logging presence changes in
commit 4448b65a18 ...
2015-03-17 03:29:42 +01:00
Jasper St. Pierre
681861c8c7 loginDialog: Better handle setting the active session
We currently use the setActiveSession method to both mark a menu item as
selected, and also tell gdm about the current session the user selected.

Since gdm is ultimately in charge of the state, we should decouple this
and simply ask gdm to set the session, and have the menu item reflect
what gdm thinks is the current session.

This prevents state getting mismatched and oscillations from happening,
where we get in a loop of constantly telling gdm what the session is.

https://bugzilla.gnome.org/show_bug.cgi?id=740142
2015-03-16 17:47:27 -04:00
Jasper St. Pierre
6d40cb98e7 loginDialog: Don't arbitrarily pick a random session for the user
gdm should be in charge of telling us the default session, and it
should pick one for the user if she doesn't already have one.

https://bugzilla.gnome.org/show_bug.cgi?id=740142
2015-03-16 17:47:27 -04:00
Stas Solovey
81d7ab1e49 Updated Russian translation 2015-03-16 19:29:02 +00:00
Daniel Mustieles
2212b4ea71 Updated Spanish translation 2015-03-16 19:02:54 +01:00
Ray Strode
5650355da5 gdm: fix handling of removed smartcard at startup
If a smartcard is missing from the reader when we start up,
and the system is configured to disable password authentication,
then we need to ask the user to insert their smartcard.

This commit fixes that.

https://bugzilla.gnome.org/show_bug.cgi?id=740143
2015-03-16 13:45:50 -04:00
Alexander Shopov
20a9206919 Updated Bulgarian translation 2015-03-16 18:36:03 +02:00
Stas Solovey
3533b2a8bc Updated Russian translation 2015-03-15 22:41:39 +00:00
Alexandre Franke
b8d2238ff0 Updated French translation 2015-03-15 22:09:29 +00:00
Florian Müllner
96c8870820 viewSelector: Mirror open-app-view edge drag gesture for RTL
It makes sense for the gesture to reflect the position of the
activities button / dash. In RTL locales, those are located on
the right rather than the left, so make the gesture apply to
the opposite edge in that case.

https://bugzilla.gnome.org/show_bug.cgi?id=737502
2015-03-15 19:41:44 +01:00
Tom Tryfonidis
177e9316b0 Updated Greek translation 2015-03-15 18:09:29 +00:00
Ask Hjorth Larsen
27b7e6ef4b Updated Danish translation 2015-03-15 16:59:57 +01:00
Matej Urbančič
32d686d90f Updated Slovenian translation 2015-03-15 10:26:15 +01:00
Cosimo Cecchi
f812e9be7d ShellApp: use st_icon_set_fallback_icon_name() to specify app fallback
We can now safely pass a NULL GIcon to st_icon_set_gicon(), and specify
a more generic fallback using the new API we just introduced.

https://bugzilla.gnome.org/show_bug.cgi?id=746219
2015-03-14 17:31:07 -07:00
Cosimo Cecchi
c7185d597b StIcon: add a fallback-icon-name property
This can be used when the lookup for the specified icon fails, in case
the client doesn't want an empty texture.

https://bugzilla.gnome.org/show_bug.cgi?id=746219
2015-03-14 17:31:07 -07:00
Clément Guérin
6380526c12 screenshot: fix off-by-one selection size
Selecting the whole screen made a (scr_w-1,scr_h-1) sized screenshot.

https://bugzilla.gnome.org/show_bug.cgi?id=746223
2015-03-14 16:04:23 -07:00
Clément Guérin
fa4f6c4561 screenshot: use integer coordinates
This fixes the shivery selection rectangle when making a region
screenshot.

https://bugzilla.gnome.org/show_bug.cgi?id=746223
2015-03-14 16:04:23 -07:00
Cosimo Cecchi
a5b7eaec1a legacyTray: add a pointer barrier to activate the tray
Allows easier access to the tray by just pushing the cursor against the
edge.

https://bugzilla.gnome.org/show_bug.cgi?id=746026
2015-03-14 14:26:29 -07:00
Balázs Úr
d165295c83 Updated Hungarian translation 2015-03-14 19:55:14 +00:00
Aurimas Černius
5f5874f8ca Updated Lithuanian translation 2015-03-14 21:01:26 +02:00
Daniel Korostil
ab5e950cd0 Updated Ukrainian translation 2015-03-14 12:09:45 +02:00
Victor Ibragimov
3e760f5ca6 Updated Tajik translation 2015-03-14 04:51:54 +00:00
A S Alam
9e8a24467e Translation pa updated for Gnome 2015-03-13 21:37:10 -05:00
Trần Ngọc Quân
d84d1f79a0 Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2015-03-14 07:53:45 +07:00
Changwoo Ryu
024ec36cc0 Updated Korean translation 2015-03-14 09:40:05 +09:00
Marek Černocký
51b1258866 Updated Czech translation 2015-03-14 00:04:01 +01:00
Carlos Garnacho
ff1b76f4c7 keyboard: Listen to MetaBackend::last-device-changed for OSK changes
Instead of listening to a dbus property exported by g-s-d, listen to the
MetaBackend signal telling the last interacted device, and make sure we
only show the keyboard for touchscreens.

https://bugzilla.gnome.org/show_bug.cgi?id=745977
2015-03-13 21:08:51 +01:00
Enrico Nicoletto
0389ae5299 Updated Brazilian Portuguese translation 2015-03-13 19:33:05 +00:00
Piotr Drąg
35ab60b712 Updated Polish translation 2015-03-13 19:05:31 +01:00
Dušan Kazik
0ea15f70c3 Updated Slovak translation 2015-03-13 16:46:21 +00:00
Baurzhan Muftakhidinov
f1c7a36dde Updated Kazakh translation 2015-03-13 16:35:25 +00:00
Florian Müllner
cc9093f118 legacyTray: Minor style update
- move whitespace into buttons for Fitts'ability
 - add focus/hover highlights

https://bugzilla.gnome.org/show_bug.cgi?id=746022
2015-03-13 17:15:29 +01:00
Florian Müllner
775a2ea051 legacyTray: Add to ctrl-alt-tab
While legacy status icons are notoriously bad with regard to
accessibility (well, among many other things), we should still
make them available via ctrl-alt-tab ...

https://bugzilla.gnome.org/show_bug.cgi?id=746022
2015-03-13 17:12:10 +01:00
Florian Müllner
cb3d5c2b51 Use dedicated icons for top bar/windows in ctrl-alt-tab
The previously used ones were quite a stretch, so now that we got
dedicated ones, let's use them.
2015-03-13 17:12:10 +01:00
Samir Ribic
dc1c31d704 Added Bosnian translation 2015-03-13 15:47:39 +00:00
Florian Müllner
777616d8b0 calendar: Permanently hide dismissed events
Currently dismissed events will simply reappear when browsing
back and forth between dates, which is clearly broken. Instead,
hide events that have been dismissed permanently. For now, we
simply store a list of ignored IDs ourselves, until we get API
in evolution-data-server to reliably store custom per-event
properties.

https://bugzilla.gnome.org/show_bug.cgi?id=744927
2015-03-13 15:53:41 +01:00
Florian Müllner
8aeebbbf78 calendar-server: Give each event an unambiguous ID
Each event returned by GetEvents includes the (currently unused)
UID, which is not always enough to unambiguously identify an event
(different calendar sources, recurring events, ...).
As we will start using the property to record events that have been
dismissed and should be persistently hidden from the calendar, change
it to a truly unique ID.

https://bugzilla.gnome.org/show_bug.cgi?id=744927
2015-03-13 15:53:41 +01:00
Trần Ngọc Quân
dade67ba5a Updated Vietnamese translation
Signed-off-by: Trần Ngọc Quân <vnwildman@gmail.com>
2015-03-13 07:49:42 +07:00
Piotr Drąg
921a9071a1 NetworkAgent: use existing strings to avoid breaking the string freeze 2015-03-12 22:23:57 +01:00
Giovanni Campagna
90a08ba0b6 NetworkAgent: differentiate between user-initiated actions and automatic connections
If the action was initiated by the user, we want to show the
modal dialog immediately, while if the action was initiated by
NM autoconnection policy we first show a notification and then
show the dialog when needed.

https://bugzilla.gnome.org/show_bug.cgi?id=660293
2015-03-12 13:33:38 -07:00
Rui Matos
4e52ed9df7 status/keyboard: When per-window, choose the first IS for new windows
This was libgnomekbd's behavior and seems to be prefered by users.

https://bugzilla.gnome.org/show_bug.cgi?id=746037
2015-03-12 17:55:47 +01:00
Florian Müllner
01b51cd081 calendar: Only allow closing events on the current day
The design calls for differentiating between dismissable reminders
and permanent events, based on whether the selected date is "today"
or some other day.

https://bugzilla.gnome.org/show_bug.cgi?id=744927
2015-03-12 17:10:11 +01:00
Florian Müllner
d1efc274e5 calendar: Factor out a proper EventMessage class
While messages in the EventsSection are currently simple enough to
use the generic Message baseclass, the design calls for events to
only be dismissable on the current day. We will need a subclass to
implement this behavior cleanly, so add one.

https://bugzilla.gnome.org/show_bug.cgi?id=744927
2015-03-12 17:10:11 +01:00
Florian Müllner
d48d787c1e calendar: Minor cleanup
As the design calls for slightly different behavior for the current
day, move the _isToday() function out of MessageListSection to have
it available elsewhere as well ...

https://bugzilla.gnome.org/show_bug.cgi?id=744927
2015-03-12 17:10:11 +01:00
Florian Müllner
e4ad31a5dd calendar: Close messages on clear
Currently the clear action in the section header simply removes all
messages from the section. While the result looks exactly as if the
close button of each individual message had been clicked, the messages
are not actually closed - after a restart (or some other condition that
triggers a reload), the messages simply reappear, which is confusing.
Do the expected thing instead, and make clear close all messages in the
section.

https://bugzilla.gnome.org/show_bug.cgi?id=746027
2015-03-12 17:10:11 +01:00
Florian Müllner
b61cb92053 calendar: Add public close() method
Currently a message can only be closed by its close button. However
as we want to make a section's clear action synonymous with clicking
the close button of each individual message in the list, we will need
to expose the close action, so add a corresponding method.

https://bugzilla.gnome.org/show_bug.cgi?id=746027
2015-03-12 17:10:11 +01:00
Florian Müllner
e72450f5d8 calendar: Only show close button on messages that can be cleared
Currently closing all messages is subtly different from clearing
a section, which is confusing. Start making the behavior more
predictable by only showing a close button in the message when
the section's clear button would remove it.

https://bugzilla.gnome.org/show_bug.cgi?id=746027
2015-03-12 17:10:11 +01:00
Jakub Steiner
d9211b8e20 theme: update sass submodule 2015-03-12 16:15:52 +01:00
Stas Solovey
c16b83fc3e Updated Russian translation 2015-03-11 21:33:55 +00:00
Giovanni Campagna
8b5a44e119 Search: be resilient against buggy search providers
If a search provider returns a meta without a name, don't crash
constructing the actor.

https://bugzilla.gnome.org/show_bug.cgi?id=745861
2015-03-11 13:47:48 -07:00
Giovanni Campagna
b0be6b8678 RemoteSearch: don't complete a search that was cancelled
This closes a race between setTerms and a slow GetInitialResultSet.
The bug manifests as follows:
- initial search for a short string
- previous results === undefined, call GetInitialResultSet
- user types more, cancel previous search in setTerms()
- mainloop, then _gotResults([])
- previous results === [], !!previous results === true
- therefore call GetSubsearchResultSet with an empty list of results
- _gotResults() from GetSubsearchResultSet is empty
- much later, return from GetInitialResultSet is discarded by
  cancellable
- user unhappy because what he searched for is not there

After this fix, the flow is:
- initial search for a short string
- previous results === undefined, call GetInitialResultSet
- user types more, cancel previous search in setTerms()
- mainloop, but no _gotResults
- previous results === undefined, call GetInitialResultSet again with
  longer string
- some time later, return from first GetInitialResultSet is discarded
  by cancellable
- soon after, return from second GetInitialResultSet comes with good
  results
- user happy

https://bugzilla.gnome.org/show_bug.cgi?id=745861
2015-03-11 13:47:48 -07:00
Florian Müllner
bb73547acf calendar: Sync pointer after a message is removed
If a different message ends up underneath the pointer at the end
of the removal animation, it won't receive an enter event until
the pointer is moved, and thus its hover state will not be correct.
Fix it up manually with an explicit pointer sync.

https://bugzilla.gnome.org/show_bug.cgi?id=746019
2015-03-11 21:15:53 +01:00
Alexander Shopov
d8fc58e174 Updated Bulgarian translation 2015-03-11 20:55:38 +02:00
Jiri Grönroos
b9fdffbb62 Finnish translation update 2015-03-11 17:01:29 +02:00
Frédéric Péters
e48a83fcfc po: remove leading space from French date translation 2015-03-11 10:31:06 +01:00
Florian Müllner
4c7eae7ef2 calendar: Also update expanded body if necessary
As we use two separate body actors for expanded and unexpanded
notifications, updating only one of them on notification updates
is not enough - if the notification has already been expanded,
we need to update the second label as well.
2015-03-11 01:47:49 +01:00
Florian Müllner
75745fc23f calendar: Do not left-align bodyStack
It's its contents that should be aligned, the stack itself should
fill the available width.
2015-03-11 01:23:02 +01:00
Florian Müllner
82479db084 telepathyClient: Close overview and panel when activated
There's a strong expectation that delegating or presenting a channel
will result in a window being activated, so close both overview and
calendar as we do elsewhere.
2015-03-11 01:17:57 +01:00
Florian Müllner
9becb3985d calendar: Guard against null passed to setBody() 2015-03-10 23:57:04 +01:00
Muhammet Kara
4cb7df67b7 Updated Turkish translation 2015-03-10 22:54:53 +00:00
Bernd Homuth
e0a12f55b9 Updated German translation 2015-03-10 22:54:18 +00:00
Florian Müllner
b18240370d calendar: Filter out newlines when unexpanded
Enabling line-wrapping of the unexpanded body is not enough to enforce
a single line when the text has embedded newlines, so replace these with
spaces (this is similar to setting ClutterText:single-line-mode, however
that would use a paragraph separator glyph instead).
2015-03-10 23:44:35 +01:00
Florian Müllner
4253df6463 main: Close calendar on activateWindow()
If activateWindow() is called as the result of activating an item
in the Time & Date drop-down (most likely a notification), it should
behave as other items and close the calendar.
2015-03-10 22:41:52 +01:00
Jordi Mas
d8b43865a2 Update Catalan translation 2015-03-10 17:24:55 -04:00
Florian Müllner
3eb8b9ef68 calendar: Fix thinko
Without an explicit index, messages should be added at the end of
the list.

https://bugzilla.gnome.org/show_bug.cgi?id=745988
2015-03-10 21:10:14 +01:00
Jakub Steiner
f96077bd0f theme: consistent focus & hover for system menu & popup menu
- while I'd prefer to use the selected_bg_color for menus,
  we need to be somewhat consistent with the choice

https://bugzilla.gnome.org/show_bug.cgi?id=745246
2015-03-10 21:05:21 +01:00
Jakub Steiner
741846d1ff theme: render css & update submodule 2015-03-10 20:38:05 +01:00
Florian Müllner
f36d7bd078 Update submodule 2015-03-10 19:50:44 +01:00
Ray Strode
bd51c92d65 Update submodule 2015-03-10 14:48:51 -04:00
Jakub Steiner
2aed6ade79 theme: modal dialog headlines
https://bugzilla.gnome.org/show_bug.cgi?id=745687
2015-03-10 19:16:28 +01:00
Jakub Steiner
83e5ea4827 Revert "theme: use a global headline class"
This reverts commit 5915348396.
2015-03-10 18:27:43 +01:00
Jakub Steiner
5915348396 theme: use a global headline class
https://bugzilla.gnome.org/show_bug.cgi?id=745687
2015-03-10 17:45:04 +01:00
Jakub Steiner
567dc70c9b theme: top bar in classic needs some tweaks
https://bugzilla.gnome.org/show_bug.cgi?id=745686
2015-03-10 12:24:53 +01:00
Claude Paroz
8323891294 Fixed date format error in French translation
Fixes bug #745916. Thanks Arnaud Bonatti for the report.
2015-03-10 08:29:02 +01:00
Victor Ibragimov
5bf8695295 Updated Tajik translation 2015-03-10 06:20:13 +00:00
Jakub Steiner
7012437929 theme: modal dialog heading visible for classic
https://bugzilla.gnome.org/show_bug.cgi?id=745687
2015-03-09 19:37:09 +01:00
Kjartan Maraas
83ad98d640 Updated Norwegian bokmål translation from Åka Sikrom. 2015-03-09 19:29:47 +01:00
Daniel Mustieles
1816f763d2 Updated Spanish translation 2015-03-08 21:26:27 +01:00
Matej Urbančič
1a01f07b2c Updated Slovenian translation 2015-03-08 21:24:15 +01:00
Aurimas Černius
23d48fb334 Updated Lithuanian translation 2015-03-08 19:21:20 +02:00
Ross Lagerwall
dada0420b1 mount-operation: Handle multi-line questions
Don't discard multiple lines when updating the message label.

https://bugzilla.gnome.org/show_bug.cgi?id=745713
2015-03-08 11:31:44 +00:00
Daniel Korostil
17a336c795 Updated Ukrainian translation 2015-03-08 12:58:25 +02:00
IWAI, Masaharu
8c347965d7 l10n: Update Japanese translation 2015-03-07 22:35:15 +09:00
Florian Müllner
e1816cd228 popupMenu: Center separators vertically 2015-03-06 19:01:46 +01:00
Florian Müllner
3614da6845 messageTray: Fix custom notification icons
NotificationMessages set the icon either from the corresponding
notification's gicon property, or fall back to the source icon.
Except that we never actually set a notification's gicon property to
the provided icon, so we currently just always fall back, whoops!
2015-03-06 18:28:19 +01:00
Florian Müllner
8aa1765f24 windowManager: Allow toggle-message-tray action in overview
The corresponding action mode was dropped accidentally in commit 08d2e61
when changing the shortcut to open the calendar drop-down instead.
2015-03-06 18:07:19 +01:00
Florian Müllner
8eb0782f25 loginDialog: Pass-through UserWidget's label-actor
https://bugzilla.gnome.org/show_bug.cgi?id=729603
2015-03-06 17:24:13 +01:00
Adel Gadllah
5f6aba7f4b legacyTray: Allow extensions to hijack the tray-icon-added/removed signals 2015-03-06 13:47:47 +01:00
Balázs Úr
986b14fb1b Updated Hungarian translation 2015-03-05 23:11:38 +00:00
Мирослав Николић
7c03b88b74 Updated Serbian translation 2015-03-05 22:41:50 +01:00
Florian Müllner
1f277ebcb9 theme: Update style 2015-03-05 17:12:34 +01:00
Baurzhan Muftakhidinov
8c54bc68e0 Updated Kazakh translation 2015-03-05 15:50:42 +00:00
Florian Müllner
6e39be5b19 popupMenu: Remove unused import 2015-03-05 13:49:28 +01:00
Florian Müllner
cf71ea016f theme: Update sass submodule ...
... to point to the correct source from commit 8536f9312c.
2015-03-05 13:49:28 +01:00
Florian Müllner
4affa5528a dash: Fix show-apps button drop target
Fallout from commit e69cc20fc7 ...

https://bugzilla.gnome.org/show_bug.cgi?id=745666
2015-03-05 12:34:17 +01:00
Jakub Steiner
8536f9312c theme: no selected color for hover in popovers
treat shell popups as gtk popovers, not menus
2015-03-05 12:12:38 +01:00
Jakub Steiner
a0e8456cb5 Revert "theme: have a separate state for hover and focus"
As per discussion in bug #745246 this reverts
commit 8a732d3c13.
2015-03-05 12:02:06 +01:00
Milo Casagrande
77074b5646 Updated Italian translation 2015-03-05 08:01:17 +00:00
Changwoo Ryu
cd68ed8297 Updated Korean translation 2015-03-05 11:09:34 +09:00
Piotr Drąg
eaef067b3e Updated Polish translation 2015-03-04 23:14:08 +01:00
60 changed files with 12335 additions and 12961 deletions

View File

@@ -80,12 +80,13 @@ StEntry {
padding: 0 4px; }
/* Scrollbars */
StScrollView.vfade {
-st-vfade-offset: 68px; }
StScrollView.hfade {
-st-hfade-offset: 68px; }
StScrollBar {
padding: 0; }
StScrollBar.vfade {
-st-vfade-offset: 68px; }
StScrollBar.hfade {
-st-hfade-offset: 68px; }
StScrollView StScrollBar {
min-width: 14px;
min-height: 14px; }
@@ -323,7 +324,7 @@ StScrollBar {
.prompt-dialog-headline {
font-weight: bold;
color: #b3b3b3; }
color: #b2b2a9; }
.prompt-dialog-description:rtl {
text-align: right; }
@@ -392,14 +393,11 @@ StScrollBar {
background-color: black;
box-shadow: inset 0 1px 0px #0d0d0d;
font-weight: bold; }
.popup-menu .popup-menu-item:focus {
background-color: #215d9c;
color: #ffffff; }
.popup-menu .popup-menu-item:hover {
.popup-menu .popup-menu-item:hover, .popup-menu .popup-menu-item:focus {
background-color: rgba(255, 255, 255, 0.1);
color: #fff; }
.popup-menu .popup-menu-item:active {
background-color: #1c5187;
background-color: #215d9c;
color: #ffffff; }
.popup-menu .popup-menu-item:insensitive {
color: rgba(255, 255, 255, 0.5); }
@@ -794,12 +792,12 @@ StScrollBar {
padding: 13px;
border: 1px solid #0d0d0d; }
.system-menu-action:hover, .system-menu-action:focus {
color: #ffffff;
background-color: #215d9c;
background-color: rgba(255, 255, 255, 0.1);
color: #fff;
border: none;
padding: 14px; }
.system-menu-action:active {
background-color: #1c5187;
background-color: #215d9c;
color: #ffffff; }
.system-menu-action > StIcon {
icon-size: 16px; }
@@ -820,7 +818,7 @@ StScrollBar {
.popup-menu-icon {
icon-size: 1.09em; }
.window-close, .notification-close {
.window-close {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
@@ -831,12 +829,6 @@ StScrollBar {
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.notification-close {
-shell-close-overlap-x: 14px;
-shell-close-overlap-y: -12px; }
.notification-close:rtl {
-shell-close-overlap-x: -14px; }
/* NETWORK DIALOGS */
.nm-dialog {
max-height: 500px;
@@ -1157,7 +1149,7 @@ StScrollBar {
/* NOTIFICATIONS & MESSAGE TRAY */
.url-highlighter {
link-color: #215d9c; }
link-color: #2a76c6; }
.notification-banner {
font-size: 11pt;
@@ -1192,32 +1184,6 @@ StScrollBar {
.notification-banner .notification-button:hover, .notification-banner .notification-buttonfocus {
background-color: #292f30; }
.notification {
font-size: 11pt;
width: 34em;
margin: 5px;
border-radius: 6px;
color: #eeeeec;
background-color: #2e3436;
border: 1px solid black;
spacing-rows: 4px;
padding: 8px;
spacing-columns: 10px; }
.notification-unexpanded {
min-height: 48px;
height: 48px; }
.notification-with-image {
min-height: 159px; }
.notification-body {
spacing: 5px; }
.notification-actions {
paddinf-top: 18px;
spacing: 6px; }
.summary-source-counter {
font-size: 10pt;
font-weight: bold;
@@ -1231,36 +1197,20 @@ StScrollBar {
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.5);
border-radius: 0.9em; }
.notification-scrollview {
max-height: 18em;
-st-vfade-offset: 24px; }
.notification-scrollview:ltr > StScrollBar {
padding-left: 6px; }
.notification-scrollview:rtl > StScrollBar {
padding-right: 6px; }
.notification-button {
height: 24px; }
.notification-icon-button {
border-radius: 5px;
padding: 5px;
height: 24px;
width: 24px; }
.notification-icon-button > StIcon {
icons-size: 16px;
width: 16px;
height: 16px;
padding: 2px; }
.secondary-icon {
icon-size: 1.09em; }
.chat-body {
spacing: 5px; }
.chat-response {
margin: 5px; }
.chat-log-message {
color: #e6e6e6; }
.chat-empty-line {
font-size: 4px; }
.chat-new-group {
padding-top: 1em; }
.chat-received {
padding-left: 4px; }
@@ -1284,12 +1234,6 @@ StScrollBar {
padding-left: 0;
padding-right: 4px; }
.chat-notification-scrollview {
max-height: 22em; }
.subscription-message {
font-style: italic; }
.hotplug-transient-box {
spacing: 6px;
padding: 2px 72px 2px 12px; }
@@ -1340,12 +1284,23 @@ StScrollBar {
border-radius: 6px 0 0 0;
border-right-width: 0; }
.legacy-tray-handle StIcon {
icon-size: 24px; }
.legacy-tray-handle,
.legacy-tray-icon {
padding: 6px; }
.legacy-tray-handle StIcon,
.legacy-tray-icon StIcon {
icon-size: 24px; }
.legacy-tray-handle:hover, .legacy-tray-handle:focus,
.legacy-tray-icon:hover,
.legacy-tray-icon:focus {
background-color: rgba(255, 255, 255, 0.1); }
.legacy-tray-icon-box {
padding: 6px;
spacing: 12px; }
.legacy-tray-icon-box:ltr {
padding-left: 12px; }
.legacy-tray-icon-box:rtl {
padding-right: 12px; }
.legacy-tray-icon-box StButton {
width: 24px;
height: 24px; }
@@ -1454,10 +1409,12 @@ StScrollBar {
/* Auth Dialogs & Screen Shield */
.framed-user-icon {
background-size: contain;
border: 2px solid black;
border: 2px solid #eeeeec;
color: #eeeeec;
border-radius: 3px; }
.framed-user-icon:hover {
border-color: #4d4d4d; }
border-color: white;
color: white; }
.login-dialog-banner-view {
padding-top: 24px;
@@ -1554,9 +1511,10 @@ StScrollBar {
color: #ffffff; }
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
height: 2px;
background-color: transparent; }
margin: 2px 0 0 0;
background-color: #eeeeec; }
.login-dialog-user-list-item:focus .login-dialog-timed-login-indicator {
background-color: #2e3436; }
background-color: #ffffff; }
.login-dialog-username,
.user-widget-label {

View File

@@ -80,12 +80,13 @@ StEntry {
padding: 0 4px; }
/* Scrollbars */
StScrollView.vfade {
-st-vfade-offset: 68px; }
StScrollView.hfade {
-st-hfade-offset: 68px; }
StScrollBar {
padding: 0; }
StScrollBar.vfade {
-st-vfade-offset: 68px; }
StScrollBar.hfade {
-st-hfade-offset: 68px; }
StScrollView StScrollBar {
min-width: 14px;
min-height: 14px; }
@@ -323,7 +324,7 @@ StScrollBar {
.prompt-dialog-headline {
font-weight: bold;
color: #a6a69b; }
color: #b2b2a9; }
.prompt-dialog-description:rtl {
text-align: right; }
@@ -392,14 +393,11 @@ StScrollBar {
background-color: #343a3a;
box-shadow: inset 0 1px 0px #282c2c;
font-weight: bold; }
.popup-menu .popup-menu-item:focus {
background-color: #215d9c;
color: #ffffff; }
.popup-menu .popup-menu-item:hover {
.popup-menu .popup-menu-item:hover, .popup-menu .popup-menu-item:focus {
background-color: rgba(238, 238, 236, 0.1);
color: #eeeeec; }
.popup-menu .popup-menu-item:active {
background-color: #1c5187;
background-color: #215d9c;
color: #ffffff; }
.popup-menu .popup-menu-item:insensitive {
color: rgba(238, 238, 236, 0.5); }
@@ -794,12 +792,12 @@ StScrollBar {
padding: 13px;
border: 1px solid #282c2c; }
.system-menu-action:hover, .system-menu-action:focus {
color: #ffffff;
background-color: #215d9c;
background-color: rgba(238, 238, 236, 0.1);
color: #eeeeec;
border: none;
padding: 14px; }
.system-menu-action:active {
background-color: #1c5187;
background-color: #215d9c;
color: #ffffff; }
.system-menu-action > StIcon {
icon-size: 16px; }
@@ -820,7 +818,7 @@ StScrollBar {
.popup-menu-icon {
icon-size: 1.09em; }
.window-close, .notification-close {
.window-close {
background-image: url("resource:///org/gnome/shell/theme/close-window.svg");
background-size: 32px;
height: 32px;
@@ -831,12 +829,6 @@ StScrollBar {
.window-close:rtl {
-st-background-image-shadow: 2px 2px 6px rgba(0, 0, 0, 0.5); }
.notification-close {
-shell-close-overlap-x: 14px;
-shell-close-overlap-y: -12px; }
.notification-close:rtl {
-shell-close-overlap-x: -14px; }
/* NETWORK DIALOGS */
.nm-dialog {
max-height: 500px;
@@ -1157,7 +1149,7 @@ StScrollBar {
/* NOTIFICATIONS & MESSAGE TRAY */
.url-highlighter {
link-color: #215d9c; }
link-color: #2a76c6; }
.notification-banner {
font-size: 11pt;
@@ -1192,32 +1184,6 @@ StScrollBar {
.notification-banner .notification-button:hover, .notification-banner .notification-buttonfocus {
background-color: #292f30; }
.notification {
font-size: 11pt;
width: 34em;
margin: 5px;
border-radius: 6px;
color: #eeeeec;
background-color: #2e3436;
border: 1px solid #1c1f1f;
spacing-rows: 4px;
padding: 8px;
spacing-columns: 10px; }
.notification-unexpanded {
min-height: 48px;
height: 48px; }
.notification-with-image {
min-height: 159px; }
.notification-body {
spacing: 5px; }
.notification-actions {
paddinf-top: 18px;
spacing: 6px; }
.summary-source-counter {
font-size: 10pt;
font-weight: bold;
@@ -1231,36 +1197,20 @@ StScrollBar {
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.5);
border-radius: 0.9em; }
.notification-scrollview {
max-height: 18em;
-st-vfade-offset: 24px; }
.notification-scrollview:ltr > StScrollBar {
padding-left: 6px; }
.notification-scrollview:rtl > StScrollBar {
padding-right: 6px; }
.notification-button {
height: 24px; }
.notification-icon-button {
border-radius: 5px;
padding: 5px;
height: 24px;
width: 24px; }
.notification-icon-button > StIcon {
icons-size: 16px;
width: 16px;
height: 16px;
padding: 2px; }
.secondary-icon {
icon-size: 1.09em; }
.chat-body {
spacing: 5px; }
.chat-response {
margin: 5px; }
.chat-log-message {
color: #d6d6d1; }
.chat-empty-line {
font-size: 4px; }
.chat-new-group {
padding-top: 1em; }
.chat-received {
padding-left: 4px; }
@@ -1284,12 +1234,6 @@ StScrollBar {
padding-left: 0;
padding-right: 4px; }
.chat-notification-scrollview {
max-height: 22em; }
.subscription-message {
font-style: italic; }
.hotplug-transient-box {
spacing: 6px;
padding: 2px 72px 2px 12px; }
@@ -1340,12 +1284,23 @@ StScrollBar {
border-radius: 6px 0 0 0;
border-right-width: 0; }
.legacy-tray-handle StIcon {
icon-size: 24px; }
.legacy-tray-handle,
.legacy-tray-icon {
padding: 6px; }
.legacy-tray-handle StIcon,
.legacy-tray-icon StIcon {
icon-size: 24px; }
.legacy-tray-handle:hover, .legacy-tray-handle:focus,
.legacy-tray-icon:hover,
.legacy-tray-icon:focus {
background-color: rgba(238, 238, 236, 0.1); }
.legacy-tray-icon-box {
padding: 6px;
spacing: 12px; }
.legacy-tray-icon-box:ltr {
padding-left: 12px; }
.legacy-tray-icon-box:rtl {
padding-right: 12px; }
.legacy-tray-icon-box StButton {
width: 24px;
height: 24px; }
@@ -1454,10 +1409,12 @@ StScrollBar {
/* Auth Dialogs & Screen Shield */
.framed-user-icon {
background-size: contain;
border: 2px solid #1c1f1f;
border: 2px solid #eeeeec;
color: #eeeeec;
border-radius: 3px; }
.framed-user-icon:hover {
border-color: #656f6f; }
border-color: white;
color: white; }
.login-dialog-banner-view {
padding-top: 24px;
@@ -1554,9 +1511,10 @@ StScrollBar {
color: #ffffff; }
.login-dialog-user-list-item .login-dialog-timed-login-indicator {
height: 2px;
background-color: transparent; }
margin: 2px 0 0 0;
background-color: #eeeeec; }
.login-dialog-user-list-item:focus .login-dialog-timed-login-indicator {
background-color: #2e3436; }
background-color: #ffffff; }
.login-dialog-username,
.user-widget-label {

View File

@@ -22,6 +22,7 @@ const Clutter = imports.gi.Clutter;
const Gdm = imports.gi.Gdm;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const GObject = imports.gi.GObject;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
@@ -71,6 +72,9 @@ const UserListItem = new Lang.Class({
this._userWidget = new UserWidget.UserWidget(this.user);
layout.add(this._userWidget.actor);
this._userWidget.actor.bind_property('label-actor', this.actor, 'label-actor',
GObject.BindingFlags.SYNC_CREATE);
this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator',
scale_x: 0 });
layout.add(this._timedLoginIndicator);
@@ -319,13 +323,15 @@ const SessionMenuButton = new Lang.Class({
}
},
setActiveSession: function(sessionId) {
activeSessionChanged: function(sessionId) {
if (sessionId == this._activeSessionId)
return;
this._activeSessionId = sessionId;
this._updateOrnament();
},
setActiveSession: function(sessionId) {
this.emit('session-activated', this._activeSessionId);
},
@@ -350,9 +356,6 @@ const SessionMenuButton = new Lang.Class({
this._menu.addMenuItem(item);
this._items[id] = item;
if (!this._activeSessionId)
this.setActiveSession(id);
item.connect('activate', Lang.bind(this, function() {
this.setActiveSession(id);
}));
@@ -787,7 +790,7 @@ const LoginDialog = new Lang.Class({
},
_onDefaultSessionChanged: function(client, sessionId) {
this._sessionMenuButton.setActiveSession(sessionId);
this._sessionMenuButton.activeSessionChanged(sessionId);
},
_shouldShowSessionMenuButton: function() {

View File

@@ -410,7 +410,7 @@ const ShellUserVerifier = new Lang.Class({
_updateDefaultService: function() {
if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY))
this._defaultService = PASSWORD_SERVICE_NAME;
else if (this.smartcardDetected)
else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY))
this._defaultService = SMARTCARD_SERVICE_NAME;
else if (this._haveFingerprintReader)
this._defaultService = FINGERPRINT_SERVICE_NAME;

View File

@@ -44,6 +44,10 @@ function _sameDay(dateA, dateB) {
return _sameMonth(dateA, dateB) && (dateA.getDate() == dateB.getDate());
}
function _isToday(date) {
return _sameDay(new Date(), date);
}
function _isWorkDay(date) {
/* Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
let days = C_('calendar-no-work', "06");
@@ -68,21 +72,6 @@ function _getEndOfDay(date) {
return ret;
}
function _formatEventTime(event, periodBegin, periodEnd) {
let ret;
let allDay = (event.allDay || (event.date <= periodBegin && event.end >= periodEnd));
if (allDay) {
/* Translators: Shown in calendar event list for all day events
* Keep it short, best if you can use less then 10 characters
*/
ret = C_("event list time", "All Day");
} else {
let date = event.date >= periodBegin ? event.date : event.end;
ret = Util.formatTime(date, { timeOnly: true });
}
return ret;
}
function _getCalendarDayAbbreviation(dayNumber) {
let abbreviations = [
/* Translators: Calendar grid abbreviation for Sunday.
@@ -253,7 +242,8 @@ const URLHighlighter = new Lang.Class({
const CalendarEvent = new Lang.Class({
Name: 'CalendarEvent',
_init: function(date, end, summary, allDay) {
_init: function(id, date, end, summary, allDay) {
this.id = id;
this.date = date;
this.end = end;
this.summary = summary;
@@ -425,9 +415,10 @@ const DBusEventSource = new Lang.Class({
let a = appointments[n];
let date = new Date(a[4] * 1000);
let end = new Date(a[5] * 1000);
let id = a[0];
let summary = a[1];
let allDay = a[3];
let event = new CalendarEvent(date, end, summary, allDay);
let event = new CalendarEvent(id, date, end, summary, allDay);
newEvents.push(event);
}
newEvents.sort(function(event1, event2) {
@@ -1008,8 +999,7 @@ const Message = new Lang.Class({
this._closeButton = new St.Button({ child: closeIcon, visible: false });
titleBox.add_actor(this._closeButton);
this._bodyStack = new St.Widget({ x_expand: true,
x_align: Clutter.ActorAlign.START });
this._bodyStack = new St.Widget({ x_expand: true });
this._bodyStack.layout_manager = new LabelExpanderLayout();
contentBox.add_actor(this._bodyStack);
@@ -1018,16 +1008,17 @@ const Message = new Lang.Class({
this._bodyStack.add_actor(this.bodyLabel.actor);
this.setBody(body);
this._closeButton.connect('clicked', Lang.bind(this,
function() {
this.emit('close');
}));
this._closeButton.connect('clicked', Lang.bind(this, this.close));
this.actor.connect('notify::hover', Lang.bind(this, this._sync));
this.actor.connect('clicked', Lang.bind(this, this._onClicked));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._sync();
},
close: function() {
this.emit('close');
},
setIcon: function(actor) {
this._iconBin.child = actor;
this._iconBin.visible = (actor != null);
@@ -1044,7 +1035,10 @@ const Message = new Lang.Class({
setBody: function(text) {
this._bodyText = text;
this.bodyLabel.setMarkup(text, this._useBodyMarkup);
this.bodyLabel.setMarkup(text ? text.replace(/\n/g, ' ') : '',
this._useBodyMarkup);
if (this._expandedLabel)
this._expandedLabel.setMarkup(text, this._useBodyMarkup);
},
setUseBodyMarkup: function(enable) {
@@ -1092,9 +1086,9 @@ const Message = new Lang.Class({
this._actionBin.visible = (this._actionBin.get_n_children() > 0);
if (this._bodyStack.get_n_children() < 2) {
let expandedLabel = new URLHighlighter(this._bodyText,
true, this._useBodyMarkup);
this.setExpandedBody(expandedLabel.actor);
this._expandedLabel = new URLHighlighter(this._bodyText,
true, this._useBodyMarkup);
this.setExpandedBody(this._expandedLabel.actor);
}
if (animate) {
@@ -1135,13 +1129,13 @@ const Message = new Lang.Class({
}
},
canClear: function() {
canClose: function() {
return true;
},
_sync: function() {
let hovered = this.actor.hover;
this._closeButton.visible = hovered;
this._closeButton.visible = hovered && this.canClose();
this._secondaryBin.visible = !hovered;
},
@@ -1156,7 +1150,7 @@ const Message = new Lang.Class({
if (keysym == Clutter.KEY_Delete ||
keysym == Clutter.KEY_KP_Delete) {
this.emit('close');
this.close();
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
@@ -1164,6 +1158,55 @@ const Message = new Lang.Class({
});
Signals.addSignalMethods(Message.prototype);
const EventMessage = new Lang.Class({
Name: 'EventMessage',
Extends: Message,
_init: function(event, date) {
this._event = event;
this._date = date;
this.parent(this._formatEventTime(), event.summary);
},
_formatEventTime: function() {
let periodBegin = _getBeginningOfDay(this._date);
let periodEnd = _getEndOfDay(this._date);
let allDay = (this._event.allDay || (this._event.date <= periodBegin &&
this._event.end >= periodEnd));
let title;
if (allDay) {
/* Translators: Shown in calendar event list for all day events
* Keep it short, best if you can use less then 10 characters
*/
title = C_("event list time", "All Day");
} else {
let date = this._event.date >= periodBegin ? this._event.date
: this._event.end;
title = Util.formatTime(date, { timeOnly: true });
}
let rtl = Clutter.get_default_text_direction() == Clutter.TextDirection.RTL;
if (this._event.date < periodBegin && !this._event.allDay) {
if (rtl)
title = title + ELLIPSIS_CHAR;
else
title = ELLIPSIS_CHAR + title;
}
if (this._event.end > periodEnd && !this._event.allDay) {
if (rtl)
title = ELLIPSIS_CHAR + title;
else
title = title + ELLIPSIS_CHAR;
}
return title;
},
canClose: function() {
return _isToday(this._date);
}
});
const NotificationMessage = new Lang.Class({
Name: 'NotificationMessage',
Extends: Message,
@@ -1184,7 +1227,7 @@ const NotificationMessage = new Lang.Class({
notification.connect('destroy', Lang.bind(this,
function() {
if (!this._closed)
this.emit('close');
this.close();
}));
this._updatedId = notification.connect('updated',
Lang.bind(this, this._onUpdated));
@@ -1204,7 +1247,7 @@ const NotificationMessage = new Lang.Class({
this.setUseBodyMarkup(n.bannerBodyMarkup);
},
canClear: function() {
canClose: function() {
return !this.notification.resident;
},
@@ -1289,7 +1332,7 @@ const MessageListSection = new Lang.Class({
},
addMessage: function(message, animate) {
this.addMessageAtIndex(message, 0, animate);
this.addMessageAtIndex(message, -1, animate);
},
addMessageAtIndex: function(message, index, animate) {
@@ -1358,26 +1401,30 @@ const MessageListSection = new Lang.Class({
this._messages.delete(message);
if (animate)
if (animate) {
Tweener.addTween(obj.container, { scale_x: 0, scale_y: 0,
time: MESSAGE_ANIMATION_TIME,
transition: 'easeOutQuad',
onComplete: function() {
obj.container.destroy();
global.sync_pointer();
}});
else
} else {
obj.container.destroy();
global.sync_pointer();
}
},
clear: function() {
let messages = [...this._messages.keys()].filter(function(message) {
return message.canClear();
return message.canClose();
});
// If there are few messages, letting them all zoom out looks OK
if (messages.length < 2) {
messages.forEach(Lang.bind(this, function(message) {
this.removeMessage(message, true); }));
messages.forEach(function(message) {
message.close();
});
} else {
// Otherwise we slide them out one by one, and then zoom them
// out "off-screen" in the end to smoothly shrink the parent
@@ -1391,25 +1438,20 @@ const MessageListSection = new Lang.Class({
time: MESSAGE_ANIMATION_TIME,
delay: i * delay,
transition: 'easeOutQuad',
onComplete: Lang.bind(this, function() {
this.removeMessage(message, true);
})});
onComplete: function() {
message.close();
}});
}
}
},
_canClear: function() {
for (let message of this._messages.keys())
if (message.canClear())
if (message.canClose())
return true;
return false;
},
_isToday: function() {
let today = new Date();
return _sameDay(this._date, today);
},
_shouldShow: function() {
return !this.empty;
},
@@ -1437,6 +1479,15 @@ const EventsSection = new Lang.Class({
this._desktopSettings.connect('changed', Lang.bind(this, this._reloadEvents));
this._eventSource = new EmptyEventSource();
this._ignoredEvents = new Map();
let savedState = global.get_persistent_state('as', 'ignored_events');
if (savedState)
savedState.deep_unpack().forEach(Lang.bind(this,
function(eventId) {
this._ignoredEvents.set(eventId, true);
}));
this.parent('');
Shell.AppSystem.get_default().connect('installed-changed',
@@ -1444,6 +1495,12 @@ const EventsSection = new Lang.Class({
this._appInstalledChanged();
},
_ignoreEvent: function(event) {
this._ignoredEvents.set(event.id, true);
let savedState = new GLib.Variant('as', [...this._ignoredEvents.keys()]);
global.set_persistent_state('ignored_events', savedState);
},
setEventSource: function(eventSource) {
this._eventSource = eventSource;
this._eventSource.connect('changed', Lang.bind(this, this._reloadEvents));
@@ -1454,13 +1511,13 @@ const EventsSection = new Lang.Class({
},
_updateTitle: function() {
let now = new Date();
if (_sameDay(this._date, now)) {
if (_isToday(this._date)) {
this._title.label = _("Events");
return;
}
let dayFormat;
let now = new Date();
if (_sameYear(this._date, now))
/* Translators: Shown on calendar heading when selected day occurs on current year */
dayFormat = Shell.util_translate_time_string(NC_("calendar heading",
@@ -1486,22 +1543,15 @@ const EventsSection = new Lang.Class({
for (let i = 0; i < events.length; i++) {
let event = events[i];
let title = _formatEventTime(event, periodBegin, periodEnd);
let rtl = this.actor.get_text_direction() == Clutter.TextDirection.RTL;
if (event.date < periodBegin && !event.allDay) {
if (rtl)
title = title + ELLIPSIS_CHAR;
else
title = ELLIPSIS_CHAR + title;
}
if (event.end > periodEnd && !event.allDay) {
if (rtl)
title = ELLIPSIS_CHAR + title;
else
title = title + ELLIPSIS_CHAR;
}
this.addMessage(new Message(title, event.summary), false);
if (this._ignoredEvents.has(event.id))
continue;
let message = new EventMessage(event, this._date);
message.connect('close', Lang.bind(this, function() {
this._ignoreEvent(event);
}));
this.addMessage(message, false);
}
this._reloading = false;
@@ -1544,7 +1594,7 @@ const EventsSection = new Lang.Class({
},
_shouldShow: function() {
return !this.empty || !this._isToday();
return !this.empty || !_isToday(this._date);
},
_sync: function() {
@@ -1663,7 +1713,7 @@ const NotificationSection = new Lang.Class({
},
_shouldShow: function() {
return !this.empty && this._isToday();
return !this.empty && _isToday(this._date);
},
_sync: function() {
@@ -1703,7 +1753,7 @@ const Placeholder = new Lang.Class({
},
_sync: function() {
let isToday = _sameDay(this._date, new Date());
let isToday = _isToday(this._date);
if (isToday && this._icon.gicon == this._todayIcon)
return;
if (!isToday && this._icon.gicon == this._otherIcon)

View File

@@ -12,6 +12,8 @@ const Shell = imports.gi.Shell;
const St = imports.gi.St;
const Config = imports.misc.config;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const ModalDialog = imports.ui.modalDialog;
const PopupMenu = imports.ui.popupMenu;
const ShellEntry = imports.ui.shellEntry;
@@ -338,6 +340,7 @@ const NetworkSecretDialog = new Lang.Class({
content.message = _("PIN code is needed for the mobile broadband device");
content.secrets.push({ label: _("PIN: "), key: 'pin',
value: gsmSetting.pin || '', password: true });
break;
}
// fall through
case 'cdma':
@@ -610,6 +613,7 @@ const NetworkAgent = new Lang.Class({
this._dialogs = { };
this._vpnRequests = { };
this._notifications = { };
this._native.connect('new-request', Lang.bind(this, this._newRequest));
this._native.connect('cancel-request', Lang.bind(this, this._cancelRequest));
@@ -632,21 +636,92 @@ const NetworkAgent = new Lang.Class({
this._vpnRequests[requestId].cancel(true);
this._vpnRequests = { };
for (requestId in this._notifications)
this._notifications[requestId].destroy();
this._notifications = { };
this._enabled = false;
},
_showNotification: function(requestId, connection, settingName, hints, flags) {
let source = new MessageTray.Source(_("Network Manager"), 'network-transmit-receive');
source.policy = new MessageTray.NotificationApplicationPolicy('gnome-network-panel');
let title, body;
let connectionSetting = connection.get_setting_connection();
let connectionType = connectionSetting.get_connection_type();
switch (connectionType) {
case '802-11-wireless':
let wirelessSetting = connection.get_setting_wireless();
let ssid = NetworkManager.utils_ssid_to_utf8(wirelessSetting.get_ssid());
title = _("Authentication required by wireless network");
body = _("Passwords or encryption keys are required to access the wireless network “%s”.").format(ssid);
break;
case '802-3-ethernet':
title = _("Wired 802.1X authentication");
body = _("A password is required to connect to “%s”.".format(connection.get_id()));
break;
case 'pppoe':
title = _("DSL authentication");
body = _("A password is required to connect to “%s”.".format(connection.get_id()));
break;
case 'gsm':
if (hints.indexOf('pin') != -1) {
let gsmSetting = connection.get_setting_gsm();
title = _("PIN code required");
message = _("PIN code is needed for the mobile broadband device");
break;
}
// fall through
case 'cdma':
case 'bluetooth':
title = _("Mobile broadband network password");
message = _("A password is required to connect to “%s”.").format(connectionSetting.get_id());
break;
default:
log('Invalid connection type: ' + connectionType);
this._native.respond(requestId, Shell.NetworkAgentResponse.INTERNAL_ERROR);
return;
}
let notification = new MessageTray.Notification(source, title, body);
notification.connect('activated', Lang.bind(this, function() {
notification.answered = true;
this._handleRequest(requestId, connection, settingName, hints, flags);
}));
this._notifications[requestId] = notification;
notification.connect('destroy', Lang.bind(this, function() {
if (!notification.answered)
this._native.respond(requestId, Shell.NetworkAgentResponse.USER_CANCELED);
delete this._notifications[requestId];
}));
Main.messageTray.add(source);
source.notify(notification);
},
_newRequest: function(agent, requestId, connection, settingName, hints, flags) {
if (!this._enabled) {
agent.respond(requestId, Shell.NetworkAgentResponse.USER_CANCELED);
return;
}
if (!(flags & NMClient.SecretAgentGetSecretsFlags.USER_REQUESTED))
this._showNotification(requestId, connection, settingName, hints, flags);
else
this._handleRequest(requestId, connection, settingName, hints, flags);
},
_handleRequest: function(requestId, connection, settingName, hints, flags) {
if (settingName == 'vpn') {
this._vpnRequest(requestId, connection, hints, flags);
return;
}
let dialog = new NetworkSecretDialog(agent, requestId, connection, settingName, hints);
let dialog = new NetworkSecretDialog(this._native, requestId, connection, settingName, hints);
dialog.connect('destroy', Lang.bind(this, function() {
delete this._dialogs[requestId];
}));

View File

@@ -3,6 +3,7 @@
const Clutter = imports.gi.Clutter;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Gtk = imports.gi.Gtk;
const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
@@ -31,6 +32,8 @@ const SCROLLBACK_HISTORY_LINES = 10;
// See Notification._onEntryChanged
const COMPOSING_STOP_TIMEOUT = 5;
const CHAT_EXPAND_LINES = 12;
const NotificationDirection = {
SENT: 'chat-sent',
RECEIVED: 'chat-received'
@@ -273,13 +276,13 @@ const ChatSource = new Lang.Class({
this._notification = new ChatNotification(this);
this._notification.connect('activated', Lang.bind(this, this.open));
this._notification.setUrgency(MessageTray.Urgency.HIGH);
this._notification.connect('updated', Lang.bind(this,
function() {
if (this._banner && this._banner.expanded)
this._ackMessages();
}));
this._notifyTimeoutId = 0;
// We ack messages when the user expands the new notification or views the summary
// notification, in which case the notification is also expanded.
this._notification.connect('expanded', Lang.bind(this, this._ackMessages));
this._presence = contact.get_presence_type();
this._sentId = this._channel.connect('message-sent', Lang.bind(this, this._messageSent));
@@ -301,6 +304,20 @@ const ChatSource = new Lang.Class({
return new MessageTray.NotificationApplicationPolicy('empathy');
},
createBanner: function() {
this._banner = new ChatNotificationBanner(this._notification);
// We ack messages when the user expands the new notification
let id = this._banner.connect('expanded', Lang.bind(this, this._ackMessages));
this._banner.actor.connect('destroy', Lang.bind(this,
function() {
this._banner.disconnect(id);
this._banner = null;
}));
return this._banner;
},
_updateAlias: function() {
let oldAlias = this.title;
let newAlias = this._contact.get_alias();
@@ -352,10 +369,15 @@ const ChatSource = new Lang.Class({
_updateAvatarIcon: function() {
this.iconUpdated();
this._notification.update(this._notification.title, null, { customContent: true });
this._notification.update(this._notification.title,
this._notification.bannerBodyText,
{ gicon: this.getIcon() });
},
open: function() {
Main.overview.hide();
Main.panel.closeCalendar();
if (this._client.is_handling_channel(this._channel)) {
// We are handling the channel, try to pass it to Empathy or Polari
// (depending on the channel type)
@@ -543,14 +565,9 @@ const ChatSource = new Lang.Class({
},
_presenceChanged: function (contact, presence, status, message) {
let msg, title;
title = GLib.markup_escape_text(this.title, -1);
this._notification.update(this._notification.title, null, { customContent: true, secondaryGIcon: this.getSecondaryIcon() });
if (message)
msg += ' <i>(' + GLib.markup_escape_text(message, -1) + ')</i>';
this._notification.update(this._notification.title,
this._notification.bannerBodyText,
{ secondaryGIcon: this.getSecondaryIcon() });
},
_pendingRemoved: function(channel, message) {
@@ -574,42 +591,13 @@ const ChatNotification = new Lang.Class({
Extends: MessageTray.Notification,
_init: function(source) {
this.parent(source, source.title, null, { customContent: true, secondaryGIcon: source.getSecondaryIcon() });
this.parent(source, source.title, null,
{ secondaryGIcon: source.getSecondaryIcon() });
this.setUrgency(MessageTray.Urgency.HIGH);
this.setResident(true);
this._responseEntry = new St.Entry({ style_class: 'chat-response',
can_focus: true });
this._responseEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivated));
this._responseEntry.clutter_text.connect('text-changed', Lang.bind(this, this._onEntryChanged));
this.setActionArea(this._responseEntry);
this._responseEntry.clutter_text.connect('key-focus-in', Lang.bind(this, function() {
this.focused = true;
}));
this._responseEntry.clutter_text.connect('key-focus-out', Lang.bind(this, function() {
this.focused = false;
this.emit('unfocused');
}));
this._createScrollArea();
this._lastGroup = null;
// Keep track of the bottom position for the current adjustment and
// force a scroll to the bottom if things change while we were at the
// bottom
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
this._scrollArea.add_style_class_name('chat-notification-scrollview');
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
if (adjustment.value == this._oldMaxScrollValue)
this.scrollTo(St.Side.BOTTOM);
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
}));
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
this._history = [];
this.messages = [];
this._timestampTimeoutId = 0;
this._composingTimeoutId = 0;
},
/**
@@ -635,10 +623,8 @@ const ChatNotification = new Lang.Class({
styles.push('chat-action');
}
if (message.direction == NotificationDirection.RECEIVED) {
this.update(this.source.title, messageBody, { customContent: true,
bannerMarkup: true });
}
if (message.direction == NotificationDirection.RECEIVED)
this.update(this.source.title, messageBody, { bannerMarkup: true });
let group = (message.direction == NotificationDirection.RECEIVED ?
'received' : 'sent');
@@ -651,10 +637,10 @@ const ChatNotification = new Lang.Class({
},
_filterMessages: function() {
if (this._history.length < 1)
if (this.messages.length < 1)
return;
let lastMessageTime = this._history[0].time;
let lastMessageTime = this.messages[0].timestamp;
let currentTime = (Date.now() / 1000);
// Keep the scrollback from growing too long. If the most
@@ -666,12 +652,12 @@ const ChatNotification = new Lang.Class({
let maxLength = (lastMessageTime < currentTime - SCROLLBACK_RECENT_TIME) ?
SCROLLBACK_IDLE_LENGTH : SCROLLBACK_RECENT_LENGTH;
let filteredHistory = this._history.filter(function(item) { return item.realMessage });
let filteredHistory = this.messages.filter(function(item) { return item.realMessage });
if (filteredHistory.length > maxLength) {
let lastMessageToKeep = filteredHistory[maxLength];
let expired = this._history.splice(this._history.indexOf(lastMessageToKeep));
let expired = this.messages.splice(this.messages.indexOf(lastMessageToKeep));
for (let i = 0; i < expired.length; i++)
expired[i].actor.destroy();
this.emit('message-removed', expired[i]);
}
},
@@ -684,7 +670,6 @@ const ChatNotification = new Lang.Class({
* styles: Style class names for the message to have.
* timestamp: The timestamp of the message.
* noTimestamp: suppress timestamp signal?
* childProps: props to add the actor with.
*/
_append: function(props) {
let currentTime = (Date.now() / 1000);
@@ -692,44 +677,22 @@ const ChatNotification = new Lang.Class({
group: null,
styles: [],
timestamp: currentTime,
noTimestamp: false,
childProps: null });
noTimestamp: false });
// Reset the old message timeout
if (this._timestampTimeoutId)
Mainloop.source_remove(this._timestampTimeoutId);
let highlighter = new MessageTray.URLHighlighter(props.body,
true, // line wrap?
true); // allow markup?
let message = { realMessage: props.group != 'meta',
showTimestamp: false };
Lang.copyProperties(props, message);
delete message.noTimestamp;
let body = highlighter.actor;
let styles = props.styles;
for (let i = 0; i < styles.length; i++)
body.add_style_class_name(styles[i]);
let group = props.group;
if (group != this._lastGroup) {
this._lastGroup = group;
let emptyLine = new St.Label({ style_class: 'chat-empty-line' });
this.addActor(emptyLine);
this._history.unshift({ actor: emptyLine, time: timestamp,
realMessage: false });
}
let lineBox = new St.BoxLayout({ vertical: false });
lineBox.add(body, props.childProps);
this.addActor(lineBox);
this._lastMessageBox = lineBox;
this.updated();
let timestamp = props.timestamp;
this._history.unshift({ actor: lineBox, time: timestamp,
realMessage: group != 'meta' });
this.messages.unshift(message);
this.emit('message-added', message);
if (!props.noTimestamp) {
let timestamp = props.timestamp;
if (timestamp < currentTime - SCROLLBACK_IMMEDIATE_TIME) {
this.appendTimestamp();
} else {
@@ -748,15 +711,8 @@ const ChatNotification = new Lang.Class({
appendTimestamp: function() {
this._timestampTimeoutId = 0;
let lastMessageTime = this._history[0].time;
let lastMessageDate = new Date(lastMessageTime * 1000);
let timeLabel = Util.createTimeLabel(lastMessageDate);
timeLabel.style_class = 'chat-meta-message';
timeLabel.x_expand = timeLabel.y_expand = true;
timeLabel.x_align = timeLabel.y_align = Clutter.ActorAlign.END;
this._lastMessageBox.add_actor(timeLabel);
this.messages[0].showTimestamp = true;
this.emit('timestamp-changed', this.messages[0]);
this._filterMessages();
@@ -771,13 +727,150 @@ const ChatNotification = new Lang.Class({
IM name. */
let message = '<i>' + _("%s is now known as %s").format(oldAlias, newAlias) + '</i>';
let label = this._append({ body: message,
group: 'meta',
styles: ['chat-meta-message'] });
this.update(newAlias, null, { customContent: true });
this._append({ body: message,
group: 'meta',
styles: ['chat-meta-message'] });
this._filterMessages();
}
});
const ChatLineBox = new Lang.Class({
Name: 'ChatLineBox',
Extends: St.BoxLayout,
vfunc_get_preferred_height: function(forWidth) {
let [, natHeight] = this.parent(forWidth);
return [natHeight, natHeight];
}
});
const ChatNotificationBanner = new Lang.Class({
Name: 'ChatNotificationBanner',
Extends: MessageTray.NotificationBanner,
_init: function(notification) {
this.parent(notification);
this._responseEntry = new St.Entry({ style_class: 'chat-response',
x_expand: true,
can_focus: true });
this._responseEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivated));
this._responseEntry.clutter_text.connect('text-changed', Lang.bind(this, this._onEntryChanged));
this.setActionArea(this._responseEntry);
this._responseEntry.clutter_text.connect('key-focus-in', Lang.bind(this, function() {
this.focused = true;
}));
this._responseEntry.clutter_text.connect('key-focus-out', Lang.bind(this, function() {
this.focused = false;
this.emit('unfocused');
}));
this._scrollArea = new St.ScrollView({ style_class: 'chat-scrollview vfade',
vscrollbar_policy: Gtk.PolicyType.AUTOMATIC,
hscrollbar_policy: Gtk.PolicyType.NEVER,
visible: this.expanded });
this._contentArea = new St.BoxLayout({ style_class: 'chat-body',
vertical: true });
this._scrollArea.add_actor(this._contentArea);
this.setExpandedBody(this._scrollArea);
this.setExpandedLines(CHAT_EXPAND_LINES);
this._lastGroup = null;
// Keep track of the bottom position for the current adjustment and
// force a scroll to the bottom if things change while we were at the
// bottom
this._oldMaxScrollValue = this._scrollArea.vscroll.adjustment.value;
this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) {
if (adjustment.value == this._oldMaxScrollValue)
this.scrollTo(St.Side.BOTTOM);
this._oldMaxScrollValue = Math.max(adjustment.lower, adjustment.upper - adjustment.page_size);
}));
this._inputHistory = new History.HistoryManager({ entry: this._responseEntry.clutter_text });
this._composingTimeoutId = 0;
this._messageActors = new Map();
this._messageAddedId = this.notification.connect('message-added',
Lang.bind(this, function(n, message) {
this._addMessage(message);
}));
this._messageRemovedId = this.notification.connect('message-removed',
Lang.bind(this, function(n, message) {
let actor = this._messageActors.get(message);
if (this._messageActors.delete(message))
actor.destroy();
}));
this._timestampChangedId = this.notification.connect('timestamp-changed',
Lang.bind(this, function(n, message) {
this._updateTimestamp(message);
}));
for (let i = this.notification.messages.length - 1; i >= 0; i--)
this._addMessage(this.notification.messages[i]);
},
_onDestroy: function() {
this.parent();
this.notification.disconnect(this._messageAddedId);
this.notification.disconnect(this._messageRemovedId);
this.notification.disconnect(this._timestampChangedId);
},
scrollTo: function(side) {
let adjustment = this._scrollArea.vscroll.adjustment;
if (side == St.Side.TOP)
adjustment.value = adjustment.lower;
else if (side == St.Side.BOTTOM)
adjustment.value = adjustment.upper;
},
_addMessage: function(message) {
let highlighter = new Calendar.URLHighlighter(message.body, true, true);
let body = highlighter.actor;
let styles = message.styles;
for (let i = 0; i < styles.length; i++)
body.add_style_class_name(styles[i]);
let group = message.group;
if (group != this._lastGroup) {
this._lastGroup = group;
body.add_style_class_name('chat-new-group');
}
let lineBox = new ChatLineBox();
lineBox.add(body);
this._contentArea.add_actor(lineBox);
this._messageActors.set(message, lineBox);
this._updateTimestamp(message);
},
_updateTimestamp: function(message) {
let actor = this._messageActors.get(message);
if (!actor)
return;
while (actor.get_n_children() > 1)
actor.get_child_at_index(1).destroy();
if (message.showTimestamp) {
let lastMessageTime = message.timestamp;
let lastMessageDate = new Date(lastMessageTime * 1000);
let timeLabel = Util.createTimeLabel(lastMessageDate);
timeLabel.style_class = 'chat-meta-message';
timeLabel.x_expand = timeLabel.y_expand = true;
timeLabel.x_align = timeLabel.y_align = Clutter.ActorAlign.END;
actor.add_actor(timeLabel);
}
},
_onEntryActivated: function() {
@@ -790,13 +883,13 @@ const ChatNotification = new Lang.Class({
// Telepathy sends out the Sent signal for us.
// see Source._messageSent
this._responseEntry.set_text('');
this.source.respond(text);
this.notification.source.respond(text);
},
_composingStopTimeout: function() {
this._composingTimeoutId = 0;
this.source.setChatState(Tp.ChannelChatState.PAUSED);
this.notification.source.setChatState(Tp.ChannelChatState.PAUSED);
return GLib.SOURCE_REMOVE;
},
@@ -816,14 +909,14 @@ const ChatNotification = new Lang.Class({
}
if (text != '') {
this.source.setChatState(Tp.ChannelChatState.COMPOSING);
this.notification.source.setChatState(Tp.ChannelChatState.COMPOSING);
this._composingTimeoutId = Mainloop.timeout_add_seconds(
COMPOSING_STOP_TIMEOUT,
Lang.bind(this, this._composingStopTimeout));
GLib.Source.set_name_by_id(this._composingTimeoutId, '[gnome-shell] this._composingStopTimeout');
} else {
this.source.setChatState(Tp.ChannelChatState.ACTIVE);
this.notification.source.setChatState(Tp.ChannelChatState.ACTIVE);
}
}
});

View File

@@ -27,8 +27,8 @@ const CtrlAltTabManager = new Lang.Class({
_init: function() {
this._items = [];
this.addGroup(global.window_group, _("Windows"),
'emblem-documents-symbolic', { sortGroup: SortGroup.TOP,
focusCallback: Lang.bind(this, this._focusWindows) });
'focus-windows-symbolic', { sortGroup: SortGroup.TOP,
focusCallback: Lang.bind(this, this._focusWindows) });
},
addGroup: function(root, name, icon, params) {

View File

@@ -242,6 +242,8 @@ const ShowAppsIcon = new Lang.Class({
_init: function() {
this.parent();
this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell' });
this.toggleButton = new St.Button({ style_class: 'show-apps',
track_hover: true,
can_focus: true,

View File

@@ -211,7 +211,7 @@ const InstallExtensionDialog = new Lang.Class({
let icon = new St.Icon({ gicon: gicon });
box.add(icon);
let label = new St.Label({ style_class: 'prompt-dialog-headline',
let label = new St.Label({ style_class: 'prompt-dialog-headline headline',
text: message });
box.add(label);
},

View File

@@ -6,6 +6,7 @@ const Gdk = imports.gi.Gdk;
const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const Signals = imports.signals;
const St = imports.gi.St;
@@ -60,14 +61,7 @@ const CaribouDaemonIface = '<node> \
</interface> \
</node>';
const CursorManagerIface = '<node> \
<interface name="org.gnome.SettingsDaemon.Cursor"> \
<property name="ShowOSK" type="b" access="read" /> \
</interface> \
</node>';
const CaribouDaemonProxy = Gio.DBusProxy.makeProxyWrapper(CaribouDaemonIface);
const CursorManagerProxy = Gio.DBusProxy.makeProxyWrapper(CursorManagerIface);
const Key = new Lang.Class({
Name: 'Key',
@@ -188,17 +182,18 @@ const Keyboard = new Lang.Class({
Lang.bind(this, this._sync),
Lang.bind(this, this._sync));
this._daemonProxy = null;
this._cursorProxy = new CursorManagerProxy(Gio.DBus.session, CURSOR_BUS_NAME,
CURSOR_OBJECT_PATH,
Lang.bind(this, function(proxy, error) {
if (error) {
log(error.message);
return;
}
this._cursorProxy.connect('g-properties-changed',
Lang.bind(this, this._sync));
this._sync();
}));
this._lastDeviceId = null;
Meta.get_backend().connect('last-device-changed', Lang.bind(this,
function (backend, deviceId) {
let manager = Clutter.DeviceManager.get_default();
let device = manager.get_device(deviceId);
if (device.get_device_name().indexOf('XTEST') < 0) {
this._lastDeviceId = deviceId;
this._sync();
}
}));
this._sync();
this._showIdleId = 0;
@@ -217,9 +212,22 @@ const Keyboard = new Lang.Class({
this._redraw();
},
_lastDeviceIsTouchscreen: function () {
if (!this._lastDeviceId)
return false;
let manager = Clutter.DeviceManager.get_default();
let device = manager.get_device(this._lastDeviceId);
if (!device)
return false;
return device.get_device_type() == Clutter.InputDeviceType.TOUCHSCREEN_DEVICE;
},
_sync: function () {
this._enableKeyboard = this._a11yApplicationsSettings.get_boolean(SHOW_KEYBOARD) ||
this._cursorProxy.ShowOSK;
this._lastDeviceIsTouchscreen();
if (!this._enableKeyboard && !this._keyboard)
return;
if (this._enableKeyboard && this._keyboard &&

View File

@@ -1,8 +1,10 @@
const Clutter = imports.gi.Clutter;
const GObject = imports.gi.GObject;
const Meta = imports.gi.Meta;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
const CtrlAltTab = imports.ui.ctrlAltTab;
const Lang = imports.lang;
const Layout = imports.ui.layout;
const Main = imports.ui.main;
@@ -29,6 +31,9 @@ const STANDARD_TRAY_ICON_IMPLEMENTATIONS = {
const CONCEALED_VISIBLE_FRACTION = 0.2;
const REVEAL_ANIMATION_TIME = 0.2;
const BARRIER_THRESHOLD = 70;
const BARRIER_TIMEOUT = 1000;
const LegacyTray = new Lang.Class({
Name: 'LegacyTray',
@@ -49,11 +54,15 @@ const LegacyTray = new Lang.Class({
y_align: Clutter.ActorAlign.END,
layout_manager: this._slideLayout });
this.actor.add_actor(this._slider);
this._slider.connect('notify::allocation', Lang.bind(this, this._syncBarrier));
this._box = new St.BoxLayout();
this._slider.add_actor(this._box);
this._concealHandle = new St.Button({ style_class: 'legacy-tray-handle' });
this._concealHandle = new St.Button({ style_class: 'legacy-tray-handle',
/* translators: 'Hide' is a verb */
accessible_name: _("Hide tray"),
can_focus: true });
this._concealHandle.child = new St.Icon({ icon_name: 'go-previous-symbolic' });
this._box.add_child(this._concealHandle);
@@ -81,12 +90,23 @@ const LegacyTray = new Lang.Class({
this._revealHandle.show();
}));
this._horizontalBarrier = null;
this._pressureBarrier = new Layout.PressureBarrier(BARRIER_THRESHOLD,
BARRIER_TIMEOUT,
Shell.ActionMode.NORMAL);
this._pressureBarrier.connect('trigger', Lang.bind(this, function() {
this._concealHandle.show();
}));
Main.layoutManager.addChrome(this.actor, { affectsInputRegion: false });
Main.layoutManager.trackChrome(this._slider, { affectsInputRegion: true });
Main.ctrlAltTabManager.addGroup(this.actor,
_("Status Icons"), 'focus-legacy-systray-symbolic',
{ sortGroup: CtrlAltTab.SortGroup.BOTTOM });
this._trayManager = new Shell.TrayManager();
this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
this._trayIconAddedId = this._trayManager.connect('tray-icon-added', Lang.bind(this, this._onTrayIconAdded));
this._trayIconRemovedId = this._trayManager.connect('tray-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
this._trayManager.manage_screen(global.screen, this.actor);
Main.overview.connect('showing', Lang.bind(this,
@@ -121,14 +141,20 @@ const LegacyTray = new Lang.Class({
return;
let button = new St.Button({ child: icon,
style_class: 'legacy-tray-icon',
button_mask: St.ButtonMask.ONE |
St.ButtonMask.TWO |
St.ButtonMask.THREE,
can_focus: true,
x_fill: true, y_fill: true });
button.connect('clicked',
function() {
icon.click(Clutter.get_current_event());
});
button.connect('key-focus-in', Lang.bind(this,
function() {
this._concealHandle.show();
}));
this._iconBox.add_actor(button);
this._sync();
@@ -142,6 +168,40 @@ const LegacyTray = new Lang.Class({
this._sync();
},
_syncBarrier: function() {
let rtl = (this._slider.get_text_direction() == Clutter.TextDirection.RTL);
let [x, y] = this._slider.get_transformed_position();
let [w, h] = this._slider.get_transformed_size();
let x1 = Math.round(x);
if (rtl)
x1 += Math.round(w);
let x2 = x1;
let y1 = Math.round(y);
let y2 = y1 + Math.round(h);
if (this._horizontalBarrier &&
this._horizontalBarrier.x1 == x1 &&
this._horizontalBarrier.y1 == y1 &&
this._horizontalBarrier.x2 == x2 &&
this._horizontalBarrier.y2 == y2)
return;
if (this._horizontalBarrier) {
this._pressureBarrier.removeBarrier(this._horizontalBarrier);
this._horizontalBarrier.destroy();
this._horizontalBarrier = null;
}
let directions = (rtl ? Meta.BarrierDirection.NEGATIVE_X : Meta.BarrierDirection.POSITIVE_X);
this._horizontalBarrier = new Meta.Barrier({ display: global.display,
x1: x1, x2: x2,
y1: y1, y2: y2,
directions: directions });
this._pressureBarrier.addBarrier(this._horizontalBarrier);
},
_sync: function() {
// FIXME: we no longer treat tray icons as notifications
let allowed = Main.sessionMode.hasNotifications;

View File

@@ -529,6 +529,7 @@ function activateWindow(window, time, workspaceNum) {
}
overview.hide();
panel.closeCalendar();
}
// TODO - replace this timeout with some system to guess when the user might

View File

@@ -147,130 +147,6 @@ const FocusGrabber = new Lang.Class({
}
});
const URLHighlighter = new Lang.Class({
Name: 'URLHighlighter',
_init: function(text, lineWrap, allowMarkup) {
if (!text)
text = '';
this.actor = new St.Label({ reactive: true, style_class: 'url-highlighter' });
this._linkColor = '#ccccff';
this.actor.connect('style-changed', Lang.bind(this, function() {
let [hasColor, color] = this.actor.get_theme_node().lookup_color('link-color', false);
if (hasColor) {
let linkColor = color.to_string().substr(0, 7);
if (linkColor != this._linkColor) {
this._linkColor = linkColor;
this._highlightUrls();
}
}
}));
if (lineWrap) {
this.actor.clutter_text.line_wrap = true;
this.actor.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
this.actor.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
}
this.setMarkup(text, allowMarkup);
this.actor.connect('button-press-event', Lang.bind(this, function(actor, event) {
// Don't try to URL highlight when invisible.
// The MessageTray doesn't actually hide us, so
// we need to check for paint opacities as well.
if (!actor.visible || actor.get_paint_opacity() == 0)
return Clutter.EVENT_PROPAGATE;
// Keep Notification.actor from seeing this and taking
// a pointer grab, which would block our button-release-event
// handler, if an URL is clicked
return this._findUrlAtPos(event) != -1;
}));
this.actor.connect('button-release-event', Lang.bind(this, function (actor, event) {
if (!actor.visible || actor.get_paint_opacity() == 0)
return Clutter.EVENT_PROPAGATE;
let urlId = this._findUrlAtPos(event);
if (urlId != -1) {
let url = this._urls[urlId].url;
if (url.indexOf(':') == -1)
url = 'http://' + url;
Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context(0, -1));
return Clutter.EVENT_STOP;
}
return Clutter.EVENT_PROPAGATE;
}));
this.actor.connect('motion-event', Lang.bind(this, function(actor, event) {
if (!actor.visible || actor.get_paint_opacity() == 0)
return Clutter.EVENT_PROPAGATE;
let urlId = this._findUrlAtPos(event);
if (urlId != -1 && !this._cursorChanged) {
global.screen.set_cursor(Meta.Cursor.POINTING_HAND);
this._cursorChanged = true;
} else if (urlId == -1) {
global.screen.set_cursor(Meta.Cursor.DEFAULT);
this._cursorChanged = false;
}
return Clutter.EVENT_PROPAGATE;
}));
this.actor.connect('leave-event', Lang.bind(this, function() {
if (!this.actor.visible || this.actor.get_paint_opacity() == 0)
return Clutter.EVENT_PROPAGATE;
if (this._cursorChanged) {
this._cursorChanged = false;
global.screen.set_cursor(Meta.Cursor.DEFAULT);
}
return Clutter.EVENT_PROPAGATE;
}));
},
setMarkup: function(text, allowMarkup) {
text = text ? _fixMarkup(text, allowMarkup) : '';
this._text = text;
this.actor.clutter_text.set_markup(text);
/* clutter_text.text contain text without markup */
this._urls = Util.findUrls(this.actor.clutter_text.text);
this._highlightUrls();
},
_highlightUrls: function() {
// text here contain markup
let urls = Util.findUrls(this._text);
let markup = '';
let pos = 0;
for (let i = 0; i < urls.length; i++) {
let url = urls[i];
let str = this._text.substr(pos, url.pos - pos);
markup += str + '<span foreground="' + this._linkColor + '"><u>' + url.url + '</u></span>';
pos = url.pos + url.url.length;
}
markup += this._text.substr(pos);
this.actor.clutter_text.set_markup(markup);
},
_findUrlAtPos: function(event) {
let success;
let [x, y] = event.get_coords();
[success, x, y] = this.actor.transform_stage_point(x, y);
let find_pos = -1;
for (let i = 0; i < this.actor.clutter_text.text.length; i++) {
let [success, px, py, line_height] = this.actor.clutter_text.position_to_coords(i);
if (py > y || py + line_height < y || x < px)
continue;
find_pos = i;
}
if (find_pos != -1) {
for (let i = 0; i < this._urls.length; i++)
if (find_pos >= this._urls[i].pos &&
this._urls[i].pos + this._urls[i].url.length > find_pos)
return i;
}
return -1;
}
});
// NotificationPolicy:
// An object that holds all bits of configurable policy related to a notification
// source, such as whether to play sound or honour the critical bit.
@@ -473,10 +349,6 @@ const NotificationApplicationPolicy = new Lang.Class({
const Notification = new Lang.Class({
Name: 'Notification',
ICON_SIZE: 24,
IMAGE_SIZE: 125,
_init: function(source, title, banner, params) {
this.source = source;
this.title = title;
@@ -485,63 +357,14 @@ const Notification = new Lang.Class({
// 'transient' is a reserved keyword in JS, so we have to use an alternate variable name
this.isTransient = false;
this.forFeedback = false;
this.expanded = false;
this.focused = false;
this._acknowledged = false;
this._destroyed = false;
this._customContent = false;
this.bannerBodyText = null;
this.bannerBodyMarkup = false;
this._bannerBodyAdded = false;
this._titleFitsInBannerMode = true;
this._spacing = 0;
this._scrollPolicy = Gtk.PolicyType.AUTOMATIC;
this._soundName = null;
this._soundFile = null;
this._soundPlayed = false;
this.actions = [];
this.actor = new St.Button({ accessible_role: Atk.Role.NOTIFICATION });
this.actor.add_style_class_name('notification-unexpanded');
this.actor._delegate = this;
this.actor.connect('clicked', Lang.bind(this, this.activate));
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._table = new St.Table({ style_class: 'notification',
reactive: true });
this._table.connect('style-changed', Lang.bind(this, this._styleChanged));
this.actor.set_child(this._table);
// The first line should have the title, followed by the
// banner text, but ellipsized if they won't both fit. We can't
// make St.Table or St.BoxLayout do this the way we want (don't
// show banner at all if title needs to be ellipsized), so we
// use Shell.GenericContainer.
this._bannerBox = new Shell.GenericContainer();
this._bannerBox.connect('get-preferred-width', Lang.bind(this, this._bannerBoxGetPreferredWidth));
this._bannerBox.connect('get-preferred-height', Lang.bind(this, this._bannerBoxGetPreferredHeight));
this._bannerBox.connect('allocate', Lang.bind(this, this._bannerBoxAllocate));
this._table.add(this._bannerBox, { row: 0,
col: 1,
col_span: 2,
x_expand: false,
y_expand: false,
y_fill: false });
// This is an empty cell that overlaps with this._bannerBox cell to ensure
// that this._bannerBox cell expands horizontally, while not forcing the
// this._imageBin that is also in col: 2 to expand horizontally.
this._table.add(new St.Bin(), { row: 0,
col: 2,
y_expand: false,
y_fill: false });
this._titleLabel = new St.Label();
this._bannerBox.add_actor(this._titleLabel);
this._bannerUrlHighlighter = new URLHighlighter();
this._bannerLabel = this._bannerUrlHighlighter.actor;
this._bannerBox.add_actor(this._bannerLabel);
// If called with only one argument we assume the caller
// will call .update() later on. This is the case of
// NotificationDaemon, which wants to use the same code
@@ -559,107 +382,25 @@ const Notification = new Lang.Class({
// the title/banner. If @params.clear is %true, it will also
// remove any additional actors/action buttons previously added.
update: function(title, banner, params) {
params = Params.parse(params, { customContent: false,
gicon: null,
params = Params.parse(params, { gicon: null,
secondaryGIcon: null,
bannerMarkup: false,
clear: false,
soundName: null,
soundFile: null });
this._customContent = params.customContent;
let oldFocus = global.stage.key_focus;
if (this._icon && (params.gicon || params.clear)) {
this._icon.destroy();
this._icon = null;
}
if (this._secondaryIcon && (params.secondaryGIcon || params.clear)) {
this._secondaryIcon.destroy();
this._secondaryIcon = null;
}
// We always clear the content area if we don't have custom
// content because it might contain the @banner that didn't
// fit in the banner mode.
if (this._scrollArea && (!this._customContent || params.clear)) {
if (oldFocus && this._scrollArea.contains(oldFocus))
this.actor.grab_key_focus();
this._scrollArea.destroy();
this._scrollArea = null;
this._contentArea = null;
}
if (this._actionArea && params.clear) {
if (oldFocus && this._actionArea.contains(oldFocus))
this.actor.grab_key_focus();
this._actionArea.destroy();
this._actionArea = null;
this._buttonBox = null;
this.actions = [];
}
if (!this._scrollArea && !this._actionArea)
this._table.remove_style_class_name('multi-line-notification');
if (params.gicon) {
this._icon = new St.Icon({ gicon: params.gicon,
icon_size: this.ICON_SIZE });
} else {
this._icon = this.source.createIcon(this.ICON_SIZE);
}
if (this._icon) {
this._table.add(this._icon, { row: 0,
col: 0,
x_expand: false,
y_expand: false,
y_fill: false,
y_align: St.Align.START });
}
if (params.secondaryGIcon) {
this._secondaryIcon = new St.Icon({ gicon: params.secondaryGIcon,
style_class: 'secondary-icon' });
this._bannerBox.add_actor(this._secondaryIcon);
}
this.title = title;
title = title ? _fixMarkup(title.replace(/\n/g, ' '), false) : '';
this._titleLabel.clutter_text.set_markup('<b>' + title + '</b>');
let titleDirection;
if (Pango.find_base_dir(title, -1) == Pango.Direction.RTL)
titleDirection = Clutter.TextDirection.RTL;
else
titleDirection = Clutter.TextDirection.LTR;
// Let the title's text direction control the overall direction
// of the notification - in case where different scripts are used
// in the notification, this is the right thing for the icon, and
// arguably for action buttons as well. Labels other than the title
// will be allocated at the available width, so that their alignment
// is done correctly automatically.
this._table.set_text_direction(titleDirection);
// Unless the notification has custom content, we save this.bannerBodyText
// to add it to the content of the notification if the notification is
// expandable due to other elements in its content area or due to the banner
// not fitting fully in the single-line mode.
this.bannerBodyText = this._customContent ? null : banner;
this.bannerBodyText = banner;
this.bannerBodyMarkup = params.bannerMarkup;
this._bannerBodyAdded = false;
banner = banner ? banner.replace(/\n/g, ' ') : '';
if (params.gicon || params.clear)
this.gicon = params.gicon;
this._bannerUrlHighlighter.setMarkup(banner, params.bannerMarkup);
this._bannerLabel.queue_relayout();
if (params.secondaryGIcon || params.clear)
this.secondaryGIcon = params.secondaryGIcon;
// Add the bannerBody now if we know for sure we'll need it
if (this.bannerBodyText && this.bannerBodyText.indexOf('\n') > -1)
this._addBannerBody();
if (params.clear)
this.actions = [];
if (this._soundName != params.soundName ||
this._soundFile != params.soundFile) {
@@ -668,168 +409,14 @@ const Notification = new Lang.Class({
this._soundPlayed = false;
}
this.updated();
this.emit('updated', params.clear);
},
setIconVisible: function(visible) {
this._icon.visible = visible;
},
enableScrolling: function(enableScrolling) {
this._scrollPolicy = enableScrolling ? Gtk.PolicyType.AUTOMATIC : Gtk.PolicyType.NEVER;
if (this._scrollArea) {
this._scrollArea.vscrollbar_policy = this._scrollPolicy;
this._scrollArea.enable_mouse_scrolling = enableScrolling;
}
},
_createScrollArea: function() {
this._table.add_style_class_name('multi-line-notification');
this._scrollArea = new St.ScrollView({ style_class: 'notification-scrollview',
vscrollbar_policy: this._scrollPolicy,
hscrollbar_policy: Gtk.PolicyType.NEVER,
visible: this.expanded });
this._table.add(this._scrollArea, { row: 1,
col: 2 });
this._updateLastColumnSettings();
this._contentArea = new St.BoxLayout({ style_class: 'notification-body',
vertical: true });
this._scrollArea.add_actor(this._contentArea);
// If we know the notification will be expandable, we need to add
// the banner text to the body as the first element.
this._addBannerBody();
},
// addActor:
// @actor: actor to add to the body of the notification
//
// Appends @actor to the notification's body
addActor: function(actor, style) {
if (!this._scrollArea) {
this._createScrollArea();
}
this._contentArea.add(actor, style ? style : {});
this.updated();
},
// addBody:
// @text: the text
// @markup: %true if @text contains pango markup
// @style: style to use when adding the actor containing the text
//
// Adds a multi-line label containing @text to the notification.
//
// Return value: the newly-added label
addBody: function(text, markup, style) {
let label = new URLHighlighter(text, true, markup);
this.addActor(label.actor, style);
return label.actor;
},
_addBannerBody: function() {
if (this.bannerBodyText && !this._bannerBodyAdded) {
this._bannerBodyAdded = true;
this.addBody(this.bannerBodyText, this.bannerBodyMarkup);
}
},
// scrollTo:
// @side: St.Side.TOP or St.Side.BOTTOM
//
// Scrolls the content area (if scrollable) to the indicated edge
scrollTo: function(side) {
let adjustment = this._scrollArea.vscroll.adjustment;
if (side == St.Side.TOP)
adjustment.value = adjustment.lower;
else if (side == St.Side.BOTTOM)
adjustment.value = adjustment.upper;
},
// setActionArea:
// @actor: the actor
// @props: (option) St.Table child properties
//
// Puts @actor into the action area of the notification, replacing
// the previous contents
setActionArea: function(actor, props) {
if (this._actionArea) {
this._actionArea.destroy();
this._actionArea = null;
if (this._buttonBox)
this._buttonBox = null;
} else {
this._addBannerBody();
}
this._actionArea = actor;
this._actionArea.visible = this.expanded;
if (!props)
props = {};
props.row = 2;
props.col = 2;
this._table.add_style_class_name('multi-line-notification');
this._table.add(this._actionArea, props);
this._updateLastColumnSettings();
this.updated();
},
_updateLastColumnSettings: function() {
if (this._scrollArea)
this._table.child_set(this._scrollArea, { col: 1,
col_span: 2 });
if (this._actionArea)
this._table.child_set(this._actionArea, { col: 1,
col_span: 2 });
},
addButton: function(button, callback) {
if (!this._buttonBox) {
let box = new St.BoxLayout({ style_class: 'notification-actions' });
this.setActionArea(box, { x_expand: false,
y_expand: false,
x_fill: false,
y_fill: false,
x_align: St.Align.END });
this._buttonBox = box;
global.focus_manager.add_group(this._buttonBox);
}
this._buttonBox.add(button);
button.connect('clicked', Lang.bind(this, function() {
callback();
if (!this.resident) {
// We don't hide a resident notification when the user invokes one of its actions,
// because it is common for such notifications to update themselves with new
// information based on the action. We'd like to display the updated information
// in place, rather than pop-up a new notification.
this.emit('done-displaying');
this.destroy();
}
}));
this.updated();
return button;
},
// addAction:
// @label: the label for the action's button
// @callback: the callback for the action
//
// Adds a button with the given @label to the notification. All
// action buttons will appear in a single row at the bottom of
// the notification.
addAction: function(label, callback) {
this.actions.push({ label: label, callback: callback });
let button = new St.Button({ style_class: 'notification-button',
label: label,
can_focus: true });
return this.addButton(button, callback);
},
get acknowledged() {
@@ -859,132 +446,6 @@ const Notification = new Lang.Class({
this.forFeedback = forFeedback;
},
_styleChanged: function() {
this._spacing = this._table.get_theme_node().get_length('spacing-columns');
},
_bannerBoxGetPreferredWidth: function(actor, forHeight, alloc) {
let [titleMin, titleNat] = this._titleLabel.get_preferred_width(forHeight);
let [bannerMin, bannerNat] = this._bannerLabel.get_preferred_width(forHeight);
if (this._secondaryIcon) {
let [secondaryIconMin, secondaryIconNat] = this._secondaryIcon.get_preferred_width(forHeight);
alloc.min_size = secondaryIconMin + this._spacing + titleMin;
alloc.natural_size = secondaryIconNat + this._spacing + titleNat + this._spacing + bannerNat;
} else {
alloc.min_size = titleMin;
alloc.natural_size = titleNat + this._spacing + bannerNat;
}
},
_bannerBoxGetPreferredHeight: function(actor, forWidth, alloc) {
[alloc.min_size, alloc.natural_size] =
this._titleLabel.get_preferred_height(forWidth);
},
_bannerBoxAllocate: function(actor, box, flags) {
let availWidth = box.x2 - box.x1;
let [titleMinW, titleNatW] = this._titleLabel.get_preferred_width(-1);
let [titleMinH, titleNatH] = this._titleLabel.get_preferred_height(availWidth);
let [bannerMinW, bannerNatW] = this._bannerLabel.get_preferred_width(availWidth);
let rtl = (this._table.text_direction == Clutter.TextDirection.RTL);
let x = rtl ? availWidth : 0;
if (this._secondaryIcon) {
let [iconMinW, iconNatW] = this._secondaryIcon.get_preferred_width(-1);
let [iconMinH, iconNatH] = this._secondaryIcon.get_preferred_height(availWidth);
let secondaryIconBox = new Clutter.ActorBox();
let secondaryIconBoxW = Math.min(iconNatW, availWidth);
// allocate secondary icon box
if (rtl) {
secondaryIconBox.x1 = x - secondaryIconBoxW;
secondaryIconBox.x2 = x;
x = x - (secondaryIconBoxW + this._spacing);
} else {
secondaryIconBox.x1 = x;
secondaryIconBox.x2 = x + secondaryIconBoxW;
x = x + secondaryIconBoxW + this._spacing;
}
secondaryIconBox.y1 = 0;
// Using titleNatH ensures that the secondary icon is centered vertically
secondaryIconBox.y2 = titleNatH;
availWidth = availWidth - (secondaryIconBoxW + this._spacing);
this._secondaryIcon.allocate(secondaryIconBox, flags);
}
let titleBox = new Clutter.ActorBox();
let titleBoxW = Math.min(titleNatW, availWidth);
if (rtl) {
titleBox.x1 = availWidth - titleBoxW;
titleBox.x2 = availWidth;
} else {
titleBox.x1 = x;
titleBox.x2 = titleBox.x1 + titleBoxW;
}
titleBox.y1 = 0;
titleBox.y2 = titleNatH;
this._titleLabel.allocate(titleBox, flags);
this._titleFitsInBannerMode = (titleNatW <= availWidth);
let bannerFits = true;
if (titleBoxW + this._spacing > availWidth) {
this._bannerLabel.opacity = 0;
bannerFits = false;
} else {
let bannerBox = new Clutter.ActorBox();
if (rtl) {
bannerBox.x1 = 0;
bannerBox.x2 = titleBox.x1 - this._spacing;
bannerFits = (bannerBox.x2 - bannerNatW >= 0);
} else {
bannerBox.x1 = titleBox.x2 + this._spacing;
bannerBox.x2 = availWidth;
bannerFits = (bannerBox.x1 + bannerNatW <= availWidth);
}
bannerBox.y1 = 0;
bannerBox.y2 = titleNatH;
this._bannerLabel.allocate(bannerBox, flags);
// Make _bannerLabel visible if the entire notification
// fits on one line, or if the notification is currently
// unexpanded and only showing one line anyway.
if (!this.expanded || (bannerFits && this._table.row_count == 1))
this._bannerLabel.opacity = 255;
}
// If the banner doesn't fully fit in the banner box, we possibly need to add the
// banner to the body. We can't do that from here though since that will force a
// relayout, so we add it to the main loop.
if (!bannerFits && this._canExpandContent())
Meta.later_add(Meta.LaterType.BEFORE_REDRAW,
Lang.bind(this,
function() {
if (this._destroyed)
return false;
if (this._canExpandContent()) {
this._addBannerBody();
this._table.add_style_class_name('multi-line-notification');
this.updated();
}
return false;
}));
},
_canExpandContent: function() {
return (this.bannerBodyText && !this._bannerBodyAdded) ||
(!this._titleFitsInBannerMode && !this._table.has_style_class_name('multi-line-notification'));
},
playSound: function() {
if (this._soundPlayed)
return;
@@ -1017,71 +478,6 @@ const Notification = new Lang.Class({
}
},
updated: function() {
if (this.expanded)
this.expand(false);
},
expand: function(animate) {
this.expanded = true;
this.actor.remove_style_class_name('notification-unexpanded');
// Show additional content that we keep hidden in banner mode
if (this._actionArea)
this._actionArea.show();
if (this._scrollArea)
this._scrollArea.show();
// The banner is never shown when the title did not fit, so this
// can be an if-else statement.
if (!this._titleFitsInBannerMode) {
// Remove ellipsization from the title label and make it wrap so that
// we show the full title when the notification is expanded.
this._titleLabel.clutter_text.line_wrap = true;
this._titleLabel.clutter_text.line_wrap_mode = Pango.WrapMode.WORD_CHAR;
this._titleLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE;
} else if (this._table.row_count > 1 && this._bannerLabel.opacity != 0) {
// We always hide the banner if the notification has additional content.
//
// We don't need to wrap the banner that doesn't fit the way we wrap the
// title that doesn't fit because we won't have a notification with
// row_count=1 that has a banner that doesn't fully fit. We'll either add
// that banner to the content of the notification in _bannerBoxAllocate()
// or the notification will have custom content.
if (animate)
Tweener.addTween(this._bannerLabel,
{ opacity: 0,
time: ANIMATION_TIME,
transition: 'easeOutQuad' });
else
this._bannerLabel.opacity = 0;
}
this.emit('expanded');
},
collapseCompleted: function() {
if (this._destroyed)
return;
this.expanded = false;
// Hide additional content that we keep hidden in banner mode
if (this._actionArea)
this._actionArea.hide();
if (this._scrollArea)
this._scrollArea.hide();
// Make sure we don't line wrap the title, and ellipsize it instead.
this._titleLabel.clutter_text.line_wrap = false;
this._titleLabel.clutter_text.ellipsize = Pango.EllipsizeMode.END;
// Restore banner opacity in case the notification is shown in the
// banner mode again on update.
this._bannerLabel.opacity = 255;
// Restore height requisition
this.actor.add_style_class_name('notification-unexpanded');
},
// Allow customizing the banner UI:
// the default implementation defers the creation to
// the source (which will create a NotificationBanner),
@@ -1093,27 +489,14 @@ const Notification = new Lang.Class({
activate: function() {
this.emit('activated');
// We hide all types of notifications once the user clicks on them because the common
// outcome of clicking should be the relevant window being brought forward and the user's
// attention switching to the window.
this.emit('done-displaying');
if (!this.resident)
this.destroy();
},
_onDestroy: function() {
if (this._destroyed)
return;
this._destroyed = true;
if (!this._destroyedReason)
this._destroyedReason = NotificationDestroyedReason.DISMISSED;
this.emit('destroy', this._destroyedReason);
},
destroy: function(reason) {
this._destroyedReason = reason;
this.actor.destroy();
this.actor._delegate = null;
if (!reason)
reason = NotificationDestroyedReason.DISMISSED;
this.emit('destroy', reason);
}
});
Signals.addSignalMethods(Notification.prototype);
@@ -1126,7 +509,6 @@ const NotificationBanner = new Lang.Class({
this.parent(notification);
this.actor.add_style_class_name('notification-banner');
this.actor.connect('destroy', Lang.bind(this, this._onDestroyed));
this._buttonBox = null;
@@ -1143,7 +525,8 @@ const NotificationBanner = new Lang.Class({
}));
},
_onDestroyed: function() {
_onDestroy: function() {
this.parent();
this.notification.disconnect(this._activatedId);
},
@@ -1937,11 +1320,7 @@ const MessageTray = new Lang.Class({
this.idleMonitor.add_user_active_watch(Lang.bind(this, this._onIdleMonitorBecameActive));
}
// HACK: didn't manage to get chat into a proper state in time
if (this._notification.source.isChat)
this._banner = this._notification;
else
this._banner = this._notification.createBanner();
this._banner = this._notification.createBanner();
this._bannerClickedId = this._banner.connect('done-displaying',
Lang.bind(this, this._escapeTray));
this._bannerUnfocusedId = this._banner.connect('unfocused', Lang.bind(this, function() {
@@ -2093,10 +1472,7 @@ const MessageTray = new Lang.Class({
this._pointerInNotification = false;
this._notificationRemoved = false;
if (notification.resident)
this._bannerBin.remove_actor(this._banner.actor);
else
this._banner.actor.destroy();
this._banner.actor.destroy();
this._banner = null;
this.actor.hide();
},

View File

@@ -752,7 +752,7 @@ const Panel = new Lang.Class({
}));
Main.layoutManager.panelBox.add(this.actor);
Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'emblem-system-symbolic',
Main.ctrlAltTabManager.addGroup(this.actor, _("Top Bar"), 'focus-top-bar-symbolic',
{ sortGroup: CtrlAltTab.SortGroup.TOP });
Main.sessionMode.connect('updated', Lang.bind(this, this._updatePanel));

View File

@@ -12,7 +12,6 @@ const BoxPointer = imports.ui.boxpointer;
const GrabHelper = imports.ui.grabHelper;
const Main = imports.ui.main;
const Params = imports.misc.params;
const Separator = imports.ui.separator;
const Tweener = imports.ui.tweener;
const Ornament = {
@@ -264,7 +263,9 @@ const PopupSeparatorMenuItem = new Lang.Class({
Lang.bind(this, this._syncVisibility));
this._syncVisibility();
this._separator = new St.Widget({ style_class: 'popup-separator-menu-item' });
this._separator = new St.Widget({ style_class: 'popup-separator-menu-item',
y_expand: true,
y_align: Clutter.ActorAlign.CENTER });
this.actor.add(this._separator, { expand: true });
},

View File

@@ -236,8 +236,10 @@ const RemoteSearchProvider = new Lang.Class({
_getResultsFinished: function(results, error, callback) {
if (error) {
if (!error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
log('Received error from DBus search provider %s: %s'.format(this.id, String(error)));
if (error.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED))
return;
log('Received error from DBus search provider %s: %s'.format(this.id, String(error)));
callback([]);
return;
}

View File

@@ -283,8 +283,8 @@ const SelectArea = new Lang.Class({
_getGeometry: function() {
return { x: Math.min(this._startX, this._lastX),
y: Math.min(this._startY, this._lastY),
width: Math.abs(this._startX - this._lastX),
height: Math.abs(this._startY - this._lastY) };
width: Math.abs(this._startX - this._lastX) + 1,
height: Math.abs(this._startY - this._lastY) + 1 };
},
_onMotionEvent: function(actor, event) {
@@ -292,6 +292,8 @@ const SelectArea = new Lang.Class({
return Clutter.EVENT_PROPAGATE;
[this._lastX, this._lastY] = event.get_coords();
this._lastX = Math.floor(this._lastX);
this._lastY = Math.floor(this._lastY);
let geometry = this._getGeometry();
this._rubberband.set_position(geometry.x, geometry.y);
@@ -302,6 +304,8 @@ const SelectArea = new Lang.Class({
_onButtonPress: function(actor, event) {
[this._startX, this._startY] = event.get_coords();
this._startX = Math.floor(this._startX);
this._startY = Math.floor(this._startY);
this._rubberband.set_position(this._startX, this._startY);
return Clutter.EVENT_PROPAGATE;

View File

@@ -205,6 +205,13 @@ const SearchResultsBase = new Lang.Class({
callback(false);
return;
}
if (metas.some(function(meta) {
return !meta.name || !meta.id;
})) {
log('Invalid result meta returned from search provider ' + this.provider.id);
callback(false);
return;
}
metasNeeded.forEach(Lang.bind(this, function(resultId, i) {
let meta = metas[i];

View File

@@ -49,9 +49,9 @@ function _setButtonsForChoices(dialog, choices) {
function _setLabelsForMessage(dialog, message) {
let labels = message.split('\n');
_setLabelText(dialog.subjectLabel, labels[0]);
if (labels.length > 1)
_setLabelText(dialog.descriptionLabel, labels[1]);
_setLabelText(dialog.subjectLabel, labels.shift());
if (labels.length > 0)
_setLabelText(dialog.descriptionLabel, labels.join('\n'));
}
function _createIcon(gicon) {
@@ -347,7 +347,7 @@ const ShellMountPasswordDialog = new Lang.Class({
mainContentBox.add(this._messageBox,
{ y_align: St.Align.START, expand: true, x_fill: true, y_fill: true });
let subject = new St.Label({ style_class: 'prompt-dialog-headline' });
let subject = new St.Label({ style_class: 'prompt-dialog-headline headline' });
this._messageBox.add(subject,
{ y_fill: false,
y_align: St.Align.START });

View File

@@ -475,13 +475,20 @@ const InputSourceManager = new Lang.Class({
},
_getNewInputSource: function(current) {
for (let i in this._inputSources) {
let is = this._inputSources[i];
if (is.type == current.type &&
is.id == current.id)
return is;
let sourceIndexes = Object.keys(this._inputSources);
if (sourceIndexes.length == 0)
return null;
if (current) {
for (let i in this._inputSources) {
let is = this._inputSources[i];
if (is.type == current.type &&
is.id == current.id)
return is;
}
}
return this._currentSource;
return this._inputSources[sourceIndexes[0]];
},
_getCurrentWindow: function() {
@@ -496,16 +503,13 @@ const InputSourceManager = new Lang.Class({
if (!window)
return;
if (!window._inputSources) {
window._inputSources = this._inputSources;
window._currentSource = this._currentSource;
} else if (window._inputSources == this._inputSources) {
window._currentSource.activate();
} else {
if (window._inputSources != this._inputSources) {
window._inputSources = this._inputSources;
window._currentSource = this._getNewInputSource(window._currentSource);
window._currentSource.activate();
}
if (window._currentSource)
window._currentSource.activate();
},
_sourcesPerWindowChanged: function() {

View File

@@ -6,6 +6,7 @@ const Clutter = imports.gi.Clutter;
const AccountsService = imports.gi.AccountsService;
const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
const Lang = imports.lang;
const St = imports.gi.St;
@@ -117,6 +118,7 @@ const UserWidgetLabel = new Lang.Class({
this._currentLabel = this._realNameLabel;
else
this._currentLabel = this._userNameLabel;
this.label_actor = this._currentLabel;
let childBox = new Clutter.ActorBox();
childBox.x1 = 0;
@@ -158,6 +160,9 @@ const UserWidget = new Lang.Class({
this._label = new UserWidgetLabel(user);
this.actor.add_child(this._label);
this._label.bind_property('label-actor', this.actor, 'label-actor',
GObject.BindingFlags.SYNC_CREATE);
this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUser));
this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUser));
this._updateUser();

View File

@@ -152,7 +152,7 @@ const ViewSelector = new Lang.Class({
this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay();
this._workspacesPage = this._addPage(this._workspacesDisplay.actor,
_("Windows"), 'emblem-documents-symbolic');
_("Windows"), 'focus-windows-symbolic');
this.appDisplay = new AppDisplay.AppDisplay();
this._appsPage = this._addPage(this.appDisplay.actor,
@@ -214,10 +214,13 @@ const ViewSelector = new Lang.Class({
Shell.ActionMode.OVERVIEW,
Lang.bind(Main.overview, Main.overview.toggle));
let gesture;
gesture = new EdgeDragAction.EdgeDragAction(St.Side.LEFT,
Shell.ActionMode.NORMAL);
let side;
if (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL)
side = St.Side.RIGHT;
else
side = St.Side.LEFT;
let gesture = new EdgeDragAction.EdgeDragAction(side,
Shell.ActionMode.NORMAL);
gesture.connect('activated', Lang.bind(this, function() {
if (Main.overview.visible)
Main.overview.hide();

View File

@@ -840,6 +840,7 @@ const WindowManager = new Lang.Class({
new Gio.Settings({ schema_id: SHELL_KEYBINDINGS_SCHEMA }),
Meta.KeyBindingFlags.NONE,
Shell.ActionMode.NORMAL |
Shell.ActionMode.OVERVIEW |
Shell.ActionMode.POPUP,
Lang.bind(this, this._toggleCalendar));

View File

@@ -7,6 +7,7 @@ be
bg
bn
bn_IN
bs
ca
ca@valencia
cs

View File

@@ -30,6 +30,7 @@ js/ui/endSessionDialog.js
js/ui/extensionDownloader.js
js/ui/extensionSystem.js
js/ui/keyboard.js
js/ui/legacyTray.js
js/ui/lookingGlass.js
js/ui/main.js
js/ui/messageTray.js

916
po/bg.po

File diff suppressed because it is too large Load Diff

1735
po/bs.po Normal file

File diff suppressed because it is too large Load Diff

1064
po/ca.po

File diff suppressed because it is too large Load Diff

182
po/cs.po
View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-04 12:55+0000\n"
"PO-Revision-Date: 2015-03-04 14:23+0100\n"
"POT-Creation-Date: 2015-03-13 20:44+0000\n"
"PO-Revision-Date: 2015-03-14 00:03+0100\n"
"Last-Translator: Marek Černocký <marek@manet.cz>\n"
"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
"Language: cs\n"
@@ -28,8 +28,6 @@ msgid "System"
msgstr "Systém"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "%d new notification"
#| msgid_plural "%d new notifications"
msgid "Show the notification list"
msgstr "Zobrazit seznam upozornění"
@@ -206,12 +204,10 @@ msgid "Keybinding to open the Activities Overview."
msgstr "Klávesová zkratka sloužící k otevření přehledu činností"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
#| msgid "Keybinding to toggle the visibility of the message tray"
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Klávesová zkratka přepínající viditelnost seznamu upozornění"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
#| msgid "Keybinding to toggle the visibility of the message tray."
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Klávesová zkratka sloužící k přepnutí viditelnosti seznamu upozornění."
@@ -311,7 +307,7 @@ msgstr ""
msgid "GNOME Shell Extensions"
msgstr "Rozšíření GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
@@ -332,25 +328,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Přihlásit se"
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Vybrat sezení"
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Nejste na seznamu?"
#: ../js/gdm/loginDialog.js:826
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(např. uživatel nebo %s)"
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Uživatelské jméno: "
#: ../js/gdm/loginDialog.js:1166
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Přihlašovací okno"
@@ -443,31 +439,31 @@ msgstr "%e. %B %Y, %l%M%p"
msgid "Web Authentication Redirect"
msgstr "Přesměrováno na ověření přes web"
#: ../js/ui/appDisplay.js:791
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Zde se objeví často používané aplikace"
#: ../js/ui/appDisplay.js:911
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Časté"
#: ../js/ui/appDisplay.js:918
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Všechny"
#: ../js/ui/appDisplay.js:1849
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1877 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Odstranit z oblíbených"
#: ../js/ui/appDisplay.js:1883
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Přidat mezi oblíbené"
#: ../js/ui/appDisplay.js:1893
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Zobrazit podrobnosti"
@@ -481,7 +477,7 @@ msgstr "%s byl přidán mezi oblíbené."
msgid "%s has been removed from your favorites."
msgstr "%s byl odstraněn z oblíbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Nastavení"
@@ -491,104 +487,104 @@ msgid "Change Background…"
msgstr "Změnit pozadí…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:49
#: ../js/ui/calendar.js:53
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "All Day"
msgstr "Celý den"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:93
#: ../js/ui/calendar.js:82
msgctxt "grid sunday"
msgid "S"
msgstr "Ne"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:95
#: ../js/ui/calendar.js:84
msgctxt "grid monday"
msgid "M"
msgstr "Po"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:97
#: ../js/ui/calendar.js:86
msgctxt "grid tuesday"
msgid "T"
msgstr "Út"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:99
#: ../js/ui/calendar.js:88
msgctxt "grid wednesday"
msgid "W"
msgstr "St"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:101
#: ../js/ui/calendar.js:90
msgctxt "grid thursday"
msgid "T"
msgstr "Čt"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:103
#: ../js/ui/calendar.js:92
msgctxt "grid friday"
msgid "F"
msgstr "Pá"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:105
#: ../js/ui/calendar.js:94
msgctxt "grid saturday"
msgid "S"
msgstr "So"
#: ../js/ui/calendar.js:572
#: ../js/ui/calendar.js:563
msgid "Previous month"
msgstr "Předchozí měsíc"
#: ../js/ui/calendar.js:582
#: ../js/ui/calendar.js:573
msgid "Next month"
msgstr "Následující měsíc"
#: ../js/ui/calendar.js:789
#: ../js/ui/calendar.js:780
msgid "Week %V"
msgstr "Týden %V"
#: ../js/ui/calendar.js:1245
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:1182
msgctxt "event list time"
msgid "All Day"
msgstr "Celý den"
#: ../js/ui/calendar.js:1288
msgid "Clear section"
msgstr "Vymazat část"
#: ../js/ui/calendar.js:1437
#: ../js/ui/calendar.js:1515
msgid "Events"
msgstr "Události"
#: ../js/ui/calendar.js:1445
#: ../js/ui/calendar.js:1524
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e. %B"
#: ../js/ui/calendar.js:1449
#: ../js/ui/calendar.js:1528
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y"
#: ../js/ui/calendar.js:1541
#: ../js/ui/calendar.js:1613
msgid "Notifications"
msgstr "Upozornění"
#: ../js/ui/calendar.js:1681
#: ../js/ui/calendar.js:1764
msgid "No Notifications"
msgstr "Žádná upozornění"
#: ../js/ui/calendar.js:1684
#: ../js/ui/calendar.js:1767
msgid "No Events"
msgstr "Žádné události"
@@ -613,40 +609,42 @@ msgstr "Heslo:"
msgid "Type again:"
msgstr "Napište znovu:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Připojit"
#: ../js/ui/components/networkAgent.js:231
#: ../js/ui/components/networkAgent.js:243
#: ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:291
#: ../js/ui/components/networkAgent.js:301
#: ../js/ui/components/networkAgent.js:233
#: ../js/ui/components/networkAgent.js:245
#: ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:293
#: ../js/ui/components/networkAgent.js:303
msgid "Password: "
msgstr "Heslo: "
#: ../js/ui/components/networkAgent.js:236
#: ../js/ui/components/networkAgent.js:238
msgid "Key: "
msgstr "Klíč: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:277
msgid "Identity: "
msgstr "Indentita: "
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:279
msgid "Private key password: "
msgstr "Heslo soukromého klíče: "
#: ../js/ui/components/networkAgent.js:289
#: ../js/ui/components/networkAgent.js:291
msgid "Service: "
msgstr "Služba: "
#: ../js/ui/components/networkAgent.js:318
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "K bezdrátové síti je vyžadováno ověření"
#: ../js/ui/components/networkAgent.js:319
#: ../js/ui/components/networkAgent.js:321
#: ../js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -655,39 +653,51 @@ msgstr ""
"Pro přístup k bezdrátové síti „%s“ jsou vyžadována hesla nebo šifrovací "
"klíče."
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Ověření připojení po drátu 802.1X"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:327
msgid "Network name: "
msgstr "Název sítě: "
#: ../js/ui/components/networkAgent.js:330
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Ověření DSL"
#: ../js/ui/components/networkAgent.js:337
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Požadován kód PIN"
#: ../js/ui/components/networkAgent.js:338
#: ../js/ui/components/networkAgent.js:340
#: ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Pro mobilní širokopásmové zařízení je vyžadován kód PIN"
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:341
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:345
#: ../js/ui/components/networkAgent.js:348
#: ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Heslo k mobilní širokopásmové síti"
#: ../js/ui/components/networkAgent.js:346
#: ../js/ui/components/networkAgent.js:349
#: ../js/ui/components/networkAgent.js:663
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Pro připojení k „%s“ je vyžadováno heslo."
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Network Manager"
#: ../js/ui/components/polkitAgent.js:54
msgid "Authentication Required"
msgstr "Je vyžadováno ověření"
@@ -710,7 +720,7 @@ msgstr "Ověření bohužel nebylo úspěšné. Zkuste to prosím znovu."
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:772
#: ../js/ui/components/telepathyClient.js:775
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s je teď znám jako %s"
@@ -719,11 +729,11 @@ msgstr "%s je teď znám jako %s"
msgid "Windows"
msgstr "Okna"
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Zobrazit aplikace"
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Oblíbené"
@@ -899,10 +909,20 @@ msgstr "Instalovat"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Stáhnout a nainstalovat „%s“ z extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
msgid "Keyboard"
msgstr "Klávesnice"
#. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:59
#| msgid "Hide Text"
msgid "Hide tray"
msgstr "Skrýt pořadač"
#: ../js/ui/legacyTray.js:91
msgid "Status Icons"
msgstr "Stavové ikony"
#: ../js/ui/lookingGlass.js:643
msgid "No extensions installed"
msgstr "Nejsou nainstalována žádná rozšíření"
@@ -955,7 +975,7 @@ msgstr "Zobrazit zdroj"
msgid "Web Page"
msgstr "Webová stránka"
#: ../js/ui/messageTray.js:2131
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Informace o systému"
@@ -975,21 +995,21 @@ msgstr "Přehled"
msgid "Type to search…"
msgstr "Vyhledávejte psaním…"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Ukončit"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Činnosti"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Horní lišta"
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -1043,11 +1063,11 @@ msgstr "Nelze uzamknout obrazovku"
msgid "Lock was blocked by an application"
msgstr "Zamknutí bylo zablokováno některou z aplikací"
#: ../js/ui/search.js:609
#: ../js/ui/search.js:616
msgid "Searching…"
msgstr "Hledá se…"
#: ../js/ui/search.js:611
#: ../js/ui/search.js:618
msgid "No results."
msgstr "Žádné výsledky."
@@ -1150,7 +1170,7 @@ msgstr "Nepřipojeno"
msgid "Brightness"
msgstr "Jas"
#: ../js/ui/status/keyboard.js:599
#: ../js/ui/status/keyboard.js:603
msgid "Show Keyboard Layout"
msgstr "Zobrazit rozložení klávesnice"
@@ -1319,10 +1339,6 @@ msgstr "Nastavení VPN"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Network Manager"
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Aktivace síťového připojení selhala"

1156
po/da.po

File diff suppressed because it is too large Load Diff

878
po/de.po

File diff suppressed because it is too large Load Diff

688
po/el.po

File diff suppressed because it is too large Load Diff

682
po/es.po

File diff suppressed because it is too large Load Diff

958
po/fi.po

File diff suppressed because it is too large Load Diff

536
po/fr.po
View File

@@ -1,5 +1,5 @@
# French translations for gnome-shell package.
# Copyright (C) 2009-2012 Listed translators
# Copyright (C) 2009-2015 Listed translators
# This file is distributed under the same license as the gnome-shell package.
#
# Mathieu Bridon <bochecha@fedoraproject.org>, 2009.
@@ -19,8 +19,8 @@ msgstr ""
"Project-Id-Version: gnome-shell master fr\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-04 08:44+0000\n"
"PO-Revision-Date: 2015-03-03 00:21+0100\n"
"POT-Creation-Date: 2015-03-15 20:37+0000\n"
"PO-Revision-Date: 2015-03-11 10:27+0100\n"
"Last-Translator: Alain Lojewski <allomervan@gmail.com>\n"
"Language-Team: français <gnomefr@traduc.org>\n"
"Language: French\n"
@@ -335,7 +335,7 @@ msgstr ""
msgid "GNOME Shell Extensions"
msgstr "Extensions GNOME Shell"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
@@ -356,25 +356,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Se connecter"
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Choisir une session"
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Absent de la liste ?"
#: ../js/gdm/loginDialog.js:826
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(par ex. utilisateur ou %s)"
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Nom d'utilisateur : "
#: ../js/gdm/loginDialog.js:1166
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Fenêtre de connexion"
@@ -386,50 +386,112 @@ msgstr "Erreur d'authentification"
msgid "(or swipe finger)"
msgstr "(ou faites glisser le doigt)"
#: ../js/misc/util.js:115
#: ../js/misc/util.js:119
msgid "Command not found"
msgstr "Commande non trouvée"
#: ../js/misc/util.js:148
#: ../js/misc/util.js:152
msgid "Could not parse command:"
msgstr "Impossible d'analyser la commande :"
#: ../js/misc/util.js:156
#: ../js/misc/util.js:160
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Exécution de « %s » impossible :"
#. Translators: Time in 24h format */
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/misc/util.js:197
msgid "Yesterday, %H%M"
msgstr "Hier, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/misc/util.js:203
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/misc/util.js:209
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/misc/util.js:215
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/misc/util.js:226
msgid "Yesterday, %l%M %p"
msgstr "Hier, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/misc/util.js:232
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/misc/util.js:238
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/misc/util.js:244
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page */
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Redirection de l'authentification Web"
#: ../js/ui/appDisplay.js:785
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Les applications fréquemment utilisées apparaîtront ici"
#: ../js/ui/appDisplay.js:905
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Fréquemment utilisées"
#: ../js/ui/appDisplay.js:912
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Toutes"
#: ../js/ui/appDisplay.js:1840
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nouvelle fenêtre"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Enlever des favoris"
#: ../js/ui/appDisplay.js:1874
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Ajouter aux favoris"
#: ../js/ui/appDisplay.js:1884
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Afficher les détails"
@@ -443,7 +505,7 @@ msgstr "%s a été ajouté à vos favoris."
msgid "%s has been removed from your favorites."
msgstr "%s a été supprimé de vos favoris."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Paramètres"
@@ -453,11 +515,69 @@ msgid "Change Background…"
msgstr "Modifier l'arrière-plan…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:52
#: ../js/ui/calendar.js:53
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:82
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:84
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:86
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:88
msgctxt "grid wednesday"
msgid "W"
msgstr "M"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:90
msgctxt "grid thursday"
msgid "T"
msgstr "J"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:92
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:94
msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:563
msgid "Previous month"
msgstr "Mois précédent"
#: ../js/ui/calendar.js:573
msgid "Next month"
msgstr "Mois suivant"
#: ../js/ui/calendar.js:780
msgid "Week %V"
msgstr "Semaine %V"
# luc: Trying alternatives:
# 123456789|123456789|
# Toute la journée bad
@@ -476,111 +596,38 @@ msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:81
#: ../js/ui/calendar.js:1182
msgctxt "event list time"
msgid "All Day"
msgstr "Journée"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1596
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M %p"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:111
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:113
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:115
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:117
msgctxt "grid wednesday"
msgid "W"
msgstr "M"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:119
msgctxt "grid thursday"
msgid "T"
msgstr "J"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:121
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:123
msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:590
msgid "Previous month"
msgstr "Mois précédent"
#: ../js/ui/calendar.js:600
msgid "Next month"
msgstr "Mois suivant"
#: ../js/ui/calendar.js:807
msgid "Week %V"
msgstr "Semaine %V"
#: ../js/ui/calendar.js:1263
#: ../js/ui/calendar.js:1288
msgid "Clear section"
msgstr "Effacer la section"
#: ../js/ui/calendar.js:1455
#: ../js/ui/calendar.js:1515
msgid "Events"
msgstr "Évènements"
#: ../js/ui/calendar.js:1463
#: ../js/ui/calendar.js:1524
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A %d %B"
#: ../js/ui/calendar.js:1467
#: ../js/ui/calendar.js:1528
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A %d %B, %Y"
#: ../js/ui/calendar.js:1560
#: ../js/ui/calendar.js:1613
msgid "Notifications"
msgstr "Notifications"
#: ../js/ui/calendar.js:1700
#: ../js/ui/calendar.js:1764
msgid "No Notifications"
msgstr "Aucune notification"
#: ../js/ui/calendar.js:1703
#: ../js/ui/calendar.js:1767
msgid "No Events"
msgstr "Aucun évènement"
@@ -605,40 +652,42 @@ msgstr "Mot de passe :"
msgid "Type again:"
msgstr "Saisissez à nouveau :"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Se connecter"
#: ../js/ui/components/networkAgent.js:231
#: ../js/ui/components/networkAgent.js:243
#: ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:291
#: ../js/ui/components/networkAgent.js:301
#: ../js/ui/components/networkAgent.js:233
#: ../js/ui/components/networkAgent.js:245
#: ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:293
#: ../js/ui/components/networkAgent.js:303
msgid "Password: "
msgstr "Mot de passe : "
#: ../js/ui/components/networkAgent.js:236
#: ../js/ui/components/networkAgent.js:238
msgid "Key: "
msgstr "Clé : "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:277
msgid "Identity: "
msgstr "Identité : "
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:279
msgid "Private key password: "
msgstr "Mot de passe de la clé privée : "
#: ../js/ui/components/networkAgent.js:289
#: ../js/ui/components/networkAgent.js:291
msgid "Service: "
msgstr "Service : "
#: ../js/ui/components/networkAgent.js:318
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "L'authentification est requise par le réseau sans fil"
#: ../js/ui/components/networkAgent.js:319
#: ../js/ui/components/networkAgent.js:321
#: ../js/ui/components/networkAgent.js:659
#, javascript-format
msgid ""
"Passwords or encryption keys are required to access the wireless network "
@@ -647,39 +696,51 @@ msgstr ""
"Il faut un mot de passe ou une clé de chiffrement pour accéder au réseau "
"sans fil « %s »"
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Authentification filaire 802.1X"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:327
msgid "Network name: "
msgstr "Nom du réseau : "
#: ../js/ui/components/networkAgent.js:330
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Authentification DSL"
#: ../js/ui/components/networkAgent.js:337
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Code PIN requis"
#: ../js/ui/components/networkAgent.js:338
#: ../js/ui/components/networkAgent.js:340
#: ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Un code PIN est nécessaire pour les téléphones mobiles à large bande"
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:341
msgid "PIN: "
msgstr "PIN : "
#: ../js/ui/components/networkAgent.js:345
#: ../js/ui/components/networkAgent.js:348
#: ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Mot de passe du téléphone mobile à large bande"
#: ../js/ui/components/networkAgent.js:346
#: ../js/ui/components/networkAgent.js:349
#: ../js/ui/components/networkAgent.js:663
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Un mot de passe est requis pour se connecter à « %s »."
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Gestionnaire de réseau"
#: ../js/ui/components/polkitAgent.js:54
msgid "Authentication Required"
msgstr "Authentification nécessaire"
@@ -700,71 +761,9 @@ msgstr "S'authentifier"
msgid "Sorry, that didn't work. Please try again."
msgstr "Échec de l'authentification. Essayez à nouveau."
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:764 ../js/ui/dateMenu.js:210
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:771
msgid "Yesterday, %H%M"
msgstr "Hier, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:778
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:785
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:791
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/ui/components/telepathyClient.js:797 ../js/ui/dateMenu.js:213
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:804
msgid "Yesterday, %l%M %p"
msgstr "Hier, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:811
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:818
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:824
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:856
#: ../js/ui/components/telepathyClient.js:775
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s est maintenant connu sous le nom de %s"
@@ -773,11 +772,11 @@ msgstr "%s est maintenant connu sous le nom de %s"
msgid "Windows"
msgstr "Fenêtres"
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Afficher les applications"
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Dash"
@@ -792,7 +791,7 @@ msgstr "Dash"
#. */
#: ../js/ui/dateMenu.js:73
msgid "%B %e %Y"
msgstr "%%e %B %Y"
msgstr "%-e %B %Y"
# luc: FIXME: how to have a capitalized weekday (start of sentence)?
# %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase)
@@ -954,10 +953,19 @@ msgstr "Installer"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
#: ../js/ui/keyboard.js:714 ../js/ui/status/keyboard.js:580
msgid "Keyboard"
msgstr "Clavier"
#. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:64
msgid "Hide tray"
msgstr "Masquer le tiroir"
#: ../js/ui/legacyTray.js:104
msgid "Status Icons"
msgstr "Icônes d'état"
#: ../js/ui/lookingGlass.js:643
msgid "No extensions installed"
msgstr "Aucune extension installée"
@@ -1010,7 +1018,7 @@ msgstr "Afficher la source"
msgid "Web Page"
msgstr "Page Web"
#: ../js/ui/messageTray.js:2131
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Informations du système"
@@ -1030,21 +1038,21 @@ msgstr "Vue d'ensemble"
msgid "Type to search…"
msgstr "Rechercher…"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Quitter"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Activités"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Barre supérieure"
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -1096,11 +1104,11 @@ msgstr "Impossible de verrouiller"
msgid "Lock was blocked by an application"
msgstr "Le verrouillage a été bloqué par une application"
#: ../js/ui/search.js:609
#: ../js/ui/search.js:616
msgid "Searching…"
msgstr "Recherche en cours…"
#: ../js/ui/search.js:611
#: ../js/ui/search.js:618
msgid "No results."
msgstr "Aucun résultat."
@@ -1202,7 +1210,7 @@ msgstr "Non connecté"
msgid "Brightness"
msgstr "Luminosité"
#: ../js/ui/status/keyboard.js:599
#: ../js/ui/status/keyboard.js:603
msgid "Show Keyboard Layout"
msgstr "Afficher la disposition du clavier"
@@ -1371,10 +1379,6 @@ msgstr "Paramètres VPN"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Gestionnaire de réseau"
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "L'activation de la connexion réseau a échoué"
@@ -1582,12 +1586,12 @@ msgstr ""
msgid "List possible modes"
msgstr "Lister les modes possibles"
#: ../src/shell-app.c:247
#: ../src/shell-app.c:239
msgctxt "program"
msgid "Unknown"
msgstr "Inconnu"
#: ../src/shell-app.c:488
#: ../src/shell-app.c:480
#, c-format
msgid "Failed to launch “%s”"
msgstr "Impossible de lancer « %s »"
@@ -1604,6 +1608,14 @@ msgstr "Le mot de passe ne peut pas être vide"
msgid "Authentication dialog was dismissed by the user"
msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
#~ msgctxt "event list time"
#~ msgid "%H%M"
#~ msgstr "%H%M"
#~ msgctxt "event list time"
#~ msgid "%l%M%p"
#~ msgstr "%l%M %p"
#~ msgid "Invitation"
#~ msgstr "Invitation"
@@ -2191,59 +2203,6 @@ msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
#~ msgstr[0] "%d minute restante"
#~ msgstr[1] "%d minutes restantes"
#~ msgctxt "percent of battery remaining"
#~ msgid "%d%%"
#~ msgstr "%d %%"
#~ msgid "AC Adapter"
#~ msgstr "Adaptateur secteur"
#~ msgid "Laptop Battery"
#~ msgstr "Batterie de l'ordinateur"
#~ msgid "Monitor"
#~ msgstr "Écran"
#~ msgid "Mouse"
#~ msgstr "Souris"
#~ msgid "PDA"
#~ msgstr "Assistant personnel"
#~ msgid "Cell Phone"
#~ msgstr "Téléphone portable"
#~ msgid "Media Player"
#~ msgstr "Lecteur multimédia"
#~ msgid "Tablet"
#~ msgstr "Tablette"
#~ msgid "Computer"
#~ msgstr "Ordinateur"
#~ msgctxt "device"
#~ msgid "Unknown"
#~ msgstr "Inconnu"
#~ msgid "Available"
#~ msgstr "Disponible"
#~ msgid "Busy"
#~ msgstr "Occupé"
#~ msgid "Invisible"
#~ msgstr "Invisible"
#~ msgid "Away"
#~ msgstr "Absent"
#~ msgid "Idle"
#~ msgstr "Inactif"
#~ msgid "Your chat status will be set to busy"
#~ msgstr "Votre statut pour les discussions sera défini à occupé"
#~ msgid ""
#~ "Notifications are now disabled, including chat messages. Your online "
#~ "status has been adjusted to let others know that you might not see their "
@@ -2257,72 +2216,9 @@ msgstr "La fenêtre d'authentification a été écartée par l'utilisateur"
#~ msgstr ""
#~ "L'extinction pourrait leur faire perdre leur travaux non enregistrés."
#~ msgctxt "title"
#~ msgid "Sign In"
#~ msgstr "Connexion"
#~ msgid "APPLICATIONS"
#~ msgstr "APPLICATIONS"
#~ msgid "SETTINGS"
#~ msgstr "PARAMÈTRES"
#
# luc: https://bugzilla.gnome.org/show_bug.cgi?id=658675
#~ msgctxt "event list time"
#~ msgid "%H:%M"
#~ msgstr "%H:%M"
#~ msgid "Subscription request"
#~ msgstr "Demande d'abonnement"
#~ msgid "Connection error"
#~ msgstr "Erreur de connexion"
#
# luc: TODO: double check with source code. %A is weekday « Envoyé lundi à 8:23»
#~ msgid "Sent at <b>%X</b> on <b>%A</b>"
#~ msgstr "Envoyé <b>%A</b> à <b>%X</b>"
#~ msgid "Sent on <b>%A</b>, <b>%B %d</b>, %Y"
#~ msgstr "Envoyé le <b>%A %-d %B %Y</b>"
#~ msgid "Connection to %s failed"
#~ msgstr "La connexion à %s a échoué"
#~ msgid "Reconnect"
#~ msgstr "Se reconnecter"
#~ msgid "tray"
#~ msgstr "tiroir de messagerie"
#~ msgid "Browse Files..."
#~ msgstr "Parcourir les fichiers..."
#~ msgid "Error browsing device"
#~ msgstr "Erreur en parcourant le périphérique"
#~ msgid "The requested device cannot be browsed, error is '%s'"
#~ msgstr ""
#~ "Le périphérique demandé ne peut pas être parcouru, l'erreur est « %s »"
#~ msgid "More..."
#~ msgstr "Plus..."
#~ msgid "Wireless"
#~ msgstr "Sans fil"
#~ msgid "VPN Connections"
#~ msgstr "Connexions par VPN"
#~ msgid "System Settings"
#~ msgstr "Paramètres système"
#~ msgid "Your favorite Easter Egg"
#~ msgstr "Votre œuf de Pâques favori"
#~ msgid "United Kingdom"
#~ msgstr "Royaume-Uni"
#~ msgid "Default"
#~ msgstr "Défaut"

675
po/hu.po

File diff suppressed because it is too large Load Diff

425
po/it.po
View File

@@ -11,8 +11,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-02 20:57+0000\n"
"PO-Revision-Date: 2015-03-03 08:48+0100\n"
"POT-Creation-Date: 2015-03-04 20:42+0000\n"
"PO-Revision-Date: 2015-03-05 08:59+0100\n"
"Last-Translator: Milo Casagrande <milo@milo.name>\n"
"Language-Team: Italiano <tp@lists.linux.it>\n"
"Language: it\n"
@@ -374,50 +374,112 @@ msgstr "Errore di autenticazione"
msgid "(or swipe finger)"
msgstr "(o passare il dito)"
#: ../js/misc/util.js:115
#: ../js/misc/util.js:119
msgid "Command not found"
msgstr "Comando non trovato"
#: ../js/misc/util.js:148
#: ../js/misc/util.js:152
msgid "Could not parse command:"
msgstr "Impossibile analizzare il comando:"
#: ../js/misc/util.js:156
#: ../js/misc/util.js:160
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Esecuzione di «%s» non riuscita:"
#. Translators: Time in 24h format */
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/misc/util.js:197
msgid "Yesterday, %H%M"
msgstr "Ieri, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/misc/util.js:203
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/misc/util.js:209
msgid "%B %d, %H%M"
msgstr "%e %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/misc/util.js:215
msgid "%B %d %Y, %H%M"
msgstr "%e %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%I%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/misc/util.js:226
msgid "Yesterday, %l%M %p"
msgstr "Ieri, %I%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/misc/util.js:232
msgid "%A, %l%M %p"
msgstr "%A, %I%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/misc/util.js:238
msgid "%B %d, %l%M %p"
msgstr "%d %B, %I%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/misc/util.js:244
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %I%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page */
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Redirezione autenticazione web"
#: ../js/ui/appDisplay.js:785
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Qui saranno mostrate le applicazioni usate frequentemente"
#: ../js/ui/appDisplay.js:905
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Frequenti"
#: ../js/ui/appDisplay.js:912
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Tutte"
#: ../js/ui/appDisplay.js:1840
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nuova finestra"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:289
msgid "Remove from Favorites"
msgstr "Rimuovi dai preferiti"
#: ../js/ui/appDisplay.js:1874
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Aggiungi ai preferiti"
#: ../js/ui/appDisplay.js:1884
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Mostra dettagli"
@@ -433,7 +495,7 @@ msgstr "%s è stato aggiunto ai preferiti."
msgid "%s has been removed from your favorites."
msgstr "%s è stato rimosso dai preferiti."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Impostazioni"
@@ -443,7 +505,7 @@ msgid "Change Background…"
msgstr "Cambia sfondo…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:52
#: ../js/ui/calendar.js:49
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
@@ -451,107 +513,96 @@ msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:81
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "All Day"
msgstr "Giornata"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1575
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%I%M%p"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:111
#: ../js/ui/calendar.js:93
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:95
msgctxt "grid monday"
msgid "M"
msgstr "L"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:97
msgctxt "grid tuesday"
msgid "T"
msgstr "M"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:99
msgctxt "grid wednesday"
msgid "W"
msgstr "M"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:101
msgctxt "grid thursday"
msgid "T"
msgstr "G"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:103
msgctxt "grid friday"
msgid "F"
msgstr "V"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:105
msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:590
#: ../js/ui/calendar.js:572
msgid "Previous month"
msgstr "Mese precedente"
#: ../js/ui/calendar.js:600
#: ../js/ui/calendar.js:582
msgid "Next month"
msgstr "Mese successivo"
#: ../js/ui/calendar.js:1258
#: ../js/ui/calendar.js:789
msgid "Week %V"
msgstr "Settimana %V"
#: ../js/ui/calendar.js:1245
msgid "Clear section"
msgstr "Annulla selezione"
#: ../js/ui/calendar.js:1436
#: ../js/ui/calendar.js:1459
msgid "Events"
msgstr "Eventi"
#: ../js/ui/calendar.js:1444
#: ../js/ui/calendar.js:1467
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e %B"
#: ../js/ui/calendar.js:1448
#: ../js/ui/calendar.js:1471
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e %B %Y"
#: ../js/ui/calendar.js:1541
#: ../js/ui/calendar.js:1563
msgid "Notifications"
msgstr "Notifiche"
#: ../js/ui/calendar.js:1678
#: ../js/ui/calendar.js:1714
msgid "No Notifications"
msgstr "Nessuna notifica"
#: ../js/ui/calendar.js:1681
#: ../js/ui/calendar.js:1717
msgid "No Events"
msgstr "Nessun evento"
@@ -671,277 +722,13 @@ msgstr "Autentica"
msgid "Sorry, that didn't work. Please try again."
msgstr "Errore nell'autenticazione. Provare di nuovo."
#: ../js/ui/components/telepathyClient.js:243
msgid "Invitation"
msgstr "Invito"
# A memora del test che ho fatto è "chiamata"... da verificare meglio
#: ../js/ui/components/telepathyClient.js:303
msgid "Call"
msgstr "Chiamata"
#: ../js/ui/components/telepathyClient.js:319
msgid "File Transfer"
msgstr "Trasferimento file"
#: ../js/ui/components/telepathyClient.js:423
msgid "Chat"
msgstr "Chat"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:936 ../js/ui/dateMenu.js:209
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:943
msgid "Yesterday, %H%M"
msgstr "Ieri, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:950
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:957
msgid "%B %d, %H%M"
msgstr "%e %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:963
msgid "%B %d %Y, %H%M"
msgstr "%e %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/ui/components/telepathyClient.js:969 ../js/ui/dateMenu.js:212
msgid "%l%M %p"
msgstr "%I%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:976
msgid "Yesterday, %l%M %p"
msgstr "Ieri, %I%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:983
msgid "%A, %l%M %p"
msgstr "%A, %I%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:990
msgid "%B %d, %l%M %p"
msgstr "%d %B, %I%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:996
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %I%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1028
#: ../js/ui/components/telepathyClient.js:772
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s ha cambiato nome in %s"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Invitation to %s"
msgstr "Invito su %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1136
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s ti sta invitando su %s"
#: ../js/ui/components/telepathyClient.js:1140
#: ../js/ui/components/telepathyClient.js:1175
#: ../js/ui/components/telepathyClient.js:1207
#: ../js/ui/components/telepathyClient.js:1273
msgid "Decline"
msgstr "Declina"
#: ../js/ui/components/telepathyClient.js:1146
#: ../js/ui/components/telepathyClient.js:1213
#: ../js/ui/components/telepathyClient.js:1278
msgid "Accept"
msgstr "Accetta"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1165
#, javascript-format
msgid "Video call from %s"
msgstr "Videochiamata da %s"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1168
#, javascript-format
msgid "Call from %s"
msgstr "Chiamata da %s"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1182
msgid "Answer"
msgstr "Rispondi"
#. To translators: The first parameter is
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1203
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s ti sta inviando %s"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1230
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s chiede il permesso di vedere quando sei online"
#: ../js/ui/components/telepathyClient.js:1321
msgid "Network error"
msgstr "Errore di rete"
#: ../js/ui/components/telepathyClient.js:1323
msgid "Authentication failed"
msgstr "Autenticazione non riuscita"
#: ../js/ui/components/telepathyClient.js:1325
msgid "Encryption error"
msgstr "Errore di cifratura"
#: ../js/ui/components/telepathyClient.js:1327
msgid "Certificate not provided"
msgstr "Certificato non fornito"
#: ../js/ui/components/telepathyClient.js:1329
msgid "Certificate untrusted"
msgstr "Certificato non fidato"
#: ../js/ui/components/telepathyClient.js:1331
msgid "Certificate expired"
msgstr "Certificato scaduto"
#: ../js/ui/components/telepathyClient.js:1333
msgid "Certificate not activated"
msgstr "Certificato non attivato"
#: ../js/ui/components/telepathyClient.js:1335
msgid "Certificate hostname mismatch"
msgstr "Corrispondenza errata nel nome host del certificato"
#: ../js/ui/components/telepathyClient.js:1337
msgid "Certificate fingerprint mismatch"
msgstr "Corrispondenza errata nell'impronta digitare del certificato"
#: ../js/ui/components/telepathyClient.js:1339
msgid "Certificate self-signed"
msgstr "Certificato auto-firmato"
#: ../js/ui/components/telepathyClient.js:1341
msgid "Status is set to offline"
msgstr "Lo stato è impostato a fuori rete"
#: ../js/ui/components/telepathyClient.js:1343
msgid "Encryption is not available"
msgstr "La cifratura non è disponibile"
#: ../js/ui/components/telepathyClient.js:1345
msgid "Certificate is invalid"
msgstr "Il certificato non è valido"
#: ../js/ui/components/telepathyClient.js:1347
msgid "Connection has been refused"
msgstr "La connessione è stata rifiutata"
#: ../js/ui/components/telepathyClient.js:1349
msgid "Connection can't be established"
msgstr "Impossibile stabilire la connessione"
#: ../js/ui/components/telepathyClient.js:1351
msgid "Connection has been lost"
msgstr "Connessione persa"
#: ../js/ui/components/telepathyClient.js:1353
msgid "This account is already connected to the server"
msgstr "Questo account è già connesso al server"
#: ../js/ui/components/telepathyClient.js:1355
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"La connessione è stata sostituita da una nuova connessione usando la stessa "
"risorsa"
#: ../js/ui/components/telepathyClient.js:1357
msgid "The account already exists on the server"
msgstr "L'account esiste già sul server"
#: ../js/ui/components/telepathyClient.js:1359
msgid "Server is currently too busy to handle the connection"
msgstr "Il server è al momento troppo occupato per gestire la connessione"
#: ../js/ui/components/telepathyClient.js:1361
msgid "Certificate has been revoked"
msgstr "Il certificato è stato revocato"
#: ../js/ui/components/telepathyClient.js:1363
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Il certificato usa un algoritmo di cifratura non sicuro o è "
"crittograficamente debole"
#: ../js/ui/components/telepathyClient.js:1365
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"La lunghezza del certificato del server o la profondità della catena di "
"certificazione del server eccedono i limiti imposti dalla libreria "
"crittografica"
# indica lo stato del device BT, per esempio gli auricolari
# credo sia meglio l'aggettivo che il sostantivo
#: ../js/ui/components/telepathyClient.js:1367
msgid "Internal error"
msgstr "Errore interno"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1377
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Impossibile connettersi a %s"
#: ../js/ui/components/telepathyClient.js:1382
msgid "View account"
msgstr "Visualizza account"
#: ../js/ui/components/telepathyClient.js:1419
msgid "Unknown reason"
msgstr "Motivo sconosciuto"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Finestre"
@@ -958,7 +745,7 @@ msgstr "Dash"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:72
#: ../js/ui/dateMenu.js:73
msgid "%B %e %Y"
msgstr "%e %B %Y"
@@ -966,15 +753,15 @@ msgstr "%e %B %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#. */
#: ../js/ui/dateMenu.js:79
#: ../js/ui/dateMenu.js:80
msgid "%A %B %e %Y"
msgstr "%A %e %B %Y"
#: ../js/ui/dateMenu.js:159
#: ../js/ui/dateMenu.js:160
msgid "Add world clocks…"
msgstr "Aggiungi orologi mondiali…"
#: ../js/ui/dateMenu.js:160
#: ../js/ui/dateMenu.js:161
msgid "World Clocks"
msgstr "Orologi mondiali"
@@ -1197,17 +984,17 @@ msgstr "Panoramica"
msgid "Type to search…"
msgstr "Digita per cercare…"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Esci"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Attività"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Barra superiore"
@@ -1223,7 +1010,7 @@ msgstr "Inserire un comando"
msgid "Close"
msgstr "Chiudi"
#: ../js/ui/runDialog.js:277
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Riavvio…"

946
po/ja.po

File diff suppressed because it is too large Load Diff

674
po/kk.po

File diff suppressed because it is too large Load Diff

847
po/ko.po

File diff suppressed because it is too large Load Diff

672
po/lt.po

File diff suppressed because it is too large Load Diff

515
po/nb.po
View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell 3.15.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-02-25 19:32+0100\n"
"PO-Revision-Date: 2015-02-25 19:32+0100\n"
"POT-Creation-Date: 2015-03-09 19:29+0100\n"
"PO-Revision-Date: 2015-03-09 19:29+0100\n"
"Last-Translator: Åka Sikrom <a4NOSPAMPLEASETHANKYOU@hush.com>\n"
"Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n"
"Language: Norwegian bokmål\n"
@@ -25,8 +25,8 @@ msgid "System"
msgstr "System"
#: ../data/50-gnome-shell-system.xml.in.h:2
msgid "Show the message list"
msgstr "Vis meldingsliste"
msgid "Show the notification list"
msgstr "Vis varslingsliste"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Focus the active notification"
@@ -117,8 +117,7 @@ msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Programmene som passer til disse identifikatorene vil bli vist i "
"favorittområdet."
"Programmene som passer til disse identifikatorene vises i favorittområdet."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
msgid "App Picker View"
@@ -200,12 +199,12 @@ msgid "Keybinding to open the Activities Overview."
msgstr "Tastaturbinding som åpner aktivitetsoversikten."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Tastaturbinding som slår av/på synlighet for meldingstrau"
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Tastaturbinding som slår av/på visning av varslingsliste"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Tastaturbinding som slår av/på synlighet for meldingstrauet."
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Tastaturbinding som slår av/på visning av varslingsliste."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to focus the active notification"
@@ -327,20 +326,20 @@ msgctxt "button"
msgid "Sign In"
msgstr "Logg inn"
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Velg økt"
#. translators: this message is shown below the user list on the
#. login screen. It can be activated to reveal an entry for
#. manually entering the username.
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Ikke listet?"
#. Translators: this message is shown below the username entry field
#. to clue the user in on how to login to the local network realm
#: ../js/gdm/loginDialog.js:822
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(f.eks. bruker eller %s)"
@@ -348,12 +347,12 @@ msgstr "(f.eks. bruker eller %s)"
#. TTLS and PEAP are actually much more complicated, but this complication
#. is not visible here since we only care about phase2 authentication
#. (and don't even care of which one)
#: ../js/gdm/loginDialog.js:827 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Brukernavn: "
#: ../js/gdm/loginDialog.js:1159
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Innloggingsvindu"
@@ -370,66 +369,136 @@ msgstr "Autentiseringsfeil"
msgid "(or swipe finger)"
msgstr "(eller dra finger)"
#: ../js/misc/util.js:115
#: ../js/misc/util.js:119
msgid "Command not found"
msgstr "Kommando ikke funnet"
#. Replace "Error invoking GLib.shell_parse_argv: " with
#. something nicer
#: ../js/misc/util.js:148
#: ../js/misc/util.js:152
msgid "Could not parse command:"
msgstr "Klarte ikke å lese kommando:"
#: ../js/misc/util.js:156
#: ../js/misc/util.js:160
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Kjøring av «%s» mislyktes:"
#. Translators: Time in 24h format
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30"
#: ../js/misc/util.js:197
#, no-c-format
msgid "Yesterday, %H%M"
msgstr "I går, %H.%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30"
#: ../js/misc/util.js:203
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H.%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30"
#: ../js/misc/util.js:209
#, no-c-format
msgid "%B %d, %H%M"
msgstr "%d %B, %H.%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30"
#: ../js/misc/util.js:215
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H.%M"
#. Translators: Time in 12h format
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%H.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: ../js/misc/util.js:226
#, no-c-format
msgid "Yesterday, %l%M %p"
msgstr "I går, %H.%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm"
#: ../js/misc/util.js:232
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %H.%M"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm"
#: ../js/misc/util.js:238
#, no-c-format
msgid "%B %d, %l%M %p"
msgstr "%d %B, %H.%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"
#: ../js/misc/util.js:244
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %H.%M"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Omdirigering av autentisering på nett"
#: ../js/ui/appDisplay.js:785
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Ofte brukte programmer vil vises her"
msgstr "Ofte brukte programmer vises her"
#: ../js/ui/appDisplay.js:905
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Ofte"
#: ../js/ui/appDisplay.js:912
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Alle"
#: ../js/ui/appDisplay.js:1840
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nytt vindu"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Fjern fra favoritter"
#: ../js/ui/appDisplay.js:1874
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Legg til i favoritter"
#: ../js/ui/appDisplay.js:1884
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Vis detaljer"
#: ../js/ui/appFavorites.js:132
#, javascript-format
msgid "%s has been added to your favorites."
msgstr "%s ble lagt til i dine favoritter."
msgstr "%s ble lagt til i favoritter."
#: ../js/ui/appFavorites.js:166
#, javascript-format
msgid "%s has been removed from your favorites."
msgstr "%s ble fjernet fra dine favoritter."
msgstr "%s ble fjernet fra favoritter."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Innstillinger"
@@ -439,7 +508,7 @@ msgid "Change Background…"
msgstr "Bytt bakgrunn …"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday).
#: ../js/ui/calendar.js:52
#: ../js/ui/calendar.js:49
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
@@ -447,107 +516,96 @@ msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#.
#: ../js/ui/calendar.js:81
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "All Day"
msgstr "Hele dagen"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to :
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1562
msgctxt "event list time"
msgid "%H%M"
msgstr "%H.%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%H.%M"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#.
#: ../js/ui/calendar.js:111
#: ../js/ui/calendar.js:93
msgctxt "grid sunday"
msgid "S"
msgstr "S"
#. Translators: Calendar grid abbreviation for Monday
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:95
msgctxt "grid monday"
msgid "M"
msgstr "M"
#. Translators: Calendar grid abbreviation for Tuesday
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:97
msgctxt "grid tuesday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:99
msgctxt "grid wednesday"
msgid "W"
msgstr "O"
#. Translators: Calendar grid abbreviation for Thursday
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:101
msgctxt "grid thursday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Friday
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:103
msgctxt "grid friday"
msgid "F"
msgstr "F"
#. Translators: Calendar grid abbreviation for Saturday
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:105
msgctxt "grid saturday"
msgid "S"
msgstr "L"
#: ../js/ui/calendar.js:590
#: ../js/ui/calendar.js:572
msgid "Previous month"
msgstr "Forrige måned"
#: ../js/ui/calendar.js:600
#: ../js/ui/calendar.js:582
msgid "Next month"
msgstr "Neste måned"
#: ../js/ui/calendar.js:789
msgid "Week %V"
msgstr "Uke %V"
#: ../js/ui/calendar.js:1245
msgid "Clear section"
msgstr "Tøm seksjon"
#: ../js/ui/calendar.js:1423
#: ../js/ui/calendar.js:1459
msgid "Events"
msgstr "Hendelser"
#: ../js/ui/calendar.js:1431
#: ../js/ui/calendar.js:1467
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A %B %d"
#: ../js/ui/calendar.js:1435
#: ../js/ui/calendar.js:1471
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A %B %d, %Y"
#: ../js/ui/calendar.js:1528
#: ../js/ui/calendar.js:1563
msgid "Notifications"
msgstr "Varslinger"
#: ../js/ui/calendar.js:1665
#: ../js/ui/calendar.js:1714
msgid "No Notifications"
msgstr "Ingen varslinger"
#: ../js/ui/calendar.js:1668
#: ../js/ui/calendar.js:1717
msgid "No Events"
msgstr "Ingen hendelser"
@@ -669,301 +727,31 @@ msgstr "Autentiser"
msgid "Sorry, that didn't work. Please try again."
msgstr "Beklager, det virket ikke. Prøv igjen."
#. FIXME: We don't have a 'chat room' icon (bgo #653737) use
#. system-users for now as Empathy does.
#: ../js/ui/components/telepathyClient.js:243
msgid "Invitation"
msgstr "Invitasjon"
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:303
msgid "Call"
msgstr "Ring"
#. We got the TpContact
#: ../js/ui/components/telepathyClient.js:319
msgid "File Transfer"
msgstr "Filoverføring"
#: ../js/ui/components/telepathyClient.js:423
msgid "Chat"
msgstr "Prat"
#. Translators: Time in 24h format
#: ../js/ui/components/telepathyClient.js:936 ../js/ui/dateMenu.js:209
msgid "%H%M"
msgstr "%H.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30"
#: ../js/ui/components/telepathyClient.js:943
#, no-c-format
msgid "Yesterday, %H%M"
msgstr "I går, %H.%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30"
#: ../js/ui/components/telepathyClient.js:950
#, no-c-format
msgid "%A, %H%M"
msgstr "%A, %H.%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30"
#: ../js/ui/components/telepathyClient.js:957
#, no-c-format
msgid "%B %d, %H%M"
msgstr "%d %B, %H.%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30"
#: ../js/ui/components/telepathyClient.js:963
#, no-c-format
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H.%M"
#. Translators: Time in 12h format
#: ../js/ui/components/telepathyClient.js:969 ../js/ui/dateMenu.js:212
msgid "%l%M %p"
msgstr "%H.%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:976
#, no-c-format
msgid "Yesterday, %l%M %p"
msgstr "I går, %H.%M"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:983
#, no-c-format
msgid "%A, %l%M %p"
msgstr "%A, %H.%M"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:990
#, no-c-format
msgid "%B %d, %l%M %p"
msgstr "%d %B, %H.%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"
#: ../js/ui/components/telepathyClient.js:996
#, no-c-format
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %H.%M"
#. Translators: this is the other person changing their old IM name to their new
#. IM name.
#: ../js/ui/components/telepathyClient.js:1028
#: ../js/ui/components/telepathyClient.js:772
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s er nå kjent som %s"
#. translators: argument is a room name like
#. * room@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Invitation to %s"
msgstr "Invitasjon til %s"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example.
#: ../js/ui/components/telepathyClient.js:1136
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s inviterer deg til å bli med i %s"
#: ../js/ui/components/telepathyClient.js:1140
#: ../js/ui/components/telepathyClient.js:1175
#: ../js/ui/components/telepathyClient.js:1207
#: ../js/ui/components/telepathyClient.js:1273
msgid "Decline"
msgstr "Avslå"
#: ../js/ui/components/telepathyClient.js:1146
#: ../js/ui/components/telepathyClient.js:1213
#: ../js/ui/components/telepathyClient.js:1278
msgid "Accept"
msgstr "Godta"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1165
#, javascript-format
msgid "Video call from %s"
msgstr "Videosamtale fra %s"
#. translators: argument is a contact name like Alice for example.
#: ../js/ui/components/telepathyClient.js:1168
#, javascript-format
msgid "Call from %s"
msgstr "Samtale fra %s"
#. translators: this is a button label (verb), not a noun
#: ../js/ui/components/telepathyClient.js:1182
msgid "Answer"
msgstr "Svar"
#. To translators: The first parameter is
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#.
#: ../js/ui/components/telepathyClient.js:1203
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s sender deg %s"
#. To translators: The parameter is the contact's alias
#: ../js/ui/components/telepathyClient.js:1230
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s vil ha rettigheter til å se når du er tilkoblet"
#: ../js/ui/components/telepathyClient.js:1321
msgid "Network error"
msgstr "Nettverksfeil"
#: ../js/ui/components/telepathyClient.js:1323
msgid "Authentication failed"
msgstr "Autentisering mislyktes"
#: ../js/ui/components/telepathyClient.js:1325
msgid "Encryption error"
msgstr "Feil ved kryptering"
#: ../js/ui/components/telepathyClient.js:1327
msgid "Certificate not provided"
msgstr "Sertifikat ikke oppgitt"
#: ../js/ui/components/telepathyClient.js:1329
msgid "Certificate untrusted"
msgstr "Stoler ikke på sertifikatet"
#: ../js/ui/components/telepathyClient.js:1331
msgid "Certificate expired"
msgstr "Sertifikatet er utløpt"
#: ../js/ui/components/telepathyClient.js:1333
msgid "Certificate not activated"
msgstr "Sertifikatet er ikke aktivert"
#: ../js/ui/components/telepathyClient.js:1335
msgid "Certificate hostname mismatch"
msgstr "Feil vertsnavn for sertifikat"
#: ../js/ui/components/telepathyClient.js:1337
msgid "Certificate fingerprint mismatch"
msgstr "Feil fingeravtrykk for sertifikat"
#: ../js/ui/components/telepathyClient.js:1339
msgid "Certificate self-signed"
msgstr "Sertifikatet er selvsignert"
#: ../js/ui/components/telepathyClient.js:1341
msgid "Status is set to offline"
msgstr "Status er satt til frakoblet"
#: ../js/ui/components/telepathyClient.js:1343
msgid "Encryption is not available"
msgstr "Kryptering er ikke tilgjengelig"
#: ../js/ui/components/telepathyClient.js:1345
msgid "Certificate is invalid"
msgstr "Sertifikatet er ugyldig"
#: ../js/ui/components/telepathyClient.js:1347
msgid "Connection has been refused"
msgstr "Tilkobling ble nektet"
#: ../js/ui/components/telepathyClient.js:1349
msgid "Connection can't be established"
msgstr "Klarte ikke å etablere tilkobling"
#: ../js/ui/components/telepathyClient.js:1351
msgid "Connection has been lost"
msgstr "Tilkoblingen er brutt"
#: ../js/ui/components/telepathyClient.js:1353
msgid "This account is already connected to the server"
msgstr "Denne kontoen er allerede koblet til tjeneren"
#: ../js/ui/components/telepathyClient.js:1355
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr ""
"Tilkoblingen har blitt erstattet av en ny tilkobling som bruker samme ressurs"
#: ../js/ui/components/telepathyClient.js:1357
msgid "The account already exists on the server"
msgstr "Kontoen finnes allerede på tjeneren"
#: ../js/ui/components/telepathyClient.js:1359
msgid "Server is currently too busy to handle the connection"
msgstr "Tjener er for opptatt til å håndtere tilkoblingen"
#: ../js/ui/components/telepathyClient.js:1361
msgid "Certificate has been revoked"
msgstr "Sertifikatet er tilbaketrukket"
#: ../js/ui/components/telepathyClient.js:1363
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Sertifikatet bruker en usikker sifferalgoritme eller er krytografisk svakt"
#: ../js/ui/components/telepathyClient.js:1365
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Lengden eller dybden på tjenersertifikatet oversteg grensen som er satt i "
"kryptografibiblioteket"
#: ../js/ui/components/telepathyClient.js:1367
msgid "Internal error"
msgstr "Intern feil"
#. translators: argument is the account name, like
#. * name@jabber.org for example.
#: ../js/ui/components/telepathyClient.js:1377
#, javascript-format
msgid "Unable to connect to %s"
msgstr "Klarte ikke å koble til %s"
#: ../js/ui/components/telepathyClient.js:1382
msgid "View account"
msgstr "Vis konto"
#: ../js/ui/components/telepathyClient.js:1419
msgid "Unknown reason"
msgstr "Ukjent årsak"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Vinduer"
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Vis programmer"
#. Translators: this is the name of the dock/favorites area on
#. the left of the overview
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Favoritter"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#.
#: ../js/ui/dateMenu.js:72
#: ../js/ui/dateMenu.js:73
msgid "%B %e %Y"
msgstr "%B %e %Y"
@@ -971,15 +759,15 @@ msgstr "%B %e %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#.
#: ../js/ui/dateMenu.js:79
#: ../js/ui/dateMenu.js:80
msgid "%A %B %e %Y"
msgstr "%A %B %e %Y"
#: ../js/ui/dateMenu.js:159
#: ../js/ui/dateMenu.js:160
msgid "Add world clocks…"
msgstr "Legg til verdensklokker …"
#: ../js/ui/dateMenu.js:160
#: ../js/ui/dateMenu.js:161
msgid "World Clocks"
msgstr "Verdensklokker"
@@ -1027,8 +815,8 @@ msgstr "Installer oppdateringer og slå av"
#, javascript-format
msgid "The system will power off automatically in %d second."
msgid_plural "The system will power off automatically in %d seconds."
msgstr[0] "Systemet vil slås av automatisk om %d sekund."
msgstr[1] "Systemet vil slås av automatisk om %d sekunder."
msgstr[0] "Systemet slås av automatisk om %d sekund."
msgstr[1] "Systemet slås av automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:91
msgctxt "checkbox"
@@ -1054,8 +842,8 @@ msgstr "Start på nytt"
#, javascript-format
msgid "The system will restart automatically in %d second."
msgid_plural "The system will restart automatically in %d seconds."
msgstr[0] "Systemet vil starte på nytt automatisk om %d sekund."
msgstr[1] "Systemet vil starte på nytt automatisk om %d sekunder."
msgstr[0] "Systemet starter på nytt automatisk om %d sekund."
msgstr[1] "Systemet starter på nytt automatisk om %d sekunder."
#: ../js/ui/endSessionDialog.js:119
msgctxt "title"
@@ -1068,10 +856,9 @@ msgid "The system will automatically restart and install updates in %d second."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] ""
"Systemet vil starte på nytt og installere oppdateringer automatisk om %d "
"sekund."
"Systemet starter på nytt og installere oppdateringer automatisk om %d sekund."
msgstr[1] ""
"Systemet vil starte på nytt og installere oppdateringer automatisk om %d "
"Systemet starter på nytt og installere oppdateringer automatisk om %d "
"sekunder."
#: ../js/ui/endSessionDialog.js:127
@@ -1124,7 +911,7 @@ msgstr "Installer"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Vil du laste ned og installere «%s» fra extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:577
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
msgid "Keyboard"
msgstr "Tastatur"
@@ -1180,7 +967,7 @@ msgstr "Vis kildekode"
msgid "Web Page"
msgstr "Nettside"
#: ../js/ui/messageTray.js:2092
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Systeminformasjon"
@@ -1200,17 +987,17 @@ msgstr "Oversikt"
msgid "Type to search…"
msgstr "Skriv for å søke …"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Avslutt"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview".
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Aktiviteter"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Topp-panel"
@@ -1219,7 +1006,7 @@ msgstr "Topp-panel"
#. "ON" and "OFF") or "toggle-switch-intl" (for toggle
#. switches containing "◯" and "|"). Other values will
#. simply result in invisible toggle switches.
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -1231,35 +1018,35 @@ msgstr "Skriv inn en kommando"
msgid "Close"
msgstr "Lukk"
#: ../js/ui/runDialog.js:277
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Starter på nytt …"
#. Translators: This is a time format for a date in
#. long format
#: ../js/ui/screenShield.js:88
#: ../js/ui/screenShield.js:85
msgid "%A, %B %d"
msgstr "%A, %B %d"
#: ../js/ui/screenShield.js:147
#: ../js/ui/screenShield.js:144
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d ny melding"
msgstr[1] "%d nye meldinger"
#: ../js/ui/screenShield.js:149
#: ../js/ui/screenShield.js:146
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d ny varsling"
msgstr[1] "%d nye varslinger"
#: ../js/ui/screenShield.js:434 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Lås"
#: ../js/ui/screenShield.js:670
#: ../js/ui/screenShield.js:668
msgid "GNOME needs to lock the screen"
msgstr "GNOME må låse skjermen"
@@ -1270,11 +1057,11 @@ msgstr "GNOME må låse skjermen"
#.
#. XXX: another option is to kick the user into the gdm login
#. screen, where we're not affected by grabs
#: ../js/ui/screenShield.js:797 ../js/ui/screenShield.js:1273
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
msgid "Unable to lock"
msgstr "Klarte ikke å låse"
#: ../js/ui/screenShield.js:798 ../js/ui/screenShield.js:1274
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
msgid "Lock was blocked by an application"
msgstr "Låsing ble stoppet av et program"
@@ -1386,7 +1173,7 @@ msgstr "Ikke koblet til"
msgid "Brightness"
msgstr "Lysstyrke"
#: ../js/ui/status/keyboard.js:600
#: ../js/ui/status/keyboard.js:599
msgid "Show Keyboard Layout"
msgstr "Vis tastaturutforming"
@@ -1663,7 +1450,7 @@ msgstr "«%s» er klar"
#: ../js/ui/windowManager.js:65
msgid "Do you want to keep these display settings?"
msgstr "Vil du beholde disse innstillingene for skjerm?"
msgstr "Vil du beholde disse skjerminnstillingene?"
#. Translators: this and the following message should be limited in lenght,
#. to avoid ellipsizing the labels.
@@ -1680,8 +1467,8 @@ msgstr "Behold endringer"
#, javascript-format
msgid "Settings changes will revert in %d second"
msgid_plural "Settings changes will revert in %d seconds"
msgstr[0] "Endringer i innstillingene vil forkastes om %d sekund"
msgstr[1] "Endringer i innstillingene vil forkastes om %d sekunder"
msgstr[0] "Endringer i innstillingene forkastes om %d sekund"
msgstr[1] "Endringer i innstillingene forkastes om %d sekunder"
#. Translators: This represents the size of a window. The first number is
#. * the width of the window and the second is the height.
@@ -1758,7 +1545,7 @@ msgstr "Systemlyder"
#: ../src/main.c:373
msgid "Print version"
msgstr "Skriv ut versjon"
msgstr "Vis versjon"
#: ../src/main.c:379
msgid "Mode used by GDM for login screen"

1036
po/pa.po

File diff suppressed because it is too large Load Diff

834
po/pl.po

File diff suppressed because it is too large Load Diff

View File

@@ -20,8 +20,8 @@ msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-04 12:55+0000\n"
"PO-Revision-Date: 2015-03-04 15:31-0300\n"
"POT-Creation-Date: 2015-03-13 16:16+0000\n"
"PO-Revision-Date: 2015-03-13 14:04-0300\n"
"Last-Translator: Enrico Nicoletto <liverig@gmail.com>\n"
"Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
"Language: pt_BR\n"
@@ -287,7 +287,7 @@ msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:"
msgid "GNOME Shell Extensions"
msgstr "Extensões do Shell do GNOME"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 ../js/ui/components/polkitAgent.js:166
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145 ../js/ui/components/polkitAgent.js:166
#: ../js/ui/endSessionDialog.js:452 ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
msgid "Cancel"
@@ -306,24 +306,24 @@ msgctxt "button"
msgid "Sign In"
msgstr "Entrar"
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Escolher sessão"
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Não está listado?"
#: ../js/gdm/loginDialog.js:826
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(ex.: usuário ou %s)"
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269 ../js/ui/components/networkAgent.js:287
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271 ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Nome de usuário: "
#: ../js/gdm/loginDialog.js:1166
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Janela de sessão"
@@ -416,31 +416,31 @@ msgstr "%d de %B de %Y, %l%M %p"
msgid "Web Authentication Redirect"
msgstr "Redirecionamento para autenticação web"
#: ../js/ui/appDisplay.js:791
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Aplicativos usados frequentemente vão aparecer aqui"
#: ../js/ui/appDisplay.js:911
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Frequente"
#: ../js/ui/appDisplay.js:918
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Todos"
#: ../js/ui/appDisplay.js:1849
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nova janela"
#: ../js/ui/appDisplay.js:1877 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Remover dos favoritos"
#: ../js/ui/appDisplay.js:1883
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Adicionar aos favoritos"
#: ../js/ui/appDisplay.js:1893
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Mostrar detalhes"
@@ -454,7 +454,7 @@ msgstr "%s foi adicionado aos seus favoritos."
msgid "%s has been removed from your favorites."
msgstr "%s foi removido dos seus favoritos."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649 ../js/ui/status/system.js:337
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650 ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Configurações"
@@ -463,104 +463,104 @@ msgid "Change Background…"
msgstr "Alterar plano de fundo…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:49
#: ../js/ui/calendar.js:53
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "All Day"
msgstr "Dia todo"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:93
#: ../js/ui/calendar.js:82
msgctxt "grid sunday"
msgid "S"
msgstr "D"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:95
#: ../js/ui/calendar.js:84
msgctxt "grid monday"
msgid "M"
msgstr "S"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:97
#: ../js/ui/calendar.js:86
msgctxt "grid tuesday"
msgid "T"
msgstr "T"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:99
#: ../js/ui/calendar.js:88
msgctxt "grid wednesday"
msgid "W"
msgstr "Q"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:101
#: ../js/ui/calendar.js:90
msgctxt "grid thursday"
msgid "T"
msgstr "Q"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:103
#: ../js/ui/calendar.js:92
msgctxt "grid friday"
msgid "F"
msgstr "S"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:105
#: ../js/ui/calendar.js:94
msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:572
#: ../js/ui/calendar.js:563
msgid "Previous month"
msgstr "Mês anterior"
#: ../js/ui/calendar.js:582
#: ../js/ui/calendar.js:573
msgid "Next month"
msgstr "Próximo mês"
#: ../js/ui/calendar.js:789
#: ../js/ui/calendar.js:780
msgid "Week %V"
msgstr "Semana %V"
#: ../js/ui/calendar.js:1245
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:1182
msgctxt "event list time"
msgid "All Day"
msgstr "Dia todo"
#: ../js/ui/calendar.js:1288
msgid "Clear section"
msgstr "Limpar seção"
#: ../js/ui/calendar.js:1437
#: ../js/ui/calendar.js:1515
msgid "Events"
msgstr "Eventos"
#: ../js/ui/calendar.js:1445
#: ../js/ui/calendar.js:1524
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d de %B"
#: ../js/ui/calendar.js:1449
#: ../js/ui/calendar.js:1528
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d de %B de %Y"
#: ../js/ui/calendar.js:1541
#: ../js/ui/calendar.js:1613
msgid "Notifications"
msgstr "Notificações"
#: ../js/ui/calendar.js:1681
#: ../js/ui/calendar.js:1764
msgid "No Notifications"
msgstr "Nenhuma notificação"
#: ../js/ui/calendar.js:1684
#: ../js/ui/calendar.js:1767
msgid "No Events"
msgstr "Nenhum evento"
@@ -585,74 +585,79 @@ msgstr "Senha:"
msgid "Type again:"
msgstr "Digite novamente:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 ../js/ui/status/network.js:359
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277 ../js/ui/status/network.js:359
#: ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Conectar"
#: ../js/ui/components/networkAgent.js:231 ../js/ui/components/networkAgent.js:243 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:291 ../js/ui/components/networkAgent.js:301
#: ../js/ui/components/networkAgent.js:233 ../js/ui/components/networkAgent.js:245 ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:293 ../js/ui/components/networkAgent.js:303
msgid "Password: "
msgstr "Senha: "
#: ../js/ui/components/networkAgent.js:236
#: ../js/ui/components/networkAgent.js:238
msgid "Key: "
msgstr "Chave: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:277
msgid "Identity: "
msgstr "Identidade: "
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:279
msgid "Private key password: "
msgstr "Senha da chave privada: "
#: ../js/ui/components/networkAgent.js:289
#: ../js/ui/components/networkAgent.js:291
msgid "Service: "
msgstr "Serviço: "
#: ../js/ui/components/networkAgent.js:318
#: ../js/ui/components/networkAgent.js:320 ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "Autenticação requisitada pela rede sem fio"
#: ../js/ui/components/networkAgent.js:319
#: ../js/ui/components/networkAgent.js:321 ../js/ui/components/networkAgent.js:659
#, javascript-format
msgid "Passwords or encryption keys are required to access the wireless network “%s”."
msgstr "Senhas ou chaves criptografadas são necessárias para acessar a rede sem fio \"%s\"."
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:325 ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Autenticação 802.1X cabeada"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:327
msgid "Network name: "
msgstr "Nome da rede: "
#: ../js/ui/components/networkAgent.js:330
#: ../js/ui/components/networkAgent.js:332 ../js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Autenticação DSL"
#: ../js/ui/components/networkAgent.js:337
#: ../js/ui/components/networkAgent.js:339 ../js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Código PIN requisitado"
#: ../js/ui/components/networkAgent.js:338
#: ../js/ui/components/networkAgent.js:340 ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "O código PIN é necessário para o dispositivo móvel de banda larga"
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:341
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:345
#: ../js/ui/components/networkAgent.js:348 ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Senha da rede de banda larga móvel"
#: ../js/ui/components/networkAgent.js:346
#: ../js/ui/components/networkAgent.js:349 ../js/ui/components/networkAgent.js:663 ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Uma senha é necessária para se conectar a \"%s\""
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Gerenciador de rede"
#: ../js/ui/components/polkitAgent.js:54
msgid "Authentication Required"
msgstr "Autenticação necessária"
@@ -675,7 +680,7 @@ msgstr "Desculpe, isto não funcionou. Por favor, tente novamente."
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:772
#: ../js/ui/components/telepathyClient.js:775
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s agora é conhecido como %s"
@@ -684,11 +689,11 @@ msgstr "%s agora é conhecido como %s"
msgid "Windows"
msgstr "Janelas"
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Mostrar aplicativos"
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Dash"
@@ -849,10 +854,19 @@ msgstr "Instalar"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:580
msgid "Keyboard"
msgstr "Teclado"
#. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:59
msgid "Hide tray"
msgstr "Esconder bandeja"
#: ../js/ui/legacyTray.js:91
msgid "Status Icons"
msgstr "Ícones de status"
#: ../js/ui/lookingGlass.js:643
msgid "No extensions installed"
msgstr "Nenhuma extensão instalada"
@@ -904,7 +918,7 @@ msgstr "Ver fonte"
msgid "Web Page"
msgstr "Página web"
#: ../js/ui/messageTray.js:2131
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Informações do sistema"
@@ -924,21 +938,21 @@ msgstr "Panorama"
msgid "Type to search…"
msgstr "Digite para pesquisar…"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Sair"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Atividades"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Barra superior"
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -990,11 +1004,11 @@ msgstr "Não foi possível bloquear"
msgid "Lock was blocked by an application"
msgstr "O bloqueio foi impedido por um aplicativo"
#: ../js/ui/search.js:609
#: ../js/ui/search.js:616
msgid "Searching…"
msgstr "Pesquisando…"
#: ../js/ui/search.js:611
#: ../js/ui/search.js:618
msgid "No results."
msgstr "Nenhum resultado."
@@ -1095,7 +1109,7 @@ msgstr "Não conectado"
msgid "Brightness"
msgstr "Brilho"
#: ../js/ui/status/keyboard.js:599
#: ../js/ui/status/keyboard.js:603
msgid "Show Keyboard Layout"
msgstr "Exibir disposição de teclado"
@@ -1264,10 +1278,6 @@ msgstr "Configurações de VPN"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Gerenciador de rede"
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Falha ao ativar a conexão da rede"

694
po/ru.po

File diff suppressed because it is too large Load Diff

546
po/sk.po
View File

@@ -3,23 +3,23 @@
# This file is distributed under the same license as the gnome-shell package.
# Peter Mráz <etkinator@gmail.com>, 2011.
# Michal Štrba <faiface2202@gmail.com>, 2011.
# Dušan Kazik <prescott66@gmail.com>, 2012, 2013.
#
# Dušan Kazik <prescott66@gmail.com>, 2012, 2013, 2015.
msgid ""
msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-04 08:44+0000\n"
"PO-Revision-Date: 2015-03-04 11:52+0100\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-\n"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-03-13 16:16+0000\n"
"PO-Revision-Date: 2015-03-13 17:44+0100\n"
"Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
"Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
"Language: sk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-DamnedLies-Scope: partial\n"
"X-Generator: Poedit 1.7.4\n"
"X-Generator: Vé 0.1.4\n"
#: ../data/50-gnome-shell-system.xml.in.h:1
msgid "System"
@@ -53,7 +53,8 @@ msgstr "Otvoriť ponuku aplikácií"
msgid "GNOME Shell"
msgstr "Shell prostredia GNOME"
#: ../data/gnome-shell.desktop.in.in.h:2 ../data/gnome-shell-wayland.desktop.in.in.h:2
#: ../data/gnome-shell.desktop.in.in.h:2
#: ../data/gnome-shell-wayland.desktop.in.in.h:2
msgid "Window management and application launching"
msgstr "Správa okien a spúšťanie aplikácií"
@@ -71,11 +72,17 @@ msgstr "Shell prostredia GNOME (kompozitor pre wayland)"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:1
msgid "Enable internal tools useful for developers and testers from Alt-F2"
msgstr "Povoliť vnútorné nástroje užitočné pre vývojárov a testerov z dialógového okna Alt-F2"
msgstr ""
"Povoliť vnútorné nástroje užitočné pre vývojárov a testerov z dialógového "
"okna Alt-F2"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:2
msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog."
msgstr "Umožňuje prístup k vnútorným ladiacim a sledovacím nástrojom pomocou dialógového okna Alt-F2."
msgid ""
"Allows access to internal debugging and monitoring tools using the Alt-F2 "
"dialog."
msgstr ""
"Umožňuje prístup k vnútorným ladiacim a sledovacím nástrojom pomocou "
"dialógového okna Alt-F2."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:3
msgid "UUIDs of extensions to enable"
@@ -83,28 +90,43 @@ msgstr "Vlastnosť UUID rozšírení určených na povolenie"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:4
msgid ""
"GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on "
"org.gnome.Shell."
"GNOME Shell extensions have a UUID property; this key lists extensions which "
"should be loaded. Any extension that wants to be loaded needs to be in this "
"list. You can also manipulate this list with the EnableExtension and "
"DisableExtension D-Bus methods on org.gnome.Shell."
msgstr ""
"Rozšírenia pre Shell prostredia GNOME majú vlastnosť UUID; tento kľúč obsahuje zoznam rozšírení, ktoré by mali byť načítané. Každé rozšírenie, ktoré je potrebné načítať, musí byť v tomto zozname. Tento zoznam môžete upraviť aj ručne pomocou metód DBus "
"EnableExtension a DisableExtension v org.gnome.Shell."
"Rozšírenia pre Shell prostredia GNOME majú vlastnosť UUID; tento kľúč "
"obsahuje zoznam rozšírení, ktoré by mali byť načítané. Každé rozšírenie, "
"ktoré je potrebné načítať, musí byť v tomto zozname. Tento zoznam môžete "
"upraviť aj ručne pomocou metód DBus EnableExtension a DisableExtension v org."
"gnome.Shell."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:5
msgid "Disables the validation of extension version compatibility"
msgstr "Zakáže kontrolu kompatibility verzií rozšírení"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:6
msgid "GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will disable this check and try to load all extensions regardless of the versions they claim to support."
msgid ""
"GNOME Shell will only load extensions that claim to support the current "
"running version. Enabling this option will disable this check and try to "
"load all extensions regardless of the versions they claim to support."
msgstr ""
"Shell prostredia GNOME načíta len rozšírenia, ktoré deklarujú podporu pre práve spustenú verziu prostredia. Povolením tejto voľby zakážete túto kontrolu a umožníte načítanie všetkých rozšírení bez ohľadu na to, pre ktorú verziu prostredia deklarujú podporu."
"Shell prostredia GNOME načíta len rozšírenia, ktoré deklarujú podporu pre "
"práve spustenú verziu prostredia. Povolením tejto voľby zakážete túto "
"kontrolu a umožníte načítanie všetkých rozšírení bez ohľadu na to, pre ktorú "
"verziu prostredia deklarujú podporu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:7
msgid "List of desktop file IDs for favorite applications"
msgstr "Zoznam identifikátorov súborov plochy pre obľúbené aplikácie"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:8
msgid "The applications corresponding to these identifiers will be displayed in the favorites area."
msgstr "Aplikácie zodpovedajúce týmto identifikátorom budú zobrazené medzi obľúbenými aplikáciami."
msgid ""
"The applications corresponding to these identifiers will be displayed in the "
"favorites area."
msgstr ""
"Aplikácie zodpovedajúce týmto identifikátorom budú zobrazené medzi "
"obľúbenými aplikáciami."
# summary
#: ../data/org.gnome.shell.gschema.xml.in.in.h:9
@@ -131,18 +153,32 @@ msgstr "Vždy zobraziť položku „Odhlásiť sa“ v ponuke používateľa."
# description
#: ../data/org.gnome.shell.gschema.xml.in.in.h:14
msgid "This key overrides the automatic hiding of the 'Log out' menu item in single-user, single-session situations."
msgstr "Tento kľúč preváži automatické skrývanie položky „Odhlásiť sa“ v situáciách s jedným používateľom alebo jednou reláciou."
msgid ""
"This key overrides the automatic hiding of the 'Log out' menu item in single-"
"user, single-session situations."
msgstr ""
"Tento kľúč preváži automatické skrývanie položky „Odhlásiť sa“ v situáciách "
"s jedným používateľom alebo jednou reláciou."
# summary
#: ../data/org.gnome.shell.gschema.xml.in.in.h:15
msgid "Whether to remember password for mounting encrypted or remote filesystems"
msgstr "Určiť, či bude zapamätané heslo pre pripojenie zašifrovaných alebo prenosných súborových systémov"
msgstr ""
"Určiť, či bude zapamätané heslo pre pripojenie zašifrovaných alebo "
"prenosných súborových systémov"
# description
#: ../data/org.gnome.shell.gschema.xml.in.in.h:16
msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a 'Remember Password' checkbox will be present. This key sets the default state of the checkbox."
msgstr "Shell bude po pripojení zašifrovaného alebo prenosného súborového systému požadovať heslo. Ak bude možné toto heslo uložiť pre neskoršie použitie, zobrazí sa zaškrtávacie pole „Zapamätať heslo“. Tento kľúč nastaví predvolený stav zaškrtávacieho poľa."
msgid ""
"The shell will request a password when an encrypted device or a remote "
"filesystem is mounted. If the password can be saved for future use a "
"'Remember Password' checkbox will be present. This key sets the default "
"state of the checkbox."
msgstr ""
"Shell bude po pripojení zašifrovaného alebo prenosného súborového systému "
"požadovať heslo. Ak bude možné toto heslo uložiť pre neskoršie použitie, "
"zobrazí sa zaškrtávacie pole „Zapamätať heslo“. Tento kľúč nastaví "
"predvolený stav zaškrtávacieho poľa."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:17
msgid "Show the week date in the calendar"
@@ -165,8 +201,11 @@ msgid "Keybinding to open the \"Show Applications\" view"
msgstr "Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:22
msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr "Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“ v prehľade aktivít."
msgid ""
"Keybinding to open the \"Show Applications\" view of the Activities Overview."
msgstr ""
"Klávesová skratka na otvorenie pohľadu „Zobraziť aplikácie“ v prehľade "
"aktivít."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:23
msgid "Keybinding to open the overview"
@@ -194,8 +233,11 @@ msgstr "Klávesová skratka, s ktorou sa zamerá na aktívne oznámenia."
# summary
#: ../data/org.gnome.shell.gschema.xml.in.in.h:29
msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr "Klávesová skratka, ktorá pozastaví a znovu spustí všetky animácie(tween), pre ladiace účely"
msgid ""
"Keybinding that pauses and resumes all running tweens, for debugging purposes"
msgstr ""
"Klávesová skratka, ktorá pozastaví a znovu spustí všetky animácie(tween), "
"pre ladiace účely"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:30
msgid "Which keyboard to use"
@@ -212,21 +254,35 @@ msgstr "Obmedziť prepínač na aktuálny pracovný priestor."
# desc
#: ../data/org.gnome.shell.gschema.xml.in.in.h:33
msgid "If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all applications are included."
msgstr "Ak je true, iba aplikácie, ktoré majú okná na aktuálnom pracovnom priestore budú zobrazené v prepínači. Inak budú zahrnuté všetky aplikácie."
msgid ""
"If true, only applications that have windows on the current workspace are "
"shown in the switcher. Otherwise, all applications are included."
msgstr ""
"Ak je true, iba aplikácie, ktoré majú okná na aktuálnom pracovnom priestore "
"budú zobrazené v prepínači. Inak budú zahrnuté všetky aplikácie."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:34
msgid "The application icon mode."
msgstr "Režim ikonizácie aplikácií."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:35
msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'."
msgstr "Konfiguruje, ako sa majú zobraziť okná v prepínači. Platné možnosti sú „thumbnail-only“ (zobrazí miniatúru okna), „app-icon-only“ (zobrazí iba ikonu aplikácie) alebo „both“ (zobrazí oboje)."
msgid ""
"Configures how the windows are shown in the switcher. Valid possibilities "
"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-"
"only' (shows only the application icon) or 'both'."
msgstr ""
"Konfiguruje, ako sa majú zobraziť okná v prepínači. Platné možnosti sú "
"„thumbnail-only“ (zobrazí miniatúru okna), „app-icon-only“ (zobrazí iba "
"ikonu aplikácie) alebo „both“ (zobrazí oboje)."
# desc
#: ../data/org.gnome.shell.gschema.xml.in.in.h:36
msgid "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included."
msgstr "Ak je true, iba okná z aktuálneho pracovného priestoru budú zobrazené v prepínači. Inak budú zahrnuté všetky okná."
msgid ""
"If true, only windows from the current workspace are shown in the switcher. "
"Otherwise, all windows are included."
msgstr ""
"Ak je true, iba okná z aktuálneho pracovného priestoru budú zobrazené v "
"prepínači. Inak budú zahrnuté všetky okná."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:37
msgid "Attach modal dialog to the parent window"
@@ -234,7 +290,9 @@ msgstr "Pripojiť modálne dialógové okno k rodičovskému oknu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:38
msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell."
msgstr "Tento kľúč preváži kľúč v org.gnome.mutter po spustení Shellu prostredia GNOME."
msgstr ""
"Tento kľúč preváži kľúč v org.gnome.mutter po spustení Shellu prostredia "
"GNOME."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:39
msgid "Enable edge tiling when dropping windows on screen edges"
@@ -266,7 +324,10 @@ msgstr "Vyskytla sa chyba pri načítavaní dialógového okna nastavení pre %s
msgid "GNOME Shell Extensions"
msgstr "Rozšírenia pre Shell prostredia GNOME"
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 ../js/ui/status/network.js:916
#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:145
#: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452
#: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399
#: ../js/ui/status/network.js:916
msgid "Cancel"
msgstr "Zrušiť"
@@ -274,7 +335,8 @@ msgstr "Zrušiť"
msgid "Next"
msgstr "Ďalej"
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 ../js/ui/unlockDialog.js:59
#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403
#: ../js/ui/unlockDialog.js:59
msgid "Unlock"
msgstr "Odomknúť"
@@ -284,25 +346,26 @@ msgid "Sign In"
msgstr "Prihlásiť sa"
# button
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Vybrať reláciu"
# https://bugzilla.gnome.org/show_bug.cgi?id=659972
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Nie ste v zozname?"
#: ../js/gdm/loginDialog.js:826
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(napr., používateľ alebo %s)"
#: ../js/gdm/loginDialog.js:831 ../js/ui/components/networkAgent.js:269 ../js/ui/components/networkAgent.js:287
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:271
#: ../js/ui/components/networkAgent.js:289
msgid "Username: "
msgstr "Používateľské meno: "
#: ../js/gdm/loginDialog.js:1166
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Prihlasovacie okno"
@@ -314,19 +377,84 @@ msgstr "Chyba pri overovaní totožnosti"
msgid "(or swipe finger)"
msgstr "(alebo prejdite prstom)"
#: ../js/misc/util.js:115
#: ../js/misc/util.js:119
msgid "Command not found"
msgstr "Príkaz nebol nájdený"
#: ../js/misc/util.js:148
#: ../js/misc/util.js:152
msgid "Could not parse command:"
msgstr "Nepodarilo sa analyzovať príkaz:"
#: ../js/misc/util.js:156
#: ../js/misc/util.js:160
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "Spustenie „%s“ zlyhalo:"
#. Translators: Time in 24h format */
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/misc/util.js:197
msgid "Yesterday, %H%M"
msgstr "Včera o %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/misc/util.js:203
msgid "%A, %H%M"
msgstr "%A, %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/misc/util.js:209
msgid "%B %d, %H%M"
msgstr "%d. %B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/misc/util.js:215
msgid "%B %d %Y, %H%M"
msgstr "%d. %B %Y, %H:%M"
#. Translators: Time in 12h format */
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/misc/util.js:226
msgid "Yesterday, %l%M %p"
msgstr "Včera, %l:%M %p"
# DK: je tento format casu spravne? neviem zistit co ktore premenne znamenaju.
# ma sa v preklade zmenit "%e" na "%d" ?
# v ostatnych retazcoch je pouzite %e, tak to bude asi OK
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/misc/util.js:232
msgid "%A, %l%M %p"
msgstr "%A, %l:%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/misc/util.js:238
msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l:%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/misc/util.js:244
msgid "%B %d %Y, %l%M %p"
msgstr "%d. %B %Y, %l:%M %p"
# PM: Nie som si istý
# TRANSLATORS: this is the title of the wifi captive portal login
# window, until we know the title of the actual login page
@@ -336,31 +464,31 @@ msgstr "Spustenie „%s“ zlyhalo:"
msgid "Web Authentication Redirect"
msgstr "Presmerovanie webového overenia totožnosti"
#: ../js/ui/appDisplay.js:785
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Tu sa objavia často používané aplikácie"
#: ../js/ui/appDisplay.js:905
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Často používané"
#: ../js/ui/appDisplay.js:912
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Všetky"
#: ../js/ui/appDisplay.js:1840
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Nové okno"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Odstrániť z obľúbených"
#: ../js/ui/appDisplay.js:1874
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Pridať do obľúbených"
#: ../js/ui/appDisplay.js:1884
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Zobraziť podrobnosti"
@@ -374,7 +502,8 @@ msgstr "Program %s bol pridaný medzi obľúbené."
msgid "%s has been removed from your favorites."
msgstr "Program %s bol odstránený z obľúbených."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649 ../js/ui/status/system.js:337
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Nastavenia"
@@ -383,34 +512,11 @@ msgid "Change Background…"
msgstr "Zmeniť pozadie…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:52
#: ../js/ui/calendar.js:53
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:81
msgctxt "event list time"
msgid "All Day"
msgstr "Celý deň"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1596
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
# MČ: nemali by tu byť tiež jednopísmenové? Občas som videl v kolendároch aj také použiť a ďalej sú dvojpísmenové.
# PK: v grid to skratene bude, inac v liste to moze byt 2 pismenove, kedze aj v
# originale dali Su
@@ -419,86 +525,94 @@ msgstr "%l%M%p"
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:111
#: ../js/ui/calendar.js:82
msgctxt "grid sunday"
msgid "S"
msgstr "N"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:84
msgctxt "grid monday"
msgid "M"
msgstr "P"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:86
msgctxt "grid tuesday"
msgid "T"
msgstr "U"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:88
msgctxt "grid wednesday"
msgid "W"
msgstr "S"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:90
msgctxt "grid thursday"
msgid "T"
msgstr "Š"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:92
msgctxt "grid friday"
msgid "F"
msgstr "P"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:94
msgctxt "grid saturday"
msgid "S"
msgstr "S"
#: ../js/ui/calendar.js:590
#: ../js/ui/calendar.js:563
msgid "Previous month"
msgstr "Predchádzajúci mesiac"
#: ../js/ui/calendar.js:600
#: ../js/ui/calendar.js:573
msgid "Next month"
msgstr "Nasledujúci mesiac"
#: ../js/ui/calendar.js:807
#: ../js/ui/calendar.js:780
msgid "Week %V"
msgstr "%V. týždeň"
#: ../js/ui/calendar.js:1263
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:1182
msgctxt "event list time"
msgid "All Day"
msgstr "Celý deň"
#: ../js/ui/calendar.js:1288
msgid "Clear section"
msgstr "Vymazať úsek"
#: ../js/ui/calendar.js:1455
#: ../js/ui/calendar.js:1515
msgid "Events"
msgstr "Udalosti"
#: ../js/ui/calendar.js:1463
#: ../js/ui/calendar.js:1524
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %e. %B"
#: ../js/ui/calendar.js:1467
#: ../js/ui/calendar.js:1528
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %e. %B %Y"
#: ../js/ui/calendar.js:1560
#: ../js/ui/calendar.js:1613
msgid "Notifications"
msgstr "Oznámenia"
#: ../js/ui/calendar.js:1700
#: ../js/ui/calendar.js:1764
msgid "No Notifications"
msgstr "Žiadne oznámenia"
#: ../js/ui/calendar.js:1703
#: ../js/ui/calendar.js:1767
msgid "No Events"
msgstr "Žiadne udalosti"
@@ -524,72 +638,95 @@ msgstr "Heslo:"
msgid "Type again:"
msgstr "Zadajte znovu:"
#: ../js/ui/components/networkAgent.js:138 ../js/ui/status/network.js:277 ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
#: ../js/ui/components/networkAgent.js:140 ../js/ui/status/network.js:277
#: ../js/ui/status/network.js:359 ../js/ui/status/network.js:919
msgid "Connect"
msgstr "Pripojiť"
#: ../js/ui/components/networkAgent.js:231 ../js/ui/components/networkAgent.js:243 ../js/ui/components/networkAgent.js:271 ../js/ui/components/networkAgent.js:291 ../js/ui/components/networkAgent.js:301
#: ../js/ui/components/networkAgent.js:233
#: ../js/ui/components/networkAgent.js:245
#: ../js/ui/components/networkAgent.js:273
#: ../js/ui/components/networkAgent.js:293
#: ../js/ui/components/networkAgent.js:303
msgid "Password: "
msgstr "Heslo: "
#: ../js/ui/components/networkAgent.js:236
#: ../js/ui/components/networkAgent.js:238
msgid "Key: "
msgstr "Kľúč: "
#: ../js/ui/components/networkAgent.js:275
#: ../js/ui/components/networkAgent.js:277
msgid "Identity: "
msgstr "Identita: "
#: ../js/ui/components/networkAgent.js:277
#: ../js/ui/components/networkAgent.js:279
msgid "Private key password: "
msgstr "Heslo k súkromnému kľúču: "
#: ../js/ui/components/networkAgent.js:289
#: ../js/ui/components/networkAgent.js:291
msgid "Service: "
msgstr "Služba: "
#: ../js/ui/components/networkAgent.js:318
#: ../js/ui/components/networkAgent.js:320
#: ../js/ui/components/networkAgent.js:658
msgid "Authentication required by wireless network"
msgstr "Bezdrôtová sieť vyžaduje overenie totožnosti"
#: ../js/ui/components/networkAgent.js:319
#: ../js/ui/components/networkAgent.js:321
#: ../js/ui/components/networkAgent.js:659
#, javascript-format
msgid "Passwords or encryption keys are required to access the wireless network “%s”."
msgstr "Na prístup do bezdrôtovej siete „%s“ sú vyžadované heslá alebo šifrovacie kľúče."
msgid ""
"Passwords or encryption keys are required to access the wireless network "
"“%s”."
msgstr ""
"Na prístup do bezdrôtovej siete „%s“ sú vyžadované heslá alebo šifrovacie "
"kľúče."
#: ../js/ui/components/networkAgent.js:323
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:662
msgid "Wired 802.1X authentication"
msgstr "Overenie totožnosti k drôtovej sieti 802.1X"
#: ../js/ui/components/networkAgent.js:325
#: ../js/ui/components/networkAgent.js:327
msgid "Network name: "
msgstr "Názov siete: "
#: ../js/ui/components/networkAgent.js:330
#: ../js/ui/components/networkAgent.js:332
#: ../js/ui/components/networkAgent.js:666
msgid "DSL authentication"
msgstr "Overenie totožnosti k DSL"
#: ../js/ui/components/networkAgent.js:337
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:672
msgid "PIN code required"
msgstr "Požaduje sa kód PIN"
#: ../js/ui/components/networkAgent.js:338
#: ../js/ui/components/networkAgent.js:340
#: ../js/ui/components/networkAgent.js:673
msgid "PIN code is needed for the mobile broadband device"
msgstr "Pre zariadenie mobilnej širokopásmovej siete je potrebný kód PIN"
#: ../js/ui/components/networkAgent.js:339
#: ../js/ui/components/networkAgent.js:341
msgid "PIN: "
msgstr "PIN: "
#: ../js/ui/components/networkAgent.js:345
#: ../js/ui/components/networkAgent.js:348
#: ../js/ui/components/networkAgent.js:679
msgid "Mobile broadband network password"
msgstr "Heslo k mobilnej širokopásmovej sieti"
#: ../js/ui/components/networkAgent.js:346
#: ../js/ui/components/networkAgent.js:349
#: ../js/ui/components/networkAgent.js:663
#: ../js/ui/components/networkAgent.js:667
#: ../js/ui/components/networkAgent.js:680
#, javascript-format
msgid "A password is required to connect to “%s”."
msgstr "Na pripojenie k „%s“ sa požaduje heslo."
#: ../js/ui/components/networkAgent.js:647 ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Správca siete"
#: ../js/ui/components/polkitAgent.js:54
msgid "Authentication Required"
msgstr "Požaduje sa overenie totožnosti"
@@ -611,74 +748,9 @@ msgstr "Overiť totožnosť"
msgid "Sorry, that didn't work. Please try again."
msgstr "Prepáčte, ale nezabralo to. Skúste to, prosím, znova."
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:764 ../js/ui/dateMenu.js:210
msgid "%H%M"
msgstr "%H:%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:771
msgid "Yesterday, %H%M"
msgstr "Včera o %H:%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:778
msgid "%A, %H%M"
msgstr "%A, %H:%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:785
msgid "%B %d, %H%M"
msgstr "%d. %B, %H:%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:791
msgid "%B %d %Y, %H%M"
msgstr "%d. %B %Y, %H:%M"
#. Translators: Time in 12h format */
#: ../js/ui/components/telepathyClient.js:797 ../js/ui/dateMenu.js:213
msgid "%l%M %p"
msgstr "%l:%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:804
msgid "Yesterday, %l%M %p"
msgstr "Včera, %l:%M %p"
# DK: je tento format casu spravne? neviem zistit co ktore premenne znamenaju.
# ma sa v preklade zmenit "%e" na "%d" ?
# v ostatnych retazcoch je pouzite %e, tak to bude asi OK
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:811
msgid "%A, %l%M %p"
msgstr "%A, %l:%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:818
msgid "%B %d, %l%M %p"
msgstr "%d. %B, %l:%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:824
msgid "%B %d %Y, %l%M %p"
msgstr "%d. %B %Y, %l:%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:856
#: ../js/ui/components/telepathyClient.js:775
#, javascript-format
msgid "%s is now known as %s"
msgstr "Kontakt %s odteraz vystupuje ako %s"
@@ -688,11 +760,11 @@ msgid "Windows"
msgstr "Okná"
# tooltip
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Zobrazí aplikácie"
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Dok"
@@ -805,10 +877,14 @@ msgstr "Reštart a inštalácia aktualizácií"
#: ../js/ui/endSessionDialog.js:121
#, javascript-format
msgid "The system will automatically restart and install updates in %d second."
msgid_plural "The system will automatically restart and install updates in %d seconds."
msgstr[0] "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d send."
msgstr[1] "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundu."
msgstr[2] "Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundy."
msgid_plural ""
"The system will automatically restart and install updates in %d seconds."
msgstr[0] ""
"Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekúnd."
msgstr[1] ""
"Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundu."
msgstr[2] ""
"Systém sa automaticky reštartuje a nainštaluje aktualizácie o %d sekundy."
#: ../js/ui/endSessionDialog.js:127
msgctxt "button"
@@ -827,7 +903,9 @@ msgstr "Vypnúť po inštalácii aktualizácií"
#: ../js/ui/endSessionDialog.js:338
msgid "Running on battery power: please plug in before installing updates."
msgstr "Systém je napájaný z batérie. Pred inštaláciou aktualizácií pripojte napájací zdroj."
msgstr ""
"Systém je napájaný z batérie. Pred inštaláciou aktualizácií pripojte "
"napájací zdroj."
#: ../js/ui/endSessionDialog.js:355
msgid "Some applications are busy or have unsaved work."
@@ -858,10 +936,20 @@ msgstr "Inštalovať"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "Stiahnuť a nainštalovať „%s“ z extensions.gnome.org?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:580
msgid "Keyboard"
msgstr "Klávesnica"
#. translators: 'Hide' is a verb */
#: ../js/ui/legacyTray.js:59
#| msgid "Hide Text"
msgid "Hide tray"
msgstr "Skryť lištu"
#: ../js/ui/legacyTray.js:91
msgid "Status Icons"
msgstr "Stavová ikona"
#: ../js/ui/lookingGlass.js:643
msgid "No extensions installed"
msgstr "Žiadne nainštalované rozšírenia"
@@ -880,7 +968,8 @@ msgstr "Skryť chyby"
msgid "Show Errors"
msgstr "Zobraziť chyby"
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 ../js/ui/status/location.js:176
#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71
#: ../js/ui/status/location.js:176
msgid "Enabled"
msgstr "Povolené"
@@ -888,7 +977,8 @@ msgstr "Povolené"
#. because it's disabled by rfkill (airplane mode) */
#. translators:
#. * The device has been disabled
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179
#: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830
msgid "Disabled"
msgstr "Zakázané"
@@ -913,7 +1003,7 @@ msgstr "Zobraziť zdroj"
msgid "Web Page"
msgstr "Webová stránka"
#: ../js/ui/messageTray.js:2131
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Informácie o systéme"
@@ -934,21 +1024,21 @@ msgstr "Prehľad"
msgid "Type to search…"
msgstr "Zadajte text na vyhľadanie…"
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Ukončiť"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Aktivity"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Horná lišta"
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -1005,11 +1095,11 @@ msgstr "Nepodarilo sa uzamknúť obrazovku"
msgid "Lock was blocked by an application"
msgstr "Uzamknutie bolo zablokované aplikáciou"
#: ../js/ui/search.js:609
#: ../js/ui/search.js:616
msgid "Searching…"
msgstr "Hľadá sa…"
#: ../js/ui/search.js:611
#: ../js/ui/search.js:618
msgid "No results."
msgstr "Žiadne výsledky."
@@ -1088,7 +1178,10 @@ msgstr "Veľký text"
msgid "Bluetooth"
msgstr "Bluetooth"
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178 ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282 ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91 ../js/ui/status/rfkill.js:118
#: ../js/ui/status/bluetooth.js:51 ../js/ui/status/network.js:178
#: ../js/ui/status/network.js:360 ../js/ui/status/network.js:1282
#: ../js/ui/status/network.js:1393 ../js/ui/status/rfkill.js:91
#: ../js/ui/status/rfkill.js:118
msgid "Turn Off"
msgstr "Vypnúť"
@@ -1113,7 +1206,7 @@ msgid "Brightness"
msgstr "Jas"
# menu item
#: ../js/ui/status/keyboard.js:599
#: ../js/ui/status/keyboard.js:603
msgid "Show Keyboard Layout"
msgstr "Zobraziť rozloženie klávesnice"
@@ -1143,7 +1236,8 @@ msgid "<unknown>"
msgstr "<neznáme>"
# DK: pripojenie, zariadenie
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308 ../js/ui/status/network.js:1512
#: ../js/ui/status/network.js:457 ../js/ui/status/network.js:1308
#: ../js/ui/status/network.js:1512
msgid "Off"
msgstr "Vypnuté"
@@ -1284,10 +1378,6 @@ msgstr "Nastavenia VPN"
msgid "VPN"
msgstr "VPN"
#: ../js/ui/status/network.js:1657
msgid "Network Manager"
msgstr "Správca siete"
#: ../js/ui/status/network.js:1697
msgid "Activation of network connection failed"
msgstr "Aktivácia pripojenia k sieti zlyhala"
@@ -1524,6 +1614,14 @@ msgstr "Heslo nemôže byť prázdne"
msgid "Authentication dialog was dismissed by the user"
msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
#~ msgctxt "event list time"
#~ msgid "%H%M"
#~ msgstr "%H%M"
#~ msgctxt "event list time"
#~ msgid "%l%M%p"
#~ msgstr "%l%M%p"
#~ msgid "Invitation"
#~ msgstr "Pozvánka"
@@ -1614,7 +1712,8 @@ msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
#~ msgid "This account is already connected to the server"
#~ msgstr "Tento účet je už pripojený k serveru"
#~ 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 "Pripojenie bolo nahradené novým, ktoré používa rovnaký zdroj"
#~ msgid "The account already exists on the server"
@@ -1626,11 +1725,18 @@ msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
#~ msgid "Certificate has been revoked"
#~ msgstr "Certifikát bol zrušený"
#~ msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak"
#~ msgstr "Šifrovací algoritmus používaný certifikátom nie je bezpečný alebo je kryptograficky slabý"
#~ msgid ""
#~ "Certificate uses an insecure cipher algorithm or is cryptographically weak"
#~ msgstr ""
#~ "Šifrovací algoritmus používaný certifikátom nie je bezpečný alebo je "
#~ "kryptograficky slabý"
#~ msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library"
#~ msgstr "Dĺžka certifikátu servera, alebo hĺbka reťazca certifikátu servera presahuje limit stanovený kryptografickou knižnicou."
#~ msgid ""
#~ "The length of the server certificate, or the depth of the server "
#~ "certificate chain, exceed the limits imposed by the cryptography library"
#~ msgstr ""
#~ "Dĺžka certifikátu servera, alebo hĺbka reťazca certifikátu servera "
#~ "presahuje limit stanovený kryptografickou knižnicou."
#~ msgid "Internal error"
#~ msgstr "Vnútorná chyba"
@@ -1740,17 +1846,31 @@ msgstr "Dialógové okno overenia totožnosti bolo zatvorené používateľom"
#~ msgstr "Maximálna úroveň presnosti určenia polohy."
#~ msgid ""
#~ "Configures the maximum level of location accuracy applications are allowed to see. Valid options are 'off' (disable location tracking), 'country', 'city', 'neighborhood', 'street', and 'exact' (typically requires GPS receiver). Please keep in mind that "
#~ "this only controls what GeoClue will allow applications to see and they can find user's location on their own using network resources (albeit with street-level accuracy at best)."
#~ "Configures the maximum level of location accuracy applications are "
#~ "allowed to see. Valid options are 'off' (disable location tracking), "
#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically "
#~ "requires GPS receiver). Please keep in mind that this only controls what "
#~ "GeoClue will allow applications to see and they can find user's location "
#~ "on their own using network resources (albeit with street-level accuracy "
#~ "at best)."
#~ msgstr ""
#~ "Konfiguruje maximálnu úroveň presnosti určenia polohy, ktorú aplikácie môžu získať. Povolené sú voľby 'off' (zakáže sledovanie polohy), 'country' (krajina), 'city' (mesto), 'neighborhood' (okolie), 'street' (ulica), 'exact' (presne, pri čom je "
#~ "štandardne požadované použitie prijímača GPS). Uvedomte si, že toto nastavenie ovplyvňuje povolenia GeoClue a aplikácie môžu tiež získať údaje o polohe použitím sieťových prostriedkov (aj keď prinajlepšom s presnosťou na ulicu)."
#~ "Konfiguruje maximálnu úroveň presnosti určenia polohy, ktorú aplikácie "
#~ "môžu získať. Povolené sú voľby 'off' (zakáže sledovanie polohy), "
#~ "'country' (krajina), 'city' (mesto), 'neighborhood' (okolie), "
#~ "'street' (ulica), 'exact' (presne, pri čom je štandardne požadované "
#~ "použitie prijímača GPS). Uvedomte si, že toto nastavenie ovplyvňuje "
#~ "povolenia GeoClue a aplikácie môžu tiež získať údaje o polohe použitím "
#~ "sieťových prostriedkov (aj keď prinajlepšom s presnosťou na ulicu)."
#~ msgid "Arrangement of buttons on the titlebar"
#~ msgstr "Usporiadanie tlačidiel na titulku okna"
#~ msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell."
#~ msgstr "Tento kľúč preváži kľúč v org.gnome.desktop.wm.preferences po spustení Shellu prostredia GNOME."
#~ msgid ""
#~ "This key overrides the key in org.gnome.desktop.wm.preferences when "
#~ "running GNOME Shell."
#~ msgstr ""
#~ "Tento kľúč preváži kľúč v org.gnome.desktop.wm.preferences po spustení "
#~ "Shellu prostredia GNOME."
#~ msgid "Extension"
#~ msgstr "Rozšírenie"

950
po/sl.po

File diff suppressed because it is too large Load Diff

972
po/sr.po

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

1417
po/tg.po

File diff suppressed because it is too large Load Diff

617
po/tr.po
View File

@@ -14,8 +14,8 @@ msgstr ""
"Project-Id-Version: gnome-shell\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-"
"shell&keywords=I18N+L10N&component=general\n"
"POT-Creation-Date: 2015-02-21 20:56+0000\n"
"PO-Revision-Date: 2015-02-21 23:53+0200\n"
"POT-Creation-Date: 2015-03-10 20:43+0000\n"
"PO-Revision-Date: 2015-03-11 00:54+0200\n"
"Last-Translator: Muhammet Kara <muhammetk@gmail.com>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\n"
@@ -31,9 +31,10 @@ msgid "System"
msgstr "Sistem"
#: ../data/50-gnome-shell-system.xml.in.h:2
#| msgid "Show the message tray"
msgid "Show the message list"
msgstr "İleti listesini göster"
#| msgid "%d new notification"
#| msgid_plural "%d new notifications"
msgid "Show the notification list"
msgstr "Bildirim listesini göster"
#: ../data/50-gnome-shell-system.xml.in.h:3
msgid "Focus the active notification"
@@ -210,12 +211,14 @@ msgid "Keybinding to open the Activities Overview."
msgstr "Etkinlikler Genel Görünümünü açmak için klavye kısayolu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:25
msgid "Keybinding to toggle the visibility of the message tray"
msgstr "Mesaj tepsisinin görünürlüğünü değiştirmek için klavye kısayolu"
#| msgid "Keybinding to toggle the visibility of the message tray"
msgid "Keybinding to toggle the visibility of the notification list"
msgstr "Bildirim listesinin görünürlüğünü değiştirmek için klavye kısayolu"
#: ../data/org.gnome.shell.gschema.xml.in.in.h:26
msgid "Keybinding to toggle the visibility of the message tray."
msgstr "Mesaj tepsisinin görünürlüğünü değiştirmek için klavye kısayolu."
#| msgid "Keybinding to toggle the visibility of the message tray."
msgid "Keybinding to toggle the visibility of the notification list."
msgstr "Bildirim listesinin görünürlüğünü değiştirmek için klavye kısayolu."
#: ../data/org.gnome.shell.gschema.xml.in.in.h:27
msgid "Keybinding to focus the active notification"
@@ -339,25 +342,25 @@ msgctxt "button"
msgid "Sign In"
msgstr "Giriş"
#: ../js/gdm/loginDialog.js:276
#: ../js/gdm/loginDialog.js:280
msgid "Choose Session"
msgstr "Oturum Seçin"
#: ../js/gdm/loginDialog.js:417
#: ../js/gdm/loginDialog.js:421
msgid "Not listed?"
msgstr "Listede yok mu?"
#: ../js/gdm/loginDialog.js:822
#: ../js/gdm/loginDialog.js:830
#, javascript-format
msgid "(e.g., user or %s)"
msgstr "(örneğin, kullanıcı veya %s)"
#: ../js/gdm/loginDialog.js:827 ../js/ui/components/networkAgent.js:269
#: ../js/gdm/loginDialog.js:835 ../js/ui/components/networkAgent.js:269
#: ../js/ui/components/networkAgent.js:287
msgid "Username: "
msgstr "Kullanıcı Adı: "
#: ../js/gdm/loginDialog.js:1159
#: ../js/gdm/loginDialog.js:1170
msgid "Login Window"
msgstr "Oturum Açma Penceresi"
@@ -369,50 +372,112 @@ msgstr "Kimlik doğrulama hatası"
msgid "(or swipe finger)"
msgstr "(ya da parmak izi okutun)"
#: ../js/misc/util.js:115
#: ../js/misc/util.js:119
msgid "Command not found"
msgstr "Komut bulunamadı"
#: ../js/misc/util.js:148
#: ../js/misc/util.js:152
msgid "Could not parse command:"
msgstr "Komut işlenemedi:"
#: ../js/misc/util.js:156
#: ../js/misc/util.js:160
#, javascript-format
msgid "Execution of “%s” failed:"
msgstr "“%s” çalıştırılması başarısız:"
#. Translators: Time in 24h format */
#: ../js/misc/util.js:191
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/misc/util.js:197
msgid "Yesterday, %H%M"
msgstr "Dün, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/misc/util.js:203
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/misc/util.js:209
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/misc/util.js:215
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/misc/util.js:220
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/misc/util.js:226
msgid "Yesterday, %l%M %p"
msgstr "Dün, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/misc/util.js:232
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/misc/util.js:238
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/misc/util.js:244
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. TRANSLATORS: this is the title of the wifi captive portal login
#. * window, until we know the title of the actual login page */
#: ../js/portalHelper/main.js:85
msgid "Web Authentication Redirect"
msgstr "Web Kimlik Doğrulama Yönlendirmesi"
#: ../js/ui/appDisplay.js:785
#: ../js/ui/appDisplay.js:792
msgid "Frequently used applications will appear here"
msgstr "Sık kullanılan uygulamalar burada yer alacak"
#: ../js/ui/appDisplay.js:905
#: ../js/ui/appDisplay.js:912
msgid "Frequent"
msgstr "Sık sık"
#: ../js/ui/appDisplay.js:912
#: ../js/ui/appDisplay.js:919
msgid "All"
msgstr "Hepsi"
#: ../js/ui/appDisplay.js:1840
#: ../js/ui/appDisplay.js:1850
msgid "New Window"
msgstr "Yeni Pencere"
#: ../js/ui/appDisplay.js:1868 ../js/ui/dash.js:289
#: ../js/ui/appDisplay.js:1878 ../js/ui/dash.js:291
msgid "Remove from Favorites"
msgstr "Sık Kullanılanlardan Çıkar"
#: ../js/ui/appDisplay.js:1874
#: ../js/ui/appDisplay.js:1884
msgid "Add to Favorites"
msgstr "Sık Kullanılanlara Ekle"
#: ../js/ui/appDisplay.js:1884
#: ../js/ui/appDisplay.js:1894
msgid "Show Details"
msgstr "Ayrıntıları Göster"
@@ -426,7 +491,7 @@ msgstr "%s sık kullanılanlarınıza eklendi."
msgid "%s has been removed from your favorites."
msgstr "%s sık kullanılanlarınızdan çıkarıldı."
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:649
#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:650
#: ../js/ui/status/system.js:337
msgid "Settings"
msgstr "Ayarlar"
@@ -436,7 +501,7 @@ msgid "Change Background…"
msgstr "Arkaplanı Değiştir…"
#. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */
#: ../js/ui/calendar.js:52
#: ../js/ui/calendar.js:49
msgctxt "calendar-no-work"
msgid "06"
msgstr "06"
@@ -444,104 +509,97 @@ msgstr "06"
#. Translators: Shown in calendar event list for all day events
#. * Keep it short, best if you can use less then 10 characters
#. */
#: ../js/ui/calendar.js:81
#: ../js/ui/calendar.js:78
msgctxt "event list time"
msgid "All Day"
msgstr "Tüm Gün"
#. Translators: Shown in calendar event list, if 24h format,
#. \u2236 is a ratio character, similar to : */
#: ../js/ui/calendar.js:88 ../js/ui/calendar.js:1562
msgctxt "event list time"
msgid "%H%M"
msgstr "%H%M"
#. Translators: Shown in calendar event list, if 12h format,
#. \u2236 is a ratio character, similar to : and \u2009 is
#. a thin space */
#: ../js/ui/calendar.js:97
msgctxt "event list time"
msgid "%l%M%p"
msgstr "%l%M%p"
#. Translators: Calendar grid abbreviation for Sunday.
#. *
#. * NOTE: These grid abbreviations are always shown together
#. * and in order, e.g. "S M T W T F S".
#. */
#: ../js/ui/calendar.js:111
#: ../js/ui/calendar.js:93
msgctxt "grid sunday"
msgid "S"
msgstr "P"
#. Translators: Calendar grid abbreviation for Monday */
#: ../js/ui/calendar.js:113
#: ../js/ui/calendar.js:95
msgctxt "grid monday"
msgid "M"
msgstr "P"
#. Translators: Calendar grid abbreviation for Tuesday */
#: ../js/ui/calendar.js:115
#: ../js/ui/calendar.js:97
msgctxt "grid tuesday"
msgid "T"
msgstr "S"
#. Translators: Calendar grid abbreviation for Wednesday */
#: ../js/ui/calendar.js:117
#: ../js/ui/calendar.js:99
msgctxt "grid wednesday"
msgid "W"
msgstr "Ç"
#. Translators: Calendar grid abbreviation for Thursday */
#: ../js/ui/calendar.js:119
#: ../js/ui/calendar.js:101
msgctxt "grid thursday"
msgid "T"
msgstr "P"
#. Translators: Calendar grid abbreviation for Friday */
#: ../js/ui/calendar.js:121
#: ../js/ui/calendar.js:103
msgctxt "grid friday"
msgid "F"
msgstr "C"
#. Translators: Calendar grid abbreviation for Saturday */
#: ../js/ui/calendar.js:123
#: ../js/ui/calendar.js:105
msgctxt "grid saturday"
msgid "S"
msgstr "C"
#: ../js/ui/calendar.js:590
#: ../js/ui/calendar.js:572
msgid "Previous month"
msgstr "Önceki ay"
#: ../js/ui/calendar.js:600
#: ../js/ui/calendar.js:582
msgid "Next month"
msgstr "Gelecek ay"
#: ../js/ui/calendar.js:789
msgid "Week %V"
msgstr "%V. Hafta"
#: ../js/ui/calendar.js:1245
msgid "Clear section"
msgstr "Bölümü temizle"
#: ../js/ui/calendar.js:1423
#: ../js/ui/calendar.js:1459
msgid "Events"
msgstr "Olaylar"
#: ../js/ui/calendar.js:1431
#: ../js/ui/calendar.js:1467
msgctxt "calendar heading"
msgid "%A, %B %d"
msgstr "%A, %d %B"
#: ../js/ui/calendar.js:1435
#: ../js/ui/calendar.js:1471
msgctxt "calendar heading"
msgid "%A, %B %d, %Y"
msgstr "%A, %d %B, %Y"
#: ../js/ui/calendar.js:1665
#| msgid "Notifications"
#: ../js/ui/calendar.js:1563
#| msgid "No Notifications"
msgid "Notifications"
msgstr "Bildirimler"
#: ../js/ui/calendar.js:1714
msgid "No Notifications"
msgstr "Bildirim Yok"
#: ../js/ui/calendar.js:1668
#: ../js/ui/calendar.js:1717
msgid "No Events"
msgstr "Olay Yok"
@@ -661,288 +719,29 @@ msgstr "Doğrula"
msgid "Sorry, that didn't work. Please try again."
msgstr "Üzgünüm ama işe yaramadı. Lütfen tekrar deneyin."
#: ../js/ui/components/telepathyClient.js:243
msgid "Invitation"
msgstr "Davet"
#: ../js/ui/components/telepathyClient.js:303
msgid "Call"
msgstr "Çağrı"
#: ../js/ui/components/telepathyClient.js:319
msgid "File Transfer"
msgstr "Dosya Aktarımı"
#: ../js/ui/components/telepathyClient.js:423
msgid "Chat"
msgstr "Sohbet"
#. Translators: Time in 24h format */
#: ../js/ui/components/telepathyClient.js:936 ../js/ui/dateMenu.js:209
msgid "%H%M"
msgstr "%H%M"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 24h format. i.e. "Yesterday, 14:30" */
#: ../js/ui/components/telepathyClient.js:943
msgid "Yesterday, %H%M"
msgstr "Dün, %H%M"
#. Translators: this is the week day name followed by a time
#. string in 24h format. i.e. "Monday, 14:30" */
#: ../js/ui/components/telepathyClient.js:950
msgid "%A, %H%M"
msgstr "%A, %H%M"
#. Translators: this is the month name and day number
#. followed by a time string in 24h format.
#. i.e. "May 25, 14:30" */
#: ../js/ui/components/telepathyClient.js:957
msgid "%B %d, %H%M"
msgstr "%d %B, %H%M"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 24h format.
#. i.e. "May 25 2012, 14:30" */
#: ../js/ui/components/telepathyClient.js:963
msgid "%B %d %Y, %H%M"
msgstr "%d %B %Y, %H%M"
#. Translators: Time in 12h format */
#: ../js/ui/components/telepathyClient.js:969 ../js/ui/dateMenu.js:212
msgid "%l%M %p"
msgstr "%l%M %p"
#. Translators: this is the word "Yesterday" followed by a
#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:976
msgid "Yesterday, %l%M %p"
msgstr "Dün, %l%M %p"
#. Translators: this is the week day name followed by a time
#. string in 12h format. i.e. "Monday, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:983
msgid "%A, %l%M %p"
msgstr "%A, %l%M %p"
#. Translators: this is the month name and day number
#. followed by a time string in 12h format.
#. i.e. "May 25, 2:30 pm" */
#: ../js/ui/components/telepathyClient.js:990
msgid "%B %d, %l%M %p"
msgstr "%d %B, %l%M %p"
#. Translators: this is the month name, day number, year
#. number followed by a time string in 12h format.
#. i.e. "May 25 2012, 2:30 pm"*/
#: ../js/ui/components/telepathyClient.js:996
msgid "%B %d %Y, %l%M %p"
msgstr "%d %B %Y, %l%M %p"
#. Translators: this is the other person changing their old IM name to their new
#. IM name. */
#: ../js/ui/components/telepathyClient.js:1028
#: ../js/ui/components/telepathyClient.js:772
#, javascript-format
msgid "%s is now known as %s"
msgstr "%s, şimdi %s olarak biliniyor"
#. translators: argument is a room name like
#. * room@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1132
#, javascript-format
msgid "Invitation to %s"
msgstr "%s'e Davet"
#. translators: first argument is the name of a contact and the second
#. * one the name of a room. "Alice is inviting you to join room@jabber.org
#. * for example. */
#: ../js/ui/components/telepathyClient.js:1136
#, javascript-format
msgid "%s is inviting you to join %s"
msgstr "%s, sizi %s'e katılmanız için davet ediyor"
#: ../js/ui/components/telepathyClient.js:1140
#: ../js/ui/components/telepathyClient.js:1175
#: ../js/ui/components/telepathyClient.js:1207
#: ../js/ui/components/telepathyClient.js:1273
msgid "Decline"
msgstr "Reddet"
#: ../js/ui/components/telepathyClient.js:1146
#: ../js/ui/components/telepathyClient.js:1213
#: ../js/ui/components/telepathyClient.js:1278
msgid "Accept"
msgstr "Kabul Et"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1165
#, javascript-format
msgid "Video call from %s"
msgstr "%s'den görüntülü arama"
#. translators: argument is a contact name like Alice for example. */
#: ../js/ui/components/telepathyClient.js:1168
#, javascript-format
msgid "Call from %s"
msgstr "%s'den çağrı"
#. translators: this is a button label (verb), not a noun */
#: ../js/ui/components/telepathyClient.js:1182
msgid "Answer"
msgstr "Cevapla"
#. To translators: The first parameter is
#. * the contact's alias and the second one is the
#. * file name. The string will be something
#. * like: "Alice is sending you test.ogg"
#. */
#: ../js/ui/components/telepathyClient.js:1203
#, javascript-format
msgid "%s is sending you %s"
msgstr "%s, size %s dosyasını gönderiyor"
#. To translators: The parameter is the contact's alias */
#: ../js/ui/components/telepathyClient.js:1230
#, javascript-format
msgid "%s would like permission to see when you are online"
msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
#: ../js/ui/components/telepathyClient.js:1321
msgid "Network error"
msgstr "Ağ hatası"
#: ../js/ui/components/telepathyClient.js:1323
msgid "Authentication failed"
msgstr "Kimlik doğrulama başarısız"
#: ../js/ui/components/telepathyClient.js:1325
msgid "Encryption error"
msgstr "Şifreleme hatası"
#: ../js/ui/components/telepathyClient.js:1327
msgid "Certificate not provided"
msgstr "Sertifika sağlanmamış"
#: ../js/ui/components/telepathyClient.js:1329
msgid "Certificate untrusted"
msgstr "Sertifika güvenilmez"
#: ../js/ui/components/telepathyClient.js:1331
msgid "Certificate expired"
msgstr "Sertifikanın süresi dolmuş"
#: ../js/ui/components/telepathyClient.js:1333
msgid "Certificate not activated"
msgstr "Sertifika etkinleştirilmemiş"
#: ../js/ui/components/telepathyClient.js:1335
msgid "Certificate hostname mismatch"
msgstr "Sertifikanın makine adı uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1337
msgid "Certificate fingerprint mismatch"
msgstr "Sertifikanın parmak izi uyuşmuyor"
#: ../js/ui/components/telepathyClient.js:1339
msgid "Certificate self-signed"
msgstr "Sertifika kendinden-imzalı"
#: ../js/ui/components/telepathyClient.js:1341
msgid "Status is set to offline"
msgstr "Durum çevrimdıına ayarlı"
#: ../js/ui/components/telepathyClient.js:1343
msgid "Encryption is not available"
msgstr "Şifreleme kullanılabilir değil"
#: ../js/ui/components/telepathyClient.js:1345
msgid "Certificate is invalid"
msgstr "Sertifika geçersiz"
#: ../js/ui/components/telepathyClient.js:1347
msgid "Connection has been refused"
msgstr "Bağlantı reddedildi"
#: ../js/ui/components/telepathyClient.js:1349
msgid "Connection can't be established"
msgstr "Bağlantı kurulamıyor"
#: ../js/ui/components/telepathyClient.js:1351
msgid "Connection has been lost"
msgstr "Bağlantı koptu"
#: ../js/ui/components/telepathyClient.js:1353
msgid "This account is already connected to the server"
msgstr "Bu hesap zaten sunucuya bağlı"
#: ../js/ui/components/telepathyClient.js:1355
msgid ""
"Connection has been replaced by a new connection using the same resource"
msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
#: ../js/ui/components/telepathyClient.js:1357
msgid "The account already exists on the server"
msgstr "Sunucuda böyle bir hesap zaten var"
#: ../js/ui/components/telepathyClient.js:1359
msgid "Server is currently too busy to handle the connection"
msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
#: ../js/ui/components/telepathyClient.js:1361
msgid "Certificate has been revoked"
msgstr "Sertifika hükümsüz kılınmış"
#: ../js/ui/components/telepathyClient.js:1363
msgid ""
"Certificate uses an insecure cipher algorithm or is cryptographically weak"
msgstr ""
"Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da kriptografik "
"olarak zayıf"
#: ../js/ui/components/telepathyClient.js:1365
msgid ""
"The length of the server certificate, or the depth of the server certificate "
"chain, exceed the limits imposed by the cryptography library"
msgstr ""
"Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin "
"derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
#: ../js/ui/components/telepathyClient.js:1367
msgid "Internal error"
msgstr "İç hata"
#. translators: argument is the account name, like
#. * name@jabber.org for example. */
#: ../js/ui/components/telepathyClient.js:1377
#, javascript-format
msgid "Unable to connect to %s"
msgstr "%s bağlantısı sağlanamadı"
#: ../js/ui/components/telepathyClient.js:1382
msgid "View account"
msgstr "Hesabı göster"
#: ../js/ui/components/telepathyClient.js:1419
msgid "Unknown reason"
msgstr "Bilinmeyen sebep"
#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155
msgid "Windows"
msgstr "Pencereler"
#: ../js/ui/dash.js:250 ../js/ui/dash.js:291
#: ../js/ui/dash.js:252 ../js/ui/dash.js:293
msgid "Show Applications"
msgstr "Uygulamaları Göster"
#: ../js/ui/dash.js:451
#: ../js/ui/dash.js:453
msgid "Dash"
msgstr "Konsol"
#. Translators: This is the date format to use when the calendar popup is
#. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
#. */
#: ../js/ui/dateMenu.js:72
#| msgid "%A %B %e, %Y"
#: ../js/ui/dateMenu.js:73
msgid "%B %e %Y"
msgstr "%e %B %Y"
@@ -950,17 +749,15 @@ msgstr "%e %B %Y"
#. * below the time in the shell; it should combine the weekday and the
#. * date, e.g. "Tuesday February 17 2015".
#. */
#: ../js/ui/dateMenu.js:79
#| msgid "%A %B %e, %Y"
#: ../js/ui/dateMenu.js:80
msgid "%A %B %e %Y"
msgstr "%e %B %Y %A"
#: ../js/ui/dateMenu.js:159
#: ../js/ui/dateMenu.js:160
msgid "Add world clocks…"
msgstr "Dünya saatlerini ekle…"
#: ../js/ui/dateMenu.js:160
#| msgid "Open Clocks"
#: ../js/ui/dateMenu.js:161
msgid "World Clocks"
msgstr "Dünya Saatleri"
@@ -1097,7 +894,7 @@ msgstr "Kur"
msgid "Download and install “%s” from extensions.gnome.org?"
msgstr "extensions.gnome.org adresinden “%s” indirilip kurulsun mu?"
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:577
#: ../js/ui/keyboard.js:706 ../js/ui/status/keyboard.js:576
msgid "Keyboard"
msgstr "Klavye"
@@ -1153,7 +950,7 @@ msgstr "Kaynağı Görüntüle"
msgid "Web Page"
msgstr "Web Sayfası"
#: ../js/ui/messageTray.js:2092
#: ../js/ui/messageTray.js:2133
msgid "System Information"
msgstr "Sistem Bilgisi"
@@ -1173,21 +970,21 @@ msgstr "Genel Görünüm"
msgid "Type to search…"
msgstr "Aramak için buraya yazın..."
#: ../js/ui/panel.js:351
#: ../js/ui/panel.js:352
msgid "Quit"
msgstr "Kapat"
#. Translators: If there is no suitable word for "Activities"
#. in your language, you can use the word for "Overview". */
#: ../js/ui/panel.js:403
#: ../js/ui/panel.js:404
msgid "Activities"
msgstr "Etkinlikler"
#: ../js/ui/panel.js:754
#: ../js/ui/panel.js:755
msgid "Top Bar"
msgstr "Tepe Çubuğu"
#: ../js/ui/popupMenu.js:288
#: ../js/ui/popupMenu.js:289
msgid "toggle-switch-us"
msgstr "toggle-switch-intl"
@@ -1199,41 +996,41 @@ msgstr "Komut Girin"
msgid "Close"
msgstr "Kapat"
#: ../js/ui/runDialog.js:277
#: ../js/ui/runDialog.js:281
msgid "Restarting…"
msgstr "Yeniden başlatılıyor..."
#. Translators: This is a time format for a date in
#. long format */
#: ../js/ui/screenShield.js:88
#: ../js/ui/screenShield.js:85
msgid "%A, %B %d"
msgstr "%d %B %A"
#: ../js/ui/screenShield.js:147
#: ../js/ui/screenShield.js:144
#, javascript-format
msgid "%d new message"
msgid_plural "%d new messages"
msgstr[0] "%d yeni mesaj"
#: ../js/ui/screenShield.js:149
#: ../js/ui/screenShield.js:146
#, javascript-format
msgid "%d new notification"
msgid_plural "%d new notifications"
msgstr[0] "%d yeni bildirim"
#: ../js/ui/screenShield.js:434 ../js/ui/status/system.js:345
#: ../js/ui/screenShield.js:432 ../js/ui/status/system.js:345
msgid "Lock"
msgstr "Kilitle"
#: ../js/ui/screenShield.js:670
#: ../js/ui/screenShield.js:668
msgid "GNOME needs to lock the screen"
msgstr "GNOME'un ekranı kilitlemesi gerekiyor"
#: ../js/ui/screenShield.js:797 ../js/ui/screenShield.js:1273
#: ../js/ui/screenShield.js:795 ../js/ui/screenShield.js:1271
msgid "Unable to lock"
msgstr "Kilitlenemedi"
#: ../js/ui/screenShield.js:798 ../js/ui/screenShield.js:1274
#: ../js/ui/screenShield.js:796 ../js/ui/screenShield.js:1272
msgid "Lock was blocked by an application"
msgstr "Kilitleme bir uygulama tarafından engellendi"
@@ -1342,7 +1139,7 @@ msgstr "Bağlı Değil"
msgid "Brightness"
msgstr "Parlaklık"
#: ../js/ui/status/keyboard.js:600
#: ../js/ui/status/keyboard.js:599
msgid "Show Keyboard Layout"
msgstr "Klavye Düzenini Göster"
@@ -1740,6 +1537,146 @@ msgstr "Parola boş bırakılamaz"
msgid "Authentication dialog was dismissed by the user"
msgstr "Kimlik doğrulama penceresi kullanıcı tarafından kapatıldı"
#~| msgid "Show the message tray"
#~ msgid "Show the message list"
#~ msgstr "İleti listesini göster"
#~ msgctxt "event list time"
#~ msgid "%H%M"
#~ msgstr "%H%M"
#~ msgctxt "event list time"
#~ msgid "%l%M%p"
#~ msgstr "%l%M%p"
#~ msgid "Invitation"
#~ msgstr "Davet"
#~ msgid "Call"
#~ msgstr "Çağrı"
#~ msgid "File Transfer"
#~ msgstr "Dosya Aktarımı"
#~ msgid "Chat"
#~ msgstr "Sohbet"
#~ msgid "Invitation to %s"
#~ msgstr "%s'e Davet"
#~ msgid "%s is inviting you to join %s"
#~ msgstr "%s, sizi %s'e katılmanız için davet ediyor"
#~ msgid "Decline"
#~ msgstr "Reddet"
#~ msgid "Accept"
#~ msgstr "Kabul Et"
#~ msgid "Video call from %s"
#~ msgstr "%s'den görüntülü arama"
#~ msgid "Call from %s"
#~ msgstr "%s'den çağrı"
#~ msgid "Answer"
#~ msgstr "Cevapla"
#~ msgid "%s is sending you %s"
#~ msgstr "%s, size %s dosyasını gönderiyor"
#~ msgid "%s would like permission to see when you are online"
#~ msgstr "%s, ne zaman çevrimiçi olduğunuzu görmek için izin istiyor"
#~ msgid "Network error"
#~ msgstr "Ağ hatası"
#~ msgid "Authentication failed"
#~ msgstr "Kimlik doğrulama başarısız"
#~ msgid "Encryption error"
#~ msgstr "Şifreleme hatası"
#~ msgid "Certificate not provided"
#~ msgstr "Sertifika sağlanmamış"
#~ msgid "Certificate untrusted"
#~ msgstr "Sertifika güvenilmez"
#~ msgid "Certificate expired"
#~ msgstr "Sertifikanın süresi dolmuş"
#~ msgid "Certificate not activated"
#~ msgstr "Sertifika etkinleştirilmemiş"
#~ msgid "Certificate hostname mismatch"
#~ msgstr "Sertifikanın makine adı uyuşmuyor"
#~ msgid "Certificate fingerprint mismatch"
#~ msgstr "Sertifikanın parmak izi uyuşmuyor"
#~ msgid "Certificate self-signed"
#~ msgstr "Sertifika kendinden-imzalı"
#~ msgid "Status is set to offline"
#~ msgstr "Durum çevrimdıına ayarlı"
#~ msgid "Encryption is not available"
#~ msgstr "Şifreleme kullanılabilir değil"
#~ msgid "Certificate is invalid"
#~ msgstr "Sertifika geçersiz"
#~ msgid "Connection has been refused"
#~ msgstr "Bağlantı reddedildi"
#~ msgid "Connection can't be established"
#~ msgstr "Bağlantı kurulamıyor"
#~ msgid "Connection has been lost"
#~ msgstr "Bağlantı koptu"
#~ msgid "This account is already connected to the server"
#~ msgstr "Bu hesap zaten sunucuya bağlı"
#~ msgid ""
#~ "Connection has been replaced by a new connection using the same resource"
#~ msgstr "Bağlantı, aynı kaynağı kullanan yeni bir bağlantı ile değiştirildi"
#~ msgid "The account already exists on the server"
#~ msgstr "Sunucuda böyle bir hesap zaten var"
#~ msgid "Server is currently too busy to handle the connection"
#~ msgstr "Sunucu, şu anda bağlantıyı işleyemeyecek kadar meşgul"
#~ msgid "Certificate has been revoked"
#~ msgstr "Sertifika hükümsüz kılınmış"
#~ msgid ""
#~ "Certificate uses an insecure cipher algorithm or is cryptographically weak"
#~ msgstr ""
#~ "Sertifika güvensiz bir şifreleme algoritması kullanıyor ya da "
#~ "kriptografik olarak zayıf"
#~ msgid ""
#~ "The length of the server certificate, or the depth of the server "
#~ "certificate chain, exceed the limits imposed by the cryptography library"
#~ msgstr ""
#~ "Sunucu sertifikasının uzunluğu ya da sunucu sertifikası zincirinin "
#~ "derinliği, şifreleme kütüphanesi tarafından koyulan sınırlarııyor"
#~ msgid "Internal error"
#~ msgstr "İç hata"
#~ msgid "Unable to connect to %s"
#~ msgstr "%s bağlantısı sağlanamadı"
#~ msgid "View account"
#~ msgstr "Hesabı göster"
#~ msgid "Unknown reason"
#~ msgstr "Bilinmeyen sebep"
#~ msgctxt "list sunday"
#~ msgid "Su"
#~ msgstr "Pa"

715
po/uk.po

File diff suppressed because it is too large Load Diff

1021
po/vi.po

File diff suppressed because it is too large Load Diff

View File

@@ -80,6 +80,7 @@ typedef struct
typedef struct
{
char *id;
char *uid;
char *rid;
char *backend_name;
@@ -348,6 +349,9 @@ calendar_appointment_free (CalendarAppointment *appointment)
g_slist_free (appointment->occurrences);
appointment->occurrences = NULL;
g_free (appointment->id);
appointment->id = NULL;
g_free (appointment->uid);
appointment->uid = NULL;
@@ -376,6 +380,8 @@ calendar_appointment_init (CalendarAppointment *appointment,
ECalClient *cal,
icaltimezone *default_zone)
{
const char *source_uid;
appointment->uid = get_ical_uid (ical);
appointment->rid = get_ical_rid (ical);
appointment->backend_name = get_source_backend_name (cal);
@@ -387,6 +393,16 @@ calendar_appointment_init (CalendarAppointment *appointment,
appointment->is_all_day = get_ical_is_all_day (ical,
appointment->start_time,
default_zone);
/* While the UID is usually enough to identify an event, only the triple
* of (source,UID,RID) is fully unambiguous; neither may contain '\n',
* so we can safely use it to create a unique ID from the triple
*/
source_uid = e_source_get_uid (e_client_get_source (E_CLIENT (cal)));
appointment->id = g_strdup_printf ("%s\n%s\n%s",
source_uid,
appointment->uid,
appointment->rid ? appointment->rid : "");
}
static icaltimezone *
@@ -916,7 +932,7 @@ handle_method_call (GDBusConnection *connection,
g_variant_builder_init (&extras_builder, G_VARIANT_TYPE ("a{sv}"));
g_variant_builder_add (&builder,
"(sssbxxa{sv})",
a->uid,
a->id,
a->summary != NULL ? a->summary : "",
a->description != NULL ? a->description : "",
(gboolean) a->is_all_day,

View File

@@ -216,18 +216,10 @@ shell_app_create_icon_texture (ShellApp *app,
ret = st_icon_new ();
st_icon_set_icon_size (ST_ICON (ret), size);
st_icon_set_fallback_icon_name (ST_ICON (ret), "application-x-executable");
icon = g_app_info_get_icon (G_APP_INFO (app->info));
if (icon != NULL)
{
st_icon_set_gicon (ST_ICON (ret), icon);
}
else
{
icon = g_themed_icon_new ("application-x-executable");
st_icon_set_gicon (ST_ICON (ret), icon);
g_object_unref (icon);
}
st_icon_set_gicon (ST_ICON (ret), icon);
return ret;
}

View File

@@ -38,7 +38,8 @@ enum
PROP_GICON,
PROP_ICON_NAME,
PROP_ICON_SIZE
PROP_ICON_SIZE,
PROP_FALLBACK_ICON_NAME
};
G_DEFINE_TYPE (StIcon, st_icon, ST_TYPE_WIDGET)
@@ -56,6 +57,7 @@ struct _StIconPrivate
gint prop_icon_size; /* icon size set as property */
gint theme_icon_size; /* icon size from theme node */
gint icon_size; /* icon size we are using */
GIcon *fallback_gicon;
CoglPipeline *shadow_pipeline;
float shadow_width;
@@ -90,6 +92,10 @@ st_icon_set_property (GObject *gobject,
st_icon_set_icon_size (icon, g_value_get_int (value));
break;
case PROP_FALLBACK_ICON_NAME:
st_icon_set_fallback_icon_name (icon, g_value_get_string (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
@@ -118,6 +124,10 @@ st_icon_get_property (GObject *gobject,
g_value_set_int (value, st_icon_get_icon_size (icon));
break;
case PROP_FALLBACK_ICON_NAME:
g_value_set_string (value, st_icon_get_fallback_icon_name (icon));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
break;
@@ -143,6 +153,7 @@ st_icon_dispose (GObject *gobject)
}
g_clear_object (&priv->gicon);
g_clear_object (&priv->fallback_gicon);
g_clear_pointer (&priv->shadow_pipeline, cogl_object_unref);
g_clear_pointer (&priv->shadow_spec, st_shadow_unref);
@@ -238,6 +249,12 @@ st_icon_class_init (StIconClass *klass)
-1, G_MAXINT, -1,
ST_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_ICON_SIZE, pspec);
pspec = g_param_spec_string ("fallback-icon-name",
"Fallback icon name",
"A fallback icon name",
NULL, ST_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_FALLBACK_ICON_NAME, pspec);
}
static void
@@ -357,14 +374,20 @@ st_icon_update (StIcon *icon)
g_object_get (context, "scale-factor", &scale, NULL);
cache = st_texture_cache_get_default ();
if (priv->gicon)
{
priv->pending_texture = st_texture_cache_load_gicon (cache,
theme_node,
priv->gicon,
priv->icon_size,
scale);
}
if (priv->gicon != NULL)
priv->pending_texture = st_texture_cache_load_gicon (cache,
theme_node,
priv->gicon,
priv->icon_size,
scale);
if (priv->pending_texture == NULL && priv->fallback_gicon != NULL)
priv->pending_texture = st_texture_cache_load_gicon (cache,
theme_node,
priv->fallback_gicon,
priv->icon_size,
scale);
if (priv->pending_texture)
{
@@ -569,3 +592,47 @@ st_icon_set_icon_size (StIcon *icon,
g_object_notify (G_OBJECT (icon), "icon-size");
}
}
const gchar *
st_icon_get_fallback_icon_name (StIcon *icon)
{
StIconPrivate *priv;
g_return_val_if_fail (ST_IS_ICON (icon), NULL);
priv = icon->priv;
if (priv->fallback_gicon && G_IS_THEMED_ICON (priv->fallback_gicon))
return g_themed_icon_get_names (G_THEMED_ICON (priv->fallback_gicon)) [0];
else
return NULL;
}
void
st_icon_set_fallback_icon_name (StIcon *icon,
const gchar *fallback_icon_name)
{
StIconPrivate *priv = icon->priv;
GIcon *gicon = NULL;
g_return_if_fail (ST_IS_ICON (icon));
if (fallback_icon_name != NULL)
gicon = g_themed_icon_new_with_default_fallbacks (fallback_icon_name);
if (g_icon_equal (priv->fallback_gicon, gicon)) /* do nothing */
{
if (gicon)
g_object_unref (gicon);
return;
}
if (priv->fallback_gicon)
g_object_unref (priv->fallback_gicon);
priv->fallback_gicon = gicon;
g_object_notify (G_OBJECT (icon), "fallback-icon-name");
st_icon_update (icon);
}

View File

@@ -94,6 +94,9 @@ void st_icon_set_icon_size (StIcon *icon, gint size);
void st_icon_set_gicon (StIcon *icon, GIcon *gicon);
GIcon *st_icon_get_gicon (StIcon *icon);
void st_icon_set_fallback_icon_name (StIcon *icon, const gchar *icon_name);
const gchar *st_icon_get_fallback_icon_name (StIcon *icon);
G_END_DECLS
#endif /* _ST_ICON */