From 2ee4f57395154fd6601b6f9e17f803c6bc47f776 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Thu, 3 Mar 2011 18:10:32 +0100 Subject: [PATCH 01/74] WindowAttentionHandler: Fix notify callback leak Keep track of the connected handlers and disconnect them on when destroying the source. https://bugzilla.gnome.org/show_bug.cgi?id=640781 --- js/ui/windowAttentionHandler.js | 43 +++++++++++++++++---------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js index b740d8def..fd80cd9cc 100644 --- a/js/ui/windowAttentionHandler.js +++ b/js/ui/windowAttentionHandler.js @@ -15,12 +15,11 @@ function WindowAttentionHandler() { WindowAttentionHandler.prototype = { _init : function() { this._startupIds = {}; - this._sources = {}; + this._tracker = Shell.WindowTracker.get_default(); + this._tracker.connect('startup-sequence-changed', Lang.bind(this, this._onStartupSequenceChanged)); let display = global.screen.get_display(); display.connect('window-demands-attention', Lang.bind(this, this._onWindowDemandsAttention)); - let tracker = Shell.WindowTracker.get_default(); - tracker.connect('startup-sequence-changed', Lang.bind(this, this._onStartupSequenceChanged)); }, _onStartupSequenceChanged : function(tracker) { @@ -57,28 +56,16 @@ WindowAttentionHandler.prototype = { if (!window || window.has_focus() || window.is_skip_taskbar()) return; - let tracker = Shell.WindowTracker.get_default(); - let app = tracker.get_window_app(window); - let appId = app.get_id(); - - let source = this._sources[appId]; - if (source == null) { - source = new Source(app, window); - this._sources[appId] = source; - Main.messageTray.add(source); - source.connect('destroy', Lang.bind(this, function() { delete this._sources[appId]; })); - } + let app = this._tracker.get_window_app(window); + let source = new Source(app, window); + Main.messageTray.add(source); let notification = new MessageTray.Notification(source, this._getTitle(app, window), this._getBanner(app, window)); source.notify(notification); - window.connect('notify::title', Lang.bind(this, function(win) { - notification.update(this._getTitle(app, win), this._getBanner(app, win)); - })); - window.connect('notify::demands-attention', Lang.bind(this, function() { source.destroy(); })); - window.connect('focus', Lang.bind(this, function() { source.destroy(); })); - window.connect('unmanaged', Lang.bind(this, function() { source.destroy(); })); - + source.signalIDs.push(window.connect('notify::title', Lang.bind(this, function(win) { + notification.update(this._getTitle(app, win), this._getBanner(app, win)); + }))); } }; @@ -94,6 +81,20 @@ Source.prototype = { this._window = window; this._app = app; this._setSummaryIcon(this.createNotificationIcon()); + + this.signalIDs = []; + this.signalIDs.push(this._window.connect('notify::demands-attention', Lang.bind(this, function() { this.destroy(); }))); + this.signalIDs.push(this._window.connect('focus', Lang.bind(this, function() { this.destroy(); }))); + this.signalIDs.push(this._window.connect('unmanaged', Lang.bind(this, function() { this.destroy(); }))); + + this.connect('destroy', Lang.bind(this, this._onDestroy)); + }, + + _onDestroy : function() { + for(let i = 0; i < this.signalIDs.length; i++) { + this._window.disconnect(this.signalIDs[i]); + } + this.signalIDs = []; }, createNotificationIcon : function() { From 0065e2cfac7c59d0f55d37332f76aa1a50a49a42 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 4 Mar 2011 08:57:46 +0100 Subject: [PATCH 02/74] xdndHandler: Correctly disconnect the window group visibility handler --- js/ui/xdndHandler.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/js/ui/xdndHandler.js b/js/ui/xdndHandler.js index d33f8afce..fe8633abd 100644 --- a/js/ui/xdndHandler.js +++ b/js/ui/xdndHandler.js @@ -4,7 +4,6 @@ const Clutter = imports.gi.Clutter; const Lang = imports.lang; const Shell = imports.gi.Shell; const Signals = imports.signals; -const Mainloop = imports.mainloop; const DND = imports.ui.dnd; function XdndHandler() { @@ -41,9 +40,14 @@ XdndHandler.prototype = { // Called when the user cancels the drag (i.e release the button) _onLeave: function() { if (this._windowGroupVisibilityHandlerId != 0) { - Mainloop.source_remove(this._windowGroupVisibilityHandlerId); + global.window_group.disconnect(this._windowGroupVisibilityHandlerId); this._windowGroupVisibilityHandlerId = 0; } + if (this._cursorWindowClone) { + this._cursorWindowClone.destroy(); + this._cursorWindowClone = null; + } + this.emit('drag-end'); }, @@ -77,8 +81,7 @@ XdndHandler.prototype = { // Make sure that the clone has the same position as the source this._cursorWindowClone.add_constraint(constraint_position); } else { - if (this._cursorWindowClone) - { + if (this._cursorWindowClone) { this._cursorWindowClone.destroy(); this._cursorWindowClone = null; } From 47e2c4ae6c2b8e1ad7b7c4039c334751e75c5023 Mon Sep 17 00:00:00 2001 From: Shankar Prasad Date: Fri, 4 Mar 2011 17:31:55 +0530 Subject: [PATCH 03/74] updated kn translations --- po/kn.po | 237 +++++++++++++++++++++++++++++-------------------------- 1 file changed, 124 insertions(+), 113 deletions(-) diff --git a/po/kn.po b/po/kn.po index 21340b8bd..422b38e60 100644 --- a/po/kn.po +++ b/po/kn.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "cgi?product=gnome-shell&component=general\n" "POT-Creation-Date: 2011-02-21 01:21+0000\n" -"PO-Revision-Date: 2011-02-21 12:52+0530\n" +"PO-Revision-Date: 2011-03-04 17:30+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" "MIME-Version: 1.0\n" @@ -20,59 +20,65 @@ msgstr "" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" -msgstr "" +msgstr "GNOME ಶೆಲ್‌" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" -msgstr "" +msgstr "ವಿಂಡೊ ನಿರ್ವಹಣೆ ಹಾಗು ಅನ್ವಯವನ್ನು ಆರಂಭಿಸುವಿಕೆ" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." msgstr "" +"Alt-F2 ಸಂವಾದಚೌಕವನ್ನು ಬಳಸಿಕೊಂಡು ಆಂತರಿಕ ದೋಷ ನಿವಾರಣೆ ಹಾಗು ಮೇಲ್ವಿಚಾರಣೆ " +"ಉಪಕರಣಗಳನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಅನುವುಮಾಡಿಕೊಡುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" +"Alt-F2 ಇಂದ ವಿಕಸನೆಗಾರರಿಗೆ ಹಾಗು ಪರೀಕ್ಷಕರಿಗೆ ಉಪಯುಕ್ತವಾಗುವ ಆಂತರಿಕ ಉಪಕರಣಗಳನ್ನು " +"ಶಕ್ತಗೊಳಿಸುತ್ತದೆ" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" -msgstr "" +msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳನ್ನು ಶೇಖರಿಸಿಡಲು ಬಳಸಲಾಗುವ ಕಡತ ವಿಸ್ತರಣೆಗಳು" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." -msgstr "" +msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳನ್ನು ರೆಕಾರ್ಡು ಮಾಡಲು ಬಳಸಲಾಗುವ ಫ್ರೇಮ್‌ದರಗಳು." #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" +"GNOME Shell extensions have a uuid property; this key lists extensions which " +"should not be loaded." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" -msgstr "" +msgstr "ಆಜ್ಞೆಯ ಇತಿಹಾಸ (Alt-F2) ಸಂವಾದಚೌಕ" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for the looking glass dialog" -msgstr "" +msgstr "ನೋಡುವ ಗಾಜಿನ ಸಂವಾದ ಚೌಕಕ್ಕಾಗಿನ ಇತಿಹಾಸ" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." -msgstr "" +msgstr "true ಆದಲ್ಲಿ, ದಿನಾಂಕವನ್ನು ಸಮಯದ ಜೊತೆಗೆ ಗಡಿಯಾರದಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." -msgstr "" +msgstr "true ಆದಲ್ಲಿ, ಸಮಯದಲ್ಲಿ ಸೆಕೆಂಡುಗಳನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." -msgstr "" +msgstr "true ಆದಲ್ಲಿ, ಕ್ಯಾಲೆಂಡರಿನಲ್ಲಿ ISO ವಾರದ ದಿನವನ್ನು ತೋರಿಸುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" -msgstr "" +msgstr "ಮೆಚ್ಚಿನ ಅನ್ವಯಗಳಿಗಾಗಿನ ಗಣಕತೆರೆ ಕಡತ IDಗಳ ಪಟ್ಟಿ" #: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format @@ -91,15 +97,15 @@ msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" -msgstr "" +msgstr "ಗಡಿಯಾರದಲ್ಲಿ ದಿನಾಂಕವನ್ನು ತೋರಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" -msgstr "" +msgstr "ಕ್ಯಾಲೆಂಡರಿನಲ್ಲಿ ವಾರದ ದಿನವನ್ನು ತೋರಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" -msgstr "" +msgstr "ಸಮಯದೊಂದಿಗೆ ಸೆಕೆಂಡುಗಳನ್ನು ತೋರಿಸು" #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" @@ -122,7 +128,7 @@ msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" -msgstr "" +msgstr "ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟ್‍ ಅನ್ನು ಎನ್ಕೋಡ್ ಮಾಡಲು ಬಳಸಲಾಗುವ gstreamer ಪೈಪ್‌ಲೈನ್" #: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" @@ -134,43 +140,43 @@ msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" -msgstr "" +msgstr "ಅಶಕ್ತಗೊಳಿಸಬೇಕಿರುವ Uuidಗಳ ವಿಸ್ತರಣೆಗಳು" #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" -msgstr "" +msgstr "ಅನ್ವಯದ ಬಳಕೆಯ ಬಗೆಗಿನ ಅಂಕಿಅಂಶಗಳನ್ನು ಸಂಗ್ರಹಿಸಬೇಕೆ" #: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "disabled OpenSearch providers" -msgstr "" +msgstr "ಅಶಕ್ತಗೊಳಿಸಲಾದ OpenSearch ಒದಗಿಸುವವರು" #: ../js/misc/util.js:86 msgid "Command not found" -msgstr "" +msgstr "ಆಜ್ಞೆಯು ಕಂಡು ಬಂದಿಲ್ಲ" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:113 msgid "Could not parse command:" -msgstr "" +msgstr "ಆಜ್ಞೆಯನ್ನು ಪಾರ್ಸ್ ಮಾಡಲಾಗಿಲ್ಲ:" #: ../js/misc/util.js:135 msgid "No such application" -msgstr "" +msgstr "ಅಂತಹ ಯಾವುದೆ ಅನ್ವಯವಿಲ್ಲ" #: ../js/misc/util.js:148 #, c-format msgid "Execution of '%s' failed:" -msgstr "" +msgstr "'%s' ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವಲ್ಲಿ ವಿಫಲಗೊಂಡಿದೆ:" #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:174 msgid "All" -msgstr "" +msgstr "ಎಲ್ಲಾ" #: ../js/ui/appDisplay.js:261 msgid "APPLICATIONS" -msgstr "" +msgstr "APPLICATIONS" #: ../js/ui/appDisplay.js:291 msgid "PREFERENCES" @@ -182,21 +188,21 @@ msgstr "ಹೊಸ ವಿಂಡೊ" #: ../js/ui/appDisplay.js:555 msgid "Remove from Favorites" -msgstr "" +msgstr "ಎಲ್ಲಾ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳನ್ನು ತೆಗೆದುಹಾಕು" #: ../js/ui/appDisplay.js:556 msgid "Add to Favorites" -msgstr "" +msgstr "ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಗೆ ಸೇರಿಸು" #: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." -msgstr "" +msgstr "%s ಅನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳನ್ನು ಸೇರಿಸಲಾಗಿದೆ." #: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." -msgstr "" +msgstr "%s ಅನ್ನು ನಿಮ್ಮ ಅಚ್ಚುಮೆಚ್ಚಿನವುಗಳಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ." #. Translators: Shown in calendar event list for all day events #. * Keep it short, best if you can use less then 10 characters @@ -314,7 +320,7 @@ msgstr "ಶ" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:701 msgid "Nothing Scheduled" -msgstr "" +msgstr "ಯಾವುದೂ ಅನುಸೂಚಿತಗೊಂಡಿಲ್ಲ" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:717 @@ -350,11 +356,11 @@ msgstr "ತೆಗೆದು ಹಾಕು" #: ../js/ui/dateMenu.js:93 msgid "Date and Time Settings" -msgstr "" +msgstr "ದಿನಾಂಕ ಹಾಗು ಸಮಯದ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/dateMenu.js:112 msgid "Open Calendar" -msgstr "" +msgstr "ಕ್ಯಾಲೆಂಡರನ್ನು ತೆರೆ" #. Translators: This is the time format with date used #. in 24-hour mode. @@ -405,72 +411,76 @@ msgstr "%A %B %e, %Y" #: ../js/ui/docDisplay.js:19 msgid "RECENT ITEMS" -msgstr "" +msgstr "RECENT ITEMS" #: ../js/ui/endSessionDialog.js:63 #, c-format msgid "Log Out %s" -msgstr "" +msgstr "%s ಇಂದ ನಿರ್ಗಮಿಸಿ" #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 msgid "Log Out" -msgstr "" +msgstr "ನಿರ್ಗಮಿಸಿ" #: ../js/ui/endSessionDialog.js:65 msgid "Click Log Out to quit these applications and log out of the system." msgstr "" +"ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ವ್ಯವಸ್ಥೆಯಿಂದ ನಿರ್ಗಮಿಸಲು ನಿರ್ಗಮಿಸು ಅನ್ನು ಒತ್ತಿ." #: ../js/ui/endSessionDialog.js:66 #, c-format msgid "%s will be logged out automatically in %d seconds." -msgstr "" +msgstr "%s ರವರು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸಲ್ಪಡುತ್ತಾರೆ." #: ../js/ui/endSessionDialog.js:67 #, c-format msgid "You will be logged out automatically in %d seconds." -msgstr "" +msgstr "ನೀವು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ಗಮಿಸಲ್ಪಡುತ್ತಾರೆ." #: ../js/ui/endSessionDialog.js:68 msgid "Logging out of the system." -msgstr "" +msgstr "ವ್ಯವಸ್ಥೆಯಿಂದ ನಿರ್ಗಮಿಸಲಾಗುತ್ತಿದೆ." #: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 msgid "Shut Down" -msgstr "" +msgstr "ಸ್ಥಗಿತಗೊಳಿಸು" #: ../js/ui/endSessionDialog.js:75 msgid "Click Shut Down to quit these applications and shut down the system." msgstr "" +"ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ನಂತರ ವ್ಯವಸ್ಥೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಲು ಸ್ಥಗಿತಗೊಳಿಸು ಅನ್ನು " +"ಒತ್ತಿ." #: ../js/ui/endSessionDialog.js:76 #, c-format msgid "The system will shut down automatically in %d seconds." -msgstr "" +msgstr "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸ್ಥಗಿತಗೊಳ್ಳುತ್ತದೆ." #: ../js/ui/endSessionDialog.js:77 msgid "Shutting down the system." -msgstr "" +msgstr "ವ್ಯವಸ್ಥೆಯನ್ನು ಸ್ಥಗಿತಗೊಳಿಸಲಾಗುತ್ತಿದೆ." #: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 msgid "Restart" -msgstr "" +msgstr "ಮರಳಿ ಆರಂಭಿಸು" #: ../js/ui/endSessionDialog.js:85 msgid "Click Restart to quit these applications and restart the system." msgstr "" +"ಈ ಅನ್ವಯದಿಂದ ನಿರ್ಗಮಿಸಿ ಗಣಕವನ್ನು ಮರಳಿ ಅರಂಭಿಸಲು ಮರಳಿ ಆರಂಭಿಸು ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡಿ." #: ../js/ui/endSessionDialog.js:86 #, c-format msgid "The system will restart automatically in %d seconds." -msgstr "" +msgstr "ವ್ಯವಸ್ಥೆಯು %d ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮರಳಿ ಆರಂಭಗೊಳ್ಳುತ್ತದೆ." #: ../js/ui/endSessionDialog.js:87 msgid "Restarting the system." -msgstr "" +msgstr "ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯನ್ನು ಮರಳಿ ಆರಂಭಿಸಲಾಗುತ್ತಿದೆ." #: ../js/ui/endSessionDialog.js:395 msgid "Confirm" -msgstr "" +msgstr "ಖಚಿತಪಡಿಸಿ" #: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 msgid "Cancel" @@ -478,17 +488,17 @@ msgstr "ರದ್ದು ಮಾಡು" #: ../js/ui/lookingGlass.js:587 msgid "No extensions installed" -msgstr "" +msgstr "ಯಾವುದು ವಿಸ್ತರಣೆಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಲಾಗಿಲ್ಲ" #: ../js/ui/lookingGlass.js:624 msgid "Enabled" -msgstr "" +msgstr "ಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ" #. translators: #. * The device has been disabled #: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" -msgstr "" +msgstr "ಅಶಕ್ತಗೊಳಿಸಲಾಗಿದೆ" #: ../js/ui/lookingGlass.js:628 msgid "Error" @@ -496,11 +506,11 @@ msgstr "ದೋಷ" #: ../js/ui/lookingGlass.js:630 msgid "Out of date" -msgstr "" +msgstr "ಹಳೆಯದಾಗಿದೆ" #: ../js/ui/lookingGlass.js:655 msgid "View Source" -msgstr "" +msgstr "ಆಕರವನ್ನು ನೋಡಿ" #: ../js/ui/lookingGlass.js:661 msgid "Web Page" @@ -526,26 +536,26 @@ msgstr "ಅನ್ವಯಗಳು" #: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" -msgstr "" +msgstr "%s ಇಂದ ನಿರ್ಗಮಿಸು" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". #: ../js/ui/panel.js:612 msgid "Activities" -msgstr "" +msgstr "ಚಟುವಟಿಕೆಗಳು" #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" -msgstr "" +msgstr "'%s' ಅನ್ನು ಅವರೋಹಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ" #: ../js/ui/placeDisplay.js:125 msgid "Retry" -msgstr "" +msgstr "ಮರಳಿ ಆರಂಭಿಸು" #: ../js/ui/placeDisplay.js:165 msgid "Connect to..." -msgstr "" +msgstr "ಇದಕ್ಕೆ ಸಂಪರ್ಕ ಜೋಡಿಸಿ..." #: ../js/ui/placeDisplay.js:409 msgid "PLACES & DEVICES" @@ -558,7 +568,7 @@ msgstr "PLACES & DEVICES" #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:506 msgid "toggle-switch-us" -msgstr "" +msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:201 msgid "Please enter a command:" @@ -570,7 +580,7 @@ msgstr "ಹುಡುಕಲಾಗುತ್ತಿದೆ..." #: ../js/ui/searchDisplay.js:309 msgid "No matching results." -msgstr "" +msgstr "ಯಾವುದೆ ಫಲಿತಾಂಶಗಳು ತಾಳೆಯಾಗಿಲ್ಲ." #: ../js/ui/statusMenu.js:102 msgid "Available" @@ -590,7 +600,7 @@ msgstr "ವ್ಯವಸ್ಥೆಯ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/statusMenu.js:126 msgid "Lock Screen" -msgstr "" +msgstr "ತೆರೆಯನ್ನು ಲಾಕ್ ಮಾಡಿ" #: ../js/ui/statusMenu.js:130 msgid "Switch User" @@ -598,7 +608,7 @@ msgstr "ಬಳಕೆದಾರನನ್ನು ಬದಲಿಸು" #: ../js/ui/statusMenu.js:135 msgid "Log Out..." -msgstr "" +msgstr "ನಿರ್ಗಮಿಸಿ..." #. This is temporarily removed, see #. http://bugzilla.gnome.org/show_bug.cgi?id=636680 @@ -608,43 +618,43 @@ msgstr "" #. this.menu.addMenuItem(item); #: ../js/ui/statusMenu.js:149 msgid "Shut Down..." -msgstr "" +msgstr "ಸ್ಥಗಿತಗೊಳಿಸಿ..." #: ../js/ui/status/accessibility.js:81 msgid "Zoom" -msgstr "" +msgstr "ಗಾತ್ರ ಬದಲಾವಣೆ" #: ../js/ui/status/accessibility.js:88 msgid "Screen Reader" -msgstr "" +msgstr "ತೆರೆ ಓದುಗ" #: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" -msgstr "" +msgstr "ತೆರೆ ಕೀಲಿಮಣೆ" #: ../js/ui/status/accessibility.js:96 msgid "Visual Alerts" -msgstr "" +msgstr "ದೃಶ್ಯರೂಪದ ಎಚ್ಚರಿಕೆಗಳು" #: ../js/ui/status/accessibility.js:99 msgid "Sticky Keys" -msgstr "" +msgstr "ಸ್ಟಿಕಿ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:102 msgid "Slow Keys" -msgstr "" +msgstr "ನಿಧಾನ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:105 msgid "Bounce Keys" -msgstr "" +msgstr "ಪುಟಿಯುವ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:108 msgid "Mouse Keys" -msgstr "" +msgstr "ಮೌಸ್‌ ಕೀಲಿಗಳು" #: ../js/ui/status/accessibility.js:112 msgid "Universal Access Settings" -msgstr "" +msgstr "ಜಾಗತಿಕ ನಿಲುಕಣೆ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/accessibility.js:164 msgid "High Contrast" @@ -652,7 +662,7 @@ msgstr "" #: ../js/ui/status/accessibility.js:206 msgid "Large Text" -msgstr "" +msgstr "ದೊಡ್ಡ ಪಠ್ಯ" #: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 #: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 @@ -666,11 +676,11 @@ msgstr "ಗೋಚರಿಕೆ" #: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." -msgstr "" +msgstr "ಸಾಧನಕ್ಕೆ ಕಡತಗಳನ್ನು ಕಳುಹಿಸಿ..." #: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." -msgstr "" +msgstr "ಒಂದು ಹೊಸ ಸಾಧನವನ್ನು ಸಿದ್ಧಗೊಳಿಸಿ..." #: ../js/ui/status/bluetooth.js:95 msgid "Bluetooth Settings" @@ -690,12 +700,12 @@ msgstr "ಕಡತಗಳಿಗಾಗಿ ವೀಕ್ಷಿಸು..." #: ../js/ui/status/bluetooth.js:242 msgid "Error browsing device" -msgstr "" +msgstr "ಸಾಧನವನ್ನು ವೀಕ್ಷಿಸುವಲ್ಲಿ ದೋಷ" #: ../js/ui/status/bluetooth.js:243 #, c-format msgid "The requested device cannot be browsed, error is '%s'" -msgstr "" +msgstr "ಮನವಿ ಸಲ್ಲಿಸಲಾದ ಸಾಧನವನ್ನು ವೀಕ್ಷಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ, ದೋಷವು '%s' ಆಗಿದೆ" #: ../js/ui/status/bluetooth.js:251 msgid "Keyboard Settings" @@ -712,20 +722,20 @@ msgstr "ಧ್ವನಿಯ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" -msgstr "" +msgstr "%s ಇಂದ ದೃಢೀಕರಣ ದೋಷ" #: ../js/ui/status/bluetooth.js:378 #, c-format msgid "Device %s wants access to the service '%s'" -msgstr "" +msgstr "%s ಎಂಬ ಸಾಧನಕ್ಕಾಗಿ '%s' ಎಂಬ ಸೇವೆಯನ್ನು ನಿಲುಕಿಸಿಕೊಳ್ಳಲು ಬಯಸುತ್ತಿದೆ" #: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" -msgstr "" +msgstr "ಯಾವಾಗಲೂ ಅನುಮತಿಸು" #: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" -msgstr "" +msgstr "ಈ ಬಾರಿ ಮಾತ್ರ ಅನುಮತಿಸು" #: ../js/ui/status/bluetooth.js:382 msgid "Reject" @@ -734,17 +744,17 @@ msgstr "ತಿರಸ್ಕರಿಸು" #: ../js/ui/status/bluetooth.js:412 #, c-format msgid "Pairing confirmation for %s" -msgstr "" +msgstr "%s ಗಾಗಿ ಪೇರಿಂಗ್ ಖಚಿತಪಡಿಕೆ" #: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 #, c-format msgid "Device %s wants to pair with this computer" -msgstr "" +msgstr "%s ಎನ್ನುವ ಸಾಧನದೊಂದಿಗೆ ಸಂಪರ್ಕ ಜೋಡಿಸಲು ಬಯಸುತ್ತಿದೆ" #: ../js/ui/status/bluetooth.js:419 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." -msgstr "" +msgstr "'%s' ಎನ್ನುವ PIN ಸಾಧನದಲ್ಲಿರುವುದಕ್ಕೆ ತಾಳೆಯಾಗುತ್ತದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸಿ." #: ../js/ui/status/bluetooth.js:421 msgid "Matches" @@ -761,7 +771,7 @@ msgstr "" #: ../js/ui/status/bluetooth.js:453 msgid "Please enter the PIN mentioned on the device." -msgstr "" +msgstr "ದಯವಿಟ್ಟು ಸಾಧನದಲ್ಲಿ ಸೂಚಿಸಿರುವ PIN ಅನ್ನು ನಮೂದಿಸಿ." #: ../js/ui/status/bluetooth.js:469 msgid "OK" @@ -769,51 +779,51 @@ msgstr "ಸರಿ" #: ../js/ui/status/keyboard.js:72 msgid "Localization Settings" -msgstr "" +msgstr "ಲೋಕಲೈಸೇಶನ್ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/power.js:85 msgid "Power Settings" -msgstr "" +msgstr "ವಿದ್ಯುಚ್ಛಕ್ತಿ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/power.js:112 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ಗಂಟೆ ಬಾಕಿ ಇದೆ" +msgstr[1] "%d ಗಂಟೆಗಳು ಬಾಕಿ ಇವೆ" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #: ../js/ui/status/power.js:115 #, c-format msgid "%d %s %d %s remaining" -msgstr "" +msgstr "%d %s %d %s ಬಾಕಿ ಇದೆ" #: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "ಗಂಟೆ" +msgstr[1] "ಗಂಟೆಗಳು" #: ../js/ui/status/power.js:117 msgid "minute" msgid_plural "minutes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "ನಿಮಿಷ" +msgstr[1] "ನಿಮಿಷಗಳು" #: ../js/ui/status/power.js:120 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ನಿಮಿಷ ಬಾಕಿ ಇದೆ" +msgstr[1] "%d ನಿಮಿಷಗಳು ಬಾಕಿ ಇವೆ" #: ../js/ui/status/power.js:235 msgid "AC adapter" -msgstr "" +msgstr "AC ಅಡಾಪ್ಟರ್" #: ../js/ui/status/power.js:237 msgid "Laptop battery" -msgstr "" +msgstr "ಲ್ಯಾಪ್‌ಟಾಪ್ ಬ್ಯಾಟರಿ" #: ../js/ui/status/power.js:239 msgid "UPS" @@ -821,15 +831,15 @@ msgstr "UPS" #: ../js/ui/status/power.js:241 msgid "Monitor" -msgstr "" +msgstr "ತೆರೆ" #: ../js/ui/status/power.js:243 msgid "Mouse" -msgstr "" +msgstr "ಮೌಸ್" #: ../js/ui/status/power.js:245 msgid "Keyboard" -msgstr "" +msgstr "ಕೀಲಿಮಣೆ" #: ../js/ui/status/power.js:247 msgid "PDA" @@ -837,51 +847,51 @@ msgstr "PDA" #: ../js/ui/status/power.js:249 msgid "Cell phone" -msgstr "" +msgstr "ಸೆಲ್ ಫೋನ್" #: ../js/ui/status/power.js:251 msgid "Media player" -msgstr "" +msgstr "ಮೀಡಿಯ ಪ್ಲೇಯರ್" #: ../js/ui/status/power.js:253 msgid "Tablet" -msgstr "" +msgstr "ಟ್ಯಾಬ್ಲೆಟ್" #: ../js/ui/status/power.js:255 msgid "Computer" -msgstr "" +msgstr "ಗಣಕ" #: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013 msgid "Unknown" -msgstr "" +msgstr "ಗೊತ್ತಿರದ" #: ../js/ui/status/volume.js:44 msgid "Volume" -msgstr "" +msgstr "ಧ್ವನಿ ಪ್ರಮಾಣ" #: ../js/ui/status/volume.js:57 msgid "Microphone" -msgstr "" +msgstr "ಮೈಕ್ರೊಫೋನ್" #: ../js/ui/telepathyClient.js:240 #, c-format msgid "%s is online." -msgstr "" +msgstr "%s ಆನ್‌ಲೈನ್‌ನಲ್ಲಿದ್ದಾರೆ." #: ../js/ui/telepathyClient.js:245 #, c-format msgid "%s is offline." -msgstr "" +msgstr "%s ಆಫ್‌ಲೈನ್‌ನಲ್ಲಿದ್ದಾರೆ." #: ../js/ui/telepathyClient.js:248 #, c-format msgid "%s is away." -msgstr "" +msgstr "%s ಆಚೆ ಹೋಗಿದ್ದಾರೆ." #: ../js/ui/telepathyClient.js:251 #, c-format msgid "%s is busy." -msgstr "" +msgstr "%s\" ಕಾರ್ಯನಿರತವಾಗಿದ್ದಾರೆ." #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your @@ -889,7 +899,7 @@ msgstr "" #: ../js/ui/telepathyClient.js:349 #, no-c-format msgid "Sent at %X on %A" -msgstr "" +msgstr "%X ಕ್ಕೆ %A ರಂದು ಕಳುಹಿಸಲಾಗಿದೆ" #. Translators: this is the text displayed #. in the search entry when no search is @@ -897,7 +907,7 @@ msgstr "" #. characters #: ../js/ui/viewSelector.js:30 msgid "Type to search..." -msgstr "" +msgstr "ಹುಡುಕಲು ನಮೂದಿಸು..." #: ../js/ui/windowAttentionHandler.js:43 #, c-format @@ -907,7 +917,7 @@ msgstr "" #: ../js/ui/windowAttentionHandler.js:45 #, c-format msgid "'%s' is ready" -msgstr "" +msgstr "'%s' ಸಿದ್ಧಗೊಂಡಿದೆ" #. translators: #. * The number of sound outputs on a particular device @@ -971,11 +981,11 @@ msgstr "" #. * nautilus #: ../src/shell-util.c:104 msgid "File System" -msgstr "" +msgstr "ಕಡತ ವ್ಯವಸ್ಥೆ" #: ../src/shell-util.c:250 msgid "Search" -msgstr "" +msgstr "ಹುಡುಕು" #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For @@ -987,3 +997,4 @@ msgstr "" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" + From 8ffe5957e59c125c25a4b07ba29583a704e63acc Mon Sep 17 00:00:00 2001 From: Shankar Prasad Date: Fri, 4 Mar 2011 17:38:00 +0530 Subject: [PATCH 04/74] updated kn translations --- po/kn.po | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/po/kn.po b/po/kn.po index 422b38e60..60d5b370d 100644 --- a/po/kn.po +++ b/po/kn.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "cgi?product=gnome-shell&component=general\n" "POT-Creation-Date: 2011-02-21 01:21+0000\n" -"PO-Revision-Date: 2011-03-04 17:30+0530\n" +"PO-Revision-Date: 2011-03-04 17:37+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" "MIME-Version: 1.0\n" @@ -939,7 +939,7 @@ msgstr[1] "" #: ../src/gvc/gvc-mixer-control.c:1402 msgid "System Sounds" -msgstr "" +msgstr "ವ್ಯವಸ್ಥೆಯ ಧ್ವನಿಗಳು" #: ../src/shell-global.c:1363 msgid "Less than a minute ago" @@ -949,33 +949,33 @@ msgstr "" #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ನಿಮಿಷದ ಹಿಂದೆ" +msgstr[1] "%d ನಿಮಿಷಗಳ ಹಿಂದೆ" #: ../src/shell-global.c:1372 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ಗಂಟೆಯ ಹಿಂದೆ" +msgstr[1] "%d ಗಂಟೆಗಳ ಹಿಂದೆ" #: ../src/shell-global.c:1377 #, c-format msgid "%d day ago" msgid_plural "%d days ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ದಿನದ ಹಿಂದೆ" +msgstr[1] "%d ದಿನಗಳ ಹಿಂದೆ" #: ../src/shell-global.c:1382 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ವಾರದ ಹಿಂದೆ" +msgstr[1] "%d ವಾರಗಳ ಹಿಂದೆ" #: ../src/shell-util.c:89 msgid "Home Folder" -msgstr "" +msgstr "ನೆಲೆ ಕಡತಕೋಶ" #. Translators: this is the same string as the one found in #. * nautilus From 8ce97961b4a2778b15ebb73daacf6eadb622e0cb Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Sat, 26 Feb 2011 09:25:39 -0500 Subject: [PATCH 05/74] lookingGlass: Add TelepathyGLib to the default set of imports https://bugzilla.gnome.org/show_bug.cgi?id=642793 --- js/ui/lookingGlass.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index c98fa22f7..8caf657d9 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -27,6 +27,7 @@ var commandHeader = 'const Clutter = imports.gi.Clutter; ' + 'const Mainloop = imports.mainloop; ' + 'const Meta = imports.gi.Meta; ' + 'const Shell = imports.gi.Shell; ' + + 'const Tp = imports.gi.TelepathyGLib; ' + 'const Main = imports.ui.main; ' + 'const Lang = imports.lang; ' + 'const Tweener = imports.ui.tweener; ' + From 75ae20965368d2dd423150cac71032e71a9b8865 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Mon, 28 Feb 2011 12:22:12 -0500 Subject: [PATCH 06/74] history: Fix HistoryManager Make GSettings support optional, refactor text entry handling, fix some off-by-one bugs in the management itself, use Params for parsing, fix other typos and bugs. https://bugzilla.gnome.org/show_bug.cgi?id=642793 --- js/misc/history.js | 89 ++++++++++++++++++++++++++++++++----------- js/ui/lookingGlass.js | 19 +-------- js/ui/runDialog.js | 15 +------- 3 files changed, 70 insertions(+), 53 deletions(-) diff --git a/js/misc/history.js b/js/misc/history.js index 69f27f9dd..24d1b514d 100644 --- a/js/misc/history.js +++ b/js/misc/history.js @@ -2,22 +2,40 @@ const Lang = imports.lang; const Signals = imports.signals; +const Clutter = imports.gi.Clutter; +const Params = imports.misc.params; const DEFAULT_LIMIT = 512; -function HistoryManager(settings_key) { - this._init(settings_key); +function HistoryManager(params) { + this._init(params); } HistoryManager.prototype = { - _init: function(settings_key, limit) { - this._limit = limit || DEFAULT_LIMIT; - this._key = settings_key; - this._history = global.settings.get_strv(settings_key); - this._historyIndex = -1; + _init: function(params) { + params = Params.parse(params, { gsettingsKey: null, + limit: DEFAULT_LIMIT, + entry: null }); - global.settings.connect('changed::' + settings_key, - Lang.bind(this, this._historyChanged)); + this._key = params.gsettingsKey; + this._limit = params.limit; + + this._historyIndex = 0; + if (this._key) { + this._history = global.settings.get_strv(this._key); + global.settings.connect('changed::' + this._key, + Lang.bind(this, this._historyChanged)); + + } else { + this._history = []; + } + + this._entry = params.entry; + + if (this._entry) { + this._entry.connect('key-press-event', + Lang.bind(this, this._onEntryKeyPress)); + } }, _historyChanged: function() { @@ -26,18 +44,32 @@ HistoryManager.prototype = { }, prevItem: function(text) { - this._setHistory(this._historyIndex--, text); + if (this._historyIndex <= 0) + return text; + + if (text) + this._history[this._historyIndex] = text; + this._historyIndex--; return this._indexChanged(); }, nextItem: function(text) { - this._setHistory(this._historyIndex++, text); + if (this._historyIndex >= this._history.length) + return text; + + if (text) + this._history[this._historyIndex] = text; + this._historyIndex++; return this._indexChanged(); }, lastItem: function() { - this._historyIndex = this._history.length; - return this._indexChanged(); + if (this._historyIndex != this._history.length) { + this._historyIndex = this._history.length; + this._indexChanged(); + } + + return this._historyIndex[this._history.length]; }, addItem: function(input) { @@ -45,28 +77,39 @@ HistoryManager.prototype = { this._history[this._history.length - 1] != input) { this._history.push(input); + this._historyIndex = this._history.length; this._save(); } }, + _onEntryKeyPress: function(entry, event) { + let symbol = event.get_key_symbol(); + if (symbol == Clutter.KEY_Up) { + this.prevItem(entry.get_text()); + return true; + } else if (symbol == Clutter.KEY_Down) { + this.nextItem(entry.get_text()); + return true; + } + return false; + }, + _indexChanged: function() { let current = this._history[this._historyIndex] || ''; this.emit('changed', current); + + if (this._entry) + this._entry.set_text(current); + return current; }, - _setHistory: function(index, text) { - this._historyIndex = Math.max(this._historyIndex, 0); - this._historyIndex = Math.min(this._historyIndex, this._history.length); - - if (text) - this._history[index] = text; - }, - _save: function() { if (this._history.length > this._limit) - this._history.splice(0, this._history.length - this._key); - global.settings.set_strv(this._key, this._history); + this._history.splice(0, this._history.length - this._limit); + + if (this._key) + global.settings.set_strv(this._key, this._history); } }; Signals.addSignalMethods(HistoryManager.prototype); diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index 8caf657d9..ede95a161 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -778,23 +778,8 @@ LookingGlass.prototype = { return true; })); - this._history = new History.HistoryManager(HISTORY_KEY); - this._history.connect('changed', Lang.bind(this, function(history, text) { - this._entry.text = text; - })); - - this._entry.clutter_text.connect('key-press-event', Lang.bind(this, function(o, e) { - let symbol = e.get_key_symbol(); - if (symbol == Clutter.Up) { - this._history.prevItem(o.get_text()); - return true; - } else if (symbol == Clutter.Down) { - this._history.nextItem(o.get_text()); - return true; - } else { - return false; - } - })); + this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, + entry: this._entry.clutter_text }); }, _updateFont: function() { diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index 219191d46..15340d359 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -234,21 +234,10 @@ __proto__: ModalDialog.ModalDialog.prototype, this._commandCompleter = new CommandCompleter(); this._group.connect('notify::visible', Lang.bind(this._commandCompleter, this._commandCompleter.update)); - this._history = new History.HistoryManager(HISTORY_KEY); - this._history.connect('changed', Lang.bind(this, function(history, text) { - this._entryText.set_text(text); - })); - + this._history = new History.HistoryManager({ gsettingsKey: HISTORY_KEY, + entry: this._entryText }); this._entryText.connect('key-press-event', Lang.bind(this, function(o, e) { let symbol = e.get_key_symbol(); - if (symbol == Clutter.Down) { - this._history.nextItem(o.get_text()); - return true; - } - if (symbol == Clutter.Up) { - this._history.prevItem(o.get_text()); - return true; - } if (symbol == Clutter.Return || symbol == Clutter.KP_Enter) { if (Shell.get_event_state(e) & Clutter.ModifierType.CONTROL_MASK) this._run(o.get_text(), true); From 03401bbb589d6f38b6e65cacee1f57880ca57afd Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 4 Mar 2011 09:46:05 +0100 Subject: [PATCH 07/74] CtrlAltTabPopup: Fix pixel alignment CtrlAltTabPopup was using a St.BoxLayout and relied on anchor_gravity center for positioning. This does not guarantee correct pixel alignment, so use a St.GenericContainer instead and do the positioning similar to that of the appSwitcher. https://bugzilla.gnome.org/show_bug.cgi?id=643820 --- js/ui/ctrlAltTab.js | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js index 8faa6c519..83bb9b9a9 100644 --- a/js/ui/ctrlAltTab.js +++ b/js/ui/ctrlAltTab.js @@ -91,12 +91,12 @@ function CtrlAltTabPopup() { CtrlAltTabPopup.prototype = { _init : function() { - let primary = global.get_primary_monitor(); - this.actor = new St.BoxLayout({ name: 'ctrlAltTabPopup', - reactive: true, - x: primary.x + primary.width / 2, - y: primary.y + primary.height / 2, - anchor_gravity: Clutter.Gravity.CENTER }); + this.actor = new Shell.GenericContainer({ name: 'ctrlAltTabPopup', + reactive: true }); + + this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth)); + this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight)); + this.actor.connect('allocate', Lang.bind(this, this._allocate)); this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); @@ -106,6 +106,37 @@ CtrlAltTabPopup.prototype = { Main.uiGroup.add_actor(this.actor); }, + _getPreferredWidth: function (actor, forHeight, alloc) { + let primary = global.get_primary_monitor(); + + alloc.min_size = primary.width; + alloc.natural_size = primary.width; + }, + + _getPreferredHeight: function (actor, forWidth, alloc) { + let primary = global.get_primary_monitor(); + + alloc.min_size = primary.height; + alloc.natural_size = primary.height; + }, + + _allocate: function (actor, box, flags) { + let childBox = new Clutter.ActorBox(); + let primary = global.get_primary_monitor(); + + let leftPadding = this.actor.get_theme_node().get_padding(St.Side.LEFT); + let vPadding = this.actor.get_theme_node().get_vertical_padding(); + let hPadding = this.actor.get_theme_node().get_horizontal_padding(); + + let [childMinHeight, childNaturalHeight] = this._switcher.actor.get_preferred_height(primary.width - hPadding); + let [childMinWidth, childNaturalWidth] = this._switcher.actor.get_preferred_width(childNaturalHeight); + childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2)); + childBox.x2 = Math.min(primary.width - hPadding, childBox.x1 + childNaturalWidth); + childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2); + childBox.y2 = childBox.y1 + childNaturalHeight; + this._switcher.actor.allocate(childBox, flags); + }, + show : function(items, startBackwards) { if (!Main.pushModal(this.actor)) return false; From 614176b2691981c982e77b8a04b01ff02a670857 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 4 Mar 2011 17:07:45 +0100 Subject: [PATCH 08/74] appSwitcher: Fix logic error in AltTabPopup._allocate --- js/ui/altTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index d0b50fc39..44fd39d1d 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -87,7 +87,7 @@ AltTabPopup.prototype = { let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding); let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight); childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2)); - childBox.x2 = Math.min(childBox.x1 + primary.width - hPadding, childBox.x1 + childNaturalWidth); + childBox.x2 = Math.min(primary.width - hPadding, childBox.x1 + childNaturalWidth); childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2); childBox.y2 = childBox.y1 + childNaturalHeight; this._appSwitcher.actor.allocate(childBox, flags); From cf854778643028fdfa2b441076488f6ce7ee3590 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 4 Mar 2011 01:08:59 +0100 Subject: [PATCH 09/74] workspace: Move close button to the left in RTL locales Mutter reverses the button layout in RTL locales, so we should do the same for the window previews' close buttons. https://bugzilla.gnome.org/show_bug.cgi?id=643834 --- js/ui/workspace.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 5babb01eb..d75794f8a 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -419,8 +419,13 @@ WindowOverlay.prototype = { let button = this.closeButton; let title = this.title; - let buttonX = cloneX + cloneWidth - button._overlap; - let buttonY = cloneY - button.height + button._overlap; + let buttonX; + let buttonY = cloneY - (button.height - button._overlap); + if (St.Widget.get_default_direction() == St.TextDirection.RTL) + buttonX = cloneX - (button.width - button._overlap); + else + buttonX = cloneX + (cloneWidth - button._overlap); + button.set_position(Math.floor(buttonX), Math.floor(buttonY)); if (!title.fullWidth) From a532b70f70c53eb4b1c4ce86405ab7e0f661cc97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Sat, 12 Feb 2011 00:44:29 +0700 Subject: [PATCH 10/74] po/vi.po: update-po --- po/vi.po | 777 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 493 insertions(+), 284 deletions(-) diff --git a/po/vi.po b/po/vi.po index fe87bf320..ab1f9ef30 100644 --- a/po/vi.po +++ b/po/vi.po @@ -6,12 +6,12 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"shell&component=general\n" -"POT-Creation-Date: 2010-12-20 21:07+0000\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-02-12 00:44+0700\n" "PO-Revision-Date: 2010-12-29 21:22+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" +"Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -25,14 +25,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Quản lý cửa sổ và chạy ứng dụng" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Đồng hồ" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Tuỳ biến đồng hồ" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -40,56 +32,45 @@ msgid "" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:4 +#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:5 +#: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:6 +#: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "If true, display date in the clock, in addition to time." +msgstr "" + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" +msgid "If true, display seconds in time." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:9 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:10 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "List of desktop file IDs for favorite applications" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " @@ -98,45 +79,47 @@ msgid "" "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show date in clock" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show the week date in the calendar" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show time with seconds" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -144,33 +127,18 @@ msgid "" "remove already saved data." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 -msgid "" -"This key specifies the format used by the panel clock when the format key is " -"set to \"custom\". You can use conversion specifiers understood by strftime" -"() to obtain a specific format. See the strftime() manual for more " -"information." -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 -msgid "" -"This key specifies the hour format used by the panel clock. Possible values " -"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", " -"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set " -"to \"custom\", the clock will display time according to the format specified " -"in the custom_format key. Note that if set to either \"unix\" or \"custom\", " -"the show_date and show_seconds keys are ignored." -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:24 -#| msgid "No extensions installed" +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Uuids of extensions to disable" msgstr "UUID của phần mở rộng cần tắt" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Whether to collect stats about applications usage" msgstr "" +#: ../data/org.gnome.shell.gschema.xml.in.h:23 +msgid "disabled OpenSearch providers" +msgstr "" + #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 msgid "Clip the crosshairs at the center" msgstr "" @@ -212,7 +180,6 @@ msgid "" msgstr "" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 -#| msgid "Enabled" msgid "Enable lens mode" msgstr "Bật chế độ gương" @@ -297,56 +264,49 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "Độ rộng của đường dọc/ngang hình thành dấu gạch chéo." -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Dạng đồng hồ" +#: ../js/misc/util.js:86 +msgid "Command not found" +msgstr "" -#: ../data/clock-preferences.ui.h:2 -#| msgid "System Preferences..." -msgid "Clock Preferences" -msgstr "Thiết lập đồng hồ" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:113 +#, fuzzy +msgid "Could not parse command:" +msgstr "Vui lòng nhập lệnh:" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Khung hiển thị" +#: ../js/misc/util.js:135 +#, fuzzy +msgid "No such application" +msgstr "Ứng dụng" -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Hiện _giây" +#: ../js/misc/util.js:148 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Lỗi thực hiện '%s':" -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Hiện _ngày" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "Dạng _12 giờ" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "Dạng _24 giờ" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:174 msgid "All" msgstr "Tất cả" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:261 msgid "APPLICATIONS" msgstr "ỨNG DỤNG" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:291 msgid "PREFERENCES" msgstr "TUỲ THÍCH" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:592 msgid "New Window" msgstr "Cửa sổ mới" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:596 msgid "Remove from Favorites" msgstr "Bỏ đánh dấu ưa thích" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:597 msgid "Add to Favorites" msgstr "Đánh dấu ưa thích" @@ -360,133 +320,363 @@ msgstr "Đã được đánh dấu ưa thích cho %s." msgid "%s has been removed from your favorites." msgstr "Đã bỏ đánh dấu ưa thích cho %s" -#: ../js/ui/dash.js:27 +#. 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:65 +msgctxt "event list time" +msgid "All Day" +msgstr "" + +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:70 +#, fuzzy +msgctxt "event list time" +msgid "%H:%M" +msgstr "%H:%M" + +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:77 +#, fuzzy +msgctxt "event list time" +msgid "%l:%M %p" +msgstr "%a %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:117 +msgctxt "grid sunday" +msgid "S" +msgstr "" + +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:119 +msgctxt "grid monday" +msgid "M" +msgstr "" + +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:121 +msgctxt "grid tuesday" +msgid "T" +msgstr "" + +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:123 +msgctxt "grid wednesday" +msgid "W" +msgstr "" + +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:125 +msgctxt "grid thursday" +msgid "T" +msgstr "" + +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:127 +msgctxt "grid friday" +msgid "F" +msgstr "" + +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:129 +msgctxt "grid saturday" +msgid "S" +msgstr "" + +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:142 +msgctxt "list sunday" +msgid "Su" +msgstr "" + +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:144 +msgctxt "list monday" +msgid "M" +msgstr "" + +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:146 +msgctxt "list tuesday" +msgid "T" +msgstr "" + +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:148 +msgctxt "list wednesday" +msgid "W" +msgstr "" + +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:150 +msgctxt "list thursday" +msgid "Th" +msgstr "" + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:152 +msgctxt "list friday" +msgid "F" +msgstr "" + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:154 +msgctxt "list saturday" +msgid "S" +msgstr "" + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:701 +msgid "Nothing Scheduled" +msgstr "" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:717 +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:720 +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "" + +#: ../js/ui/calendar.js:730 +msgid "Today" +msgstr "" + +#: ../js/ui/calendar.js:734 +msgid "Tomorrow" +msgstr "" + +#: ../js/ui/calendar.js:743 +msgid "This week" +msgstr "" + +#: ../js/ui/calendar.js:751 +msgid "Next week" +msgstr "" + +#: ../js/ui/dash.js:174 msgid "Remove" msgstr "Loại bỏ" -#: ../js/ui/docDisplay.js:494 -msgid "RECENT ITEMS" -msgstr "MỤC GẦN ĐÂY" +#: ../js/ui/dateMenu.js:91 +#, fuzzy +msgid "Date and Time Settings" +msgstr "Thiết lập hệ thống" -#: ../js/ui/lookingGlass.js:552 -msgid "No extensions installed" -msgstr "Chưa cài phần mở rộng" - -#: ../js/ui/lookingGlass.js:589 -msgid "Enabled" -msgstr "Bật" - -#. translators: -#. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 -msgid "Disabled" -msgstr "Tắt" - -#: ../js/ui/lookingGlass.js:593 -msgid "Error" -msgstr "Lỗi" - -#: ../js/ui/lookingGlass.js:595 -msgid "Out of date" -msgstr "Hết hạn" - -#: ../js/ui/lookingGlass.js:620 -msgid "View Source" -msgstr "Xem mã nguồn" - -#: ../js/ui/lookingGlass.js:626 -msgid "Web Page" -msgstr "Trang Web" - -#: ../js/ui/overview.js:96 -msgid "Undo" -msgstr "Hoàn lại" - -#: ../js/ui/overview.js:158 -#| msgid "New Window" -msgid "Windows" -msgstr "Cửa sổ" - -#: ../js/ui/overview.js:161 -msgid "Applications" -msgstr "Ứng dụng" - -#. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 -#, c-format -msgid "Quit %s" -msgstr "Thoát %s" - -#: ../js/ui/panel.js:499 -#| msgid "System Preferences..." -msgid "Preferences" -msgstr "Thiết lập" +#: ../js/ui/dateMenu.js:110 +msgid "Open Calendar" +msgstr "" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/dateMenu.js:149 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" -#: ../js/ui/panel.js:586 -#| msgid "%a %l:%M %p" +#: ../js/ui/dateMenu.js:150 msgid "%a %b %e, %R" msgstr "%a %b %e, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:590 -#| msgid "%a %R" +#: ../js/ui/dateMenu.js:154 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/dateMenu.js:155 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 -#| msgid "%a %l:%M %p" +#: ../js/ui/dateMenu.js:162 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" -#: ../js/ui/panel.js:599 -#| msgid "%a %l:%M %p" +#: ../js/ui/dateMenu.js:163 msgid "%a %b %e, %l:%M %p" msgstr "%a %b %e, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:603 -#| msgid "%a %l:%M %p" +#: ../js/ui/dateMenu.js:167 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:604 +#: ../js/ui/dateMenu.js:168 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" +#. 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:194 +#, fuzzy +msgid "%A %B %e, %Y" +msgstr "%a %b %e, %R" + +#: ../js/ui/docDisplay.js:19 +msgid "RECENT ITEMS" +msgstr "MỤC GẦN ĐÂY" + +#: ../js/ui/endSessionDialog.js:63 +#, fuzzy, c-format +msgid "Log Out %s" +msgstr "Đăng xuất..." + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +#, fuzzy +msgid "Log Out" +msgstr "Đăng xuất..." + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "" + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "" + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +#, fuzzy +msgid "Shut Down" +msgstr "Tắt máy..." + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "" + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "" + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "" + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 +msgid "Cancel" +msgstr "Thôi" + +#: ../js/ui/lookingGlass.js:584 +msgid "No extensions installed" +msgstr "Chưa cài phần mở rộng" + +#: ../js/ui/lookingGlass.js:621 +msgid "Enabled" +msgstr "Bật" + +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:623 ../src/gvc/gvc-mixer-control.c:1087 +msgid "Disabled" +msgstr "Tắt" + +#: ../js/ui/lookingGlass.js:625 +msgid "Error" +msgstr "Lỗi" + +#: ../js/ui/lookingGlass.js:627 +msgid "Out of date" +msgstr "Hết hạn" + +#: ../js/ui/lookingGlass.js:652 +msgid "View Source" +msgstr "Xem mã nguồn" + +#: ../js/ui/lookingGlass.js:658 +msgid "Web Page" +msgstr "Trang Web" + +#: ../js/ui/messageTray.js:1854 +#, fuzzy +msgid "System Information" +msgstr "Thông tin tài khoản..." + +#: ../js/ui/overview.js:88 +msgid "Undo" +msgstr "Hoàn lại" + +#: ../js/ui/overview.js:159 +msgid "Windows" +msgstr "Cửa sổ" + +#: ../js/ui/overview.js:162 +msgid "Applications" +msgstr "Ứng dụng" + +#. TODO - _quit() doesn't really work on apps in state STARTING yet +#: ../js/ui/panel.js:480 +#, c-format +msgid "Quit %s" +msgstr "Thoát %s" + #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:749 +#: ../js/ui/panel.js:614 msgid "Activities" msgstr "Hoạt động" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "Lỗi bỏ gắn '%s'" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "Thử lại" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "Kết nối đến..." -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:409 msgid "PLACES & DEVICES" msgstr "ĐỊA ĐIỂM & THIẾT BỊ" @@ -495,88 +685,93 @@ msgstr "ĐỊA ĐIỂM & THIẾT BỊ" #. "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:33 +#: ../js/ui/popupMenu.js:512 msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:209 msgid "Please enter a command:" msgstr "Vui lòng nhập lệnh:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Lỗi thực hiện '%s':" +#: ../js/ui/searchDisplay.js:295 +msgid "Searching..." +msgstr "Đang tìm..." -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/searchDisplay.js:309 +msgid "No matching results." +msgstr "Không tìm thấy." + +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Có mặt" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Bận" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "Tài khoản" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "Thiết lập hệ thống" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Khoá màn hình" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Chuyển người dùng" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "Đăng xuất..." -#: ../js/ui/statusMenu.js:141 -msgid "Suspend..." -msgstr "Ngưng..." - -#: ../js/ui/statusMenu.js:145 +#. This is temporarily removed, see +#. http://bugzilla.gnome.org/show_bug.cgi?id=636680 +#. for details. +#. item = new PopupMenu.PopupMenuItem(_("Suspend...")); +#. item.connect('activate', Lang.bind(this, this._onShutDownActivate)); +#. this.menu.addMenuItem(item); +#: ../js/ui/statusMenu.js:149 msgid "Shut Down..." msgstr "Tắt máy..." -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "Thu/Phóng" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "Trình đọc màn hình" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "Bàn phím màn hình" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "Cảnh báo trực quan" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "Phím dính" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "Phím chậm" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "Phím dội" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "Phím chuột" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "Thiết lập hỗ trợ truy cập" @@ -588,7 +783,9 @@ msgstr "Tương phản cao" msgid "Large Text" msgstr "Chữ lớn" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 msgid "Bluetooth" msgstr "Bluetooth" @@ -596,118 +793,113 @@ msgstr "Bluetooth" msgid "Visibility" msgstr "Tầm nhìn" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "Gửi tập tin đến thiết bị..." -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "Thiết lập thiết bị mới..." -#: ../js/ui/status/bluetooth.js:94 +#: ../js/ui/status/bluetooth.js:95 msgid "Bluetooth Settings" msgstr "Thiết lập Bluetooth" -#: ../js/ui/status/bluetooth.js:151 -#| msgid "Connect to..." +#: ../js/ui/status/bluetooth.js:192 msgid "Connection" msgstr "Kết nối" -#: ../js/ui/status/bluetooth.js:187 +#: ../js/ui/status/bluetooth.js:228 msgid "Send Files..." msgstr "Gửi tập tin..." -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:233 msgid "Browse Files..." msgstr "Duyệt tập tin..." -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:242 msgid "Error browsing device" msgstr "Lỗi duyệt tập tin" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:243 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là '%s'" -#: ../js/ui/status/bluetooth.js:210 +#: ../js/ui/status/bluetooth.js:251 msgid "Keyboard Settings" msgstr "Thiết lập bàn phím" -#: ../js/ui/status/bluetooth.js:215 +#: ../js/ui/status/bluetooth.js:256 msgid "Mouse Settings" msgstr "Thiết lập chuột" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Thiết lập âm thanh" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 -msgid "Bluetooth Agent" -msgstr "" - -#: ../js/ui/status/bluetooth.js:328 +#: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" msgstr "Yêu cầu cấp quyền từ %s" -#: ../js/ui/status/bluetooth.js:334 +#: ../js/ui/status/bluetooth.js:378 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Thiết bị %s muốn truy cập dịch vụ '%s'" -#: ../js/ui/status/bluetooth.js:336 +#: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" msgstr "Luôn cho phép" -#: ../js/ui/status/bluetooth.js:337 +#: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" msgstr "Chỉ cho phép lần này" -#: ../js/ui/status/bluetooth.js:338 +#: ../js/ui/status/bluetooth.js:382 msgid "Reject" msgstr "Từ chối" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:412 #, c-format msgid "Pairing confirmation for %s" msgstr "Xác nhận kết nối cho %s" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Thiết bị %s muốn kết nối với máy tính này" -#: ../js/ui/status/bluetooth.js:375 +#: ../js/ui/status/bluetooth.js:419 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Vui lòng xác nhận PIN '%s' khớp với số trên thiết bị." -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:421 msgid "Matches" msgstr "Khớp" -#: ../js/ui/status/bluetooth.js:378 +#: ../js/ui/status/bluetooth.js:422 msgid "Does not match" msgstr "Không khớp" -#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:445 #, c-format msgid "Pairing request for %s" msgstr "Yêu cầu kết nối cho %s" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:453 msgid "Please enter the PIN mentioned on the device." msgstr "Vui lòng nhập số PIN ghi trên thiết bị." -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:469 msgid "OK" msgstr "OK" -#: ../js/ui/status/bluetooth.js:426 -msgid "Cancel" -msgstr "Thôi" +#: ../js/ui/status/keyboard.js:72 +#, fuzzy +msgid "Localization Settings" +msgstr "Thiết lập âm thanh" #: ../js/ui/status/power.js:85 msgid "Power Settings" @@ -715,8 +907,6 @@ msgstr "Thiết lập năng lượng" #: ../js/ui/status/power.js:112 #, c-format -#| msgid "%d hour ago" -#| msgid_plural "%d hours ago" msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d giờ còn lại" @@ -733,93 +923,88 @@ msgid_plural "hours" msgstr[0] "giờ" #: ../js/ui/status/power.js:117 -#| msgid "%d minute ago" -#| msgid_plural "%d minutes ago" msgid "minute" msgid_plural "minutes" msgstr[0] "%d phút" #: ../js/ui/status/power.js:120 #, c-format -#| msgid "%d minute ago" -#| msgid_plural "%d minutes ago" msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d phút còn lại" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "Bộ đổi điện AC" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "Pin laptop" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:239 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:241 msgid "Monitor" msgstr "Màn hình" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "Chuột" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "Bàn phím" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:247 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:249 msgid "Cell phone" msgstr "Điện thoại cầm tay" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "Máy phát" -#: ../js/ui/status/power.js:255 -#| msgid "Enabled" +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "Máy tính" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Không biết" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Âm lượng" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "Micrô" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:563 #, c-format msgid "%s is online." msgstr "%s trực tuyến." -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:568 #, c-format msgid "%s is offline." msgstr "%s ngoại tuyến." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:571 #, c-format msgid "%s is away." msgstr "%s đi vắng." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:574 #, c-format msgid "%s is busy." msgstr "%s bận." @@ -827,7 +1012,7 @@ msgstr "%s bận." #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. -#: ../js/ui/telepathyClient.js:664 +#: ../js/ui/telepathyClient.js:669 #, no-c-format msgid "Sent at %X on %A" msgstr "Đã gửi %X lúc %A" @@ -846,15 +1031,6 @@ msgstr "%s đã hoàn tất khởi chạy" msgid "'%s' is ready" msgstr "'%s' đã sẵn sàng" -#: ../js/ui/workspacesView.js:244 -msgid "" -"Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "Không thể thêm vùng làm việc mới vì đã đạt giới hạn số vùng làm việc tối đa." - -#: ../js/ui/workspacesView.js:260 -msgid "Can't remove the first workspace." -msgstr "Không thể bỏ vùng làm việc đầu tiên." - #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1094 @@ -875,29 +1051,29 @@ msgstr[0] "%u đầu vào" msgid "System Sounds" msgstr "Âm thanh hệ thống" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1363 msgid "Less than a minute ago" msgstr "Chưa đến một phút" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1367 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d phút trước" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1372 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d giờ trước" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1377 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ngày trước" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1382 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -927,29 +1103,62 @@ msgstr "Tìm" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "Đồng hồ" + +#~ msgid "Customize the panel clock" +#~ msgstr "Tuỳ biến đồng hồ" + +#~ msgid "Clock Format" +#~ msgstr "Dạng đồng hồ" + +#~| msgid "System Preferences..." +#~ msgid "Clock Preferences" +#~ msgstr "Thiết lập đồng hồ" + +#~ msgid "Panel Display" +#~ msgstr "Khung hiển thị" + +#~ msgid "Show seco_nds" +#~ msgstr "Hiện _giây" + +#~ msgid "Show the _date" +#~ msgstr "Hiện _ngày" + +#~ msgid "_12 hour format" +#~ msgstr "Dạng _12 giờ" + +#~ msgid "_24 hour format" +#~ msgstr "Dạng _24 giờ" + +#~| msgid "System Preferences..." +#~ msgid "Preferences" +#~ msgstr "Thiết lập" + +#~ msgid "Suspend..." +#~ msgstr "Ngưng..." + +#~ msgid "" +#~ "Can't add a new workspace because maximum workspaces limit has been " +#~ "reached." +#~ msgstr "" +#~ "Không thể thêm vùng làm việc mới vì đã đạt giới hạn số vùng làm việc tối " +#~ "đa." + +#~ msgid "Can't remove the first workspace." +#~ msgstr "Không thể bỏ vùng làm việc đầu tiên." + #~ msgid "Drag here to add favorites" #~ msgstr "Kéo vào đây để thêm vào danh mục ưa thích" #~ msgid "Find..." #~ msgstr "Tìm" -#~ msgid "Searching..." -#~ msgstr "Đang tìm..." - -#~ msgid "No matching results." -#~ msgstr "Không tìm thấy." - #~ msgid "Invisible" #~ msgstr "Giấu mặt" -#~ msgid "Account Information..." -#~ msgstr "Thông tin tài khoản..." - #~ msgid "Sidebar" #~ msgstr "Thanh bên" -#~ msgid "%H:%M" -#~ msgstr "%H:%M" - #~ msgid "Recent Documents" #~ msgstr "Tài liệu gần đây" From 06bf8d3470d13fb73ed894969b6198a1ae866dd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Sat, 12 Feb 2011 14:59:34 +0700 Subject: [PATCH 11/74] Updated Vietnamese translation --- po/vi.po | 176 ++++++++++++++++++++++++++----------------------------- 1 file changed, 83 insertions(+), 93 deletions(-) diff --git a/po/vi.po b/po/vi.po index ab1f9ef30..e99fda340 100644 --- a/po/vi.po +++ b/po/vi.po @@ -1,14 +1,14 @@ # Vietnamese translation for gnome-shell. # Copyright (C) 2010 GNOME i18n Project for Vietnamese. # This file is distributed under the same license as the gnome-shell package. -# Nguyễn Thái Ngọc Duy , 2010. +# Nguyễn Thái Ngọc Duy , 2010-2011. # msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-02-12 00:44+0700\n" -"PO-Revision-Date: 2010-12-29 21:22+0700\n" +"PO-Revision-Date: 2011-03-05 15:33+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" "Language: vi\n" @@ -29,45 +29,45 @@ msgstr "Quản lý cửa sổ và chạy ứng dụng" msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." -msgstr "" +msgstr "Cho phép truy cập công cụ theo dõi và tìm lỗi nội bộ qua hộp thoại Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" -msgstr "" +msgstr "Bật công cụ nội bộ, hữu dụng với người phát triển và kiểm thử, qua Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" -msgstr "" +msgstr "Phần mở rộng dùng để lưu screencast" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." -msgstr "" +msgstr "Tốc độ khung dùng lưu screencast." #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." -msgstr "" +msgstr "Phần mở rộng GNOME Shell có thuộc tính uuid. Khoá này liệt kê danh sách phần mở rộng không nên nạp." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" -msgstr "" +msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "If true, display date in the clock, in addition to time." -msgstr "" +msgstr "Nếu đúng (true), hiện ngày trên đồng hồ, bên cạnh giờ." #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display seconds in time." -msgstr "" +msgstr "Nếu đúng (true), hiện giây." #: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display the ISO week date in the calendar." -msgstr "" +msgstr "Nếu đúng (true), hiện tuần ISO trong lịch." #: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "List of desktop file IDs for favorite applications" -msgstr "" +msgstr "Danh sách ID tập tin desktop của ứng dụng yêu thích" #: ../data/org.gnome.shell.gschema.xml.in.h:12 #, no-c-format @@ -82,42 +82,42 @@ msgid "" "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " "at the optimal thread count on the system." -msgstr "" +msgstr "Đặt ống dẫn GStreamer dùng để thu hình. Tuân theo cú pháp gst-launch. Ống dẫn nên có pad sink không kết nối, nơi bắt đầu thu. Bình thường cũng nên có source pad không kết nối; đầu ra từ pad sẽ được ghi vào tập tin kết quả. Tuy nhiên ống dẫn có thể tự lưu đầu ra riêng - có thể hữu dụng để gửi kết quả đến máy chủ icecast thông qua shout2send hoặc tương tự. Nếu bỏ chọn hoặc đặt giá trị rỗng, ống dẫn mặc định sẽ được dùng, hiện thời là 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' và lưu ở dạng WEBM dùng VP8 codec. %T được dùng để thế chỗ cho số thread dự đoán tối ưu cho hệ thống." #: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show date in clock" -msgstr "" +msgstr "Hiện ngày trên đồng hồ" #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show the week date in the calendar" -msgstr "" +msgstr "Hiện tuần trên lịch" #: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show time with seconds" -msgstr "" +msgstr "Hiện giây" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." -msgstr "" +msgstr "Ứng dụng tương ứng với những định danh này sẽ được hiển thị ở vùng ưa thích." #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." -msgstr "" +msgstr "Tên tập tin cho screencast được lưu sẽ là tên độc nhất dự trên ngày hiện thời, và dùng phần mở rộng này. Khi lưu ở định dạng khác nhau thì tên này cũng nên khác nhau." #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." -msgstr "" +msgstr "Tốc độ khung của screencast lưu bởi bộ thu GNOME Shell theo số khung mỗi giây." #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "The gstreamer pipeline used to encode the screencast" -msgstr "" +msgstr "Ống dẫn gstreamer để thu screencast" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "" @@ -133,25 +133,25 @@ msgstr "UUID của phần mở rộng cần tắt" #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Whether to collect stats about applications usage" -msgstr "" +msgstr "Có thu thập thống kê sử dụng ứng dụng không" #: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "disabled OpenSearch providers" -msgstr "" +msgstr "Phần cung cấp OpenSearch bị tắt" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 msgid "Clip the crosshairs at the center" -msgstr "" +msgstr "Cắt lưới chéo ở giữa" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 msgid "Color of the crosshairs" -msgstr "" +msgstr "Màu lưới chéo" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3 msgid "" "Determines the length of the vertical and horizontal lines that make up the " "crosshairs." -msgstr "" +msgstr "Xác định độ dài và rộng của những dòng tạo nên lưới chéo." #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4 msgid "" @@ -170,7 +170,7 @@ msgstr "" msgid "" "Determines the transparency of the crosshairs, from fully opaque to fully " "transparent." -msgstr "" +msgstr "Xác định độ trong suốt của lưới chéo, từ đặc đến trong suốt." #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6 msgid "" @@ -214,7 +214,7 @@ msgstr "" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14 msgid "Screen position" -msgstr "" +msgstr "Vị trí màn hình" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15 msgid "Scroll magnified contents beyond the edges of the desktop" @@ -222,11 +222,11 @@ msgstr "" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16 msgid "Show or hide crosshairs" -msgstr "" +msgstr "Hiện hoặc ẩn lưới chéo" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17 msgid "Show or hide the magnifier" -msgstr "" +msgstr "Hiện hoặc ẩn kính lúp" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18 msgid "Show or hide the magnifier and all of its zoom regions." @@ -252,7 +252,7 @@ msgstr "" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22 msgid "Thickness of the crosshairs" -msgstr "" +msgstr "Độ dày lưới chéo" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23 msgid "" @@ -266,19 +266,17 @@ msgstr "Độ rộng của đường dọc/ngang hình thành dấu gạch chéo #: ../js/misc/util.js:86 msgid "Command not found" -msgstr "" +msgstr "Không tìm thấy lệnh" #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer #: ../js/misc/util.js:113 -#, fuzzy msgid "Could not parse command:" -msgstr "Vui lòng nhập lệnh:" +msgstr "Không thể phân tích lệnh:" #: ../js/misc/util.js:135 -#, fuzzy msgid "No such application" -msgstr "Ứng dụng" +msgstr "Không có ứng dụng đó" #: ../js/misc/util.js:148 #, c-format @@ -326,21 +324,19 @@ msgstr "Đã bỏ đánh dấu ưa thích cho %s" #: ../js/ui/calendar.js:65 msgctxt "event list time" msgid "All Day" -msgstr "" +msgstr "Nguyên ngày" #. Translators: Shown in calendar event list, if 24h format #: ../js/ui/calendar.js:70 -#, fuzzy msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format #: ../js/ui/calendar.js:77 -#, fuzzy msgctxt "event list time" msgid "%l:%M %p" -msgstr "%a %l:%M %p" +msgstr "%l:%M %p" #. Translators: Calendar grid abbreviation for Sunday. #. * @@ -350,43 +346,43 @@ msgstr "%a %l:%M %p" #: ../js/ui/calendar.js:117 msgctxt "grid sunday" msgid "S" -msgstr "" +msgstr "C" #. Translators: Calendar grid abbreviation for Monday #: ../js/ui/calendar.js:119 msgctxt "grid monday" msgid "M" -msgstr "" +msgstr "2" #. Translators: Calendar grid abbreviation for Tuesday #: ../js/ui/calendar.js:121 msgctxt "grid tuesday" msgid "T" -msgstr "" +msgstr "3" #. Translators: Calendar grid abbreviation for Wednesday #: ../js/ui/calendar.js:123 msgctxt "grid wednesday" msgid "W" -msgstr "" +msgstr "4" #. Translators: Calendar grid abbreviation for Thursday #: ../js/ui/calendar.js:125 msgctxt "grid thursday" msgid "T" -msgstr "" +msgstr "5" #. Translators: Calendar grid abbreviation for Friday #: ../js/ui/calendar.js:127 msgctxt "grid friday" msgid "F" -msgstr "" +msgstr "6" #. Translators: Calendar grid abbreviation for Saturday #: ../js/ui/calendar.js:129 msgctxt "grid saturday" msgid "S" -msgstr "" +msgstr "7" #. Translators: Event list abbreviation for Sunday. #. * @@ -397,109 +393,108 @@ msgstr "" #: ../js/ui/calendar.js:142 msgctxt "list sunday" msgid "Su" -msgstr "" +msgstr "CN" #. Translators: Event list abbreviation for Monday #: ../js/ui/calendar.js:144 msgctxt "list monday" msgid "M" -msgstr "" +msgstr "T2" #. Translators: Event list abbreviation for Tuesday #: ../js/ui/calendar.js:146 msgctxt "list tuesday" msgid "T" -msgstr "" +msgstr "T3" #. Translators: Event list abbreviation for Wednesday #: ../js/ui/calendar.js:148 msgctxt "list wednesday" msgid "W" -msgstr "" +msgstr "T4" #. Translators: Event list abbreviation for Thursday #: ../js/ui/calendar.js:150 msgctxt "list thursday" msgid "Th" -msgstr "" +msgstr "T5" #. Translators: Event list abbreviation for Friday #: ../js/ui/calendar.js:152 msgctxt "list friday" msgid "F" -msgstr "" +msgstr "T6" #. Translators: Event list abbreviation for Saturday #: ../js/ui/calendar.js:154 msgctxt "list saturday" msgid "S" -msgstr "" +msgstr "T7" #. Translators: Text to show if there are no events #: ../js/ui/calendar.js:701 msgid "Nothing Scheduled" -msgstr "" +msgstr "Không có lịch hẹn" #. Translators: Shown on calendar heading when selected day occurs on current year #: ../js/ui/calendar.js:717 msgctxt "calendar heading" msgid "%A, %B %d" -msgstr "" +msgstr "%A, %d %B" #. Translators: Shown on calendar heading when selected day occurs on different year #: ../js/ui/calendar.js:720 msgctxt "calendar heading" msgid "%A, %B %d, %Y" -msgstr "" +msgstr "%A, %d %B %Y" #: ../js/ui/calendar.js:730 msgid "Today" -msgstr "" +msgstr "Hôm nay" #: ../js/ui/calendar.js:734 msgid "Tomorrow" -msgstr "" +msgstr "Ngày mai" #: ../js/ui/calendar.js:743 msgid "This week" -msgstr "" +msgstr "Tuần này" #: ../js/ui/calendar.js:751 msgid "Next week" -msgstr "" +msgstr "Tuần tới" #: ../js/ui/dash.js:174 msgid "Remove" msgstr "Loại bỏ" #: ../js/ui/dateMenu.js:91 -#, fuzzy msgid "Date and Time Settings" -msgstr "Thiết lập hệ thống" +msgstr "Thiết lập ngày giờ" #: ../js/ui/dateMenu.js:110 msgid "Open Calendar" -msgstr "" +msgstr "Mở lịch" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:149 msgid "%a %b %e, %R:%S" -msgstr "%a %b %e, %R:%S" +msgstr "%R:%S, %a %b %e" #: ../js/ui/dateMenu.js:150 msgid "%a %b %e, %R" -msgstr "%a %b %e, %R" +msgstr "%R, %a %b %e" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/dateMenu.js:154 msgid "%a %R:%S" -msgstr "%a %R:%S" +msgstr "%R:%S %a" #: ../js/ui/dateMenu.js:155 msgid "%a %R" -msgstr "%a %R" +msgstr "%R %a" #. Translators: This is a time format with date used #. for AM/PM. @@ -525,80 +520,77 @@ msgstr "%a %l:%M %p" #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). #. #: ../js/ui/dateMenu.js:194 -#, fuzzy msgid "%A %B %e, %Y" -msgstr "%a %b %e, %R" +msgstr "%A %e %B, %Y" #: ../js/ui/docDisplay.js:19 msgid "RECENT ITEMS" msgstr "MỤC GẦN ĐÂY" #: ../js/ui/endSessionDialog.js:63 -#, fuzzy, c-format +#, c-format msgid "Log Out %s" -msgstr "Đăng xuất..." +msgstr "Đăng xuất %s" #: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 -#, fuzzy msgid "Log Out" -msgstr "Đăng xuất..." +msgstr "Đăng xuất" #: ../js/ui/endSessionDialog.js:65 msgid "Click Log Out to quit these applications and log out of the system." -msgstr "" +msgstr "Nhấn Đăng xuất để thoát những ứng dụng này và đăng xuất khỏi hệ thống." #: ../js/ui/endSessionDialog.js:66 #, c-format msgid "%s will be logged out automatically in %d seconds." -msgstr "" +msgstr "Sẽ đăng xuất %s tự động sau %d giây." #: ../js/ui/endSessionDialog.js:67 #, c-format msgid "You will be logged out automatically in %d seconds." -msgstr "" +msgstr "Bạn sẽ tự động đăng xuất sau %d giây." #: ../js/ui/endSessionDialog.js:68 msgid "Logging out of the system." -msgstr "" +msgstr "Đang xuất khỏi hệ thống." #: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 -#, fuzzy msgid "Shut Down" -msgstr "Tắt máy..." +msgstr "Tắt máy" #: ../js/ui/endSessionDialog.js:75 msgid "Click Shut Down to quit these applications and shut down the system." -msgstr "" +msgstr "Nhấn Tắt máy để thoát những ứng dụng này và tắt hệ thống." #: ../js/ui/endSessionDialog.js:76 #, c-format msgid "The system will shut down automatically in %d seconds." -msgstr "" +msgstr "Hệ thống sẽ tự động tắt sau %d giây." #: ../js/ui/endSessionDialog.js:77 msgid "Shutting down the system." -msgstr "" +msgstr "Tắt hệ thống." #: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 msgid "Restart" -msgstr "" +msgstr "Khởi động lại" #: ../js/ui/endSessionDialog.js:85 msgid "Click Restart to quit these applications and restart the system." -msgstr "" +msgstr "Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống." #: ../js/ui/endSessionDialog.js:86 #, c-format msgid "The system will restart automatically in %d seconds." -msgstr "" +msgstr "Hệ thống sẽ tự động khởi động lại sau %d giây." #: ../js/ui/endSessionDialog.js:87 msgid "Restarting the system." -msgstr "" +msgstr "Khởi động lại hệ thống." #: ../js/ui/endSessionDialog.js:395 msgid "Confirm" -msgstr "" +msgstr "Xác nhận" #: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 msgid "Cancel" @@ -635,9 +627,8 @@ msgid "Web Page" msgstr "Trang Web" #: ../js/ui/messageTray.js:1854 -#, fuzzy msgid "System Information" -msgstr "Thông tin tài khoản..." +msgstr "Thông tin hệ thống" #: ../js/ui/overview.js:88 msgid "Undo" @@ -741,7 +732,7 @@ msgstr "Tắt máy..." #: ../js/ui/status/accessibility.js:83 msgid "Zoom" -msgstr "Thu/Phóng" +msgstr "Phóng to" #: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" @@ -897,9 +888,8 @@ msgid "OK" msgstr "OK" #: ../js/ui/status/keyboard.js:72 -#, fuzzy msgid "Localization Settings" -msgstr "Thiết lập âm thanh" +msgstr "Thiết lập bản địa hoá" #: ../js/ui/status/power.js:85 msgid "Power Settings" @@ -971,7 +961,7 @@ msgstr "Máy phát" #: ../js/ui/status/power.js:253 msgid "Tablet" -msgstr "" +msgstr "Bảng" #: ../js/ui/status/power.js:255 msgid "Computer" From cae081950da834729abe213900f426bb2008ee7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Sat, 5 Mar 2011 15:38:08 +0700 Subject: [PATCH 12/74] po/vi.po: import from Damned Lies --- po/vi.po | 511 +++++++++++++++++++++++++------------------------------ 1 file changed, 236 insertions(+), 275 deletions(-) diff --git a/po/vi.po b/po/vi.po index e99fda340..93067db85 100644 --- a/po/vi.po +++ b/po/vi.po @@ -6,15 +6,16 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-12 00:44+0700\n" +"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" +"shell&component=general\n" +"POT-Creation-Date: 2011-03-05 08:37+0000\n" "PO-Revision-Date: 2011-03-05 15:33+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" -"Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../data/gnome-shell.desktop.in.in.h:1 @@ -29,11 +30,13 @@ msgstr "Quản lý cửa sổ và chạy ứng dụng" msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." -msgstr "Cho phép truy cập công cụ theo dõi và tìm lỗi nội bộ qua hộp thoại Alt-F2." +msgstr "" +"Cho phép truy cập công cụ theo dõi và tìm lỗi nội bộ qua hộp thoại Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" -msgstr "Bật công cụ nội bộ, hữu dụng với người phát triển và kiểm thử, qua Alt-F2" +msgstr "" +"Bật công cụ nội bộ, hữu dụng với người phát triển và kiểm thử, qua Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" @@ -47,29 +50,37 @@ msgstr "Tốc độ khung dùng lưu screencast." msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." -msgstr "Phần mở rộng GNOME Shell có thuộc tính uuid. Khoá này liệt kê danh sách phần mở rộng không nên nạp." +msgstr "" +"Phần mở rộng GNOME Shell có thuộc tính uuid. Khoá này liệt kê danh sách phần " +"mở rộng không nên nạp." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 +#, fuzzy +#| msgid "History for command (Alt-F2) dialog" +msgid "History for the looking glass dialog" +msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" + +#: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "Nếu đúng (true), hiện ngày trên đồng hồ, bên cạnh giờ." -#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "Nếu đúng (true), hiện giây." -#: ../data/org.gnome.shell.gschema.xml.in.h:9 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "Nếu đúng (true), hiện tuần ISO trong lịch." -#: ../data/org.gnome.shell.gschema.xml.in.h:10 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Danh sách ID tập tin desktop của ứng dụng yêu thích" -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 #, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " @@ -82,44 +93,59 @@ msgid "" "'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " "records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " "at the optimal thread count on the system." -msgstr "Đặt ống dẫn GStreamer dùng để thu hình. Tuân theo cú pháp gst-launch. Ống dẫn nên có pad sink không kết nối, nơi bắt đầu thu. Bình thường cũng nên có source pad không kết nối; đầu ra từ pad sẽ được ghi vào tập tin kết quả. Tuy nhiên ống dẫn có thể tự lưu đầu ra riêng - có thể hữu dụng để gửi kết quả đến máy chủ icecast thông qua shout2send hoặc tương tự. Nếu bỏ chọn hoặc đặt giá trị rỗng, ống dẫn mặc định sẽ được dùng, hiện thời là 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' và lưu ở dạng WEBM dùng VP8 codec. %T được dùng để thế chỗ cho số thread dự đoán tối ưu cho hệ thống." +msgstr "" +"Đặt ống dẫn GStreamer dùng để thu hình. Tuân theo cú pháp gst-launch. Ống " +"dẫn nên có pad sink không kết nối, nơi bắt đầu thu. Bình thường cũng nên có " +"source pad không kết nối; đầu ra từ pad sẽ được ghi vào tập tin kết quả. Tuy " +"nhiên ống dẫn có thể tự lưu đầu ra riêng - có thể hữu dụng để gửi kết quả " +"đến máy chủ icecast thông qua shout2send hoặc tương tự. Nếu bỏ chọn hoặc đặt " +"giá trị rỗng, ống dẫn mặc định sẽ được dùng, hiện thời là 'videorate ! " +"vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' và lưu ở dạng WEBM " +"dùng VP8 codec. %T được dùng để thế chỗ cho số thread dự đoán tối ưu cho hệ " +"thống." -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Hiện ngày trên đồng hồ" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Hiện tuần trên lịch" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Hiện giây" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." -msgstr "Ứng dụng tương ứng với những định danh này sẽ được hiển thị ở vùng ưa thích." +msgstr "" +"Ứng dụng tương ứng với những định danh này sẽ được hiển thị ở vùng ưa thích." -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " "a different container format." -msgstr "Tên tập tin cho screencast được lưu sẽ là tên độc nhất dự trên ngày hiện thời, và dùng phần mở rộng này. Khi lưu ở định dạng khác nhau thì tên này cũng nên khác nhau." +msgstr "" +"Tên tập tin cho screencast được lưu sẽ là tên độc nhất dự trên ngày hiện " +"thời, và dùng phần mở rộng này. Khi lưu ở định dạng khác nhau thì tên này " +"cũng nên khác nhau." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." -msgstr "Tốc độ khung của screencast lưu bởi bộ thu GNOME Shell theo số khung mỗi giây." +msgstr "" +"Tốc độ khung của screencast lưu bởi bộ thu GNOME Shell theo số khung mỗi " +"giây." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "Ống dẫn gstreamer để thu screencast" -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -127,143 +153,18 @@ msgid "" "remove already saved data." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "UUID của phần mở rộng cần tắt" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Có thu thập thống kê sử dụng ứng dụng không" -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "disabled OpenSearch providers" msgstr "Phần cung cấp OpenSearch bị tắt" -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 -msgid "Clip the crosshairs at the center" -msgstr "Cắt lưới chéo ở giữa" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 -msgid "Color of the crosshairs" -msgstr "Màu lưới chéo" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3 -msgid "" -"Determines the length of the vertical and horizontal lines that make up the " -"crosshairs." -msgstr "Xác định độ dài và rộng của những dòng tạo nên lưới chéo." - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4 -msgid "" -"Determines the position of the magnified mouse image within the magnified " -"view and how it reacts to system mouse movement. The values are - none: no " -"mouse tracking; - centered: the mouse image is displayed at the center of " -"the zoom region (which also represents the point under the system mouse) and " -"the magnified contents are scrolled as the system mouse moves; - " -"proportional: the position of the magnified mouse in the zoom region is " -"proportionally the same as the position of the system mouse on screen; - " -"push: when the magnified mouse intersects a boundary of the zoom region, the " -"contents are scrolled into view." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5 -msgid "" -"Determines the transparency of the crosshairs, from fully opaque to fully " -"transparent." -msgstr "Xác định độ trong suốt của lưới chéo, từ đặc đến trong suốt." - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6 -msgid "" -"Determines whether the crosshairs intersect the magnified mouse sprite, or " -"are clipped such that the ends of the horizontal and vertical lines surround " -"the mouse image." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 -msgid "Enable lens mode" -msgstr "Bật chế độ gương" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8 -msgid "" -"Enables/disables display of crosshairs centered on the magnified mouse " -"sprite." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9 -msgid "" -"For centered mouse tracking, when the system pointer is at or near the edge " -"of the screen, the magnified contents continue to scroll such that the " -"screen edge moves into the magnified view." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10 -msgid "Length of the crosshairs" -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11 -msgid "Magnification factor" -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12 -msgid "Mouse Tracking Mode" -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13 -msgid "Opacity of the crosshairs" -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14 -msgid "Screen position" -msgstr "Vị trí màn hình" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15 -msgid "Scroll magnified contents beyond the edges of the desktop" -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16 -msgid "Show or hide crosshairs" -msgstr "Hiện hoặc ẩn lưới chéo" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17 -msgid "Show or hide the magnifier" -msgstr "Hiện hoặc ẩn kính lúp" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18 -msgid "Show or hide the magnifier and all of its zoom regions." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19 -msgid "" -"The color of the the vertical and horizontal lines that make up the " -"crosshairs." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20 -msgid "" -"The magnified view either fills the entire screen, or occupies the top-half, " -"bottom-half, left-half, or right-half of the screen." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21 -msgid "" -"The power of the magnification. A value of 1.0 means no magnification. A " -"value of 2.0 doubles the size." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22 -msgid "Thickness of the crosshairs" -msgstr "Độ dày lưới chéo" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23 -msgid "" -"Whether the magnified view should be centered over the location of the " -"system mouse and move with it." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24 -msgid "Width of the vertical and horizontal lines that make up the crosshairs." -msgstr "Độ rộng của đường dọc/ngang hình thành dấu gạch chéo." - #: ../js/misc/util.js:86 msgid "Command not found" msgstr "Không tìm thấy lệnh" @@ -284,27 +185,27 @@ msgid "Execution of '%s' failed:" msgstr "Lỗi thực hiện '%s':" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:174 +#: ../js/ui/appDisplay.js:195 msgid "All" msgstr "Tất cả" -#: ../js/ui/appDisplay.js:261 +#: ../js/ui/appDisplay.js:285 msgid "APPLICATIONS" msgstr "ỨNG DỤNG" -#: ../js/ui/appDisplay.js:291 -msgid "PREFERENCES" -msgstr "TUỲ THÍCH" +#: ../js/ui/appDisplay.js:311 +msgid "SETTINGS" +msgstr "" -#: ../js/ui/appDisplay.js:592 +#: ../js/ui/appDisplay.js:565 msgid "New Window" msgstr "Cửa sổ mới" -#: ../js/ui/appDisplay.js:596 +#: ../js/ui/appDisplay.js:568 msgid "Remove from Favorites" msgstr "Bỏ đánh dấu ưa thích" -#: ../js/ui/appDisplay.js:597 +#: ../js/ui/appDisplay.js:569 msgid "Add to Favorites" msgstr "Đánh dấu ưa thích" @@ -321,19 +222,19 @@ msgstr "Đã bỏ đánh dấu ưa thích cho %s" #. 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:65 +#: ../js/ui/calendar.js:66 msgctxt "event list time" msgid "All Day" msgstr "Nguyên ngày" #. Translators: Shown in calendar event list, if 24h format -#: ../js/ui/calendar.js:70 +#: ../js/ui/calendar.js:71 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format -#: ../js/ui/calendar.js:77 +#: ../js/ui/calendar.js:78 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" @@ -343,43 +244,43 @@ msgstr "%l:%M %p" #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. -#: ../js/ui/calendar.js:117 +#: ../js/ui/calendar.js:118 msgctxt "grid sunday" msgid "S" msgstr "C" #. Translators: Calendar grid abbreviation for Monday -#: ../js/ui/calendar.js:119 +#: ../js/ui/calendar.js:120 msgctxt "grid monday" msgid "M" msgstr "2" #. Translators: Calendar grid abbreviation for Tuesday -#: ../js/ui/calendar.js:121 +#: ../js/ui/calendar.js:122 msgctxt "grid tuesday" msgid "T" msgstr "3" #. Translators: Calendar grid abbreviation for Wednesday -#: ../js/ui/calendar.js:123 +#: ../js/ui/calendar.js:124 msgctxt "grid wednesday" msgid "W" msgstr "4" #. Translators: Calendar grid abbreviation for Thursday -#: ../js/ui/calendar.js:125 +#: ../js/ui/calendar.js:126 msgctxt "grid thursday" msgid "T" msgstr "5" #. Translators: Calendar grid abbreviation for Friday -#: ../js/ui/calendar.js:127 +#: ../js/ui/calendar.js:128 msgctxt "grid friday" msgid "F" msgstr "6" #. Translators: Calendar grid abbreviation for Saturday -#: ../js/ui/calendar.js:129 +#: ../js/ui/calendar.js:130 msgctxt "grid saturday" msgid "S" msgstr "7" @@ -390,77 +291,77 @@ msgstr "7" #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. -#: ../js/ui/calendar.js:142 +#: ../js/ui/calendar.js:143 msgctxt "list sunday" msgid "Su" msgstr "CN" #. Translators: Event list abbreviation for Monday -#: ../js/ui/calendar.js:144 +#: ../js/ui/calendar.js:145 msgctxt "list monday" msgid "M" msgstr "T2" #. Translators: Event list abbreviation for Tuesday -#: ../js/ui/calendar.js:146 +#: ../js/ui/calendar.js:147 msgctxt "list tuesday" msgid "T" msgstr "T3" #. Translators: Event list abbreviation for Wednesday -#: ../js/ui/calendar.js:148 +#: ../js/ui/calendar.js:149 msgctxt "list wednesday" msgid "W" msgstr "T4" #. Translators: Event list abbreviation for Thursday -#: ../js/ui/calendar.js:150 +#: ../js/ui/calendar.js:151 msgctxt "list thursday" msgid "Th" msgstr "T5" #. Translators: Event list abbreviation for Friday -#: ../js/ui/calendar.js:152 +#: ../js/ui/calendar.js:153 msgctxt "list friday" msgid "F" msgstr "T6" #. Translators: Event list abbreviation for Saturday -#: ../js/ui/calendar.js:154 +#: ../js/ui/calendar.js:155 msgctxt "list saturday" msgid "S" msgstr "T7" #. Translators: Text to show if there are no events -#: ../js/ui/calendar.js:701 +#: ../js/ui/calendar.js:704 msgid "Nothing Scheduled" msgstr "Không có lịch hẹn" #. Translators: Shown on calendar heading when selected day occurs on current year -#: ../js/ui/calendar.js:717 +#: ../js/ui/calendar.js:720 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %d %B" #. Translators: Shown on calendar heading when selected day occurs on different year -#: ../js/ui/calendar.js:720 +#: ../js/ui/calendar.js:723 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d %B %Y" -#: ../js/ui/calendar.js:730 +#: ../js/ui/calendar.js:733 msgid "Today" msgstr "Hôm nay" -#: ../js/ui/calendar.js:734 +#: ../js/ui/calendar.js:737 msgid "Tomorrow" msgstr "Ngày mai" -#: ../js/ui/calendar.js:743 +#: ../js/ui/calendar.js:746 msgid "This week" msgstr "Tuần này" -#: ../js/ui/calendar.js:751 +#: ../js/ui/calendar.js:754 msgid "Next week" msgstr "Tuần tới" @@ -478,48 +379,48 @@ msgstr "Mở lịch" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:149 +#: ../js/ui/dateMenu.js:162 msgid "%a %b %e, %R:%S" msgstr "%R:%S, %a %b %e" -#: ../js/ui/dateMenu.js:150 +#: ../js/ui/dateMenu.js:163 msgid "%a %b %e, %R" msgstr "%R, %a %b %e" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:154 +#: ../js/ui/dateMenu.js:167 msgid "%a %R:%S" msgstr "%R:%S %a" -#: ../js/ui/dateMenu.js:155 +#: ../js/ui/dateMenu.js:168 msgid "%a %R" msgstr "%R %a" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:162 +#: ../js/ui/dateMenu.js:175 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" -#: ../js/ui/dateMenu.js:163 +#: ../js/ui/dateMenu.js:176 msgid "%a %b %e, %l:%M %p" msgstr "%a %b %e, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:167 +#: ../js/ui/dateMenu.js:180 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/dateMenu.js:168 +#: ../js/ui/dateMenu.js:181 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. 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:194 +#: ../js/ui/dateMenu.js:207 msgid "%A %B %e, %Y" msgstr "%A %e %B, %Y" @@ -577,7 +478,8 @@ msgstr "Khởi động lại" #: ../js/ui/endSessionDialog.js:85 msgid "Click Restart to quit these applications and restart the system." -msgstr "Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống." +msgstr "" +"Nhấn Khởi động lại để thoát những ứng dụng này và khởi động lại hệ thống." #: ../js/ui/endSessionDialog.js:86 #, c-format @@ -596,37 +498,37 @@ msgstr "Xác nhận" msgid "Cancel" msgstr "Thôi" -#: ../js/ui/lookingGlass.js:584 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "Chưa cài phần mở rộng" -#: ../js/ui/lookingGlass.js:621 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "Bật" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:623 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Tắt" -#: ../js/ui/lookingGlass.js:625 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "Lỗi" -#: ../js/ui/lookingGlass.js:627 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "Hết hạn" -#: ../js/ui/lookingGlass.js:652 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "Xem mã nguồn" -#: ../js/ui/lookingGlass.js:658 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "Trang Web" -#: ../js/ui/messageTray.js:1854 +#: ../js/ui/messageTray.js:1907 msgid "System Information" msgstr "Thông tin hệ thống" @@ -634,23 +536,23 @@ msgstr "Thông tin hệ thống" msgid "Undo" msgstr "Hoàn lại" -#: ../js/ui/overview.js:159 +#: ../js/ui/overview.js:183 msgid "Windows" msgstr "Cửa sổ" -#: ../js/ui/overview.js:162 +#: ../js/ui/overview.js:186 msgid "Applications" msgstr "Ứng dụng" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:480 +#: ../js/ui/panel.js:531 #, c-format msgid "Quit %s" msgstr "Thoát %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:614 +#: ../js/ui/panel.js:899 msgid "Activities" msgstr "Hoạt động" @@ -676,101 +578,101 @@ msgstr "ĐỊA ĐIỂM & THIẾT BỊ" #. "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:512 +#: ../js/ui/popupMenu.js:612 msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:209 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Vui lòng nhập lệnh:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "Đang tìm..." -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "Không tìm thấy." -#: ../js/ui/statusMenu.js:102 +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "" + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +#, fuzzy +#| msgid "Suspend..." +msgid "Suspend" +msgstr "Ngưng..." + +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "Có mặt" -#: ../js/ui/statusMenu.js:107 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "Bận" -#: ../js/ui/statusMenu.js:115 +#: ../js/ui/statusMenu.js:138 msgid "My Account" msgstr "Tài khoản" -#: ../js/ui/statusMenu.js:119 +#: ../js/ui/statusMenu.js:142 msgid "System Settings" msgstr "Thiết lập hệ thống" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Khoá màn hình" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Chuyển người dùng" -#: ../js/ui/statusMenu.js:135 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Đăng xuất..." -#. This is temporarily removed, see -#. http://bugzilla.gnome.org/show_bug.cgi?id=636680 -#. for details. -#. item = new PopupMenu.PopupMenuItem(_("Suspend...")); -#. item.connect('activate', Lang.bind(this, this._onShutDownActivate)); -#. this.menu.addMenuItem(item); -#: ../js/ui/statusMenu.js:149 -msgid "Shut Down..." -msgstr "Tắt máy..." - -#: ../js/ui/status/accessibility.js:83 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "Phóng to" -#: ../js/ui/status/accessibility.js:89 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "Trình đọc màn hình" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "Bàn phím màn hình" -#: ../js/ui/status/accessibility.js:95 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "Cảnh báo trực quan" -#: ../js/ui/status/accessibility.js:98 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "Phím dính" -#: ../js/ui/status/accessibility.js:101 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "Phím chậm" -#: ../js/ui/status/accessibility.js:104 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "Phím dội" -#: ../js/ui/status/accessibility.js:107 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "Phím chuột" -#: ../js/ui/status/accessibility.js:111 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "Thiết lập hỗ trợ truy cập" -#: ../js/ui/status/accessibility.js:163 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "Tương phản cao" -#: ../js/ui/status/accessibility.js:205 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Chữ lớn" @@ -825,7 +727,7 @@ msgstr "Thiết lập bàn phím" msgid "Mouse Settings" msgstr "Thiết lập chuột" -#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63 +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 msgid "Sound Settings" msgstr "Thiết lập âm thanh" @@ -887,7 +789,11 @@ msgstr "Vui lòng nhập số PIN ghi trên thiết bị." msgid "OK" msgstr "OK" -#: ../js/ui/status/keyboard.js:72 +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "" + +#: ../js/ui/status/keyboard.js:76 msgid "Localization Settings" msgstr "Thiết lập bản địa hoá" @@ -895,106 +801,112 @@ msgstr "Thiết lập bản địa hoá" msgid "Power Settings" msgstr "Thiết lập năng lượng" -#: ../js/ui/status/power.js:112 +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "" + +#: ../js/ui/status/power.js:117 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "%d giờ còn lại" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:115 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s còn lại" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "hour" msgid_plural "hours" msgstr[0] "giờ" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "minute" msgid_plural "minutes" msgstr[0] "%d phút" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:125 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d phút còn lại" -#: ../js/ui/status/power.js:235 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "Bộ đổi điện AC" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "Pin laptop" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "Màn hình" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "Chuột" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "Bàn phím" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "Điện thoại cầm tay" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "Máy phát" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "Bảng" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "Máy tính" -#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Không biết" -#: ../js/ui/status/volume.js:42 +#: ../js/ui/status/volume.js:44 msgid "Volume" msgstr "Âm lượng" -#: ../js/ui/status/volume.js:55 +#: ../js/ui/status/volume.js:57 msgid "Microphone" msgstr "Micrô" -#: ../js/ui/telepathyClient.js:563 +#: ../js/ui/telepathyClient.js:239 #, c-format msgid "%s is online." msgstr "%s trực tuyến." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:244 #, c-format msgid "%s is offline." msgstr "%s ngoại tuyến." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:247 #, c-format msgid "%s is away." msgstr "%s đi vắng." -#: ../js/ui/telepathyClient.js:574 +#: ../js/ui/telepathyClient.js:250 #, c-format msgid "%s is busy." msgstr "%s bận." @@ -1002,21 +914,25 @@ msgstr "%s bận." #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. -#: ../js/ui/telepathyClient.js:669 +#: ../js/ui/telepathyClient.js:348 #, no-c-format msgid "Sent at %X on %A" msgstr "Đã gửi %X lúc %A" -#: ../js/ui/viewSelector.js:26 -msgid "Search your computer" -msgstr "Tìm trong máy" +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:103 +msgid "Type to search..." +msgstr "" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s đã hoàn tất khởi chạy" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "'%s' đã sẵn sàng" @@ -1041,34 +957,38 @@ msgstr[0] "%u đầu vào" msgid "System Sounds" msgstr "Âm thanh hệ thống" -#: ../src/shell-global.c:1363 +#: ../src/shell-global.c:1298 msgid "Less than a minute ago" msgstr "Chưa đến một phút" -#: ../src/shell-global.c:1367 +#: ../src/shell-global.c:1302 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d phút trước" -#: ../src/shell-global.c:1372 +#: ../src/shell-global.c:1307 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d giờ trước" -#: ../src/shell-global.c:1377 +#: ../src/shell-global.c:1312 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ngày trước" -#: ../src/shell-global.c:1382 +#: ../src/shell-global.c:1317 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d tuần trước" +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "" + #: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Thư mục chính" @@ -1093,6 +1013,50 @@ msgstr "Tìm" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clip the crosshairs at the center" +#~ msgstr "Cắt lưới chéo ở giữa" + +#~ msgid "Color of the crosshairs" +#~ msgstr "Màu lưới chéo" + +#~ msgid "" +#~ "Determines the length of the vertical and horizontal lines that make up " +#~ "the crosshairs." +#~ msgstr "Xác định độ dài và rộng của những dòng tạo nên lưới chéo." + +#~ msgid "" +#~ "Determines the transparency of the crosshairs, from fully opaque to fully " +#~ "transparent." +#~ msgstr "Xác định độ trong suốt của lưới chéo, từ đặc đến trong suốt." + +#~ msgid "Enable lens mode" +#~ msgstr "Bật chế độ gương" + +#~ msgid "Screen position" +#~ msgstr "Vị trí màn hình" + +#~ msgid "Show or hide crosshairs" +#~ msgstr "Hiện hoặc ẩn lưới chéo" + +#~ msgid "Show or hide the magnifier" +#~ msgstr "Hiện hoặc ẩn kính lúp" + +#~ msgid "Thickness of the crosshairs" +#~ msgstr "Độ dày lưới chéo" + +#~ msgid "" +#~ "Width of the vertical and horizontal lines that make up the crosshairs." +#~ msgstr "Độ rộng của đường dọc/ngang hình thành dấu gạch chéo." + +#~ msgid "PREFERENCES" +#~ msgstr "TUỲ THÍCH" + +#~ msgid "Shut Down..." +#~ msgstr "Tắt máy..." + +#~ msgid "Search your computer" +#~ msgstr "Tìm trong máy" + #~ msgid "Clock" #~ msgstr "Đồng hồ" @@ -1125,9 +1089,6 @@ msgstr "%1$s: %2$s" #~ msgid "Preferences" #~ msgstr "Thiết lập" -#~ msgid "Suspend..." -#~ msgstr "Ngưng..." - #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." From aff9b419cf2e236c648b71c281e3cd628f7937b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Sat, 5 Mar 2011 15:42:21 +0700 Subject: [PATCH 13/74] Updated Vietnamese translation --- po/vi.po | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/po/vi.po b/po/vi.po index 93067db85..66df4c150 100644 --- a/po/vi.po +++ b/po/vi.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&component=general\n" "POT-Creation-Date: 2011-03-05 08:37+0000\n" -"PO-Revision-Date: 2011-03-05 15:33+0700\n" +"PO-Revision-Date: 2011-03-05 15:41+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" @@ -59,10 +59,9 @@ msgid "History for command (Alt-F2) dialog" msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 -#, fuzzy #| msgid "History for command (Alt-F2) dialog" msgid "History for the looking glass dialog" -msgstr "Hộp thoại lịch sử lệnh (Alt-F2)" +msgstr "Lịch sử hộp thoại looking glass" #: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." @@ -151,7 +150,7 @@ msgid "" "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." -msgstr "" +msgstr "GNOME Shell bình thường sẽ theo dõi các ứng dụng tích cực để thể hiện phù hợp (ví dụ, bộ phóng). Mặc dù thông tin này là riêng tư, bạn vẫn có thể tắt vì lý do cá nhân. Chú ý là làm vậy sẽ không xoá bỏ những dữ liệu đã có." #: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" @@ -195,7 +194,7 @@ msgstr "ỨNG DỤNG" #: ../js/ui/appDisplay.js:311 msgid "SETTINGS" -msgstr "" +msgstr "THIẾT LẬP" #: ../js/ui/appDisplay.js:565 msgid "New Window" @@ -596,13 +595,12 @@ msgstr "Không tìm thấy." #: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 msgid "Power Off..." -msgstr "" +msgstr "Tắt máy..." #: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 -#, fuzzy #| msgid "Suspend..." msgid "Suspend" -msgstr "Ngưng..." +msgstr "Ngưng" #: ../js/ui/statusMenu.js:125 msgid "Available" @@ -791,7 +789,7 @@ msgstr "OK" #: ../js/ui/status/keyboard.js:73 msgid "Show Keyboard Layout..." -msgstr "" +msgstr "Hiện bố trí bàn phím..." #: ../js/ui/status/keyboard.js:76 msgid "Localization Settings" @@ -805,7 +803,7 @@ msgstr "Thiết lập năng lượng" #. to estimate battery life #: ../js/ui/status/power.js:110 msgid "Estimating..." -msgstr "" +msgstr "Ước lượng..." #: ../js/ui/status/power.js:117 #, c-format @@ -925,7 +923,7 @@ msgstr "Đã gửi %X lúc %A" #. characters. #: ../js/ui/viewSelector.js:103 msgid "Type to search..." -msgstr "" +msgstr "Nhập để tìm..." #: ../js/ui/windowAttentionHandler.js:42 #, c-format @@ -987,7 +985,7 @@ msgstr[0] "%d tuần trước" #: ../src/shell-polkit-authentication-agent.c:334 msgid "Authentication dialog was dismissed by the user" -msgstr "" +msgstr "Hộp thoại xác thực bị người dùng bỏ qua" #: ../src/shell-util.c:89 msgid "Home Folder" From fefe2df6b50f6332097576bfcdbd4774aa0f66ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 3 Mar 2011 22:11:10 +0100 Subject: [PATCH 14/74] st-widget: Add automagic rtl/ltr pseudo classes At times, RTL locales require different CSS, so always create theme nodes with :ltr/:rtl pseudo classes depending on the widget's text direction, to provide an easy way to handle those cases without requiring a separate stylesheet. https://bugzilla.gnome.org/show_bug.cgi?id=643835 --- src/st/st-widget.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/st/st-widget.c b/src/st/st-widget.c index a0897968a..02148ba32 100644 --- a/src/st/st-widget.c +++ b/src/st/st-widget.c @@ -554,6 +554,7 @@ st_widget_get_theme_node (StWidget *widget) StThemeNode *parent_node = NULL; ClutterStage *stage = NULL; ClutterActor *parent; + char *pseudo_class, *direction_pseudo_class; parent = clutter_actor_get_parent (CLUTTER_ACTOR (widget)); while (parent != NULL) @@ -575,13 +576,31 @@ st_widget_get_theme_node (StWidget *widget) if (parent_node == NULL) parent_node = get_root_theme_node (CLUTTER_STAGE (stage)); + /* Always append a "magic" pseudo class indicating the text + * direction, to allow to adapt the CSS when necessary without + * requiring separate style sheets. + */ + if (st_widget_get_direction (widget) == ST_TEXT_DIRECTION_RTL) + direction_pseudo_class = "rtl"; + else + direction_pseudo_class = "ltr"; + + if (priv->pseudo_class) + pseudo_class = g_strconcat(priv->pseudo_class, " ", + direction_pseudo_class, NULL); + else + pseudo_class = direction_pseudo_class; + priv->theme_node = st_theme_node_new (st_theme_context_get_for_stage (stage), parent_node, priv->theme, G_OBJECT_TYPE (widget), clutter_actor_get_name (CLUTTER_ACTOR (widget)), priv->style_class, - priv->pseudo_class, + pseudo_class, priv->inline_style); + + if (pseudo_class != direction_pseudo_class) + g_free (pseudo_class); } return priv->theme_node; @@ -1438,8 +1457,15 @@ st_widget_get_direction (StWidget *self) void st_widget_set_direction (StWidget *self, StTextDirection dir) { + StTextDirection old_direction; + g_return_if_fail (ST_IS_WIDGET (self)); + + old_direction = st_widget_get_direction (self); self->priv->direction = dir; + + if (old_direction != st_widget_get_direction (self)) + st_widget_style_changed (self); } /** From 8ed191283a0bc959f9650df136603f3220008949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 3 Mar 2011 22:38:24 +0100 Subject: [PATCH 15/74] Remove manually added :rtl pseudo classes To deal with different CSS in RTL locales, we used to manually add an :rtl pseudo class to some actors. With automatically assigned :ltr/:rtl selectors this is no longer necessary. https://bugzilla.gnome.org/show_bug.cgi?id=643835 --- js/ui/dash.js | 5 ----- js/ui/panel.js | 7 ------- js/ui/workspaceThumbnail.js | 4 ---- 3 files changed, 16 deletions(-) diff --git a/js/ui/dash.js b/js/ui/dash.js index e0a48e59e..6a39edc48 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -262,11 +262,6 @@ Dash.prototype = { clip_to_allocation: true }); this._box._delegate = this; - // This will eventually be automatic, see - // https://bugzilla.gnome.org/show_bug.cgi?id=584662 - if (St.Widget.get_default_direction () == St.TextDirection.RTL) - this._box.add_style_pseudo_class('rtl'); - this.actor = new St.Bin({ y_align: St.Align.START, child: this._box }); this.actor.connect('notify::height', Lang.bind(this, function() { diff --git a/js/ui/panel.js b/js/ui/panel.js index 95dc2bcac..7b86db7fa 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -813,13 +813,6 @@ Panel.prototype = { this._centerBox = new St.BoxLayout({ name: 'panelCenter' }); this._rightBox = new St.BoxLayout({ name: 'panelRight' }); - // This will eventually be automatic, see - // https://bugzilla.gnome.org/show_bug.cgi?id=584662 - if (St.Widget.get_default_direction() == St.TextDirection.RTL) { - this._leftBox.add_style_pseudo_class('rtl'); - this._rightBox.add_style_pseudo_class('rtl'); - } - this._leftCorner = new PanelCorner(St.Side.LEFT); this._rightCorner = new PanelCorner(St.Side.RIGHT); diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js index d3acd3a5e..9aeab981c 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js @@ -402,10 +402,6 @@ ThumbnailsBox.prototype = { // for the border and padding of the background actor. this._background = new St.Bin({ style_class: 'workspace-thumbnails-background' }); - // This will eventually be automatic, see https://bugzilla.gnome.org/show_bug.cgi?id=584662 - if (St.Widget.get_default_direction () == St.TextDirection.RTL) - this._background.add_style_pseudo_class('rtl'); - this.actor.add_actor(this._background); let indicator = new St.Bin({ style_class: 'workspace-thumbnail-indicator' }); From 0b1bf5f6424ffa5c1ce1034e9888a3099db76b4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 4 Mar 2011 00:48:17 +0100 Subject: [PATCH 16/74] theme: Adjust CSS for RTL locales Use :ltr/:rtl pseudo selectors where the CSS depends on the locale's text direction. https://bugzilla.gnome.org/show_bug.cgi?id=643835 --- data/Makefile.am | 3 +- ...r-selected.svg => filter-selected-ltr.svg} | 0 data/theme/filter-selected-rtl.svg | 81 ++++++++++ data/theme/gnome-shell.css | 143 ++++++++++++++++-- 4 files changed, 214 insertions(+), 13 deletions(-) rename data/theme/{filter-selected.svg => filter-selected-ltr.svg} (100%) create mode 100644 data/theme/filter-selected-rtl.svg diff --git a/data/Makefile.am b/data/Makefile.am index 1f207ef78..58c746438 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -26,7 +26,8 @@ dist_theme_DATA = \ theme/close.svg \ theme/corner-ripple.png \ theme/dash-placeholder.svg \ - theme/filter-selected.svg \ + theme/filter-selected-ltr.svg \ + theme/filter-selected-rtl.svg \ theme/gnome-shell.css \ theme/mosaic-view-active.svg \ theme/mosaic-view.svg \ diff --git a/data/theme/filter-selected.svg b/data/theme/filter-selected-ltr.svg similarity index 100% rename from data/theme/filter-selected.svg rename to data/theme/filter-selected-ltr.svg diff --git a/data/theme/filter-selected-rtl.svg b/data/theme/filter-selected-rtl.svg new file mode 100644 index 000000000..94af6bb8f --- /dev/null +++ b/data/theme/filter-selected-rtl.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index da21721e7..56e7496bd 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -195,21 +195,19 @@ StTooltip StLabel { font-weight: bold; } -#panelLeft { +#panelLeft:ltr { padding-right: 4px; } #panelLeft:rtl { - padding-right: 0px; padding-left: 4px; } -#panelRight { +#panelRight:ltr { padding-left: 4px; } #panelRight:rtl { - padding-left: 0px; padding-right: 4px; } @@ -297,6 +295,11 @@ StTooltip StLabel { padding-left: 14px; } +#legacyTray:rtl { + padding-left: 0px; + padding-right: 14px; +} + #legacyTray:compact { spacing: 8px; } @@ -360,6 +363,10 @@ StTooltip StLabel { -shell-close-overlap: 16px; } +.window-close:rtl { + -st-background-image-shadow: 2px 2px 6px rgba(0,0,0,0.5); +} + /* Dash */ #dash { @@ -473,10 +480,15 @@ StTooltip StLabel { } #searchResultsContent { - padding: 0 20px 0 0; + padding-right: 20px; spacing: 36px; } +#searchResultsContent:rtl { + padding-right: 0px; + padding-left: 20px; +} + .search-statustext, .search-section-header { padding: 4px 12px; @@ -541,6 +553,11 @@ StTooltip StLabel { spacing: 20px; } +.all-app:rtl { + padding-right: 16px; + padding-left: 25px; +} + .app-filter { font-size: 14px; font-weight: bold; @@ -551,10 +568,15 @@ StTooltip StLabel { .app-filter:selected { color: #ffffff; - background-image: url("filter-selected.svg"); + background-image: url("filter-selected-ltr.svg"); background-position: 190px 10px; } +.app-filter:selected:rtl { + background-image: url("filter-selected-rtl.svg"); + background-position: 10px 10px; +} + .dash-item-container > .app-well-app { padding: 4px 8px; } @@ -765,6 +787,11 @@ StTooltip StLabel { background-image: url("calendar-arrow-left.svg"); border-radius: 4px; } + +.calendar-change-month-back:rtl { + background-image: url("calendar-arrow-right.svg"); +} + .calendar-change-month-back:hover { background-color: #999999; } @@ -778,6 +805,11 @@ StTooltip StLabel { background-image: url("calendar-arrow-right.svg"); border-radius: 4px; } + +.calendar-change-month-forward:rtl { + background-image: url("calendar-arrow-left.svg"); +} + .calendar-change-month-forward:hover { background-color: #999999; } @@ -872,18 +904,31 @@ StTooltip StLabel { padding-left: 0.3em; } +.events-day-header:rtl { + padding-left: 0em; + padding-right: 0.3em; +} + .events-day-dayname { font-size: 12px; color: rgba(153, 153, 153, 1.0); text-align: left; } +.events-day-dayname:rtl { + text-align: right; +} + .events-day-time { font-size: 12px; color: #fff; text-align: right; } +.events-day-time:rtl { + text-align: left; +} + .events-day-task { font-size: 12px; color: rgba(153, 153, 153, 1.0); @@ -898,6 +943,11 @@ StTooltip StLabel { padding-right: 8px; } +.events-time-box:rtl { + padding-right: 0px; + padding-left: 8px; +} + .events-event-box { } @@ -951,10 +1001,14 @@ StTooltip StLabel { height: 1em; } -#notification-scrollview > StScrollBar { +#notification-scrollview:ltr > StScrollBar { padding-left: 6px; } +#notification-scrollview:rtl > StScrollBar { + padding-right: 6px; +} + #notification-body { spacing: 5px; } @@ -1014,6 +1068,11 @@ StTooltip StLabel { border-radius: 4px; } +.chat-received:rtl { + padding-left: 0px; + padding-right: 4px; +} + .chat-sent { background-gradient-direction: horizontal; background-gradient-start: rgba(255, 255, 255, 0); @@ -1023,6 +1082,11 @@ StTooltip StLabel { border-radius: 4px; } +.chat-sent:rtl { + padding-left: 0px; + padding-right: 4px; +} + .chat-meta-message { padding-left: 4px; border-radius: 4px; @@ -1030,6 +1094,11 @@ StTooltip StLabel { color: #bbbbbb; } +.chat-meta-message:rtl { + padding-left: 0px; + padding-right: 4px; +} + #notification StEntry { padding: 4px; border-radius: 4px; @@ -1066,21 +1135,39 @@ StTooltip StLabel { height: 36px; } -.summary-source-button { +#summary-mode:rtl { + padding: 2px 4px 0px 0px; +} + +.summary-source-button:ltr { padding-left: 4px; padding-right: 16px; } -.summary-source-button:last-child { +.summary-source-button:rtl { + padding-right: 4px; + padding-left: 16px; +} + +.summary-source-button:last-child:ltr { padding-right: 12px; } +.summary-source-button:last-child:rtl { + padding-left: 12px; +} + .source-title { font-size: 12px; font-weight: bold; padding-left: 4px; } +.source-title:rtl { + padding-left: 0px; + padding-right: 4px; +} + /* App Switcher */ #altTabPopup { padding: 8px; @@ -1302,6 +1389,11 @@ StTooltip StLabel { padding-bottom: 30px; } +.end-session-dialog-subject:rtl { + padding-left: 0px; + padding-right: 17px; +} + .end-session-dialog-description { font-size: 10pt; color: white; @@ -1310,6 +1402,11 @@ StTooltip StLabel { width: 16em; } +.end-session-dialog-description:rtl { + padding-right: 17px; + padding-left: 40px; +} + .end-session-dialog-logout-icon { border: 2px solid #8b8b8b; border-radius: 5px; @@ -1331,14 +1428,27 @@ StTooltip StLabel { padding-right: 32px; } -.end-session-dialog-app-list-item { +.end-session-dialog-app-list:rtl { + padding-right: 17px; + padding-left: 32px; +} + +.end-session-dialog-app-list-item:ltr { padding-right: 1em; } -.end-session-dialog-app-list-item-icon { +.end-session-dialog-app-list-item:rtl { + padding-left: 1em; +} + +.end-session-dialog-app-list-item-icon:ltr { padding-right: 17px; } +.end-session-dialog-app-list-item-icon:rtl { + padding-left: 17px; +} + .end-session-dialog-app-list-item-name { font-size: 10pt; } @@ -1379,10 +1489,19 @@ StTooltip StLabel { spacing: 10px; } -.polkit-dialog-password-label { +.polkit-dialog-user-layout:rtl { + padding-left: 0px; + padding-right: 10px; +} + +.polkit-dialog-password-label:ltr { padding-right: 0.5em; } +.polkit-dialog-password-label:rtl { + padding-left: 0.5em; +} + .polkit-dialog-password-entry { background-color: white; color: black; From 5e08b248e8b3bd1c149942d9d2d935c5a5efcebf Mon Sep 17 00:00:00 2001 From: Ivaylo Valkov Date: Sat, 5 Mar 2011 23:07:36 +0200 Subject: [PATCH 17/74] Updated Bulgarian translation --- po/bg.po | 984 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 738 insertions(+), 246 deletions(-) diff --git a/po/bg.po b/po/bg.po index 6f07f4466..57dc025ba 100644 --- a/po/bg.po +++ b/po/bg.po @@ -1,14 +1,14 @@ # Bulgarian translation of gnome-shell po-file. -# Copyright (C) 2010 Free Software Foundation, Inc. +# Copyright (C) 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-shell package. -# Ivaylo Valkov , 2010. +# Ivaylo Valkov , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-07-25 18:40+0300\n" -"PO-Revision-Date: 2010-07-25 18:35+0300\n" +"POT-Creation-Date: 2011-03-05 23:07+0200\n" +"PO-Revision-Date: 2011-03-05 23:07+0200\n" "Last-Translator: Ivaylo Valkov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -25,14 +25,6 @@ msgstr "Обвивка на GNOME" msgid "Window management and application launching" msgstr "Управление на прозорци и стартиране на програми" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Часовник" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Персонализиране на часовника в панела" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -42,24 +34,20 @@ msgstr "" "чрез Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Личен формат за часовника" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Включване на вътрешни инструменти полезни за разработчици и изпитатели чрез " "Alt-F2" -#: ../data/org.gnome.shell.gschema.xml.in.h:4 +#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "Разширение на файла за съхранение на записите" -#: ../data/org.gnome.shell.gschema.xml.in.h:5 +#: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "Честота на кадрите за създаваните записи" -#: ../data/org.gnome.shell.gschema.xml.in.h:6 +#: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." @@ -67,45 +55,34 @@ msgstr "" "Разширенията на Обвивката на GNOME имат идентификатор (uuid). Този ключ " "съдържа списък на разширенията, които да не се зареждат." -#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "История на командата Alt-F2" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "History for the looking glass dialog" +msgstr "История на прозореца с огледалото" + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Формат на часа" +msgid "If true, display date in the clock, in addition to time." +msgstr "Показване на дата в допълнение към времето, ако е истина." #: ../data/org.gnome.shell.gschema.xml.in.h:9 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." -msgstr "" -"Показване на дата в допълнение към времето, ако е зададено „истина“ и " -"форматът е „12-hour“ или „24-hour“." +msgid "If true, display seconds in time." +msgstr "Показване на секундите в допълнение към времето, ако е истина." #: ../data/org.gnome.shell.gschema.xml.in.h:10 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." -msgstr "" -"Показване на секунди към времето, ако е зададено „истина“ и форматът е „12-" -"hour“ или „24-hour“." +msgid "If true, display the ISO week date in the calendar." +msgstr "Показване на деня от седмицата по ISO, ако е истина." #: ../data/org.gnome.shell.gschema.xml.in.h:11 -msgid "If true, display the ISO week date in the calendar." -msgstr "Показване на деня от седмицата по ISO, ако е зададено „истина“." - -#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "List of desktop file IDs for favorite applications" msgstr "" "Списък на идентификаторите на файловете във формат .desktop за любими " "програми" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "Цялостен преглед на режима на изглед на работния плот" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " @@ -114,7 +91,9 @@ msgid "" "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." msgstr "" "Задава конвейера на GStreamer, който ще се използва за кодиране на записите. " "Използвайте синтаксиса на gst-launch. Конвейерът трябва да бъде с несвързан " @@ -123,22 +102,24 @@ msgstr "" "файл. Въпреки това конвейерът може да задава собствен изход — това може да " "се използва за изпращане на изхода към icecast сървър чрез „shout2send“ или " "подобен елемент. Когато този ключ не е зададен или стойността му e празна, " -"се използва стандартния конвейер. За момента това е „videorate ! theoraenc ! " -"oggmux“ и записва видео във формат Ogg Theora." +"се използва стандартния конвейер. За момента това е „videorate ! vp8enc " +"quality=10 speed=2 threads=%T ! queue ! webmmux“ и записва видео контейнер " +"WEBM и използва кодера VP8. Стойността в „%T“ замества предполагаемия " +"оптимален брой нишки за системата." -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Показване на дата в часовника" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Показване на деня от седмицата в календара" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Показване на секунди към времето" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -146,7 +127,7 @@ msgstr "" "Програмите, които отговарят на тези идентификатор, ще бъдат показани в " "областта „Любими“." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " @@ -156,7 +137,7 @@ msgstr "" "екрана, което ще бъде уникално и ще зависи от текущата дата. Трябва да го " "промените, когато записвате в различен формат на контейнера." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -164,19 +145,11 @@ msgstr "" "Честота на кадрите за записа на екрана създаден от записващата програма на " "Обвивката на GNOME в кадри за секунда." -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" -msgstr "Конвейерът на gstreamer използван за кодиране на записа на екрана" +msgstr "Конвейерът на gstreamer за кодиране на записа на екрана" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 -msgid "" -"The selected workspace view mode in the overview. Supported values are " -"\"single\" and \"grid\"." -msgstr "" -"Избраният режим на изглед на работния плот в прозореца за цялостен преглед. " -"Поддържаните стойности са „single“ и „grid“" - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -189,351 +162,870 @@ msgstr "" "защитите личните си данни. Забележете, че дори да го направите, това няма да " "премахне вече запазените данни." -#: ../data/org.gnome.shell.gschema.xml.in.h:24 -msgid "" -"This key specifies the format used by the panel clock when the format key is " -"set to \"custom\". You can use conversion specifiers understood by strftime" -"() to obtain a specific format. See the strftime() manual for more " -"information." -msgstr "" -"Този ключ определя форма̀та използван от часовника в панела, когато ключът за " -"форма̀та е настроен на „custom“ (личен). Може да използвате форматиращите " -"знаци ползвани от strftime(), за да получите определен формат. За повече " -"информация погледнете страницата от ръководството за strftime()." - -#: ../data/org.gnome.shell.gschema.xml.in.h:25 -msgid "" -"This key specifies the hour format used by the panel clock. Possible values " -"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", " -"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set " -"to \"custom\", the clock will display time according to the format specified " -"in the custom_format key. Note that if set to either \"unix\" or \"custom\", " -"the show_date and show_seconds keys are ignored." -msgstr "" -"Този ключ определя форма̀та на часа използван от часовника в панела. " -"Възможните стойности са „12-hour“, „24-hour“, „unix“ и „custom“. Ако е " -"настроен на „unix“, часовникът ще показва времето от епохата, примерно: " -"1970-01-01. Ако е настроен на „custom“, часовникът ще показва времето според " -"форма̀та определен в ключа custom_format. Ако е настроен на „unix“ или " -"„custom“, ключовете show_data и show_seconds се пренебрегват." - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "Идентификатори (uuid) на приставки, които да бъдат изключени" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Дали да се събира статистика за използването на програми" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Формат на часовника" +#: ../data/org.gnome.shell.gschema.xml.in.h:24 +msgid "disabled OpenSearch providers" +msgstr "изключени доставчици на OpenSearch" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Настройки на часовника" +#: ../js/misc/util.js:86 +msgid "Command not found" +msgstr "Командата не беше открита" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Изглед на панела" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:113 +msgid "Could not parse command:" +msgstr "Неуспех при анализиране на командата:" -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Показване на _секундите" +#: ../js/misc/util.js:135 +msgid "No such application" +msgstr "Няма такава програма" -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Показване на _датата" +#: ../js/misc/util.js:148 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Неуспешно изпълнение на „%s“:" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "12-_часов формат" +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:195 +msgid "All" +msgstr "Всички" -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "24-ч_асов формат" - -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:773 +#: ../js/ui/appDisplay.js:285 msgid "APPLICATIONS" msgstr "ПРОГРАМИ" -#: ../js/ui/appDisplay.js:416 -msgid "PREFERENCES" -msgstr "ПРЕДПОЧИТАНИЯ" +#: ../js/ui/appDisplay.js:311 +msgid "SETTINGS" +msgstr "НАСТРОЙКИ" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:565 msgid "New Window" msgstr "Нов прозорец" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:568 msgid "Remove from Favorites" msgstr "Премахване от „Любими“" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:569 msgid "Add to Favorites" msgstr "Добавяне в „Любими“" -#: ../js/ui/appDisplay.js:1033 -msgid "Drag here to add favorites" -msgstr "Довлачете до тук обектите за да ги добавите към „Любими“" - -#: ../js/ui/appFavorites.js:88 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "Програмата „%s“ беше добавена в „Любими“" -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "Програмата „%s“ беше премахната от „Любими“" -#: ../js/ui/dash.js:142 -msgid "Find" -msgstr "Търсене" +#. Translators: Shown in calendar event list for all day events +#. * Keep it short, best if you can use less then 10 characters +#. +#: ../js/ui/calendar.js:66 +msgctxt "event list time" +msgid "All Day" +msgstr "Цял ден" -#: ../js/ui/dash.js:471 -msgid "Searching..." -msgstr "Търсене…" +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:71 +msgctxt "event list time" +msgid "%H:%M" +msgstr "%H:%M" -#: ../js/ui/dash.js:485 -msgid "No matching results." -msgstr "Няма съвпадения." +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:78 +#, fuzzy +msgctxt "event list time" +msgid "%l:%M %p" +msgstr "%l:%M %p" -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:792 ../js/ui/placeDisplay.js:550 -msgid "PLACES & DEVICES" -msgstr "МЕСТА И УСТРОЙСТВА" +#. 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:118 +msgctxt "grid sunday" +msgid "S" +msgstr "Н" -#. **** Documents **** -#: ../js/ui/dash.js:799 ../js/ui/docDisplay.js:494 -msgid "RECENT ITEMS" -msgstr "СКОРО ОТВАРЯНИ" +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:120 +msgctxt "grid monday" +msgid "M" +msgstr "П" -#: ../js/ui/lookingGlass.js:471 -msgid "No extensions installed" -msgstr "Няма инсталирани разширения" +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:122 +msgctxt "grid tuesday" +msgid "T" +msgstr "В" -#: ../js/ui/lookingGlass.js:508 -msgid "Enabled" -msgstr "Включено" +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:124 +msgctxt "grid wednesday" +msgid "W" +msgstr "С" -#: ../js/ui/lookingGlass.js:510 -msgid "Disabled" -msgstr "Изключено" +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:126 +msgctxt "grid thursday" +msgid "T" +msgstr "Ч" -#: ../js/ui/lookingGlass.js:512 -msgid "Error" -msgstr "Грешка" +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:128 +msgctxt "grid friday" +msgid "F" +msgstr "П" -#: ../js/ui/lookingGlass.js:514 -msgid "Out of date" -msgstr "Остаряло" +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:130 +msgctxt "grid saturday" +msgid "S" +msgstr "С" -#: ../js/ui/lookingGlass.js:539 -msgid "View Source" -msgstr "Преглед на програмния код" +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:143 +msgctxt "list sunday" +msgid "Su" +msgstr "Нд" -#: ../js/ui/lookingGlass.js:545 -msgid "Web Page" -msgstr "Домашна страница" +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:145 +msgctxt "list monday" +msgid "M" +msgstr "Пн" -#: ../js/ui/overview.js:159 -msgid "Undo" -msgstr "Отмяна" +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:147 +msgctxt "list tuesday" +msgid "T" +msgstr "Вт" -#. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 -#, c-format -msgid "Quit %s" -msgstr "Спиране на програмата „%s“" +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:149 +msgctxt "list wednesday" +msgid "W" +msgstr "Ср" -#: ../js/ui/panel.js:498 -msgid "Preferences" -msgstr "Настройки" +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:151 +msgctxt "list thursday" +msgid "Th" +msgstr "Чт" + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:153 +msgctxt "list friday" +msgid "F" +msgstr "Пт" + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:155 +msgctxt "list saturday" +msgid "S" +msgstr "Сб" + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:704 +msgid "Nothing Scheduled" +msgstr "Няма нищо запланувано" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:720 +#, fuzzy +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "%A, %B %d" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:723 +#, fuzzy +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "%A, %B, %d, %Y" + +#: ../js/ui/calendar.js:733 +msgid "Today" +msgstr "Днес" + +#: ../js/ui/calendar.js:737 +msgid "Tomorrow" +msgstr "Утре" + +#: ../js/ui/calendar.js:746 +msgid "This week" +msgstr "Тази седмица" + +#: ../js/ui/calendar.js:754 +msgid "Next week" +msgstr "Следващата седмица" + +#: ../js/ui/dash.js:174 +msgid "Remove" +msgstr "Премахване" + +#: ../js/ui/dateMenu.js:91 +msgid "Date and Time Settings" +msgstr "Настройки на датата и времето" + +#: ../js/ui/dateMenu.js:110 +msgid "Open Calendar" +msgstr "Отваряне на календара" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/dateMenu.js:162 msgid "%a %b %e, %R:%S" msgstr "%a, %e %b, %R:%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/dateMenu.js:163 msgid "%a %b %e, %R" msgstr "%a, %e %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:589 +#: ../js/ui/dateMenu.js:167 msgid "%a %R:%S" msgstr "%a, %R:%S" -#: ../js/ui/panel.js:590 +#: ../js/ui/dateMenu.js:168 msgid "%a %R" msgstr "%a, %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:597 +#: ../js/ui/dateMenu.js:175 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a, %e %b, %l:%M:%S %p" -#: ../js/ui/panel.js:598 +#: ../js/ui/dateMenu.js:176 msgid "%a %b %e, %l:%M %p" msgstr "%a, %e %b, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:602 +#: ../js/ui/dateMenu.js:180 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:603 +#: ../js/ui/dateMenu.js:181 msgid "%a %l:%M %p" msgstr "%a, %H:%M" +#. 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:207 +#, fuzzy +msgid "%A %B %e, %Y" +msgstr "%A %B %e, %Y" + +#: ../js/ui/docDisplay.js:19 +msgid "RECENT ITEMS" +msgstr "СКОРО ОТВАРЯНИ" + +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Изход на „%s“" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Изход" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "" +"Натиснете „Изход“, за да спрете тези програми и да излезете от системата." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "Потребителят „%s“ ще излезе от системата автоматично след %d секунди." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "Ще излезете от системата автоматично след %d секунди." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Излизане от системата." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Изключване на компютъра" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "" +"Натиснете „Изключване на системата“, за да спрете тези програми и да " +"изключите системата." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "Системата ще се изключи автоматично след %d секунди." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Изключване на системата." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Рестартиране" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Натиснете „Рестартиране“, за да спрете тези програми и да рестартирате " +"системата." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "Системата ще се рестартира автоматично след %d секунди." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Рестартиране на системата." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Потвърждаване" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 +msgid "Cancel" +msgstr "Отказване" + +#: ../js/ui/lookingGlass.js:588 +msgid "No extensions installed" +msgstr "Няма инсталирани разширения" + +#: ../js/ui/lookingGlass.js:625 +msgid "Enabled" +msgstr "Включено" + +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 +msgid "Disabled" +msgstr "Изключено" + +#: ../js/ui/lookingGlass.js:629 +msgid "Error" +msgstr "Грешка" + +#: ../js/ui/lookingGlass.js:631 +msgid "Out of date" +msgstr "Остаряло" + +#: ../js/ui/lookingGlass.js:656 +msgid "View Source" +msgstr "Преглед на изходния код" + +#: ../js/ui/lookingGlass.js:662 +msgid "Web Page" +msgstr "Домашна страница" + +#: ../js/ui/messageTray.js:1907 +msgid "System Information" +msgstr "Информация за системата" + +#: ../js/ui/overview.js:88 +msgid "Undo" +msgstr "Отмяна" + +#: ../js/ui/overview.js:183 +msgid "Windows" +msgstr "Прозорци" + +#: ../js/ui/overview.js:186 +msgid "Applications" +msgstr "Програми" + +#. TODO - _quit() doesn't really work on apps in state STARTING yet +#: ../js/ui/panel.js:531 +#, c-format +msgid "Quit %s" +msgstr "Спиране на програмата „%s“" + #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:741 +#: ../js/ui/panel.js:892 msgid "Activities" msgstr "Дейности" -#: ../js/ui/placeDisplay.js:107 +#: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "Неуспех при демонтиране на „%s“" -#: ../js/ui/placeDisplay.js:110 +#: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "Повторен опит" -#: ../js/ui/placeDisplay.js:155 +#: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "Свързване към…" -#. Translators: the "ON" and "OFF" strings are used in the -#. toggle switches in the status area menus, and must be SHORT. -#. If you don't have suitable short words, consider initials, -#. "0"/"1", "⚪"/"⚫", etc. -#: ../js/ui/popupMenu.js:30 ../js/ui/popupMenu.js:40 -msgid "ON" -msgstr "ВКЛ" +#: ../js/ui/placeDisplay.js:409 +msgid "PLACES & DEVICES" +msgstr "МЕСТА И УСТРОЙСТВА" -#: ../js/ui/popupMenu.js:31 ../js/ui/popupMenu.js:45 -msgid "OFF" -msgstr "ИЗКЛ" +#. Translators: this MUST be either "toggle-switch-us" +#. (for toggle switches containing the English words +#. "ON" and "OFF") or "toggle-switch-intl" (for toggle +#. switches containing "◯" and "|"). Other values will +#. simply result in invisible toggle switches. +#: ../js/ui/popupMenu.js:612 +msgid "toggle-switch-us" +msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Въведете команда:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Неуспешно изпълнение на „%s“:" +#: ../js/ui/searchDisplay.js:283 +msgid "Searching..." +msgstr "Търсене…" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/searchDisplay.js:297 +msgid "No matching results." +msgstr "Няма съвпадения." + +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "Изключване..." + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +msgid "Suspend" +msgstr "Приспиване" + +#: ../js/ui/statusMenu.js:125 msgid "Available" -msgstr "Налично" +msgstr "На линия" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:130 +#, fuzzy msgid "Busy" -msgstr "Заето" +msgstr "Правя нещо друго" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Невидимо" +#: ../js/ui/statusMenu.js:138 +msgid "My Account" +msgstr "Моята регистрация" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Информация за настройките на потребителя…" +#: ../js/ui/statusMenu.js:142 +msgid "System Settings" +msgstr "Настройки на системата" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "Системни настройки…" - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Заключване на екрана" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Смяна на потребител" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Изход…" -#: ../js/ui/statusMenu.js:130 -msgid "Shut Down..." -msgstr "Изключване на компютъра…" +#: ../js/ui/status/accessibility.js:62 +msgid "Zoom" +msgstr "Увеличаване" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/status/accessibility.js:69 +msgid "Screen Reader" +msgstr "Четец на екрана" + +#: ../js/ui/status/accessibility.js:73 +msgid "Screen Keyboard" +msgstr "Екранна клавиатура" + +#: ../js/ui/status/accessibility.js:77 +msgid "Visual Alerts" +msgstr "Визуална помощ" + +#: ../js/ui/status/accessibility.js:80 +msgid "Sticky Keys" +msgstr "Лепкави клавиши" + +#: ../js/ui/status/accessibility.js:83 +msgid "Slow Keys" +msgstr "Бавни клавиши" + +#: ../js/ui/status/accessibility.js:86 +msgid "Bounce Keys" +msgstr "Подскачащи клавиши" + +#: ../js/ui/status/accessibility.js:89 +msgid "Mouse Keys" +msgstr "Клавиши за мишка" + +#: ../js/ui/status/accessibility.js:93 +msgid "Universal Access Settings" +msgstr "Настройки на универсалния достъп" + +#: ../js/ui/status/accessibility.js:145 +msgid "High Contrast" +msgstr "Висок контраст" + +#: ../js/ui/status/accessibility.js:182 +msgid "Large Text" +msgstr "Едър текст" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Видимост" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Изпращане на файлове на устройство..." + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Добавяне на ново устройство..." + +#: ../js/ui/status/bluetooth.js:95 +msgid "Bluetooth Settings" +msgstr "Настройки на Bluetooth" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Connection" +msgstr "Свързване" + +#: ../js/ui/status/bluetooth.js:228 +msgid "Send Files..." +msgstr "Изпращане на файлове..." + +#: ../js/ui/status/bluetooth.js:233 +msgid "Browse Files..." +msgstr "Разглеждане на файлове..." + +#: ../js/ui/status/bluetooth.js:242 +msgid "Error browsing device" +msgstr "Грешка при разглеждане на устройството" + +#: ../js/ui/status/bluetooth.js:243 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "Заявеното устройство не може да бъде разгледано. Грешката е „%s“" + +#: ../js/ui/status/bluetooth.js:251 +msgid "Keyboard Settings" +msgstr "Настройка на клавиатурата" + +#: ../js/ui/status/bluetooth.js:256 +msgid "Mouse Settings" +msgstr "Настройки на мишката" + +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 +msgid "Sound Settings" +msgstr "Настройки на звука" + +#: ../js/ui/status/bluetooth.js:372 +#, c-format +msgid "Authorization request from %s" +msgstr "Заявка за упълномощаване от „%s“" + +#: ../js/ui/status/bluetooth.js:378 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Устройството %s иска достъп до услугата „%s“" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Always grant access" +msgstr "Винаги позволяване на достъп" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Grant this time only" +msgstr "Позволяване само този път" + +#: ../js/ui/status/bluetooth.js:382 +msgid "Reject" +msgstr "Отхвърляне" + +#: ../js/ui/status/bluetooth.js:412 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Потвърждение за сдвояване с „%s“" + +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Устройството %s иска да се сдвои с този компютър" + +#: ../js/ui/status/bluetooth.js:419 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Потвърдете дали кодът „%s“ съвпада с този на устройството." + +#: ../js/ui/status/bluetooth.js:421 +msgid "Matches" +msgstr "Съвпадения" + +#: ../js/ui/status/bluetooth.js:422 +msgid "Does not match" +msgstr "Няма съвпадения" + +#: ../js/ui/status/bluetooth.js:445 +#, c-format +msgid "Pairing request for %s" +msgstr "Запитване за свързване с „%s“" + +#: ../js/ui/status/bluetooth.js:453 +msgid "Please enter the PIN mentioned on the device." +msgstr "Въведете кода на устройството %s." + +#: ../js/ui/status/bluetooth.js:469 +msgid "OK" +msgstr "Добре" + +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "Показване клавиатурната подредба…" + +#: ../js/ui/status/keyboard.js:76 +msgid "Localization Settings" +msgstr "Настройка на локализацията" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Настройка на захранването" + +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "Приблизително времето…" + +#: ../js/ui/status/power.js:117 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "Остава %d час" +msgstr[1] "Остават %d часа" + +#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d %s %d %s remaining" +msgstr "Остават %d %s и %d %s" + +#: ../js/ui/status/power.js:122 +msgid "hour" +msgid_plural "hours" +msgstr[0] "час" +msgstr[1] "часа" + +#: ../js/ui/status/power.js:122 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "минута" +msgstr[1] "минути" + +#: ../js/ui/status/power.js:125 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "остават %d минути" +msgstr[1] "остават %d минути" + +#: ../js/ui/status/power.js:227 +msgid "AC adapter" +msgstr "Адаптер за ел. мрежа" + +#: ../js/ui/status/power.js:229 +msgid "Laptop battery" +msgstr "Батерия на преносим компютър" + +#: ../js/ui/status/power.js:231 +msgid "UPS" +msgstr "Непрекъсваемо токозахранване" + +#: ../js/ui/status/power.js:233 +msgid "Monitor" +msgstr "Монитор" + +#: ../js/ui/status/power.js:235 +msgid "Mouse" +msgstr "Мишка" + +#: ../js/ui/status/power.js:237 +msgid "Keyboard" +msgstr "Клавиатура" + +#: ../js/ui/status/power.js:239 +msgid "PDA" +msgstr "Цифров помощник" + +#: ../js/ui/status/power.js:241 +msgid "Cell phone" +msgstr "Мобилен телефон" + +#: ../js/ui/status/power.js:243 +msgid "Media player" +msgstr "Музикално устройство" + +#: ../js/ui/status/power.js:245 +msgid "Tablet" +msgstr "Таблет" + +#: ../js/ui/status/power.js:247 +msgid "Computer" +msgstr "Компютър" + +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 +msgid "Unknown" +msgstr "Неизвестно" + +#: ../js/ui/status/volume.js:44 +msgid "Volume" +msgstr "Сила на звука" + +#: ../js/ui/status/volume.js:57 +msgid "Microphone" +msgstr "Микрофон" + +#: ../js/ui/telepathyClient.js:239 +#, c-format +msgid "%s is online." +msgstr "%s е на линия." + +#: ../js/ui/telepathyClient.js:244 +#, c-format +msgid "%s is offline." +msgstr "%s не е на линия." + +#: ../js/ui/telepathyClient.js:247 +#, c-format +msgid "%s is away." +msgstr "%s отсъства." + +#: ../js/ui/telepathyClient.js:250 +#, fuzzy, c-format +msgid "%s is busy." +msgstr "%s прави нещо друго." + +#. Translators: this is a time format string followed by a date. +#. If applicable, replace %X with a strftime format valid for your +#. locale, without seconds. +#: ../js/ui/telepathyClient.js:348 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Изпратено на %2$A в %1$X" + +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:103 +msgid "Type to search..." +msgstr "Търсене на написаното…" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "Програмата „%s“ стартира успешно" -#: ../js/ui/windowAttentionHandler.js:47 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "Програмата „%s“ е готова за употреба" -#: ../js/ui/workspacesView.js:230 -msgid "" -"Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "" -"Неуспех при добавяне на нов работен плот. Достигнат е максималният брой на " -"възможните работни плотове." +#. translators: +#. * The number of sound outputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1094 +#, c-format +msgid "%u Output" +msgid_plural "%u Outputs" +msgstr[0] "%u изход" +msgstr[1] "%u изхода" -#: ../js/ui/workspacesView.js:247 -msgid "Can't remove the first workspace." -msgstr "Премахването на първия работен плот не е възможно." +#. translators: +#. * The number of sound inputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1104 +#, c-format +msgid "%u Input" +msgid_plural "%u Inputs" +msgstr[0] "%u вход" +msgstr[1] "%u входа" -#: ../src/shell-global.c:1105 +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Системни звуци" + +#: ../src/shell-global.c:1298 msgid "Less than a minute ago" msgstr "Преди по-малко от минута" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1302 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "преди %d минута" msgstr[1] "преди %d минути" -#: ../src/shell-global.c:1114 +#: ../src/shell-global.c:1307 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "преди %d час" msgstr[1] "преди %d часа" -#: ../src/shell-global.c:1119 +#: ../src/shell-global.c:1312 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "преди %d ден" msgstr[1] "преди %d дни" -#: ../src/shell-global.c:1124 +#: ../src/shell-global.c:1317 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "преди %d седмица" msgstr[1] "преди %d седмици" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "Прозорецът за упълномощаване беше затворен от потребителя" + +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Домашна папка" #. Translators: this is the same string as the one found in #. * nautilus -#: ../src/shell-uri-util.c:104 +#: ../src/shell-util.c:104 msgid "File System" msgstr "Файлова система" -#: ../src/shell-uri-util.c:250 +#: ../src/shell-util.c:250 msgid "Search" msgstr "Търсене" @@ -542,7 +1034,7 @@ msgstr "Търсене" #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. -#: ../src/shell-uri-util.c:300 +#: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" From 8b3309f4f693d884301d725caa7fc83dafab06d7 Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Sun, 6 Mar 2011 13:40:22 +0100 Subject: [PATCH 18/74] =?UTF-8?q?Updated=20Norwegian=20bokm=C3=A5l=20trans?= =?UTF-8?q?lation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- po/nb.po | 91 +++++++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 47 deletions(-) diff --git a/po/nb.po b/po/nb.po index 4820fb7fc..80649731d 100644 --- a/po/nb.po +++ b/po/nb.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell 2.91.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-02 20:21+0100\n" -"PO-Revision-Date: 2011-03-02 20:22+0100\n" +"POT-Creation-Date: 2011-03-06 13:39+0100\n" +"PO-Revision-Date: 2011-03-06 13:40+0100\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian Bokmål \n" "Language: \n" @@ -171,23 +171,23 @@ msgstr "Kjøring av «%s» feilet:" msgid "All" msgstr "Alle" -#: ../js/ui/appDisplay.js:282 +#: ../js/ui/appDisplay.js:285 msgid "APPLICATIONS" msgstr "PROGRAMMER" -#: ../js/ui/appDisplay.js:312 +#: ../js/ui/appDisplay.js:311 msgid "SETTINGS" msgstr "INNSTILLINGER" -#: ../js/ui/appDisplay.js:572 +#: ../js/ui/appDisplay.js:565 msgid "New Window" msgstr "Nytt vindu" -#: ../js/ui/appDisplay.js:575 +#: ../js/ui/appDisplay.js:568 msgid "Remove from Favorites" msgstr "Fjern fra favoritter" -#: ../js/ui/appDisplay.js:576 +#: ../js/ui/appDisplay.js:569 msgid "Add to Favorites" msgstr "Legg til i favoritter" @@ -482,37 +482,37 @@ msgstr "Bekreft" msgid "Cancel" msgstr "Avbryt" -#: ../js/ui/lookingGlass.js:587 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "Ingen utvidelser installert" -#: ../js/ui/lookingGlass.js:624 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "Aktivert" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Deaktivert" -#: ../js/ui/lookingGlass.js:628 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "Feil" -#: ../js/ui/lookingGlass.js:630 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "Utdatert" -#: ../js/ui/lookingGlass.js:655 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "Vis kildekode" -#: ../js/ui/lookingGlass.js:661 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "Nettside" -#: ../js/ui/messageTray.js:1902 +#: ../js/ui/messageTray.js:1907 msgid "System Information" msgstr "Systeminformasjon" @@ -529,14 +529,14 @@ msgid "Applications" msgstr "Programmer" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:529 +#: ../js/ui/panel.js:531 #, c-format msgid "Quit %s" msgstr "Avslutt %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:897 +#: ../js/ui/panel.js:892 msgid "Activities" msgstr "Aktiviteter" @@ -570,11 +570,11 @@ msgstr "toggle-switch-intl" msgid "Please enter a command:" msgstr "Oppgi en kommando:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "Søker …" -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "Ingen treff." @@ -614,47 +614,47 @@ msgstr "Bytt bruker" msgid "Log Out..." msgstr "Logg ut …" -#: ../js/ui/status/accessibility.js:81 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "Zoom" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "Skjermleser" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "Tastatur på skjermen" -#: ../js/ui/status/accessibility.js:96 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "Synlig varsling" -#: ../js/ui/status/accessibility.js:99 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "Klebrige taster" -#: ../js/ui/status/accessibility.js:102 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "Trege taster" -#: ../js/ui/status/accessibility.js:105 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "Spretne taster" -#: ../js/ui/status/accessibility.js:108 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "Mustaster" -#: ../js/ui/status/accessibility.js:112 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "Innstillinger for tilgjengelighet" -#: ../js/ui/status/accessibility.js:164 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "Høy kontrast" -#: ../js/ui/status/accessibility.js:209 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Stor tekst" @@ -821,51 +821,51 @@ msgid_plural "%d minutes remaining" msgstr[0] "%d minutt gjenstår" msgstr[1] "%d minutter gjenstår" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "Strømadapter" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "Batteri på bærbar" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "Skjerm" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "Mus" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "Tastatur" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "Mobiltelefon" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "Medieavspiller" -#: ../js/ui/status/power.js:259 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "Nettbrett" -#: ../js/ui/status/power.js:261 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "Datamaskin" -#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Ukjent" @@ -913,12 +913,12 @@ msgstr "Sendt %X på %A" msgid "Type to search..." msgstr "Skriv for å søke …" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s er ferdig startet" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "«%s» er klar" @@ -1004,6 +1004,3 @@ msgstr "Søk" #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" - -#~ msgid "PREFERENCES" -#~ msgstr "BRUKERVALG" From 727f2ce9943f7509ffe6cfde66666ddc03aede76 Mon Sep 17 00:00:00 2001 From: Gil Forcada Date: Sun, 6 Mar 2011 18:43:28 +0100 Subject: [PATCH 19/74] [l10n] Updated Catalan translation --- po/ca.po | 1224 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 1093 insertions(+), 131 deletions(-) diff --git a/po/ca.po b/po/ca.po index 2be826949..be74dd72f 100644 --- a/po/ca.po +++ b/po/ca.po @@ -1,16 +1,18 @@ # Catalan gnome-shell translation. # Copyright (C) 2009 Siegfried-Angel Gevatter Pujals # This file is distributed under the same license as the gnome-shell package. -# # Siegfried-Angel Gevatter Pujals , 2009. +# Gil Forcada , 2010. +# msgid "" msgstr "" "Project-Id-Version: HEAD\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2009-10-10 20:19+0200\n" -"PO-Revision-Date: 2009-10-10 20:22+0100\n" -"Last-Translator: Siegfried-Angel Gevatter Pujals \n" -"Language-Team: \n" +"POT-Creation-Date: 2011-03-06 18:36+0100\n" +"PO-Revision-Date: 2011-03-06 18:36+0100\n" +"Last-Translator: Gil Forcada \n" +"Language-Team: Catalan \n" +"Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -22,195 +24,1001 @@ msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 msgid "Window management and application launching" -msgstr "Gestió de finestres i execució d'aplicacions" +msgstr "Gestor de finestres i llançador d'aplicacions" -#: ../js/ui/appDisplay.js:335 -msgid "Frequent" -msgstr "Freqüent" +#: ../data/org.gnome.shell.gschema.xml.in.h:1 +msgid "" +"Allows access to internal debugging and monitoring tools using the Alt-F2 " +"dialog." +msgstr "" +"Permet l'accés a les eines de depuració i de seguiment internes a través del " +"diàleg de l'Alt+F2." -#: ../js/ui/appIcon.js:462 -msgid "New Window" -msgstr "Finestra nova" +#: ../data/org.gnome.shell.gschema.xml.in.h:2 +msgid "Enable internal tools useful for developers and testers from Alt-F2" +msgstr "" +"Habilita les eines internes en el diàleg de l'Alt+F2 que són útils per als " +"desenvolupadors i provadors" -#: ../js/ui/appIcon.js:475 -msgid "Remove from Favorites" -msgstr "Elimina dels preferits" +#: ../data/org.gnome.shell.gschema.xml.in.h:3 +msgid "File extension used for storing the screencast" +msgstr "Extensió de fitxer per desar l'screencast" -#: ../js/ui/appIcon.js:476 -msgid "Add to Favorites" -msgstr "Afegeix als preferits" +#: ../data/org.gnome.shell.gschema.xml.in.h:4 +msgid "Framerate used for recording screencasts." +msgstr "Imatges per segon per enregistrar els screencasts." -#: ../js/ui/dash.js:283 -msgid "Find..." -msgstr "Cerca..." +#: ../data/org.gnome.shell.gschema.xml.in.h:5 +msgid "" +"GNOME Shell extensions have a uuid property; this key lists extensions which " +"should not be loaded." +msgstr "" +"Les extensions del GNOME Shell tenen un identificador universal. Aquesta " +"clau conté una llista de les extensions que no s'han de carregar." -#: ../js/ui/dash.js:400 -msgid "More" -msgstr "Més" +#: ../data/org.gnome.shell.gschema.xml.in.h:6 +msgid "History for command (Alt-F2) dialog" +msgstr "Historial de les ordres utilitzades en el diàleg de l'Alt+F2" -#: ../js/ui/dash.js:543 -msgid "(see all)" -msgstr "(mostra tot)" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "History for the looking glass dialog" +msgstr "Historial del diàleg de l'Alt+F2" -#. **** Applications **** -#: ../js/ui/dash.js:763 -#: ../js/ui/dash.js:825 -msgid "APPLICATIONS" -msgstr "APLICACIONS" +#: ../data/org.gnome.shell.gschema.xml.in.h:8 +msgid "If true, display date in the clock, in addition to time." +msgstr "" +"Si és «true» (cert) es mostra la data en el rellotge a més a més de l'hora." -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:783 -msgid "PLACES" -msgstr "LLOCS" +#: ../data/org.gnome.shell.gschema.xml.in.h:9 +msgid "If true, display seconds in time." +msgstr "Si és «true» (cert) es mostren el segons." -#. **** Documents **** -#: ../js/ui/dash.js:790 -#: ../js/ui/dash.js:835 -msgid "RECENT DOCUMENTS" -msgstr "DOCUMENTS RECENTS" +#: ../data/org.gnome.shell.gschema.xml.in.h:10 +msgid "If true, display the ISO week date in the calendar." +msgstr "Si és «true» (cert) es mostra el número de la setmana en el calendari." -#. **** Search Results **** -#: ../js/ui/dash.js:815 -#: ../js/ui/dash.js:955 -msgid "SEARCH RESULTS" -msgstr "RESULTATS DE LA CERCA" +#: ../data/org.gnome.shell.gschema.xml.in.h:11 +msgid "List of desktop file IDs for favorite applications" +msgstr "" +"Llista d'identificadors de fitxers d'escriptori de les aplicacions preferides" -#: ../js/ui/dash.js:830 -msgid "PREFERENCES" -msgstr "PREFERÈNCIES" +#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#, no-c-format +msgid "" +"Sets the GStreamer pipeline used to encode recordings. It follows the syntax " +"used for gst-launch. The pipeline should have an unconnected sink pad where " +"the recorded video is recorded. It will normally have a unconnected source " +"pad; output from that pad will be written into the output file. However the " +"pipeline can also take care of its own output - this might be used to send " +"the output to an icecast server via shout2send or similar. When unset or set " +"to an empty value, the default pipeline will be used. This is currently " +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." +msgstr "" +"Estableix el conducte del GStreamer per codificar els enregistraments. " +"Utilitza la mateixa sintaxi que l'ordre gst-launch. El conducte hauria de " +"tenir un camí de destinació no connectat on s'enregistrarà el vídeo. " +"Normalment haurà de tenir un camí font no connectat, la seva sortida " +"s'escriurà al fitxer de sortida. Tot i així el conducte pot tenir la seva " +"pròpia sortida - pot ser útil per enviar la sortida a un servidor d'icecast " +"a través del shout2send o algun programa semblant. Si no hi ha cap valor o " +"s'estableix a un valor nul, s'utilitzarà el conducte predeterminat que ara " +"mateix és «videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! " +"webmmux» que enregistra amb el format WEBM amb el còdec VP8. El %T és una " +"variable per a estimar el nombre de fils d'execució paral·lels òptims del " +"sistema." -#. Button on the left side of the panel. -#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:272 -msgid "Activities" -msgstr "Activitats" +#: ../data/org.gnome.shell.gschema.xml.in.h:14 +msgid "Show date in clock" +msgstr "Mostra la data en el rellotge" -#. Translators: This is a time format. -#: ../js/ui/panel.js:464 -msgid "%a %l:%M %p" -msgstr "%a %H:%M" +#: ../data/org.gnome.shell.gschema.xml.in.h:15 +msgid "Show the week date in the calendar" +msgstr "Mostra el número de la setmana en el calendari" -#: ../js/ui/places.js:178 -msgid "Connect to..." -msgstr "Connecta a..." +#: ../data/org.gnome.shell.gschema.xml.in.h:16 +msgid "Show time with seconds" +msgstr "Mostra l'hora amb segons" -#: ../js/ui/runDialog.js:96 -msgid "Please enter a command:" -msgstr "Introduïu una ordre:" +#: ../data/org.gnome.shell.gschema.xml.in.h:17 +msgid "" +"The applications corresponding to these identifiers will be displayed in the " +"favorites area." +msgstr "" +"Es mostraran, a l'àrea de preferits, les aplicacions que corresponguin a " +"aquests identificadors." -#: ../js/ui/runDialog.js:173 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 +msgid "" +"The filename for recorded screencasts will be a unique filename based on the " +"current date, and use this extension. It should be changed when recording to " +"a different container format." +msgstr "" +"El nom de fitxer dels screencasts enregistrats serà un nom de fitxer únic " +"basat en l'hora de realització i utilitzarà aquesta extensió. S'hauria de " +"canviar si s'enregistra en un format diferent." + +#: ../data/org.gnome.shell.gschema.xml.in.h:19 +msgid "" +"The framerate of the resulting screencast recordered by GNOME Shell's " +"screencast recorder in frames-per-second." +msgstr "" +"Les imatges per segon, en fotogrames per segon, de l'screencast enregistrat " +"per l'eina d'enregistrament del GNOME Shell." + +#: ../data/org.gnome.shell.gschema.xml.in.h:20 +msgid "The gstreamer pipeline used to encode the screencast" +msgstr "El conducte GStreamer per enregistrar els screencasts" + +#: ../data/org.gnome.shell.gschema.xml.in.h:21 +msgid "" +"The shell normally monitors active applications in order to present the most " +"used ones (e.g. in launchers). While this data will be kept private, you may " +"want to disable this for privacy reasons. Please note that doing so won't " +"remove already saved data." +msgstr "" +"El GNOME Shell normalment fa un seguiment de les aplicacions actives per tal " +"de mostrar les més utilitzades (per exemple en els llançadors). Tot i que " +"les dades es mantindran en privat, podeu inhabilitar-ho per motius de " +"privacitat. Tingueu en compte que si ho inhabiliteu no es suprimiran les " +"dades ja recollides." + +#: ../data/org.gnome.shell.gschema.xml.in.h:22 +msgid "Uuids of extensions to disable" +msgstr "Identificadors únics de les extensions a inhabilitar" + +#: ../data/org.gnome.shell.gschema.xml.in.h:23 +msgid "Whether to collect stats about applications usage" +msgstr "Si s'han de recollir estadístiques d'ús de les aplicacions" + +#: ../data/org.gnome.shell.gschema.xml.in.h:24 +msgid "disabled OpenSearch providers" +msgstr "inhabilita els proveïdors d'OpenSearch" + +#: ../js/misc/util.js:86 +msgid "Command not found" +msgstr "No s'ha trobat l'ordre" + +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:113 +msgid "Could not parse command:" +msgstr "No s'ha pogut analitzar l'ordre:" + +#: ../js/misc/util.js:135 +msgid "No such application" +msgstr "No hi ha cap aplicació" + +#: ../js/misc/util.js:148 #, c-format msgid "Execution of '%s' failed:" msgstr "No s'ha pogut executar «%s»:" -#. Translators: This is a time format. -#: ../js/ui/widget.js:162 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:195 +msgid "All" +msgstr "Totes" + +#: ../js/ui/appDisplay.js:285 +msgid "APPLICATIONS" +msgstr "APLICACIONS" + +#: ../js/ui/appDisplay.js:311 +msgid "SETTINGS" +msgstr "CONFIGURACIÓ" + +#: ../js/ui/appDisplay.js:565 +msgid "New Window" +msgstr "Finestra nova" + +#: ../js/ui/appDisplay.js:568 +msgid "Remove from Favorites" +msgstr "Suprimeix dels preferits" + +#: ../js/ui/appDisplay.js:569 +msgid "Add to Favorites" +msgstr "Afegeix als preferits" + +#: ../js/ui/appFavorites.js:91 +#, c-format +msgid "%s has been added to your favorites." +msgstr "S'ha afegit %s als preferits." + +#: ../js/ui/appFavorites.js:122 +#, c-format +msgid "%s has been removed from your favorites." +msgstr "S'ha suprimit %s dels preferits." + +#. 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:66 +msgctxt "event list time" +msgid "All Day" +msgstr "Tot el dia" + +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:71 +msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" -#: ../js/ui/widget.js:316 +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:78 +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:118 +msgctxt "grid sunday" +msgid "S" +msgstr "Dg" + +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:120 +msgctxt "grid monday" +msgid "M" +msgstr "Dl" + +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:122 +msgctxt "grid tuesday" +msgid "T" +msgstr "Dt" + +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:124 +msgctxt "grid wednesday" +msgid "W" +msgstr "Dc" + +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:126 +msgctxt "grid thursday" +msgid "T" +msgstr "Dj" + +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:128 +msgctxt "grid friday" +msgid "F" +msgstr "Dv" + +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:130 +msgctxt "grid saturday" +msgid "S" +msgstr "Ds" + +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:143 +msgctxt "list sunday" +msgid "Su" +msgstr "Dg." + +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:145 +msgctxt "list monday" +msgid "M" +msgstr "Dl." + +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:147 +msgctxt "list tuesday" +msgid "T" +msgstr "Dt." + +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:149 +msgctxt "list wednesday" +msgid "W" +msgstr "Dc." + +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:151 +msgctxt "list thursday" +msgid "Th" +msgstr "Dj." + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:153 +msgctxt "list friday" +msgid "F" +msgstr "Dv." + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:155 +msgctxt "list saturday" +msgid "S" +msgstr "Ds." + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:704 +msgid "Nothing Scheduled" +msgstr "No hi ha res apuntat" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:720 +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "%A %d de %B" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:723 +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "%A %d de %B de %Y" + +#: ../js/ui/calendar.js:733 +msgid "Today" +msgstr "Avui" + +#: ../js/ui/calendar.js:737 +msgid "Tomorrow" +msgstr "Demà" + +#: ../js/ui/calendar.js:746 +msgid "This week" +msgstr "Aquesta setmana" + +#: ../js/ui/calendar.js:754 +msgid "Next week" +msgstr "La setmana que ve" + +#: ../js/ui/dash.js:174 +msgid "Remove" +msgstr "Suprimeix" + +#: ../js/ui/dateMenu.js:91 +msgid "Date and Time Settings" +msgstr "Configuració de la data i l'hora" + +#: ../js/ui/dateMenu.js:110 +msgid "Open Calendar" +msgstr "Obre el calendari" + +#. Translators: This is the time format with date used +#. in 24-hour mode. +#: ../js/ui/dateMenu.js:162 +msgid "%a %b %e, %R:%S" +msgstr "%a %d de %b, %R:%S" + +#: ../js/ui/dateMenu.js:163 +msgid "%a %b %e, %R" +msgstr "%a %d de %b, %R" + +#. Translators: This is the time format without date used +#. in 24-hour mode. +#: ../js/ui/dateMenu.js:167 +msgid "%a %R:%S" +msgstr "%a %R:%S" + +#: ../js/ui/dateMenu.js:168 +msgid "%a %R" +msgstr "%a %R" + +#. Translators: This is a time format with date used +#. for AM/PM. +#: ../js/ui/dateMenu.js:175 +msgid "%a %b %e, %l:%M:%S %p" +msgstr "%a %d de %b, %l:%M:%S %p" + +#: ../js/ui/dateMenu.js:176 +msgid "%a %b %e, %l:%M %p" +msgstr "%a %d de %b, %l:%M %p" + +#. Translators: This is a time format without date used +#. for AM/PM. +#: ../js/ui/dateMenu.js:180 +msgid "%a %l:%M:%S %p" +msgstr "%a %l:%M:%S %p" + +#: ../js/ui/dateMenu.js:181 +msgid "%a %l:%M %p" +msgstr "%a %l:%M %p" + +#. 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:207 +msgid "%A %B %e, %Y" +msgstr "%A %d de %B, %Y" + +#: ../js/ui/docDisplay.js:19 +msgid "RECENT ITEMS" +msgstr "DOCUMENTS RECENTS" + +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Surt %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Surt" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "Feu clic a «Surt» per tancar les aplicacions i sortir de la sessió." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "%s sortirà de la sessió automàticament d'aquí %d segons." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "Sortireu automàticament d'aquí %d segons." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "S'està sortint de la sessió." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Atura" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "Feu clic a «Atura» per tancar les aplicacions i apagar l'ordinador." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "S'apagarà l'ordinador automàticament d'aquí %d segons." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "S'està apagant l'ordinador." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Reinicia" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Feu clic a «Reinicia» per tancar les aplicacions i reiniciar l'ordinador." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "Es reiniciarà l'ordinador automàticament d'aquí %d segons." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "S'està reiniciant l'ordinador." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "D'acord" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 +msgid "Cancel" +msgstr "Cancel·la" + +#: ../js/ui/lookingGlass.js:588 +msgid "No extensions installed" +msgstr "No hi ha cap extensió instal·lada" + +#: ../js/ui/lookingGlass.js:625 +msgid "Enabled" +msgstr "Habilitat" + +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 +msgid "Disabled" +msgstr "Inhabilitat" + +#: ../js/ui/lookingGlass.js:629 +msgid "Error" +msgstr "Error" + +#: ../js/ui/lookingGlass.js:631 +msgid "Out of date" +msgstr "Fora d'hora" + +#: ../js/ui/lookingGlass.js:656 +msgid "View Source" +msgstr "Visualitza el font" + +#: ../js/ui/lookingGlass.js:662 +msgid "Web Page" +msgstr "Pàgina web" + +#: ../js/ui/messageTray.js:1907 +msgid "System Information" +msgstr "Informació de l'ordinador" + +#: ../js/ui/overview.js:88 +msgid "Undo" +msgstr "Desfés" + +#: ../js/ui/overview.js:183 +msgid "Windows" +msgstr "Finestres" + +#: ../js/ui/overview.js:186 msgid "Applications" msgstr "Aplicacions" -#: ../js/ui/widget.js:341 -msgid "Recent Documents" -msgstr "Documents recents" +#. TODO - _quit() doesn't really work on apps in state STARTING yet +#: ../js/ui/panel.js:531 +#, c-format +msgid "Quit %s" +msgstr "Tanca %s" -#: ../src/shell-global.c:812 +#. Button on the left side of the panel. +#. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". +#: ../js/ui/panel.js:892 +msgid "Activities" +msgstr "Activitats" + +#: ../js/ui/placeDisplay.js:122 +#, c-format +msgid "Failed to unmount '%s'" +msgstr "No s'ha pogut desmuntar «%s»" + +#: ../js/ui/placeDisplay.js:125 +msgid "Retry" +msgstr "Torna-ho a intentar" + +#: ../js/ui/placeDisplay.js:165 +msgid "Connect to..." +msgstr "Connecta a..." + +#: ../js/ui/placeDisplay.js:409 +msgid "PLACES & DEVICES" +msgstr "LLOCS I DISPOSITIUS" + +#. Translators: this MUST be either "toggle-switch-us" +#. (for toggle switches containing the English words +#. "ON" and "OFF") or "toggle-switch-intl" (for toggle +#. switches containing "◯" and "|"). Other values will +#. simply result in invisible toggle switches. +#: ../js/ui/popupMenu.js:612 +msgid "toggle-switch-us" +msgstr "toggle-switch-intl" + +#: ../js/ui/runDialog.js:201 +msgid "Please enter a command:" +msgstr "Introduïu una ordre:" + +#: ../js/ui/searchDisplay.js:283 +msgid "Searching..." +msgstr "S'està cercant..." + +#: ../js/ui/searchDisplay.js:297 +msgid "No matching results." +msgstr "No s'ha trobat cap coincidència." + +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "Apaga..." + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +msgid "Suspend" +msgstr "Atura temporalment" + +#: ../js/ui/statusMenu.js:125 +msgid "Available" +msgstr "Disponible" + +#: ../js/ui/statusMenu.js:130 +msgid "Busy" +msgstr "Ocupat" + +#: ../js/ui/statusMenu.js:138 +msgid "My Account" +msgstr "El meu compte" + +#: ../js/ui/statusMenu.js:142 +msgid "System Settings" +msgstr "Paràmetres de l'ordinador" + +#: ../js/ui/statusMenu.js:149 +msgid "Lock Screen" +msgstr "Bloca la pantalla" + +#: ../js/ui/statusMenu.js:153 +msgid "Switch User" +msgstr "Canvia d'usuari" + +#: ../js/ui/statusMenu.js:158 +msgid "Log Out..." +msgstr "Surt..." + +#: ../js/ui/status/accessibility.js:62 +msgid "Zoom" +msgstr "Amplia" + +#: ../js/ui/status/accessibility.js:69 +msgid "Screen Reader" +msgstr "Lector de pantalla" + +#: ../js/ui/status/accessibility.js:73 +msgid "Screen Keyboard" +msgstr "Teclat en pantalla" + +#: ../js/ui/status/accessibility.js:77 +msgid "Visual Alerts" +msgstr "Avisos visuals" + +#: ../js/ui/status/accessibility.js:80 +msgid "Sticky Keys" +msgstr "Tecles enganxoses" + +#: ../js/ui/status/accessibility.js:83 +msgid "Slow Keys" +msgstr "Tecles lentes" + +#: ../js/ui/status/accessibility.js:86 +msgid "Bounce Keys" +msgstr "Tecles de salt" + +#: ../js/ui/status/accessibility.js:89 +msgid "Mouse Keys" +msgstr "Tecles del ratolí" + +#: ../js/ui/status/accessibility.js:93 +msgid "Universal Access Settings" +msgstr "Paràmetres d'accés universal" + +#: ../js/ui/status/accessibility.js:145 +msgid "High Contrast" +msgstr "Alt contrast" + +#: ../js/ui/status/accessibility.js:182 +msgid "Large Text" +msgstr "Text gran" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Visibilitat" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Envia fitxers al dispositiu..." + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Establiu un dispositiu nou..." + +#: ../js/ui/status/bluetooth.js:95 +msgid "Bluetooth Settings" +msgstr "Paràmetres del Bluetooth" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Connection" +msgstr "Connexió" + +#: ../js/ui/status/bluetooth.js:228 +msgid "Send Files..." +msgstr "Envia fitxers..." + +#: ../js/ui/status/bluetooth.js:233 +msgid "Browse Files..." +msgstr "Navega pels fitxers..." + +#: ../js/ui/status/bluetooth.js:242 +msgid "Error browsing device" +msgstr "S'ha produït un error en navegar pel dispositiu" + +#: ../js/ui/status/bluetooth.js:243 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "No es pot navegar pel dispositiu degut a l'error «%s»" + +#: ../js/ui/status/bluetooth.js:251 +msgid "Keyboard Settings" +msgstr "Paràmetres del teclat" + +#: ../js/ui/status/bluetooth.js:256 +msgid "Mouse Settings" +msgstr "Paràmetres del ratolí" + +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 +msgid "Sound Settings" +msgstr "Paràmetres de so" + +#: ../js/ui/status/bluetooth.js:372 +#, c-format +msgid "Authorization request from %s" +msgstr "Hi ha una petició d'autorització des de %s" + +#: ../js/ui/status/bluetooth.js:378 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "El dispositiu %s vol accedir al servei «%s»" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Always grant access" +msgstr "Permet l'accés sempre" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Grant this time only" +msgstr "Permete-ho només ara" + +#: ../js/ui/status/bluetooth.js:382 +msgid "Reject" +msgstr "Rebutja" + +#: ../js/ui/status/bluetooth.js:412 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Confirmació d'aparellament per %s" + +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "El dispositiu %s vol aparellar-se amb aquest ordinador" + +#: ../js/ui/status/bluetooth.js:419 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Confirmeu que el PIN «%s» coincideix amb el que hi ha al dispositiu." + +#: ../js/ui/status/bluetooth.js:421 +msgid "Matches" +msgstr "Coincideix" + +#: ../js/ui/status/bluetooth.js:422 +msgid "Does not match" +msgstr "No coincideix" + +#: ../js/ui/status/bluetooth.js:445 +#, c-format +msgid "Pairing request for %s" +msgstr "Teniu una sol·licitud d'aparellament amb %s" + +#: ../js/ui/status/bluetooth.js:453 +msgid "Please enter the PIN mentioned on the device." +msgstr "Introduïu el PIN que es mostra al dispositiu." + +#: ../js/ui/status/bluetooth.js:469 +msgid "OK" +msgstr "D'acord" + +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "Mostra la disposició del teclat..." + +#: ../js/ui/status/keyboard.js:76 +msgid "Localization Settings" +msgstr "Paràmetres de localització" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Paràmetres d'energia" + +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "S'està estimant la durada..." + +#: ../js/ui/status/power.js:117 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "Queda %d hora" +msgstr[1] "Queden %d hores" + +#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d %s %d %s remaining" +msgstr "Queden %d %s %d %s" + +#: ../js/ui/status/power.js:122 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hora" +msgstr[1] "hores" + +#: ../js/ui/status/power.js:122 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minut" +msgstr[1] "minuts" + +#: ../js/ui/status/power.js:125 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "Queda %d minut" +msgstr[1] "Queden %d minuts" + +#: ../js/ui/status/power.js:227 +msgid "AC adapter" +msgstr "Adaptador de corrent" + +#: ../js/ui/status/power.js:229 +msgid "Laptop battery" +msgstr "Bateria del portàtil" + +#: ../js/ui/status/power.js:231 +msgid "UPS" +msgstr "SAI" + +#: ../js/ui/status/power.js:233 +msgid "Monitor" +msgstr "Pantalla" + +#: ../js/ui/status/power.js:235 +msgid "Mouse" +msgstr "Ratolí" + +#: ../js/ui/status/power.js:237 +msgid "Keyboard" +msgstr "Teclat" + +#: ../js/ui/status/power.js:239 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:241 +msgid "Cell phone" +msgstr "Telèfon mòbil" + +#: ../js/ui/status/power.js:243 +msgid "Media player" +msgstr "Reproductor multimèdia" + +#: ../js/ui/status/power.js:245 +msgid "Tablet" +msgstr "Tauleta" + +#: ../js/ui/status/power.js:247 +msgid "Computer" +msgstr "Ordinador" + +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 +msgid "Unknown" +msgstr "Desconegut" + +#: ../js/ui/status/volume.js:44 +msgid "Volume" +msgstr "Volum" + +#: ../js/ui/status/volume.js:57 +msgid "Microphone" +msgstr "Micròfon" + +#: ../js/ui/telepathyClient.js:239 +#, c-format +msgid "%s is online." +msgstr "%s és en línia." + +#: ../js/ui/telepathyClient.js:244 +#, c-format +msgid "%s is offline." +msgstr "%s no hi és." + +#: ../js/ui/telepathyClient.js:247 +#, c-format +msgid "%s is away." +msgstr "%s és lluny." + +#: ../js/ui/telepathyClient.js:250 +#, c-format +msgid "%s is busy." +msgstr "%s està ocupat." + +#. Translators: this is a time format string followed by a date. +#. If applicable, replace %X with a strftime format valid for your +#. locale, without seconds. +#: ../js/ui/telepathyClient.js:348 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Enviat a les %X del %A" + +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:103 +msgid "Type to search..." +msgstr "Teclegeu per cercar..." + +#: ../js/ui/windowAttentionHandler.js:42 +#, c-format +msgid "%s has finished starting" +msgstr "S'ha acabat d'iniciar %s" + +#: ../js/ui/windowAttentionHandler.js:44 +#, c-format +msgid "'%s' is ready" +msgstr "«%s» ja està apunt" + +#. translators: +#. * The number of sound outputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1094 +#, c-format +msgid "%u Output" +msgid_plural "%u Outputs" +msgstr[0] "%u sortida" +msgstr[1] "%u sortides" + +#. translators: +#. * The number of sound inputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1104 +#, c-format +msgid "%u Input" +msgid_plural "%u Inputs" +msgstr[0] "%u entrada" +msgstr[1] "%u entrades" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Sons del sistema" + +#: ../src/shell-global.c:1298 msgid "Less than a minute ago" msgstr "Fa menys d'un minut" -#: ../src/shell-global.c:815 +#: ../src/shell-global.c:1302 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Fa %d minut" msgstr[1] "Fa %d minuts" -#: ../src/shell-global.c:818 +#: ../src/shell-global.c:1307 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Fa %d hora" msgstr[1] "Fa %d hores" -#: ../src/shell-global.c:821 +#: ../src/shell-global.c:1312 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Fa %d dia" msgstr[1] "Fa %d dies" -#: ../src/shell-global.c:824 +#: ../src/shell-global.c:1317 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Fa %d setmana" msgstr[1] "Fa %d setmanes" -#: ../src/shell-status-menu.c:156 -msgid "Unknown" -msgstr "Desconegut" +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "L'usuari ha descartat el diàleg d'autenticació" -#: ../src/shell-status-menu.c:212 -#, c-format -msgid "Can't lock screen: %s" -msgstr "No es pot blocar la pantalla: %s" - -#: ../src/shell-status-menu.c:227 -#, c-format -msgid "Can't temporarily set screensaver to blank screen: %s" -msgstr "No es pot establir temporalment l'estalvi de pantalla a pantalla negra: %s" - -#: ../src/shell-status-menu.c:351 -#, c-format -msgid "Can't logout: %s" -msgstr "No es pot sortir: %s" - -#: ../src/shell-status-menu.c:492 -msgid "Account Information..." -msgstr "Informació del compte..." - -#: ../src/shell-status-menu.c:502 -msgid "Sidebar" -msgstr "Barra lateral" - -#: ../src/shell-status-menu.c:510 -msgid "System Preferences..." -msgstr "Preferències del sistema..." - -#: ../src/shell-status-menu.c:525 -msgid "Lock Screen" -msgstr "Bloca la pantalla" - -#: ../src/shell-status-menu.c:535 -msgid "Switch User" -msgstr "Canvia d'usuari" - -#. Only show switch user if there are other users -#. Log Out -#: ../src/shell-status-menu.c:546 -msgid "Log Out..." -msgstr "Surt..." - -#. Shut down -#: ../src/shell-status-menu.c:557 -msgid "Shut Down..." -msgstr "Atura..." - -#: ../src/shell-uri-util.c:87 +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Carpeta d'inici" #. Translators: this is the same string as the one found in #. * nautilus -#: ../src/shell-uri-util.c:102 +#: ../src/shell-util.c:104 msgid "File System" msgstr "Sistema de fitxers" -#: ../src/shell-uri-util.c:248 +#: ../src/shell-util.c:250 msgid "Search" msgstr "Cerca" @@ -219,8 +1027,162 @@ msgstr "Cerca" #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. -#: ../src/shell-uri-util.c:298 +#: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "PREFERENCES" +#~ msgstr "PREFERÈNCIES" + +#~ msgid "Shut Down..." +#~ msgstr "Atura..." + +#~ msgid "Clip the crosshairs at the center" +#~ msgstr "Retalla la retícula al centre" + +#~ msgid "Color of the crosshairs" +#~ msgstr "Color de la retícula" + +#~ msgid "" +#~ "Determines the length of the vertical and horizontal lines that make up " +#~ "the crosshairs." +#~ msgstr "" +#~ "Especifica la longitud vertical i horitzontal de les línies que creen la " +#~ "retícula." + +#~ msgid "" +#~ "Determines the position of the magnified mouse image within the magnified " +#~ "view and how it reacts to system mouse movement. The values are - none: " +#~ "no mouse tracking; - centered: the mouse image is displayed at the center " +#~ "of the zoom region (which also represents the point under the system " +#~ "mouse) and the magnified contents are scrolled as the system mouse moves; " +#~ "- proportional: the position of the magnified mouse in the zoom region is " +#~ "proportionally the same as the position of the system mouse on screen; - " +#~ "push: when the magnified mouse intersects a boundary of the zoom region, " +#~ "the contents are scrolled into view." +#~ msgstr "" +#~ "Especifica la posició dins de la visualització ampliada del ratolí, també " +#~ "ampliat, i com reacciona als moviments del ratolí del sistema. Els valors " +#~ "són: «none» (cap) no es fa cap seguiment del ratolí, «centered» (centrat) " +#~ "la imatge del ratolí es mostra al centre de la zona ampliada (que a més a " +#~ "més representa el punt on està el ratolí del sistema) i la zona ampliada " +#~ "es desplaça a mesura que es mou el ratolí del sistema, " +#~ "«proportional» (proporcional) la posició del ratolí ampliat en la zona " +#~ "ampliada és proporcional a la posició del ratolí del sistema a la " +#~ "pantalla, «push» (desplaçat) quan el ratolí ampliat arriba a una de les " +#~ "vores de la zona ampliada es desplacen els continguts de la zona ampliada." + +#~ msgid "" +#~ "Determines the transparency of the crosshairs, from fully opaque to fully " +#~ "transparent." +#~ msgstr "" +#~ "Especifica la transparència de la retícula, des de totalment opac a " +#~ "totalment transparent." + +#~ msgid "" +#~ "Determines whether the crosshairs intersect the magnified mouse sprite, " +#~ "or are clipped such that the ends of the horizontal and vertical lines " +#~ "surround the mouse image." +#~ msgstr "" +#~ "Especifica si la retícula es talla amb el ratolí ampliat, o bé que es " +#~ "tallen les línies horitzontals i verticals de la retícula perquè només " +#~ "voregin la imatge del ratolí." + +#~ msgid "Enable lens mode" +#~ msgstr "Habilita el mode de lens" + +#~ msgid "" +#~ "Enables/disables display of crosshairs centered on the magnified mouse " +#~ "sprite." +#~ msgstr "" +#~ "Habilita/inhabilita que es mostri una retícula centrat en el ratolí " +#~ "ampliat." + +#~ msgid "" +#~ "For centered mouse tracking, when the system pointer is at or near the " +#~ "edge of the screen, the magnified contents continue to scroll such that " +#~ "the screen edge moves into the magnified view." +#~ msgstr "" +#~ "Per el seguiment centrat del ratolí, quan el punter del sistema està a " +#~ "prop d'una vora de la pantalla la zona ampliada continua desplaçant-se de " +#~ "tal manera que entra dintre de la zona ampliada la vora de la pantalla." + +#~ msgid "Length of the crosshairs" +#~ msgstr "Llargada de la retícula" + +#~ msgid "Magnification factor" +#~ msgstr "Factor d'ampliació" + +#~ msgid "Mouse Tracking Mode" +#~ msgstr "Mode de seguiment del ratolí" + +#~ msgid "Opacity of the crosshairs" +#~ msgstr "Opacitat de la retícula" + +#~ msgid "Screen position" +#~ msgstr "Posició de la pantalla" + +#~ msgid "Scroll magnified contents beyond the edges of the desktop" +#~ msgstr "" +#~ "Desplaça els continguts ampliats més enllà dels marges de l'escriptori" + +#~ msgid "Show or hide crosshairs" +#~ msgstr "Mostra o oculta la retícula" + +#~ msgid "Show or hide the magnifier" +#~ msgstr "Mostra o oculta l'ampliador" + +#~ msgid "Show or hide the magnifier and all of its zoom regions." +#~ msgstr "Mostra o oculta l'ampliador i totes les seves regions ampliades." + +#~ msgid "" +#~ "The color of the the vertical and horizontal lines that make up the " +#~ "crosshairs." +#~ msgstr "" +#~ "El color de les línies verticals i horitzontals que creen la retícula." + +#~ msgid "" +#~ "The magnified view either fills the entire screen, or occupies the top-" +#~ "half, bottom-half, left-half, or right-half of the screen." +#~ msgstr "" +#~ "La visualització ampliada ocupa tota la pantalla, la part superior, la " +#~ "part inferior, la part esquerra o la part dreta de la pantalla." + +#~ msgid "" +#~ "The power of the magnification. A value of 1.0 means no magnification. A " +#~ "value of 2.0 doubles the size." +#~ msgstr "" +#~ "El nivell d'ampliació. Amb el valor 1.0 no hi ha ampliació, amb el valor " +#~ "2.0 s'amplia al doble." + +#~ msgid "Thickness of the crosshairs" +#~ msgstr "Gruixudària de la retícula" + +#~ msgid "" +#~ "Whether the magnified view should be centered over the location of the " +#~ "system mouse and move with it." +#~ msgstr "" +#~ "Si la visualització ampliada s'hauria de centrar al voltant del ratolí " +#~ "del sistema i moure's amb ell." + +#~ msgid "" +#~ "Width of the vertical and horizontal lines that make up the crosshairs." +#~ msgstr "" +#~ "Amplada de les línies verticals i horitzontals que creen la retícula." + +#~ msgid "Bluetooth Agent" +#~ msgstr "Agent Bluetooth" + +#~ msgid "Search your computer" +#~ msgstr "Cerqueu a l'ordinador" + +#~ msgid "" +#~ "Can't add a new workspace because maximum workspaces limit has been " +#~ "reached." +#~ msgstr "" +#~ "No es pot afegir un espai de treball nou perquè ja s'ha arribat al límit " +#~ "d'espais de treball." + +#~ msgid "Can't remove the first workspace." +#~ msgstr "No es pot suprimir el primer espai de treball." From bf8b9b4906f3e25ae80625917d760a413485872f Mon Sep 17 00:00:00 2001 From: Andre Klapper Date: Mon, 7 Mar 2011 00:54:10 +0100 Subject: [PATCH 20/74] Workaround broken Translation --- po/ta.po | 39 ++------------------------------------- 1 file changed, 2 insertions(+), 37 deletions(-) diff --git a/po/ta.po b/po/ta.po index d865ab844..31ab27eb7 100644 --- a/po/ta.po +++ b/po/ta.po @@ -522,8 +522,9 @@ msgstr "PLACES & DEVICES" #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:33 +#, fuzzy msgid "toggle-switch-us" -msgstr "முறைமை-மாற்றி-யூஎஸ்" +msgstr "toggle-switch-us" #: ../js/ui/runDialog.js:233 msgid "Please enter a command:" @@ -718,39 +719,3 @@ msgstr "தேடு" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" -#~ msgid "Overview workspace view mode" -#~ msgstr "பணி இட மேல்பார்வை காட்சிப் பாங்கு." - -#~ msgid "" -#~ "The selected workspace view mode in the overview. Supported values are " -#~ "\"single\" and \"grid\"." -#~ msgstr "" -#~ "மேல்பார்வையில் தேர்ந்தெடுத்த பணீட காட்சி பாங்கு. ஆதரவுள்ள மதிப்புகள் 'ஒன்று' மற்றும் " -#~ "'வலை'" - -#~ msgid "Drag here to add favorites" -#~ msgstr "விருப்பங்களுக்கு சேர்க்க இங்கு இழுத்துவிடு" - -#~ msgid "Find" -#~ msgstr "தேடு" - -#~ msgid "Searching..." -#~ msgstr "தேடுகிறது..." - -#~ msgid "No matching results." -#~ msgstr "பொருத்தமான விடைகள் இல்லை" - -#~ msgid "ON" -#~ msgstr "இயக்கத்தில்" - -#~ msgid "OFF" -#~ msgstr "செயல் நீக்கு" - -#~ msgid "Invisible" -#~ msgstr "பார்க்கமுடியாதது" - -#~ msgid "Account Information..." -#~ msgstr "கணக்கு தகவல்..." - -#~ msgid "System Preferences..." -#~ msgstr "கணினி முன்னுரிமைகள்..." From 38235ecb976a9001397bcafaa1640dfbcc603d05 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Sun, 6 Mar 2011 22:28:00 -0500 Subject: [PATCH 21/74] gnome-shell-build-setup.sh: Add missing deps for evolution-data-server evolution-data-server requires libical and gperf. Based on patch from Eric Springer. --- tools/build/gnome-shell-build-setup.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/build/gnome-shell-build-setup.sh b/tools/build/gnome-shell-build-setup.sh index f568fc27b..38a1f9e1e 100755 --- a/tools/build/gnome-shell-build-setup.sh +++ b/tools/build/gnome-shell-build-setup.sh @@ -53,13 +53,13 @@ fi # binutils, curl, gcc, make, git # # General build stuff: -# automake, bison, flex, gettext, gnome-common, gtk-doc, intltool, +# automake, bison, flex, gettext, gnome-common, gperf, gtk-doc, intltool, # libtool, pkgconfig, cvs # # Devel packages needed by gnome-shell and its deps: # dbus-glib, expat, GL, gnome-menus, gstreamer, libffi, # libjasper, libjpeg, libpng, libpulse, libtiff, libwnck, -# iso-codes, libxml2, ORBit2, pam, python, readline, +# iso-codes, libical, libxml2, ORBit2, pam, python, readline, # spidermonkey ({mozilla,firefox,xulrunner}-js), startup-notification, # xdamage, icon-naming-utils, upower, libtool-ltdl, libvorbis, # libgcrypt, libtasn1, libgnome-keyring, libgtop, cups, @@ -73,10 +73,10 @@ fi if test "x$system" = xUbuntu -o "x$system" = xDebian -o "x$system" = xLinuxMint ; then reqd=" build-essential curl - automake bison flex gettext git-core cvs gnome-common gtk-doc-tools + automake bison flex gettext git-core gperf cvs gnome-common gtk-doc-tools gvfs gvfs-backends icon-naming-utils libdbus-glib-1-dev libexpat-dev libffi-dev libgnome-menu-dev libgnome-desktop-dev libgtop2-dev - libjasper-dev libjpeg-dev libpng-dev libstartup-notification0-dev libtiff-dev + libical-dev libjasper-dev libjpeg-dev libpng-dev libstartup-notification0-dev libtiff-dev libwnck-dev libgl1-mesa-dev liborbit2-dev libpulse-dev libreadline5-dev libxml2-dev mesa-common-dev mesa-utils libpam-dev python-dev python-gconf python-gobject xulrunner-dev libcroco3-dev @@ -111,9 +111,9 @@ fi if test "x$system" = xFedora ; then reqd=" binutils curl gcc gcc-c++ make cvs - automake bison flex gettext git gnome-common gnome-doc-utils gvfs intltool + automake bison flex gettext git gnome-common gnome-doc-utils gperf gvfs intltool libtool pkgconfig dbus-glib-devel gnome-desktop-devel gnome-menus-devel - gnome-python2-gconf jasper-devel libffi-devel libjpeg-devel libpng-devel + gnome-python2-gconf jasper-devel libffi-devel libical-devel libjpeg-devel libpng-devel libtiff-devel libwnck-devel mesa-libGL-devel ORBit2-devel pam-devel pulseaudio-libs-devel python-devel pygobject2 readline-devel xulrunner-devel libXdamage-devel libcroco-devel libxml2-devel gstreamer-devel From 52a05090bfec383df341c512bcf2d5e5bd0ec22a Mon Sep 17 00:00:00 2001 From: Jakub Steiner Date: Mon, 7 Mar 2011 15:12:45 +0100 Subject: [PATCH 22/74] CSS: Update window close button. https://bugzilla.gnome.org/show_bug.cgi?id=643977 --- data/theme/close-window.svg | 128 ++++++++++++++++++++++++++++-------- data/theme/gnome-shell.css | 7 +- 2 files changed, 105 insertions(+), 30 deletions(-) diff --git a/data/theme/close-window.svg b/data/theme/close-window.svg index a15eade3b..10bbef9c9 100644 --- a/data/theme/close-window.svg +++ b/data/theme/close-window.svg @@ -1,24 +1,26 @@ + + inkscape:guide-bbox="true" + borderlayer="true" + inkscape:showpageshadow="false" + inkscape:window-maximized="0"> \ No newline at end of file + style="display:inline" + id="g16402-8" + transform="translate(4.7533483,2.8238929)"> \ No newline at end of file diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 56e7496bd..b317e6eb0 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -357,10 +357,9 @@ StTooltip StLabel { .window-close { background-image: url("close-window.svg"); - height: 24px; - width: 24px; - -st-background-image-shadow: -2px 2px 6px rgba(0,0,0,0.5); - -shell-close-overlap: 16px; + height: 34px; + width: 34px; + -shell-close-overlap: 20px; } .window-close:rtl { From 1496d6af2fa2249a61cdb3e231fc52daf87423dc Mon Sep 17 00:00:00 2001 From: Jakub Steiner Date: Wed, 2 Mar 2011 19:53:13 +0100 Subject: [PATCH 23/74] Update the spinner to be consistent with adwaita/gtk https://bugzilla.gnome.org/show_bug.cgi?id=643708 --- data/Makefile.am | 2 +- data/theme/process-working.png | Bin 4097 -> 0 bytes data/theme/process-working.svg | 261 +++++++++++++++++++++++++++++++++ js/ui/panel.js | 2 +- 4 files changed, 263 insertions(+), 2 deletions(-) delete mode 100644 data/theme/process-working.png create mode 100644 data/theme/process-working.svg diff --git a/data/Makefile.am b/data/Makefile.am index 58c746438..990f2325e 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -36,7 +36,7 @@ dist_theme_DATA = \ theme/panel-button-border.svg \ theme/panel-button-highlight-narrow.svg \ theme/panel-button-highlight-wide.svg \ - theme/process-working.png \ + theme/process-working.svg \ theme/running-indicator.svg \ theme/scroll-button-down-hover.png \ theme/scroll-button-down.png \ diff --git a/data/theme/process-working.png b/data/theme/process-working.png deleted file mode 100644 index 402615ba5fd0e938bce78ace25f11d25be60ba69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4097 zcmYLMc{tS1AOEa#9kFF;lUrYQRYGnZY_67NElI9*%dtf6Bgc2im6R2+IjVJhbH^6t zC|YvHR*NM{+O#2U6gK@n{q>vYnVDzaGtbO3^M1|i{d#BP?5y^P%8CL2u;;9`IUel2 zz^Vlm0^3!YlyR^VxQssQ1O-bH)GrGhi(In4a2Z_B{97StWLX?&JP>8!66F{k5Ebhk z=?}!l#%czIgZmg0jayj3=1cUwLtx)^nCyuA^UmOM-Tq{C7Ug)JXu{Xx&A9zlhms0m2?Z}0l znK|w&xBkJKN3?2qTD$+bYp%>CMz49!g*13_Smu~){;!IkuShQZF_C~bj~n88Pn}7; zMpFm!_+UUe5Vx)`bcsE7Cl=w`N1l{TC0y=sf4o9dxIU45Fj-nOLzPreNP>Nce;4lP z=s5l^(;bKk3tPPi6L_g5&iQMC{P^gec&^tlRct*4vH(f_BiQ^)?H=*2%aQWex+~(; zC?{x(8nq3Wy&j$d{}~9l@O_g6%ED)uBO`f41l!FFEney!C;Ts7L1opYku90V*I_AJ{T2R)W^3tM|zR_sRS3lTSNf zD$uuINCBq=zXbv)K(fmD^?c$DljFxPkLZq`!ZJ=^8Rb}8TLJRqDby06>}Lyori)F~ zHZ+_P_8J$3p$+p|lu=8G0LB6S`yJ8-*6CIGt~zjJq^Qan>k7 zcGAYT_k9NwlZAl-ygmuWAx{dUv-Y5^`GN0SPXkz+6;U2*s-*gWhtui}D`b47R#D2n8HK4?e*Une}Py13v%w(I)KW4AoX8m1v9m#zaN^X!s>VpStUf z@TX6mVDp$685x1Vg5j8OXJf@8h47J*lJFNCt`+|@2)D%TTrr0(vnfronc5~sMjfI` zVhf1ZqQCd_&Tep+(^FF=K`i}fkMpmC+r1JJ5}0R$`P0weaTe_*0JcE$;%>JvZU*~m zc6K&vZD&miZHc6|Yl-h4yJPaR8S5zOwXfG3`QnriZq>j3=jzA8LE4KbjE zLUGrW$t@*ES}=6STkGw{w8Xqbd!OJ;R@DIrxz*&u?(dzT;nqw;wjJDJb%pilWro=P zTP)oo{LoR%vJRW4jvjQCTkcAi7cIbJ&{=+Y>-s@CZ?pM;*PLj>dh zL>z-M$X7gVSLIANOan$X4z+=o-84#Ndz5O`&ha3rJ$$w3+mCf(902O;Z^`p&ByoNh ztXiRQ%&He)3KQr#RCv}J<%rITMh`YM5NA*eBB>y>#pqKS)E^Nw&)~T)E{294k&~1A z*vQ#z-LB#!@ zJx8H<;!5#a)N|r1hs4j_L&iggLCQcwtuWJGc}K%ces`;c2L#aVsQ6p#`07T^J32j+ zNi+jYt8msfC`lXC4pdo_owPLDaoI+`G$r*k<(ul)b@zvR&LSBxvZj1PDan!x18+0s zeYfy+ejuO=GrbR`D_u0q=icwQ`62N)jmUWu{H7vsqLe0k9Hw$ZaoV{%!SKpY5?T%Hk~YzvKWWp1<}bMp1p-UPQ_p-)|c30O&G_b*UwiYF7}vwd2onmF5k zjSz855i;0@H6%(Jrs4@)3cv@;tWH#45rhMcqn_#l50^gy!0G&bh(-$pr)qw zg+@Hq(YW(GdXDP$DD2z^x7Re{%tc*sOr1ANf0WG)J+^39!_d8Lt253WF;{u!?Cf01 z?GRY<-GwalR7tehTr70@dNDm|e!lHU$N^KB$!Ktr&35;i1I7UI3!T+qtHzkPvB^g- z89+R+072c|qi1ONxJK$rf4{l>mm_Jp`;X}#6JthaEE*~Uj~fqH*VM%71@SP>+bjXky*2O9*2bgaBZMlT3VWyX?08!270TCk)MG- z=5kK`n+JqNrvl}WUKJ6Qsmb&-zW*C0+M7YQ;k(yZ=q#n;VWN*)b!1pr*dg&V>N$54 zibEGes@yey>dEf0f$mNE{!;zi(<{~OM|TehHzQ=6)HbLm(9qiz70lw|;<`n{q(^Yf zfIJS|uaTp06R&Usuh1R4_Rf^++2V5I%g*i&d6JRo{nP*?uKGfXr-Nqkjz-at^8C;1 zc#I@*E&RGt{vzVGEq%yO=hmX3&}IpV|CMl2*sdh-N1|v;02mn`=j3T0FMR1jBbH^L zt3t}_7bT{qrmUxEcXBRsLaKw_E~eR_{7YdvDx|pcn5|d3qtZa4&+T&>(k$IkKe&aJ zA^R|e+f{7<09#4r*Yfgk^FKEdy7Herdj<`DzaGMDoUkd@q@t(^YK1{hEip^uIJvqA zB;7KF_a~^`)xXXOBi8pyV1de5Hef-}SvctXfp%La_bIgHEO=P1*oZxns)uEC%A9p| z06h}f!5jJlvLA#!TZnJ8bol6ctKDtsfx4}|{bdjtFcoml%-vWT__oEakes0<57Jgt z!N=1m!qh34&j1o;(%e7Nm;>q`LJ$fHGS@8sb-T3`P9&}ex6icOO*%m4lepOSiHlC+ zeQ{$(gb2C7u6TP!Tc9^W6Nh29XsZ$E|4Gmix33HsawRyd3?`(7$-KJaII$Do{Dx~P8U%i(2(cxBJLf0x5izV8h z?)lmT{&x!30d1X*cO71e%sshjAi7|WQ`?MdO8g1)4Ryf;Nul*clzZ5b9l=j% zM}I+cjN|2UO!Xx#?!^;Jebp6BU%6FzeB{Ot(^lGGJ`ep>SU!G!=2~<^-;r=#*(6`z zd(mjZW({Y%mK;gJ&q#VjhlSbM+S#o-KRU^`K&brEA_UL1w>p@UyJ*O1cijWBO7~h~ z;CT6p-kx1m@~C3k2l($C{lb)$8NGz9?@LklCbWcvh38^|Hswu}D#k-VjACi5=g-sU zGYtg+q)cufaOx99axeNVz$+PE>YRLA<_*dP|GvIHpQNOx7p&&eK)Jx6a2fcapHO8k zI&15A;Mj@JYKpz_z#pN7aNNYuBVbpoH|4|8Lb1+4egH0-p$weK(>|=Jd$e7nYEI%6 z!q<|DpODHnFBlClGKRI@MJ8Ou8=Ik$_xJL_lb=4|`;cy7FYz{d?kL?Q1BSneZ_MzX zvLT}vPwxp{GDwLPJDFI{LswObDcd<>b`JP%G&D32e0J>*XH^FUzy$Kiky-fdyAu~( zE>=y&il1?;gOjGJ7Cz-Zy$c&Nx<}rJS?2UJ2dY%A0`jzPj2ioj{A<@l01+%BIB<-z zOpgii*_-n|z$_wC0i7{uBI8i!q;nT(EMsxQ0$NAU>zuok1Jgl~;;zEJKk-JSYMiE_ z!-&L;&PGsB9nRA}4{h;%-|lGIZzLJY%6Df!ouomgCExA-H4ZC!h2^Tf>;J@aG#z*F73-fmZj?Kw^l1$6H{)*5A8({`m$&zk;lJVy12Wy{j2n= z1ix*Tgt{}%?zvN5z6nZ@&z+vx*gi|R#gpw4E_?hmC|L2BEu?rKmKm)G=>>^ZTe%-K zwp9u9IjKK?J*JS!Ij=d|HxR(fyRMM+Sbo85LU#yvxJSZb(M8DAh>cS2_r@$=rEp6d zImzKul7JWZQhkVnId?xN(-CaSF&6EP(1KAu_Yl7M#5jvmTKWZ5he%nT98$%?&^qAn zKvE^|le0bjHvUVs!d<-({i%1 zt~KOa5Nq^cDa=O-H)8Um8Izb+9R%hBhe-wTz`>Pn!HZX!RaCh&oda-<$v6-8l!QJR zPf%bk@?N2oNqt5Hqm*6VVpojL-wdy{UJC#IWmsU5fk1Xovh{(?7Cj@QExD7F8Ob=a poxFc@rcN!ILU!`_1-~BOl}wJcXiUcJ!-DBLaMr@kyb + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/js/ui/panel.js b/js/ui/panel.js index 7b86db7fa..fd929e10a 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -275,7 +275,7 @@ AppMenuButton.prototype = { this._clipWidth = PANEL_ICON_SIZE; this._direction = SPINNER_SPEED; - this._spinner = new AnimatedIcon('process-working.png', + this._spinner = new AnimatedIcon('process-working.svg', PANEL_ICON_SIZE); this._container.add_actor(this._spinner.actor); this._spinner.actor.lower_bottom(); From b4489d9ea6663906293c4a8b01c0b28a80e9cb25 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Mon, 7 Mar 2011 02:39:20 +0000 Subject: [PATCH 24/74] tools: Fix typo in check-for-missing.py --- tools/check-for-missing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/check-for-missing.py b/tools/check-for-missing.py index 0a689d7ff..7fd8c8c7a 100755 --- a/tools/check-for-missing.py +++ b/tools/check-for-missing.py @@ -3,7 +3,7 @@ # This is a simple script that we use to check for files in git # and not in the distribution. It was previously written in shell # and inlined in the Makefile.am, but 'git ls-files --exclude=' -# was changed to no longer due anything useful, which made that +# was changed to no longer do anything useful, which made that # too challenging to be worthwhile. import fnmatch, os, subprocess, sys From df848fdb4da9f6a976189c7536f203610d35ccb8 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 15 Feb 2011 17:10:35 -0500 Subject: [PATCH 25/74] dateMenu: make the menu un-key-navigable It already doesn't work right, because the PanelMenuButton code assumes that Left and Right won't be used as part of keynav within a menu. And the gnome-panel calendar isn't keyboard accessible either, so this isn't a regression. To be fixed later. https://bugzilla.gnome.org/show_bug.cgi?id=641253 --- js/ui/dateMenu.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js index 6dee534b6..ad2c112ef 100644 --- a/js/ui/dateMenu.js +++ b/js/ui/dateMenu.js @@ -90,6 +90,7 @@ DateMenuButton.prototype = { vbox.add(item.actor, {y_align: St.Align.END, expand: true, y_fill: false}); item = new PopupMenu.PopupMenuItem(_("Date and Time Settings")); item.connect('activate', Lang.bind(this, this._onPreferencesActivate)); + item.actor.can_focus = false; vbox.add(item.actor); // Add vertical separator @@ -109,6 +110,7 @@ DateMenuButton.prototype = { item = new PopupMenu.PopupMenuItem(_("Open Calendar")); item.connect('activate', Lang.bind(this, this._onOpenCalendarActivate)); + item.actor.can_focus = false; vbox.add(item.actor, {y_align: St.Align.END, expand: true, y_fill: false}); // Whenever the menu is opened, select today From ef6cce89885d2312c8eb47ce7daed8f0a962ed60 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 8 Feb 2011 14:53:43 -0500 Subject: [PATCH 26/74] popupMenu, panelMenu: split up panel and non-panel keynav PopupMenuManager was pretending that it knew nothing about the menu's sourceActors, while also trying to handle keynav between them. This was a big mess, and resulted in bugs in navigation between panel menus and the Activities button, and it totally gets in the way when trying to add keynav to the dash (whose menu sources are arranged vertically rather than horizontally). Fix this up by moving the panel-specific parts to PanelMenuButton instead. https://bugzilla.gnome.org/show_bug.cgi?id=641253 --- js/ui/panelMenu.js | 28 ++++++- js/ui/popupMenu.js | 172 ++++++++++++-------------------------- src/st/st-focus-manager.c | 23 +++++ src/st/st-focus-manager.h | 2 + 4 files changed, 103 insertions(+), 122 deletions(-) diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index a3e9e8ccf..6433433f7 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -1,7 +1,9 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ const Clutter = imports.gi.Clutter; +const Gtk = imports.gi.Gtk; const St = imports.gi.St; + const Lang = imports.lang; const PopupMenu = imports.ui.popupMenu; const Main = imports.ui.main; @@ -20,9 +22,10 @@ Button.prototype = { track_hover: true }); this.actor._delegate = this; this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); - this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress)); - this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, /* FIXME */ 0); + this.actor.connect('key-press-event', Lang.bind(this, this._onSourceKeyPress)); + this.menu = new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0); this.menu.connect('open-state-changed', Lang.bind(this, this._onOpenStateChanged)); + this.menu.actor.connect('key-press-event', Lang.bind(this, this._onMenuKeyPress)); Main.chrome.addActor(this.menu.actor, { visibleInOverview: true, affectsStruts: false }); this.menu.actor.hide(); @@ -32,20 +35,37 @@ Button.prototype = { this.menu.toggle(); }, - _onKeyPress: function(actor, event) { + _onSourceKeyPress: function(actor, event) { let symbol = event.get_key_symbol(); if (symbol == Clutter.KEY_space || symbol == Clutter.KEY_Return) { this.menu.toggle(); return true; + } else if (symbol == Clutter.KEY_Escape && this.menu.isOpen) { + this.menu.close(); + return true; } else if (symbol == Clutter.KEY_Down) { if (!this.menu.isOpen) this.menu.toggle(); - this.menu.activateFirst(); + this.menu.actor.navigate_focus(this.actor, Gtk.DirectionType.DOWN, false); return true; } else return false; }, + _onMenuKeyPress: function(actor, event) { + let symbol = event.get_key_symbol(); + if (symbol == Clutter.KEY_Left || symbol == Clutter.KEY_Right) { + let focusManager = St.FocusManager.get_for_stage(global.stage); + let group = focusManager.get_group(this.actor); + if (group) { + let direction = (symbol == Clutter.KEY_Left) ? Gtk.DirectionType.LEFT : Gtk.DirectionType.RIGHT; + group.navigate_focus(this.actor, direction, false); + return true; + } + } + return false; + }, + _onOpenStateChanged: function(menu, open) { if (open) this.actor.add_style_pseudo_class('active'); diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 99199224c..6e753fd44 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -684,28 +684,6 @@ PopupImageMenuItem.prototype = { } }; -function mod(a, b) { - return (a + b) % b; -} - -function findNextInCycle(items, current, direction) { - let cur; - - if (items.length == 0) - return current; - else if (items.length == 1) - return items[0]; - - if (current) - cur = items.indexOf(current); - else if (direction == 1) - cur = items.length - 1; - else - cur = 0; - - return items[mod(cur + direction, items.length)]; -} - function PopupMenuBase() { throw new TypeError('Trying to instantiate abstract class PopupMenuBase'); } @@ -861,17 +839,6 @@ PopupMenuBase.prototype = { } }, - activateFirst: function() { - let children = this.box.get_children(); - for (let i = 0; i < children.length; i++) { - let actor = children[i]; - if (actor._delegate && actor._delegate instanceof PopupBaseMenuItem && actor.visible && actor.reactive) { - actor._delegate.setActive(true); - break; - } - } - }, - toggle: function() { if (this.isOpen) this.close(true); @@ -909,6 +876,8 @@ PopupMenu.prototype = { this.actor = this._boxPointer.actor; this.actor._delegate = this; this.actor.style_class = 'popup-menu-boxpointer'; + this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); + this._boxWrapper = new Shell.GenericContainer(); this._boxWrapper.connect('get-preferred-width', Lang.bind(this, this._boxGetPreferredWidth)); this._boxWrapper.connect('get-preferred-height', Lang.bind(this, this._boxGetPreferredHeight)); @@ -937,6 +906,15 @@ PopupMenu.prototype = { this.box.allocate(box, flags); }, + _onKeyPressEvent: function(actor, event) { + if (event.get_key_symbol() == Clutter.Escape) { + this.close(true); + return true; + } + + return false; + }, + setArrowOrigin: function(origin) { this._boxPointer.setArrowOrigin(origin); }, @@ -1127,11 +1105,17 @@ PopupSubMenuMenuItem.prototype = { }, _onKeyPressEvent: function(actor, event) { - if (event.get_key_symbol() == Clutter.KEY_Right) { + let symbol = event.get_key_symbol(); + + if (symbol == Clutter.KEY_Right) { this.menu.open(true); - this.menu.activateFirst(); + this.menu.actor.navigate_focus(null, Gtk.DirectionType.DOWN, false); + return true; + } else if (symbol == Clutter.KEY_Left && this.menu.isOpen) { + this.menu.close(); return true; } + return PopupBaseMenuItem.prototype._onKeyPressEvent.call(this, actor, event); }, @@ -1158,12 +1142,13 @@ PopupMenuManager.prototype = { this.grabbed = false; this._eventCaptureId = 0; - this._keyPressEventId = 0; this._enterEventId = 0; this._leaveEventId = 0; + this._keyFocusNotifyId = 0; this._activeMenu = null; this._menus = []; this._preGrabInputMode = null; + this._grabbedFromKeynav = false; }, addMenu: function(menu, position) { @@ -1172,15 +1157,13 @@ PopupMenuManager.prototype = { openStateChangeId: menu.connect('open-state-changed', Lang.bind(this, this._onMenuOpenState)), destroyId: menu.connect('destroy', Lang.bind(this, this._onMenuDestroy)), enterId: 0, - focusInId: 0, - focusOutId: 0 + focusInId: 0 }; let source = menu.sourceActor; if (source) { menudata.enterId = source.connect('enter-event', Lang.bind(this, function() { this._onMenuSourceEnter(menu); })); menudata.focusInId = source.connect('key-focus-in', Lang.bind(this, function() { this._onMenuSourceEnter(menu); })); - menudata.focusOutId = source.connect('key-focus-out', Lang.bind(this, function() { this._onKeyFocusOut(menu); })); } if (position == undefined) @@ -1205,8 +1188,6 @@ PopupMenuManager.prototype = { menu.sourceActor.disconnect(menudata.enterId); if (menudata.focusInId) menu.sourceActor.disconnect(menudata.focusInId); - if (menudata.focusOutId) - menu.sourceActor.disconnect(menudata.focusOutId); this._menus.splice(position, 1); }, @@ -1215,10 +1196,10 @@ PopupMenuManager.prototype = { Main.pushModal(this._owner.actor); this._eventCaptureId = global.stage.connect('captured-event', Lang.bind(this, this._onEventCapture)); - this._keyPressEventId = global.stage.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); // captured-event doesn't see enter/leave events this._enterEventId = global.stage.connect('enter-event', Lang.bind(this, this._onEventCapture)); this._leaveEventId = global.stage.connect('leave-event', Lang.bind(this, this._onEventCapture)); + this._keyFocusNotifyId = global.stage.connect('notify::key-focus', Lang.bind(this, this._onKeyFocusChanged)); this.grabbed = true; }, @@ -1226,49 +1207,47 @@ PopupMenuManager.prototype = { _ungrab: function() { global.stage.disconnect(this._eventCaptureId); this._eventCaptureId = 0; - global.stage.disconnect(this._keyPressEventId); - this._keyPressEventId = 0; global.stage.disconnect(this._enterEventId); this._enterEventId = 0; global.stage.disconnect(this._leaveEventId); this._leaveEventId = 0; + global.stage.disconnect(this._keyFocusNotifyId); + this._keyFocusNotifyId = 0; this.grabbed = false; Main.popModal(this._owner.actor); }, _onMenuOpenState: function(menu, open) { + if (open) + this._activeMenu = menu; + + // Check what the focus was before calling pushModal/popModal + let focus = global.stage.key_focus; + let hadFocus = focus && this._activeMenuContains(focus); + if (open) { if (!this.grabbed) { this._preGrabInputMode = global.stage_input_mode; + this._grabbedFromKeynav = hadFocus; this._grab(); } - this._activeMenu = menu; - // if the focus is not already associated with the menu, - // then focus the menu - let focus = global.stage.key_focus; - if (!this._activeMenuContains(focus)) - menu.sourceActor.grab_key_focus(); + if (hadFocus) + focus.grab_key_focus(); + else + menu.actor.grab_key_focus(); } else if (menu == this._activeMenu) { - let focus = global.stage.key_focus; - let fromActive = focus && this._activeMenuContains(focus); - if (this.grabbed) this._ungrab(); this._activeMenu = null; - // If keynav was in effect before we grabbed, then we need - // to properly re-establish it after we ungrab. (popModal - // will have unset the focus.) If some part of the menu - // was focused at the time of the ungrab then focus its - // sourceActor. Otherwise just reset the focus to where it - // was right before the ungrab. - if (this._preGrabInputMode == Shell.StageInputMode.FOCUSED) { - global.stage_input_mode = Shell.StageInputMode.FOCUSED; - if (fromActive) + if (this._grabbedFromKeynav) { + if (this._preGrabInputMode == Shell.StageInputMode.FOCUSED) + global.stage_input_mode = Shell.StageInputMode.FOCUSED; + if (hadFocus && menu.sourceActor) menu.sourceActor.grab_key_focus(); - else + else if (focus) focus.grab_key_focus(); } } @@ -1296,29 +1275,20 @@ PopupMenuManager.prototype = { return false; }, - _onKeyFocusOut: function(menu) { - if (!this.grabbed || menu != this._activeMenu) + _onKeyFocusChanged: function() { + if (!this.grabbed || !this._activeMenu) return; - // We want to close the menu if the focus has moved somewhere - // other than inside the menu or to another menu's sourceActor. - // Unfortunately, when key-focus-out is emitted, - // stage.key_focus will be null. So we have to wait until - // after it emits the key-focus-in as well. - let id = global.stage.connect('notify::key-focus', Lang.bind(this, - function () { - global.stage.disconnect(id); + let focus = global.stage.key_focus; + if (focus) { + if (this._activeMenuContains(focus)) + return; + if (focus._delegate && focus._delegate.menu && + this._findMenu(focus._delegate.menu) != -1) + return; + } - if (menu != this._activeMenu) - return; - - let focus = global.stage.key_focus; - if (!focus || this._activeMenuContains(focus)) - return; - if (focus._delegate && this._findMenu(focus._delegate.menu) != -1) - return; - menu.close(true); - })); + this._closeMenu(); }, _onMenuDestroy: function(menu) { @@ -1354,18 +1324,6 @@ PopupMenuManager.prototype = { return -1; }, - _nextMenu: function(pos, direction) { - for (let i = 1; i < this._menus.length; i++) { - let candidate = mod(pos + i * direction, this._menus.length); - let menu = this._menus[candidate].menu; - if (!menu.sourceActor || menu.sourceActor.visible) - return menu; - } - // no menu is found? this should not happen - // anyway stay on current menu - return this._menus[pos]; - }, - _onEventCapture: function(actor, event) { if (!this.grabbed) return false; @@ -1383,8 +1341,7 @@ PopupMenuManager.prototype = { this._closeMenu(); return true; } - } else if ((eventType == Clutter.EventType.BUTTON_PRESS && !activeMenuContains) - || (eventType == Clutter.EventType.KEY_PRESS && event.get_key_symbol() == Clutter.Escape)) { + } else if (eventType == Clutter.EventType.BUTTON_PRESS && !activeMenuContains) { this._closeMenu(); return true; } else if (activeMenuContains || this._eventIsOnAnyMenuSource(event)) { @@ -1394,27 +1351,6 @@ PopupMenuManager.prototype = { return true; }, - _onKeyPressEvent: function(actor, event) { - if (!this.grabbed || !this._activeMenu) - return false; - if (!this._eventIsOnActiveMenu(event)) - return false; - - let symbol = event.get_key_symbol(); - if (symbol == Clutter.Left || symbol == Clutter.Right) { - let direction = symbol == Clutter.Right ? 1 : -1; - let pos = this._findMenu(this._activeMenu); - let next = this._nextMenu(pos, direction); - if (next != this._activeMenu) { - this._changeMenu(next); - next.activateFirst(); - } - return true; - } - - return false; - }, - _closeMenu: function() { if (this._activeMenu != null) this._activeMenu.close(true); diff --git a/src/st/st-focus-manager.c b/src/st/st-focus-manager.c index 8c7bc9dfd..85acf293b 100644 --- a/src/st/st-focus-manager.c +++ b/src/st/st-focus-manager.c @@ -199,3 +199,26 @@ st_focus_manager_remove_group (StFocusManager *manager, { g_hash_table_remove (manager->priv->groups, root); } + +/** + * st_focus_manager_get_group: + * @manager: the #StFocusManager + * @widget: an #StWidget + * + * Checks if @widget is inside a focus group, and if so, returns + * the root of that group. + * + * Return value: (transfer none): the focus group root, or %NULL if + * @widget is not in a focus group + */ +StWidget * +st_focus_manager_get_group (StFocusManager *manager, + StWidget *widget) +{ + ClutterActor *actor = CLUTTER_ACTOR (widget); + + while (actor && !g_hash_table_lookup (manager->priv->groups, actor)) + actor = clutter_actor_get_parent (actor); + + return ST_WIDGET (actor); +} diff --git a/src/st/st-focus-manager.h b/src/st/st-focus-manager.h index 9d4dc30d9..e708f4840 100644 --- a/src/st/st-focus-manager.h +++ b/src/st/st-focus-manager.h @@ -73,6 +73,8 @@ void st_focus_manager_add_group (StFocusManager *manager, StWidget *root); void st_focus_manager_remove_group (StFocusManager *manager, StWidget *root); +StWidget *st_focus_manager_get_group (StFocusManager *manager, + StWidget *widget); G_END_DECLS From 7790a07c08c870e3ef04715f3ed6c60bb6dc8a09 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 3 Mar 2011 16:02:02 -0500 Subject: [PATCH 27/74] panel: remove accessibility icon The accessibility menu is not ready for prime time. Remove it for now. https://bugzilla.gnome.org/show_bug.cgi?id=639762 --- js/ui/panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index fd929e10a..a8d081281 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -37,7 +37,7 @@ const SPINNER_SPEED = 0.02; const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery']; const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = { - 'a11y': imports.ui.status.accessibility.ATIndicator, + // 'a11y': imports.ui.status.accessibility.ATIndicator, 'volume': imports.ui.status.volume.Indicator, 'battery': imports.ui.status.power.Indicator, 'keyboard': imports.ui.status.keyboard.XKBIndicator From 4282748483d2a74fbad90dbe15035224531a6577 Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Sun, 6 Mar 2011 16:29:11 -0500 Subject: [PATCH 28/74] Fix removing summary items Unset this._expandedSummaryItem if it is the summary item that is being removed. This avoids "this._sourceTitle.clutter_text is null" error. Destroy the summary item actor only after calling _unsetClickedSummaryItem() that disconnects from one of its signals. https://bugzilla.gnome.org/show_bug.cgi?id=644043 --- js/ui/messageTray.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 5c4445810..d15bd62ce 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1157,7 +1157,7 @@ MessageTray.prototype = { if (index == -1) return; - this._summaryItems[index].actor.destroy(); + let summaryItemToRemove = this._summaryItems[index]; let newSummaryItemsIndex = this._newSummaryItems.indexOf(this._summaryItems[index]); if (newSummaryItemsIndex != -1) @@ -1168,6 +1168,9 @@ MessageTray.prototype = { if (source.isChat) this._chatSummaryItemsCount--; + if (this._expandedSummaryItem == summaryItemToRemove) + this._expandedSummaryItem = null; + if (this._longestSummaryItem.source == source) { let newTitleWidth = 0; this._longestSummaryItem = null; @@ -1192,11 +1195,13 @@ MessageTray.prototype = { this._notificationRemoved = true; needUpdate = true; } - if (this._clickedSummaryItem && this._clickedSummaryItem.source == source) { + if (this._clickedSummaryItem == summaryItemToRemove) { this._unsetClickedSummaryItem(); needUpdate = true; } + summaryItemToRemove.actor.destroy(); + if (needUpdate); this._updateState(); From 868bf5838d5a669efb8799827ab817435306e4cb Mon Sep 17 00:00:00 2001 From: Hellyna Ng Date: Sat, 12 Feb 2011 03:43:01 +0800 Subject: [PATCH 29/74] MessageTray: add right click menu for summary items This provides straight forward controls for opening the corresponding application or removing the summary item. https://bugzilla.gnome.org/show_bug.cgi?id=617224 --- data/theme/gnome-shell.css | 10 +- js/ui/messageTray.js | 191 ++++++++++++++++++++------------ js/ui/notificationDaemon.js | 2 +- js/ui/popupMenu.js | 8 +- js/ui/telepathyClient.js | 2 +- js/ui/windowAttentionHandler.js | 2 +- 6 files changed, 139 insertions(+), 76 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index b317e6eb0..da69a3e67 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -977,7 +977,7 @@ StTooltip StLabel { padding-bottom: 8px; } -.summary-notification-boxpointer { +.summary-boxpointer { -arrow-border-radius: 9px; -arrow-background-color: rgba(0,0,0,0.9); -arrow-border-width: 2px; @@ -986,12 +986,18 @@ StTooltip StLabel { -arrow-rise: 15px; } -.summary-notification-boxpointer #notification { +.summary-boxpointer #notification { border-radius: 9px; background: rgba(0,0,0,0) !important; padding-bottom: 12px; } +.summary-boxpointer #summary-right-click-menu { + font-size: 14px; + padding-top: 12px; + padding-bottom: 12px; +} + #notification-scrollview { max-height: 10em; } diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index d15bd62ce..29d882cd8 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -15,6 +15,7 @@ const St = imports.gi.St; const BoxPointer = imports.ui.boxpointer; const GnomeSession = imports.misc.gnomeSession; const Main = imports.ui.main; +const PopupMenu = imports.ui.popupMenu; const Params = imports.misc.params; const Tweener = imports.ui.tweener; const Util = imports.misc.util; @@ -853,7 +854,7 @@ Source.prototype = { this.notification = notification; - this._notificationClickedId = notification.connect('clicked', Lang.bind(this, this._notificationClicked)); + this._notificationClickedId = notification.connect('clicked', Lang.bind(this, this.open)); this._notificationDestroyedId = notification.connect('destroy', Lang.bind(this, function () { if (this.notification == notification) { @@ -881,7 +882,7 @@ Source.prototype = { }, // Default implementation is to do nothing, but subclasses can override - _notificationClicked: function(notification) { + open: function(notification) { }, // Default implementation is to destroy this source, but subclasses can override @@ -917,6 +918,27 @@ SummaryItem.prototype = { this._sourceBox.add_actor(this._sourceIcon); this._sourceBox.add_actor(this._sourceTitleBin, { expand: true }); this.actor.child = this._sourceBox; + this.rightClickMenu = new St.BoxLayout({ name: 'summary-right-click-menu', + vertical: true }); + + let item; + + item = new PopupMenu.PopupMenuItem(_("Open")); + item.connect('activate', Lang.bind(this, function() { + source.open(); + this.emit('right-click-menu-done-displaying'); + })); + this.rightClickMenu.add(item.actor); + + item = new PopupMenu.PopupMenuItem(_("Remove")); + item.connect('activate', Lang.bind(this, function() { + source.destroy(); + this.emit('right-click-menu-done-displaying'); + })); + this.rightClickMenu.add(item.actor); + + let focusManager = St.FocusManager.get_for_stage(global.stage); + focusManager.add_group(this.rightClickMenu); }, // getTitleNaturalWidth, getTitleWidth, and setTitleWidth include @@ -943,6 +965,7 @@ SummaryItem.prototype = { this._sourceTitle.clutter_text.ellipsize = mode; } }; +Signals.addSignalMethods(SummaryItem.prototype); function MessageTray() { this._init(); @@ -980,17 +1003,19 @@ MessageTray.prototype = { this._summaryMotionId = 0; - this._summaryNotificationBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM, - { reactive: true, - track_hover: true }); - this._summaryNotificationBoxPointer.actor.style_class = 'summary-notification-boxpointer'; - this.actor.add_actor(this._summaryNotificationBoxPointer.actor); - this._summaryNotificationBoxPointer.actor.lower_bottom(); - this._summaryNotificationBoxPointer.actor.hide(); + this._summaryBoxPointer = new BoxPointer.BoxPointer(St.Side.BOTTOM, + { reactive: true, + track_hover: true }); + this._summaryBoxPointer.actor.style_class = 'summary-boxpointer'; + this.actor.add_actor(this._summaryBoxPointer.actor); + this._summaryBoxPointer.actor.lower_bottom(); + this._summaryBoxPointer.actor.hide(); this._summaryNotification = null; this._summaryNotificationClickedId = 0; + this._summaryRightClickMenuClickedId = 0; this._clickedSummaryItem = null; + this._clickedSummaryItemMouseButton = -1; this._clickedSummaryItemAllocationChangedId = 0; this._expandedSummaryItem = null; this._summaryItemTitleWidth = 0; @@ -1004,7 +1029,7 @@ MessageTray.prototype = { this._focusGrabber = new FocusGrabber(); this._focusGrabber.connect('focus-grabbed', Lang.bind(this, function() { - if (this._summaryNotification) + if (this._summaryBoxPointer.bin.child) this._lock(); })); this._focusGrabber.connect('focus-ungrabbed', Lang.bind(this, this._unlock)); @@ -1027,7 +1052,7 @@ MessageTray.prototype = { this._notificationState = State.HIDDEN; this._notificationTimeoutId = 0; this._notificationExpandedId = 0; - this._summaryNotificationState = State.HIDDEN; + this._summaryBoxPointerState = State.HIDDEN; this._summaryNotificationTimeoutId = 0; this._summaryNotificationExpandedId = 0; this._overviewVisible = Main.overview.visible; @@ -1037,7 +1062,7 @@ MessageTray.prototype = { Main.chrome.addActor(this.actor, { affectsStruts: false, visibleInOverview: true }); Main.chrome.trackActor(this._notificationBin); - Main.chrome.trackActor(this._summaryNotificationBoxPointer.actor); + Main.chrome.trackActor(this._summaryBoxPointer.actor); global.gdk_screen.connect('monitors-changed', Lang.bind(this, this._setSizePosition)); @@ -1138,9 +1163,9 @@ MessageTray.prototype = { this._onSummaryItemHoverChanged(summaryItem); })); - summaryItem.actor.connect('clicked', Lang.bind(this, - function () { - this._onSummaryItemClicked(summaryItem); + summaryItem.actor.connect('button-press-event', Lang.bind(this, + function (actor, event) { + this._onSummaryItemClicked(summaryItem, event); })); source.connect('destroy', Lang.bind(this, this._onSourceDestroy)); @@ -1354,11 +1379,16 @@ MessageTray.prototype = { this._expandedSummaryItem.setEllipsization(Pango.EllipsizeMode.END); }, - _onSummaryItemClicked: function(summaryItem) { - if (!this._clickedSummaryItem || this._clickedSummaryItem != summaryItem) + _onSummaryItemClicked: function(summaryItem, event) { + let clickedButton = event.get_button(); + if (!this._clickedSummaryItem || + this._clickedSummaryItem != summaryItem || + this._clickedSummaryItemMouseButton != clickedButton) { this._clickedSummaryItem = summaryItem; - else + this._clickedSummaryItemMouseButton = clickedButton; + } else { this._unsetClickedSummaryItem(); + } this._updateState(); }, @@ -1385,7 +1415,7 @@ MessageTray.prototype = { // leaving the tray. The tray is locked when the summary notification is visible anyway, but we // should treat the mouse being over the summary notification as the tray being left for collapsing // any expanded summary item other than the one related to the notification. - if (this._summaryNotificationBoxPointer.bin.hover) + if (this._summaryBoxPointer.bin.hover) return; this._useLongerTrayLeftTimeout = false; @@ -1543,19 +1573,23 @@ MessageTray.prototype = { } // Summary notification - let haveSummaryNotification = this._clickedSummaryItem != null; - let summaryNotificationIsMainNotification = (haveSummaryNotification && + let haveClickedSummaryItem = this._clickedSummaryItem != null; + let summaryNotificationIsMainNotification = (haveClickedSummaryItem && this._clickedSummaryItem.source.notification == this._notification); - let canShowSummaryNotification = this._summaryState == State.SHOWN; - let wrongSummaryNotification = (haveSummaryNotification && + let canShowSummaryBoxPointer = this._summaryState == State.SHOWN; + let wrongSummaryNotification = (this._clickedSummaryItemMouseButton == 1 && this._summaryNotification != this._clickedSummaryItem.source.notification); + let wrongSummaryRightClickMenu = (this._clickedSummaryItemMouseButton == 3 && + this._summaryBoxPointer.bin.child != this._clickedSummaryItem.rightClickMenu); + let wrongSummaryBoxPointer = (haveClickedSummaryItem && + (wrongSummaryNotification || wrongSummaryRightClickMenu)); - if (this._summaryNotificationState == State.HIDDEN) { - if (haveSummaryNotification && !summaryNotificationIsMainNotification && canShowSummaryNotification) - this._showSummaryNotification(); - } else if (this._summaryNotificationState == State.SHOWN) { - if (!haveSummaryNotification || !canShowSummaryNotification || wrongSummaryNotification) - this._hideSummaryNotification(); + if (this._summaryBoxPointerState == State.HIDDEN) { + if (haveClickedSummaryItem && !summaryNotificationIsMainNotification && canShowSummaryBoxPointer) + this._showSummaryBoxPointer(); + } else if (this._summaryBoxPointerState == State.SHOWN) { + if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer) + this._hideSummaryBoxPointer(); } // Tray itself @@ -1813,44 +1847,53 @@ MessageTray.prototype = { this._expandedSummaryItemTitleWidth = this._summaryItemTitleWidth; }, - _showSummaryNotification: function() { - this._summaryNotification = this._clickedSummaryItem.source.notification; - this._summaryNotificationClickedId = this._summaryNotification.connect('done-displaying', - Lang.bind(this, this._escapeTray)); - let index = this._notificationQueue.indexOf(this._summaryNotification); - if (index != -1) - this._notificationQueue.splice(index, 1); + _showSummaryBoxPointer: function() { + if (this._clickedSummaryItemMouseButton == 1) { + let clickedSummaryItemNotification = this._clickedSummaryItem.source.notification; + let index = this._notificationQueue.indexOf(clickedSummaryItemNotification); + if (index != -1) + this._notificationQueue.splice(index, 1); - this._summaryNotificationBoxPointer.bin.child = this._summaryNotification.actor; - this._focusGrabber.grabFocus(this._summaryNotification.actor); + this._summaryNotification = clickedSummaryItemNotification; + this._summaryNotificationClickedId = this._summaryNotification.connect('done-displaying', + Lang.bind(this, this._escapeTray)); + this._summaryBoxPointer.bin.child = this._summaryNotification.actor; + if (!this._summaryNotificationExpandedId) + this._summaryNotificationExpandedId = this._summaryNotification.connect('expanded', + Lang.bind(this, this._onSummaryBoxPointerExpanded)); + this._summaryNotification.expand(false); + } else if (this._clickedSummaryItemMouseButton == 3) { + this._summaryRightClickMenuClickedId = this._clickedSummaryItem.connect('right-click-menu-done-displaying', + Lang.bind(this, this._escapeTray)); + this._summaryBoxPointer.bin.child = this._clickedSummaryItem.rightClickMenu; + } + + this._focusGrabber.grabFocus(this._summaryBoxPointer.bin.child); - if (!this._summaryNotificationExpandedId) - this._summaryNotificationExpandedId = this._summaryNotification.connect('expanded', Lang.bind(this, this._onSummaryNotificationExpanded)); - this._summaryNotification.expand(false); this._clickedSummaryItemAllocationChangedId = this._clickedSummaryItem.actor.connect('allocation-changed', - Lang.bind(this, this._adjustNotificationBoxPointerPosition)); + Lang.bind(this, this._adjustSummaryBoxPointerPosition)); // _clickedSummaryItem.actor can change absolute postiion without changing allocation this._summaryMotionId = this._summary.connect('allocation-changed', - Lang.bind(this, this._adjustNotificationBoxPointerPosition)); + Lang.bind(this, this._adjustSummaryBoxPointerPosition)); - this._summaryNotificationBoxPointer.actor.opacity = 0; - this._summaryNotificationBoxPointer.actor.show(); - this._adjustNotificationBoxPointerPosition(); + this._summaryBoxPointer.actor.opacity = 0; + this._summaryBoxPointer.actor.show(); + this._adjustSummaryBoxPointerPosition(); - this._summaryNotificationState = State.SHOWING; - this._summaryNotificationBoxPointer.show(true, Lang.bind(this, function() { - this._summaryNotificationState = State.SHOWN; + this._summaryBoxPointerState = State.SHOWING; + this._summaryBoxPointer.show(true, Lang.bind(this, function() { + this._summaryBoxPointerState = State.SHOWN; })); }, - _adjustNotificationBoxPointerPosition: function() { + _adjustSummaryBoxPointerPosition: function() { // The position of the arrow origin should be the same as center of this._clickedSummaryItem.actor if (!this._clickedSummaryItem) return; - this._summaryNotificationBoxPointer.setPosition(this._clickedSummaryItem.actor, 0, 0.5); + this._summaryBoxPointer.setPosition(this._clickedSummaryItem.actor, 0, 0.5); }, _unsetClickedSummaryItem: function() { @@ -1861,14 +1904,20 @@ MessageTray.prototype = { this._summaryMotionId = 0; } + if (this._summaryRightClickMenuClickedId) { + this._clickedSummaryItem.disconnect(this._summaryRightClickMenuClickedId); + this._summaryRightClickMenuClickedId = 0; + } + this._clickedSummaryItem = null; + this._clickedSummaryItemMouseButton = -1; }, - _onSummaryNotificationExpanded: function() { - this._adjustNotificationBoxPointerPosition(); + _onSummaryBoxPointerExpanded: function() { + this._adjustSummaryBoxPointerPosition(); }, - _hideSummaryNotification: function() { + _hideSummaryBoxPointer: function() { if (this._summaryNotificationExpandedId) { this._summaryNotification.disconnect(this._summaryNotificationExpandedId); this._summaryNotificationExpandedId = 0; @@ -1878,23 +1927,25 @@ MessageTray.prototype = { this._unsetClickedSummaryItem(); this._focusGrabber.ungrabFocus(); - this._summaryNotificationState = State.HIDING; - this._summaryNotificationBoxPointer.hide(true, Lang.bind(this, this._hideSummaryNotificationCompleted)); + this._summaryBoxPointerState = State.HIDING; + this._summaryBoxPointer.hide(true, Lang.bind(this, this._hideSummaryBoxPointerCompleted)); }, - _hideSummaryNotificationCompleted: function() { - this._summaryNotificationState = State.HIDDEN; - this._summaryNotificationBoxPointer.bin.child = null; - this._summaryNotification.collapseCompleted(); - this._summaryNotification.disconnect(this._summaryNotificationClickedId); - this._summaryNotificationClickedId = 0; - let summaryNotification = this._summaryNotification; - this._summaryNotification = null; - if (summaryNotification.isTransient && !this._reNotifyWithSummaryNotificationAfterHide) - summaryNotification.destroy(NotificationDestroyedReason.EXPIRED); - if (this._reNotifyWithSummaryNotificationAfterHide) { - this._onNotify(summaryNotification.source, summaryNotification); - this._reNotifyWithSummaryNotificationAfterHide = false; + _hideSummaryBoxPointerCompleted: function() { + this._summaryBoxPointerState = State.HIDDEN; + this._summaryBoxPointer.bin.child = null; + if (this._summaryNotification != null) { + this._summaryNotification.collapseCompleted(); + this._summaryNotification.disconnect(this._summaryNotificationClickedId); + this._summaryNotificationClickedId = 0; + let summaryNotification = this._summaryNotification; + this._summaryNotification = null; + if (summaryNotification.isTransient && !this._reNotifyWithSummaryNotificationAfterHide) + summaryNotification.destroy(NotificationDestroyedReason.EXPIRED); + if (this._reNotifyWithSummaryNotificationAfterHide) { + this._onNotify(summaryNotification.source, summaryNotification); + this._reNotifyWithSummaryNotificationAfterHide = false; + } } if (this._clickedSummaryItem) this._updateState(); @@ -1920,7 +1971,7 @@ SystemNotificationSource.prototype = { icon_size: this.ICON_SIZE }); }, - _notificationClicked: function() { + open: function() { this.destroy(); } }; diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 2285d588c..7953b85e5 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -473,7 +473,7 @@ Source.prototype = { this._isTrayIcon = true; }, - _notificationClicked: function(notification) { + open: function(notification) { this.openApp(); }, diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 6e753fd44..e16220c89 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -54,8 +54,10 @@ PopupBaseMenuItem.prototype = { } if (params.reactive && params.hover) this.actor.connect('notify::hover', Lang.bind(this, this._onHoverChanged)); - if (params.reactive) + if (params.reactive) { this.actor.connect('key-focus-in', Lang.bind(this, this._onKeyFocusIn)); + this.actor.connect('key-focus-out', Lang.bind(this, this._onKeyFocusOut)); + } }, _onStyleChanged: function (actor) { @@ -81,6 +83,10 @@ PopupBaseMenuItem.prototype = { this.setActive(true); }, + _onKeyFocusOut: function (actor) { + this.setActive(false); + }, + _onHoverChanged: function (actor) { this.setActive(actor.hover); }, diff --git a/js/ui/telepathyClient.js b/js/ui/telepathyClient.js index 5ddaaefe3..d835d3e2b 100644 --- a/js/ui/telepathyClient.js +++ b/js/ui/telepathyClient.js @@ -173,7 +173,7 @@ Source.prototype = { } }, - _notificationClicked: function(notification) { + open: function(notification) { let props = {}; props[Tp.PROP_CHANNEL_CHANNEL_TYPE] = Tp.IFACE_CHANNEL_TYPE_TEXT; [props[Tp.PROP_CHANNEL_TARGET_HANDLE], props[Tp.PROP_CHANNEL_TARGET_HANDLE_TYPE]] = this._channel.get_handle(); diff --git a/js/ui/windowAttentionHandler.js b/js/ui/windowAttentionHandler.js index fd80cd9cc..560e91577 100644 --- a/js/ui/windowAttentionHandler.js +++ b/js/ui/windowAttentionHandler.js @@ -101,7 +101,7 @@ Source.prototype = { return this._app.create_icon_texture(this.ICON_SIZE); }, - _notificationClicked : function(notification) { + open : function(notification) { Main.activateWindow(this._window); this.destroy(); } From af4fcc831eadcbd1a9da3cabae138eab715feb88 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 7 Feb 2011 11:29:34 -0500 Subject: [PATCH 30/74] ctrlAltTab: misc improvements Fix the "panel" icon to be symbolic. Make the overview parts only show up when in the overview, and the non-overview parts (eg, the Desktop window, if there is one) only show up when not in the overview. Sort the different items consistently with their locations on the screen. https://bugzilla.gnome.org/show_bug.cgi?id=618887 --- js/ui/ctrlAltTab.js | 100 +++++++++++++++++++++++++++++------------ js/ui/main.js | 4 +- js/ui/panel.js | 4 ++ js/ui/windowManager.js | 5 +++ 4 files changed, 81 insertions(+), 32 deletions(-) diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js index 83bb9b9a9..ff926a476 100644 --- a/js/ui/ctrlAltTab.js +++ b/js/ui/ctrlAltTab.js @@ -10,11 +10,18 @@ const St = imports.gi.St; const AltTab = imports.ui.altTab; const Main = imports.ui.main; +const Params = imports.misc.params; const Tweener = imports.ui.tweener; const POPUP_APPICON_SIZE = 96; const POPUP_FADE_TIME = 0.1; // seconds +const SortGroup = { + TOP: 0, + MIDDLE: 1, + BOTTOM: 2 +}; + function CtrlAltTabManager() { this._init(); } @@ -23,14 +30,18 @@ CtrlAltTabManager.prototype = { _init: function() { this._items = []; this._focusManager = St.FocusManager.get_for_stage(global.stage); - Main.wm.setKeybindingHandler('switch_panels', Lang.bind(this, - function (shellwm, binding, window, backwards) { - this.popup(backwards); - })); }, - addGroup: function(root, name, icon) { - this._items.push({ root: root, name: name, iconName: icon }); + addGroup: function(root, name, icon, params) { + let item = Params.parse(params, { sortGroup: SortGroup.MIDDLE, + proxy: root, + focusCallback: null }); + + item.root = root; + item.name = name; + item.iconName = icon; + + this._items.push(item); root.connect('destroy', Lang.bind(this, function() { this.removeGroup(root); })); this._focusManager.add_group(root); }, @@ -45,38 +56,73 @@ CtrlAltTabManager.prototype = { } }, - focusGroup: function(root) { + focusGroup: function(item) { if (global.stage_input_mode == Shell.StageInputMode.NONREACTIVE || global.stage_input_mode == Shell.StageInputMode.NORMAL) global.set_stage_input_mode(Shell.StageInputMode.FOCUSED); - root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + + if (item.window) + Main.activateWindow(item.window); + else if (item.focusCallback) + item.focusCallback(); + else + item.root.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + }, + + // Sort the items into a consistent order; panel first, tray last, + // and everything else in between, sorted by X coordinate, so that + // they will have the same left-to-right ordering in the + // Ctrl-Alt-Tab dialog as they do onscreen. + _sortItems: function(a, b) { + if (a.sortGroup != b.sortGroup) + return a.sortGroup - b.sortGroup; + + let y; + if (a.x == undefined) { + if (a.window) + a.x = a.window.get_compositor_private().x; + else + [a.x, y] = a.proxy.get_transformed_position(); + } + if (b.x == undefined) { + if (b.window) + b.x = b.window.get_compositor_private().x; + else + [b.x, y] = b.proxy.get_transformed_position(); + } + + return a.x - b.x; }, popup: function(backwards) { // Start with the set of focus groups that are currently mapped - let items = this._items.filter(function (item) { return item.root.mapped; }); + let items = this._items.filter(function (item) { return item.proxy.mapped; }); // And add the windows metacity would show in its Ctrl-Alt-Tab list - let screen = global.screen; - let display = screen.get_display(); - let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ()); - let windowTracker = Shell.WindowTracker.get_default(); - let textureCache = St.TextureCache.get_default(); - for (let i = 0; i < windows.length; i++) { - let icon; - let app = windowTracker.get_window_app(windows[i]); - if (app) - icon = app.create_icon_texture(POPUP_APPICON_SIZE); - else - icon = textureCache.bind_pixbuf_property(windows[i], 'icon'); - items.push({ window: windows[i], - name: windows[i].title, - iconActor: icon }); + if (!Main.overview.visible) { + let screen = global.screen; + let display = screen.get_display(); + let windows = display.get_tab_list(Meta.TabList.DOCKS, screen, screen.get_active_workspace ()); + let windowTracker = Shell.WindowTracker.get_default(); + let textureCache = St.TextureCache.get_default(); + for (let i = 0; i < windows.length; i++) { + let icon; + let app = windowTracker.get_window_app(windows[i]); + if (app) + icon = app.create_icon_texture(POPUP_APPICON_SIZE); + else + icon = textureCache.bind_pixbuf_property(windows[i], 'icon'); + items.push({ window: windows[i], + name: windows[i].title, + iconActor: icon, + sortGroup: SortGroup.MIDDLE }); + } } if (!items.length) return; + items.sort(Lang.bind(this, this._sortItems)); new CtrlAltTabPopup().show(items, backwards); } }; @@ -211,11 +257,7 @@ CtrlAltTabPopup.prototype = { _finish : function() { this.destroy(); - let item = this._items[this._selection]; - if (item.root) - Main.ctrlAltTabManager.focusGroup(item.root); - else - Main.activateWindow(item.window); + Main.ctrlAltTabManager.focusGroup(this._items[this._selection]); }, _popModal: function() { diff --git a/js/ui/main.js b/js/ui/main.js index 3d3d87c14..fc8acbd61 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -139,6 +139,7 @@ function start() { placesManager = new PlaceDisplay.PlacesManager(); xdndHandler = new XdndHandler.XdndHandler(); + ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); overview = new Overview.Overview(); chrome = new Chrome.Chrome(); magnifier = new Magnifier.Magnifier(); @@ -153,9 +154,6 @@ function start() { overview.init(); statusIconDispatcher.start(messageTray.actor); - ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); - ctrlAltTabManager.addGroup(panel.actor, _("Panel"), 'gnome-panel'); - _startDate = new Date(); let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' }); diff --git a/js/ui/panel.js b/js/ui/panel.js index a8d081281..2bb37ab3f 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -13,6 +13,7 @@ const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; const Config = imports.misc.config; +const CtrlAltTab = imports.ui.ctrlAltTab; const Overview = imports.ui.overview; const PopupMenu = imports.ui.popupMenu; const PanelMenu = imports.ui.panelMenu; @@ -989,6 +990,9 @@ Panel.prototype = { Main.chrome.addActor(this._rightCorner.actor, { visibleInOverview: true, affectsStruts: false, affectsInputRegion: false }); + + Main.ctrlAltTabManager.addGroup(this.actor, _("Panel"), 'start-here', + { sortGroup: CtrlAltTab.SortGroup.TOP }); }, _xdndShowOverview: function (actor) { diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index d291b8d7f..deca70ed3 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -117,6 +117,7 @@ WindowManager.prototype = { this.setKeybindingHandler('switch_to_workspace_down', Lang.bind(this, this._showWorkspaceSwitcher)); this.setKeybindingHandler('switch_windows', Lang.bind(this, this._startAppSwitcher)); this.setKeybindingHandler('switch_group', Lang.bind(this, this._startAppSwitcher)); + this.setKeybindingHandler('switch_panels', Lang.bind(this, this._startA11ySwitcher)); Main.overview.connect('showing', Lang.bind(this, function() { for (let i = 0; i < this._dimmedWindows.length; i++) @@ -525,6 +526,10 @@ WindowManager.prototype = { tabPopup.destroy(); }, + _startA11ySwitcher : function(shellwm, binding, window, backwards) { + Main.ctrlAltTabManager.popup(backwards); + }, + _showWorkspaceSwitcher : function(shellwm, binding, window, backwards) { if (global.screen.n_workspaces == 1) return; From fe16f2b058855b8e097db14c57dccab6b789902a Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 26 Jan 2011 14:45:38 -0500 Subject: [PATCH 31/74] St: add a popup-menu signal to StWidget Add a popup-menu signal to StWidget, and emit it if the user types the Menu key or Shift+F10 while the widget is focused. https://bugzilla.gnome.org/show_bug.cgi?id=618887 --- src/st/st-button.c | 2 +- src/st/st-entry.c | 2 +- src/st/st-widget.c | 34 ++++++++++++++++++++++++++++++++++ src/st/st-widget.h | 14 ++++++++------ 4 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/st/st-button.c b/src/st/st-button.c index c3eca6118..56842679e 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -218,7 +218,7 @@ st_button_key_press (ClutterActor *actor, } } - return FALSE; + return CLUTTER_ACTOR_CLASS (st_button_parent_class)->key_press_event (actor, event); } static gboolean diff --git a/src/st/st-entry.c b/src/st/st-entry.c index c963c98ed..ef25ab3a4 100644 --- a/src/st/st-entry.c +++ b/src/st/st-entry.c @@ -586,7 +586,7 @@ st_entry_key_press_event (ClutterActor *actor, return TRUE; } - return FALSE; + return CLUTTER_ACTOR_CLASS (st_entry_parent_class)->key_press_event (actor, event); } static void diff --git a/src/st/st-widget.c b/src/st/st-widget.c index 02148ba32..45b3f8db9 100644 --- a/src/st/st-widget.c +++ b/src/st/st-widget.c @@ -103,6 +103,7 @@ enum enum { STYLE_CHANGED, + POPUP_MENU, LAST_SIGNAL }; @@ -689,6 +690,21 @@ st_widget_key_focus_out (ClutterActor *actor) st_widget_remove_style_pseudo_class (widget, "focus"); } +static gboolean +st_widget_key_press_event (ClutterActor *actor, + ClutterKeyEvent *event) +{ + if (event->keyval == CLUTTER_KEY_Menu || + (event->keyval == CLUTTER_KEY_F10 && + (event->modifier_state & CLUTTER_SHIFT_MASK))) + { + g_signal_emit (actor, signals[POPUP_MENU], 0); + return TRUE; + } + + return FALSE; +} + static void st_widget_hide (ClutterActor *actor) { @@ -763,6 +779,7 @@ st_widget_class_init (StWidgetClass *klass) actor_class->leave_event = st_widget_leave; actor_class->key_focus_in = st_widget_key_focus_in; actor_class->key_focus_out = st_widget_key_focus_out; + actor_class->key_press_event = st_widget_key_press_event; actor_class->hide = st_widget_hide; actor_class->get_accessible = st_widget_get_accessible; @@ -918,6 +935,7 @@ st_widget_class_init (StWidgetClass *klass) /** * StWidget::style-changed: + * @widget: the #StWidget * * Emitted when the style information that the widget derives from the * theme changes @@ -930,6 +948,22 @@ st_widget_class_init (StWidgetClass *klass) NULL, NULL, _st_marshal_VOID__VOID, G_TYPE_NONE, 0); + + /** + * StWidget::popup-menu: + * @widget: the #StWidget + * + * Emitted when the user has requested a context menu (eg, via a + * keybinding) + */ + signals[POPUP_MENU] = + g_signal_new ("popup-menu", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (StWidgetClass, popup_menu), + NULL, NULL, + _st_marshal_VOID__VOID, + G_TYPE_NONE, 0); } /** diff --git a/src/st/st-widget.h b/src/st/st-widget.h index 894543635..81c9928e1 100644 --- a/src/st/st-widget.h +++ b/src/st/st-widget.h @@ -77,13 +77,15 @@ struct _StWidgetClass /*< private >*/ ClutterActorClass parent_class; - /* vfuncs */ - void (* style_changed) (StWidget *self); - gboolean (* navigate_focus) (StWidget *self, - ClutterActor *from, - GtkDirectionType direction); + /* signals */ + void (* style_changed) (StWidget *self); + void (* popup_menu) (StWidget *self); - GType (*get_accessible_type) (void); + /* vfuncs */ + gboolean (* navigate_focus) (StWidget *self, + ClutterActor *from, + GtkDirectionType direction); + GType (* get_accessible_type) (void); }; GType st_widget_get_type (void) G_GNUC_CONST; From 7aa326a8363d0fcdb57d61d981f23929c5ed0241 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 3 Feb 2011 12:38:03 -0500 Subject: [PATCH 32/74] overview, appDisplay: add Dash to Ctrl-Alt-Tab Add the dash to Ctrl-Alt-Tab, add appropriate :focus CSS, and connect to the popup-menu signal on dash icons. https://bugzilla.gnome.org/show_bug.cgi?id=618887 --- data/theme/gnome-shell.css | 8 +++++++- js/ui/appDisplay.js | 8 ++++++++ js/ui/overview.js | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index da69a3e67..cfcec9e0a 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -593,7 +593,8 @@ StTooltip StLabel { .remove-favorite > .overview-icon, .search-result-content > .overview-icon { border-radius: 4px; - padding: 4px; + padding: 3px; + border: 1px rgba(0,0,0,0); font-size: 10px; color: white; transition-duration: 100; @@ -618,6 +619,11 @@ StTooltip StLabel { transition-duration: 100; } +.app-well-app:focus > .overview-icon, +.search-result-content:focus > .overview-icon { + border: 1px solid #cccccc; +} + .app-well-menu { font-size: 12px } diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index b9f4b1fb4..0433cec00 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -352,6 +352,7 @@ AppWellIcon.prototype = { this.actor = new St.Button({ style_class: 'app-well-app', reactive: true, button_mask: St.ButtonMask.ONE | St.ButtonMask.TWO, + can_focus: true, x_fill: true, y_fill: true }); this.actor._delegate = this; @@ -361,6 +362,7 @@ AppWellIcon.prototype = { this.actor.connect('button-press-event', Lang.bind(this, this._onButtonPress)); this.actor.connect('clicked', Lang.bind(this, this._onClicked)); + this.actor.connect('popup-menu', Lang.bind(this, this._onKeyboardPopupMenu)); this._menu = null; this._menuManager = new PopupMenu.PopupMenuManager(this); @@ -437,6 +439,11 @@ AppWellIcon.prototype = { return false; }, + _onKeyboardPopupMenu: function() { + this.popupMenu(); + this._menu.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + }, + getId: function() { return this.app.get_id(); }, @@ -454,6 +461,7 @@ AppWellIcon.prototype = { if (!isPoppedUp) this._onMenuPoppedDown(); })); + Main.overview.connect('hiding', Lang.bind(this, function () { this._menu.close(); })); this._menuManager.addMenu(this._menu); } diff --git a/js/ui/overview.js b/js/ui/overview.js index 177295c43..ad02d1344 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -197,6 +197,10 @@ Overview.prototype = { this.dash.actor.add_constraint(this.viewSelector.constrainY); this.dash.actor.add_constraint(this.viewSelector.constrainHeight); + // Translators: this is the name of the dock/favorites area on + // the left of the overview + Main.ctrlAltTabManager.addGroup(this.dash.actor, _("Dash"), 'user-bookmarks'); + }, _onDragBegin: function() { From 0cccf1d4cc7510905681ab9444c97098ec22c09e Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 23 Feb 2011 14:21:47 -0500 Subject: [PATCH 33/74] viewSelector: add Applications pane and search entry to Ctrl-Alt-Tab Add Ctrl-Alt-Tab support to ViewTab, and fix the Applications pane to scroll to track the keyboard focus. The Windows pane can be switched to, but navigation within the pane is not yet implemented. https://bugzilla.gnome.org/show_bug.cgi?id=618887 --- data/theme/gnome-shell.css | 4 ++++ js/ui/appDisplay.js | 41 +++++++++++++++++++++++++++++++++++++- js/ui/overview.js | 4 ++-- js/ui/viewSelector.js | 39 ++++++++++++++++++++++++++---------- src/st/st-scroll-view.c | 3 ++- 5 files changed, 76 insertions(+), 15 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index cfcec9e0a..526b059b5 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -576,6 +576,10 @@ StTooltip StLabel { background-position: 10px 10px; } +.app-filter:focus { + outline: 1px solid #aaa; +} + .dash-item-container > .app-well-app { padding: 4px 8px; } diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 0433cec00..ffd49fa07 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -23,6 +23,7 @@ const Workspace = imports.ui.workspace; const Params = imports.misc.params; const MENU_POPUP_TIMEOUT = 600; +const SCROLL_TIME = 0.1; function AlphabeticalView() { this._init(); @@ -67,6 +68,7 @@ AlphabeticalView.prototype = { let appIcon = new AppWellIcon(this._appSystem.get_app(appInfo.get_id())); this._grid.addItem(appIcon.actor); + appIcon.actor.connect('key-focus-in', Lang.bind(this, this._ensureIconVisible)); appIcon._appInfo = appInfo; if (this._filterApp && !this._filterApp(appInfo)) @@ -75,6 +77,28 @@ AlphabeticalView.prototype = { this._apps.push(appIcon); }, + _ensureIconVisible: function(icon) { + let adjustment = this.actor.vscroll.adjustment; + let [value, lower, upper, stepIncrement, pageIncrement, pageSize] = adjustment.get_values(); + + let offset = 0; + let vfade = this.actor.get_effect("vfade"); + if (vfade) + offset = vfade.fade_offset; + + if (icon.y < value + offset) + value = Math.max(0, icon.y - offset); + else if (icon.y + icon.height > value + pageSize - offset) + value = Math.min(upper, icon.y + icon.height + offset - pageSize); + else + return; + + Tweener.addTween(adjustment, + { value: value, + time: SCROLL_TIME, + transition: 'easeOutQuad' }); + }, + setFilter: function(filter) { this._filterApp = filter; for (let i = 0; i < this._apps.length; i++) @@ -128,6 +152,12 @@ ViewByCategories.prototype = { })); this._sections = []; + + // We need a dummy actor to catch the keyboard focus if the + // user Ctrl-Alt-Tabs here before the deferred work creates + // our real contents + this._focusDummy = new St.Bin({ can_focus: true }); + this.actor.add(this._focusDummy); }, _scrollFilter: function(actor, event) { @@ -166,7 +196,8 @@ ViewByCategories.prototype = { _addFilter: function(name, num) { let button = new St.Button({ label: GLib.markup_escape_text (name, -1), style_class: 'app-filter', - x_align: St.Align.START }); + x_align: St.Align.START, + can_focus: true }); this._filters.add(button, { expand: true, x_fill: true, y_fill: false }); button.connect('clicked', Lang.bind(this, function() { this._selectCategory(num); @@ -201,6 +232,14 @@ ViewByCategories.prototype = { this._addFilter(sections[i], i); this._selectCategory(-1); + + if (this._focusDummy) { + let focused = this._focusDummy.has_key_focus(); + this._focusDummy.destroy(); + this._focusDummy = null; + if (focused) + this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + } } }; diff --git a/js/ui/overview.js b/js/ui/overview.js index ad02d1344..6d86bdae0 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -180,10 +180,10 @@ Overview.prototype = { this._group.add_actor(this.viewSelector.actor); this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay(); - this.viewSelector.addViewTab(_("Windows"), this._workspacesDisplay.actor); + this.viewSelector.addViewTab(_("Windows"), this._workspacesDisplay.actor, 'text-x-generic'); let appView = new AppDisplay.AllAppDisplay(); - this.viewSelector.addViewTab(_("Applications"), appView.actor); + this.viewSelector.addViewTab(_("Applications"), appView.actor, 'system-run'); // Default search providers this.viewSelector.addSearchProvider(new AppDisplay.AppSearchProvider()); diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index 7e5fa2726..5cad9cd52 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -1,6 +1,7 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ const Clutter = imports.gi.Clutter; +const Gtk = imports.gi.Gtk; const Mainloop = imports.mainloop; const Meta = imports.gi.Meta; const Signals = imports.signals; @@ -15,12 +16,12 @@ const Search = imports.ui.search; const SearchDisplay = imports.ui.searchDisplay; const Tweener = imports.ui.tweener; -function BaseTab(titleActor, pageActor) { - this._init(titleActor, pageActor); +function BaseTab(titleActor, pageActor, name, a11yIcon) { + this._init(titleActor, pageActor, name, a11yIcon); } BaseTab.prototype = { - _init: function(titleActor, pageActor) { + _init: function(titleActor, pageActor, name, a11yIcon) { this.title = titleActor; this.page = new St.Bin({ child: pageActor, x_align: St.Align.START, @@ -29,6 +30,14 @@ BaseTab.prototype = { y_fill: true, style_class: 'view-tab-page' }); + if (this.title.can_focus) { + Main.ctrlAltTabManager.addGroup(this.title, name, a11yIcon); + } else { + Main.ctrlAltTabManager.addGroup(this.page, name, a11yIcon, + { proxy: this.title, + focusCallback: Lang.bind(this, this._a11yFocus) }); + } + this.visible = false; }, @@ -56,6 +65,11 @@ BaseTab.prototype = { }); }, + _a11yFocus: function() { + this._activate(); + this.page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); + }, + _activate: function() { this.emit('activated'); } @@ -63,19 +77,19 @@ BaseTab.prototype = { Signals.addSignalMethods(BaseTab.prototype); -function ViewTab(label, pageActor) { - this._init(label, pageActor); +function ViewTab(label, pageActor, a11yIcon) { + this._init(label, pageActor, a11yIcon); } ViewTab.prototype = { __proto__: BaseTab.prototype, - _init: function(label, pageActor) { + _init: function(label, pageActor, a11yIcon) { let titleActor = new St.Button({ label: label, style_class: 'view-tab-title' }); titleActor.connect('clicked', Lang.bind(this, this._activate)); - BaseTab.prototype._init.call(this, titleActor, pageActor); + BaseTab.prototype._init.call(this, titleActor, pageActor, label, a11yIcon); } }; @@ -101,7 +115,8 @@ SearchTab.prototype = { active; it should not exceed ~30 characters. */ hint_text: _("Type to search..."), - track_hover: true }); + track_hover: true, + can_focus: true }); this._text = this._entry.clutter_text; this._text.connect('key-press-event', Lang.bind(this, this._onKeyPress)); @@ -118,7 +133,9 @@ SearchTab.prototype = { this._searchResults = new SearchDisplay.SearchResults(this._searchSystem, this._openSearchSystem); BaseTab.prototype._init.call(this, this._entry, - this._searchResults.actor); + this._searchResults.actor, + _("Search"), + 'edit-find'); this._text.connect('text-changed', Lang.bind(this, this._onTextChanged)); this._text.connect('activate', Lang.bind(this, function (se) { @@ -366,8 +383,8 @@ ViewSelector.prototype = { })); }, - addViewTab: function(title, pageActor) { - let viewTab = new ViewTab(title, pageActor); + addViewTab: function(title, pageActor, a11yIcon) { + let viewTab = new ViewTab(title, pageActor, a11yIcon); this._tabs.push(viewTab); this._tabBox.add(viewTab.title); this._addTab(viewTab); diff --git a/src/st/st-scroll-view.c b/src/st/st-scroll-view.c index 3f7c12a75..618648a36 100644 --- a/src/st/st-scroll-view.c +++ b/src/st/st-scroll-view.c @@ -176,7 +176,8 @@ st_scroll_view_set_vfade (StScrollView *self, if (priv->vfade_effect == NULL) priv->vfade_effect = g_object_new (ST_TYPE_SCROLL_VIEW_FADE, NULL); - clutter_actor_add_effect (CLUTTER_ACTOR (self), CLUTTER_EFFECT (priv->vfade_effect)); + clutter_actor_add_effect_with_name (CLUTTER_ACTOR (self), "vfade", + CLUTTER_EFFECT (priv->vfade_effect)); } else { From 797368bf9f0b985f12c4c4c7ceb39fc912d9f589 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 7 Mar 2011 13:06:34 -0500 Subject: [PATCH 34/74] Revert "panel: remove accessibility icon" pending further discussion in https://bugzilla.gnome.org/show_bug.cgi?id=639762 This reverts commit 7790a07c08c870e3ef04715f3ed6c60bb6dc8a09. --- js/ui/panel.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index 2bb37ab3f..3894539f0 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -38,7 +38,7 @@ const SPINNER_SPEED = 0.02; const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'bluetooth', 'network', 'battery']; const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = { - // 'a11y': imports.ui.status.accessibility.ATIndicator, + 'a11y': imports.ui.status.accessibility.ATIndicator, 'volume': imports.ui.status.volume.Indicator, 'battery': imports.ui.status.power.Indicator, 'keyboard': imports.ui.status.keyboard.XKBIndicator From bb7388a7fe376a4162b8ccac20f3aba9a52757a5 Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Mon, 7 Mar 2011 14:03:14 -0500 Subject: [PATCH 35/74] Don't show right click menu if a new notification for the source is showing Showing the right click menu causes errors when ungrabbing focus in this case. It will soon be impossible to get to the right click menu anyway when a new notification is showing, because we are never going to show the summary and the new notification at the same time. --- js/ui/messageTray.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 29d882cd8..c9c977aaf 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1574,8 +1574,8 @@ MessageTray.prototype = { // Summary notification let haveClickedSummaryItem = this._clickedSummaryItem != null; - let summaryNotificationIsMainNotification = (haveClickedSummaryItem && - this._clickedSummaryItem.source.notification == this._notification); + let summarySourceIsMainNotificationSource = (haveClickedSummaryItem && this._notification && + this._clickedSummaryItem.source == this._notification.source); let canShowSummaryBoxPointer = this._summaryState == State.SHOWN; let wrongSummaryNotification = (this._clickedSummaryItemMouseButton == 1 && this._summaryNotification != this._clickedSummaryItem.source.notification); @@ -1585,7 +1585,7 @@ MessageTray.prototype = { (wrongSummaryNotification || wrongSummaryRightClickMenu)); if (this._summaryBoxPointerState == State.HIDDEN) { - if (haveClickedSummaryItem && !summaryNotificationIsMainNotification && canShowSummaryBoxPointer) + if (haveClickedSummaryItem && !summarySourceIsMainNotificationSource && canShowSummaryBoxPointer) this._showSummaryBoxPointer(); } else if (this._summaryBoxPointerState == State.SHOWN) { if (!haveClickedSummaryItem || !canShowSummaryBoxPointer || wrongSummaryBoxPointer) From edd5a5f1857d2efdea744760be7c96b6acab58e4 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Mon, 7 Mar 2011 21:05:56 +0100 Subject: [PATCH 36/74] appView: Highlight category names on hover This is consistent with the viewselector's tab and indicates to the user that the item is actually clickable. --- data/theme/gnome-shell.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 526b059b5..22670bdef 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -565,6 +565,10 @@ StTooltip StLabel { width: 200px; } +.app-filter:hover { + color: #eee; +} + .app-filter:selected { color: #ffffff; background-image: url("filter-selected-ltr.svg"); From 36287fc33ba8913e5cba371c6494e65214b51fb7 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Sun, 30 Jan 2011 17:39:50 -0500 Subject: [PATCH 37/74] Fix hover state after DND During a drag-and-drop, our pointer grab keeps enter/leave events from being delivered. That means that after the DND ends, whatever actor is under the pointer won't have received the enter event it should have, and any state or hover effect dependent on that won't work right. By paying attention to the actors we leave and enter we can figure out what widgets we need to call st_widget_sync_hover() on after the drag. https://bugzilla.gnome.org/show_bug.cgi?id=640974 --- js/ui/dnd.js | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/js/ui/dnd.js b/js/ui/dnd.js index 61776da91..a755057f1 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -87,6 +87,10 @@ _Draggable.prototype = { this.actor.connect('destroy', Lang.bind(this, function() { this._actorDestroyed = true; + // If the drag actor is destroyed and we were going to fix + // up its hover state, fix up the parent hover state instead + if (this.actor == this._firstLeaveActor) + this._firstLeaveActor = this._dragOrigParent; if (this._dragInProgress) this._cancelDrag(global.get_current_time()); this.disconnectAll(); @@ -101,6 +105,12 @@ _Draggable.prototype = { this._dragInProgress = false; // The drag has been started, and has not been dropped or cancelled yet. this._animationInProgress = false; // The drag is over and the item is in the process of animating to its original position (snapping back or reverting). + // During the drag, we eat enter/leave events so that actors don't prelight or show + // tooltips. But we remember the actors that we first left/last entered so we can + // fix up the hover state after the drag ends. + this._firstLeaveActor = null; + this._lastEnterActor = null; + this._eventsGrabbed = false; }, @@ -200,6 +210,11 @@ _Draggable.prototype = { this._cancelDrag(event.get_time()); return true; } + } else if (event.type() == Clutter.EventType.LEAVE) { + if (this._firstLeaveActor == null) + this._firstLeaveActor = event.get_source(); + } else if (event.type() == Clutter.EventType.ENTER) { + this._lastEnterActor = event.get_source(); } return false; @@ -487,7 +502,7 @@ _Draggable.prototype = { if (this._actorDestroyed) { global.unset_cursor(); if (!this._buttonDown) - this._ungrabEvents(); + this._dragComplete(); this.emit('drag-end', eventTime, false); return; } @@ -544,12 +559,36 @@ _Draggable.prototype = { this._dragComplete(); }, + // Actor is an actor we have entered or left during the drag; call + // st_widget_sync_hover on all StWidget ancestors + _syncHover: function(actor) { + while (actor) { + let parent = actor.get_parent(); + if (actor instanceof St.Widget) + actor.sync_hover(); + + actor = parent; + } + }, + _dragComplete: function() { - Shell.util_set_hidden_from_pick(this._dragActor, false); + if (!this._actorDestroyed) + Shell.util_set_hidden_from_pick(this._dragActor, false); + + this._ungrabEvents(); + + if (this._firstLeaveActor) { + this._syncHover(this._firstLeaveActor); + this._firstLeaveActor = null; + } + + if (this._lastEnterActor) { + this._syncHover(this._lastEnterActor); + this._lastEnterActor = null; + } this._dragActor = undefined; currentDraggable = null; - this._ungrabEvents(); } }; From c4dad3d2c12d6a076931467a0c0d9a054678df98 Mon Sep 17 00:00:00 2001 From: Neha Doijode Date: Tue, 8 Mar 2011 04:40:10 +0530 Subject: [PATCH 38/74] MessageTray: remove source if associated application exits We don't want sources that are no longer associated with a running application to stick around in the message tray. https://bugzilla.gnome.org/show_bug.cgi?id=642659 --- js/ui/notificationDaemon.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 7953b85e5..adfe870df 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -435,6 +435,7 @@ Source.prototype = { MessageTray.Source.prototype._init.call(this, title); this._pid = pid; + this._appStateChangedId = 0; this._setApp(); if (this.app) this.title = this.app.get_name(); @@ -459,6 +460,10 @@ Source.prototype = { if (!this.app) return; + // We only update the app if this.app is null, so we can't disconnect the old this._appStateChangedId + // even if it were non-zero for some reason. + this._appStateChangedId = this.app.connect('notify::state', Lang.bind(this, this._appStateChanged)); + // Only override the icon if we were previously using // notification-based icons (ie, not a trayicon) or if it was unset before if (!this._isTrayIcon) { @@ -482,6 +487,16 @@ Source.prototype = { this.destroy(); }, + _appStateChanged: function() { + // Destroy notification sources when their apps exit. + // The app exiting would normally result in a tray icon being removed, + // so it should be ok to destroy the source associated with a tray icon + // here too, however we just let that happen through the code path + // associated with the tray icon being removed. + if (!this._isTrayIcon && this.app.get_state() == Shell.AppState.STOPPED) + this.destroy(); + }, + openApp: function() { if (this.app == null) return; @@ -491,5 +506,13 @@ Source.prototype = { let mostRecentWindow = windows[0]; Main.activateWindow(mostRecentWindow); } + }, + + destroy: function() { + if (this.app && this._appStateChangedId) { + this.app.disconnect(this._appStateChangedId); + this._appStateChangedId = 0; + } + MessageTray.Source.prototype.destroy.call(this); } }; From ae96b0c97142162690c9dba1d65c437f768cd46b Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 25 Feb 2011 11:20:27 -0500 Subject: [PATCH 39/74] Use libmutter-wm, and build a real gnome-shell binary Build gnome-shell as a binary linked against libmutter-wm, instead of a module to be loaded by libmutter-wm. Move the majority of initialization-type stuff from gnome_shell_plugin_start() into main(). We still build libgnome-shell as a shared library, so that the linker doesn't discard all the methods that are never called from C. https://bugzilla.gnome.org/show_bug.cgi?id=641724 --- .gitignore | 2 +- configure.ac | 46 ++-- src/Makefile.am | 63 ++--- src/gnome-shell-installed.in | 41 ---- src/gnome-shell-jhbuild.in | 29 +-- src/gnome-shell-plugin.c | 420 +------------------------------- src/main.c | 460 +++++++++++++++++++++++++++++++++++ src/shell-a11y.c | 3 - src/shell-global-private.h | 4 +- src/shell-global.c | 19 +- tests/Makefile.am | 2 +- tests/run-test.sh.in | 2 +- 12 files changed, 553 insertions(+), 538 deletions(-) delete mode 100644 src/gnome-shell-installed.in create mode 100644 src/main.c mode change 100644 => 100755 tests/run-test.sh.in diff --git a/.gitignore b/.gitignore index 907bffda4..dba52f811 100644 --- a/.gitignore +++ b/.gitignore @@ -44,7 +44,7 @@ src/calendar-server/org.gnome.Shell.CalendarServer.service src/gnome-shell src/gnome-shell-calendar-server src/gnome-shell-extension-tool -src/gnome-shell-installed +src/gnome-shell-real src/gnome-shell-jhbuild src/run-js-test src/test-recorder diff --git a/configure.ac b/configure.ac index 6031a53af..f1184955f 100644 --- a/configure.ac +++ b/configure.ac @@ -74,20 +74,20 @@ TELEPATHY_GLIB_MIN_VERSION=0.13.12 POLKIT_MIN_VERSION=0.100 # Collect more than 20 libraries for a prize! -PKG_CHECK_MODULES(MUTTER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION - gio-unix-2.0 dbus-glib-1 libxml-2.0 - gtk+-3.0 >= $GTK_MIN_VERSION - mutter-plugins >= $MUTTER_MIN_VERSION - gjs-internals-1.0 >= $GJS_MIN_VERSION - libgnome-menu $recorder_modules gconf-2.0 - gdk-x11-3.0 - clutter-x11-1.0 >= $CLUTTER_MIN_VERSION - clutter-glx-1.0 >= $CLUTTER_MIN_VERSION - libstartup-notification-1.0 - gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION - libcanberra - telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION - polkit-agent-1 >= $POLKIT_MIN_VERSION) +PKG_CHECK_MODULES(GNOME_SHELL, gio-2.0 >= $GIO_MIN_VERSION + gio-unix-2.0 dbus-glib-1 libxml-2.0 + gtk+-3.0 >= $GTK_MIN_VERSION + libmutter-wm >= $MUTTER_MIN_VERSION + gjs-internals-1.0 >= $GJS_MIN_VERSION + libgnome-menu $recorder_modules gconf-2.0 + gdk-x11-3.0 + clutter-x11-1.0 >= $CLUTTER_MIN_VERSION + clutter-glx-1.0 >= $CLUTTER_MIN_VERSION + libstartup-notification-1.0 + gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION + libcanberra + telepathy-glib >= $TELEPATHY_GLIB_MIN_VERSION + polkit-agent-1 >= $POLKIT_MIN_VERSION) GJS_VERSION=`$PKG_CONFIG --modversion gjs-internals-1.0` AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're linking to]) @@ -97,8 +97,8 @@ GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION]) saved_CFLAGS=$CFLAGS saved_LIBS=$LIBS -CFLAGS=$MUTTER_PLUGIN_CFLAGS -LIBS=$MUTTER_PLUGIN_LIBS +CFLAGS=$GNOME_SHELL_CFLAGS +LIBS=$GNOME_SHELL_LIBS # sn_startup_sequence_get_application_id, we can replace with a version check later AC_CHECK_FUNCS(JS_NewGlobalObject sn_startup_sequence_get_application_id) CFLAGS=$saved_CFLAGS @@ -134,13 +134,10 @@ PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedatas AC_SUBST(CALENDAR_SERVER_CFLAGS) AC_SUBST(CALENDAR_SERVER_LIBS) -MUTTER_BIN_DIR=`$PKG_CONFIG --variable=exec_prefix mutter-plugins`/bin -# FIXME: metacity-plugins.pc should point directly to its .gir file -MUTTER_LIB_DIR=`$PKG_CONFIG --variable=libdir mutter-plugins` -MUTTER_PLUGIN_DIR=`$PKG_CONFIG --variable=plugindir mutter-plugins` -AC_SUBST(MUTTER_BIN_DIR) -AC_SUBST(MUTTER_LIB_DIR) -AC_SUBST(MUTTER_PLUGIN_DIR) +MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir libmutter-wm` +MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir libmutter-wm` +AC_SUBST(MUTTER_GIR_DIR) +AC_SUBST(MUTTER_TYPELIB_DIR) GJS_CONSOLE=`$PKG_CONFIG --variable=gjs_console gjs-1.0` AC_SUBST(GJS_CONSOLE) @@ -207,9 +204,6 @@ AC_ARG_ENABLE(dynamic-mozjs-hack, ENABLE_DYNAMIC_MOZJS_HACK=$enable_dynamic_mozjs_hack AC_SUBST(ENABLE_DYNAMIC_MOZJS_HACK) -AC_PATH_PROG(mutter, [mutter]) -AC_SUBST(mutter) - AC_CONFIG_FILES([ Makefile data/Makefile diff --git a/src/Makefile.am b/src/Makefile.am index f15bf95cd..c72c54f5c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,17 +10,31 @@ noinst_PROGRAMS = -include $(INTROSPECTION_MAKEFILE) INTROSPECTION_GIRS = INTROSPECTION_SCANNER_ARGS = --warn-all --warn-error --add-include-path=$(srcdir) -INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_LIB_DIR)/mutter/ +INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_TYPELIB_DIR) typelibdir = $(pkglibdir) typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) CLEANFILES += $(gir_DATA) $(typelib_DATA) -generated_bin_scripts = gnome-shell-installed gnome-shell-jhbuild gnome-shell-extension-tool -bin_SCRIPTS += gnome-shell $(generated_bin_scripts) +bin_SCRIPTS += gnome-shell-extension-tool +bin_PROGRAMS = gnome-shell-real -generated_script_substitutions = -e "s|@MUTTER_BIN_DIR[@]|$(MUTTER_BIN_DIR)|" \ +if USE_JHBUILD_WRAPPER_SCRIPT +gnome_shell = gnome-shell-jhbuild +bin_SCRIPTS += gnome-shell-jhbuild +else +gnome_shell = gnome-shell-real +endif + +noinst_DATA = gnome-shell +gnome-shell: $(gnome_shell) Makefile + cp $< $@.tmp && mv $@.tmp $@ +install-exec-hook: + mv $(DESTDIR)$(bindir)/$(gnome_shell) $(DESTDIR)$(bindir)/gnome-shell + +generated_script_substitutions = \ + -e "s|@bindir[@]|$(bindir)|" \ -e "s|@datadir[@]|$(datadir)|" \ -e "s|@libexecdir[@]|$(libexecdir)|" \ -e "s|@libdir[@]|$(libdir)|" \ @@ -33,22 +47,11 @@ generated_script_substitutions = -e "s|@MUTTER_BIN_DIR[@]|$(MUTTER_BIN_DIR)|" \ gnome-shell-jhbuild: gnome-shell-jhbuild.in Makefile $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ -gnome-shell-installed: gnome-shell-installed.in Makefile - $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ - gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ -if USE_JHBUILD_WRAPPER_SCRIPT -gnome-shell: gnome-shell-jhbuild Makefile - cp $< $@.tmp && mv $@.tmp $@ -else -gnome-shell: gnome-shell-installed Makefile - cp $< $@.tmp && mv $@.tmp $@ -endif - -CLEANFILES += gnome-shell $(generated_bin_scripts) -EXTRA_DIST += $(generated_bin_scripts:=.in) +CLEANFILES += gnome-shell $(bin_SCRIPTS) +EXTRA_DIST += $(bin_SCRIPTS:=.in) include Makefile-gdmuser.am include Makefile-st.am @@ -57,17 +60,17 @@ include Makefile-gvc.am include Makefile-calendar-server.am gnome_shell_cflags = \ - $(MUTTER_PLUGIN_CFLAGS) \ - $(LIBGNOMEUI_CFLAGS) \ + $(GNOME_SHELL_CFLAGS) \ -I$(srcdir)/tray \ + -DVERSION=\"$(VERSION)\" \ -DLOCALEDIR=\"$(datadir)/locale\" \ -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \ -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \ -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" \ -DJSDIR=\"$(pkgdatadir)/js\" -plugindir = $(MUTTER_PLUGIN_DIR) -plugin_LTLIBRARIES = libgnome-shell.la +privlibdir = $(pkglibdir) +privlib_LTLIBRARIES = libgnome-shell.la shell_built_sources = \ shell-marshal.h \ @@ -134,6 +137,11 @@ libgnome_shell_la_SOURCES = \ libgnome_shell_la_gir_sources = \ $(filter-out %-private.h $(shell_recorder_non_gir_sources), $(shell_public_headers_h) $(libgnome_shell_la_SOURCES)) +gnome_shell_real_SOURCES = \ + main.c +gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags) +gnome_shell_real_LDADD = -lgnome-shell + ######################################## shell_recorder_sources = \ @@ -232,11 +240,10 @@ shell-enum-types.c: shell-enum-types.c.in stamp-shell-enum-types.h rm -f $@.tmp EXTRA_DIST += shell-enum-types.c.in -libgnome_shell_la_LDFLAGS = -avoid-version -module -libgnome_shell_la_LIBADD = \ +libgnome_shell_la_LDFLAGS = -avoid-version +libgnome_shell_la_LIBADD = \ -lm \ - $(MUTTER_PLUGIN_LIBS) \ - $(LIBGNOMEUI_LIBS) \ + $(GNOME_SHELL_LIBS) \ $(BLUETOOTH_LIBS) \ libst-1.0.la \ libgdmuser-1.0.la \ @@ -244,7 +251,7 @@ libgnome_shell_la_LIBADD = \ libgvc.la \ $(NULL) -libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags) $(LIBECAL_CFLAGS) +libgnome_shell_la_CPPFLAGS = $(gnome_shell_cflags) Shell-0.1.gir: libgnome-shell.la St-1.0.gir Shell_0_1_gir_INCLUDES = Clutter-1.0 ClutterX11-1.0 Meta-2.91 TelepathyGLib-0.12 @@ -252,9 +259,7 @@ Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir) Shell_0_1_gir_LIBS = libgnome-shell.la Shell_0_1_gir_FILES = $(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources)) Shell_0_1_gir_SCANNERFLAGS = --include-uninstalled=$(builddir)/St-1.0.gir \ - --add-include-path=$(MUTTER_LIB_DIR)/mutter/ \ - --program=mutter \ - --program-arg=--mutter-plugins=`pwd`/libgnome-shell.la + --add-include-path=$(MUTTER_GIR_DIR) INTROSPECTION_GIRS += Shell-0.1.gir St-1.0.gir: libst-1.0.la diff --git a/src/gnome-shell-installed.in b/src/gnome-shell-installed.in deleted file mode 100644 index 3e98e4112..000000000 --- a/src/gnome-shell-installed.in +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# gnome-shell is a plugin for mutter; start mutter with the right -# options. - -# About the value of NO_GAIL and NO_AT_BRIDGE: If a11y is enabled, -# gtk_init() will normally load gail and at-bridge. But we don't -# want at-bridge to be loaded until after clutter is initialized -# (which mutter does after initializing gtk) and we don't want -# gail to be loaded at all. So set these flags. shell_a11y_init() -# will clear them so they don't get passed to gnome-shell's -# children. -export NO_GAIL=1 -export NO_AT_BRIDGE=1 - -# FIXME - Add gjs API to set this stuff and don't depend on the -# environment. These propagate to child processes. -export GJS_DEBUG_OUTPUT='stderr' -# By default only let gjs show errors and things that are explicitly -# logged via log() from javascript -export GJS_DEBUG_TOPICS='JS ERROR;JS LOG' - -if test -z "$MUTTER_PLUGINS"; then - MUTTER_PLUGINS=libgnome-shell -fi - -# Work around Ubuntu xulrunner bug, -# http://bugzilla.gnome.org/show_bug.cgi?id=573413 -if test x@ENABLE_DYNAMIC_MOZJS_HACK@ = xyes; then - sdkdir=$(pkg-config --variable=sdkdir mozilla-js) - if test -n "${sdkdir}"; then - mozjs_libdir=$(echo "$sdkdir" | sed -e s,'-\(sdk\|devel\)',,) - if test -n "$LD_LIBRARY_PATH"; then - LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$mozjs_libdir - else - LD_LIBRARY_PATH=$mozjs_libdir - fi - export LD_LIBRARY_PATH - fi -fi - -exec mutter --mutter-plugins=$MUTTER_PLUGINS "$@" diff --git a/src/gnome-shell-jhbuild.in b/src/gnome-shell-jhbuild.in index 220d53fd6..3774777ab 100755 --- a/src/gnome-shell-jhbuild.in +++ b/src/gnome-shell-jhbuild.in @@ -143,17 +143,15 @@ def start_dconf_await_service(): loop.run() def start_shell(perf_output=None): - bin_dir = os.path.dirname(os.path.abspath(sys.argv[0])) - if os.path.exists(os.path.join(bin_dir, 'gnome-shell-jhbuild.in')): + self_dir = os.path.dirname(os.path.abspath(sys.argv[0])) + if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')): running_from_source_tree = True - top_dir = os.path.dirname(bin_dir) - plugin = os.path.join(top_dir, 'src', 'libgnome-shell.la') + top_dir = os.path.dirname(self_dir) typelib_dir = os.path.join(top_dir, "src") js_dir = os.path.join(top_dir, "js") data_dir = os.path.join(top_dir, "data") else: running_from_source_tree = False - plugin = 'libgnome-shell' js_dir = os.path.join('@pkgdatadir@', 'js') # Set up environment @@ -166,13 +164,13 @@ def start_shell(perf_output=None): # below. Otherwise it's just a bad reimplementation of "jhbuild # run". See bug #642084 env.update({'GNOME_SHELL_JS' : js_dir, - 'PATH' : '@MUTTER_BIN_DIR@:' + os.environ.get('PATH', ''), + 'PATH' : '@bindir@:' + os.environ.get('PATH', ''), 'XDG_CONFIG_DIRS' : '@sysconfdir@/xdg:' + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg'), 'XDG_DATA_DIRS' : '@datadir@:' + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share')}) if running_from_source_tree: if os.environ.has_key('GI_TYPELIB_PATH'): typelib_dir = typelib_dir + ":" + os.environ.get('GI_TYPELIB_PATH') - env.update({'GNOME_SHELL_BINDIR' : bin_dir, + env.update({'GNOME_SHELL_BINDIR' : self_dir, 'GNOME_SHELL_DATADIR' : data_dir, 'GI_TYPELIB_PATH' : typelib_dir, 'GSETTINGS_SCHEMA_DIR' : data_dir }) @@ -191,15 +189,14 @@ def start_shell(perf_output=None): if perf_output is not None: env['SHELL_PERF_OUTPUT'] = perf_output + args = [] if options.debug: debug_command = options.debug_command.split() - args = list(debug_command) - else: - args = [] + if running_from_source_tree: + args += [os.path.join(top_dir, 'libtool'), '--mode=execute'] + args += debug_command - if running_from_source_tree: - env['MUTTER_PLUGINS'] = plugin - args.append(os.path.join(bin_dir, 'gnome-shell-installed')) + args.append(os.path.join(self_dir, 'gnome-shell-real')) if options.replace: args.append('--replace') if options.sync: @@ -427,9 +424,9 @@ def run_performance_test(): } # Add the Git revision if available - bin_dir = os.path.dirname(os.path.abspath(sys.argv[0])) - if os.path.exists(os.path.join(bin_dir, 'gnome-shell.in')): - top_dir = os.path.dirname(bin_dir) + self_dir = os.path.dirname(os.path.abspath(sys.argv[0])) + if os.path.exists(os.path.join(self_dir, 'gnome-shell-jhbuild.in')): + top_dir = os.path.dirname(self_dir) git_dir = os.path.join(top_dir, '.git') if os.path.exists(git_dir): env = dict(os.environ) diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index 8e1192fa7..d634391cb 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -27,19 +27,9 @@ #include -#include - #include #include -#include -#include -#include #include -#include -#include -#ifdef HAVE_MALLINFO -#include -#endif #include #include @@ -51,16 +41,10 @@ #include "shell-global-private.h" #include "shell-perf-log.h" #include "shell-wm-private.h" -#include "st.h" -#include "shell-a11y.h" - -#define SHELL_DBUS_SERVICE "org.gnome.Shell" -#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier" static void gnome_shell_plugin_dispose (GObject *object); static void gnome_shell_plugin_finalize (GObject *object); -static void gnome_shell_plugin_early_initialize (MetaPlugin *plugin); static void gnome_shell_plugin_start (MetaPlugin *plugin); static void gnome_shell_plugin_minimize (MetaPlugin *plugin, MetaWindowActor *actor); @@ -110,7 +94,6 @@ struct _GnomeShellPlugin { MetaPlugin parent; - GjsContext *gjs_context; Atom panel_action; Atom panel_action_run_dialog; Atom panel_action_main_menu; @@ -127,11 +110,9 @@ struct _GnomeShellPluginClass MetaPluginClass parent_class; }; -/* - * Create the plugin struct; function pointers initialized in - * g_module_check_init(). - */ -META_PLUGIN_DECLARE(GnomeShellPlugin, gnome_shell_plugin); +GType gnome_shell_plugin_get_type (void); + +G_DEFINE_TYPE (GnomeShellPlugin, gnome_shell_plugin, META_TYPE_PLUGIN) static void gnome_shell_plugin_class_init (GnomeShellPluginClass *klass) @@ -142,7 +123,6 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass) gobject_class->dispose = gnome_shell_plugin_dispose; gobject_class->finalize = gnome_shell_plugin_finalize; - plugin_class->early_initialize = gnome_shell_plugin_early_initialize; plugin_class->start = gnome_shell_plugin_start; plugin_class->map = gnome_shell_plugin_map; plugin_class->minimize = gnome_shell_plugin_minimize; @@ -162,328 +142,6 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass) static void gnome_shell_plugin_init (GnomeShellPlugin *shell_plugin) { - meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs", - "/desktop/gnome/shell/windows/attach_modal_dialogs"); - meta_prefs_override_preference_location ("/apps/metacity/general/button_layout", - "/desktop/gnome/shell/windows/button_layout"); - meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling", - "/desktop/gnome/shell/windows/edge_tiling"); - meta_prefs_override_preference_location ("/apps/metacity/general/theme", - "/desktop/gnome/shell/windows/theme"); -} - -static void -update_font_options (GtkSettings *settings) -{ - StThemeContext *context; - ClutterStage *stage; - ClutterBackend *backend; - gint dpi; - gint hinting; - gchar *hint_style_str; - cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_NONE; - gint antialias; - cairo_antialias_t antialias_mode = CAIRO_ANTIALIAS_NONE; - cairo_font_options_t *options; - - /* Disable text mipmapping; it causes problems on pre-GEM Intel - * drivers and we should just be rendering text at the right - * size rather than scaling it. If we do effects where we dynamically - * zoom labels, then we might want to reconsider. - */ - clutter_set_font_flags (clutter_get_font_flags () & ~CLUTTER_FONT_MIPMAPPING); - - g_object_get (settings, - "gtk-xft-dpi", &dpi, - "gtk-xft-antialias", &antialias, - "gtk-xft-hinting", &hinting, - "gtk-xft-hintstyle", &hint_style_str, - NULL); - - stage = CLUTTER_STAGE (clutter_stage_get_default ()); - context = st_theme_context_get_for_stage (stage); - - if (dpi != -1) - /* GTK stores resolution as 1024 * dots/inch */ - st_theme_context_set_resolution (context, dpi / 1024); - else - st_theme_context_set_default_resolution (context); - - /* Clutter (as of 0.9) passes comprehensively wrong font options - * override whatever set_font_flags() did above. - * - * http://bugzilla.openedhand.com/show_bug.cgi?id=1456 - */ - backend = clutter_get_default_backend (); - options = cairo_font_options_create (); - - cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); - - if (hinting >= 0 && !hinting) - { - hint_style = CAIRO_HINT_STYLE_NONE; - } - else if (hint_style_str) - { - if (strcmp (hint_style_str, "hintnone") == 0) - hint_style = CAIRO_HINT_STYLE_NONE; - else if (strcmp (hint_style_str, "hintslight") == 0) - hint_style = CAIRO_HINT_STYLE_SLIGHT; - else if (strcmp (hint_style_str, "hintmedium") == 0) - hint_style = CAIRO_HINT_STYLE_MEDIUM; - else if (strcmp (hint_style_str, "hintfull") == 0) - hint_style = CAIRO_HINT_STYLE_FULL; - } - - g_free (hint_style_str); - - cairo_font_options_set_hint_style (options, hint_style); - - /* We don't want to turn on subpixel anti-aliasing; since Clutter - * doesn't currently have the code to support ARGB masks, - * generating them then squashing them back to A8 is pointless. - */ - antialias_mode = (antialias < 0 || antialias) ? CAIRO_ANTIALIAS_GRAY - : CAIRO_ANTIALIAS_NONE; - - cairo_font_options_set_antialias (options, antialias_mode); - - clutter_backend_set_font_options (backend, options); - cairo_font_options_destroy (options); -} - -static void -settings_notify_cb (GtkSettings *settings, - GParamSpec *pspec, - gpointer data) -{ - update_font_options (settings); -} - -static void -malloc_statistics_callback (ShellPerfLog *perf_log, - gpointer data) -{ -#ifdef HAVE_MALLINFO - struct mallinfo info = mallinfo (); - - shell_perf_log_update_statistic_i (perf_log, - "malloc.arenaSize", - info.arena); - shell_perf_log_update_statistic_i (perf_log, - "malloc.mmapSize", - info.hblkhd); - shell_perf_log_update_statistic_i (perf_log, - "malloc.usedSize", - info.uordblks); -#endif -} - -static void -add_statistics (GnomeShellPlugin *shell_plugin) -{ - ShellPerfLog *perf_log = shell_perf_log_get_default (); - - /* For probably historical reasons, mallinfo() defines the returned values, - * even those in bytes as int, not size_t. We're determined not to use - * more than 2G of malloc'ed memory, so are OK with that. - */ - shell_perf_log_define_statistic (perf_log, - "malloc.arenaSize", - "Amount of memory allocated by malloc() with brk(), in bytes", - "i"); - shell_perf_log_define_statistic (perf_log, - "malloc.mmapSize", - "Amount of memory allocated by malloc() with mmap(), in bytes", - "i"); - shell_perf_log_define_statistic (perf_log, - "malloc.usedSize", - "Amount of malloc'ed memory currently in use", - "i"); - - shell_perf_log_add_statistics_callback (perf_log, - malloc_statistics_callback, - NULL, NULL); -} - -/* This is an IBus workaround. The flow of events with IBus is that every time - * it gets gets a key event, it: - * - * Sends it to the daemon via D-Bus asynchronously - * When it gets an reply, synthesizes a new GdkEvent and puts it into the - * GDK event queue with gdk_event_put(), including - * IBUS_FORWARD_MASK = 1 << 25 in the state to prevent a loop. - * - * (Normally, IBus uses the GTK+ key snooper mechanism to get the key - * events early, but since our key events aren't visible to GTK+ key snoopers, - * IBus will instead get the events via the standard - * GtkIMContext.filter_keypress() mechanism.) - * - * There are a number of potential problems here; probably the worst - * problem is that IBus doesn't forward the timestamp with the event - * so that every key event that gets delivered ends up with - * GDK_CURRENT_TIME. This creates some very subtle bugs; for example - * if you have IBus running and a keystroke is used to trigger - * launching an application, focus stealing prevention won't work - * right. http://code.google.com/p/ibus/issues/detail?id=1184 - * - * In any case, our normal flow of key events is: - * - * GDK filter function => clutter_x11_handle_event => clutter actor - * - * So, if we see a key event that gets delivered via the GDK event handler - * function - then we know it must be one of these synthesized events, and - * we should push it back to clutter. - * - * To summarize, the full key event flow with IBus is: - * - * GDK filter function - * => Mutter - * => gnome_shell_plugin_xevent_filter() - * => clutter_x11_handle_event() - * => clutter event delivery to actor - * => gtk_im_context_filter_event() - * => sent to IBus daemon - * => response received from IBus daemon - * => gdk_event_put() - * => GDK event handler - * => - * => clutter_event_put() - * => clutter event delivery to actor - * - * Anything else we see here we just pass on to the normal GDK event handler - * gtk_main_do_event(). - */ -static void -gnome_shell_gdk_event_handler (GdkEvent *event_gdk, - gpointer data) -{ - if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE) - { - ClutterActor *stage; - Window stage_xwindow; - - stage = clutter_stage_get_default (); - stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); - - if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow) - { - ClutterDeviceManager *device_manager = clutter_device_manager_get_default (); - ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager, - CLUTTER_KEYBOARD_DEVICE); - - ClutterEvent *event_clutter = clutter_event_new ((event_gdk->type == GDK_KEY_PRESS) ? - CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE); - event_clutter->key.time = event_gdk->key.time; - event_clutter->key.flags = CLUTTER_EVENT_NONE; - event_clutter->key.stage = CLUTTER_STAGE (stage); - event_clutter->key.source = NULL; - - /* This depends on ClutterModifierType and GdkModifierType being - * identical, which they are currently. (They both match the X - * modifier state in the low 16-bits and have the same extensions.) */ - event_clutter->key.modifier_state = event_gdk->key.state; - - event_clutter->key.keyval = event_gdk->key.keyval; - event_clutter->key.hardware_keycode = event_gdk->key.hardware_keycode; - event_clutter->key.unicode_value = gdk_keyval_to_unicode (event_clutter->key.keyval); - event_clutter->key.device = keyboard; - - clutter_event_put (event_clutter); - clutter_event_free (event_clutter); - - return; - } - } - - gtk_main_do_event (event_gdk); -} - -static void -muted_log_handler (const char *log_domain, - GLogLevelFlags log_level, - const char *message, - gpointer data) -{ - /* Intentionally empty to discard message */ -} - -static void -gnome_shell_plugin_early_initialize (MetaPlugin *plugin) -{ - GError *error = NULL; - DBusGConnection *session; - DBusGProxy *bus; - guint32 request_name_result; - - /** TODO: - * In the future we should use GDBus for this. However, in - * order to do that, we need to port all of the JavaScript - * code. Otherwise, the name will be claimed on the wrong - * connection. - */ - session = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); - - bus = dbus_g_proxy_new_for_name (session, - DBUS_SERVICE_DBUS, - DBUS_PATH_DBUS, - DBUS_INTERFACE_DBUS); - - if (!dbus_g_proxy_call (bus, "RequestName", &error, - G_TYPE_STRING, SHELL_DBUS_SERVICE, - G_TYPE_UINT, 0, - G_TYPE_INVALID, - G_TYPE_UINT, &request_name_result, - G_TYPE_INVALID)) - { - g_print ("failed to acquire org.gnome.Shell: %s\n", error->message); - /* If we somehow got started again, it's not an error to be running - * already. So just exit 0. - */ - exit (0); - } - - /* Also grab org.gnome.Panel to replace any existing panel process, - * unless a special environment variable is passed. The environment - * variable is used by the gnome-shell (no --replace) launcher in - * Xephyr */ - if (!dbus_g_proxy_call (bus, "RequestName", &error, G_TYPE_STRING, - "org.gnome.Panel", G_TYPE_UINT, - DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE, - G_TYPE_INVALID, G_TYPE_UINT, - &request_name_result, G_TYPE_INVALID)) - { - g_print ("failed to acquire org.gnome.Panel: %s\n", error->message); - exit (1); - } - - /* ...and the org.gnome.Magnifier service. - */ - if (!dbus_g_proxy_call (bus, "RequestName", &error, - G_TYPE_STRING, MAGNIFIER_DBUS_SERVICE, - G_TYPE_UINT, 0, - G_TYPE_INVALID, - G_TYPE_UINT, &request_name_result, - G_TYPE_INVALID)) - { - g_print ("failed to acquire %s: %s\n", MAGNIFIER_DBUS_SERVICE, error->message); - /* Failing to acquire the magnifer service is not fatal. Log the error, - * but keep going. */ - } - - /* ...and the org.freedesktop.Notifications service. - */ - if (!dbus_g_proxy_call (bus, "RequestName", &error, - G_TYPE_STRING, "org.freedesktop.Notifications", - G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE, - G_TYPE_INVALID, - G_TYPE_UINT, &request_name_result, - G_TYPE_INVALID)) - { - g_print ("failed to acquire org.freedesktop.Notifications: %s\n", error->message); - } - - g_object_unref (bus); } static void @@ -493,32 +151,10 @@ gnome_shell_plugin_start (MetaPlugin *plugin) MetaScreen *screen; MetaDisplay *display; Display *xdisplay; - GtkSettings *settings; GError *error = NULL; int status; - const char *shell_js; - char **search_path; const char *glx_extensions; - - bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); - bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); - - shell_a11y_init (); - - settings = gtk_settings_get_default (); - g_object_connect (settings, - "signal::notify::gtk-xft-dpi", - G_CALLBACK (settings_notify_cb), NULL, - "signal::notify::gtk-xft-antialias", - G_CALLBACK (settings_notify_cb), NULL, - "signal::notify::gtk-xft-hinting", - G_CALLBACK (settings_notify_cb), NULL, - "signal::notify::gtk-xft-hintstyle", - G_CALLBACK (settings_notify_cb), NULL, - NULL); - update_font_options (settings); - - gdk_event_handler_set (gnome_shell_gdk_event_handler, plugin, NULL); + GjsContext *gjs_context; screen = meta_plugin_get_screen (plugin); display = meta_screen_get_display (screen); @@ -538,40 +174,12 @@ gnome_shell_plugin_start (MetaPlugin *plugin) "GL buffer swap complete event received (with timestamp of completion)", "x"); -#if HAVE_BLUETOOTH - g_irepository_prepend_search_path (BLUETOOTH_DIR); -#endif - - g_irepository_prepend_search_path (GNOME_SHELL_PKGLIBDIR); - - shell_js = g_getenv("GNOME_SHELL_JS"); - if (!shell_js) - shell_js = JSDIR; - - search_path = g_strsplit(shell_js, ":", -1); - shell_plugin->gjs_context = g_object_new (GJS_TYPE_CONTEXT, - "search-path", search_path, - "js-version", "1.8", - NULL); - g_strfreev(search_path); - - /* Disable debug spew from various libraries */ - g_log_set_handler ("Gvc", G_LOG_LEVEL_DEBUG, - muted_log_handler, NULL); - g_log_set_handler ("GdmUser", G_LOG_LEVEL_DEBUG, - muted_log_handler, NULL); - g_log_set_handler ("Bluetooth", G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_MESSAGE, - muted_log_handler, NULL); - - /* Initialize the global object here. */ shell_plugin->global = shell_global_get (); + _shell_global_set_plugin (shell_plugin->global, META_PLUGIN (shell_plugin)); - _shell_global_set_plugin (shell_plugin->global, META_PLUGIN(shell_plugin)); - _shell_global_set_gjs_context (shell_plugin->global, shell_plugin->gjs_context); + gjs_context = _shell_global_get_gjs_context (shell_plugin->global); - add_statistics (shell_plugin); - - if (!gjs_context_eval (shell_plugin->gjs_context, + if (!gjs_context_eval (gjs_context, "const Main = imports.ui.main; Main.start();", -1, "
", @@ -752,17 +360,3 @@ MetaPluginInfo *gnome_shell_plugin_plugin_info (MetaPlugin *plugin) return &info; } - -#if HAVE_BLUETOOTH -/* HACK: - Add a non-static function that calls into libgnome-bluetooth-applet.so, - to avoid the linker being too smart and removing the dependency. - This function is never actually called. -*/ -extern GType bluetooth_applet_get_type(void); -void _shell_link_to_bluetooth(void); - -void _shell_link_to_bluetooth(void) { - bluetooth_applet_get_type(); -} -#endif diff --git a/src/main.c b/src/main.c new file mode 100644 index 000000000..91cd96864 --- /dev/null +++ b/src/main.c @@ -0,0 +1,460 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ + +#include "config.h" + +#ifdef HAVE_MALLINFO +#include +#endif +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "shell-a11y.h" +#include "shell-global.h" +#include "shell-perf-log.h" +#include "st.h" + +extern GType gnome_shell_plugin_get_type (void); + +#define SHELL_DBUS_SERVICE "org.gnome.Shell" +#define MAGNIFIER_DBUS_SERVICE "org.gnome.Magnifier" + +static void +shell_dbus_init (void) +{ + GError *error = NULL; + DBusGConnection *session; + DBusGProxy *bus; + guint32 request_name_result; + + /** TODO: + * In the future we should use GDBus for this. However, in + * order to do that, we need to port all of the JavaScript + * code. Otherwise, the name will be claimed on the wrong + * connection. + */ + session = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); + + bus = dbus_g_proxy_new_for_name (session, + DBUS_SERVICE_DBUS, + DBUS_PATH_DBUS, + DBUS_INTERFACE_DBUS); + + if (!dbus_g_proxy_call (bus, "RequestName", &error, + G_TYPE_STRING, SHELL_DBUS_SERVICE, + G_TYPE_UINT, 0, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) + { + g_print ("failed to acquire org.gnome.Shell: %s\n", error->message); + /* If we somehow got started again, it's not an error to be running + * already. So just exit 0. + */ + exit (0); + } + + /* Also grab org.gnome.Panel to replace any existing panel process, + * unless a special environment variable is passed. The environment + * variable is used by the gnome-shell (no --replace) launcher in + * Xephyr */ + if (!dbus_g_proxy_call (bus, "RequestName", &error, G_TYPE_STRING, + "org.gnome.Panel", G_TYPE_UINT, + DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE, + G_TYPE_INVALID, G_TYPE_UINT, + &request_name_result, G_TYPE_INVALID)) + { + g_print ("failed to acquire org.gnome.Panel: %s\n", error->message); + exit (1); + } + + /* ...and the org.gnome.Magnifier service. + */ + if (!dbus_g_proxy_call (bus, "RequestName", &error, + G_TYPE_STRING, MAGNIFIER_DBUS_SERVICE, + G_TYPE_UINT, 0, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) + { + g_print ("failed to acquire %s: %s\n", MAGNIFIER_DBUS_SERVICE, error->message); + /* Failing to acquire the magnifer service is not fatal. Log the error, + * but keep going. */ + } + + /* ...and the org.freedesktop.Notifications service. + */ + if (!dbus_g_proxy_call (bus, "RequestName", &error, + G_TYPE_STRING, "org.freedesktop.Notifications", + G_TYPE_UINT, DBUS_NAME_FLAG_REPLACE_EXISTING | DBUS_NAME_FLAG_DO_NOT_QUEUE, + G_TYPE_INVALID, + G_TYPE_UINT, &request_name_result, + G_TYPE_INVALID)) + { + g_print ("failed to acquire org.freedesktop.Notifications: %s\n", error->message); + } + + g_object_unref (bus); +} + + +static void +update_font_options (GtkSettings *settings) +{ + StThemeContext *context; + ClutterStage *stage; + ClutterBackend *backend; + gint dpi; + gint hinting; + gchar *hint_style_str; + cairo_hint_style_t hint_style = CAIRO_HINT_STYLE_NONE; + gint antialias; + cairo_antialias_t antialias_mode = CAIRO_ANTIALIAS_NONE; + cairo_font_options_t *options; + + g_object_get (settings, + "gtk-xft-dpi", &dpi, + "gtk-xft-antialias", &antialias, + "gtk-xft-hinting", &hinting, + "gtk-xft-hintstyle", &hint_style_str, + NULL); + + stage = CLUTTER_STAGE (clutter_stage_get_default ()); + context = st_theme_context_get_for_stage (stage); + + if (dpi != -1) + /* GTK stores resolution as 1024 * dots/inch */ + st_theme_context_set_resolution (context, dpi / 1024); + else + st_theme_context_set_default_resolution (context); + + /* Clutter (as of 0.9) passes comprehensively wrong font options + * override whatever set_font_flags() did above. + * + * http://bugzilla.openedhand.com/show_bug.cgi?id=1456 + */ + backend = clutter_get_default_backend (); + options = cairo_font_options_create (); + + cairo_font_options_set_hint_metrics (options, CAIRO_HINT_METRICS_ON); + + if (hinting >= 0 && !hinting) + { + hint_style = CAIRO_HINT_STYLE_NONE; + } + else if (hint_style_str) + { + if (strcmp (hint_style_str, "hintnone") == 0) + hint_style = CAIRO_HINT_STYLE_NONE; + else if (strcmp (hint_style_str, "hintslight") == 0) + hint_style = CAIRO_HINT_STYLE_SLIGHT; + else if (strcmp (hint_style_str, "hintmedium") == 0) + hint_style = CAIRO_HINT_STYLE_MEDIUM; + else if (strcmp (hint_style_str, "hintfull") == 0) + hint_style = CAIRO_HINT_STYLE_FULL; + } + + g_free (hint_style_str); + + cairo_font_options_set_hint_style (options, hint_style); + + /* We don't want to turn on subpixel anti-aliasing; since Clutter + * doesn't currently have the code to support ARGB masks, + * generating them then squashing them back to A8 is pointless. + */ + antialias_mode = (antialias < 0 || antialias) ? CAIRO_ANTIALIAS_GRAY + : CAIRO_ANTIALIAS_NONE; + + cairo_font_options_set_antialias (options, antialias_mode); + + clutter_backend_set_font_options (backend, options); + cairo_font_options_destroy (options); +} + +static void +settings_notify_cb (GtkSettings *settings, + GParamSpec *pspec, + gpointer data) +{ + update_font_options (settings); +} + +static void +shell_fonts_init (void) +{ + GtkSettings *settings; + + /* Disable text mipmapping; it causes problems on pre-GEM Intel + * drivers and we should just be rendering text at the right + * size rather than scaling it. If we do effects where we dynamically + * zoom labels, then we might want to reconsider. + */ + clutter_set_font_flags (clutter_get_font_flags () & ~CLUTTER_FONT_MIPMAPPING); + + settings = gtk_settings_get_default (); + g_object_connect (settings, + "signal::notify::gtk-xft-dpi", + G_CALLBACK (settings_notify_cb), NULL, + "signal::notify::gtk-xft-antialias", + G_CALLBACK (settings_notify_cb), NULL, + "signal::notify::gtk-xft-hinting", + G_CALLBACK (settings_notify_cb), NULL, + "signal::notify::gtk-xft-hintstyle", + G_CALLBACK (settings_notify_cb), NULL, + NULL); + update_font_options (settings); +} + +static void +shell_prefs_init (void) +{ + meta_prefs_override_preference_location ("/apps/mutter/general/attach_modal_dialogs", + "/desktop/gnome/shell/windows/attach_modal_dialogs"); + meta_prefs_override_preference_location ("/apps/metacity/general/button_layout", + "/desktop/gnome/shell/windows/button_layout"); + meta_prefs_override_preference_location ("/apps/metacity/general/edge_tiling", + "/desktop/gnome/shell/windows/edge_tiling"); + meta_prefs_override_preference_location ("/apps/metacity/general/theme", + "/desktop/gnome/shell/windows/theme"); +} + +/* This is an IBus workaround. The flow of events with IBus is that every time + * it gets gets a key event, it: + * + * Sends it to the daemon via D-Bus asynchronously + * When it gets an reply, synthesizes a new GdkEvent and puts it into the + * GDK event queue with gdk_event_put(), including + * IBUS_FORWARD_MASK = 1 << 25 in the state to prevent a loop. + * + * (Normally, IBus uses the GTK+ key snooper mechanism to get the key + * events early, but since our key events aren't visible to GTK+ key snoopers, + * IBus will instead get the events via the standard + * GtkIMContext.filter_keypress() mechanism.) + * + * There are a number of potential problems here; probably the worst + * problem is that IBus doesn't forward the timestamp with the event + * so that every key event that gets delivered ends up with + * GDK_CURRENT_TIME. This creates some very subtle bugs; for example + * if you have IBus running and a keystroke is used to trigger + * launching an application, focus stealing prevention won't work + * right. http://code.google.com/p/ibus/issues/detail?id=1184 + * + * In any case, our normal flow of key events is: + * + * GDK filter function => clutter_x11_handle_event => clutter actor + * + * So, if we see a key event that gets delivered via the GDK event handler + * function - then we know it must be one of these synthesized events, and + * we should push it back to clutter. + * + * To summarize, the full key event flow with IBus is: + * + * GDK filter function + * => Mutter + * => gnome_shell_plugin_xevent_filter() + * => clutter_x11_handle_event() + * => clutter event delivery to actor + * => gtk_im_context_filter_event() + * => sent to IBus daemon + * => response received from IBus daemon + * => gdk_event_put() + * => GDK event handler + * => + * => clutter_event_put() + * => clutter event delivery to actor + * + * Anything else we see here we just pass on to the normal GDK event handler + * gtk_main_do_event(). + */ +static void +gnome_shell_gdk_event_handler (GdkEvent *event_gdk, + gpointer data) +{ + if (event_gdk->type == GDK_KEY_PRESS || event_gdk->type == GDK_KEY_RELEASE) + { + ClutterActor *stage; + Window stage_xwindow; + + stage = clutter_stage_get_default (); + stage_xwindow = clutter_x11_get_stage_window (CLUTTER_STAGE (stage)); + + if (GDK_WINDOW_XID (event_gdk->key.window) == stage_xwindow) + { + ClutterDeviceManager *device_manager = clutter_device_manager_get_default (); + ClutterInputDevice *keyboard = clutter_device_manager_get_core_device (device_manager, + CLUTTER_KEYBOARD_DEVICE); + + ClutterEvent *event_clutter = clutter_event_new ((event_gdk->type == GDK_KEY_PRESS) ? + CLUTTER_KEY_PRESS : CLUTTER_KEY_RELEASE); + event_clutter->key.time = event_gdk->key.time; + event_clutter->key.flags = CLUTTER_EVENT_NONE; + event_clutter->key.stage = CLUTTER_STAGE (stage); + event_clutter->key.source = NULL; + + /* This depends on ClutterModifierType and GdkModifierType being + * identical, which they are currently. (They both match the X + * modifier state in the low 16-bits and have the same extensions.) */ + event_clutter->key.modifier_state = event_gdk->key.state; + + event_clutter->key.keyval = event_gdk->key.keyval; + event_clutter->key.hardware_keycode = event_gdk->key.hardware_keycode; + event_clutter->key.unicode_value = gdk_keyval_to_unicode (event_clutter->key.keyval); + event_clutter->key.device = keyboard; + + clutter_event_put (event_clutter); + clutter_event_free (event_clutter); + + return; + } + } + + gtk_main_do_event (event_gdk); +} + + +static void +malloc_statistics_callback (ShellPerfLog *perf_log, + gpointer data) +{ +#ifdef HAVE_MALLINFO + struct mallinfo info = mallinfo (); + + shell_perf_log_update_statistic_i (perf_log, + "malloc.arenaSize", + info.arena); + shell_perf_log_update_statistic_i (perf_log, + "malloc.mmapSize", + info.hblkhd); + shell_perf_log_update_statistic_i (perf_log, + "malloc.usedSize", + info.uordblks); +#endif +} + +static void +shell_perf_log_init (void) +{ + ShellPerfLog *perf_log = shell_perf_log_get_default (); + + /* For probably historical reasons, mallinfo() defines the returned values, + * even those in bytes as int, not size_t. We're determined not to use + * more than 2G of malloc'ed memory, so are OK with that. + */ + shell_perf_log_define_statistic (perf_log, + "malloc.arenaSize", + "Amount of memory allocated by malloc() with brk(), in bytes", + "i"); + shell_perf_log_define_statistic (perf_log, + "malloc.mmapSize", + "Amount of memory allocated by malloc() with mmap(), in bytes", + "i"); + shell_perf_log_define_statistic (perf_log, + "malloc.usedSize", + "Amount of malloc'ed memory currently in use", + "i"); + + shell_perf_log_add_statistics_callback (perf_log, + malloc_statistics_callback, + NULL, NULL); +} + +static void +muted_log_handler (const char *log_domain, + GLogLevelFlags log_level, + const char *message, + gpointer data) +{ + /* Intentionally empty to discard message */ +} + +static gboolean +print_version (const gchar *option_name, + const gchar *value, + gpointer data, + GError **error) +{ + g_print ("GNOME Shell %s\n", VERSION); + exit (0); +} + +GOptionEntry gnome_shell_options[] = { + { + "version", 0, G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, + print_version, + N_("Print version"), + NULL + }, + { NULL } +}; + +int +main (int argc, char **argv) +{ + GOptionContext *ctx; + GError *error = NULL; + + g_type_init (); + + bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + + ctx = meta_get_option_context (); + g_option_context_add_main_entries (ctx, gnome_shell_options, GETTEXT_PACKAGE); + if (!g_option_context_parse (ctx, &argc, &argv, &error)) + { + g_printerr ("%s: %s\n", argv[0], error->message); + exit (1); + } + + meta_plugin_type_register (gnome_shell_plugin_get_type ()); + + /* Prevent meta_init() from causing gtk to load gail and at-bridge */ + g_setenv ("NO_GAIL", "1", TRUE); + g_setenv ("NO_AT_BRIDGE", "1", TRUE); + meta_init (); + g_unsetenv ("NO_GAIL"); + g_unsetenv ("NO_AT_BRIDGE"); + + /* FIXME: Add gjs API to set this stuff and don't depend on the + * environment. These propagate to child processes. + */ + g_setenv ("GJS_DEBUG_OUTPUT", "stderr", TRUE); + g_setenv ("GJS_DEBUG_TOPICS", "JS ERROR;JS LOG", TRUE); + + shell_dbus_init (); + shell_a11y_init (); + shell_fonts_init (); + shell_perf_log_init (); + shell_prefs_init (); + + gdk_event_handler_set (gnome_shell_gdk_event_handler, NULL, NULL); + + g_irepository_prepend_search_path (GNOME_SHELL_PKGLIBDIR); +#if HAVE_BLUETOOTH + g_irepository_prepend_search_path (BLUETOOTH_DIR); +#endif + + /* Disable debug spew from various libraries */ + g_log_set_handler ("Gvc", G_LOG_LEVEL_DEBUG, + muted_log_handler, NULL); + g_log_set_handler ("GdmUser", G_LOG_LEVEL_DEBUG, + muted_log_handler, NULL); + g_log_set_handler ("Bluetooth", G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_MESSAGE, + muted_log_handler, NULL); + + /* Initialize the global object */ + shell_global_get (); + + return meta_run (); +} diff --git a/src/shell-a11y.c b/src/shell-a11y.c index 506df95ae..c9721ea05 100644 --- a/src/shell-a11y.c +++ b/src/shell-a11y.c @@ -134,9 +134,6 @@ shell_a11y_init (void) { char *bridge_path = NULL; - g_unsetenv ("NO_AT_BRIDGE"); - g_unsetenv ("NO_GAIL"); - if (!should_enable_a11y ()) return; diff --git a/src/shell-global-private.h b/src/shell-global-private.h index e17514530..5512645a0 100644 --- a/src/shell-global-private.h +++ b/src/shell-global-private.h @@ -8,8 +8,8 @@ void _shell_global_set_plugin (ShellGlobal *global, MetaPlugin *plugin); -void _shell_global_set_gjs_context (ShellGlobal *global, - GjsContext *context); + +GjsContext *_shell_global_get_gjs_context (ShellGlobal *global); gboolean _shell_global_check_xdnd_event (ShellGlobal *global, XEvent *xev); diff --git a/src/shell-global.c b/src/shell-global.c index 4f08bcaab..5a2f2e668 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -203,7 +203,8 @@ static void shell_global_init (ShellGlobal *global) { const char *datadir = g_getenv ("GNOME_SHELL_DATADIR"); - char *imagedir; + const char *shell_js = g_getenv("GNOME_SHELL_JS"); + char *imagedir, **search_path; if (!datadir) datadir = GNOME_SHELL_DATADIR; @@ -242,6 +243,15 @@ shell_global_init (ShellGlobal *global) ca_context_create (&global->sound_context); ca_context_change_props (global->sound_context, CA_PROP_APPLICATION_NAME, PACKAGE_NAME, CA_PROP_APPLICATION_ID, "org.gnome.Shell", NULL); ca_context_open (global->sound_context); + + if (!shell_js) + shell_js = JSDIR; + search_path = g_strsplit (shell_js, ":", -1); + global->js_context = g_object_new (GJS_TYPE_CONTEXT, + "search-path", search_path, + "js-version", "1.8", + NULL); + g_strfreev (search_path); } static void @@ -791,11 +801,10 @@ _shell_global_set_plugin (ShellGlobal *global, global->focus_manager = st_focus_manager_get_for_stage (CLUTTER_STAGE (stage)); } -void -_shell_global_set_gjs_context (ShellGlobal *global, - GjsContext *context) +GjsContext * +_shell_global_get_gjs_context (ShellGlobal *global) { - global->js_context = context; + return global->js_context; } /** diff --git a/tests/Makefile.am b/tests/Makefile.am index 75a7a733d..172dc998a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -27,7 +27,7 @@ EXTRA_DIST += $(TEST_MISC) run-test.sh: run-test.sh.in $(AM_V_GEN) sed \ - -e "s|@MUTTER_LIB_DIR[@]|$(MUTTER_LIB_DIR)|" \ + -e "s|@MUTTER_TYPELIB_DIR[@]|$(MUTTER_TYPELIB_DIR)|" \ -e "s|@srcdir[@]|$(srcdir)|" \ $< > $@ && chmod a+x $@ diff --git a/tests/run-test.sh.in b/tests/run-test.sh.in old mode 100644 new mode 100755 index 300ca2baf..ee1472fed --- a/tests/run-test.sh.in +++ b/tests/run-test.sh.in @@ -30,7 +30,7 @@ builddir=`cd $builddir && pwd` srcdir=$builddir/@srcdir@ srcdir=`cd $srcdir && pwd` -GI_TYPELIB_PATH="@MUTTER_LIB_DIR@/mutter:$builddir/../src" +GI_TYPELIB_PATH="@MUTTER_TYPELIB_DIR@:$builddir/../src" GJS_PATH="$srcdir:$srcdir/../js" GJS_DEBUG_OUTPUT=stderr $verbose || GJS_DEBUG_TOPICS="JS ERROR;JS LOG" From e187961d72d07f66a2b71c9f0967c841c7dc96b5 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Sat, 5 Mar 2011 10:49:24 -0500 Subject: [PATCH 40/74] src: update for mutter include reorganization https://bugzilla.gnome.org/show_bug.cgi?id=641724 --- src/gnome-shell-plugin.c | 12 +++++----- src/main.c | 6 ++--- src/shell-app-system.c | 2 +- src/shell-app-system.h | 2 +- src/shell-app-usage.c | 7 +++--- src/shell-app.c | 16 +++++++------- src/shell-app.h | 3 +-- src/shell-global.c | 45 +++++++++++++++++++------------------- src/shell-global.h | 3 +-- src/shell-tray-manager.c | 6 ++--- src/shell-window-tracker.c | 9 ++++---- src/shell-window-tracker.h | 2 +- src/shell-wm.c | 4 ++-- src/shell-wm.h | 2 +- 14 files changed, 56 insertions(+), 63 deletions(-) diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index d634391cb..8bf7441be 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -25,18 +25,16 @@ #include "config.h" -#include - -#include -#include -#include #include #include +#include +#include #include #include - -#include "display.h" +#include +#include +#include #include "shell-global-private.h" #include "shell-perf-log.h" diff --git a/src/main.c b/src/main.c index 91cd96864..ba53a73ac 100644 --- a/src/main.c +++ b/src/main.c @@ -16,9 +16,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include "shell-a11y.h" #include "shell-global.h" diff --git a/src/shell-app-system.c b/src/shell-app-system.c index 301fc3f5d..519a83010 100644 --- a/src/shell-app-system.c +++ b/src/shell-app-system.c @@ -10,11 +10,11 @@ #include #include #include +#include #include "shell-app-private.h" #include "shell-window-tracker-private.h" #include "shell-global.h" -#include "display.h" #include "st.h" #define GMENU_I_KNOW_THIS_IS_UNSTABLE diff --git a/src/shell-app-system.h b/src/shell-app-system.h index 07684b791..3b615cecb 100644 --- a/src/shell-app-system.h +++ b/src/shell-app-system.h @@ -4,9 +4,9 @@ #include #include +#include #include "shell-app.h" -#include "window.h" #define SHELL_TYPE_APP_SYSTEM (shell_app_system_get_type ()) #define SHELL_APP_SYSTEM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_APP_SYSTEM, ShellAppSystem)) diff --git a/src/shell-app-usage.c b/src/shell-app-usage.c index e8fe3ae8a..7b70a138a 100644 --- a/src/shell-app-usage.c +++ b/src/shell-app-usage.c @@ -12,16 +12,15 @@ #include #include #include +#include +#include +#include #include "shell-app-usage.h" #include "shell-window-tracker.h" #include "shell-global.h" #include "shell-marshal.h" -#include "display.h" -#include "window.h" -#include "group.h" - /* This file includes modified code from * desktop-data-engine/engine-dbus/hippo-application-monitor.c * in the functions collecting application usage data. diff --git a/src/shell-app.c b/src/shell-app.c index 74b72fb33..9ffe85654 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -2,16 +2,16 @@ #include "config.h" -#include "st.h" -#include "shell-app-private.h" -#include "shell-global.h" -#include "shell-enum-types.h" -#include "display.h" -#include "st.h" -#include "shell-window-tracker-private.h" - #include +#include + +#include "shell-app-private.h" +#include "shell-enum-types.h" +#include "shell-global.h" +#include "shell-window-tracker-private.h" +#include "st.h" + /* This is mainly a memory usage optimization - the user is going to * be running far fewer of the applications at one time than they have * installed. But it also just helps keep the code more logically diff --git a/src/shell-app.h b/src/shell-app.h index 78b61f5ad..729cfecc8 100644 --- a/src/shell-app.h +++ b/src/shell-app.h @@ -4,8 +4,7 @@ #include #include - -#include "window.h" +#include G_BEGIN_DECLS diff --git a/src/shell-global.c b/src/shell-global.c index 5a2f2e668..b16758ff5 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -2,38 +2,39 @@ #include "config.h" -#include "shell-global-private.h" -#include "shell-enum-types.h" -#include "shell-perf-log.h" -#include "shell-window-tracker.h" -#include "shell-marshal.h" -#include "shell-wm.h" -#include "st.h" - -#include "display.h" -#include "util.h" -#include -#include -#include #include #include #include +#include #include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include #ifdef HAVE_SYS_RESOURCE_H #include #endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "shell-enum-types.h" +#include "shell-global-private.h" #include "shell-jsapi-compat-private.h" +#include "shell-marshal.h" +#include "shell-perf-log.h" +#include "shell-window-tracker.h" +#include "shell-wm.h" +#include "st.h" static void grab_notify (GtkWidget *widget, gboolean is_grab, gpointer user_data); diff --git a/src/shell-global.h b/src/shell-global.h index 66b912735..42909801c 100644 --- a/src/shell-global.h +++ b/src/shell-global.h @@ -2,12 +2,11 @@ #ifndef __SHELL_GLOBAL_H__ #define __SHELL_GLOBAL_H__ -#include "meta-plugin.h" #include #include #include #include - +#include #include G_BEGIN_DECLS diff --git a/src/shell-tray-manager.c b/src/shell-tray-manager.c index 0d126e920..2efbc4fe7 100644 --- a/src/shell-tray-manager.c +++ b/src/shell-tray-manager.c @@ -4,11 +4,9 @@ #include #include -#include - -#include - #include +#include +#include #include "shell-tray-manager.h" #include "na-tray-manager.h" diff --git a/src/shell-window-tracker.c b/src/shell-window-tracker.c index 25ee54437..d2889236f 100644 --- a/src/shell-window-tracker.c +++ b/src/shell-window-tracker.c @@ -9,6 +9,10 @@ #include #include #include +#include +#include +#include +#include #define SN_API_NOT_YET_FROZEN 1 #include @@ -20,11 +24,6 @@ #include "shell-marshal.h" #include "st.h" -#include "display.h" -#include "window.h" -#include "group.h" -#include "util.h" - /* This file includes modified code from * desktop-data-engine/engine-dbus/hippo-application-monitor.c * in the functions collecting application usage data. diff --git a/src/shell-window-tracker.h b/src/shell-window-tracker.h index bb2014dbe..9e16f4744 100644 --- a/src/shell-window-tracker.h +++ b/src/shell-window-tracker.h @@ -4,8 +4,8 @@ #include #include +#include -#include "window.h" #include "shell-app.h" #include "shell-app-system.h" diff --git a/src/shell-wm.c b/src/shell-wm.c index 669ef4afb..a47376355 100644 --- a/src/shell-wm.c +++ b/src/shell-wm.c @@ -4,12 +4,12 @@ #include +#include + #include "shell-wm-private.h" #include "shell-global.h" #include "shell-marshal.h" -#include - struct _ShellWM { GObject parent; diff --git a/src/shell-wm.h b/src/shell-wm.h index 477ac1e70..81fe83f13 100644 --- a/src/shell-wm.h +++ b/src/shell-wm.h @@ -3,7 +3,7 @@ #define __SHELL_WM_H__ #include -#include +#include G_BEGIN_DECLS From d4b7a3478ebd41def2a0e362f4cdf58cedff429c Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Tue, 8 Mar 2011 00:51:27 +0000 Subject: [PATCH 41/74] build: Fix LDADD for gnome-shell-real Use the libtooled shared object, and the dependency on it. --- src/Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index c72c54f5c..6e93d4ed3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -140,7 +140,8 @@ libgnome_shell_la_gir_sources = \ gnome_shell_real_SOURCES = \ main.c gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags) -gnome_shell_real_LDADD = -lgnome-shell +gnome_shell_real_LDADD = libgnome-shell.la +gnome_shell_real_DEPENDENCIES = libgnome-shell.la ######################################## From e2b26c4014434fe23ea82c2511e39f98eed0a3ea Mon Sep 17 00:00:00 2001 From: A S Alam Date: Tue, 8 Mar 2011 08:27:29 +0530 Subject: [PATCH 42/74] update Punjabi Translation by A S Alam --- po/pa.po | 259 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 141 insertions(+), 118 deletions(-) diff --git a/po/pa.po b/po/pa.po index f9a9b3475..43139acff 100644 --- a/po/pa.po +++ b/po/pa.po @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "cgi?product=gnome-shell&component=general\n" -"POT-Creation-Date: 2011-02-23 16:51+0000\n" -"PO-Revision-Date: 2011-02-25 07:31+0530\n" +"POT-Creation-Date: 2011-03-07 16:15+0000\n" +"PO-Revision-Date: 2011-03-08 08:27+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" @@ -59,7 +59,6 @@ msgid "History for command (Alt-F2) dialog" msgstr "ਕਮਾਂਡ (Alt-F2) ਡਾਈਲਾਗ ਲਈ ਅਤੀਤ" #: ../data/org.gnome.shell.gschema.xml.in.h:7 -#| msgid "History for command (Alt-F2) dialog" msgid "History for the looking glass dialog" msgstr "ਗਲਾਸ ਡਾਈਲਾਗ ਖੋਜ ਲਈ ਅਤੀਤ" @@ -185,27 +184,27 @@ msgid "Execution of '%s' failed:" msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:174 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "ਸਭ" -#: ../js/ui/appDisplay.js:261 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "ਐਪਲੀਕੇਸ਼ਨ" -#: ../js/ui/appDisplay.js:291 -msgid "PREFERENCES" -msgstr "ਪਸੰਦ" +#: ../js/ui/appDisplay.js:350 +msgid "SETTINGS" +msgstr "ਸੈਟਿੰਗ" -#: ../js/ui/appDisplay.js:551 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "ਨਵੀਂ ਵਿੰਡੋ" -#: ../js/ui/appDisplay.js:555 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ" -#: ../js/ui/appDisplay.js:556 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ" @@ -222,19 +221,19 @@ msgstr "%s ਨੂੰ ਤੁਹਾਡੀ ਪਸੰਦ ਤੋਂ ਹਟਾਇਆ #. 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:65 +#: ../js/ui/calendar.js:66 msgctxt "event list time" msgid "All Day" msgstr "ਸਭ ਦਿਨ" #. Translators: Shown in calendar event list, if 24h format -#: ../js/ui/calendar.js:70 +#: ../js/ui/calendar.js:71 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format -#: ../js/ui/calendar.js:77 +#: ../js/ui/calendar.js:78 msgctxt "event list time" msgid "%l:%M %p" msgstr "%l:%M %p" @@ -244,43 +243,43 @@ msgstr "%l:%M %p" #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. -#: ../js/ui/calendar.js:117 +#: ../js/ui/calendar.js:118 msgctxt "grid sunday" msgid "S" msgstr "ਐ" #. Translators: Calendar grid abbreviation for Monday -#: ../js/ui/calendar.js:119 +#: ../js/ui/calendar.js:120 msgctxt "grid monday" msgid "M" msgstr "ਸੋ" #. Translators: Calendar grid abbreviation for Tuesday -#: ../js/ui/calendar.js:121 +#: ../js/ui/calendar.js:122 msgctxt "grid tuesday" msgid "T" msgstr "ਮੰ" #. Translators: Calendar grid abbreviation for Wednesday -#: ../js/ui/calendar.js:123 +#: ../js/ui/calendar.js:124 msgctxt "grid wednesday" msgid "W" msgstr "ਬੁੱ" #. Translators: Calendar grid abbreviation for Thursday -#: ../js/ui/calendar.js:125 +#: ../js/ui/calendar.js:126 msgctxt "grid thursday" msgid "T" msgstr "ਵੀ" #. Translators: Calendar grid abbreviation for Friday -#: ../js/ui/calendar.js:127 +#: ../js/ui/calendar.js:128 msgctxt "grid friday" msgid "F" msgstr "ਸ਼ੁੱ" #. Translators: Calendar grid abbreviation for Saturday -#: ../js/ui/calendar.js:129 +#: ../js/ui/calendar.js:130 msgctxt "grid saturday" msgid "S" msgstr "ਸ਼" @@ -291,136 +290,136 @@ msgstr "ਸ਼" #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. -#: ../js/ui/calendar.js:142 +#: ../js/ui/calendar.js:143 msgctxt "list sunday" msgid "Su" msgstr "ਐ" #. Translators: Event list abbreviation for Monday -#: ../js/ui/calendar.js:144 +#: ../js/ui/calendar.js:145 msgctxt "list monday" msgid "M" msgstr "ਸੋ" #. Translators: Event list abbreviation for Tuesday -#: ../js/ui/calendar.js:146 +#: ../js/ui/calendar.js:147 msgctxt "list tuesday" msgid "T" msgstr "ਮੰ" #. Translators: Event list abbreviation for Wednesday -#: ../js/ui/calendar.js:148 +#: ../js/ui/calendar.js:149 msgctxt "list wednesday" msgid "W" msgstr "ਬੁੱ" #. Translators: Event list abbreviation for Thursday -#: ../js/ui/calendar.js:150 +#: ../js/ui/calendar.js:151 msgctxt "list thursday" msgid "Th" msgstr "ਵੀ" #. Translators: Event list abbreviation for Friday -#: ../js/ui/calendar.js:152 +#: ../js/ui/calendar.js:153 msgctxt "list friday" msgid "F" msgstr "ਸ਼ੁੱ" #. Translators: Event list abbreviation for Saturday -#: ../js/ui/calendar.js:154 +#: ../js/ui/calendar.js:155 msgctxt "list saturday" msgid "S" msgstr "ਸ਼" #. Translators: Text to show if there are no events -#: ../js/ui/calendar.js:701 +#: ../js/ui/calendar.js:704 msgid "Nothing Scheduled" msgstr "ਕੋਈ ਵੀ ਸੈਡਿਊਲ ਨਹੀਂ ਹੈ" #. Translators: Shown on calendar heading when selected day occurs on current year -#: ../js/ui/calendar.js:717 +#: ../js/ui/calendar.js:720 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "%A, %d %B" #. Translators: Shown on calendar heading when selected day occurs on different year -#: ../js/ui/calendar.js:720 +#: ../js/ui/calendar.js:723 msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d %B %Y" -#: ../js/ui/calendar.js:730 +#: ../js/ui/calendar.js:733 msgid "Today" msgstr "ਅੱਜ" -#: ../js/ui/calendar.js:734 +#: ../js/ui/calendar.js:737 msgid "Tomorrow" msgstr "ਭਲਕ" -#: ../js/ui/calendar.js:743 +#: ../js/ui/calendar.js:746 msgid "This week" msgstr "ਇਹ ਹਫ਼ਤਾ" -#: ../js/ui/calendar.js:751 +#: ../js/ui/calendar.js:754 msgid "Next week" msgstr "ਹਫ਼ਤਾ ਅੱਗੇ" -#: ../js/ui/dash.js:174 +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 msgid "Remove" msgstr "ਹਟਾਓ" -#: ../js/ui/dateMenu.js:93 +#: ../js/ui/dateMenu.js:91 msgid "Date and Time Settings" msgstr "ਮਿਤੀ ਤੇ ਸਮਾਂ ਸੈਟਿੰਗ" -#: ../js/ui/dateMenu.js:112 +#: ../js/ui/dateMenu.js:111 msgid "Open Calendar" msgstr "ਕੈਲੰਡਰ ਖੋਲ੍ਹੋ" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:151 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a, %e %b %R:%S" -#: ../js/ui/dateMenu.js:152 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %e %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:156 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/dateMenu.js:157 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:164 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l:%M:%S %p" -#: ../js/ui/dateMenu.js:165 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %e %b, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:169 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/dateMenu.js:170 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" #. 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:196 +#: ../js/ui/dateMenu.js:209 msgid "%A %B %e, %Y" msgstr "%A, %e %B %Y" @@ -499,37 +498,41 @@ msgstr "ਪੁਸ਼ਟੀ" msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" -#: ../js/ui/lookingGlass.js:587 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "ਕੋਈ ਇਕਸਟੈਨਸ਼ਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ" -#: ../js/ui/lookingGlass.js:624 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "ਚਾਲੂ ਹੈ" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "ਬੰਦ ਹੈ" -#: ../js/ui/lookingGlass.js:628 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "ਗਲਤੀ" -#: ../js/ui/lookingGlass.js:630 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "ਪੁਰਾਣਾ" -#: ../js/ui/lookingGlass.js:655 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "ਸਰੋਤ ਵੇਖੋ" -#: ../js/ui/lookingGlass.js:661 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "ਵੈੱਬ ਪੇਜ਼" -#: ../js/ui/messageTray.js:1902 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "ਖੋਲ੍ਹੋ" + +#: ../js/ui/messageTray.js:1963 msgid "System Information" msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ" @@ -545,18 +548,29 @@ msgstr "ਵਿੰਡੋ" msgid "Applications" msgstr "ਐਪਲੀਕੇਸ਼ਨ" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "ਡੈਸ਼" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:537 +#: ../js/ui/panel.js:532 #, c-format msgid "Quit %s" msgstr "%s ਬੰਦ ਕਰੋ" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:772 +#: ../js/ui/panel.js:893 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" +#: ../js/ui/panel.js:994 +#| msgid "Cancel" +msgid "Panel" +msgstr "ਪੈਨਲ" + #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" @@ -579,7 +593,7 @@ msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ" #. "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:612 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-us" @@ -587,92 +601,91 @@ msgstr "toggle-switch-us" msgid "Please enter a command:" msgstr "ਕਮਾਂਡ ਦਿਓ ਜੀ:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "ਖੋਜ ਜਾਰੀ ਹੈ..." -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਲੱਭਿਆ।" -#: ../js/ui/statusMenu.js:99 ../js/ui/statusMenu.js:163 +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 msgid "Power Off..." msgstr "...ਬੰਦ ਕਰੋ" -#: ../js/ui/statusMenu.js:101 ../js/ui/statusMenu.js:162 -#| msgid "Suspend..." +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 msgid "Suspend" msgstr "ਸਸਪੈਂਡ" -#: ../js/ui/statusMenu.js:122 +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "ਉਪਲੱਬਧ" -#: ../js/ui/statusMenu.js:127 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "ਰੁਝਿਆ" -#: ../js/ui/statusMenu.js:135 +#: ../js/ui/statusMenu.js:138 msgid "My Account" msgstr "ਮੇਰਾ ਅਕਾਊਂਟ" -#: ../js/ui/statusMenu.js:139 +#: ../js/ui/statusMenu.js:142 msgid "System Settings" msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ" -#: ../js/ui/statusMenu.js:146 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ" -#: ../js/ui/statusMenu.js:150 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "ਯੂਜ਼ਰ ਬਦਲੋ" -#: ../js/ui/statusMenu.js:155 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "...ਲਾਗਆਉਟ" -#: ../js/ui/status/accessibility.js:81 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "ਜ਼ੂਮ" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "ਸਕਰੀਨ ਰੀਡਰ" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ" -#: ../js/ui/status/accessibility.js:96 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ" -#: ../js/ui/status/accessibility.js:99 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:102 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:105 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "ਬਾਊਂਸ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:108 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:112 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ" -#: ../js/ui/status/accessibility.js:164 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" -#: ../js/ui/status/accessibility.js:209 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "ਵੱਡੇ ਅੱਖਰ" @@ -801,7 +814,13 @@ msgstr "ਲੋਕਲਾਈਜ਼ੇਸ਼ਨ ਸੈਟਿੰਗ" msgid "Power Settings" msgstr "ਪਾਵਰ ਸੈਟਿੰਗ" -#: ../js/ui/status/power.js:112 +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "...ਅਨੁਮਾਨ ਲਾਇਆ ਜਾ ਰਿਹਾ ਹੈ" + +#: ../js/ui/status/power.js:117 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -809,75 +828,75 @@ msgstr[0] "%d ਘੰਟਾ ਬਾਕੀ" msgstr[1] "%d ਘੰਟੇ ਬਾਕੀ" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:115 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s ਬਾਕੀ" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "hour" msgid_plural "hours" msgstr[0] "ਘੰਟਾ" msgstr[1] "ਘੰਟੇ" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "minute" msgid_plural "minutes" msgstr[0] "ਮਿੰਟ" msgstr[1] "ਮਿੰਟ" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:125 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ" msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ" -#: ../js/ui/status/power.js:235 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "AC ਐਡਪਟਰ" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "ਮਾਨੀਟਰ" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "ਮਾਊਸ" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "ਕੀਬੋਰਡ" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "ਸੈੱਲ ਫੋਨ" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "ਟੇਬਲੇਟ" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "ਕੰਪਿਊਟਰ" -#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1013 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "ਅਣਜਾਣ" @@ -889,22 +908,22 @@ msgstr "ਆਵਾਜ਼" msgid "Microphone" msgstr "ਮਾਈਕਰੋਫੋਨ" -#: ../js/ui/telepathyClient.js:240 +#: ../js/ui/telepathyClient.js:239 #, c-format msgid "%s is online." msgstr "%s ਆਨਲਾਈਨ ਹੈ।" -#: ../js/ui/telepathyClient.js:245 +#: ../js/ui/telepathyClient.js:244 #, c-format msgid "%s is offline." msgstr "%s ਆਫਲਾਈਨ ਹੈ।" -#: ../js/ui/telepathyClient.js:248 +#: ../js/ui/telepathyClient.js:247 #, c-format msgid "%s is away." msgstr "%s ਦੂਰ ਹੈ।" -#: ../js/ui/telepathyClient.js:251 +#: ../js/ui/telepathyClient.js:250 #, c-format msgid "%s is busy." msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।" @@ -912,7 +931,7 @@ msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. -#: ../js/ui/telepathyClient.js:349 +#: ../js/ui/telepathyClient.js:348 #, no-c-format msgid "Sent at %X on %A" msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" @@ -920,17 +939,21 @@ msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" #. Translators: this is the text displayed #. in the search entry when no search is #. active; it should not exceed ~30 -#. characters -#: ../js/ui/viewSelector.js:30 +#. characters. +#: ../js/ui/viewSelector.js:117 msgid "Type to search..." msgstr "...ਲੱਭਣ ਲਈ ਲਿਖੋ" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "ਖੋਜ" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s ਸ਼ੁਰੂ ਹੋਣਾ ਖਤਮ ਹੋਇਆ" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "'%s' ਤਿਆਰ ਹੈ" @@ -957,32 +980,32 @@ msgstr[1] "%u ਇੰਪੁੱਟ" msgid "System Sounds" msgstr "ਸਿਸਟਮ ਸਾਊਂਡ" -#: ../src/shell-global.c:1363 +#: ../src/shell-global.c:1298 msgid "Less than a minute ago" msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1367 +#: ../src/shell-global.c:1302 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1372 +#: ../src/shell-global.c:1307 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1377 +#: ../src/shell-global.c:1312 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ" msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1382 +#: ../src/shell-global.c:1317 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -990,8 +1013,9 @@ msgstr[0] "%d ਹਫ਼ਤਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਹਫ਼ਤੇ ਪਹਿਲਾਂ" #: ../src/shell-polkit-authentication-agent.c:334 -msgid "Authentation dialog was dismissed by the user" -msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਨੇ ਰੱਦ ਕੀਤਾ" +#| msgid "Authentation dialog was dismissed by the user" +msgid "Authentication dialog was dismissed by the user" +msgstr "ਪਰਮਾਣਕਿਤਾ ਡਾਈਲਾਗ ਯੂਜ਼ਰ ਵਲੋਂ ਰੱਦ ਕੀਤਾ" #: ../src/shell-util.c:89 msgid "Home Folder" @@ -1003,10 +1027,6 @@ msgstr "ਘਰ ਫੋਲਡਰ" msgid "File System" msgstr "ਫਾਇਲ ਸਿਸਟਮ" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "ਖੋਜ" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the @@ -1017,6 +1037,9 @@ msgstr "ਖੋਜ" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "PREFERENCES" +#~ msgstr "ਪਸੰਦ" + #~ msgid "Clip the crosshairs at the center" #~ msgstr "ਸੈਂਟਰ ਉੱਤੇ ਕਰਾਂਸਹੇਅਰ ਕਲਿੱਪ ਕਰੋ" From e6b1853908d4509fb5390b98d3af884caff368fe Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Mon, 7 Mar 2011 23:59:00 -0500 Subject: [PATCH 43/74] Require Mutter 2.91.91 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f1184955f..fc4d60775 100644 --- a/configure.ac +++ b/configure.ac @@ -63,7 +63,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) CLUTTER_MIN_VERSION=1.5.15 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GJS_MIN_VERSION=0.7.11 -MUTTER_MIN_VERSION=2.91.90 +MUTTER_MIN_VERSION=2.91.91 GTK_MIN_VERSION=3.0.0 GIO_MIN_VERSION=2.25.9 LIBECAL_MIN_VERSION=2.32.0 From 2515d5ad6cc627fcf8462371091e6fe04dfdd5fe Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 8 Mar 2011 00:33:33 -0500 Subject: [PATCH 44/74] POTFILES.in: add main.c --- po/POTFILES.in | 1 + 1 file changed, 1 insertion(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index bc4a4854e..1a4e2720b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -28,6 +28,7 @@ js/ui/windowAttentionHandler.js js/ui/workspacesView.js src/gvc/gvc-mixer-control.c src/gdmuser/gdm-user.c +src/main.c src/shell-app-system.c src/shell-global.c src/shell-polkit-authentication-agent.c From 8dcd08f47ebaef0feb2ffb930b17a6d33421d637 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 8 Mar 2011 00:33:52 -0500 Subject: [PATCH 45/74] Fix srcdir != builddir issues * calendar-server subdirectory of build directory needs to be created. * Generate shell-enum-types.c/.h in build directory rather than in the possibly-read-only source directory. --- src/Makefile-calendar-server.am | 4 +++- src/Makefile.am | 12 ++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Makefile-calendar-server.am b/src/Makefile-calendar-server.am index e617668ee..217243230 100644 --- a/src/Makefile-calendar-server.am +++ b/src/Makefile-calendar-server.am @@ -4,7 +4,9 @@ service_in_files = calendar-server/org.gnome.Shell.CalendarServer.service.in service_DATA = $(service_in_files:.service.in=.service) $(service_DATA): $(service_in_files) Makefile - @sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ + $(AM_V_GEN) \ + [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ + sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ libexec_PROGRAMS += gnome-shell-calendar-server diff --git a/src/Makefile.am b/src/Makefile.am index 6e93d4ed3..83d5889e7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -225,9 +225,9 @@ stamp-shell-enum-types.h: $(srcdir)/shell-enum-types.h.in $(shell_public_headers $(AM_V_GEN) ( cd $(srcdir) && \ $(GLIB_MKENUMS) \ --template $< \ - $(shell_public_headers_h) ) > $@.tmp && \ - (cmp -s $@.tmp shell-enum-types.h || mv $@.tmp shell-enum-types.h) && \ - rm -f $@.tmp && \ + $(shell_public_headers_h) ) > $(@F).tmp && \ + (cmp -s $(@F).tmp shell-enum-types.h || mv $(@F).tmp shell-enum-types.h) && \ + rm -f $(@F).tmp && \ echo timestamp > $(@F) EXTRA_DIST += shell-enum-types.h.in CLEANFILES += stamp-shell-enum-types.h @@ -236,9 +236,9 @@ shell-enum-types.c: shell-enum-types.c.in stamp-shell-enum-types.h $(AM_V_GEN) ( cd $(srcdir) && \ $(GLIB_MKENUMS) \ --template $< \ - $(shell_public_headers_h) ) > $@.tmp && \ - mv $@.tmp $@ && \ - rm -f $@.tmp + $(shell_public_headers_h) ) > $(@F).tmp && \ + mv $(@F).tmp $(@F) && \ + rm -f $(@F).tmp EXTRA_DIST += shell-enum-types.c.in libgnome_shell_la_LDFLAGS = -avoid-version From 46ffff8438ab2f065d020232fdfb1fcc0e95899a Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 8 Mar 2011 00:41:17 -0500 Subject: [PATCH 46/74] Add missing files to CLEANFILES --- src/Makefile-calendar-server.am | 1 + src/Makefile-gvc.am | 3 ++- src/Makefile.am | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Makefile-calendar-server.am b/src/Makefile-calendar-server.am index 217243230..502185dff 100644 --- a/src/Makefile-calendar-server.am +++ b/src/Makefile-calendar-server.am @@ -7,6 +7,7 @@ $(service_DATA): $(service_in_files) Makefile $(AM_V_GEN) \ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ +CLEANFILES += $(service_DATA) libexec_PROGRAMS += gnome-shell-calendar-server diff --git a/src/Makefile-gvc.am b/src/Makefile-gvc.am index 5bedcc326..67ddcdffc 100644 --- a/src/Makefile-gvc.am +++ b/src/Makefile-gvc.am @@ -48,4 +48,5 @@ Gvc_1_0_gir_INCLUDES = GObject-2.0 Gvc_1_0_gir_CFLAGS = $(INCLUDES) -I$(srcdir)/gvc -DWITH_INTROSPECTION Gvc_1_0_gir_LIBS = libgvc.la Gvc_1_0_gir_FILES = $(addprefix $(srcdir)/,$(libgvc_la_gir_sources)) -INTROSPECTION_GIRS += Gvc-1.0.gir \ No newline at end of file +INTROSPECTION_GIRS += Gvc-1.0.gir +CLEANFILES += Gvc-1.0.gir diff --git a/src/Makefile.am b/src/Makefile.am index 83d5889e7..40ce5de08 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -262,6 +262,7 @@ Shell_0_1_gir_FILES = $(addprefix $(srcdir)/,$(libgnome_shell_la_gir_sources)) Shell_0_1_gir_SCANNERFLAGS = --include-uninstalled=$(builddir)/St-1.0.gir \ --add-include-path=$(MUTTER_GIR_DIR) INTROSPECTION_GIRS += Shell-0.1.gir +CLEANFILES += Shell-0.1.gir St-1.0.gir: libst-1.0.la St_1_0_gir_INCLUDES = Clutter-1.0 Gtk-3.0 @@ -270,6 +271,7 @@ St_1_0_gir_LIBS = libst-1.0.la St_1_0_gir_FILES = $(filter-out %-private.h $(st_non_gir_sources), $(addprefix $(srcdir)/,$(st_source_h))) \ $(addprefix $(srcdir)/,$(st_source_c)) INTROSPECTION_GIRS += St-1.0.gir +CLEANFILES += St-1.0.gir Gdm-1.0.gir: libgdmuser-1.0.la Gdm_1_0_gir_INCLUDES = GObject-2.0 GdkPixbuf-2.0 @@ -278,3 +280,4 @@ Gdm_1_0_gir_LIBS = libgdmuser-1.0.la Gdm_1_0_gir_FILES = $(filter-out %-private.h, $(addprefix $(srcdir)/,$(gdmuser_source_h))) \ $(addprefix $(srcdir)/,$(gdmuser_source_c)) INTROSPECTION_GIRS += Gdm-1.0.gir +CLEANFILES += Gdm-1.0.gir From 6f15d1c4c451daee3e46d46905259dbd07709cd9 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Mon, 7 Mar 2011 23:59:17 -0500 Subject: [PATCH 47/74] Bump version to 2.91.91 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index fc4d60775..ebd585120 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.63) -AC_INIT([gnome-shell],[2.91.90],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) +AC_INIT([gnome-shell],[2.91.91],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/shell-global.c]) From f27547dcffa8de4a06aa09cec4b609471509ce0c Mon Sep 17 00:00:00 2001 From: Sterios Prosiniklis Date: Tue, 8 Mar 2011 15:00:59 +0200 Subject: [PATCH 48/74] l10n: Updated Greek translation for gnome-shell --- po/el.po | 822 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 500 insertions(+), 322 deletions(-) diff --git a/po/el.po b/po/el.po index 150d02b97..a5c82c33a 100644 --- a/po/el.po +++ b/po/el.po @@ -4,18 +4,20 @@ # # Jennie Petoumenou , 2009. # Fotis Tsamis , 2010. +# Kostas Papadimas , 2011. +# msgid "" msgstr "" "Project-Id-Version: gnome-shell.po.master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-15 11:50+0200\n" -"PO-Revision-Date: 2011-01-15 11:48+0200\n" +"POT-Creation-Date: 2011-03-08 14:59+0200\n" +"PO-Revision-Date: 2011-01-23 00:04+0200\n" "Last-Translator: Kostas Papadimas \n" "Language-Team: Greek \n" -"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: el\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: KBabel 1.11.4\n" @@ -66,23 +68,29 @@ msgid "History for command (Alt-F2) dialog" msgstr "Ιστορικό του διαλόγου εντολών (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 +#, fuzzy +msgid "History for the looking glass dialog" +msgstr "Ιστορικό του διαλόγου εντολών (Alt-F2)" + +#: ../data/org.gnome.shell.gschema.xml.in.h:8 msgid "If true, display date in the clock, in addition to time." msgstr "Αν αληθές, εμφανίζει την ημερομηνία στο ρολόι επιπλέον της ώρας." -#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display seconds in time." msgstr "Αν αληθές, εμφανίζει δευτερόλεπτα στην ώρα." -#: ../data/org.gnome.shell.gschema.xml.in.h:9 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "" "Αν αληθές, εμφανίζει τον αριθμό εβδομάδας σύμφωνα με το ISO στο ημερολόγιο." -#: ../data/org.gnome.shell.gschema.xml.in.h:10 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Λίστα ID αρχείων επιφάνειας εργασίας για προτιμώμενες εφαρμογές" -#: ../data/org.gnome.shell.gschema.xml.in.h:11 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#, fuzzy, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " @@ -91,7 +99,9 @@ msgid "" "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." msgstr "" "Ορίζει το δίαυλο του GStreamer που θα χρησιμοποιηθεί για την κωδικοποίηση " "των εγγραφών. Ακολουθεί το συντακτικό που χρησιμοποιείται για το gst-launch. " @@ -104,19 +114,19 @@ msgstr "" "χρησιμοποιηθεί ο προεπιλεγμένος δίαυλος. Αυτός είναι αυτή τη στιγμή ο " "'videorate ! theoraenc ! oggmux' και εγγράφει σε Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Εμφάνιση ημερομηνίας στο ρολόι" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Εμφάνιση του αριθμού εβδομάδας στο ημερολόγιο" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Εμφάνιση ώρας με δευτερόλεπτα" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -124,7 +134,7 @@ msgstr "" "Οι εφαρμογές που αντιστοιχούν σε αυτά τα αναγνωριστικά θα εμφανισθούν στην " "περιοχή αγαπημένων." -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " @@ -134,7 +144,7 @@ msgstr "" "βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα " "πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη." -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -142,13 +152,13 @@ msgstr "" "Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα στιγμιοτύπων " "οθόνης του GNOME Shell σε καρέ ανά δευτερόλεπτο." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" "Ο δίαυλος του gstreamer που χρησιμοποιήθηκε για την κωδικοποίηση του " "στιγμιότυπου" -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -161,184 +171,61 @@ msgstr "" "αυτή τη λειτουργία για λόγους απορρήτου. Παρακαλούμε έχετε υπ' όψιν ότι η " "απενεργοποίηση δεν θα αφαιρέσει τα ήδη αποθηκευμένα δεδομένα." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "Uuid των επεκτάσεων που θα απενεργοποιηθούν" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Εάν θα συλλέγονται στατιστικά χρήσης των εφαρμογών" -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 -msgid "Clip the crosshairs at the center" -msgstr "Περικοπή του σκοπεύτρου στο κέντρο" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 -msgid "Color of the crosshairs" -msgstr "Χρώμα του σκόπευτρου" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:3 -msgid "" -"Determines the length of the vertical and horizontal lines that make up the " -"crosshairs." -msgstr "" -"Καθορίζει το μήκος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το " -"σκόπευτρο" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4 -msgid "" -"Determines the position of the magnified mouse image within the magnified " -"view and how it reacts to system mouse movement. The values are - none: no " -"mouse tracking; - centered: the mouse image is displayed at the center of " -"the zoom region (which also represents the point under the system mouse) and " -"the magnified contents are scrolled as the system mouse moves; - " -"proportional: the position of the magnified mouse in the zoom region is " -"proportionally the same as the position of the system mouse on screen; - " -"push: when the magnified mouse intersects a boundary of the zoom region, the " -"contents are scrolled into view." +#: ../data/org.gnome.shell.gschema.xml.in.h:24 +msgid "disabled OpenSearch providers" msgstr "" -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5 -msgid "" -"Determines the transparency of the crosshairs, from fully opaque to fully " -"transparent." +#: ../js/misc/util.js:86 +msgid "Command not found" msgstr "" -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:6 -msgid "" -"Determines whether the crosshairs intersect the magnified mouse sprite, or " -"are clipped such that the ends of the horizontal and vertical lines surround " -"the mouse image." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 -msgid "Enable lens mode" -msgstr "Ενεργοποίηση λειτουργίας φακού" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8 -msgid "" -"Enables/disables display of crosshairs centered on the magnified mouse " -"sprite." -msgstr "" -"Ενεργοποιεί/απενεργοποιεί την εμφάνιση σκοπεύτρου στο δείκτη μεγέθυνσης του " -"ποντικιού" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9 -msgid "" -"For centered mouse tracking, when the system pointer is at or near the edge " -"of the screen, the magnified contents continue to scroll such that the " -"screen edge moves into the magnified view." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:10 -msgid "Length of the crosshairs" -msgstr "Μήκος του σκοπεύτρου" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:11 -msgid "Magnification factor" -msgstr "Παράγοντας μεγέθυνσης" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:12 -msgid "Mouse Tracking Mode" -msgstr "Λειτουργία Mouse Tracking " - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:13 -msgid "Opacity of the crosshairs" -msgstr "Αδιαφάνεια του σκοπεύτρου" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:14 -msgid "Screen position" -msgstr "Θέση οθόνης" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15 -msgid "Scroll magnified contents beyond the edges of the desktop" -msgstr "Κύλιση σε μεγεθυμένα περιεχόμενα που βρίσκονται έξω από την επιφάνεια" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16 -msgid "Show or hide crosshairs" -msgstr "Προβολή ή απόκρυψη του σκοπεύτρου" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:17 -msgid "Show or hide the magnifier" -msgstr "Προβολή ή απόκρυψη του μεγεθυντή" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:18 -msgid "Show or hide the magnifier and all of its zoom regions." -msgstr "Προβολή ή απόκρυψη του μεγεθυντή και όλων των περιοχών μεγέθυνσης" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:19 -msgid "" -"The color of the the vertical and horizontal lines that make up the " -"crosshairs." -msgstr "" -"Το χρώμα των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:20 -msgid "" -"The magnified view either fills the entire screen, or occupies the top-half, " -"bottom-half, left-half, or right-half of the screen." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:21 -msgid "" -"The power of the magnification. A value of 1.0 means no magnification. A " -"value of 2.0 doubles the size." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22 -msgid "Thickness of the crosshairs" -msgstr "Πάχος των γραμμών σκοπεύτρου" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:23 -msgid "" -"Whether the magnified view should be centered over the location of the " -"system mouse and move with it." -msgstr "" - -#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24 -msgid "Width of the vertical and horizontal lines that make up the crosshairs." -msgstr "" -" Το πάχος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" - #. Replace "Error invoking GLib.shell_parse_argv: " with #. something nicer -#: ../js/misc/util.js:108 +#: ../js/misc/util.js:113 #, fuzzy msgid "Could not parse command:" msgstr "Παρακαλώ εισάγετε μία εντολή:" -#: ../js/misc/util.js:130 +#: ../js/misc/util.js:135 #, fuzzy msgid "No such application" msgstr "Εφαρμογές" -#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#: ../js/misc/util.js:148 #, c-format msgid "Execution of '%s' failed:" msgstr "Η εκτέλεση του '%s' απέτυχε:" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:155 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "Όλα" -#: ../js/ui/appDisplay.js:236 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "ΕΦΑΡΜΟΓΕΣ" -#: ../js/ui/appDisplay.js:266 -msgid "PREFERENCES" -msgstr "ΠΡΟΤΙΜΗΣΕΙΣ" +#: ../js/ui/appDisplay.js:350 +msgid "SETTINGS" +msgstr "" -#: ../js/ui/appDisplay.js:563 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "Νέο παράθυρο" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Αφαίρεση από τα αγαπημένα" -#: ../js/ui/appDisplay.js:568 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Προσθήκη στα αγαπημένα" @@ -352,11 +239,217 @@ msgstr "%s προστέθηκε στα αγαπημένα σας" msgid "%s has been removed from your favorites." msgstr "%s αφαιρέθηκε από τα αγαπημένα σας" -#: ../js/ui/dash.js:27 +#. 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:66 +#, fuzzy +msgctxt "event list time" +msgid "All Day" +msgstr "Όλα" + +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:71 +msgctxt "event list time" +msgid "%H:%M" +msgstr "" + +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:78 +#, fuzzy +msgctxt "event list time" +msgid "%l:%M %p" +msgstr "%a %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:118 +msgctxt "grid sunday" +msgid "S" +msgstr "" + +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:120 +msgctxt "grid monday" +msgid "M" +msgstr "" + +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:122 +msgctxt "grid tuesday" +msgid "T" +msgstr "" + +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:124 +msgctxt "grid wednesday" +msgid "W" +msgstr "" + +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:126 +msgctxt "grid thursday" +msgid "T" +msgstr "" + +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:128 +msgctxt "grid friday" +msgid "F" +msgstr "" + +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:130 +msgctxt "grid saturday" +msgid "S" +msgstr "" + +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:143 +msgctxt "list sunday" +msgid "Su" +msgstr "" + +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:145 +msgctxt "list monday" +msgid "M" +msgstr "" + +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:147 +msgctxt "list tuesday" +msgid "T" +msgstr "" + +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:149 +msgctxt "list wednesday" +msgid "W" +msgstr "" + +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:151 +msgctxt "list thursday" +msgid "Th" +msgstr "" + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:153 +msgctxt "list friday" +msgid "F" +msgstr "" + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:155 +msgctxt "list saturday" +msgid "S" +msgstr "" + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:704 +msgid "Nothing Scheduled" +msgstr "" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:720 +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:723 +#, fuzzy +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "%a %e %b, %R" + +#: ../js/ui/calendar.js:733 +msgid "Today" +msgstr "" + +#: ../js/ui/calendar.js:737 +msgid "Tomorrow" +msgstr "" + +#: ../js/ui/calendar.js:746 +msgid "This week" +msgstr "" + +#: ../js/ui/calendar.js:754 +msgid "Next week" +msgstr "" + +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 msgid "Remove" msgstr "Απομάκρυνση" -#: ../js/ui/docDisplay.js:18 +#: ../js/ui/dateMenu.js:91 +#, fuzzy +msgid "Date and Time Settings" +msgstr "Ρυθμίσεις συστήματος" + +#: ../js/ui/dateMenu.js:111 +msgid "Open Calendar" +msgstr "" + +#. Translators: This is the time format with date used +#. in 24-hour mode. +#: ../js/ui/dateMenu.js:164 +msgid "%a %b %e, %R:%S" +msgstr "%a %e %b, %R:%S" + +#: ../js/ui/dateMenu.js:165 +msgid "%a %b %e, %R" +msgstr "%a %e %b, %R" + +#. Translators: This is the time format without date used +#. in 24-hour mode. +#: ../js/ui/dateMenu.js:169 +msgid "%a %R:%S" +msgstr "%a %R%a %R:%S" + +#: ../js/ui/dateMenu.js:170 +msgid "%a %R" +msgstr "%a %R" + +#. Translators: This is a time format with date used +#. for AM/PM. +#: ../js/ui/dateMenu.js:177 +msgid "%a %b %e, %l:%M:%S %p" +msgstr "%a %e %b, %l:%M:%S %p" + +#: ../js/ui/dateMenu.js:178 +msgid "%a %b %e, %l:%M %p" +msgstr "%a %e %b, %l:%M %p" + +#. Translators: This is a time format without date used +#. for AM/PM. +#: ../js/ui/dateMenu.js:182 +msgid "%a %l:%M:%S %p" +msgstr "%a %l:%M:%S %p" + +#: ../js/ui/dateMenu.js:183 +msgid "%a %l:%M %p" +msgstr "%a %l:%M %p" + +#. 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:209 +#, fuzzy +msgid "%A %B %e, %Y" +msgstr "%a %e %b, %R" + +#: ../js/ui/docDisplay.js:19 msgid "RECENT ITEMS" msgstr "ΠΡΟΣΦΑΤΑ ΑΝΤΙΚΕΙΜΕΝΑ" @@ -427,123 +520,98 @@ msgstr "" msgid "Confirm" msgstr "" -#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:469 +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 msgid "Cancel" msgstr "Ακύρωση" -#: ../js/ui/lookingGlass.js:556 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "Ενεργοποιημένο" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Απενεργοποιημένο" -#: ../js/ui/lookingGlass.js:597 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "Σφάλμα" -#: ../js/ui/lookingGlass.js:599 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "Μη ενημερωμένο" -#: ../js/ui/lookingGlass.js:624 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "Προβολή πηγής" -#: ../js/ui/lookingGlass.js:630 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "Ιστοσελίδα" -#: ../js/ui/messageTray.js:1748 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "" + +#: ../js/ui/messageTray.js:1963 #, fuzzy msgid "System Information" msgstr "Ρυθμίσεις συστήματος" -#: ../js/ui/overview.js:75 +#: ../js/ui/overview.js:88 msgid "Undo" msgstr "Αναίρεση" -#: ../js/ui/overview.js:140 +#: ../js/ui/overview.js:183 msgid "Windows" msgstr "Παράθυρα" -#: ../js/ui/overview.js:143 +#: ../js/ui/overview.js:186 msgid "Applications" msgstr "Εφαρμογές" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:479 +#: ../js/ui/panel.js:532 #, c-format msgid "Quit %s" msgstr "Έξοδος %s" -#. Translators: This is the time format with date used -#. in 24-hour mode. -#: ../js/ui/panel.js:564 -msgid "%a %b %e, %R:%S" -msgstr "%a %e %b, %R:%S" - -#: ../js/ui/panel.js:565 -msgid "%a %b %e, %R" -msgstr "%a %e %b, %R" - -#. Translators: This is the time format without date used -#. in 24-hour mode. -#: ../js/ui/panel.js:569 -msgid "%a %R:%S" -msgstr "%a %R%a %R:%S" - -#: ../js/ui/panel.js:570 -msgid "%a %R" -msgstr "%a %R" - -#. Translators: This is a time format with date used -#. for AM/PM. -#: ../js/ui/panel.js:577 -msgid "%a %b %e, %l:%M:%S %p" -msgstr "%a %e %b, %l:%M:%S %p" - -#: ../js/ui/panel.js:578 -msgid "%a %b %e, %l:%M %p" -msgstr "%a %e %b, %l:%M %p" - -#. Translators: This is a time format without date used -#. for AM/PM. -#: ../js/ui/panel.js:582 -msgid "%a %l:%M:%S %p" -msgstr "%a %l:%M:%S %p" - -#: ../js/ui/panel.js:583 -msgid "%a %l:%M %p" -msgstr "%a %l:%M %p" - #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:728 +#: ../js/ui/panel.js:893 msgid "Activities" msgstr "Δραστηριότητες" -#: ../js/ui/placeDisplay.js:112 +#: ../js/ui/panel.js:994 +#, fuzzy +msgid "Panel" +msgstr "Ακύρωση" + +#: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "Αποτυχία αποπροσάρτησης '%s'" -#: ../js/ui/placeDisplay.js:115 +#: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "Προσπάθεια ξανά" -#: ../js/ui/placeDisplay.js:160 +#: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "Σύνδεση σε..." -#: ../js/ui/placeDisplay.js:559 +#: ../js/ui/placeDisplay.js:409 msgid "PLACES & DEVICES" msgstr "ΤΟΠΟΘΕΣΙΕΣ $ ΣΥΣΚΕΥΕΣ" @@ -552,95 +620,107 @@ msgstr "ΤΟΠΟΘΕΣΙΕΣ $ ΣΥΣΚΕΥΕΣ" #. "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:33 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-us" -#: ../js/ui/runDialog.js:222 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Παρακαλώ εισάγετε μία εντολή:" -#: ../js/ui/statusMenu.js:102 +#: ../js/ui/searchDisplay.js:283 +#, fuzzy +msgid "Searching..." +msgstr "Αναζήτηση" + +#: ../js/ui/searchDisplay.js:297 +msgid "No matching results." +msgstr "" + +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "" + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +#, fuzzy +msgid "Suspend" +msgstr "Αναστολή..." + +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "Διαθέσιμος" -#: ../js/ui/statusMenu.js:107 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "Απασχολημένος" -#: ../js/ui/statusMenu.js:115 +#: ../js/ui/statusMenu.js:138 msgid "My Account" msgstr "Ο λογαριασμός μου" -#: ../js/ui/statusMenu.js:119 +#: ../js/ui/statusMenu.js:142 msgid "System Settings" msgstr "Ρυθμίσεις συστήματος" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Κλείδωμα οθόνης" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Αλλαγή χρήστη" -#: ../js/ui/statusMenu.js:135 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Αποσύνδεση..." -#: ../js/ui/statusMenu.js:142 -msgid "Suspend..." -msgstr "Αναστολή..." - -#: ../js/ui/statusMenu.js:146 -msgid "Shut Down..." -msgstr "Τερματισμός..." - -#: ../js/ui/status/accessibility.js:83 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "Εστίαση" -#: ../js/ui/status/accessibility.js:89 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "Αναγνώστης οθόνης" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "Πληκτρολόγιο οθόνης" -#: ../js/ui/status/accessibility.js:95 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "Οπτικές ειδοποιήσεις" -#: ../js/ui/status/accessibility.js:98 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" -msgstr "Κολλώδης πλήκτρα" +msgstr "Κολλώδη πλήκτρα" -#: ../js/ui/status/accessibility.js:101 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "Αργά πλήκτρα" -#: ../js/ui/status/accessibility.js:104 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "Πλήκτρα αναπήδησης" -#: ../js/ui/status/accessibility.js:107 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "Πλήκτρα ποντικιού" -#: ../js/ui/status/accessibility.js:111 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "Ρυθμίσεις καθολικής πρόσβασης" -#: ../js/ui/status/accessibility.js:163 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "Υψηλή αντίθεση" -#: ../js/ui/status/accessibility.js:205 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Μεγάλο κείμενο" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 msgid "Bluetooth" msgstr "Bluetooth" @@ -656,112 +736,122 @@ msgstr "Αποστολή αρχείων σε συσκευή..." msgid "Setup a New Device..." msgstr "Ρύθμιση μιας νέας συσκευής..." -#: ../js/ui/status/bluetooth.js:94 +#: ../js/ui/status/bluetooth.js:95 msgid "Bluetooth Settings" msgstr "Ρυθμίσεις Bluetooth" -#: ../js/ui/status/bluetooth.js:191 +#: ../js/ui/status/bluetooth.js:192 msgid "Connection" msgstr "Σύνδεση" -#: ../js/ui/status/bluetooth.js:227 +#: ../js/ui/status/bluetooth.js:228 msgid "Send Files..." msgstr "Αποστολή αρχείων..." -#: ../js/ui/status/bluetooth.js:232 +#: ../js/ui/status/bluetooth.js:233 msgid "Browse Files..." msgstr "Εξερεύνηση αρχείων..." -#: ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:242 msgid "Error browsing device" msgstr "Σφάλμα περιήγησης συσκευής" -#: ../js/ui/status/bluetooth.js:242 +#: ../js/ui/status/bluetooth.js:243 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "" "Δεν είναι δυνατή η περιήγηση στην αιτούμενη συσκευή, το σφάλμα είναι '%s'" -#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 +#: ../js/ui/status/bluetooth.js:251 msgid "Keyboard Settings" msgstr "Ρυθμίσεις πληκτρολογίου" -#: ../js/ui/status/bluetooth.js:255 +#: ../js/ui/status/bluetooth.js:256 msgid "Mouse Settings" msgstr "Ρυθμίσεις ποντικιού" -#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 msgid "Sound Settings" msgstr "Ρυθμίσεις ήχου" -#: ../js/ui/status/bluetooth.js:336 ../js/ui/status/bluetooth.js:370 -#: ../js/ui/status/bluetooth.js:410 ../js/ui/status/bluetooth.js:443 -msgid "Bluetooth Agent" -msgstr "Υποστήριξη Bluetooth" - -#: ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" msgstr "Αίτηση διαπίστευσης από %s" -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:378 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Η συσκευή %s επιθυμεί πρόσβαση στην υπηρεσία '%s'" -#: ../js/ui/status/bluetooth.js:379 +#: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" msgstr "Να επιτρέπεται πάντα η πρόσβαση" -#: ../js/ui/status/bluetooth.js:380 +#: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" msgstr "Μόνο για αυτή τη φορά" -#: ../js/ui/status/bluetooth.js:381 +#: ../js/ui/status/bluetooth.js:382 msgid "Reject" msgstr "Απόρριψη" -#: ../js/ui/status/bluetooth.js:411 +#: ../js/ui/status/bluetooth.js:412 #, c-format msgid "Pairing confirmation for %s" msgstr "Επιβεβαίωση σύζευξης για %s" -#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Η συσκευή %s επιθυμεί να συνδεθεί με αυτόν τον υπολογιστή" -#: ../js/ui/status/bluetooth.js:418 +#: ../js/ui/status/bluetooth.js:419 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Παρακαλώ επιβεβαιώστε αν το PIN '%s' ταιριάζει με αυτό στη συσκευή." -#: ../js/ui/status/bluetooth.js:420 +#: ../js/ui/status/bluetooth.js:421 msgid "Matches" msgstr "Ταιριάζει" -#: ../js/ui/status/bluetooth.js:421 +#: ../js/ui/status/bluetooth.js:422 msgid "Does not match" msgstr "Δεν ταιριάζει" -#: ../js/ui/status/bluetooth.js:444 +#: ../js/ui/status/bluetooth.js:445 #, c-format msgid "Pairing request for %s" msgstr "Αίτηση σύζευξης για %s" -#: ../js/ui/status/bluetooth.js:452 +#: ../js/ui/status/bluetooth.js:453 msgid "Please enter the PIN mentioned on the device." msgstr "Παρακαλώ εισάγετε το PIN που αναφέρεται στην συσκευή" -#: ../js/ui/status/bluetooth.js:468 +#: ../js/ui/status/bluetooth.js:469 msgid "OK" msgstr "ΟΚ" +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "" + +#: ../js/ui/status/keyboard.js:76 +#, fuzzy +msgid "Localization Settings" +msgstr "Ρυθμίσεις ήχου" + #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Ρυθμίσεις τροφοδοσίας" -#: ../js/ui/status/power.js:112 +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "" + +#: ../js/ui/status/power.js:117 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -769,102 +859,102 @@ msgstr[0] "%d ώρα απομένει" msgstr[1] "%d ώρες απομένουν" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:115 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d %s %d %s remaining" msgstr "Απομένουν %d %s %d %s " -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "hour" msgid_plural "hours" msgstr[0] "ώρα" msgstr[1] "ώρες" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "minute" msgid_plural "minutes" msgstr[0] "λεπτό" msgstr[1] "λεπτά" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:125 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d λεπτό απομένει" msgstr[1] "%d λεπτά απομένουν" -#: ../js/ui/status/power.js:235 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "Τροφοδοσία AC" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "Μπαταρία φορητού" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "Οθόνη" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "Ποντίκι" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "Πληκτρολόγιο" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "Κινητό" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "Αναπαραγωγή πολυμέσων" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "Ταμπλέτα" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "Υπολογιστής" -#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Άγνωστο" -#: ../js/ui/status/volume.js:42 +#: ../js/ui/status/volume.js:44 msgid "Volume" msgstr "Ένταση ήχου" -#: ../js/ui/status/volume.js:55 +#: ../js/ui/status/volume.js:57 msgid "Microphone" msgstr "Μικρόφωνο" -#: ../js/ui/telepathyClient.js:561 +#: ../js/ui/telepathyClient.js:239 #, c-format msgid "%s is online." msgstr "Ο/η %s είναι συνδεδεμένος" -#: ../js/ui/telepathyClient.js:566 +#: ../js/ui/telepathyClient.js:244 #, c-format msgid "%s is offline." msgstr "Ο/η %s είναι αποσυνδεδεμένος" -#: ../js/ui/telepathyClient.js:569 +#: ../js/ui/telepathyClient.js:247 #, c-format msgid "%s is away." msgstr "Ο/η '%s' είναι εκτός. " -#: ../js/ui/telepathyClient.js:572 +#: ../js/ui/telepathyClient.js:250 #, c-format msgid "%s is busy." msgstr "%s είναι απασχολημένος/η" @@ -872,36 +962,33 @@ msgstr "%s είναι απασχολημένος/η" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. -#: ../js/ui/telepathyClient.js:666 +#: ../js/ui/telepathyClient.js:348 #, no-c-format msgid "Sent at %X on %A" msgstr "Στάλθηκε στις %A και ώρα %X" -#: ../js/ui/viewSelector.js:26 -msgid "Search your computer" -msgstr "Αναζήτηση στον υπολογιστή σας" +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:117 +msgid "Type to search..." +msgstr "" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "Αναζήτηση" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "Το %s ολοκλήρωσε την εκκίνηση " -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "Το '%s' είναι έτοιμο" -#: ../js/ui/workspacesView.js:244 -msgid "" -"Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "" -"Αδυναμία προσθήκης νέου χώρου εργασίας επειδή έχετε φτάσει το μέγιστο αριθμό " -"χώρων εργασίας." - -#: ../js/ui/workspacesView.js:260 -msgid "Can't remove the first workspace." -msgstr "Δεν είναι δυνατή η αφαίρεση του πρώτου χώρου εργασίας." - #. translators: #. * The number of sound outputs on a particular device #: ../src/gvc/gvc-mixer-control.c:1094 @@ -924,38 +1011,46 @@ msgstr[1] "%u είσοδοι" msgid "System Sounds" msgstr "Ήχοι συστήματος" -#: ../src/shell-global.c:1233 +#: ../src/main.c:395 +msgid "Print version" +msgstr "" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Λιγότερο από ένα λεπτό πριν" -#: ../src/shell-global.c:1237 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d λεπτό πριν" msgstr[1] "%d λεπτά πριν" -#: ../src/shell-global.c:1242 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ώρα πριν" msgstr[1] "%d ώρες πριν" -#: ../src/shell-global.c:1247 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ημέρα πριν" msgstr[1] "%d ημέρες πριν" -#: ../src/shell-global.c:1252 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d εβδομάδα πριν" msgstr[1] "%d εβδομάδες πριν" +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "" + #: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Προσωπικός φάκελος" @@ -966,10 +1061,6 @@ msgstr "Προσωπικός φάκελος" msgid "File System" msgstr "Σύστημα αρχείων" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "Αναζήτηση" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the @@ -979,3 +1070,90 @@ msgstr "Αναζήτηση" #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" + +#~ msgid "Clip the crosshairs at the center" +#~ msgstr "Περικοπή του σκοπεύτρου στο κέντρο" + +#~ msgid "Color of the crosshairs" +#~ msgstr "Χρώμα του σκόπευτρου" + +#~ msgid "" +#~ "Determines the length of the vertical and horizontal lines that make up " +#~ "the crosshairs." +#~ msgstr "" +#~ "Καθορίζει το μήκος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το " +#~ "σκόπευτρο" + +#~ msgid "Enable lens mode" +#~ msgstr "Ενεργοποίηση λειτουργίας φακού" + +#~ msgid "" +#~ "Enables/disables display of crosshairs centered on the magnified mouse " +#~ "sprite." +#~ msgstr "" +#~ "Ενεργοποιεί/απενεργοποιεί την εμφάνιση σκοπεύτρου στο δείκτη μεγέθυνσης " +#~ "του ποντικιού" + +#~ msgid "Length of the crosshairs" +#~ msgstr "Μήκος του σκοπεύτρου" + +#~ msgid "Magnification factor" +#~ msgstr "Παράγοντας μεγέθυνσης" + +#~ msgid "Mouse Tracking Mode" +#~ msgstr "Λειτουργία Mouse Tracking " + +#~ msgid "Opacity of the crosshairs" +#~ msgstr "Αδιαφάνεια του σκοπεύτρου" + +#~ msgid "Screen position" +#~ msgstr "Θέση οθόνης" + +#~ msgid "Scroll magnified contents beyond the edges of the desktop" +#~ msgstr "" +#~ "Κύλιση σε μεγεθυμένα περιεχόμενα που βρίσκονται έξω από την επιφάνεια" + +#~ msgid "Show or hide crosshairs" +#~ msgstr "Προβολή ή απόκρυψη του σκοπεύτρου" + +#~ msgid "Show or hide the magnifier" +#~ msgstr "Προβολή ή απόκρυψη του μεγεθυντή" + +#~ msgid "Show or hide the magnifier and all of its zoom regions." +#~ msgstr "Προβολή ή απόκρυψη του μεγεθυντή και όλων των περιοχών μεγέθυνσης" + +#~ msgid "" +#~ "The color of the the vertical and horizontal lines that make up the " +#~ "crosshairs." +#~ msgstr "" +#~ "Το χρώμα των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" + +#~ msgid "Thickness of the crosshairs" +#~ msgstr "Πάχος των γραμμών σκοπεύτρου" + +#~ msgid "" +#~ "Width of the vertical and horizontal lines that make up the crosshairs." +#~ msgstr "" +#~ " Το πάχος των κάθετων και οριζόντιων γραμμών που απαρτίζουν το σκόπευτρο" + +#~ msgid "PREFERENCES" +#~ msgstr "ΠΡΟΤΙΜΗΣΕΙΣ" + +#~ msgid "Shut Down..." +#~ msgstr "Τερματισμός..." + +#~ msgid "Bluetooth Agent" +#~ msgstr "Υποστήριξη Bluetooth" + +#~ msgid "Search your computer" +#~ msgstr "Αναζήτηση στον υπολογιστή σας" + +#~ msgid "" +#~ "Can't add a new workspace because maximum workspaces limit has been " +#~ "reached." +#~ msgstr "" +#~ "Αδυναμία προσθήκης νέου χώρου εργασίας επειδή έχετε φτάσει το μέγιστο " +#~ "αριθμό χώρων εργασίας." + +#~ msgid "Can't remove the first workspace." +#~ msgstr "Δεν είναι δυνατή η αφαίρεση του πρώτου χώρου εργασίας." From 8d14df0cede8e10278178c2ce2c55e5b649dd0f4 Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Tue, 8 Mar 2011 15:29:51 +0100 Subject: [PATCH 49/74] =?UTF-8?q?Updated=20Norwegian=20bokm=C3=A5l=20trans?= =?UTF-8?q?lation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- po/nb.po | 84 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/po/nb.po b/po/nb.po index 80649731d..6b4725551 100644 --- a/po/nb.po +++ b/po/nb.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell 2.91.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-06 13:39+0100\n" -"PO-Revision-Date: 2011-03-06 13:40+0100\n" +"POT-Creation-Date: 2011-03-08 15:24+0100\n" +"PO-Revision-Date: 2011-03-08 15:29+0100\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian Bokmål \n" "Language: \n" @@ -167,27 +167,27 @@ msgid "Execution of '%s' failed:" msgstr "Kjøring av «%s» feilet:" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:195 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "Alle" -#: ../js/ui/appDisplay.js:285 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "PROGRAMMER" -#: ../js/ui/appDisplay.js:311 +#: ../js/ui/appDisplay.js:350 msgid "SETTINGS" msgstr "INNSTILLINGER" -#: ../js/ui/appDisplay.js:565 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "Nytt vindu" -#: ../js/ui/appDisplay.js:568 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Fjern fra favoritter" -#: ../js/ui/appDisplay.js:569 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Legg til i favoritter" @@ -347,7 +347,7 @@ msgstr "Denne uken" msgid "Next week" msgstr "Neste uke" -#: ../js/ui/dash.js:174 +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 msgid "Remove" msgstr "Fjern" @@ -355,54 +355,54 @@ msgstr "Fjern" msgid "Date and Time Settings" msgstr "Innstillinger for dato og klokkeslett" -#: ../js/ui/dateMenu.js:110 +#: ../js/ui/dateMenu.js:111 msgid "Open Calendar" msgstr "Åpne kalender" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:162 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R.%S" -#: ../js/ui/dateMenu.js:163 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %e %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:167 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a %R.%S" -#: ../js/ui/dateMenu.js:168 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:175 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l.%M.%S %p" -#: ../js/ui/dateMenu.js:176 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %e %b, %l.%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:180 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %p" -#: ../js/ui/dateMenu.js:181 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a %l.%M %p" #. 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:207 +#: ../js/ui/dateMenu.js:209 msgid "%A %B %e, %Y" msgstr "%a %e %B, %Y" @@ -512,7 +512,11 @@ msgstr "Vis kildekode" msgid "Web Page" msgstr "Nettside" -#: ../js/ui/messageTray.js:1907 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "Åpne" + +#: ../js/ui/messageTray.js:1963 msgid "System Information" msgstr "Systeminformasjon" @@ -528,18 +532,28 @@ msgstr "Vinduer" msgid "Applications" msgstr "Programmer" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "Favoritter" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:531 +#: ../js/ui/panel.js:532 #, c-format msgid "Quit %s" msgstr "Avslutt %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:892 +#: ../js/ui/panel.js:893 msgid "Activities" msgstr "Aktiviteter" +#: ../js/ui/panel.js:994 +msgid "Panel" +msgstr "Panel" + #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" @@ -562,7 +576,7 @@ msgstr "STEDER & ENHETER" #. "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:612 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-intl" @@ -909,10 +923,14 @@ msgstr "Sendt %X på %A" #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. -#: ../js/ui/viewSelector.js:103 +#: ../js/ui/viewSelector.js:117 msgid "Type to search..." msgstr "Skriv for å søke …" +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "Søk" + #: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" @@ -945,32 +963,36 @@ msgstr[1] "%u innganger" msgid "System Sounds" msgstr "Systemlyder" -#: ../src/shell-global.c:1298 +#: ../src/main.c:395 +msgid "Print version" +msgstr "Skriv ut versjon" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Mindre enn ett minutt siden" -#: ../src/shell-global.c:1302 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minutt siden" msgstr[1] "%d minutter siden" -#: ../src/shell-global.c:1307 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d time siden" msgstr[1] "%d timer siden" -#: ../src/shell-global.c:1312 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag siden" msgstr[1] "%d dager siden" -#: ../src/shell-global.c:1317 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -991,10 +1013,6 @@ msgstr "Hjemmemappe" msgid "File System" msgstr "Filsystem" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "Søk" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the From 026fc531bab507658b54f296b14f71f5d1723780 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 7 Mar 2011 12:47:07 -0500 Subject: [PATCH 50/74] StTextureCache: never return fullcolor icons for ST_ICON_SYMBOLIC g_themed_icon_new_with_default_fallbacks() does not do what we want with symbolic icons; if the user's icon theme is not "gnome", then it will end up preferring a non-symbolic icon from the higher-level theme over a symbolic icon from gnome-icon-theme-symbolic. If the shell requests a symbolic icon, and there is only a non-symbolic icon available, that should be considered a programmer error, just like requesting a non-existent icon name. So change the code to only look up "-symbolic" names when drawing an ST_ICON_SYMBOLIC icon. https://bugzilla.gnome.org/show_bug.cgi?id=644142 --- src/st/st-texture-cache.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index 52ce02ed0..405cc177a 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -1391,6 +1391,36 @@ st_texture_cache_load_sliced_image (StTextureCache *cache, * icon you are loading, use %ST_ICON_FULLCOLOR. */ +/* generates names like g_themed_icon_new_with_default_fallbacks(), + * but *only* symbolic names + */ +static char ** +symbolic_names_for_icon (const char *name) +{ + char **parts, **names; + int i; + + parts = g_strsplit (name, "-", -1); + names = g_new (char *, g_strv_length (parts) + 1); + for (i = 0; parts[i]; i++) + { + if (i == 0) + { + names[i] = g_strdup_printf ("%s-symbolic", parts[i]); + } + else + { + names[i] = g_strdup_printf ("%.*s-%s-symbolic", + (int) (strlen (names[i - 1]) - strlen ("-symbolic")), + names[i - 1], parts[i]); + } + } + names[i] = NULL; + + g_strfreev (parts); + return names; +} + /** * st_texture_cache_load_icon_name: * @cache: The texture cache instance @@ -1414,7 +1444,7 @@ st_texture_cache_load_icon_name (StTextureCache *cache, { ClutterActor *texture; GIcon *themed; - char *symbolic; + char **names; g_return_val_if_fail (!(icon_type == ST_ICON_SYMBOLIC && theme_node == NULL), NULL); @@ -1429,9 +1459,9 @@ st_texture_cache_load_icon_name (StTextureCache *cache, return CLUTTER_ACTOR (texture); break; case ST_ICON_SYMBOLIC: - symbolic = g_strconcat (name, "-symbolic", NULL); - themed = g_themed_icon_new_with_default_fallbacks ((const gchar*)symbolic); - g_free (symbolic); + names = symbolic_names_for_icon (name); + themed = g_themed_icon_new_from_names (names, -1); + g_strfreev (names); texture = load_gicon_with_colors (cache, themed, size, st_theme_node_get_icon_colors (theme_node)); g_object_unref (themed); From 84eb66d5aab0788f8ddfb2158e1af474f574de2d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Mon, 7 Mar 2011 14:14:02 -0500 Subject: [PATCH 51/74] StContainer: simplify focus navigation When navigating from a non-immediate descendant of a container, we were attempting to use clutter_actor_get_transformed_position() to get the exact position of that actor relative to the container, but this did not really make sense, since we would be using the position of the intermediate container when navigating back. https://bugzilla.gnome.org/show_bug.cgi?id=644134 --- src/st/st-container.c | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/src/st/st-container.c b/src/st/st-container.c index 2f7d095b1..24430d040 100644 --- a/src/st/st-container.c +++ b/src/st/st-container.c @@ -646,23 +646,9 @@ st_container_navigate_focus (StWidget *widget, * any child is inconsistently scaled, then the focus chain will * probably be unpredictable. */ - if (from) + if (focus_child) { - if (from == focus_child) - clutter_actor_get_allocation_box (focus_child, &sort_data.box); - else - { - float cx, cy, fx, fy, fw, fh; - - clutter_actor_get_transformed_position (CLUTTER_ACTOR (container), &cx, &cy); - clutter_actor_get_transformed_position (from, &fx, &fy); - clutter_actor_get_transformed_size (from, &fw, &fh); - - sort_data.box.x1 = fx - cx; - sort_data.box.x2 = fx - cx + fw; - sort_data.box.y1 = fy - cy; - sort_data.box.y2 = fy - cy + fh; - } + clutter_actor_get_allocation_box (focus_child, &sort_data.box); } else { From 49f6280645cdad7fa7f53633ce67ed5f7079a8dd Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 8 Mar 2011 11:47:14 -0500 Subject: [PATCH 52/74] src: add more stuff to gnome_shell_real_LDADD to work with libtools that are more strict about not allowing transitive dependencies --- src/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index 40ce5de08..1c3e1b68c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -140,7 +140,7 @@ libgnome_shell_la_gir_sources = \ gnome_shell_real_SOURCES = \ main.c gnome_shell_real_CPPFLAGS = $(gnome_shell_cflags) -gnome_shell_real_LDADD = libgnome-shell.la +gnome_shell_real_LDADD = libgnome-shell.la $(libgnome_shell_la_LIBADD) gnome_shell_real_DEPENDENCIES = libgnome-shell.la ######################################## From 3944df1bd24b7295180d33dba9ee7d531c1dddd4 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 8 Mar 2011 20:15:20 +0300 Subject: [PATCH 53/74] altTab: fix incorrect positioning with multiple monitors Calculate the position of the alt-tab popup correctly when primary.x != 0. This was accidentally broken by 614176b2691981c982e77b8a04b01ff02a670857 https://bugzilla.gnome.org/show_bug.cgi?id=644206 --- js/ui/altTab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 44fd39d1d..46ab9a325 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -87,7 +87,7 @@ AltTabPopup.prototype = { let [childMinHeight, childNaturalHeight] = this._appSwitcher.actor.get_preferred_height(primary.width - hPadding); let [childMinWidth, childNaturalWidth] = this._appSwitcher.actor.get_preferred_width(childNaturalHeight); childBox.x1 = Math.max(primary.x + leftPadding, primary.x + Math.floor((primary.width - childNaturalWidth) / 2)); - childBox.x2 = Math.min(primary.width - hPadding, childBox.x1 + childNaturalWidth); + childBox.x2 = Math.min(primary.x + primary.width - hPadding, childBox.x1 + childNaturalWidth); childBox.y1 = primary.y + Math.floor((primary.height - childNaturalHeight) / 2); childBox.y2 = childBox.y1 + childNaturalHeight; this._appSwitcher.actor.allocate(childBox, flags); From 76d788a186cd4ba959067882084cd15db426dae8 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 16 Feb 2011 21:05:20 +0100 Subject: [PATCH 54/74] windowManager: Add mechanism to block animations Add an API to allow blocking animations in situations where they aren't desireable. https://bugzilla.gnome.org/show_bug.cgi?id=642188 --- js/ui/windowManager.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index deca70ed3..a10608f48 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -93,6 +93,8 @@ WindowManager.prototype = { this._dimmedWindows = []; + this._animationBlockCount = 0; + this._switchData = null; this._shellwm.connect('kill-switch-workspace', Lang.bind(this, this._switchWorkspaceDone)); this._shellwm.connect('kill-window-effects', Lang.bind(this, function (shellwm, actor) { @@ -139,8 +141,16 @@ WindowManager.prototype = { this._shellwm.connect('keybinding::' + keybinding, handler); }, + blockAnimations: function() { + this._animationBlockCount++; + }, + + unblockAnimations: function() { + this._animationBlockCount = Math.max(0, this._animationBlockCount - 1); + }, + _shouldAnimate : function(actor) { - if (Main.overview.visible) + if (Main.overview.visible || this._animationsBlocked > 0) return false; if (actor && (actor.meta_window.get_window_type() != Meta.WindowType.NORMAL)) return false; From e054dd7813db5c28bc808ec47c618ba8b62432e2 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 16 Feb 2011 21:07:45 +0100 Subject: [PATCH 55/74] autoWorkspaces: Merge empty workspaces with the always empty one When closing a workspace due to the last window on that workspace closing, switch to the overview and show the always empty workspace rather then just going to the adjacent workspace. Based on a patch from Adel Gadllah . https://bugzilla.gnome.org/show_bug.cgi?id=642188 --- js/ui/main.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/js/ui/main.js b/js/ui/main.js index fc8acbd61..a57ba2433 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -262,12 +262,28 @@ function _checkWorkspaces() { emptyWorkspaces.push(false); } + let activeWorkspaceIndex = global.screen.get_active_workspace_index(); + let currentWorkspaceEmpty = emptyWorkspaces[activeWorkspaceIndex]; + + if (currentWorkspaceEmpty) { + // "Merge" the empty workspace we are removing with the one at the end + wm.blockAnimations(); + } + // Delete other empty workspaces; do it from the end to avoid index changes for (i = emptyWorkspaces.length - 2; i >= 0; i--) { if (emptyWorkspaces[i]) global.screen.remove_workspace(_workspaces[i], global.get_current_time()); } + if (currentWorkspaceEmpty) { + global.screen.get_workspace_by_index(global.screen.n_workspaces - 1).activate(global.get_current_time()); + wm.unblockAnimations(); + + if (!overview.visible) + overview.show(); + } + _checkWorkspacesId = 0; return false; } From e9f2aa6010adb19396ea27cc81025016f68a9732 Mon Sep 17 00:00:00 2001 From: Bruce Cowan Date: Tue, 8 Mar 2011 19:53:18 +0000 Subject: [PATCH 56/74] Updated British English translation --- po/en_GB.po | 1118 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 861 insertions(+), 257 deletions(-) diff --git a/po/en_GB.po b/po/en_GB.po index 0c58e45f3..c1650a51b 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -2,21 +2,21 @@ # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Philip Withnall , 2009, 2010. -# Bruce Cowan , 2010. +# Bruce Cowan , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-31 09:25+0100\n" -"PO-Revision-Date: 2010-03-20 22:32+0100\n" -"Last-Translator: Philip Withnall \n" +"POT-Creation-Date: 2011-03-08 19:51+0000\n" +"PO-Revision-Date: 2011-03-08 19:50+0100\n" +"Last-Translator: Bruce Cowan \n" "Language-Team: British English \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.5.2\n" +"X-Generator: Virtaal 0.6.1\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" @@ -26,14 +26,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Window management and application launching" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Clock" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Customise the panel clock" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -43,66 +35,51 @@ msgstr "" "dialogue." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Custom format of the clock" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "Enable internal tools useful for developers and testers from Alt+F2" -#: ../data/org.gnome.shell.gschema.xml.in.h:4 +#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "File extension used for storing the screencast" -#: ../data/org.gnome.shell.gschema.xml.in.h:5 +#: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "Framerate used for recording screencasts." -#: ../data/org.gnome.shell.gschema.xml.in.h:6 +#: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" -"GNOME Shell extensions have a 'uuid' property; this key lists extensions which " -"should not be loaded." +"GNOME Shell extensions have a 'uuid' property; this key lists extensions " +"which should not be loaded." -#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "History for command (Alt+F2) dialogue" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "History for the looking glass dialog" +msgstr "History for the looking glass dialogue" + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Hour format" +msgid "If true, display date in the clock, in addition to time." +msgstr "If true, display date in the clock, in addition to time." #: ../data/org.gnome.shell.gschema.xml.in.h:9 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." -msgstr "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." +msgid "If true, display seconds in time." +msgstr "If true, display seconds in time." #: ../data/org.gnome.shell.gschema.xml.in.h:10 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." -msgstr "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." msgstr "If true, display the ISO week date in the calendar." -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "List of desktop file IDs for favourite applications" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "Overview workspace view mode" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " @@ -111,30 +88,34 @@ msgid "" "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." msgstr "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " "the recorded video is recorded. It will normally have a unconnected source " "pad; output from that pad will be written into the output file. However the " -"pipeline can also take care of its own output — this might be used to send " -"the output to an icecast server via shout2send or similar. When unset, or set " +"pipeline can also take care of its own output - this might be used to send " +"the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Show date in clock" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Show the week date in the calendar" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Show time with seconds" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -142,7 +123,7 @@ msgstr "" "The applications corresponding to these identifiers will be displayed in the " "favourites area." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " @@ -152,7 +133,7 @@ msgstr "" "current date, and use this extension. It should be changed when recording to " "a different container format." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -160,19 +141,11 @@ msgstr "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames per second." -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "The GStreamer pipeline used to encode the screencast" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 -msgid "" -"The selected workspace view mode in the overview. Supported values are " -"\"single\" and \"grid\"." -msgstr "" -"The selected workspace view mode in the overview. Supported values are " -"\"single\" and \"grid\"." - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -184,372 +157,1006 @@ msgstr "" "want to disable this for privacy reasons. Please note that doing so won't " "remove existing data." -#: ../data/org.gnome.shell.gschema.xml.in.h:24 -msgid "" -"This key specifies the format used by the panel clock when the format key is " -"set to \"custom\". You can use conversion specifiers understood by strftime" -"() to obtain a specific format. See the strftime() manual for more " -"information." -msgstr "" -"This key specifies the format used by the panel clock when the format key is " -"set to \"custom\". You can use conversion specifiers understood by strftime" -"() to obtain a specific format. See the strftime() manual for more " -"information." - -#: ../data/org.gnome.shell.gschema.xml.in.h:25 -msgid "" -"This key specifies the hour format used by the panel clock. Possible values " -"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", " -"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set " -"to \"custom\", the clock will display time according to the format specified " -"in the custom_format key. Note that if set to either \"unix\" or \"custom\", " -"the show_date and show_seconds keys are ignored." -msgstr "" -"This key specifies the hour format used by the panel clock. Possible values " -"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", " -"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set " -"to \"custom\", the clock will display time according to the format specified " -"in the custom_format key. Note that if set to either \"unix\" or \"custom\", " -"the show_date and show_seconds keys are ignored." - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "UUIDs of extensions to disable" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Whether to collect statistics about application usage" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Clock Format" +#: ../data/org.gnome.shell.gschema.xml.in.h:24 +msgid "disabled OpenSearch providers" +msgstr "disabled OpenSearch providers" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Clock Preferences" +#: ../js/misc/util.js:86 +msgid "Command not found" +msgstr "Command not found" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Panel Display" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:113 +msgid "Could not parse command:" +msgstr "Could not parse command:" -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Show seco_nds" +#: ../js/misc/util.js:135 +msgid "No such application" +msgstr "No such application" -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Show the _date" +#: ../js/misc/util.js:148 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Execution of '%s' failed:" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_12 hour format" +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:226 +msgid "All" +msgstr "All" -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_24 hour format" - -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:778 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "APPLICATIONS" -#: ../js/ui/appDisplay.js:416 -msgid "PREFERENCES" -msgstr "PREFERENCES" +#: ../js/ui/appDisplay.js:350 +msgid "SETTINGS" +msgstr "SETTINGS" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "New Window" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Remove from Favourites" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Add to Favourites" -#: ../js/ui/appDisplay.js:1033 -msgid "Drag here to add favorites" -msgstr "Drag here to add favourites" - -#: ../js/ui/appFavorites.js:88 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "%s has been added to your favourites." -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "%s has been removed from your favourites." -#: ../js/ui/dash.js:142 -msgid "Find" -msgstr "Find" +#. 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:66 +msgctxt "event list time" +msgid "All Day" +msgstr "All Day" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "Searching…" +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:71 +msgctxt "event list time" +msgid "%H:%M" +msgstr "%H:%M" -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "No matching results." +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:78 +msgctxt "event list time" +msgid "%l:%M %p" +msgstr "%l:%M %p" -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:797 ../js/ui/placeDisplay.js:554 -msgid "PLACES & DEVICES" -msgstr "PLACES & DEVICES" +#. 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:118 +msgctxt "grid sunday" +msgid "S" +msgstr "S" -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 -msgid "RECENT ITEMS" -msgstr "RECENT ITEMS" +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:120 +msgctxt "grid monday" +msgid "M" +msgstr "M" -#: ../js/ui/lookingGlass.js:552 -msgid "No extensions installed" -msgstr "No extensions installed" +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:122 +msgctxt "grid tuesday" +msgid "T" +msgstr "T" -#: ../js/ui/lookingGlass.js:589 -msgid "Enabled" -msgstr "Enabled" +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:124 +msgctxt "grid wednesday" +msgid "W" +msgstr "W" -#: ../js/ui/lookingGlass.js:591 -msgid "Disabled" -msgstr "Disabled" +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:126 +msgctxt "grid thursday" +msgid "T" +msgstr "T" -#: ../js/ui/lookingGlass.js:593 -msgid "Error" -msgstr "Error" +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:128 +msgctxt "grid friday" +msgid "F" +msgstr "F" -#: ../js/ui/lookingGlass.js:595 -msgid "Out of date" -msgstr "Out of date" +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:130 +msgctxt "grid saturday" +msgid "S" +msgstr "S" -#: ../js/ui/lookingGlass.js:620 -msgid "View Source" -msgstr "View Source" +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:143 +msgctxt "list sunday" +msgid "Su" +msgstr "Su" -#: ../js/ui/lookingGlass.js:626 -msgid "Web Page" -msgstr "Web Page" +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:145 +msgctxt "list monday" +msgid "M" +msgstr "M" -#: ../js/ui/overview.js:160 -msgid "Undo" -msgstr "Undo" +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:147 +msgctxt "list tuesday" +msgid "T" +msgstr "Tu" -#. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 -#, c-format -msgid "Quit %s" -msgstr "Quit %s" +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:149 +msgctxt "list wednesday" +msgid "W" +msgstr "W" -#: ../js/ui/panel.js:498 -msgid "Preferences" -msgstr "Preferences" +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:151 +msgctxt "list thursday" +msgid "Th" +msgstr "Th" + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:153 +msgctxt "list friday" +msgid "F" +msgstr "F" + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:155 +msgctxt "list saturday" +msgid "S" +msgstr "Sa" + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:704 +msgid "Nothing Scheduled" +msgstr "Nothing Scheduled" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:720 +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "%A, %d %B" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:723 +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "%A, %d %B, %Y" + +#: ../js/ui/calendar.js:733 +msgid "Today" +msgstr "Today" + +#: ../js/ui/calendar.js:737 +msgid "Tomorrow" +msgstr "Tomorrow" + +#: ../js/ui/calendar.js:746 +msgid "This week" +msgstr "This week" + +#: ../js/ui/calendar.js:754 +msgid "Next week" +msgstr "Next week" + +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 +msgid "Remove" +msgstr "Remove" + +#: ../js/ui/dateMenu.js:91 +msgid "Date and Time Settings" +msgstr "Date and Time Settings" + +#: ../js/ui/dateMenu.js:111 +msgid "Open Calendar" +msgstr "Open Calendar" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R:%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %e %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:589 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:590 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:597 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l:%M:%S %p" -#: ../js/ui/panel.js:598 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %e %b, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:602 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:603 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" +#. 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:209 +msgid "%A %B %e, %Y" +msgstr "%A %e %B, %Y" + +#: ../js/ui/docDisplay.js:19 +msgid "RECENT ITEMS" +msgstr "RECENT ITEMS" + +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Log Out %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Log Out" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "Click Log Out to quit these applications and log out of the system." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "%s will be logged out automatically in %d seconds." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "You will be logged out automatically in %d seconds." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Logging out of the system." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Shut Down" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "Click Shut Down to quit these applications and shut down the system." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "The system will shut down automatically in %d seconds." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Shutting down the system." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Restart" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "Click Restart to quit these applications and restart the system." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "The system will restart automatically in %d seconds." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Restarting the system." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Confirm" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 +msgid "Cancel" +msgstr "Cancel" + +#: ../js/ui/lookingGlass.js:588 +msgid "No extensions installed" +msgstr "No extensions installed" + +#: ../js/ui/lookingGlass.js:625 +msgid "Enabled" +msgstr "Enabled" + +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 +msgid "Disabled" +msgstr "Disabled" + +#: ../js/ui/lookingGlass.js:629 +msgid "Error" +msgstr "Error" + +#: ../js/ui/lookingGlass.js:631 +msgid "Out of date" +msgstr "Out of date" + +#: ../js/ui/lookingGlass.js:656 +msgid "View Source" +msgstr "View Source" + +#: ../js/ui/lookingGlass.js:662 +msgid "Web Page" +msgstr "Web Page" + +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "Open" + +#: ../js/ui/messageTray.js:1963 +msgid "System Information" +msgstr "System Information" + +#: ../js/ui/overview.js:88 +msgid "Undo" +msgstr "Undo" + +#: ../js/ui/overview.js:183 +msgid "Windows" +msgstr "Windows" + +#: ../js/ui/overview.js:186 +msgid "Applications" +msgstr "Applications" + +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "Dash" + +#. TODO - _quit() doesn't really work on apps in state STARTING yet +#: ../js/ui/panel.js:532 +#, c-format +msgid "Quit %s" +msgstr "Quit %s" + #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:748 +#: ../js/ui/panel.js:893 msgid "Activities" msgstr "Activities" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/panel.js:994 +msgid "Panel" +msgstr "Panel" + +#: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "Failed to unmount '%s'" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "Retry" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "Connect to…" -#. Translators: the "ON" and "OFF" strings are used in the -#. toggle switches in the status area menus, and must be SHORT. -#. If you don't have suitable short words, consider initials, -#. "0"/"1", "⚪"/"⚫", etc. -#: ../js/ui/popupMenu.js:30 ../js/ui/popupMenu.js:40 -msgid "ON" -msgstr "ON" +#: ../js/ui/placeDisplay.js:409 +msgid "PLACES & DEVICES" +msgstr "PLACES & DEVICES" -#: ../js/ui/popupMenu.js:31 ../js/ui/popupMenu.js:45 -msgid "OFF" -msgstr "OFF" +#. Translators: this MUST be either "toggle-switch-us" +#. (for toggle switches containing the English words +#. "ON" and "OFF") or "toggle-switch-intl" (for toggle +#. switches containing "◯" and "|"). Other values will +#. simply result in invisible toggle switches. +#: ../js/ui/popupMenu.js:618 +msgid "toggle-switch-us" +msgstr "toggle-switch-us" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Please enter a command:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Execution of '%s' failed:" +#: ../js/ui/searchDisplay.js:283 +msgid "Searching..." +msgstr "Searching…" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/searchDisplay.js:297 +msgid "No matching results." +msgstr "No matching results." + +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "Power Off…" + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +msgid "Suspend" +msgstr "Suspend" + +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "Available" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "Busy" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Invisible" +#: ../js/ui/statusMenu.js:138 +msgid "My Account" +msgstr "My Account" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Account Information…" +#: ../js/ui/statusMenu.js:142 +msgid "System Settings" +msgstr "System Settings" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "System Preferences…" - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Lock Screen" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Switch User" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Log Out…" -#: ../js/ui/statusMenu.js:130 -msgid "Shut Down..." -msgstr "Shut Down…" +#: ../js/ui/status/accessibility.js:62 +msgid "Zoom" +msgstr "Zoom" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/status/accessibility.js:69 +msgid "Screen Reader" +msgstr "Screen Reader" + +#: ../js/ui/status/accessibility.js:73 +msgid "Screen Keyboard" +msgstr "Screen Keyboard" + +#: ../js/ui/status/accessibility.js:77 +msgid "Visual Alerts" +msgstr "Visual Alerts" + +#: ../js/ui/status/accessibility.js:80 +msgid "Sticky Keys" +msgstr "Sticky Keys" + +#: ../js/ui/status/accessibility.js:83 +msgid "Slow Keys" +msgstr "Slow Keys" + +#: ../js/ui/status/accessibility.js:86 +msgid "Bounce Keys" +msgstr "Bounce Keys" + +#: ../js/ui/status/accessibility.js:89 +msgid "Mouse Keys" +msgstr "Mouse Keys" + +#: ../js/ui/status/accessibility.js:93 +msgid "Universal Access Settings" +msgstr "Universal Access Settings" + +#: ../js/ui/status/accessibility.js:145 +msgid "High Contrast" +msgstr "High Contrast" + +#: ../js/ui/status/accessibility.js:182 +msgid "Large Text" +msgstr "Large Text" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Visibility" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Send Files to Device…" + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Setup a New Device…" + +#: ../js/ui/status/bluetooth.js:95 +msgid "Bluetooth Settings" +msgstr "Bluetooth Settings" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Connection" +msgstr "Connection" + +#: ../js/ui/status/bluetooth.js:228 +msgid "Send Files..." +msgstr "Send Files…" + +#: ../js/ui/status/bluetooth.js:233 +msgid "Browse Files..." +msgstr "Browse Files…" + +#: ../js/ui/status/bluetooth.js:242 +msgid "Error browsing device" +msgstr "Error browsing device" + +#: ../js/ui/status/bluetooth.js:243 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "The requested device cannot be browsed, error is '%s'" + +#: ../js/ui/status/bluetooth.js:251 +msgid "Keyboard Settings" +msgstr "Keyboard Settings" + +#: ../js/ui/status/bluetooth.js:256 +msgid "Mouse Settings" +msgstr "Mouse Settings" + +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 +msgid "Sound Settings" +msgstr "Sound Settings" + +#: ../js/ui/status/bluetooth.js:372 +#, c-format +msgid "Authorization request from %s" +msgstr "Authorisation request from %s" + +#: ../js/ui/status/bluetooth.js:378 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Device %s wants access to the service '%s'" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Always grant access" +msgstr "Always grant access" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Grant this time only" +msgstr "Grant this time only" + +#: ../js/ui/status/bluetooth.js:382 +msgid "Reject" +msgstr "Reject" + +#: ../js/ui/status/bluetooth.js:412 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Pairing confirmation for %s" + +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Device %s wants to pair with this computer" + +#: ../js/ui/status/bluetooth.js:419 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Please confirm whether the PIN '%s' matches the one on the device." + +#: ../js/ui/status/bluetooth.js:421 +msgid "Matches" +msgstr "Matches" + +#: ../js/ui/status/bluetooth.js:422 +msgid "Does not match" +msgstr "Does not match" + +#: ../js/ui/status/bluetooth.js:445 +#, c-format +msgid "Pairing request for %s" +msgstr "Pairing request for %s" + +#: ../js/ui/status/bluetooth.js:453 +msgid "Please enter the PIN mentioned on the device." +msgstr "Please enter the PIN mentioned on the device." + +#: ../js/ui/status/bluetooth.js:469 +msgid "OK" +msgstr "OK" + +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "Show Keyboard Layout…" + +#: ../js/ui/status/keyboard.js:76 +msgid "Localization Settings" +msgstr "Localisation Settings" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Power Settings" + +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "Estimating…" + +#: ../js/ui/status/power.js:117 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "%d hour remaining" +msgstr[1] "%d hours remaining" + +#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d %s %d %s remaining" +msgstr "%d %s %d %s remaining" + +#: ../js/ui/status/power.js:122 +msgid "hour" +msgid_plural "hours" +msgstr[0] "hour" +msgstr[1] "hours" + +#: ../js/ui/status/power.js:122 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minute" +msgstr[1] "minutes" + +#: ../js/ui/status/power.js:125 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "%d minute remaining" +msgstr[1] "%d minutes remaining" + +#: ../js/ui/status/power.js:227 +msgid "AC adapter" +msgstr "AC adapter" + +#: ../js/ui/status/power.js:229 +msgid "Laptop battery" +msgstr "Laptop battery" + +#: ../js/ui/status/power.js:231 +msgid "UPS" +msgstr "UPS" + +#: ../js/ui/status/power.js:233 +msgid "Monitor" +msgstr "Monitor" + +#: ../js/ui/status/power.js:235 +msgid "Mouse" +msgstr "Mouse" + +#: ../js/ui/status/power.js:237 +msgid "Keyboard" +msgstr "Keyboard" + +#: ../js/ui/status/power.js:239 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:241 +msgid "Cell phone" +msgstr "Mobile phone" + +#: ../js/ui/status/power.js:243 +msgid "Media player" +msgstr "Media player" + +#: ../js/ui/status/power.js:245 +msgid "Tablet" +msgstr "Tablet" + +#: ../js/ui/status/power.js:247 +msgid "Computer" +msgstr "Computer" + +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 +msgid "Unknown" +msgstr "Unknown" + +#: ../js/ui/status/volume.js:44 +msgid "Volume" +msgstr "Volume" + +#: ../js/ui/status/volume.js:57 +msgid "Microphone" +msgstr "Microphone" + +#: ../js/ui/telepathyClient.js:239 +#, c-format +msgid "%s is online." +msgstr "%s is online." + +#: ../js/ui/telepathyClient.js:244 +#, c-format +msgid "%s is offline." +msgstr "%s is offline." + +#: ../js/ui/telepathyClient.js:247 +#, c-format +msgid "%s is away." +msgstr "%s is away." + +#: ../js/ui/telepathyClient.js:250 +#, c-format +msgid "%s is busy." +msgstr "%s is busy." + +#. Translators: this is a time format string followed by a date. +#. If applicable, replace %X with a strftime format valid for your +#. locale, without seconds. +#: ../js/ui/telepathyClient.js:348 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Sent at %X on %A" + +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:117 +msgid "Type to search..." +msgstr "Type to search…" + +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "Search" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s has finished starting" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "'%s' is ready" -#: ../js/ui/workspacesView.js:230 -msgid "" -"Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "" -"Can't add a new workspace because maximum workspaces limit has been reached." +#. translators: +#. * The number of sound outputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1094 +#, c-format +msgid "%u Output" +msgid_plural "%u Outputs" +msgstr[0] "%u Output" +msgstr[1] "%u Outputs" -#: ../js/ui/workspacesView.js:247 -msgid "Can't remove the first workspace." -msgstr "Can't remove the first workspace." +#. translators: +#. * The number of sound inputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1104 +#, c-format +msgid "%u Input" +msgid_plural "%u Inputs" +msgstr[0] "%u Input" +msgstr[1] "%u Inputs" -#: ../src/shell-global.c:1105 +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "System Sounds" + +#: ../src/main.c:395 +msgid "Print version" +msgstr "Print version" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Less than a minute ago" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minute ago" msgstr[1] "%d minutes ago" -#: ../src/shell-global.c:1114 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d hour ago" msgstr[1] "%d hours ago" -#: ../src/shell-global.c:1119 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d day ago" msgstr[1] "%d days ago" -#: ../src/shell-global.c:1124 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d week ago" msgstr[1] "%d weeks ago" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "Authentication dialogue was dismissed by the user" + +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Home Folder" #. Translators: this is the same string as the one found in #. * nautilus -#: ../src/shell-uri-util.c:104 +#: ../src/shell-util.c:104 msgid "File System" msgstr "File System" -#: ../src/shell-uri-util.c:250 -msgid "Search" -msgstr "Search" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. -#: ../src/shell-uri-util.c:300 +#: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "Clock" + +#~ msgid "Customize the panel clock" +#~ msgstr "Customise the panel clock" + +#~ msgid "Custom format of the clock" +#~ msgstr "Custom format of the clock" + +#~ msgid "Hour format" +#~ msgstr "Hour format" + +#~ msgid "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." +#~ msgstr "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." + +#~ msgid "Overview workspace view mode" +#~ msgstr "Overview workspace view mode" + +#~ msgid "" +#~ "The selected workspace view mode in the overview. Supported values are " +#~ "\"single\" and \"grid\"." +#~ msgstr "" +#~ "The selected workspace view mode in the overview. Supported values are " +#~ "\"single\" and \"grid\"." + +#~ msgid "" +#~ "This key specifies the format used by the panel clock when the format key " +#~ "is set to \"custom\". You can use conversion specifiers understood by " +#~ "strftime() to obtain a specific format. See the strftime() manual for " +#~ "more information." +#~ msgstr "" +#~ "This key specifies the format used by the panel clock when the format key " +#~ "is set to \"custom\". You can use conversion specifiers understood by " +#~ "strftime() to obtain a specific format. See the strftime() manual for " +#~ "more information." + +#~ msgid "" +#~ "This key specifies the hour format used by the panel clock. Possible " +#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " +#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " +#~ "1970-01-01. If set to \"custom\", the clock will display time according " +#~ "to the format specified in the custom_format key. Note that if set to " +#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " +#~ "ignored." +#~ msgstr "" +#~ "This key specifies the hour format used by the panel clock. Possible " +#~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " +#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " +#~ "1970-01-01. If set to \"custom\", the clock will display time according " +#~ "to the format specified in the custom_format key. Note that if set to " +#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " +#~ "ignored." + +#~ msgid "Clock Format" +#~ msgstr "Clock Format" + +#~ msgid "Clock Preferences" +#~ msgstr "Clock Preferences" + +#~ msgid "Panel Display" +#~ msgstr "Panel Display" + +#~ msgid "Show seco_nds" +#~ msgstr "Show seco_nds" + +#~ msgid "Show the _date" +#~ msgstr "Show the _date" + +#~ msgid "_12 hour format" +#~ msgstr "_12 hour format" + +#~ msgid "_24 hour format" +#~ msgstr "_24 hour format" + +#~ msgid "PREFERENCES" +#~ msgstr "PREFERENCES" + +#~ msgid "Drag here to add favorites" +#~ msgstr "Drag here to add favourites" + +#~ msgid "Find" +#~ msgstr "Find" + +#~ msgid "Preferences" +#~ msgstr "Preferences" + +#~ msgid "ON" +#~ msgstr "ON" + +#~ msgid "OFF" +#~ msgstr "OFF" + +#~ msgid "Invisible" +#~ msgstr "Invisible" + +#~ msgid "System Preferences..." +#~ msgstr "System Preferences…" + +#~ msgid "" +#~ "Can't add a new workspace because maximum workspaces limit has been " +#~ "reached." +#~ msgstr "" +#~ "Can't add a new workspace because maximum workspaces limit has been " +#~ "reached." + +#~ msgid "Can't remove the first workspace." +#~ msgstr "Can't remove the first workspace." + #~ msgid "Sidebar" #~ msgstr "Sidebar" -#~ msgid "%H:%M" -#~ msgstr "%H:%M" - -#~ msgid "Applications" -#~ msgstr "Applications" - #~ msgid "Recent Documents" #~ msgstr "Recent Documents" @@ -565,9 +1172,6 @@ msgstr "%1$s: %2$s" #~ msgid "SEARCH RESULTS" #~ msgstr "SEARCH RESULTS" -#~ msgid "Unknown" -#~ msgstr "Unknown" - #~ msgid "Can't lock screen: %s" #~ msgstr "Can't lock screen: %s" From edabafc0fcb49315fda8e792faa50d8dac890742 Mon Sep 17 00:00:00 2001 From: Neil Perry Date: Tue, 8 Mar 2011 21:00:39 +0000 Subject: [PATCH 57/74] gnome-shell.modules: update the git repository for telepathy-glib Telepathy repositories moved to freedesktop.org: http://lists.freedesktop.org/archives/telepathy/2011-February/005291.html https://bugzilla.gnome.org/show_bug.cgi?id=644239 --- tools/build/gnome-shell.modules | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules index e9f1407a8..3f51fa2ac 100644 --- a/tools/build/gnome-shell.modules +++ b/tools/build/gnome-shell.modules @@ -16,8 +16,8 @@ - + @@ -251,7 +251,7 @@ - + From 69d6ae41415b478abf6598fc80d40f4ade7064c9 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 8 Mar 2011 20:46:43 +0300 Subject: [PATCH 58/74] panel: prevent blink of current app indicator If new current app is null, show animation of disappearing old. https://bugzilla.gnome.org/show_bug.cgi?id=615099 --- js/ui/panel.js | 64 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index 3894539f0..c08c3e834 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -244,6 +244,10 @@ AppMenuButton.prototype = { let bin = new St.Bin({ name: 'appMenu' }); this.actor.set_child(bin); + + this.actor.reactive = false; + this._targetIsCurrent = false; + this._container = new Shell.GenericContainer(); bin.set_child(this._container); this._container.connect('get-preferred-width', Lang.bind(this, this._getContentPreferredWidth)); @@ -501,13 +505,6 @@ AppMenuButton.prototype = { lastStartedApp = this._startingApps[i]; let focusedApp = tracker.focus_app; - let targetApp = focusedApp != null ? focusedApp : lastStartedApp; - if (targetApp == this._targetApp) { - if (targetApp && targetApp.get_state() != Shell.AppState.STARTING) - this.stopAnimation(); - return; - } - this._stopAnimation(); if (!focusedApp) { // If the app has just lost focus to the panel, pretend @@ -517,27 +514,56 @@ AppMenuButton.prototype = { return; } + let targetApp = focusedApp != null ? focusedApp : lastStartedApp; + + if (targetApp == null) { + if (!this._targetIsCurrent) + return; + + this.actor.reactive = false; + this._targetIsCurrent = false; + + Tweener.removeTweens(this.actor); + Tweener.addTween(this.actor, { opacity: 0, + time: Overview.ANIMATION_TIME, + transition: 'easeOutQuad' }); + return; + } + + if (!this._targetIsCurrent) { + this.actor.reactive = true; + this._targetIsCurrent = true; + + Tweener.removeTweens(this.actor); + Tweener.addTween(this.actor, { opacity: 255, + time: Overview.ANIMATION_TIME, + transition: 'easeOutQuad' }); + } + + if (targetApp == this._targetApp) { + if (targetApp && targetApp.get_state() != Shell.AppState.STARTING) + this.stopAnimation(); + return; + } + this._stopAnimation(); + if (this._iconBox.child != null) this._iconBox.child.destroy(); this._iconBox.hide(); this._label.setText(''); - this.actor.reactive = false; this._targetApp = targetApp; - if (targetApp != null) { - let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE); + let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE); - this._label.setText(targetApp.get_name()); - // TODO - _quit() doesn't really work on apps in state STARTING yet - this._quitMenu.label.set_text(_("Quit %s").format(targetApp.get_name())); + this._label.setText(targetApp.get_name()); + // TODO - _quit() doesn't really work on apps in state STARTING yet + this._quitMenu.label.set_text(_("Quit %s").format(targetApp.get_name())); - this.actor.reactive = true; - this._iconBox.set_child(icon); - this._iconBox.show(); + this._iconBox.set_child(icon); + this._iconBox.show(); - if (targetApp.get_state() == Shell.AppState.STARTING) - this.startAnimation(); - } + if (targetApp.get_state() == Shell.AppState.STARTING) + this.startAnimation(); this.emit('changed'); } From db5f72c868395f73f107c153b58d0694702d93fe Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Wed, 9 Mar 2011 01:12:50 +0200 Subject: [PATCH 59/74] Updated Arabic translation --- po/ar.po | 152 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 85 insertions(+), 67 deletions(-) diff --git a/po/ar.po b/po/ar.po index 2c19f8bcc..54c334476 100644 --- a/po/ar.po +++ b/po/ar.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: HEAD\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-02 19:08+0200\n" -"PO-Revision-Date: 2011-03-02 19:08+0300\n" +"POT-Creation-Date: 2011-03-09 01:12+0200\n" +"PO-Revision-Date: 2011-03-09 01:12+0300\n" "Last-Translator: Khaled Hosny \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" @@ -164,27 +164,27 @@ msgid "Execution of '%s' failed:" msgstr "فشل تنفيذ '%s':‏" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:195 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "الكل" -#: ../js/ui/appDisplay.js:282 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "التطبيقات" -#: ../js/ui/appDisplay.js:312 +#: ../js/ui/appDisplay.js:350 msgid "SETTINGS" msgstr "الإعدادات" -#: ../js/ui/appDisplay.js:572 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "نافذة جديدة" -#: ../js/ui/appDisplay.js:575 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "أزِل من المفضّلة" -#: ../js/ui/appDisplay.js:576 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "أضِف إلى المفضّلة" @@ -344,7 +344,7 @@ msgstr "هذا الأسبوع" msgid "Next week" msgstr "الأسبوع القادم" -#: ../js/ui/dash.js:174 +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 msgid "Remove" msgstr "أزِل" @@ -352,54 +352,54 @@ msgstr "أزِل" msgid "Date and Time Settings" msgstr "إعدادات الوقت و التّأريخ" -#: ../js/ui/dateMenu.js:110 +#: ../js/ui/dateMenu.js:111 msgid "Open Calendar" msgstr "افتح التقويم" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:162 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%A %e %B، %R:%S" -#: ../js/ui/dateMenu.js:163 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%A %e %B، %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:167 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%A %R:%S" -#: ../js/ui/dateMenu.js:168 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%A %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:175 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%A %e %B، %l:%M:%S %p" -#: ../js/ui/dateMenu.js:176 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%A %e %B، %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:180 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%A %l:%M:%S %p" -#: ../js/ui/dateMenu.js:181 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%A %Ol:%OM %p" #. 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:207 +#: ../js/ui/dateMenu.js:209 msgid "%A %B %e, %Y" msgstr "%A %e %B، %Y" @@ -476,37 +476,41 @@ msgstr "أكّد" msgid "Cancel" msgstr "ألغِ" -#: ../js/ui/lookingGlass.js:587 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "لم تثبّت أية امتدادات" -#: ../js/ui/lookingGlass.js:624 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "مفعّل" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "معطّل" -#: ../js/ui/lookingGlass.js:628 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "خطأ" -#: ../js/ui/lookingGlass.js:630 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "غير محدث" -#: ../js/ui/lookingGlass.js:655 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "اعرض المصدر" -#: ../js/ui/lookingGlass.js:661 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "صفحة الوب" -#: ../js/ui/messageTray.js:1902 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "افتح" + +#: ../js/ui/messageTray.js:1963 msgid "System Information" msgstr "معلومات النظام" @@ -522,18 +526,28 @@ msgstr "النوافذ" msgid "Applications" msgstr "التطبيقات" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "الشريط" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:529 +#: ../js/ui/panel.js:560 #, c-format msgid "Quit %s" msgstr "أغلق %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:897 +#: ../js/ui/panel.js:919 msgid "Activities" msgstr "الأنشطة" +#: ../js/ui/panel.js:1020 +msgid "Panel" +msgstr "اللوحة" + #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" @@ -556,7 +570,7 @@ msgstr "الأماكن والأجهزة" #. "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:612 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-intl" @@ -564,11 +578,11 @@ msgstr "toggle-switch-intl" msgid "Please enter a command:" msgstr "من فضلك اكتب أمرا:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "يبحث..." -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "لا نتائج مطابقة." @@ -608,47 +622,47 @@ msgstr "بدّل المستخدم" msgid "Log Out..." msgstr "اخرج..." -#: ../js/ui/status/accessibility.js:81 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "تقريب" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "قارئ الشاشة" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "لوحة مفاتيح على الشاشة" -#: ../js/ui/status/accessibility.js:96 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "تنبيهات بصرية" -#: ../js/ui/status/accessibility.js:99 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "مفاتيح لاصقة" -#: ../js/ui/status/accessibility.js:102 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "مفاتيح بطيئة" -#: ../js/ui/status/accessibility.js:105 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "مفاتيح لها صوت" -#: ../js/ui/status/accessibility.js:108 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "مفاتيح الفأرة" -#: ../js/ui/status/accessibility.js:112 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "إعدادات الإتاحة" -#: ../js/ui/status/accessibility.js:164 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "تباين عال" -#: ../js/ui/status/accessibility.js:209 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "نص كبير" @@ -831,51 +845,51 @@ msgstr[3] "بقي %d دقائق" msgstr[4] "بقي %d دقيقة" msgstr[5] "بقي %d دقيقة" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "مقبس طاقة" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "بطارية حاسوب محمول" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "مزود طاقة لا منقطعة" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "شاشة" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "فأرة" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "لوحة المفاتيح" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "مساعد رقمي" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "هاتف محمول" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "مشغل وسائط" -#: ../js/ui/status/power.js:259 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "لوحة" -#: ../js/ui/status/power.js:261 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "حاسوب" -#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "مجهول" @@ -919,16 +933,20 @@ msgstr "أُرسلت الساعة %l:%M:%S في %A" #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. -#: ../js/ui/viewSelector.js:103 +#: ../js/ui/viewSelector.js:117 msgid "Type to search..." msgstr "اكتب نصا للبحث عنه..." -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "ابحث" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "انتهى %s من البدء" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "‏'%s' جاهز" @@ -963,11 +981,15 @@ msgstr[5] "%u مدخل" msgid "System Sounds" msgstr "أصوات النظام" -#: ../src/shell-global.c:1298 +#: ../src/main.c:395 +msgid "Print version" +msgstr "اطبع الإصدارة" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "منذ أقل من دقيقة" -#: ../src/shell-global.c:1302 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -978,7 +1000,7 @@ msgstr[3] "منذ %d دقائق" msgstr[4] "منذ %d دقيقة" msgstr[5] "منذ %d دقيقة" -#: ../src/shell-global.c:1307 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -989,7 +1011,7 @@ msgstr[3] "منذ %d ساعات" msgstr[4] "منذ %d ساعة" msgstr[5] "منذ %d ساعة" -#: ../src/shell-global.c:1312 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -1000,7 +1022,7 @@ msgstr[3] "منذ %d أيام" msgstr[4] "منذ %d يوما" msgstr[5] "منذ %d يوم" -#: ../src/shell-global.c:1317 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -1025,10 +1047,6 @@ msgstr "مجلد المنزل" msgid "File System" msgstr "نظام الملفات" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "ابحث" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the From 7eaca86bf1d778075ee27edc1bbf2ea2423dc882 Mon Sep 17 00:00:00 2001 From: Shankar Prasad Date: Wed, 9 Mar 2011 09:39:58 +0530 Subject: [PATCH 60/74] updated kn translations --- po/kn.po | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/po/kn.po b/po/kn.po index 60d5b370d..7368d285b 100644 --- a/po/kn.po +++ b/po/kn.po @@ -9,7 +9,7 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug." "cgi?product=gnome-shell&component=general\n" "POT-Creation-Date: 2011-02-21 01:21+0000\n" -"PO-Revision-Date: 2011-03-04 17:37+0530\n" +"PO-Revision-Date: 2011-03-09 09:36+0530\n" "Last-Translator: Shankar Prasad \n" "Language-Team: Kannada \n" "MIME-Version: 1.0\n" @@ -112,6 +112,7 @@ msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" +"ಈ ಐಡೆಂಟಿಫಯರುಗಳಿಗೆ ಅನುಗುಣವಾದ ಅನ್ವಯಗಳನ್ನು ಮೆಚ್ಚಿನವುಗಳ ಜಾಗದಲ್ಲಿ ತೋರಿಸಲಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" @@ -119,12 +120,17 @@ msgid "" "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" +"ರೆಕಾರ್ಡು ಮಾಡಲಾದ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟುಗಳಿಗಾಗಿನ ಕಡತದ ಹೆಸರು ಪ್ರಸಕ್ತ ದಿನಾಂಕದ " +"ಆಧರಿತವಾದ ಒಂದು ವಿಶೇಷವಾದ ಕಡತದ ಹೆಸರಾಗಿರುತ್ತದೆ, ಹಾಗು ಈ ವಿಸ್ತರಣೆಯನ್ನು ಬಳಸುತ್ತದೆ. " +"ಬೇರೊಂದು ಕಂಟೈನರ್ ಶೈಲಿಗೆ ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ಇದನ್ನು ಬದಲಾಯಿಸಬೇಕಾಗುತ್ತದೆ." #: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" +"ಪ್ರತಿ ಸೆಕೆಂಡಿನ ಫ್ರೇಮ್‌ಗಳಲ್ಲಿನ GNOME ಶೆಲ್‌ನ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟ್‍ ರೆಕಾರ್ಡರಿನಿಂದ " +"ರೆಕಾರ್ಡು ಮಾಡಲಾದ ಸ್ಕ್ರೀನ್‌ಕ್ಯಾಸ್ಟಿನ ಫ್ರೇಮ್‌ದರ. " #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" @@ -658,7 +664,7 @@ msgstr "ಜಾಗತಿಕ ನಿಲುಕಣೆ ಸಿದ್ಧತೆಗಳು" #: ../js/ui/status/accessibility.js:164 msgid "High Contrast" -msgstr "" +msgstr "ಅತಿ ಹೆಚ್ಚು ವೈದೃಶ್ಯ" #: ../js/ui/status/accessibility.js:206 msgid "Large Text" @@ -767,7 +773,7 @@ msgstr "ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ" #: ../js/ui/status/bluetooth.js:445 #, c-format msgid "Pairing request for %s" -msgstr "" +msgstr "%s ಗಾಗಿ ಪೇರಿಂಗ್ ಮನವಿ" #: ../js/ui/status/bluetooth.js:453 msgid "Please enter the PIN mentioned on the device." @@ -912,7 +918,7 @@ msgstr "ಹುಡುಕಲು ನಮೂದಿಸು..." #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" -msgstr "" +msgstr "ಆರಂಭಗೊಳಿಸುವುದನ್ನು %s ಪೂರ್ಣಗೊಳಿಸಿದ್ದಾರೆ" #: ../js/ui/windowAttentionHandler.js:45 #, c-format @@ -925,8 +931,8 @@ msgstr "'%s' ಸಿದ್ಧಗೊಂಡಿದೆ" #, c-format msgid "%u Output" msgid_plural "%u Outputs" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%u ಔಟ್‌ಪುಟ್" +msgstr[1] "%u ಔಟ್‌ಪುಟ್‌ಗಳು" #. translators: #. * The number of sound inputs on a particular device @@ -934,8 +940,8 @@ msgstr[1] "" #, c-format msgid "%u Input" msgid_plural "%u Inputs" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%u ಇನ್‌ಪುಟ್" +msgstr[1] "%u ಇನ್‌ಪುಟ್‌ಗಳು" #: ../src/gvc/gvc-mixer-control.c:1402 msgid "System Sounds" @@ -943,7 +949,7 @@ msgstr "ವ್ಯವಸ್ಥೆಯ ಧ್ವನಿಗಳು" #: ../src/shell-global.c:1363 msgid "Less than a minute ago" -msgstr "" +msgstr "ಒಂದು ನಿಮಿಷಕ್ಕೂ ಹಿಂದೆ" #: ../src/shell-global.c:1367 #, c-format From 72120bb87fe34895cd52e3e17eb7f020ab6950a7 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Fri, 4 Mar 2011 14:21:17 +0100 Subject: [PATCH 61/74] dnd: Avoid division by zero, etc for zero-size actors When rescaling due to a possible parent actor resize avoid problems if the parent width is zero. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- js/ui/dnd.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/ui/dnd.js b/js/ui/dnd.js index a755057f1..87515563f 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -480,7 +480,9 @@ _Draggable.prototype = { let [parentX, parentY] = this._dragOrigParent.get_transformed_position(); let [parentWidth, parentHeight] = this._dragOrigParent.get_size(); let [parentScaledWidth, parentScaledHeight] = this._dragOrigParent.get_transformed_size(); - let parentScale = parentScaledWidth / parentWidth; + let parentScale = 1.0; + if (parentWidth != 0) + parentScale = parentScaledWidth / parentWidth; x = parentX + parentScale * this._dragOrigX; y = parentY + parentScale * this._dragOrigY; From 0207f1f29b776ae5f8f59321284f1adc2f85159e Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 2 Mar 2011 17:04:03 +0100 Subject: [PATCH 62/74] Restructure the way we handle positioning zooming in Workspace We currently show the workspace in the overview in a rectangle with the same aspect ratio as the screen. Originally this was probably done since it showed the desktop, but we don't do this anymore, and the positioning of the windows in the overview is strictly a grid, so its not in any way related to monitor geometry. Additionally, in the multihead case the screen aspect ratio is very different from the overview monitor geometry, so a lot of space is lost. So, instead we just fill the entire inner rectangle of the overview with the workspace. However, the way the zoom into and out of the workspace right now is by scaling the workspace so that it covers the entire monitor. This cannot really work anymore when the workspace is a different aspect ratio. Furthermore the coordinates of the window clone actors are of two very different types in the "original window" case and the "window in a slot case". One is screen relative, the other is workspace relative. This makes it very hard to compute the cost of window motion distance in computeWindowMotion. In order to handle this we change the way workspace actor positioning and scaling work. All workspace window clone actors are stored in true screen coordingates, both the original window positions and the in-a-slot ones. Global scaling of the workspace is never done, we just reposition everything in both the initial zoom and when the controls appear from the side. There is one issue in the initial and final animations, which is that the clip region we normally have for the workspacesView will limit the animation of the clones to/from the original positions, so we disable the clip region during these animations. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- js/ui/overview.js | 68 ++---------- js/ui/workspace.js | 210 ++++++++++++++---------------------- js/ui/workspacesView.js | 232 +++++++++++----------------------------- 3 files changed, 147 insertions(+), 363 deletions(-) diff --git a/js/ui/overview.js b/js/ui/overview.js index 6d86bdae0..d5f739272 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -485,31 +485,6 @@ Overview.prototype = { this.emit('window-drag-end'); }, - // Returns the scale the Overview has when we just start zooming out - // to overview mode. That is, when just the active workspace is showing. - getZoomedInScale : function() { - return 1 / this.workspaces.getScale(); - }, - - // Returns the position the Overview has when we just start zooming out - // to overview mode. That is, when just the active workspace is showing. - getZoomedInPosition : function() { - let [posX, posY] = this.workspaces.getActiveWorkspacePosition(); - let scale = this.getZoomedInScale(); - - return [- posX * scale, - posY * scale]; - }, - - // Returns the current scale of the Overview. - getScale : function() { - return this.workspaces.actor.scaleX; - }, - - // Returns the current position of the Overview. - getPosition : function() { - return [this.workspaces.actor.x, this.workspaces.actor.y]; - }, - // show: // // Animates the overview visible and grabs mouse and keyboard input @@ -563,30 +538,13 @@ Overview.prototype = { }); } - // Create a zoom out effect. First scale the workspaces view up and - // position it so that the active workspace fills up the whole screen, - // then transform it to its normal dimensions and position. - // The opposite transition is used in hide(). - this.workspaces.actor.scaleX = this.workspaces.actor.scaleY = this.getZoomedInScale(); - [this.workspaces.actor.x, this.workspaces.actor.y] = this.getZoomedInPosition(); - let primary = global.get_primary_monitor(); - Tweener.addTween(this.workspaces.actor, - { x: primary.x - this._group.x, - y: primary.y - this._group.y, - scaleX: 1, - scaleY: 1, - transition: 'easeOutQuad', - time: ANIMATION_TIME, - onComplete: this._showDone, - onCompleteScope: this - }); - - // Make the other elements fade in. this._group.opacity = 0; Tweener.addTween(this._group, { opacity: 255, transition: 'easeOutQuad', - time: ANIMATION_TIME + time: ANIMATION_TIME, + onComplete: this._showDone, + onCompleteScope: this }); this._coverPane.raise_top(); @@ -698,27 +656,13 @@ Overview.prototype = { this.workspaces.hide(); - // Create a zoom in effect by transforming the workspaces view so that - // the active workspace fills up the whole screen. The opposite - // transition is used in show(). - let scale = this.getZoomedInScale(); - let [posX, posY] = this.getZoomedInPosition(); - Tweener.addTween(this.workspaces.actor, - { x: posX, - y: posY, - scaleX: scale, - scaleY: scale, - transition: 'easeOutQuad', - time: ANIMATION_TIME, - onComplete: this._hideDone, - onCompleteScope: this - }); - // Make other elements fade out. Tweener.addTween(this._group, { opacity: 0, transition: 'easeOutQuad', - time: ANIMATION_TIME + time: ANIMATION_TIME, + onComplete: this._hideDone, + onCompleteScope: this }); this._coverPane.raise_top(); diff --git a/js/ui/workspace.js b/js/ui/workspace.js index d75794f8a..8a6c05eeb 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -327,6 +327,7 @@ WindowOverlay.prototype = { this._windowClone = windowClone; this._parentActor = parentActor; + this._hidden = false; let title = new St.Label({ style_class: 'window-caption', text: metaWindow.title }); @@ -372,11 +373,13 @@ WindowOverlay.prototype = { }, hide: function() { + this._hidden = true; this.closeButton.hide(); this.title.hide(); }, show: function() { + this._hidden = false; let [x, y, mask] = global.get_pointer(); let actor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); @@ -387,8 +390,8 @@ WindowOverlay.prototype = { }, fadeIn: function() { + this.show(); this.title.opacity = 0; - this.title.show(); this._parentActor.raise_top(); Tweener.addTween(this.title, { opacity: 255, @@ -480,6 +483,12 @@ WindowOverlay.prototype = { }, _onEnter: function() { + // We might get enter events on the clone while the overlay is + // hidden, e.g. during animations, we ignore these events, + // as the close button will be shown as needed when the overlays + // are shown again + if (this._hidden) + return; this._parentActor.raise_top(); this.closeButton.show(); this.emit('show-close-button'); @@ -520,7 +529,7 @@ WindowOverlay.prototype = { Signals.addSignalMethods(WindowOverlay.prototype); const WindowPositionFlags = { - ZOOM: 1 << 0, + INITIAL: 1 << 0, ANIMATE: 1 << 1 }; @@ -536,27 +545,26 @@ Workspace.prototype = { // When dragging a window, we use this slot for reserve space. this._reservedSlot = null; this.metaWorkspace = metaWorkspace; + this._x = 0; + this._y = 0; + this._width = 0; + this._height = 0; + this._windowOverlaysGroup = new Clutter.Group(); // Without this the drop area will be overlapped. this._windowOverlaysGroup.set_size(0, 0); this.actor = new Clutter.Group(); - this.actor._delegate = this; + this.actor.set_size(0, 0); + + this._dropRect = new Clutter.Rectangle({ opacity: 0 }); + this._dropRect._delegate = this; + + this.actor.add_actor(this._dropRect); + this.actor.add_actor(this._windowOverlaysGroup); this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); - // Items in _windowOverlaysGroup should not be scaled, so we don't - // add them to this.actor, but to its parent whenever it changes - this.actor.connect('parent-set', Lang.bind(this, this._onParentSet)); - - // Auto-sizing is unreliable in the presence of ClutterClone, so rather than - // implicitly counting on the workspace actor to be sized to the size of the - // included desktop actor clone, set the size explicitly to the screen size. - // See http://bugzilla.openedhand.com/show_bug.cgi?id=1755 - this.actor.width = global.screen_width; - this.actor.height = global.screen_height; - this.scale = 1.0; - let windows = Main.getWindowActorsForWorkspace(this.metaWorkspace.index()); // Create clones for windows that should be @@ -579,6 +587,22 @@ Workspace.prototype = { this.leavingOverview = false; }, + setGeometry: function(x, y, width, height) { + this._x = x; + this._y = y; + this._width = width; + this._height = height; + + // This is sometimes called during allocation, so we do this later + Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, + function () { + this._dropRect.set_position(x, y); + this._dropRect.set_size(width, height); + return false; + })); + + }, + _lookupIndex: function (metaWindow) { for (let i = 0; i < this._windows.length; i++) { if (this._windows[i].metaWindow == metaWindow) { @@ -588,17 +612,6 @@ Workspace.prototype = { return -1; }, - _onParentSet: function(actor, old_parent) { - let new_parent = this.actor.get_parent(); - if (new_parent == null) - return; - - if (old_parent) - this._windowOverlaysGroup.reparent(new_parent); - else - new_parent.add_actor(this._windowOverlaysGroup); - }, - containsMetaWindow: function (metaWindow) { return this._lookupIndex(metaWindow) >= 0; }, @@ -679,8 +692,8 @@ Workspace.prototype = { actorWidth = actor.width * actor.scale_x; actorHeight = actor.height * actor.scale_y; - xDelta = actor.x + actorWidth / 2.0 - xCenter * global.screen_width; - yDelta = actor.y + actorHeight / 2.0 - yCenter * global.screen_height; + xDelta = actor.x + actorWidth / 2.0 - xCenter * this._width - this._x; + yDelta = actor.y + actorHeight / 2.0 - yCenter * this._height - this._y; distanceSquared = xDelta * xDelta + yDelta * yDelta; return distanceSquared; @@ -765,38 +778,35 @@ Workspace.prototype = { }, /** - * _getSlotRelativeGeometry: + * _getSlotGeometry: * @slot: A layout slot * - * Returns: the workspace-relative [x, y, width, height] + * Returns: the screen-relative [x, y, width, height] * of a given window layout slot. */ - _getSlotRelativeGeometry: function(slot) { + _getSlotGeometry: function(slot) { let [xCenter, yCenter, fraction] = slot; - let width = global.screen_width * fraction; - let height = global.screen_height * fraction; + let width = this._width * fraction; + let height = this._height * fraction; - let x = xCenter * global.screen_width - width / 2; - let y = yCenter * global.screen_height - height / 2; + let x = this._x + xCenter * this._width - width / 2 ; + let y = this._y + yCenter * this._height - height / 2; return [x, y, width, height]; }, /** - * _computeWindowRelativeLayout: + * _computeWindowLayout: * @metaWindow: A #MetaWindow * @slot: A layout slot * * Given a window and slot to fit it in, compute its - * workspace-relative [x, y, scale] where scale applies + * screen-relative [x, y, scale] where scale applies * to both X and Y directions. */ - _computeWindowRelativeLayout: function(metaWindow, slot) { - let [xCenter, yCenter, fraction] = slot; - let [x, y, width, height] = this._getSlotRelativeGeometry(slot); - - xCenter = xCenter * global.screen_width; + _computeWindowLayout: function(metaWindow, slot) { + let [x, y, width, height] = this._getSlotGeometry(slot); let rect = metaWindow.get_outer_rect(); let buttonOuterHeight, captionHeight; @@ -804,23 +814,19 @@ Workspace.prototype = { if (this._windowOverlays[0]) { [buttonOuterHeight, captionHeight] = this._windowOverlays[0].chromeHeights(); - buttonOuterWidth = this._windowOverlays[0].chromeWidth() / this.scale; + buttonOuterWidth = this._windowOverlays[0].chromeWidth(); } else [buttonOuterHeight, captionHeight] = [0, 0]; - buttonOuterHeight /= this.scale; - captionHeight /= this.scale; - let desiredWidth = global.screen_width * fraction; - let desiredHeight = global.screen_height * fraction; - let scale = Math.min((desiredWidth - buttonOuterWidth) / rect.width, - (desiredHeight - buttonOuterHeight - captionHeight) / rect.height, - 1.0 / this.scale); + let scale = Math.min((width - buttonOuterWidth) / rect.width, + (height - buttonOuterHeight - captionHeight) / rect.height, + 1.0); - x = Math.floor(xCenter - 0.5 * scale * rect.width); + x = Math.floor(x + (width - scale * rect.width) / 2); // We want to center the window in case we have just one if (metaWindow.get_workspace().n_windows == 1) - y = Math.floor(yCenter * global.screen_height - 0.5 * scale * rect.height); + y = Math.floor(y + (height - scale * rect.height) / 2); else y = Math.floor(y + height - rect.height * scale - captionHeight); @@ -846,7 +852,7 @@ Workspace.prototype = { /** * positionWindows: * @flags: - * ZOOM - workspace is moving at the same time and we need to take that into account. + * INITIAL - this is the initial positioning of the windows. * ANIMATE - Indicates that we need animate changing position. */ positionWindows : function(flags) { @@ -859,7 +865,7 @@ Workspace.prototype = { if (this._reservedSlot) clones.push(this._reservedSlot); - let workspaceZooming = flags & WindowPositionFlags.ZOOM; + let initialPositioning = flags & WindowPositionFlags.INITIAL; let animate = flags & WindowPositionFlags.ANIMATE; // Start the animations @@ -881,7 +887,7 @@ Workspace.prototype = { if (clone.inDrag) continue; - let [x, y, scale] = this._computeWindowRelativeLayout(metaWindow, slot); + let [x, y, scale] = this._computeWindowLayout(metaWindow, slot); if (overlay) overlay.hide(); @@ -890,7 +896,7 @@ Workspace.prototype = { /* Hidden windows should fade in and grow * therefore we need to resize them now so they * can be scaled up later */ - if (workspaceZooming) { + if (initialPositioning) { clone.actor.opacity = 0; clone.actor.scale_x = 0; clone.actor.scale_y = 0; @@ -911,7 +917,6 @@ Workspace.prototype = { y: y, scale_x: scale, scale_y: scale, - workspace_relative: workspaceZooming ? this : null, time: Overview.ANIMATION_TIME, transition: 'easeOutQuad', onComplete: Lang.bind(this, function() { @@ -934,7 +939,7 @@ Workspace.prototype = { let clone = clones[i]; let metaWindow = clone.metaWindow; if (i == 0) { - clone.setStackAbove(null); + clone.setStackAbove(this._dropRect); } else { let previousClone = clones[i - 1]; clone.setStackAbove(previousClone.actor); @@ -954,10 +959,8 @@ Workspace.prototype = { // be after the workspace animation finishes. let [cloneX, cloneY] = clone.actor.get_position(); let [cloneWidth, cloneHeight] = clone.actor.get_size(); - cloneX = this.x + this.scale * cloneX; - cloneY = this.y + this.scale * cloneY; - cloneWidth = this.scale * clone.actor.scale_x * cloneWidth; - cloneHeight = this.scale * clone.actor.scale_y * cloneHeight; + cloneWidth = clone.actor.scale_x * cloneWidth; + cloneHeight = clone.actor.scale_y * cloneHeight; if (overlay) { overlay.updatePositions(cloneX, cloneY, cloneWidth, cloneHeight); @@ -982,12 +985,10 @@ Workspace.prototype = { return true; let [x, y, mask] = global.get_pointer(); - let wsWidth = this.actor.width * this.scale; - let wsHeight = this.actor.height * this.scale; let pointerHasMoved = (this._cursorX != x && this._cursorY != y); - let inWorkspace = (this.x < x && x < this.x + wsWidth && - this.y < y && y < this.y + wsHeight); + let inWorkspace = (this._x < x && x < this._x + this._width && + this._y < y && y < this._y + this._height); if (pointerHasMoved && inWorkspace) { // store current cursor position @@ -1088,13 +1089,20 @@ Workspace.prototype = { let clone = this._addWindowClone(win); if (win._overviewHint) { - let x = (win._overviewHint.x - this.actor.x) / this.scale; - let y = (win._overviewHint.y - this.actor.y) / this.scale; - let scale = win._overviewHint.scale / this.scale; + let x = win._overviewHint.x - this.actor.x; + let y = win._overviewHint.y - this.actor.y; + let scale = win._overviewHint.scale; delete win._overviewHint; clone.actor.set_position (x, y); clone.actor.set_scale (scale, scale); + } else { + // Position new windows at the top corner of the workspace rather + // than where they were placed for real to avoid the window + // being clipped to the workspaceView. Its not really more + // natural for the window to suddenly appear in the overview + // on some seemingly random location anyway. + clone.actor.set_position (this._x, this._y); } this.positionWindows(WindowPositionFlags.ANIMATE); @@ -1114,14 +1122,11 @@ Workspace.prototype = { // Animate the full-screen to Overview transition. zoomToOverview : function() { - this.actor.set_position(this.x, this.y); - this.actor.set_scale(this.scale, this.scale); - // Position and scale the windows. if (Main.overview.animationInProgress) - this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.ZOOM); + this.positionWindows(WindowPositionFlags.ANIMATE | WindowPositionFlags.INITIAL); else - this.positionWindows(WindowPositionFlags.ZOOM); + this.positionWindows(WindowPositionFlags.INITIAL); }, // Animates the return from Overview mode @@ -1139,7 +1144,7 @@ Workspace.prototype = { this._overviewHiddenId = Main.overview.connect('hidden', Lang.bind(this, this._doneLeavingOverview)); - if (this._metaWorkspace == currentWorkspace) + if (this.metaWorkspace != currentWorkspace) return; // Position and scale the windows. @@ -1154,7 +1159,6 @@ Workspace.prototype = { y: clone.origY, scale_x: 1.0, scale_y: 1.0, - workspace_relative: this, time: Overview.ANIMATION_TIME, opacity: 255, transition: 'easeOutQuad' @@ -1165,7 +1169,6 @@ Workspace.prototype = { { scale_x: 0, scale_y: 0, opacity: 0, - workspace_relative: this, time: Overview.ANIMATION_TIME, transition: 'easeOutQuad' }); @@ -1335,56 +1338,3 @@ Workspace.prototype = { }; Signals.addSignalMethods(Workspace.prototype); - -// Create a SpecialPropertyModifier to let us move windows in a -// straight line on the screen even though their containing workspace -// is also moving. -Tweener.registerSpecialPropertyModifier('workspace_relative', _workspaceRelativeModifier, _workspaceRelativeGet); - -function _workspaceRelativeModifier(workspace) { - let [startX, startY] = Main.overview.getPosition(); - let overviewPosX, overviewPosY, overviewScale; - - if (!workspace) - return []; - - if (workspace.leavingOverview) { - let [zoomedInX, zoomedInY] = Main.overview.getZoomedInPosition(); - overviewPosX = { begin: startX, end: zoomedInX }; - overviewPosY = { begin: startY, end: zoomedInY }; - overviewScale = { begin: Main.overview.getScale(), - end: Main.overview.getZoomedInScale() }; - } else { - overviewPosX = { begin: startX, end: 0 }; - overviewPosY = { begin: startY, end: 0 }; - overviewScale = { begin: Main.overview.getScale(), end: 1 }; - } - - return [ { name: 'x', - parameters: { workspacePos: workspace.x, - overviewPos: overviewPosX, - overviewScale: overviewScale } }, - { name: 'y', - parameters: { workspacePos: workspace.y, - overviewPos: overviewPosY, - overviewScale: overviewScale } } - ]; -} - -function _workspaceRelativeGet(begin, end, time, params) { - let curOverviewPos = (1 - time) * params.overviewPos.begin + - time * params.overviewPos.end; - let curOverviewScale = (1 - time) * params.overviewScale.begin + - time * params.overviewScale.end; - - // Calculate the screen position of the window. - let screen = (1 - time) * - ((begin + params.workspacePos) * params.overviewScale.begin + - params.overviewPos.begin) + - time * - ((end + params.workspacePos) * params.overviewScale.end + - params.overviewPos.end); - - // Return the workspace coordinates. - return (screen - curOverviewPos) / curOverviewScale - params.workspacePos; -} diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index e3e242643..df69f9968 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -25,14 +25,13 @@ const MAX_WORKSPACES = 16; const CONTROLS_POP_IN_TIME = 0.1; -function WorkspacesView(width, height, x, y, workspaces) { - this._init(width, height, x, y, workspaces); +function WorkspacesView(workspaces) { + this._init(workspaces); } WorkspacesView.prototype = { - _init: function(width, height, x, y, workspaces) { + _init: function(workspaces) { this.actor = new St.Group({ style_class: 'workspaces-view' }); - this.actor.set_clip(x, y, width, height); // The actor itself isn't a drop target, so we don't want to pick on its area this.actor.set_size(0, 0); @@ -43,19 +42,16 @@ WorkspacesView.prototype = { function() { let node = this.actor.get_theme_node(); this._spacing = node.get_length('spacing'); - this._computeWorkspacePositions(); + this._updateWorkspaceActors(false); })); this.actor.connect('notify::mapped', Lang.bind(this, this._onMappedChanged)); - this._width = width; - this._height = height; - this._x = x; - this._y = y; - this._zoomScale = 1.0; + this._width = 0; + this._height = 0; + this._x = 0; + this._y = 0; this._spacing = 0; - this._activeWorkspaceX = 0; // x offset of active ws while dragging - this._activeWorkspaceY = 0; // y offset of active ws while dragging this._lostWorkspaces = []; this._animating = false; // tweening this._scrolling = false; // swipe-scrolling @@ -81,6 +77,11 @@ WorkspacesView.prototype = { for (let w = 0; w < this._workspaces.length; w++) this._workspaces[w].zoomToOverview(); })); + this._overviewShownId = + Main.overview.connect('shown', + Lang.bind(this, function() { + this.actor.set_clip(this._x, this._y, this._width, this._height); + })); this._scrollAdjustment = new St.Adjustment({ value: activeWorkspaceIndex, lower: 0, @@ -109,30 +110,17 @@ WorkspacesView.prototype = { this._swipeScrollEndId = 0; }, - setZoomScale: function(zoomScale) { - if (zoomScale == this._zoomScale) - return; + setGeometry: function(x, y, width, height) { + if (this._x == x && this._y == y && + this._width == width && this._height == height) + return; + this._width = width; + this._height = height; + this._x = x; + this._y = y; - this._zoomScale = zoomScale; - if (this._zoomOut) { - // If we are already zoomed out, then we have to reposition. - // Note that when shown initially zoomOut is false, so we - // won't trigger this. - - // setZoomScale can be invoked when the workspaces view is - // reallocated. Since we just want to animate things to the - // new position it seems OK to call updateWorkspaceActors - // immediately - adding a tween doesn't immediately cause - // a new allocation. But hide/show of the window overlays we - // do around animation does, so we need to do it later. - // This can be removed when we fix things to not hide/show - // the window overlay. - Meta.later_add(Meta.LaterType.BEFORE_REDRAW, - Lang.bind(this, function() { - this._computeWorkspacePositions(); - this._updateWorkspaceActors(true); - })); - } + for (let i = 0; i < this._workspaces.length; i++) + this._workspaces[i].setGeometry(x, y, width, height); }, _lookupWorkspaceForMetaWindow: function (metaWindow) { @@ -154,6 +142,8 @@ WorkspacesView.prototype = { activeWorkspace.actor.raise_top(); + this.actor.remove_clip(this._x, this._y, this._width, this._height); + for (let w = 0; w < this._workspaces.length; w++) this._workspaces[w].zoomFromOverview(); }, @@ -162,93 +152,27 @@ WorkspacesView.prototype = { this.actor.destroy(); }, - getScale: function() { - return this._workspaces[0].scale; - }, - syncStacking: function(stackIndices) { for (let i = 0; i < this._workspaces.length; i++) this._workspaces[i].syncStacking(stackIndices); }, - // Get the grid position of the active workspace. - getActiveWorkspacePosition: function() { - let activeWorkspaceIndex = global.screen.get_active_workspace_index(); - let activeWorkspace = this._workspaces[activeWorkspaceIndex]; - - return [activeWorkspace.x, activeWorkspace.y]; - }, - - zoomOut: function() { - if (this._zoomOut) - return; - - this._zoomOut = true; - this._computeWorkspacePositions(); - this._updateWorkspaceActors(true); - }, - - zoomIn: function() { - if (!this._zoomOut) - return; - - this._zoomOut = false; - this._computeWorkspacePositions(); - this._updateWorkspaceActors(true); - }, - - // Compute the position, scale and opacity of the workspaces, but don't - // actually change the actors to match - _computeWorkspacePositions: function() { - let active = global.screen.get_active_workspace_index(); - let zoomScale = this._zoomOut ? this._zoomScale : 1; - let scale = zoomScale * this._width / global.screen_width; - - let _width = this._workspaces[0].actor.width * scale; - let _height = this._workspaces[0].actor.height * scale; - - this._activeWorkspaceX = (this._width - _width) / 2; - this._activeWorkspaceY = (this._height - _height) / 2; - - for (let w = 0; w < this._workspaces.length; w++) { - let workspace = this._workspaces[w]; - - workspace.opacity = (this._inDrag && w != active) ? 200 : 255; - - workspace.scale = scale; - workspace.x = this._x + this._activeWorkspaceX; - - // We adjust the center because the zoomScale is to leave space for - // the expanded workspace control so we want to zoom to either the - // left part of the area or the right part of the area - let offset = 0.5 * (1 - this._zoomScale) * this._width; - let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL); - if (this._zoomOut) - workspace.x += rtl ? offset : - offset; - - // We divide by zoomScale so that adjacent workspaces are always offscreen - // except when we are switching between workspaces - workspace.y = this._y + this._activeWorkspaceY - + (w - active) * (_height + this._spacing) / zoomScale; - } + updateWindowPositions: function() { + for (let w = 0; w < this._workspaces.length; w++) + this._workspaces[w].positionWindows(Workspace.WindowPositionFlags.ANIMATE); }, _scrollToActive: function(showAnimation) { let active = global.screen.get_active_workspace_index(); - this._computeWorkspacePositions(); this._updateWorkspaceActors(showAnimation); this._updateScrollAdjustment(active, showAnimation); }, - // Update workspace actors parameters to the values calculated in - // _computeWorkspacePositions() + // Update workspace actors parameters // @showAnimation: iff %true, transition between states _updateWorkspaceActors: function(showAnimation) { let active = global.screen.get_active_workspace_index(); - let targetWorkspaceNewY = this._y + this._activeWorkspaceY; - let targetWorkspaceCurrentY = this._workspaces[active].y; - let dy = targetWorkspaceNewY - targetWorkspaceCurrentY; this._animating = showAnimation; @@ -257,14 +181,12 @@ WorkspacesView.prototype = { Tweener.removeTweens(workspace.actor); - workspace.y += dy; + let opacity = (this._inDrag && w != active) ? 200 : 255; + let y = (w - active) * (this._height + this._spacing); if (showAnimation) { - let params = { x: workspace.x, - y: workspace.y, - scale_x: workspace.scale, - scale_y: workspace.scale, - opacity: workspace.opacity, + let params = { y: y, + opacity: opacity, time: WORKSPACE_SWITCH_TIME, transition: 'easeOutQuad' }; @@ -281,9 +203,8 @@ WorkspacesView.prototype = { } Tweener.addTween(workspace.actor, params); } else { - workspace.actor.set_scale(workspace.scale, workspace.scale); - workspace.actor.set_position(workspace.x, workspace.y); - workspace.actor.opacity = workspace.opacity; + workspace.actor.set_position(0, y); + workspace.actor.opacity = opacity; if (w == 0) this._updateVisibility(); } @@ -294,7 +215,6 @@ WorkspacesView.prototype = { Tweener.removeTweens(workspace.actor); - workspace.y += dy; workspace.actor.show(); workspace.hideWindowsOverlays(); @@ -338,7 +258,6 @@ WorkspacesView.prototype = { this._lostWorkspaces[l].destroy(); this._lostWorkspaces = []; - this._computeWorkspacePositions(); this._updateWorkspaceActors(false); }, @@ -380,7 +299,6 @@ WorkspacesView.prototype = { for (let w = oldNumWorkspaces; w < newNumWorkspaces; w++) this.actor.add_actor(this._workspaces[w].actor); - this._computeWorkspacePositions(); this._updateWorkspaceActors(false); } else { this._lostWorkspaces = lostWorkspaces; @@ -399,6 +317,7 @@ WorkspacesView.prototype = { _onDestroy: function() { this._scrollAdjustment.run_dispose(); Main.overview.disconnect(this._overviewShowingId); + Main.overview.disconnect(this._overviewShownId); global.window_manager.disconnect(this._switchWorkspaceNotifyId); if (this._timeoutId) { @@ -557,12 +476,6 @@ WorkspacesView.prototype = { Main.overview.hide(); } - if (result == Overview.SwipeScrollResult.SWIPE) - // The active workspace has changed; while swipe-scrolling - // has already taken care of the positioning, the cached - // positions need to be updated - this._computeWorkspacePositions(); - // Make sure title captions etc are shown as necessary this._updateVisibility(); }, @@ -590,7 +503,7 @@ WorkspacesView.prototype = { return; let currentY = firstWorkspaceY; - let newY = this._y - adj.value / (adj.upper - 1) * workspacesHeight; + let newY = - adj.value / (adj.upper - 1) * workspacesHeight; let dy = newY - currentY; @@ -662,43 +575,10 @@ WorkspacesDisplay.prototype = { this._workspaces[i] = new Workspace.Workspace(metaWorkspace); } - let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL); - - let totalAllocation = this.actor.allocation; - let totalWidth = totalAllocation.x2 - totalAllocation.x1; - let totalHeight = totalAllocation.y2 - totalAllocation.y1; - - let controlsVisible = this._controls.get_theme_node().get_length('visible-width'); - - totalWidth -= controlsVisible; - - // Workspaces expect to have the same ratio as the screen, so take - // this into account when fitting the workspace into the available space - let width, height; - let totalRatio = totalWidth / totalHeight; - let wsRatio = global.screen_width / global.screen_height; - if (wsRatio > totalRatio) { - width = totalWidth; - height = Math.floor(totalWidth / wsRatio); - } else { - width = Math.floor(totalHeight * wsRatio); - height = totalHeight; - } - - // Position workspaces in the available space - let [x, y] = this.actor.get_transformed_position(); - x = Math.floor(x + Math.abs(totalWidth - width) / 2); - y = Math.floor(y + Math.abs(totalHeight - height) / 2); - - if (rtl) - x += controlsVisible; - - let newView = new WorkspacesView(width, height, x, y, this._workspaces); - this._updateZoomScale(); - if (this.workspacesView) this.workspacesView.destroy(); - this.workspacesView = newView; + this.workspacesView = new WorkspacesView(this._workspaces); + this._updateWorkspacesGeometry(); this._nWorkspacesNotifyId = global.screen.connect('notify::n-workspaces', @@ -809,22 +689,34 @@ WorkspacesDisplay.prototype = { childBox.y2 = box.y2- box.y1; this._controls.allocate(childBox, flags); - this._updateZoomScale(); + this._updateWorkspacesGeometry(); }, - _updateZoomScale: function() { + _updateWorkspacesGeometry: function() { if (!this.workspacesView) return; - let totalAllocation = this.actor.allocation; - let totalWidth = totalAllocation.x2 - totalAllocation.x1; - let totalHeight = totalAllocation.y2 - totalAllocation.y1; + let width = this.actor.allocation.x2 - this.actor.allocation.x1; + let height = this.actor.allocation.y2 - this.actor.allocation.y1; - let [controlsMin, controlsNatural] = this._controls.get_preferred_width(totalHeight); + let [controlsMin, controlsNatural] = this._controls.get_preferred_width(height); let controlsVisible = this._controls.get_theme_node().get_length('visible-width'); - let zoomScale = (totalWidth - controlsNatural) / (totalWidth - controlsVisible); - this.workspacesView.setZoomScale(zoomScale); + let [x, y] = this.actor.get_transformed_position(); + + let rtl = (St.Widget.get_default_direction () == St.TextDirection.RTL); + + if (this._zoomOut) { + width -= controlsNatural; + if (rtl) + x += controlsNatural; + } else { + width -= controlsVisible; + if (rtl) + x += controlsVisible; + } + + this.workspacesView.setGeometry(x, y, width, height); }, _onRestacked: function() { @@ -893,6 +785,7 @@ WorkspacesDisplay.prototype = { let shouldZoom = this._controls.hover || this._inDrag; if (shouldZoom != this._zoomOut) { this._zoomOut = shouldZoom; + this._updateWorkspacesGeometry(); if (!this.workspacesView) return; @@ -902,10 +795,7 @@ WorkspacesDisplay.prototype = { time: WORKSPACE_SWITCH_TIME, transition: 'easeOutQuad' }); - if (shouldZoom) - this.workspacesView.zoomOut(); - else - this.workspacesView.zoomIn(); + this.workspacesView.updateWindowPositions(); } }, From a80e88e33e6a7f55354270dfa1ae8fc8cabc1890 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 8 Mar 2011 14:44:47 +0100 Subject: [PATCH 63/74] dnd: Add a drag-cancelled signal This lets us start the workspace zoom out animation right when the snapback starts, rather than waiting for the snapback to finish. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- js/ui/dnd.js | 1 + js/ui/overview.js | 4 ++++ js/ui/workspace.js | 9 +++++++++ 3 files changed, 14 insertions(+) diff --git a/js/ui/dnd.js b/js/ui/dnd.js index 87515563f..46d32fdd3 100644 --- a/js/ui/dnd.js +++ b/js/ui/dnd.js @@ -498,6 +498,7 @@ _Draggable.prototype = { }, _cancelDrag: function(eventTime) { + this.emit('drag-cancelled', eventTime); this._dragInProgress = false; let [snapBackX, snapBackY, snapBackScale] = this._getRestoreLocation(); diff --git a/js/ui/overview.js b/js/ui/overview.js index d5f739272..2d672868f 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -481,6 +481,10 @@ Overview.prototype = { this.emit('window-drag-begin'); }, + cancelledWindowDrag: function(source) { + this.emit('window-drag-cancelled'); + }, + endWindowDrag: function(source) { this.emit('window-drag-end'); }, diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 8a6c05eeb..a6798cef2 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -125,6 +125,7 @@ WindowClone.prototype = { dragActorMaxSize: WINDOW_DND_SIZE, dragActorOpacity: DRAGGING_WINDOW_OPACITY }); this._draggable.connect('drag-begin', Lang.bind(this, this._onDragBegin)); + this._draggable.connect('drag-cancelled', Lang.bind(this, this._onDragCancelled)); this._draggable.connect('drag-end', Lang.bind(this, this._onDragEnd)); this.inDrag = false; @@ -292,6 +293,10 @@ WindowClone.prototype = { this.emit('drag-begin'); }, + _onDragCancelled : function (draggable, time) { + this.emit('drag-cancelled'); + }, + _onDragEnd : function (draggable, time, snapback) { this.inDrag = false; @@ -1231,6 +1236,10 @@ Workspace.prototype = { Main.overview.beginWindowDrag(); overlay.hide(); })); + clone.connect('drag-cancelled', + Lang.bind(this, function(clone) { + Main.overview.cancelledWindowDrag(); + })); clone.connect('drag-end', Lang.bind(this, function(clone) { Main.overview.endWindowDrag(); From 57432248179146955957ff35c2c2964141ebe671 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 8 Mar 2011 14:46:34 +0100 Subject: [PATCH 64/74] Don't rearrange dragged window when repositioning windows If we're dragging a window around and we need to reposition the windows, due to e.g. the sliding in of the thumbnails or some other reason, then we need to consider the original position of the dragged window, rather than the currend drag position. Otherwise we will unnecessarily rearrange the other windows for instance on snap-back if you moved the dragged window past some other window. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- js/ui/workspace.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index a6798cef2..a2c7172a4 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -289,6 +289,8 @@ WindowClone.prototype = { }, _onDragBegin : function (draggable, time) { + [this.dragOrigX, this.dragOrigY] = this.actor.get_position(); + this.dragOrigScale = this.actor.scale_x; this.inDrag = true; this.emit('drag-begin'); }, @@ -695,10 +697,20 @@ Workspace.prototype = { let xDelta, yDelta, distanceSquared; let actorWidth, actorHeight; - actorWidth = actor.width * actor.scale_x; - actorHeight = actor.height * actor.scale_y; - xDelta = actor.x + actorWidth / 2.0 - xCenter * this._width - this._x; - yDelta = actor.y + actorHeight / 2.0 - yCenter * this._height - this._y; + let x = actor.x; + let y = actor.y; + let scale = actor.scale_x; + + if (actor._delegate.inDrag) { + x = actor._delegate.dragOrigX; + y = actor._delegate.dragOrigY; + scale = actor._delegate.dragOrigScale; + } + + actorWidth = actor.width * scale; + actorHeight = actor.height * scale; + xDelta = x + actorWidth / 2.0 - xCenter * this._width - this._x; + yDelta = y + actorHeight / 2.0 - yCenter * this._height - this._y; distanceSquared = xDelta * xDelta + yDelta * yDelta; return distanceSquared; From df2f939f3a54f5b30b4f87451e45939944b80d80 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 8 Mar 2011 14:50:34 +0100 Subject: [PATCH 65/74] Start the workspace zoom out immediately on dnd cancel. This means the snap-back animation happens at the same time as the zoom, which looks much better. https://bugzilla.gnome.org/show_bug.cgi?id=643786 --- js/ui/workspacesView.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index df69f9968..c2502ef98 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -553,6 +553,7 @@ WorkspacesDisplay.prototype = { this.workspacesView = null; this._inDrag = false; + this._cancelledDrag = false; this._zoomOut = false; this._zoomFraction = 0; @@ -562,6 +563,7 @@ WorkspacesDisplay.prototype = { this._itemDragBeginId = 0; this._itemDragEndId = 0; this._windowDragBeginId = 0; + this._windowDragCancelledId = 0; this._windowDragEndId = 0; }, @@ -597,6 +599,9 @@ WorkspacesDisplay.prototype = { if (this._windowDragBeginId == 0) this._windowDragBeginId = Main.overview.connect('window-drag-begin', Lang.bind(this, this._dragBegin)); + if (this._windowDragCancelledId == 0) + this._windowDragCancelledId = Main.overview.connect('window-drag-cancelled', + Lang.bind(this, this._dragCancelled)); if (this._windowDragEndId == 0) this._windowDragEndId = Main.overview.connect('window-drag-end', Lang.bind(this, this._dragEnd)); @@ -631,6 +636,10 @@ WorkspacesDisplay.prototype = { Main.overview.disconnect(this._windowDragBeginId); this._windowDragBeginId = 0; } + if (this._windowDragCancelledId > 0) { + Main.overview.disconnect(this._windowDragCancelledId); + this._windowDragCancelledId = 0; + } if (this._windowDragEndId > 0) { Main.overview.disconnect(this._windowDragEndId); this._windowDragEndId = 0; @@ -782,7 +791,7 @@ WorkspacesDisplay.prototype = { if (Main.overview.animationInProgress) return; - let shouldZoom = this._controls.hover || this._inDrag; + let shouldZoom = this._controls.hover || (this._inDrag && !this._cancelledDrag); if (shouldZoom != this._zoomOut) { this._zoomOut = shouldZoom; this._updateWorkspacesGeometry(); @@ -805,6 +814,12 @@ WorkspacesDisplay.prototype = { _dragBegin: function() { this._inDrag = true; + this._cancelledDrag = false; + this._updateZoom(); + }, + + _dragCancelled: function() { + this._cancelledDrag = true; this._updateZoom(); }, From 16a675b7ce681b58c6dfacd8c0e41720d4ab601b Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 3 Mar 2011 16:29:05 +0100 Subject: [PATCH 66/74] Bail early from check over all permutations If we're already doing worse than the best so far there is no need to continue checking this particular permutation. https://bugzilla.gnome.org/show_bug.cgi?id=609258 --- js/ui/workspace.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/js/ui/workspace.js b/js/ui/workspace.js index a2c7172a4..9a80f8c8e 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -735,6 +735,12 @@ Workspace.prototype = { let delta = this._computeWindowMotion(cloneActor, slot); motion += delta; + + // Bail out early if we're already larger than the + // previous best + if (minimumMotionPermutation != null && + motion > minimumMotion) + continue; } if (minimumMotionPermutation == null || motion < minimumMotion) { From 1ea005f6a60b38ee2161e67cb22ff4322e65359f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matej=20Urban=C4=8Di=C4=8D?= Date: Wed, 9 Mar 2011 17:40:12 +0100 Subject: [PATCH 67/74] Updated Slovenian translation --- po/sl.po | 425 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 262 insertions(+), 163 deletions(-) diff --git a/po/sl.po b/po/sl.po index 4c65ef759..65e028ce9 100644 --- a/po/sl.po +++ b/po/sl.po @@ -8,14 +8,14 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&component=general\n" -"POT-Creation-Date: 2011-02-11 23:06+0000\n" -"PO-Revision-Date: 2011-02-12 20:36+0100\n" +"POT-Creation-Date: 2011-03-09 04:06+0000\n" +"PO-Revision-Date: 2011-03-09 13:14+0100\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenian GNOME Translation Team \n" -"Language: Slovenian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: Slovenian\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n" "X-Poedit-Language: Slovenian\n" "X-Poedit-Country: SLOVENIA\n" @@ -55,68 +55,73 @@ msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 #, fuzzy +msgid "History for the looking glass dialog" +msgstr "Zgodovina pogovornega okna ukazov (Alt-F2)" + +#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#, fuzzy msgid "If true, display date in the clock, in addition to time." msgstr "Izbrana možnost omogoča ob času tudi prikaz datuma." -#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#: ../data/org.gnome.shell.gschema.xml.in.h:9 #, fuzzy msgid "If true, display seconds in time." msgstr "Izbrana možnost omogoča prikaz sekund." -#: ../data/org.gnome.shell.gschema.xml.in.h:9 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "If true, display the ISO week date in the calendar." msgstr "Izbrana možnost določa prikaz ISO tedenski datum v koledarju." -#: ../data/org.gnome.shell.gschema.xml.in.h:10 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Seznam določil ID namiznih datotek priljubljenih programov" -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 #, fuzzy, no-c-format msgid "Sets the GStreamer pipeline used to encode recordings. It follows the syntax used for gst-launch. The pipeline should have an unconnected sink pad where the recorded video is recorded. It will normally have a unconnected source pad; output from that pad will be written into the output file. However the pipeline can also take care of its own output - this might be used to send the output to an icecast server via shout2send or similar. When unset or set to an empty value, the default pipeline will be used. This is currently 'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." msgstr "Določa cevovod programa GStreamer, ki se uporablja za kodiranje posnetkov. Ta sledi skladnji, ki je uporabljena za gst-launch. Cevovod mora imeti nepovezano korito, kamor se posnetek snema. Običajno je za to namenjen nepovezan izvorni pomnilnik, katerega odvod se zapiše v odvodno datoteko. Vendar pa lahko cevovod ta korak naredi v lastni odvod - možnost se lahko uporabi pri pošiljanju odvoda na strežnik icecast preko shout2send ali podobno. Nedoločena ali prazna možnost se odrazi kot privzeti cevovod. Trenutno je to 'videorate ! theoraenc ! oggmux' in omogoča snemanje v zapis Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Pokaži datum v uri" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Pokaži tedenski datum v koledarju" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Pokaži čas s sekundami" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "The applications corresponding to these identifiers will be displayed in the favorites area." msgstr "Programi določeni s temi določili bodo prikazani v območju priljubljenih programov" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format." msgstr "Ime datoteke zaslonskega posnetka bo enoznačno ime, kateremu bo dodan datum in določena pripona. Pripona mora ustrezati zapisu zabojnika." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." msgstr "Hitrost sličic shranjenega končnega zaslonskega posnetka v sličicah na sekundo." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "Uporabljen GStreamer cevovod za kodiranje zaslonskega posnetka." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." msgstr "Lupina običajno nadzira dejavne programe zaradi možnosti prikazovanja najpogosteje uporabljenih v zaganjalniku. Čeprav so podatki krajevni, jih je dobro onemogočiti zaradi varovanja zasebnosti. Z onemogočenje ne bodo odstranjeni že shranjeni podatki." -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "Določila UUID razširitev za onemogočenje" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Ali naj se beleži statistika uporabe programov" -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:24 #, fuzzy msgid "disabled OpenSearch providers" msgstr "Seznam nameščenih ponudnikov" @@ -134,9 +139,8 @@ msgid "Could not parse command:" msgstr "Ni mogoče razčleniti ukazne vrstice '%s': %s" #: ../js/misc/util.js:135 -#, fuzzy msgid "No such application" -msgstr "Ni takšnega vira" +msgstr "Ni takšnega programa" #: ../js/misc/util.js:148 #, c-format @@ -144,27 +148,27 @@ msgid "Execution of '%s' failed:" msgstr "Izvedba '%s' je spodletela:" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:174 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "Vse" -#: ../js/ui/appDisplay.js:261 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "Programi" -#: ../js/ui/appDisplay.js:291 -msgid "PREFERENCES" -msgstr "Možnosti" +#: ../js/ui/appDisplay.js:350 +msgid "SETTINGS" +msgstr "NASTAVITVE" -#: ../js/ui/appDisplay.js:592 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "Novo okno" -#: ../js/ui/appDisplay.js:596 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Odstrani iz priljubljenih" -#: ../js/ui/appDisplay.js:597 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Dodaj med priljubljene" @@ -181,19 +185,19 @@ msgstr "Program \"%s\" je odstranjen iz priljubljenih." #. 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:65 +#: ../js/ui/calendar.js:66 msgctxt "event list time" msgid "All Day" msgstr "Celodnevno" #. Translators: Shown in calendar event list, if 24h format -#: ../js/ui/calendar.js:70 +#: ../js/ui/calendar.js:71 msgctxt "event list time" msgid "%H:%M" msgstr "%H:%M" #. Transators: Shown in calendar event list, if 12h format -#: ../js/ui/calendar.js:77 +#: ../js/ui/calendar.js:78 #, fuzzy msgctxt "event list time" msgid "%l:%M %p" @@ -204,43 +208,43 @@ msgstr "%l:%M %p" #. * NOTE: These grid abbreviations are always shown together #. * and in order, e.g. "S M T W T F S". #. -#: ../js/ui/calendar.js:117 +#: ../js/ui/calendar.js:118 msgctxt "grid sunday" msgid "S" msgstr "N" #. Translators: Calendar grid abbreviation for Monday -#: ../js/ui/calendar.js:119 +#: ../js/ui/calendar.js:120 msgctxt "grid monday" msgid "M" msgstr "P" #. Translators: Calendar grid abbreviation for Tuesday -#: ../js/ui/calendar.js:121 +#: ../js/ui/calendar.js:122 msgctxt "grid tuesday" msgid "T" msgstr "T" #. Translators: Calendar grid abbreviation for Wednesday -#: ../js/ui/calendar.js:123 +#: ../js/ui/calendar.js:124 msgctxt "grid wednesday" msgid "W" msgstr "S" #. Translators: Calendar grid abbreviation for Thursday -#: ../js/ui/calendar.js:125 +#: ../js/ui/calendar.js:126 msgctxt "grid thursday" msgid "T" msgstr "Č" #. Translators: Calendar grid abbreviation for Friday -#: ../js/ui/calendar.js:127 +#: ../js/ui/calendar.js:128 msgctxt "grid friday" msgid "F" msgstr "P" #. Translators: Calendar grid abbreviation for Saturday -#: ../js/ui/calendar.js:129 +#: ../js/ui/calendar.js:130 #, fuzzy msgctxt "grid saturday" msgid "S" @@ -252,148 +256,145 @@ msgstr "S" #. * so they need to be unique (e.g. Tuesday and Thursday cannot #. * both be 'T'). #. -#: ../js/ui/calendar.js:142 +#: ../js/ui/calendar.js:143 #, fuzzy msgctxt "list sunday" msgid "Su" msgstr "ne" #. Translators: Event list abbreviation for Monday -#: ../js/ui/calendar.js:144 +#: ../js/ui/calendar.js:145 #, fuzzy msgctxt "list monday" msgid "M" msgstr "M" #. Translators: Event list abbreviation for Tuesday -#: ../js/ui/calendar.js:146 +#: ../js/ui/calendar.js:147 #, fuzzy msgctxt "list tuesday" msgid "T" msgstr "T" #. Translators: Event list abbreviation for Wednesday -#: ../js/ui/calendar.js:148 +#: ../js/ui/calendar.js:149 msgctxt "list wednesday" msgid "W" msgstr "S" #. Translators: Event list abbreviation for Thursday -#: ../js/ui/calendar.js:150 +#: ../js/ui/calendar.js:151 #, fuzzy msgctxt "list thursday" msgid "Th" msgstr "če" #. Translators: Event list abbreviation for Friday -#: ../js/ui/calendar.js:152 +#: ../js/ui/calendar.js:153 #, fuzzy msgctxt "list friday" msgid "F" msgstr "F" #. Translators: Event list abbreviation for Saturday -#: ../js/ui/calendar.js:154 +#: ../js/ui/calendar.js:155 #, fuzzy msgctxt "list saturday" msgid "S" msgstr "S" #. Translators: Text to show if there are no events -#: ../js/ui/calendar.js:701 +#: ../js/ui/calendar.js:704 #, fuzzy msgid "Nothing Scheduled" msgstr "Načrtovane naloge" #. Translators: Shown on calendar heading when selected day occurs on current year -#: ../js/ui/calendar.js:717 +#: ../js/ui/calendar.js:720 msgctxt "calendar heading" msgid "%A, %B %d" msgstr "" #. Translators: Shown on calendar heading when selected day occurs on different year -#: ../js/ui/calendar.js:720 +#: ../js/ui/calendar.js:723 #, fuzzy msgctxt "calendar heading" msgid "%A, %B %d, %Y" msgstr "%A, %d %B %Y" -#: ../js/ui/calendar.js:730 +#: ../js/ui/calendar.js:733 msgid "Today" msgstr "Danes" -#: ../js/ui/calendar.js:734 +#: ../js/ui/calendar.js:737 msgid "Tomorrow" msgstr "Jutri" -#: ../js/ui/calendar.js:743 -#, fuzzy +#: ../js/ui/calendar.js:746 msgid "This week" msgstr "Ta teden" -#: ../js/ui/calendar.js:751 -#, fuzzy +#: ../js/ui/calendar.js:754 msgid "Next week" -msgstr "Vsak teden" +msgstr "Naslednji teden" #: ../js/ui/dash.js:174 +#: ../js/ui/messageTray.js:933 msgid "Remove" msgstr "Odstrani" #: ../js/ui/dateMenu.js:91 -#, fuzzy msgid "Date and Time Settings" msgstr "Nastavitve časa in datuma" -#: ../js/ui/dateMenu.js:110 -#, fuzzy +#: ../js/ui/dateMenu.js:111 msgid "Open Calendar" -msgstr "_Odpri koledar" +msgstr "Odpri koledar" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:149 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a. %e. %b., %R:%S" -#: ../js/ui/dateMenu.js:150 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a, %e. %b., %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:154 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a. %R:%S" -#: ../js/ui/dateMenu.js:155 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a. %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:162 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a. %e. %b., %H:%M:%S" -#: ../js/ui/dateMenu.js:163 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a. %e. %b., %H:%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:167 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a, %H:%M:%S" -#: ../js/ui/dateMenu.js:168 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a, %H:%M" #. 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:194 +#: ../js/ui/dateMenu.js:209 #, fuzzy msgid "%A %B %e, %Y" msgstr "%a, %e. %b., %R" @@ -433,7 +434,6 @@ msgstr "Onemogoči odjavo" #: ../js/ui/endSessionDialog.js:74 #: ../js/ui/endSessionDialog.js:78 -#, fuzzy msgid "Shut Down" msgstr "Izklopi" @@ -480,38 +480,42 @@ msgstr "Potrdi" msgid "Cancel" msgstr "Prekliči" -#: ../js/ui/lookingGlass.js:584 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "Ni nameščenih razširitev" -#: ../js/ui/lookingGlass.js:621 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "Omogočeno" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:623 +#: ../js/ui/lookingGlass.js:627 #: ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Onemogočeno" -#: ../js/ui/lookingGlass.js:625 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "Napaka" -#: ../js/ui/lookingGlass.js:627 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "Zastarelo" -#: ../js/ui/lookingGlass.js:652 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "Poglej vir" -#: ../js/ui/lookingGlass.js:658 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "Spletna stran" -#: ../js/ui/messageTray.js:1854 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "Odpri" + +#: ../js/ui/messageTray.js:1963 msgid "System Information" msgstr "Podrobnosti sistema" @@ -519,26 +523,37 @@ msgstr "Podrobnosti sistema" msgid "Undo" msgstr "Razveljavi" -#: ../js/ui/overview.js:159 +#: ../js/ui/overview.js:183 msgid "Windows" msgstr "Okna" -#: ../js/ui/overview.js:162 +#: ../js/ui/overview.js:186 msgid "Applications" msgstr "Programi" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:480 +#: ../js/ui/panel.js:560 #, c-format msgid "Quit %s" msgstr "Končaj %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:614 +#: ../js/ui/panel.js:919 msgid "Activities" msgstr "Dejavnosti" +#: ../js/ui/panel.js:1020 +#, fuzzy +msgid "Panel" +msgstr "Prekliči" + #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" @@ -561,101 +576,102 @@ msgstr "Mesta in naprave" #. "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:512 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:209 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Vnos ukaza:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "Iskanje ..." -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "Ni zadetkov iskanja" #: ../js/ui/statusMenu.js:102 +#: ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "" + +#: ../js/ui/statusMenu.js:104 +#: ../js/ui/statusMenu.js:165 +#, fuzzy +msgid "Suspend" +msgstr "V pripravljenost" + +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "Na voljo" -#: ../js/ui/statusMenu.js:107 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "Zaposleno" -#: ../js/ui/statusMenu.js:115 +#: ../js/ui/statusMenu.js:138 msgid "My Account" msgstr "Račun" -#: ../js/ui/statusMenu.js:119 +#: ../js/ui/statusMenu.js:142 msgid "System Settings" msgstr "Sistemske nastavitve" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Zakleni zaslon" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Preklopi uporabnika" -#: ../js/ui/statusMenu.js:135 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Odjava ..." -#. This is temporarily removed, see -#. http://bugzilla.gnome.org/show_bug.cgi?id=636680 -#. for details. -#. item = new PopupMenu.PopupMenuItem(_("Suspend...")); -#. item.connect('activate', Lang.bind(this, this._onShutDownActivate)); -#. this.menu.addMenuItem(item); -#: ../js/ui/statusMenu.js:149 -msgid "Shut Down..." -msgstr "Izklopi ..." - -#: ../js/ui/status/accessibility.js:83 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "Približanje" -#: ../js/ui/status/accessibility.js:89 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "Zaslonski bralnik" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "Zaslonska tipkovnica" -#: ../js/ui/status/accessibility.js:95 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "Vidna opozorila" -#: ../js/ui/status/accessibility.js:98 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "Lepljive tipke" -#: ../js/ui/status/accessibility.js:101 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "Počasne tipke" -#: ../js/ui/status/accessibility.js:104 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "Odskočne tipke" -#: ../js/ui/status/accessibility.js:107 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "Miškine tipke" -#: ../js/ui/status/accessibility.js:111 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "Splošne nastavitve dostopa" -#: ../js/ui/status/accessibility.js:163 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "Visok kontrast" -#: ../js/ui/status/accessibility.js:205 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Veliko besedilo" @@ -673,9 +689,8 @@ msgid "Visibility" msgstr "Vidnost" #: ../js/ui/status/bluetooth.js:69 -#, fuzzy msgid "Send Files to Device..." -msgstr "Pošiljanje datotek na napravo ..." +msgstr "Pošilji datoteke na napravo ..." #: ../js/ui/status/bluetooth.js:70 #, fuzzy @@ -688,7 +703,6 @@ msgid "Bluetooth Settings" msgstr "Nastavitve za Bluetooth" #: ../js/ui/status/bluetooth.js:192 -#, fuzzy msgid "Connection" msgstr "Povezava" @@ -721,7 +735,7 @@ msgid "Mouse Settings" msgstr "Nastavitve računa" #: ../js/ui/status/bluetooth.js:263 -#: ../js/ui/status/volume.js:63 +#: ../js/ui/status/volume.js:65 msgid "Sound Settings" msgstr "Nastavitve zvoka" @@ -789,7 +803,11 @@ msgstr "Vnesite prehodno geslo naprave %s." msgid "OK" msgstr "V redu" -#: ../js/ui/status/keyboard.js:72 +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "Pokaži razporeditev tipkovnice ..." + +#: ../js/ui/status/keyboard.js:76 #, fuzzy msgid "Localization Settings" msgstr "Nastavitve računa" @@ -798,7 +816,13 @@ msgstr "Nastavitve računa" msgid "Power Settings" msgstr "Upravljanje napajanja" -#: ../js/ui/status/power.js:112 +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "" + +#: ../js/ui/status/power.js:117 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -808,12 +832,12 @@ msgstr[2] "preostajata še %d uri" msgstr[3] "preostajajo še %d ure" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:115 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d %s %d %s remaining" msgstr "Preostaja še %d %s %d %s" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "hour" msgid_plural "hours" msgstr[0] "ur" @@ -821,7 +845,7 @@ msgstr[1] "ura" msgstr[2] "uri" msgstr[3] "ure" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:122 msgid "minute" msgid_plural "minutes" msgstr[0] "minut" @@ -829,7 +853,7 @@ msgstr[1] "minuta" msgstr[2] "minuti" msgstr[3] "minute" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:125 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" @@ -838,79 +862,79 @@ msgstr[1] "preostaja še %d minuta" msgstr[2] "preostajata še %d minuti" msgstr[3] "preostajajo še %d minute" -#: ../js/ui/status/power.js:235 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "Električni prilagodilnik" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "Baterija prenosnika" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "Zaslon" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "Miška" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "Tipkovnica" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "Dlančnik" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "Mobilni telefon" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "Predstavni predvajalnik" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "Tablični računalnik" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "Računalnik" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:249 #: ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Neznano" -#: ../js/ui/status/volume.js:42 +#: ../js/ui/status/volume.js:44 msgid "Volume" msgstr "Glasnost" -#: ../js/ui/status/volume.js:55 +#: ../js/ui/status/volume.js:57 msgid "Microphone" msgstr "Mikrofon" -#: ../js/ui/telepathyClient.js:563 +#: ../js/ui/telepathyClient.js:239 #, fuzzy, c-format msgid "%s is online." msgstr "%s je povezan" -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:244 #, fuzzy, c-format msgid "%s is offline." msgstr "%s ni povezan." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:247 #, fuzzy, c-format msgid "%s is away." msgstr "Uporabnik %s je odsoten:" -#: ../js/ui/telepathyClient.js:574 +#: ../js/ui/telepathyClient.js:250 #, fuzzy, c-format msgid "%s is busy." msgstr "\"%s\" je zaposlen:" @@ -918,21 +942,30 @@ msgstr "\"%s\" je zaposlen:" #. Translators: this is a time format string followed by a date. #. If applicable, replace %X with a strftime format valid for your #. locale, without seconds. -#: ../js/ui/telepathyClient.js:669 +#: ../js/ui/telepathyClient.js:348 #, fuzzy, no-c-format msgid "Sent at %X on %A" msgstr "Sporočilo poslano ob odsotnosti " -#: ../js/ui/viewSelector.js:26 -msgid "Search your computer" -msgstr "Iskanje po računalniku" +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:117 +msgid "Type to search..." +msgstr "" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/viewSelector.js:137 +#: ../src/shell-util.c:250 +msgid "Search" +msgstr "Poišči" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s je končal začenjanje" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "'%s' storitev je pripravljena" @@ -963,11 +996,15 @@ msgstr[3] "%u dovodi naprave" msgid "System Sounds" msgstr "Sistemski zvoki" -#: ../src/shell-global.c:1363 +#: ../src/main.c:395 +msgid "Print version" +msgstr "Izpiši različico" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Pred manj kot eno minuto" -#: ../src/shell-global.c:1367 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -976,7 +1013,7 @@ msgstr[1] "Pred %d minuto" msgstr[2] "Pred %d minutama" msgstr[3] "Pred %d minutami" -#: ../src/shell-global.c:1372 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -985,7 +1022,7 @@ msgstr[1] "Pred %d uro" msgstr[2] "Pred %d urama" msgstr[3] "Pred %d urami" -#: ../src/shell-global.c:1377 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -994,7 +1031,7 @@ msgstr[1] "Pred %d dnevom" msgstr[2] "Pred %d dnevoma" msgstr[3] "Pred %d dnevi" -#: ../src/shell-global.c:1382 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -1003,6 +1040,10 @@ msgstr[1] "Pred %d tednom" msgstr[2] "Pred %d tednoma" msgstr[3] "Pred %d tedni" +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "" + #: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Domača mapa" @@ -1013,10 +1054,6 @@ msgstr "Domača mapa" msgid "File System" msgstr "Datotečni sistem" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "Poišči" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the @@ -1027,20 +1064,34 @@ msgstr "Poišči" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "PREFERENCES" +#~ msgstr "Možnosti" + +#~ msgid "Shut Down..." +#~ msgstr "Izklopi ..." + +#~ msgid "Search your computer" +#~ msgstr "Iskanje po računalniku" + #~ msgid "Clip the crosshairs at the center" #~ msgstr "Ali merek prekriva kazalko miške v središču" + #~ msgid "Color of the crosshairs" #~ msgstr "Barva merka" + #~ msgid "" #~ "Determines the length of the vertical and horizontal lines that make up " #~ "the crosshairs." #~ msgstr "Določi dolžino navpične in vodoravne črte, ki določata merek." + #~ msgid "" #~ "Determines the transparency of the crosshairs, from fully opaque to fully " #~ "transparent." #~ msgstr "Določi prosojnost merka, od prekrivne to prozorne." + #~ msgid "Enable lens mode" #~ msgstr "Omogočeni način leče" + #~ msgid "" #~ "For centered mouse tracking, when the system pointer is at or near the " #~ "edge of the screen, the magnified contents continue to scroll such that " @@ -1049,79 +1100,100 @@ msgstr "%1$s: %2$s" #~ "Pri usredinjenem sledenju miški, ko je sistemski kazalnik ob robu " #~ "zaslona, približanje vsebine drsi naprej tako, da je rob zaslona v " #~ "približanem pogledu." + #~ msgid "Length of the crosshairs" #~ msgstr "Dolžina merka" + #~ msgid "Magnification factor" #~ msgstr "Faktor približanja" + #~ msgid "Mouse Tracking Mode" #~ msgstr "Način sledenja miške" + #~ msgid "Opacity of the crosshairs" #~ msgstr "Prosojnost merka" + #~ msgid "Screen position" #~ msgstr "Položaj zaslona" + #~ msgid "Scroll magnified contents beyond the edges of the desktop" #~ msgstr "Zdrsni približano vsebino preko robov namizja" + #~ msgid "Show or hide crosshairs" #~ msgstr "Pokaži ali skrij merek" + #~ msgid "Show or hide the magnifier" #~ msgstr "Pokaži ali skrij približevalnik" + #~ msgid "Show or hide the magnifier and all of its zoom regions." #~ msgstr "Pokaže ali skrije povečevalo in vsa njegova območja približevanja." + #~ msgid "" #~ "The color of the the vertical and horizontal lines that make up the " #~ "crosshairs." #~ msgstr "Barva navpične in vodoravne črte, ki določata merek." + #~ msgid "" #~ "The magnified view either fills the entire screen, or occupies the top-" #~ "half, bottom-half, left-half, or right-half of the screen." #~ msgstr "" #~ "Približan pogled lahko zapolni celoten zaslon, lahko pa zasede zgornjo, " #~ "spodnjo, levo ali pa desno polovico zaslona." + #~ msgid "" #~ "The power of the magnification. A value of 1.0 means no magnification. A " #~ "value of 2.0 doubles the size." #~ msgstr "" #~ "Vrednost približanja. Vrednost 1.0 pomeni brez približanja, vrednost 2.0 " #~ "pa podvoji učinek približanja." + #~ msgid "Thickness of the crosshairs" #~ msgstr "Debelina merka" + #~ msgid "" #~ "Whether the magnified view should be centered over the location of the " #~ "system mouse and move with it." #~ msgstr "" #~ "Ali naj bo približan pogled usredinjen na mesto sistemske miške in se z " #~ "njo premika." + #~ msgid "" #~ "Width of the vertical and horizontal lines that make up the crosshairs." #~ msgstr "Širina navpične in vodoravne čete, ki določata merek." -#~ msgid "Suspend..." -#~ msgstr "V pripravljenost" #, fuzzy #~ msgid "Bluetooth Agent" #~ msgstr "Agent KAOS" + #~ msgid "" #~ "Can't add a new workspace because maximum workspaces limit has been " #~ "reached." #~ msgstr "" #~ "Ni mogoče dodati nove delovne površine, ker je doseženo njihovo največje " #~ "dovoljeno število." + #~ msgid "Can't remove the first workspace." #~ msgstr "Ni mogoče odstraniti prve delovne površine." + #~ msgid "Clock" #~ msgstr "Ura" + #~ msgid "Customize the panel clock" #~ msgstr "Prilagodi uro pladnja" + #~ msgid "Custom format of the clock" #~ msgstr "Zapis ure po meri" + #~ msgid "Hour format" #~ msgstr "Urni zapis" + #~ msgid "" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" #~ "Izbrana možnost določa ali \"12-urni\" ali pa \"24-urni\" zapis časa s " #~ "prikazanimi sekundami." + #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " #~ "is set to \"custom\". You can use conversion specifiers understood by " @@ -1132,79 +1204,106 @@ msgstr "%1$s: %2$s" #~ "zapisa nastavljen kot \"prikrojen\". Za določitev zapisa lahko uporabite " #~ "tudi oznake funkcije strftime(), ki so podrobneje zapisane v priročniku " #~ "funkcije." + #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " -#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " -#~ "1970-01-01. If set to \"custom\", the clock will display time according " -#~ "to the format specified in the custom_format key. Note that if set to " -#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " -#~ "ignored." +#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-" +#~ "01-01. If set to \"custom\", the clock will display time according to the " +#~ "format specified in the custom_format key. Note that if set to either " +#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored." #~ msgstr "" #~ "Ključ določa zapis ure. Mogoče vrednosti so \"12-urni\", \"24-urni\", " #~ "\"unix\" in \"po meri\". Možnost \"unix\" prikazuje čas v sekundah od " #~ "začetka ere, torej od 01.01.1970, možnost \"po meri\" pa omogoča " #~ "prikrojen zapis. Pri izbiri zapisa \"unix\" ali \"po meri\" sta izbiri " #~ "pokaži datum in pokaži sekunde, prezrti." + #~ msgid "Clock Format" #~ msgstr "Zapis ure" + #~ msgid "Clock Preferences" #~ msgstr "Možnosti ure" + #~ msgid "Panel Display" #~ msgstr "Prikazovanje pladnja" + #~ msgid "Show seco_nds" #~ msgstr "Pokaži _sekunde" + #~ msgid "Show the _date" #~ msgstr "Pokaži _datum" + #~ msgid "_12 hour format" #~ msgstr "_12-urni zapis časa" + #~ msgid "_24 hour format" #~ msgstr "_24-urni zapis časa" + #~ msgid "Preferences" #~ msgstr "Možnosti" + #~ msgid "What's using power..." #~ msgstr "Kaj porablja napetost ..." + #~ msgid "Overview workspace view mode" #~ msgstr "Način pregleda predogleda delovnih površin" + #~ msgid "" #~ "The selected workspace view mode in the overview. Supported values are " #~ "\"single\" and \"grid\"." #~ msgstr "" #~ "Izbrani pogled delovnih površin v predogledu. Podprte vrednosti sta " #~ "\"enojno\" in \"mrežno\"." + #~ msgid "Drag here to add favorites" #~ msgstr "S potegom na to mesto se izbor doda med priljubljene" + #~ msgid "Find" #~ msgstr "Najdi" + #~ msgid "Invisible" #~ msgstr "Nevidno" + #~ msgid "System Preferences..." #~ msgstr "Sistemske možnosti ..." + #~ msgid "ON" #~ msgstr "⚪" + #~ msgid "OFF" #~ msgstr "⚫" + #~ msgid "Sidebar" #~ msgstr "Stranska vrstica" + #~ msgid "Recent Documents" #~ msgstr "Nedavni dokumenti" + #~ msgid "PLACES" #~ msgstr "Mesta" + #~ msgid "SEARCH RESULTS" #~ msgstr "Rezultati iskanja" + #~ msgid "Can't lock screen: %s" #~ msgstr "Ni mogoče zakleniti zaslona: %s" + #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "" #~ "Ni mogoče začasno nastaviti črnega zaslona za ohranjevalnik zaslona: %s" + #~ msgid "Can't logout: %s" #~ msgstr "Ni se mogoče odjaviti: %s" + #~ msgid "Frequent" #~ msgstr "Pogosto" + #~ msgid "More" #~ msgstr "Več" + #~ msgid "(see all)" #~ msgstr "(poglej vse)" + #~ msgid "Browse" #~ msgstr "Prebrskaj" - From c3eca3d7540650342ec718a7c0044e72580dba8e Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Wed, 9 Mar 2011 19:37:05 +0100 Subject: [PATCH 68/74] Updated Spanish translation --- po/es.po | 202 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 110 insertions(+), 92 deletions(-) diff --git a/po/es.po b/po/es.po index 43736afb8..c31c1eab9 100644 --- a/po/es.po +++ b/po/es.po @@ -1,17 +1,17 @@ # Spanish translation of gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. -# Daniel Mustieles , 2010, 2011. # Jorge González , 2009, 2010, 2011. +# Daniel Mustieles , 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gnome-shell.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&component=general\n" -"POT-Creation-Date: 2011-03-02 00:20+0000\n" -"PO-Revision-Date: 2011-03-02 20:39+0100\n" -"Last-Translator: Jorge González \n" +"POT-Creation-Date: 2011-03-08 05:43+0000\n" +"PO-Revision-Date: 2011-03-08 10:00+0100\n" +"Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -95,16 +95,16 @@ msgid "" "at the optimal thread count on the system." msgstr "" "Establece la tubería GStreamer usada para codificar grabaciones. Sigue la " -"sintaxis usada para gst-launch. La tubería debería tener un sumidero " -"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se " -"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida " -"de ese punto se escibirá en el archivo de salida. No obstante la tubería " -"también puede tomar parte en su propia salida; esto se puede usar para " -"enviar la salida a un servidor «icecast» a través de shout2send o similar. " -"Cuando no está establecido o lo está a un valor vacío, se usará la tubería " -"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 " -"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T " -"como suposición para el número de hilos óptimos en el sistema." +"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») " +"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. " +"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese " +"punto se escibirá en el archivo de salida. No obstante la tubería también " +"puede tomar parte en su propia salida; esto se puede usar para enviar la " +"salida a un servidor «icecast» a través de shout2send o similar. Cuando no " +"está establecido o lo está a un valor vacío, se usará la tubería " +"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads=" +"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como " +"suposición para el número de hilos óptimos en el sistema." #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" @@ -193,27 +193,27 @@ msgid "Execution of '%s' failed:" msgstr "Falló la ejecución de «%s»:" #. Translators: Filter to display all applications -#: ../js/ui/appDisplay.js:195 +#: ../js/ui/appDisplay.js:226 msgid "All" msgstr "Todas" -#: ../js/ui/appDisplay.js:282 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "APLICACIONES" -#: ../js/ui/appDisplay.js:312 +#: ../js/ui/appDisplay.js:350 msgid "SETTINGS" msgstr "CONFIGURACIÓN" -#: ../js/ui/appDisplay.js:572 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "Ventana nueva" -#: ../js/ui/appDisplay.js:575 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Quitar de los favoritos" -#: ../js/ui/appDisplay.js:576 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Añadir a los favoritos" @@ -373,7 +373,7 @@ msgstr "Esta semana" msgid "Next week" msgstr "La semana que viene" -#: ../js/ui/dash.js:174 +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:933 msgid "Remove" msgstr "Quitar" @@ -381,54 +381,54 @@ msgstr "Quitar" msgid "Date and Time Settings" msgstr "Ajustes de hora y fecha" -#: ../js/ui/dateMenu.js:110 +#: ../js/ui/dateMenu.js:111 msgid "Open Calendar" msgstr "Abrir calendario" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:162 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" -#: ../js/ui/dateMenu.js:163 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %e de %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/dateMenu.js:167 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/dateMenu.js:168 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/dateMenu.js:175 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %H:%M:%S" -#: ../js/ui/dateMenu.js:176 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %e de %b, %H:%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/dateMenu.js:180 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/dateMenu.js:181 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a %H:%M" #. 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:207 +#: ../js/ui/dateMenu.js:209 msgid "%A %B %e, %Y" msgstr "%A, %e de %B de %Y" @@ -508,37 +508,41 @@ msgstr "Confirmar" msgid "Cancel" msgstr "Cancelar" -#: ../js/ui/lookingGlass.js:587 +#: ../js/ui/lookingGlass.js:588 msgid "No extensions installed" msgstr "No hay extensiones instaladas" -#: ../js/ui/lookingGlass.js:624 +#: ../js/ui/lookingGlass.js:625 msgid "Enabled" msgstr "Activado" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:626 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Desactivado" -#: ../js/ui/lookingGlass.js:628 +#: ../js/ui/lookingGlass.js:629 msgid "Error" msgstr "Error" -#: ../js/ui/lookingGlass.js:630 +#: ../js/ui/lookingGlass.js:631 msgid "Out of date" msgstr "Caducado" -#: ../js/ui/lookingGlass.js:655 +#: ../js/ui/lookingGlass.js:656 msgid "View Source" msgstr "Ver fuente" -#: ../js/ui/lookingGlass.js:661 +#: ../js/ui/lookingGlass.js:662 msgid "Web Page" msgstr "Página web" -#: ../js/ui/messageTray.js:1902 +#: ../js/ui/messageTray.js:926 +msgid "Open" +msgstr "Abrir" + +#: ../js/ui/messageTray.js:1963 msgid "System Information" msgstr "Información del sistema" @@ -554,18 +558,29 @@ msgstr "Ventanas" msgid "Applications" msgstr "Aplicaciones" +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:529 +#: ../js/ui/panel.js:532 #, c-format msgid "Quit %s" msgstr "Salir de %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:897 +#: ../js/ui/panel.js:893 msgid "Activities" msgstr "Actividades" +#: ../js/ui/panel.js:994 +#| msgid "Cancel" +msgid "Panel" +msgstr "Panel" + #: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" @@ -588,7 +603,7 @@ msgstr "LUGARES Y DISPOSITIVOS" #. "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:612 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-intl" @@ -596,11 +611,11 @@ msgstr "toggle-switch-intl" msgid "Please enter a command:" msgstr "Introduzca un comando:" -#: ../js/ui/searchDisplay.js:295 +#: ../js/ui/searchDisplay.js:283 msgid "Searching..." msgstr "Buscando…" -#: ../js/ui/searchDisplay.js:309 +#: ../js/ui/searchDisplay.js:297 msgid "No matching results." msgstr "No se encontró ningún resultado coincidente." @@ -640,47 +655,47 @@ msgstr "Cambiar de usuario" msgid "Log Out..." msgstr "Cerrar la sesión…" -#: ../js/ui/status/accessibility.js:81 +#: ../js/ui/status/accessibility.js:62 msgid "Zoom" msgstr "Ampliación" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:69 msgid "Screen Reader" msgstr "Lector de pantalla" -#: ../js/ui/status/accessibility.js:92 +#: ../js/ui/status/accessibility.js:73 msgid "Screen Keyboard" msgstr "Teclado en pantalla" -#: ../js/ui/status/accessibility.js:96 +#: ../js/ui/status/accessibility.js:77 msgid "Visual Alerts" msgstr "Alertas visuales" -#: ../js/ui/status/accessibility.js:99 +#: ../js/ui/status/accessibility.js:80 msgid "Sticky Keys" msgstr "Teclas persistentes" -#: ../js/ui/status/accessibility.js:102 +#: ../js/ui/status/accessibility.js:83 msgid "Slow Keys" msgstr "Teclas lentas" -#: ../js/ui/status/accessibility.js:105 +#: ../js/ui/status/accessibility.js:86 msgid "Bounce Keys" msgstr "Rechazo de teclas" -#: ../js/ui/status/accessibility.js:108 +#: ../js/ui/status/accessibility.js:89 msgid "Mouse Keys" msgstr "Teclas del ratón" -#: ../js/ui/status/accessibility.js:112 +#: ../js/ui/status/accessibility.js:93 msgid "Universal Access Settings" msgstr "Preferencias del acceso universal" -#: ../js/ui/status/accessibility.js:164 +#: ../js/ui/status/accessibility.js:145 msgid "High Contrast" msgstr "Contraste alto" -#: ../js/ui/status/accessibility.js:209 +#: ../js/ui/status/accessibility.js:182 msgid "Large Text" msgstr "Texto:" @@ -847,51 +862,51 @@ msgid_plural "%d minutes remaining" msgstr[0] "Queda %d minuto" msgstr[1] "Queda %d minutos" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:227 msgid "AC adapter" msgstr "Adaptador de corriente" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:229 msgid "Laptop battery" msgstr "Batería del portátil" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:231 msgid "UPS" msgstr "SAI" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:233 msgid "Monitor" msgstr "Monitor" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:235 msgid "Mouse" msgstr "Ratón" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:237 msgid "Keyboard" msgstr "Teclado" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:239 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:241 msgid "Cell phone" msgstr "Teléfono móvil" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:243 msgid "Media player" msgstr "Reproductor multimedia" -#: ../js/ui/status/power.js:259 +#: ../js/ui/status/power.js:245 msgid "Tablet" msgstr "Tableta" -#: ../js/ui/status/power.js:261 +#: ../js/ui/status/power.js:247 msgid "Computer" msgstr "Equipo" -#: ../js/ui/status/power.js:263 ../src/shell-app-system.c:1013 +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 msgid "Unknown" msgstr "Desconocido" @@ -935,16 +950,20 @@ msgstr "Enviado a las %X el %A" #. in the search entry when no search is #. active; it should not exceed ~30 #. characters. -#: ../js/ui/viewSelector.js:103 +#: ../js/ui/viewSelector.js:117 msgid "Type to search..." msgstr "Teclear para buscar…" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "Buscar" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "%s finalizó su lanzamiento" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "«%s» está preparado" @@ -971,32 +990,36 @@ msgstr[1] "%u entradas" msgid "System Sounds" msgstr "Sonidos del sistema" -#: ../src/shell-global.c:1298 +#: ../src/main.c:395 +msgid "Print version" +msgstr "Imprimir versión" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Hace menos de un minuto" -#: ../src/shell-global.c:1302 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Hace %d minuto" msgstr[1] "Hace %d minutos" -#: ../src/shell-global.c:1307 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Hace %d hora" msgstr[1] "Hace %d horas" -#: ../src/shell-global.c:1312 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Hace %d día" msgstr[1] "Hace %d días" -#: ../src/shell-global.c:1317 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -1017,10 +1040,6 @@ msgstr "Carpeta personal" msgid "File System" msgstr "Sistema de archivos" -#: ../src/shell-util.c:250 -msgid "Search" -msgstr "Buscar" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the @@ -1205,8 +1224,8 @@ msgstr "%1$s: %2$s" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" -#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los " -#~ "segundos en la hora." +#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos " +#~ "en la hora." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " @@ -1223,19 +1242,18 @@ msgstr "%1$s: %2$s" #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " -#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " -#~ "1970-01-01. If set to \"custom\", the clock will display time according " -#~ "to the format specified in the custom_format key. Note that if set to " -#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " -#~ "ignored." +#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-" +#~ "01-01. If set to \"custom\", the clock will display time according to the " +#~ "format specified in the custom_format key. Note that if set to either " +#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored." #~ msgstr "" #~ "Esta clave especifica el formato de la hora especificado por el reloj del " -#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 " -#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el " -#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). " -#~ "Si se establece a «custom» el reloj mostrará la hora según el formato " -#~ "especificado en la clave «custom_format». Note que si se establece a " -#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»." +#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), " +#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará " +#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece " +#~ "a «custom» el reloj mostrará la hora según el formato especificado en la " +#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se " +#~ "ignoran las claves «show_date» y «show_seconds»." #~ msgid "Clock Format" #~ msgstr "Formato del reloj" From f8b44cd30e8028b7ac8973ed00d4550930fce18c Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Wed, 9 Mar 2011 19:38:10 +0100 Subject: [PATCH 69/74] Updated Spanish translation --- po/es.po | 58 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/po/es.po b/po/es.po index c31c1eab9..165fe87f3 100644 --- a/po/es.po +++ b/po/es.po @@ -9,8 +9,8 @@ msgstr "" "Project-Id-Version: gnome-shell.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&component=general\n" -"POT-Creation-Date: 2011-03-08 05:43+0000\n" -"PO-Revision-Date: 2011-03-08 10:00+0100\n" +"POT-Creation-Date: 2011-03-09 18:36+0000\n" +"PO-Revision-Date: 2011-03-09 19:37+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -95,16 +95,16 @@ msgid "" "at the optimal thread count on the system." msgstr "" "Establece la tubería GStreamer usada para codificar grabaciones. Sigue la " -"sintaxis usada para gst-launch. La tubería debería tener un sumidero («sink») " -"de ensamblaje/sesensamblaje donde el vídeo que se está grabando se graba. " -"Generalmente tendrá un origen de ensamblado/desensamblado; la salida de ese " -"punto se escibirá en el archivo de salida. No obstante la tubería también " -"puede tomar parte en su propia salida; esto se puede usar para enviar la " -"salida a un servidor «icecast» a través de shout2send o similar. Cuando no " -"está establecido o lo está a un valor vacío, se usará la tubería " -"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 threads=" -"%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T como " -"suposición para el número de hilos óptimos en el sistema." +"sintaxis usada para gst-launch. La tubería debería tener un sumidero " +"(«sink») de ensamblaje/sesensamblaje donde el vídeo que se está grabando se " +"graba. Generalmente tendrá un origen de ensamblado/desensamblado; la salida " +"de ese punto se escibirá en el archivo de salida. No obstante la tubería " +"también puede tomar parte en su propia salida; esto se puede usar para " +"enviar la salida a un servidor «icecast» a través de shout2send o similar. " +"Cuando no está establecido o lo está a un valor vacío, se usará la tubería " +"predeterminada. Actualmente es «videorate ! vp8enc quality=10 speed=2 " +"threads=%T ! queue ! webmmux» y greba en WEBM usando el códec VP8. Se usa %T " +"como suposición para el número de hilos óptimos en el sistema." #: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" @@ -562,22 +562,21 @@ msgstr "Aplicaciones" #. the left of the overview #: ../js/ui/overview.js:202 msgid "Dash" -msgstr "" +msgstr "Plano" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:532 +#: ../js/ui/panel.js:560 #, c-format msgid "Quit %s" msgstr "Salir de %s" #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:893 +#: ../js/ui/panel.js:919 msgid "Activities" msgstr "Actividades" -#: ../js/ui/panel.js:994 -#| msgid "Cancel" +#: ../js/ui/panel.js:1020 msgid "Panel" msgstr "Panel" @@ -1224,8 +1223,8 @@ msgstr "%1$s: %2$s" #~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " #~ "in time." #~ msgstr "" -#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos " -#~ "en la hora." +#~ "Si es cierta y el formato es «12-horas» o «24-horas», muestra los " +#~ "segundos en la hora." #~ msgid "" #~ "This key specifies the format used by the panel clock when the format key " @@ -1242,18 +1241,19 @@ msgstr "%1$s: %2$s" #~ msgid "" #~ "This key specifies the hour format used by the panel clock. Possible " #~ "values are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to " -#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. 1970-" -#~ "01-01. If set to \"custom\", the clock will display time according to the " -#~ "format specified in the custom_format key. Note that if set to either " -#~ "\"unix\" or \"custom\", the show_date and show_seconds keys are ignored." +#~ "\"unix\", the clock will display time in seconds since Epoch, i.e. " +#~ "1970-01-01. If set to \"custom\", the clock will display time according " +#~ "to the format specified in the custom_format key. Note that if set to " +#~ "either \"unix\" or \"custom\", the show_date and show_seconds keys are " +#~ "ignored." #~ msgstr "" #~ "Esta clave especifica el formato de la hora especificado por el reloj del " -#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 horas), " -#~ "«unix» y «custom» (personalizado).Si se establece a «unix» el reloj mostrará " -#~ "la hora en segundos desde la época (1 de enero de 1970). Si se establece " -#~ "a «custom» el reloj mostrará la hora según el formato especificado en la " -#~ "clave «custom_format». Note que si se establece a «unix» o «custom» se " -#~ "ignoran las claves «show_date» y «show_seconds»." +#~ "panel. Los valores posibles son «12-hour» (12 horas), «24-hour» (24 " +#~ "horas), «unix» y «custom» (personalizado).Si se establece a «unix» el " +#~ "reloj mostrará la hora en segundos desde la época (1 de enero de 1970). " +#~ "Si se establece a «custom» el reloj mostrará la hora según el formato " +#~ "especificado en la clave «custom_format». Note que si se establece a " +#~ "«unix» o «custom» se ignoran las claves «show_date» y «show_seconds»." #~ msgid "Clock Format" #~ msgstr "Formato del reloj" From dc2cae07b293c5dc98ec8fb6ff242b903d631ee7 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 9 Mar 2011 14:00:25 +0100 Subject: [PATCH 70/74] notification: Remove scrollTo hack Remove the hack from Notification.scrollTo because it is unreliable, the caller should make sure to call scrollTo when it will actually have the desired effect. https://bugzilla.gnome.org/show_bug.cgi?id=614977 --- js/ui/messageTray.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index c9c977aaf..39b90f860 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -571,11 +571,6 @@ Notification.prototype = { // // Scrolls the content area (if scrollable) to the indicated edge scrollTo: function(side) { - // Hack to force a relayout, since the caller probably - // just added or removed something to scrollArea, and - // the adjustment needs to reflect that. - global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, 0, 0); - let adjustment = this._scrollArea.vscroll.adjustment; if (side == St.Side.TOP) adjustment.value = adjustment.lower; From a0a83428cfb21b12368d10711fabf9dd698d5a24 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 9 Mar 2011 13:56:35 +0100 Subject: [PATCH 71/74] telepathyClient: Pin the scrollbar to the bottom When new messages come in we want to scroll down so that the user sees the incoming messages. The current implementation does not work because it relies on a synchronous allocation hack which does not work for unmapped notifications. Fix that by connecting to adjustment::changed and scroll whenever the adjustment changes which equals "new messages", "new timestamp" or "presense change", but don't interference with the user's scroll actions i.e when the user scrolls back to read something don't scroll to the bottom. https://bugzilla.gnome.org/show_bug.cgi?id=614977 --- js/ui/messageTray.js | 29 ++++++++++++++++------------- js/ui/telepathyClient.js | 11 ++++++++++- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 39b90f860..4f2512238 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -518,25 +518,28 @@ Notification.prototype = { this._updated(); }, + _createScrollArea: function() { + this.actor.add_style_class_name('multi-line-notification'); + this._scrollArea = new St.ScrollView({ name: 'notification-scrollview', + vscrollbar_policy: Gtk.PolicyType.AUTOMATIC, + hscrollbar_policy: Gtk.PolicyType.NEVER, + vfade: true }); + this.actor.add(this._scrollArea, { row: 1, col: 1 }); + this._contentArea = new St.BoxLayout({ name: '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.actor.add_style_class_name('multi-line-notification'); - this._scrollArea = new St.ScrollView({ name: 'notification-scrollview', - vscrollbar_policy: Gtk.PolicyType.AUTOMATIC, - hscrollbar_policy: Gtk.PolicyType.NEVER, - vfade: true }); - this.actor.add(this._scrollArea, { row: 1, - col: 1 }); - this._contentArea = new St.BoxLayout({ name: '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(); + this._createScrollArea(); } this._contentArea.add(actor, style ? style : {}); diff --git a/js/ui/telepathyClient.js b/js/ui/telepathyClient.js index d835d3e2b..7dd972e7a 100644 --- a/js/ui/telepathyClient.js +++ b/js/ui/telepathyClient.js @@ -279,6 +279,16 @@ Notification.prototype = { this._responseEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivated)); this.setActionArea(this._responseEntry); + this._oldMaxScrollAdjustment = 0; + this._createScrollArea(); + + this._scrollArea.vscroll.adjustment.connect('changed', Lang.bind(this, function(adjustment) { + let currentValue = adjustment.value + adjustment.page_size; + if (currentValue == this._oldMaxScrollAdjustment) + this.scrollTo(St.Side.BOTTOM); + this._oldMaxScrollAdjustment = adjustment.upper; + })); + this._history = []; this._timestampTimeoutId = 0; }, @@ -305,7 +315,6 @@ Notification.prototype = { let body = this.addBody(text); body.add_style_class_name(style); - this.scrollTo(St.Side.BOTTOM); this._history.unshift({ actor: body, time: timestamp, realMessage: true }); From 6d07c3a1dfe235ac3d3dc18d7fceca27770be814 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dr=C4=85g?= Date: Wed, 9 Mar 2011 21:48:39 +0100 Subject: [PATCH 72/74] Updated Polish translation --- po/pl.po | 992 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 751 insertions(+), 241 deletions(-) diff --git a/po/pl.po b/po/pl.po index e29193518..45929ed68 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,16 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" -"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" -"shell&component=general\n" -"POT-Creation-Date: 2010-09-22 15:13+0000\n" -"PO-Revision-Date: 2010-09-22 18:14+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-03-09 21:48+0100\n" +"PO-Revision-Date: 2011-03-09 21:49+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" +"Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Poedit-Language: Polish\n" @@ -30,14 +29,6 @@ msgstr "Powłoka środowiska GNOME" msgid "Window management and application launching" msgstr "Zarządzanie oknami i uruchamianiem programów" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Zegar" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Dostosowanie panelu zegara" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -47,24 +38,20 @@ msgstr "" "używając okna dialogowego Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Własny format zegara" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Włącza wewnętrzne narzędzia przydatne programistom i testerom w oknie " "dialogowym Alt-F2" -#: ../data/org.gnome.shell.gschema.xml.in.h:4 +#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "File extension used for storing the screencast" msgstr "Rozszerzenie pliku używane do przechowywania nagrań pulpitu" -#: ../data/org.gnome.shell.gschema.xml.in.h:5 +#: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "Framerate used for recording screencasts." msgstr "Liczba klatek na sekundę do nagrywania pulpitu." -#: ../data/org.gnome.shell.gschema.xml.in.h:6 +#: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." @@ -72,47 +59,36 @@ msgstr "" "Rozszerzenia powłoki GNOME posiadają własność UUID; ten klucz zawiera " "rozszerzenia, które nie powinny zostać wczytane." -#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "Historia okna dialogowego poleceń (Alt-F2)" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "History for the looking glass dialog" +msgstr "Historia okna dialogowego looking glass" + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Format godziny" +msgid "If true, display date in the clock, in addition to time." +msgstr "" +"Jeśli jest ustawione na \"true\", to wyświetla datę w zegarze, dodatkowo do " +"czasu." #: ../data/org.gnome.shell.gschema.xml.in.h:9 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." -msgstr "" -"Jeśli jest ustawione na \"true\", a format to \"12-hour\" (zegar " -"dwunastogodzinny) lub \"24-hour\" (zegar dwudziestoczterogodzinny), to " -"wyświetla datę w zegarze, dodatkowo do czasu." +msgid "If true, display seconds in time." +msgstr "Jeśli jest ustawione na \"true\", to wyświetla sekundy w zegarze." #: ../data/org.gnome.shell.gschema.xml.in.h:10 -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." -msgstr "" -"Jeśli jest ustawione na \"true\", a format to \"12-hour\" (czas " -"dwunastogodzinny) lub \"24-hour\" (czas dwudziestoczterogodzinny), to " -"wyświetla sekundy." - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." msgstr "" "Jeśli jest ustawione na \"true\", to wyświetla dzień tygodnia w formacie ISO " "w kalendarzu." -#: ../data/org.gnome.shell.gschema.xml.in.h:12 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "List of desktop file IDs for favorite applications" msgstr "Lista identyfikatorów plików .desktop ulubionych programów" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "Tryb wyświetlania obszarów roboczych w podglądzie" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#, no-c-format msgid "" "Sets the GStreamer pipeline used to encode recordings. It follows the syntax " "used for gst-launch. The pipeline should have an unconnected sink pad where " @@ -121,7 +97,9 @@ msgid "" "pipeline can also take care of its own output - this might be used to send " "the output to an icecast server via shout2send or similar. When unset or set " "to an empty value, the default pipeline will be used. This is currently " -"'videorate ! theoraenc ! oggmux' and records to Ogg Theora." +"'videorate ! vp8enc quality=10 speed=2 threads=%T ! queue ! webmmux' and " +"records to WEBM using the VP8 codec. %T is used as a placeholder for a guess " +"at the optimal thread count on the system." msgstr "" "Ustawia potok biblioteki GStreamer używany do zakodowania nagrań. Używa " "składni programu gst-launch. Potok powinien posiadać niepołączony odpływ, " @@ -129,22 +107,24 @@ msgstr "" "pliku wyjściowego. Mimo, że potok może sam zająć się swoim wyjściem, można " "także wysłać wyjście do serwera icecast przez polecenie shout2send lub " "podobne. Jeśli nie zostanie ustawione lub ustawione na pustą wartość, to " -"zostanie użyty domyślny potok. Jest nim obecnie \"videorate ! theoraenc ! " -"oggmux\" i nagrywa do formatu Ogg Theora." +"zostanie użyty domyślny potok. Jest nim obecnie \"videorate ! vp8enc " +"quality=10 speed=2 threads=%T ! queue ! webmmux\" i nagrywa do formatu WebM " +"używając kodeka VP8. %T jest zamieniane na odgadniętą optymalną liczbę " +"wątków dla komputera." -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Wyświetlanie daty w zegarze" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "Show the week date in the calendar" msgstr "Wyświetlanie dnia tygodnia w kalendarzu" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Wyświetlanie czasu z sekundami" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -152,7 +132,7 @@ msgstr "" "Programy odpowiadające tym identyfikatorom będą wyświetlane w obszarze " "ulubionych." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "" "The filename for recorded screencasts will be a unique filename based on the " "current date, and use this extension. It should be changed when recording to " @@ -162,25 +142,17 @@ msgstr "" "dacie, i używającej tego rozszerzenia. Rozszerzenie powinno zostać " "zmienione, aby nagrywać w innym formacie kontenera." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "Liczba klatek na sekundę wynikowego nagrania pulpitu." -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "The gstreamer pipeline used to encode the screencast" msgstr "Potok biblioteki GStreamer używany do zakodowania nagrania pulpitu" -#: ../data/org.gnome.shell.gschema.xml.in.h:22 -msgid "" -"The selected workspace view mode in the overview. Supported values are " -"\"single\" and \"grid\"." -msgstr "" -"Wybrany tryb wyświetlania obszarów roboczych. Obsługiwane wartości to " -"\"single\" (pojedynczy obszar) i \"grid\" (siatka obszarów)." - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " @@ -190,313 +162,851 @@ msgstr "" "Powłoka zwykle monitoruje aktywne programy, aby przedstawiać najczęściej " "używane (np. aktywatory programów). Mimo, że te dane nie są publiczne, można " "wyłączyć je z powodu prywatności. Proszę zauważyć, że wyłączenie nie " -"spowoduje usunięcia zapisanych danych." +"spowoduje usunięcia już zapisanych danych." -#: ../data/org.gnome.shell.gschema.xml.in.h:24 -msgid "" -"This key specifies the format used by the panel clock when the format key is " -"set to \"custom\". You can use conversion specifiers understood by strftime" -"() to obtain a specific format. See the strftime() manual for more " -"information." -msgstr "" -"Ten klucz określa format używany przez zegar panelu, kiedy klucz formatu " -"ustawiony jest na \"custom\" (własny). Można użyć znaczników używanych przez " -"funkcję strftime(), aby uzyskać konkretny format. Proszę zobaczyć podręcznik " -"funkcji strftime(), aby dowiedzieć się więcej." - -#: ../data/org.gnome.shell.gschema.xml.in.h:25 -msgid "" -"This key specifies the hour format used by the panel clock. Possible values " -"are \"12-hour\", \"24-hour\", \"unix\" and \"custom\". If set to \"unix\", " -"the clock will display time in seconds since Epoch, i.e. 1970-01-01. If set " -"to \"custom\", the clock will display time according to the format specified " -"in the custom_format key. Note that if set to either \"unix\" or \"custom\", " -"the show_date and show_seconds keys are ignored." -msgstr "" -"Ten klucz określa format godzin używany przez zegar panelu. Możliwe wartości " -"to \"12-hour\" (czas dwunastogodzinny) lub \"24-hour\" (czas " -"dwudziestoczterogodzinny), \"unix\" (czas uniksowy) i \"custom\" (własny " -"format). Jeśli zostanie ustawione na \"custom\", zegar będzie wyświetlał " -"czas zgodnie z formatem określonym w kluczu \"custom_format\". Proszę " -"zauważyć, że jeśli zostanie ustawione \"unix\" lub \"custom\", klucze " -"\"show_date\" i \"show_seconds\" będą ignorowane." - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:22 msgid "Uuids of extensions to disable" msgstr "Lista UUID rozszerzeń do wyłączenia" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:23 msgid "Whether to collect stats about applications usage" msgstr "Określa, czy zbierać statystyki o użyciu programów" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Format zegara" +#: ../data/org.gnome.shell.gschema.xml.in.h:24 +msgid "disabled OpenSearch providers" +msgstr "Wyłączeni dostawcy OpenSearch" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Preferencje zegara" +#: ../js/misc/util.js:86 +msgid "Command not found" +msgstr "Nie odnaleziono polecenia" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Wyświetlanie na panelu" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:113 +msgid "Could not parse command:" +msgstr "Nie można przetworzyć polecenia:" -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Seku_ndy" +#: ../js/misc/util.js:135 +msgid "No such application" +msgstr "Nie ma takiego programu" -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "_Data" +#: ../js/misc/util.js:148 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Wykonanie polecenia \"%s\" się nie powiodło:" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_12 godzinny" +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:226 +msgid "All" +msgstr "Wszystkie" -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_24 godzinny" - -#. **** Applications **** -#: ../js/ui/appDisplay.js:316 ../js/ui/dash.js:778 +#: ../js/ui/appDisplay.js:324 msgid "APPLICATIONS" msgstr "Programy" -#: ../js/ui/appDisplay.js:348 -msgid "PREFERENCES" -msgstr "Preferencje" +#: ../js/ui/appDisplay.js:350 +msgid "SETTINGS" +msgstr "Ustawienia" -#: ../js/ui/appDisplay.js:653 +#: ../js/ui/appDisplay.js:612 msgid "New Window" msgstr "Nowe okno" -#: ../js/ui/appDisplay.js:657 +#: ../js/ui/appDisplay.js:615 msgid "Remove from Favorites" msgstr "Usuń z ulubionych" -#: ../js/ui/appDisplay.js:658 +#: ../js/ui/appDisplay.js:616 msgid "Add to Favorites" msgstr "Dodaj do ulubionych" -#: ../js/ui/appDisplay.js:986 -msgid "Drag here to add favorites" -msgstr "Przeciągnięcie tutaj doda do ulubionych" - -#: ../js/ui/appFavorites.js:88 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "Program %s został dodany do ulubionych." -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "Program %s został usunięty z ulubionych." -#: ../js/ui/dash.js:142 -msgid "Find" -msgstr "Wyszukiwanie" +#. 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:66 +msgctxt "event list time" +msgid "All Day" +msgstr "Cały dzień" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "Wyszukiwanie..." +#. Translators: Shown in calendar event list, if 24h format +#: ../js/ui/calendar.js:71 +msgctxt "event list time" +msgid "%H:%M" +msgstr "%H:%M" -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "Brak wyników." +#. Transators: Shown in calendar event list, if 12h format +#: ../js/ui/calendar.js:78 +msgctxt "event list time" +msgid "%l:%M %p" +msgstr "%l:%M %p" -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:797 ../js/ui/placeDisplay.js:554 -msgid "PLACES & DEVICES" -msgstr "Miejsca i urządzenia" +#. 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:118 +msgctxt "grid sunday" +msgid "S" +msgstr "N" -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 -msgid "RECENT ITEMS" -msgstr "Ostatnie elementy" +#. Translators: Calendar grid abbreviation for Monday +#: ../js/ui/calendar.js:120 +msgctxt "grid monday" +msgid "M" +msgstr "P" -#: ../js/ui/lookingGlass.js:552 -msgid "No extensions installed" -msgstr "Nie zainstalowano rozszerzeń" +#. Translators: Calendar grid abbreviation for Tuesday +#: ../js/ui/calendar.js:122 +msgctxt "grid tuesday" +msgid "T" +msgstr "W" -#: ../js/ui/lookingGlass.js:589 -msgid "Enabled" -msgstr "Włączone" +#. Translators: Calendar grid abbreviation for Wednesday +#: ../js/ui/calendar.js:124 +msgctxt "grid wednesday" +msgid "W" +msgstr "Ś" -#: ../js/ui/lookingGlass.js:591 -msgid "Disabled" -msgstr "Wyłączone" +#. Translators: Calendar grid abbreviation for Thursday +#: ../js/ui/calendar.js:126 +msgctxt "grid thursday" +msgid "T" +msgstr "C" -#: ../js/ui/lookingGlass.js:593 -msgid "Error" -msgstr "Błąd" +#. Translators: Calendar grid abbreviation for Friday +#: ../js/ui/calendar.js:128 +msgctxt "grid friday" +msgid "F" +msgstr "P" -#: ../js/ui/lookingGlass.js:595 -msgid "Out of date" -msgstr "Nieaktualne" +#. Translators: Calendar grid abbreviation for Saturday +#: ../js/ui/calendar.js:130 +msgctxt "grid saturday" +msgid "S" +msgstr "S" -#: ../js/ui/lookingGlass.js:620 -msgid "View Source" -msgstr "Wyświetl źródło" +#. Translators: Event list abbreviation for Sunday. +#. * +#. * NOTE: These list abbreviations are normally not shown together +#. * so they need to be unique (e.g. Tuesday and Thursday cannot +#. * both be 'T'). +#. +#: ../js/ui/calendar.js:143 +msgctxt "list sunday" +msgid "Su" +msgstr "N" -#: ../js/ui/lookingGlass.js:626 -msgid "Web Page" -msgstr "Strona WWW" +#. Translators: Event list abbreviation for Monday +#: ../js/ui/calendar.js:145 +msgctxt "list monday" +msgid "M" +msgstr "Po" -#: ../js/ui/overview.js:160 -msgid "Undo" -msgstr "Cofnij" +#. Translators: Event list abbreviation for Tuesday +#: ../js/ui/calendar.js:147 +msgctxt "list tuesday" +msgid "T" +msgstr "W" -#. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:467 -#, c-format -msgid "Quit %s" -msgstr "Zakończ program %s" +#. Translators: Event list abbreviation for Wednesday +#: ../js/ui/calendar.js:149 +msgctxt "list wednesday" +msgid "W" +msgstr "Ś" -#: ../js/ui/panel.js:492 -msgid "Preferences" -msgstr "Preferencje" +#. Translators: Event list abbreviation for Thursday +#: ../js/ui/calendar.js:151 +msgctxt "list thursday" +msgid "Th" +msgstr "C" + +#. Translators: Event list abbreviation for Friday +#: ../js/ui/calendar.js:153 +msgctxt "list friday" +msgid "F" +msgstr "Pi" + +#. Translators: Event list abbreviation for Saturday +#: ../js/ui/calendar.js:155 +msgctxt "list saturday" +msgid "S" +msgstr "S" + +#. Translators: Text to show if there are no events +#: ../js/ui/calendar.js:704 +msgid "Nothing Scheduled" +msgstr "Nic nie zaplanowano" + +#. Translators: Shown on calendar heading when selected day occurs on current year +#: ../js/ui/calendar.js:720 +msgctxt "calendar heading" +msgid "%A, %B %d" +msgstr "%A, %e %B" + +#. Translators: Shown on calendar heading when selected day occurs on different year +#: ../js/ui/calendar.js:723 +msgctxt "calendar heading" +msgid "%A, %B %d, %Y" +msgstr "%A, %e %B %Y" + +#: ../js/ui/calendar.js:733 +msgid "Today" +msgstr "Dzisiaj" + +#: ../js/ui/calendar.js:737 +msgid "Tomorrow" +msgstr "Jutro" + +#: ../js/ui/calendar.js:746 +msgid "This week" +msgstr "Ten tydzień" + +#: ../js/ui/calendar.js:754 +msgid "Next week" +msgstr "Następny tydzień" + +#: ../js/ui/dash.js:174 ../js/ui/messageTray.js:931 +msgid "Remove" +msgstr "Usuń" + +#: ../js/ui/dateMenu.js:91 +msgid "Date and Time Settings" +msgstr "Ustawienia daty i czasu" + +#: ../js/ui/dateMenu.js:111 +msgid "Open Calendar" +msgstr "Otwórz kalendarz" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:578 +#: ../js/ui/dateMenu.js:164 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R:%S" -#: ../js/ui/panel.js:579 +#: ../js/ui/dateMenu.js:165 msgid "%a %b %e, %R" msgstr "%a %e %b, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:583 +#: ../js/ui/dateMenu.js:169 msgid "%a %R:%S" msgstr "%a, %R:%S" -#: ../js/ui/panel.js:584 +#: ../js/ui/dateMenu.js:170 msgid "%a %R" msgstr "%a, %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:591 +#: ../js/ui/dateMenu.js:177 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %H:%M:%S %p" -#: ../js/ui/panel.js:592 +#: ../js/ui/dateMenu.js:178 msgid "%a %b %e, %l:%M %p" msgstr "%a %e %b, %l:%M %p" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:596 +#: ../js/ui/dateMenu.js:182 msgid "%a %l:%M:%S %p" msgstr "%a, %l:%M:%S %p" -#: ../js/ui/panel.js:597 +#: ../js/ui/dateMenu.js:183 msgid "%a %l:%M %p" msgstr "%a, %l:%M %p" +#. 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:209 +msgid "%A %B %e, %Y" +msgstr "%A %e %B, %Y" + +#: ../js/ui/docDisplay.js:19 +msgid "RECENT ITEMS" +msgstr "Ostatnie elementy" + +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Wyloguj %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Wyloguj się" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "Kliknięcie Wyloguj zakończy poniższe programy i wyloguje z systemu." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "Użytkownik %s zostanie automatycznie wylogowany za %d sekund." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "Użytkownik zostanie automatycznie wylogowany za %d sekund." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Wylogowywanie z systemu." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Wyłącz komputer" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "" +"Kliknięcie Wyłącz komputer zakończy poniższe programy i wyłączy system." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "System zostanie automatycznie wyłączony za %d sekund." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Wyłączanie komputera." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Uruchom ponownie" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Kliknięcie uruchom ponownie zakończy poniższe programy i ponownie uruchomi " +"system." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "System zostanie automatycznie uruchomiony ponownie za %d sekund." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Ponowne uruchamianie systemu." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Potwierdź" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:470 +msgid "Cancel" +msgstr "Anuluj" + +#: ../js/ui/lookingGlass.js:588 +msgid "No extensions installed" +msgstr "Nie zainstalowano rozszerzeń" + +#: ../js/ui/lookingGlass.js:625 +msgid "Enabled" +msgstr "Włączone" + +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:627 ../src/gvc/gvc-mixer-control.c:1087 +msgid "Disabled" +msgstr "Wyłączone" + +#: ../js/ui/lookingGlass.js:629 +msgid "Error" +msgstr "Błąd" + +#: ../js/ui/lookingGlass.js:631 +msgid "Out of date" +msgstr "Nieaktualne" + +#: ../js/ui/lookingGlass.js:656 +msgid "View Source" +msgstr "Wyświetl źródło" + +#: ../js/ui/lookingGlass.js:662 +msgid "Web Page" +msgstr "Strona WWW" + +#: ../js/ui/messageTray.js:924 +msgid "Open" +msgstr "Otwórz" + +#: ../js/ui/messageTray.js:1961 +msgid "System Information" +msgstr "Informacje systemowe" + +#: ../js/ui/overview.js:88 +msgid "Undo" +msgstr "Cofnij" + +#: ../js/ui/overview.js:183 +msgid "Windows" +msgstr "Okna" + +#: ../js/ui/overview.js:186 +msgid "Applications" +msgstr "Programy" + +#. Translators: this is the name of the dock/favorites area on +#. the left of the overview +#: ../js/ui/overview.js:202 +msgid "Dash" +msgstr "Ulubione" + +#. TODO - _quit() doesn't really work on apps in state STARTING yet +#: ../js/ui/panel.js:560 +#, c-format +msgid "Quit %s" +msgstr "Zakończ program %s" + #. Button on the left side of the panel. #. Translators: If there is no suitable word for "Activities" in your language, you can use the word for "Overview". -#: ../js/ui/panel.js:742 +#: ../js/ui/panel.js:919 msgid "Activities" msgstr "Podgląd" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/panel.js:1020 +msgid "Panel" +msgstr "Panel" + +#: ../js/ui/placeDisplay.js:122 #, c-format msgid "Failed to unmount '%s'" msgstr "Odmontowanie \"%s\" się nie powiodło" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:125 msgid "Retry" msgstr "Ponów" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:165 msgid "Connect to..." msgstr "Połącz z..." +#: ../js/ui/placeDisplay.js:409 +msgid "PLACES & DEVICES" +msgstr "Miejsca i urządzenia" + #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle #. switches containing "◯" and "|"). Other values will #. simply result in invisible toggle switches. -#: ../js/ui/popupMenu.js:32 +#: ../js/ui/popupMenu.js:618 msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:201 msgid "Please enter a command:" msgstr "Proszę wprowadzić polecenie:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Wykonanie polecenia \"%s\" się nie powiodło:" +#: ../js/ui/searchDisplay.js:283 +msgid "Searching..." +msgstr "Wyszukiwanie..." -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/searchDisplay.js:297 +msgid "No matching results." +msgstr "Brak wyników." + +#: ../js/ui/statusMenu.js:102 ../js/ui/statusMenu.js:166 +msgid "Power Off..." +msgstr "Wyłącz..." + +#: ../js/ui/statusMenu.js:104 ../js/ui/statusMenu.js:165 +msgid "Suspend" +msgstr "Uśpij" + +#: ../js/ui/statusMenu.js:125 msgid "Available" msgstr "Dostępny" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:130 msgid "Busy" msgstr "Zajęty" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Niewidoczny" +#: ../js/ui/statusMenu.js:138 +msgid "My Account" +msgstr "Moje konto" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Informacje o koncie..." +#: ../js/ui/statusMenu.js:142 +msgid "System Settings" +msgstr "Ustawienia systemu" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "Preferencje systemu..." - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:149 msgid "Lock Screen" msgstr "Zablokuj ekran" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:153 msgid "Switch User" msgstr "Przełącz użytkownika" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:158 msgid "Log Out..." msgstr "Wyloguj się..." -#: ../js/ui/statusMenu.js:130 -msgid "Shut Down..." -msgstr "Wyłącz komputer..." +#: ../js/ui/status/accessibility.js:62 +msgid "Zoom" +msgstr "Powiększenie" -#: ../js/ui/windowAttentionHandler.js:43 +#: ../js/ui/status/accessibility.js:69 +msgid "Screen Reader" +msgstr "Czytnik ekranu" + +#: ../js/ui/status/accessibility.js:73 +msgid "Screen Keyboard" +msgstr "Klawiatura ekranowa" + +#: ../js/ui/status/accessibility.js:77 +msgid "Visual Alerts" +msgstr "Ostrzeżenia wzrokowe" + +#: ../js/ui/status/accessibility.js:80 +msgid "Sticky Keys" +msgstr "Lepkie klawisze" + +#: ../js/ui/status/accessibility.js:83 +msgid "Slow Keys" +msgstr "Powolne klawisze" + +#: ../js/ui/status/accessibility.js:86 +msgid "Bounce Keys" +msgstr "Odbijanie klawiszy" + +#: ../js/ui/status/accessibility.js:89 +msgid "Mouse Keys" +msgstr "Klawisze myszy" + +#: ../js/ui/status/accessibility.js:93 +msgid "Universal Access Settings" +msgstr "Ustawienia uniwersalnego dostępu" + +#: ../js/ui/status/accessibility.js:145 +msgid "High Contrast" +msgstr "Wysoki kontrast" + +#: ../js/ui/status/accessibility.js:182 +msgid "Large Text" +msgstr "Duży tekst" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:337 ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:411 ../js/ui/status/bluetooth.js:444 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Widoczność" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Wyślij pliki do urządzenia..." + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Ustaw nowe urządzenie..." + +#: ../js/ui/status/bluetooth.js:95 +msgid "Bluetooth Settings" +msgstr "Ustawienia Bluetooth" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Connection" +msgstr "Połączenie" + +#: ../js/ui/status/bluetooth.js:228 +msgid "Send Files..." +msgstr "Wyślij pliki..." + +#: ../js/ui/status/bluetooth.js:233 +msgid "Browse Files..." +msgstr "Przeglądaj pliki..." + +#: ../js/ui/status/bluetooth.js:242 +msgid "Error browsing device" +msgstr "Błąd podczas przeglądania urządzenia" + +#: ../js/ui/status/bluetooth.js:243 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "Nie można przeglądać żądanego urządzenia. Błąd: \"%s\"" + +#: ../js/ui/status/bluetooth.js:251 +msgid "Keyboard Settings" +msgstr "Ustawienia klawiatury" + +#: ../js/ui/status/bluetooth.js:256 +msgid "Mouse Settings" +msgstr "Ustawienia myszy" + +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:65 +msgid "Sound Settings" +msgstr "Ustawienia dźwięku" + +#: ../js/ui/status/bluetooth.js:372 +#, c-format +msgid "Authorization request from %s" +msgstr "Żądanie upoważnienia z %s" + +#: ../js/ui/status/bluetooth.js:378 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Urządzenie %s żąda dostępu do usługi \"%s\"" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Always grant access" +msgstr "Zawsze udzielaj dostęp" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Grant this time only" +msgstr "Udziel dostęp tylko tym razem" + +#: ../js/ui/status/bluetooth.js:382 +msgid "Reject" +msgstr "Odrzuć" + +#: ../js/ui/status/bluetooth.js:412 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Potwierdzenie wiązania dla %s" + +#: ../js/ui/status/bluetooth.js:418 ../js/ui/status/bluetooth.js:452 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Urządzenie %s żąda powiązania z tym komputerem" + +#: ../js/ui/status/bluetooth.js:419 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Proszę potwierdzić, czy PIN \"%s\" zgadza się z tym na urządzeniu." + +#: ../js/ui/status/bluetooth.js:421 +msgid "Matches" +msgstr "Zgadza się" + +#: ../js/ui/status/bluetooth.js:422 +msgid "Does not match" +msgstr "Nie zgadza się" + +#: ../js/ui/status/bluetooth.js:445 +#, c-format +msgid "Pairing request for %s" +msgstr "Żądanie powiązania dla %s" + +#: ../js/ui/status/bluetooth.js:453 +msgid "Please enter the PIN mentioned on the device." +msgstr "Proszę wprowadzić PIN wyświetlony na urządzeniu." + +#: ../js/ui/status/bluetooth.js:469 +msgid "OK" +msgstr "OK" + +#: ../js/ui/status/keyboard.js:73 +msgid "Show Keyboard Layout..." +msgstr "Wyświetl układ klawiatury..." + +#: ../js/ui/status/keyboard.js:76 +msgid "Localization Settings" +msgstr "Ustawienia lokalizacji" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Ustawienia zasilania" + +#. 0 is reported when UPower does not have enough data +#. to estimate battery life +#: ../js/ui/status/power.js:110 +msgid "Estimating..." +msgstr "Obliczanie..." + +#: ../js/ui/status/power.js:117 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "Pozostała %d godzina" +msgstr[1] "Pozostały %d godziny" +msgstr[2] "Pozostało %d godzin" + +#. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d %s %d %s remaining" +msgstr "Pozostało %d %s i %d %s" + +#: ../js/ui/status/power.js:122 +msgid "hour" +msgid_plural "hours" +msgstr[0] "godzina" +msgstr[1] "godziny" +msgstr[2] "godzin" + +#: ../js/ui/status/power.js:122 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minuta" +msgstr[1] "minuty" +msgstr[2] "minut" + +#: ../js/ui/status/power.js:125 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "Pozostała %d minuta" +msgstr[1] "Pozostały %d minuty" +msgstr[2] "Pozostało %d minut" + +#: ../js/ui/status/power.js:227 +msgid "AC adapter" +msgstr "Zasilacz sieciowy" + +#: ../js/ui/status/power.js:229 +msgid "Laptop battery" +msgstr "Akumulator laptopa" + +#: ../js/ui/status/power.js:231 +msgid "UPS" +msgstr "UPS" + +#: ../js/ui/status/power.js:233 +msgid "Monitor" +msgstr "Monitor" + +#: ../js/ui/status/power.js:235 +msgid "Mouse" +msgstr "Mysz" + +#: ../js/ui/status/power.js:237 +msgid "Keyboard" +msgstr "Klawiatura" + +#: ../js/ui/status/power.js:239 +msgid "PDA" +msgstr "Urządzenie PDA" + +#: ../js/ui/status/power.js:241 +msgid "Cell phone" +msgstr "Telefon komórkowy" + +#: ../js/ui/status/power.js:243 +msgid "Media player" +msgstr "Odtwarzacz multimedialny" + +#: ../js/ui/status/power.js:245 +msgid "Tablet" +msgstr "Tablet" + +#: ../js/ui/status/power.js:247 +msgid "Computer" +msgstr "Komputer" + +#: ../js/ui/status/power.js:249 ../src/shell-app-system.c:1013 +msgid "Unknown" +msgstr "Nieznane" + +#: ../js/ui/status/volume.js:44 +msgid "Volume" +msgstr "Głośność" + +#: ../js/ui/status/volume.js:57 +msgid "Microphone" +msgstr "Mikrofon" + +#: ../js/ui/telepathyClient.js:239 +#, c-format +msgid "%s is online." +msgstr "Użytkownik %s jest online." + +#: ../js/ui/telepathyClient.js:244 +#, c-format +msgid "%s is offline." +msgstr "Użytkownik %s jest offline." + +#: ../js/ui/telepathyClient.js:247 +#, c-format +msgid "%s is away." +msgstr "Użytkownik %s jest nieobecny." + +#: ../js/ui/telepathyClient.js:250 +#, c-format +msgid "%s is busy." +msgstr "Użytkownik %s jest zajęty." + +#. Translators: this is a time format string followed by a date. +#. If applicable, replace %X with a strftime format valid for your +#. locale, without seconds. +#: ../js/ui/telepathyClient.js:357 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Wysłano o %H:%M w dniu %e %b" + +#. Translators: this is the text displayed +#. in the search entry when no search is +#. active; it should not exceed ~30 +#. characters. +#: ../js/ui/viewSelector.js:117 +msgid "Type to search..." +msgstr "Wyszukiwanie..." + +#: ../js/ui/viewSelector.js:137 ../src/shell-util.c:250 +msgid "Search" +msgstr "Wyszukaj" + +#: ../js/ui/windowAttentionHandler.js:42 #, c-format msgid "%s has finished starting" msgstr "Ukończono uruchamianie programu %s" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/windowAttentionHandler.js:44 #, c-format msgid "'%s' is ready" msgstr "Program \"%s\" jest gotowy" -#: ../js/ui/workspacesView.js:230 -msgid "" -"Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "" -"Nie można dodać nowego obszaru roboczego, ponieważ osiągnięto ograniczenie " -"maksymalnej liczby obszarów." +#. translators: +#. * The number of sound outputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1094 +#, c-format +msgid "%u Output" +msgid_plural "%u Outputs" +msgstr[0] "%u wyjście" +msgstr[1] "%u wyjścia" +msgstr[2] "%u wyjść" -#: ../js/ui/workspacesView.js:247 -msgid "Can't remove the first workspace." -msgstr "Nie można usunąć pierwszego obszaru roboczego." +#. translators: +#. * The number of sound inputs on a particular device +#: ../src/gvc/gvc-mixer-control.c:1104 +#, c-format +msgid "%u Input" +msgid_plural "%u Inputs" +msgstr[0] "%u wejście" +msgstr[1] "%u wejścia" +msgstr[2] "%u wejść" -#: ../src/shell-global.c:1189 +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Dźwięki systemowe" + +#: ../src/main.c:395 +msgid "Print version" +msgstr "Wyświetla wersję" + +#: ../src/shell-global.c:1308 msgid "Less than a minute ago" msgstr "Mniej niż minutę temu" -#: ../src/shell-global.c:1193 +#: ../src/shell-global.c:1312 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -504,7 +1014,7 @@ msgstr[0] "%d minuta temu" msgstr[1] "%d minuty temu" msgstr[2] "%d minut temu" -#: ../src/shell-global.c:1198 +#: ../src/shell-global.c:1317 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -512,7 +1022,7 @@ msgstr[0] "%d godzina temu" msgstr[1] "%d godziny temu" msgstr[2] "%d godzin temu" -#: ../src/shell-global.c:1203 +#: ../src/shell-global.c:1322 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -520,7 +1030,7 @@ msgstr[0] "%d dzień temu" msgstr[1] "%d dni temu" msgstr[2] "%d dni temu" -#: ../src/shell-global.c:1208 +#: ../src/shell-global.c:1327 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -528,26 +1038,26 @@ msgstr[0] "%d tydzień temu" msgstr[1] "%d tygodnie temu" msgstr[2] "%d tygodni temu" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-polkit-authentication-agent.c:334 +msgid "Authentication dialog was dismissed by the user" +msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika" + +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Katalog domowy" #. Translators: this is the same string as the one found in #. * nautilus -#: ../src/shell-uri-util.c:104 +#: ../src/shell-util.c:104 msgid "File System" msgstr "System plików" -#: ../src/shell-uri-util.c:250 -msgid "Search" -msgstr "Wyszukaj" - #. Translators: the first string is the name of a gvfs #. * method, and the second string is a path. For #. * example, "Trash: some-directory". It means that the #. * directory called "some-directory" is in the trash. #. -#: ../src/shell-uri-util.c:300 +#: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" From 7f3920dbb7d1eaa2a921453a52b43cdc54539fe9 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 9 Mar 2011 21:59:26 +0100 Subject: [PATCH 73/74] statusMenu: Use the screensaver's dbus interface directly Use the dbus interface instead of calling gnome-screensaver-command. https://bugzilla.gnome.org/show_bug.cgi?id=643357 --- js/ui/statusMenu.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js index 60643e3d0..adf5491f7 100644 --- a/js/ui/statusMenu.js +++ b/js/ui/statusMenu.js @@ -1,6 +1,7 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ const Gdm = imports.gi.Gdm; +const DBus = imports.dbus; const GLib = imports.gi.GLib; const Lang = imports.lang; const Shell = imports.gi.Shell; @@ -16,6 +17,16 @@ const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; const Util = imports.misc.util; +const BUS_NAME = 'org.gnome.ScreenSaver'; +const OBJECT_PATH = '/org/gnome/ScreenSaver'; + +const ScreenSaverInterface = { + name: BUS_NAME, + methods: [ { name: 'Lock', inSignature: '' } ] +}; + +let ScreenSaverProxy = DBus.makeProxyClass(ScreenSaverInterface); + // Adapted from gdm/gui/user-switch-applet/applet.c // // Copyright (C) 2004-2005 James M. Cape . @@ -43,7 +54,7 @@ StatusMenuButton.prototype = { this._account_mgr = Tp.AccountManager.dup() this._upClient = new UPowerGlib.Client(); - + this._screenSaverProxy = new ScreenSaverProxy(DBus.session, BUS_NAME, OBJECT_PATH); this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); this._iconBox = new St.Bin(); @@ -188,7 +199,7 @@ StatusMenuButton.prototype = { _onLockScreenActivate: function() { Main.overview.hide(); - Util.spawn(['gnome-screensaver-command', '--lock']); + this._screenSaverProxy.LockRemote(); }, _onLoginScreenActivate: function() { From 162d029c81959833d30d9b610dc0df22f76b6fce Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 9 Mar 2011 21:59:50 +0100 Subject: [PATCH 74/74] statusMenu: Lock screen before suspending We need to lock the screen before suspending the system to prevent unauthorized access to the system / account. https://bugzilla.gnome.org/show_bug.cgi?id=643357 --- js/ui/statusMenu.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js index adf5491f7..9c251b83c 100644 --- a/js/ui/statusMenu.js +++ b/js/ui/statusMenu.js @@ -218,7 +218,9 @@ StatusMenuButton.prototype = { if (this._haveSuspend && this._suspendOrPowerOffItem.state == PopupMenu.PopupAlternatingMenuItemState.DEFAULT) { - this._upClient.suspend_sync(null); + this._screenSaverProxy.LockRemote(Lang.bind(this, function() { + this._upClient.suspend_sync(null); + })); } else { Util.spawn(['gnome-session-quit', '--power-off']); }