From 12c113a7a7f29cbffa01cb33ee61490ee139b2ee Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Mon, 20 Dec 2010 21:41:21 +0100 Subject: [PATCH 001/132] l10n: add missing bluetooth.js to POTFILES.in --- po/POTFILES.in | 1 + 1 file changed, 1 insertion(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 800e7d3c6..b0e2831cb 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -15,6 +15,7 @@ js/ui/popupMenu.js js/ui/runDialog.js js/ui/statusMenu.js js/ui/status/accessibility.js +js/ui/status/bluetooth.js js/ui/status/power.js js/ui/status/volume.js js/ui/telepathyClient.js From db457db060038d5bed8276acbd8d95bcdd1e1533 Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Mon, 20 Dec 2010 22:07:28 +0100 Subject: [PATCH 002/132] BluetoothStatus: s/Ok/OK in user visible button --- js/ui/status/bluetooth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index bde3f46cf..9b8fa0d1c 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -422,7 +422,7 @@ PinNotification.prototype = { })); this.addActor(this._entry); - this.addButton('ok', _("Ok")); + this.addButton('ok', _("OK")); this.addButton('cancel', _("Cancel")); this.connect('action-invoked', Lang.bind(this, function(self, action) { From 69bed929afafa47a6bf9df96ddb796a69a648a80 Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Mon, 20 Dec 2010 22:55:45 +0100 Subject: [PATCH 003/132] l10n: Updated Italian translation --- po/it.po | 237 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 181 insertions(+), 56 deletions(-) diff --git a/po/it.po b/po/it.po index bd57cc42b..fda7b926c 100644 --- a/po/it.po +++ b/po/it.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-13 21:30+0100\n" -"PO-Revision-Date: 2010-12-13 22:40+0100\n" +"POT-Creation-Date: 2010-12-20 22:54+0100\n" +"PO-Revision-Date: 2010-12-20 22:55+0100\n" "Last-Translator: Luca Ferretti \n" "Language-Team: Italian \n" "Language: it\n" @@ -367,23 +367,27 @@ msgstr "Formato _12 ore" msgid "_24 hour format" msgstr "Formato _24 ore" -#: ../js/ui/appDisplay.js:215 +#: ../js/ui/appDisplay.js:154 +msgid "All" +msgstr "Tutte" + +#: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" -msgstr "Applicazioni" +msgstr "APPLICAZIONI" -#: ../js/ui/appDisplay.js:245 +#: ../js/ui/appDisplay.js:265 msgid "PREFERENCES" -msgstr "Preferenze" +msgstr "PREFERENZE" -#: ../js/ui/appDisplay.js:542 +#: ../js/ui/appDisplay.js:562 msgid "New Window" msgstr "Nuova finestra" -#: ../js/ui/appDisplay.js:546 +#: ../js/ui/appDisplay.js:566 msgid "Remove from Favorites" msgstr "Rimuovi dai preferiti" -#: ../js/ui/appDisplay.js:547 +#: ../js/ui/appDisplay.js:567 msgid "Add to Favorites" msgstr "Aggiungi ai preferiti" @@ -439,64 +443,72 @@ msgstr "Visualizza sorgente" msgid "Web Page" msgstr "Pagina web" -#: ../js/ui/overview.js:112 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "Annulla" +#: ../js/ui/overview.js:158 +msgid "Windows" +msgstr "Finestra" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "Applicazioni" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "Chiudi %s" -#: ../js/ui/panel.js:495 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "Preferenze" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %k.%M.%S" # (ndt) proviamo col k, se non funge, sappiamo il perché... -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:586 msgid "%a %b %e, %R" msgstr "%a %e %b, %k.%M" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%a %k.%M.%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %k.%M" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l.%M.%S %P" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:599 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:599 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %P" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:604 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:745 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "Attività" @@ -616,16 +628,134 @@ msgstr "Contrasto elevato" msgid "Large Text" msgstr "Caratteri grandi" -# Sarebbe da vedere uhmmm... -#: ../js/ui/status/power.js:87 -msgid "What's using power..." -msgstr "Consumi energetici..." +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "Bluetooth" -#: ../js/ui/status/power.js:90 +# as on Android :P +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Rilevabile" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "Invia file al dispositivo..." + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "Imposta un nuovo dispositivo..." + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "Impostazioni Bluetooth" + +# indica lo stato del device BT, per esempio gli auricolari +# credo sia meglio l'aggettivo che il sostantivo +#: ../js/ui/status/bluetooth.js:151 +msgid "Connection" +msgstr "Collegato" + +#: ../js/ui/status/bluetooth.js:187 +msgid "Send Files..." +msgstr "Invia file..." + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "Esplora file..." + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "Errore nell'esplorare il dispositivo" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "Non è possibile esplorare il dispositivo richiesto, l'errore è «%s»" + +#: ../js/ui/status/bluetooth.js:210 +msgid "Keyboard Settings" +msgstr "Impostazioni tastiera" + +#: ../js/ui/status/bluetooth.js:215 +msgid "Mouse Settings" +msgstr "Impostazioni mouse" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Impostazioni audio" + +#: ../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 +#, c-format +msgid "Authorization request from %s" +msgstr "Richesta autorizzazione da %s" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Il dispositivo %s vuole accedere al servizio «%s»" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "Consenti sempre accesso" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "Consenti solo stavolta" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "Rifiuta" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Conferma associazione per %s" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Il dispositivo %s vuole associarsi con questo computer" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Confermare la corrispondenza del PIN «%s» con quello sul dispositivo." + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "Corrisponde" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "Non corrisponde" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "Richiesta associazione per %s" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "Inserire il PIN indicato sul dispositivo." + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "OK" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "Annulla" + +#: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Impostazioni alimentazione" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:112 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -633,76 +763,76 @@ msgstr[0] "%d ora rimanente" msgstr[1] "%d ore rimanenti" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:115 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s e %d %s rimanenti" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" msgstr[0] "ora" msgstr[1] "ore" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minuti" -#: ../js/ui/status/power.js:125 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d minuto rimanente" msgstr[1] "%d minuti rimanenti" -#: ../js/ui/status/power.js:244 +#: ../js/ui/status/power.js:237 msgid "AC adapter" msgstr "Alimentatore di corrente" -#: ../js/ui/status/power.js:246 +#: ../js/ui/status/power.js:239 msgid "Laptop battery" msgstr "Batteria del portatile" -#: ../js/ui/status/power.js:248 +#: ../js/ui/status/power.js:241 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:250 +#: ../js/ui/status/power.js:243 msgid "Monitor" msgstr "Monitor" -#: ../js/ui/status/power.js:252 +#: ../js/ui/status/power.js:245 msgid "Mouse" msgstr "Mouse" -#: ../js/ui/status/power.js:254 +#: ../js/ui/status/power.js:247 msgid "Keyboard" msgstr "Tastiera" -#: ../js/ui/status/power.js:256 +#: ../js/ui/status/power.js:249 msgid "PDA" msgstr "PDS" # c'era una discussione su tp... -#: ../js/ui/status/power.js:258 +#: ../js/ui/status/power.js:251 msgid "Cell phone" msgstr "Cellulare" -#: ../js/ui/status/power.js:260 +#: ../js/ui/status/power.js:253 msgid "Media player" msgstr "Lettore multimediale" -#: ../js/ui/status/power.js:262 +#: ../js/ui/status/power.js:255 msgid "Tablet" msgstr "Tablet" -#: ../js/ui/status/power.js:264 +#: ../js/ui/status/power.js:257 msgid "Computer" msgstr "Computer" -#: ../js/ui/status/power.js:266 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Sconosciuto" @@ -714,15 +844,6 @@ msgstr "Volume" msgid "Microphone" msgstr "Microfono" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "Impostazioni audio" - -# FIXME ma ha senso in inglese??? -#: ../js/ui/viewSelector.js:26 -msgid "Search your computer" -msgstr "Cerca nel computer" - #: ../js/ui/telepathyClient.js:560 #, c-format msgid "%s is online." @@ -731,7 +852,7 @@ msgstr "%s è disponibile." #: ../js/ui/telepathyClient.js:565 #, c-format msgid "%s is offline." -msgstr "%s è furi rete." +msgstr "%s è fuori rete." #: ../js/ui/telepathyClient.js:568 #, c-format @@ -743,15 +864,19 @@ msgstr "%s è assente." msgid "%s is busy." msgstr "%s non è disponibile." -# FIXME -- Da rifinire.. #. 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:663 -#, c-format, fuzzy +#: ../js/ui/telepathyClient.js:664 +#, no-c-format msgid "Sent at %X on %A" msgstr "Inviato alle %-H.%M.%S di %A" +# FIXME ma ha senso in inglese??? +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "Cerca nel computer" + #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" From 4dd4c9f99f528667eb0b571a71ed23f61919f44b Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 3 Nov 2010 13:30:08 -0400 Subject: [PATCH 004/132] Use more actor.grab_key_focus() and less stage.connect('key-press-event') Until recently, the clutter keyboard focus was almost always kept on the stage, and bits of code that wanted to do stuff with the keyboard would just watch for key-press-events on the stage. In several places, the code wasn't even bothering to ensure that the focus was on the stage, which caused problems with other actors that explicitly grabbed focus. A previous fix for this (f21403fd) was to always reset the focus to the stage after calling pushModal(), but a better fix is to just actually make use of the keyboard focus everywhere rather than having everyone try to read events off the stage. Now pushModal(actor) also does actor.grab_key_focus(), and various bits of code have been changed to read key events off their own toplevels rather than off the stage, meaning there's no chance of them accidentally getting someone else's events. https://bugzilla.gnome.org/show_bug.cgi?id=618885 --- js/ui/altTab.js | 9 ++----- js/ui/lookingGlass.js | 14 +++------- js/ui/main.js | 15 ++++++----- js/ui/messageTray.js | 60 +++++------------------------------------ js/ui/viewSelector.js | 62 +++++++++++++++++-------------------------- 5 files changed, 45 insertions(+), 115 deletions(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index b3f074d07..824c1b097 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -126,8 +126,8 @@ AltTabPopup.prototype = { return false; this._haveModal = true; - this._keyPressEventId = global.stage.connect('key-press-event', Lang.bind(this, this._keyPressEvent)); - this._keyReleaseEventId = global.stage.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent)); + this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent)); + this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent)); this.actor.connect('button-press-event', Lang.bind(this, this._clickedOutside)); this.actor.connect('scroll-event', Lang.bind(this, this._onScroll)); @@ -383,11 +383,6 @@ AltTabPopup.prototype = { if (this._thumbnails) this._destroyThumbnails(); - if (this._keyPressEventId) - global.stage.disconnect(this._keyPressEventId); - if (this._keyReleaseEventId) - global.stage.disconnect(this._keyReleaseEventId); - if (this._motionTimeoutId != 0) Mainloop.source_remove(this._motionTimeoutId); if (this._thumbnailTimeoutId != 0) diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index 984255591..60bab9b0f 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -663,7 +663,7 @@ LookingGlass.prototype = { style_class: 'lg-dialog', vertical: true, visible: false }); - + this.actor.connect('key-press-event', Lang.bind(this, this._globalKeyPressEvent)); this._interfaceSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' }); this._interfaceSettings.connect('changed::monospace-font-name', @@ -924,20 +924,15 @@ LookingGlass.prototype = { if (this._open) return; - if (!Main.pushModal(this.actor)) + if (!Main.pushModal(this._entry)) return; - this._keyPressEventId = global.stage.connect('key-press-event', - Lang.bind(this, this._globalKeyPressEvent)); - this.actor.show(); this.actor.lower(Main.chrome.actor); this._open = true; Tweener.removeTweens(this.actor); - global.stage.set_key_focus(this._entry); - // We inverse compensate for the slow-down so you can change the factor // through LookingGlass without long waits. Tweener.addTween(this.actor, { time: 0.5 / St.get_slow_down_factor(), @@ -950,9 +945,6 @@ LookingGlass.prototype = { if (!this._open) return; - if (this._keyPressEventId) - global.stage.disconnect(this._keyPressEventId); - this._objInspector.actor.hide(); this._historyNavIndex = -1; @@ -965,7 +957,7 @@ LookingGlass.prototype = { this._borderPaintTarget = null; } - Main.popModal(this.actor); + Main.popModal(this._entry); Tweener.addTween(this.actor, { time: 0.5 / St.get_slow_down_factor(), transition: 'easeOutQuad', diff --git a/js/ui/main.js b/js/ui/main.js index 056baab31..f76c33bfb 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -350,13 +350,13 @@ function _findModal(actor) { * @actor: #ClutterActor which will be given keyboard focus * * Ensure we are in a mode where all keyboard and mouse input goes to - * the stage. Multiple calls to this function act in a stacking fashion; - * the effect will be undone when an equal number of popModal() invocations - * have been made. + * the stage, and focus @actor. Multiple calls to this function act in + * a stacking fashion; the effect will be undone when an equal number + * of popModal() invocations have been made. * - * Next, record the current Clutter keyboard focus on a stack. If the modal stack - * returns to this actor, reset the focus to the actor which was focused - * at the time pushModal() was invoked. + * Next, record the current Clutter keyboard focus on a stack. If the + * modal stack returns to this actor, reset the focus to the actor + * which was focused at the time pushModal() was invoked. * * Returns: true iff we successfully acquired a grab or already had one */ @@ -386,7 +386,7 @@ function pushModal(actor) { } modalActorFocusStack.push([actor, curFocus]); - global.stage.set_key_focus(null); + global.stage.set_key_focus(actor); return true; } @@ -416,6 +416,7 @@ function popModal(actor) { if (modalCount > 0) return; + global.stage.set_key_focus(null); global.end_modal(global.get_current_time()); global.set_stage_input_mode(Shell.StageInputMode.NORMAL); } diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 08ad5c20e..a63744f51 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -245,7 +245,6 @@ Notification.prototype = { this._prevFocusedWindow = null; this._prevKeyFocusActor = null; - this._focusWindowChangedId = 0; this._focusActorChangedId = 0; this._stageInputModeChangedId = 0; this._capturedEventId = 0; @@ -624,29 +623,16 @@ Notification.prototype = { let metaDisplay = global.screen.get_display(); this._prevFocusedWindow = metaDisplay.focus_window; - this._prevKeyFocus = global.stage.get_key_focus(); + this._prevKeyFocusActor = global.stage.get_key_focus(); - // We need to use the captured event in the overview, because we don't want to change the stage input mode to - // FOCUSED there. On the other hand, using the captured event doesn't work correctly in the main view because - // it doesn't allow focusing the windows again correctly. So we are using the FOCUSED stage input mode in the - // main view. - if (Main.overview.visible) { - if (!Main.pushModal(this.actor)) - return; - this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent)); - } else { + if (!Main.overview.visible) global.set_stage_input_mode(Shell.StageInputMode.FOCUSED); - this._focusWindowChangedId = metaDisplay.connect('notify::focus-window', Lang.bind(this, this._focusWindowChanged)); - this._stageInputModeChangedId = global.connect('notify::stage-input-mode', Lang.bind(this, this._stageInputModeChanged)); + // Use captured-event to notice clicks outside the notification + // without consuming them. + this._capturedEventId = global.stage.connect('captured-event', Lang.bind(this, this._onCapturedEvent)); - this._keyPressId = global.stage.connect('key-press-event', Lang.bind(this, this._onKeyPress)); - } - - // We need to listen to this signal in the overview, as well as in the main view, to make the key bindings such as - // Alt+F2 work. When a notification has key focus, which is the case with chat notifications, all captured KEY_PRESS - // events have the actor with the key focus as their source. This makes it impossible to distinguish between the chat - // window input and the key bindings based solely on the KEY_PRESS event. + this._stageInputModeChangedId = global.connect('notify::stage-input-mode', Lang.bind(this, this._stageInputModeChanged)); this._focusActorChangedId = global.stage.connect('notify::key-focus', Lang.bind(this, this._focusActorChanged)); this._hasFocus = true; @@ -654,19 +640,6 @@ Notification.prototype = { Main.messageTray.lock(); }, - _focusWindowChanged: function() { - let metaDisplay = global.screen.get_display(); - // this._focusWindowChanged() will be called when we call - // global.set_stage_input_mode(Shell.StageInputMode.FOCUSED) , - // however metaDisplay.focus_window will be null in that case. We only - // want to ungrab focus if the focus has been moved to an application - // window. - if (metaDisplay.focus_window) { - this._prevFocusedWindow = null; - this.ungrabFocus(); - } - }, - _focusActorChanged: function() { let focusedActor = global.stage.get_key_focus(); if (!focusedActor || !this.actor.contains(focusedActor)) { @@ -676,15 +649,6 @@ Notification.prototype = { }, _stageInputModeChanged: function() { - let focusedActor = global.stage.get_key_focus(); - // TODO: We need to set this._prevFocusedWindow to null in order to - // get the cursor in the run dialog. However, that also means it's - // set to null when the application menu is activated, which defeats - // the point of keeping the name of the previously focused application - // in the panel. It'd be good to be able to distinguish between these - // two cases. - this._prevFocusedWindow = null; - this._prevKeyFocusActor = null; this.ungrabFocus(); }, @@ -743,10 +707,6 @@ Notification.prototype = { return; let metaDisplay = global.screen.get_display(); - if (this._focusWindowChangedId > 0) { - metaDisplay.disconnect(this._focusWindowChangedId); - this._focusWindowChangedId = 0; - } if (this._focusActorChangedId > 0) { global.stage.disconnect(this._focusActorChangedId); @@ -759,20 +719,14 @@ Notification.prototype = { } if (this._capturedEventId > 0) { - Main.popModal(this.actor); global.stage.disconnect(this._capturedEventId); this._capturedEventId = 0; } - if (this._keyPressId > 0) { - global.stage.disconnect(this._keyPressId); - this._keyPressId = 0; - } - this._hasFocus = false; Main.messageTray.unlock(); - if (this._prevFocusedWindow) { + if (this._prevFocusedWindow && !metaDisplay.focus_window) { metaDisplay.set_input_focus_window(this._prevFocusedWindow, false, global.get_current_time()); this._prevFocusedWindow = null; } diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index c2c5b691e..96d7a9717 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -16,12 +16,12 @@ const SearchDisplay = imports.ui.searchDisplay; const Tweener = imports.ui.tweener; -function SearchEntry() { - this._init(); +function SearchEntry(focusBase) { + this._init(focusBase); } SearchEntry.prototype = { - _init : function() { + _init : function(focusBase) { this.actor = new St.Entry({ name: 'searchEntry', hint_text: _("Search your computer") }); this.entry = this.actor.clutter_text; @@ -45,11 +45,12 @@ SearchEntry.prototype = { this.pane = null; this._capturedEventId = 0; + this._focusBase = focusBase; }, _updateCursorVisibility: function() { let focus = global.stage.get_key_focus(); - if (focus == global.stage || focus == this.entry) + if (focus == this._focusBase || focus == this.entry) this.entry.set_cursor_visible(true); else this.entry.set_cursor_visible(false); @@ -81,8 +82,8 @@ SearchEntry.prototype = { this.entry.text = ''; - // Return focus to the stage - global.stage.set_key_focus(null); + // Return focus to the viewSelector + global.stage.set_key_focus(this._focusBase); this.entry.set_cursor_visible(true); this.entry.set_selection(0, 0); @@ -117,11 +118,11 @@ SearchEntry.prototype = { } return false; case Clutter.EventType.KEY_PRESS: - // If neither the stage nor our entry have key focus, some - // "special" actor grabbed the focus (run dialog, looking - // glass); we don't want to interfere with that + // If some "special" actor grabbed the focus (run + // dialog, looking glass); we don't want to interfere + // with that let focus = global.stage.get_key_focus(); - if (focus != global.stage && focus != this.entry) + if (focus != this._focusBase && focus != this.entry) return false; let sym = event.get_key_symbol(); @@ -231,22 +232,23 @@ ViewTab.prototype = { }; -function SearchTab() { - this._init(); +function SearchTab(focusBase) { + this._init(focusBase); } SearchTab.prototype = { __proto__: BaseTab.prototype, - _init: function() { + _init: function(focusBase) { this._searchActive = false; this._searchPending = false; this._keyPressId = 0; this._searchTimeoutId = 0; + this._focusBase = focusBase; this._searchSystem = new Search.SearchSystem(); - this._searchEntry = new SearchEntry(); + this._searchEntry = new SearchEntry(focusBase); this._searchResults = new SearchDisplay.SearchResults(this._searchSystem); BaseTab.prototype._init.call(this, this._searchEntry.actor, @@ -274,15 +276,15 @@ SearchTab.prototype = { BaseTab.prototype.show.call(this); if (this._keyPressId == 0) - this._keyPressId = global.stage.connect('key-press-event', - Lang.bind(this, this._onKeyPress)); + this._keyPressId = this._searchEntry.entry.connect('key-press-event', + Lang.bind(this, this._onKeyPress)); }, hide: function() { BaseTab.prototype.hide.call(this); if (this._keyPressId > 0) { - global.stage.disconnect(this._keyPressId); + this._searchEntry.entry.disconnect(this._keyPressId); this._keyPressId = 0; } this._searchEntry.reset(); @@ -317,14 +319,7 @@ SearchTab.prototype = { this._searchTimeoutId = Mainloop.timeout_add(150, Lang.bind(this, this._doSearch)); }, - _onKeyPress: function(stage, event) { - // If neither the stage nor the search entry have key focus, some - // "special" actor grabbed the focus (run dialog, looking glass); - // we don't want to interfere with that - let focus = stage.get_key_focus(); - if (focus != stage && focus != this._searchEntry.entry) - return false; - + _onKeyPress: function(entry, event) { let symbol = event.get_key_symbol(); if (symbol == Clutter.Up) { if (!this._searchActive) @@ -393,7 +388,7 @@ ViewSelector.prototype = { this._tabs = []; this._activeTab = null; - this._searchTab = new SearchTab(); + this._searchTab = new SearchTab(this.actor); this._searchArea.set_child(this._searchTab.title); this._addTab(this._searchTab); @@ -559,14 +554,7 @@ ViewSelector.prototype = { })); }, - _onKeyPress: function(stage, event) { - // Only process events if the stage has key focus - search is handled - // by the search tab, and we do not want to interfere with "special" - // actors grabbing focus (run dialog, looking glass, notifications). - let focus = stage.get_key_focus(); - if (focus != stage) - return false; - + _onKeyPress: function(actor, event) { let modifiers = Shell.get_event_state(event); let symbol = event.get_key_symbol(); if (symbol == Clutter.Escape) { @@ -600,8 +588,8 @@ ViewSelector.prototype = { this._overviewHidingId = Main.overview.connect('hiding', Lang.bind(this, this._switchDefaultTab)); if (this._keyPressId == 0) - this._keyPressId = global.stage.connect('key-press-event', - Lang.bind(this, this._onKeyPress)); + this._keyPressId = this.actor.connect('key-press-event', + Lang.bind(this, this._onKeyPress)); this._switchDefaultTab(); }, @@ -610,7 +598,7 @@ ViewSelector.prototype = { this._searchTab.setFindAsYouType(false); if (this._keyPressId > 0) { - global.stage.disconnect(this._keyPressId); + this.actor.disconnect(this._keyPressId); this._keyPressId = 0; } From f326595202e14eb4447e4fad1cf574884389254e Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 3 Nov 2010 13:30:08 -0400 Subject: [PATCH 005/132] popupMenu: fix up grab/ungrab handling Fix the panel menus to avoid unnecessarily bouncing out of modal (bug 634194) and to do a better job of keeping the keyboard focus in the right place https://bugzilla.gnome.org/show_bug.cgi?id=618885 --- js/ui/panelMenu.js | 7 +-- js/ui/popupMenu.js | 112 ++++++++++++++++++++++++++++++++++----------- 2 files changed, 87 insertions(+), 32 deletions(-) diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js index 07a7220c8..0b3ce939c 100644 --- a/js/ui/panelMenu.js +++ b/js/ui/panelMenu.js @@ -47,12 +47,9 @@ Button.prototype = { }, _onOpenStateChanged: function(menu, open) { - if (open) { + if (open) this.actor.add_style_pseudo_class('pressed'); - let focus = global.stage.get_key_focus(); - if (!focus || (focus != this.actor && !menu.actor.contains(focus))) - this.actor.grab_key_focus(); - } else + else this.actor.remove_style_pseudo_class('pressed'); } }; diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 190f24a4e..6d04e3d26 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -999,23 +999,24 @@ PopupMenuManager.prototype = { this._leaveEventId = 0; this._activeMenu = null; this._menus = []; - this._delayedMenus = []; + this._preGrabInputMode = null; }, addMenu: function(menu, position) { let menudata = { menu: menu, openStateChangeId: menu.connect('open-state-changed', Lang.bind(this, this._onMenuOpenState)), - activateId: menu.connect('activate', Lang.bind(this, this._onMenuActivated)), destroyId: menu.connect('destroy', Lang.bind(this, this._onMenuDestroy)), enterId: 0, - focusId: 0 + focusInId: 0, + focusOutId: 0 }; let source = menu.sourceActor; if (source) { menudata.enterId = source.connect('enter-event', Lang.bind(this, function() { this._onMenuSourceEnter(menu); })); - menudata.focusId = source.connect('key-focus-in', 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) @@ -1034,18 +1035,19 @@ PopupMenuManager.prototype = { let menudata = this._menus[position]; menu.disconnect(menudata.openStateChangeId); - menu.disconnect(menudata.activateId); menu.disconnect(menudata.destroyId); if (menudata.enterId) menu.sourceActor.disconnect(menudata.enterId); - if (menudata.focusId) - menu.sourceActor.disconnect(menudata.focusId); + if (menudata.focusInId) + menu.sourceActor.disconnect(menudata.focusInId); + if (menudata.focusOutId) + menu.sourceActor.disconnect(menudata.focusOutId); this._menus.splice(position, 1); }, - grab: function() { + _grab: function() { Main.pushModal(this._owner.actor); this._eventCaptureId = global.stage.connect('captured-event', Lang.bind(this, this._onEventCapture)); @@ -1057,7 +1059,7 @@ PopupMenuManager.prototype = { this.grabbed = true; }, - ungrab: function() { + _ungrab: function() { global.stage.disconnect(this._eventCaptureId); this._eventCaptureId = 0; global.stage.disconnect(this._keyPressEventId); @@ -1073,40 +1075,99 @@ PopupMenuManager.prototype = { _onMenuOpenState: function(menu, open) { if (open) { + if (!this.grabbed) { + this._preGrabInputMode = global.stage_input_mode; + this._grab(); + } this._activeMenu = menu; - if (!this.grabbed) - this.grab(); + + // 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(); } else if (menu == this._activeMenu) { - this._activeMenu = null; + let focus = global.stage.key_focus; + let fromActive = this._activeMenuContains(focus); + if (this.grabbed) - this.ungrab(); + 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) + menu.sourceActor.grab_key_focus(); + else + focus.grab_key_focus(); + } } }, + // change the currently-open menu without dropping grab + _changeMenu: function(newMenu) { + if (this._activeMenu) { + // _onOpenMenuState will drop the grab if it sees + // this._activeMenu being closed; so clear _activeMenu + // before closing it to keep that from happening + let oldMenu = this._activeMenu; + this._activeMenu = null; + oldMenu.close(); + } + newMenu.open(); + }, + _onMenuSourceEnter: function(menu) { if (!this.grabbed || menu == this._activeMenu) return false; - if (this._activeMenu != null) - this._activeMenu.close(); - menu.open(); + this._changeMenu(menu); return false; }, - _onMenuActivated: function(menu, item) { - if (this.grabbed) - this.ungrab(); + _onKeyFocusOut: function(menu) { + if (!this.grabbed || menu != 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); + + 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(); + })); }, _onMenuDestroy: function(menu) { this.removeMenu(menu); }, - _eventIsOnActiveMenu: function(event) { - let src = event.get_source(); + _activeMenuContains: function(actor) { return this._activeMenu != null - && (this._activeMenu.actor.contains(src) || - (this._activeMenu.sourceActor && this._activeMenu.sourceActor.contains(src))); + && (this._activeMenu.actor.contains(actor) || + (this._activeMenu.sourceActor && this._activeMenu.sourceActor.contains(actor))); + }, + + _eventIsOnActiveMenu: function(event) { + return this._activeMenuContains(event.get_source()); }, _eventIsOnAnyMenuSource: function(event) { @@ -1168,10 +1229,7 @@ PopupMenuManager.prototype = { let pos = this._findMenu(this._activeMenu); let next = this._menus[mod(pos + direction, this._menus.length)].menu; if (next != this._activeMenu) { - let oldMenu = this._activeMenu; - this._activeMenu = next; - oldMenu.close(); - next.open(); + this._changeMenu(next); next.activateFirst(); } return true; From d3de4e3fbda046c844f32d61c494960c5b1bc52d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 1 Jul 2010 14:13:42 -0400 Subject: [PATCH 006/132] ctrlAltTabManager: implement Ctrl-Alt-Tab Add CtrlAltTabManager, which allows tabbing between StFocusManager groups, and fix up the panel to be keyboard navigable. https://bugzilla.gnome.org/show_bug.cgi?id=618885 --- data/theme/gnome-shell.css | 2 +- js/Makefile.am | 1 + js/ui/ctrlAltTab.js | 254 +++++++++++++++++++++++++++++++++++++ js/ui/main.js | 15 +++ 4 files changed, 271 insertions(+), 1 deletion(-) create mode 100644 js/ui/ctrlAltTab.js diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 6e777fdea..72c672da4 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -214,7 +214,7 @@ StTooltip StLabel { transition-duration: 100; } -.panel-button:active, .panel-button:checked, .panel-button:pressed { +.panel-button:active, .panel-button:checked, .panel-button:pressed, .panel-button:focus { background-gradient-direction: vertical; background-gradient-start: #3c3c3c; background-gradient-end: #131313; diff --git a/js/Makefile.am b/js/Makefile.am index 64c9ef97e..462f81b9b 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -18,6 +18,7 @@ nobase_dist_js_DATA = \ ui/boxpointer.js \ ui/calendar.js \ ui/chrome.js \ + ui/ctrlAltTab.js \ ui/dash.js \ ui/dnd.js \ ui/docDisplay.js \ diff --git a/js/ui/ctrlAltTab.js b/js/ui/ctrlAltTab.js new file mode 100644 index 000000000..8faa6c519 --- /dev/null +++ b/js/ui/ctrlAltTab.js @@ -0,0 +1,254 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const Gtk = imports.gi.Gtk; +const Lang = imports.lang; +const Meta = imports.gi.Meta; +const Shell = imports.gi.Shell; +const St = imports.gi.St; + +const AltTab = imports.ui.altTab; +const Main = imports.ui.main; +const Tweener = imports.ui.tweener; + +const POPUP_APPICON_SIZE = 96; +const POPUP_FADE_TIME = 0.1; // seconds + +function CtrlAltTabManager() { + this._init(); +} + +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 }); + root.connect('destroy', Lang.bind(this, function() { this.removeGroup(root); })); + this._focusManager.add_group(root); + }, + + removeGroup: function(root) { + this._focusManager.remove_group(root); + for (let i = 0; i < this._items.length; i++) { + if (this._items[i].root == root) { + this._items.splice(i, 1); + return; + } + } + }, + + focusGroup: function(root) { + 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); + }, + + 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; }); + + // 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 (!items.length) + return; + + new CtrlAltTabPopup().show(items, backwards); + } +}; + +function mod(a, b) { + return (a + b) % b; +} + +function CtrlAltTabPopup() { + this._init(); +} + +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.connect('destroy', Lang.bind(this, this._onDestroy)); + + this._haveModal = false; + this._selection = 0; + + Main.uiGroup.add_actor(this.actor); + }, + + show : function(items, startBackwards) { + if (!Main.pushModal(this.actor)) + return false; + this._haveModal = true; + + this._keyPressEventId = this.actor.connect('key-press-event', Lang.bind(this, this._keyPressEvent)); + this._keyReleaseEventId = this.actor.connect('key-release-event', Lang.bind(this, this._keyReleaseEvent)); + + this._items = items; + this._switcher = new CtrlAltTabSwitcher(items); + this.actor.add_actor(this._switcher.actor); + + if (startBackwards) + this._selection = this._items.length - 1; + this._select(this._selection); + + let [x, y, mods] = global.get_pointer(); + if (!(mods & Gdk.ModifierType.MOD1_MASK)) { + this._finish(); + return false; + } + + this.actor.opacity = 0; + this.actor.show(); + Tweener.addTween(this.actor, + { opacity: 255, + time: POPUP_FADE_TIME, + transition: 'easeOutQuad' + }); + + return true; + }, + + _next : function() { + return mod(this._selection + 1, this._items.length); + }, + + _previous : function() { + return mod(this._selection - 1, this._items.length); + }, + + _keyPressEvent : function(actor, event) { + let keysym = event.get_key_symbol(); + let shift = (Shell.get_event_state(event) & Clutter.ModifierType.SHIFT_MASK); + if (shift && keysym == Clutter.KEY_Tab) + keysym = Clutter.ISO_Left_Tab; + + if (keysym == Clutter.KEY_Escape) + this.destroy(); + else if (keysym == Clutter.KEY_Tab) + this._select(this._next()); + else if (keysym == Clutter.KEY_ISO_Left_Tab) + this._select(this._previous()); + else if (keysym == Clutter.KEY_Left) + this._select(this._previous()); + else if (keysym == Clutter.KEY_Right) + this._select(this._next()); + + return true; + }, + + _keyReleaseEvent : function(actor, event) { + let [x, y, mods] = global.get_pointer(); + let state = mods & Clutter.ModifierType.MOD1_MASK; + + if (state == 0) + this._finish(); + + return true; + }, + + _finish : function() { + this.destroy(); + + let item = this._items[this._selection]; + if (item.root) + Main.ctrlAltTabManager.focusGroup(item.root); + else + Main.activateWindow(item.window); + }, + + _popModal: function() { + if (this._haveModal) { + Main.popModal(this.actor); + this._haveModal = false; + } + }, + + destroy : function() { + this._popModal(); + Tweener.addTween(this.actor, + { opacity: 0, + time: POPUP_FADE_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + this.actor.destroy(); + }) + }); + }, + + _onDestroy : function() { + if (this._keyPressEventId) + this.actor.disconnect(this._keyPressEventId); + if (this._keyReleaseEventId) + this.actor.disconnect(this._keyReleaseEventId); + }, + + _select : function(num) { + this._selection = num; + this._switcher.highlight(num); + } +}; + +function CtrlAltTabSwitcher(items) { + this._init(items); +} + +CtrlAltTabSwitcher.prototype = { + __proto__ : AltTab.SwitcherList.prototype, + + _init : function(items) { + AltTab.SwitcherList.prototype._init.call(this, true); + + for (let i = 0; i < items.length; i++) + this._addIcon(items[i]); + }, + + _addIcon : function(item) { + let box = new St.BoxLayout({ style_class: 'alt-tab-app', + vertical: true }); + + let icon = item.iconActor; + if (!icon) { + icon = new St.Icon({ icon_name: item.iconName, + icon_type: St.IconType.SYMBOLIC, + icon_size: POPUP_APPICON_SIZE }); + } + box.add(icon, { x_fill: false, y_fill: false } ); + + let text = new St.Label({ text: item.name }); + box.add(text, { x_fill: false }); + + this.addItem(box); + } +}; diff --git a/js/ui/main.js b/js/ui/main.js index f76c33bfb..4a8f8ef2c 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -17,8 +17,11 @@ const Mainloop = imports.mainloop; const Meta = imports.gi.Meta; const Shell = imports.gi.Shell; const St = imports.gi.St; +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; const Chrome = imports.ui.chrome; +const CtrlAltTab = imports.ui.ctrlAltTab; const Environment = imports.ui.environment; const ExtensionSystem = imports.ui.extensionSystem; const MessageTray = imports.ui.messageTray; @@ -50,6 +53,7 @@ let messageTray = null; let notificationDaemon = null; let windowAttentionHandler = null; let telepathyClient = null; +let ctrlAltTabManager = null; let recorder = null; let shellDBusService = null; let modalCount = 0; @@ -137,6 +141,9 @@ function start() { telepathyClient = new TelepathyClient.Client(); panel.startStatusArea(); + ctrlAltTabManager = new CtrlAltTab.CtrlAltTabManager(); + ctrlAltTabManager.addGroup(panel.actor, _("Panel"), 'gnome-panel'); + _startDate = new Date(); let recorderSettings = new Gio.Settings({ schema: 'org.gnome.shell.recorder' }); @@ -330,6 +337,14 @@ function _globalKeyPressHandler(actor, event) { case Meta.KeyBindingAction.COMMAND_2: getRunDialog().open(); return true; + case Meta.KeyBindingAction.SWITCH_PANELS: + // Only intercept this when we're in the overview, and don't + // intercept it if something beyond that (like, say, the + // ctrl-alt-tab popup!) is visible + if (overview.visible && modalCount == 1) { + ctrlAltTabManager.popup(modifierState & Clutter.ModifierType.SHIFT_MASK); + return true; + } } return false; From ea63f7562f56fe30ae86e4e1c4a1c6f295c301e7 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Tue, 21 Dec 2010 12:59:40 +0200 Subject: [PATCH 007/132] Updated Hebrew translation. --- po/he.po | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 122 insertions(+), 6 deletions(-) diff --git a/po/he.po b/po/he.po index 630aa81c1..0d7590d1f 100644 --- a/po/he.po +++ b/po/he.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-19 01:04+0200\n" -"PO-Revision-Date: 2010-12-19 01:04+0200\n" +"POT-Creation-Date: 2010-12-21 12:56+0200\n" +"PO-Revision-Date: 2010-12-21 12:59+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" @@ -645,6 +645,126 @@ msgstr "ניגודיות גבוהה" msgid "Large Text" msgstr "טקסט גדול" +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "הצגה" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "שליחת קובץ להתקן..." + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "הגדרת התקן חדש..." + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "הגדרות Bluetooth" + +#: ../js/ui/status/bluetooth.js:151 +msgid "Connection" +msgstr "חיבור" + +#: ../js/ui/status/bluetooth.js:187 +msgid "Send Files..." +msgstr "שליחת קבצים..." + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "עיון בקבצים..." + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "שגיאה בעיון בהתקן" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'" + +#: ../js/ui/status/bluetooth.js:210 +msgid "Keyboard Settings" +msgstr "הגדרות מקלדת" + +#: ../js/ui/status/bluetooth.js:215 +msgid "Mouse Settings" +msgstr "הגדרות עכבר" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "הגדרות שמע" + +#: ../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 "סוכן Bluetooth" + +#: ../js/ui/status/bluetooth.js:328 +#, c-format +msgid "Authorization request from %s" +msgstr "בקשת אישור מאת %s" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "תמיד להעניק גישה" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "הענקת גישה הפעם בלבד" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "סירוב" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "אישור צימוד עבור %s" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "נא לאשר האם קוד ה־PIN‏ '%s' תואם את זה שמופיע בהתקן." + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "התאמות" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "אינו תואם" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "בקשת צימוד עבור %s" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן." + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "אישור" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "ביטול" + #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "הגדרות צריכת החשמל" @@ -741,10 +861,6 @@ msgstr "עצמה" msgid "Microphone" msgstr "מיקרופון" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "הגדרות שמע" - #: ../js/ui/telepathyClient.js:560 #, c-format msgid "%s is online." From 52a87a22ec9dbf3071c8953d2a3046cc2d4fa0ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 21 Dec 2010 18:23:54 +0100 Subject: [PATCH 008/132] appDisplay: Add translator comment for "All" filter The correct translation for "All" depends on context in some languages, so add a translator comment. https://bugzilla.gnome.org/show_bug.cgi?id=637559 --- js/ui/appDisplay.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index eaeeb1590..95530d9ca 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -151,6 +151,7 @@ ViewByCategories.prototype = { this._apps = apps; this._view.refresh(apps); + /* Translators: Filter to display all applications */ this._addFilter(_("All"), -1); if (!sections) From 23f3af832c626c45397701efd8c782aaf18a2e8b Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 21 Dec 2010 22:49:54 +0100 Subject: [PATCH 009/132] StIcon: fix typo After having freed pending_texture, we should nullify it, not an unrelated actor. --- src/st/st-icon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/st/st-icon.c b/src/st/st-icon.c index 7235dc1a8..6101107f1 100644 --- a/src/st/st-icon.c +++ b/src/st/st-icon.c @@ -149,7 +149,7 @@ st_icon_dispose (GObject *gobject) { clutter_actor_destroy (priv->pending_texture); g_object_unref (priv->pending_texture); - priv->icon_texture = NULL; + priv->pending_texture = NULL; } if (priv->gicon) From 7d0eeef90a85598a2862695755d4635bda4485b3 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 19 Nov 2010 13:00:59 -0500 Subject: [PATCH 010/132] panel: fix up calendar-vs-menu handling on clock Give the clock's right-click menu its own PopupMenuManager so that if you drop down another menu and then mouseover the clock it doesn't pop up the right-click menu. https://bugzilla.gnome.org/show_bug.cgi?id=634755 --- js/ui/panel.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index fc4614dc5..e797a36f9 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -512,11 +512,14 @@ ClockButton.prototype = { _onButtonPress: function(actor, event) { let button = event.get_button(); - if (button == 3 && - (!this._calendarPopup || !this._calendarPopup.isOpen)) + let menuShowing = this.menu.isOpen; + let calendarShowing = this._calendarPopup && this._calendarPopup.isOpen; + + if (menuShowing || (button == 3 && !calendarShowing)) this.menu.toggle(); else this._toggleCalendar(); + return true; }, closeCalendar: function() { @@ -525,15 +528,12 @@ ClockButton.prototype = { this._calendarPopup.hide(); - this.menu.isOpen = false; this.actor.remove_style_pseudo_class('pressed'); }, openCalendar: function() { this._calendarPopup.show(); - // simulate an open menu, so it won't appear beneath the calendar - this.menu.isOpen = true; this.actor.add_style_pseudo_class('pressed'); }, @@ -803,7 +803,8 @@ Panel.prototype = { this._clockButton = new ClockButton(); this._centerBox.add(this._clockButton.actor, { y_fill: true }); - this._menus.addMenu(this._clockButton.menu); + let clockMenuManager = new PopupMenu.PopupMenuManager(this); + clockMenuManager.addMenu(this._clockButton.menu); /* right */ From 1694148bdb3d38462ce2efafc74f49673a521b2d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 18 Nov 2010 16:18:54 -0500 Subject: [PATCH 011/132] popupMenu: don't animate menus when switching from one to another Don't do the "slide" effect when moving from one menu to another; only do it when opening the first menu, or closing a menu without opening another one. https://bugzilla.gnome.org/show_bug.cgi?id=634755 --- js/ui/boxpointer.js | 60 +++++++++++++++------------- js/ui/messageTray.js | 4 +- js/ui/popupMenu.js | 94 ++++++++++++++++++++++---------------------- 3 files changed, 80 insertions(+), 78 deletions(-) diff --git a/js/ui/boxpointer.js b/js/ui/boxpointer.js index 450bed3ef..b7c73d7e2 100644 --- a/js/ui/boxpointer.js +++ b/js/ui/boxpointer.js @@ -42,7 +42,7 @@ BoxPointer.prototype = { this.bin.raise(this._border); }, - animateAppear: function(onComplete) { + show: function(animate, onComplete) { let x = this.actor.x; let y = this.actor.y; let themeNode = this.actor.get_theme_node(); @@ -51,19 +51,21 @@ BoxPointer.prototype = { this.actor.opacity = 0; this.actor.show(); - switch (this._arrowSide) { - case St.Side.TOP: - this.actor.y -= rise; - break; - case St.Side.BOTTOM: - this.actor.y += rise; - break; - case St.Side.LEFT: - this.actor.x -= rise; - break; - case St.Side.RIGHT: - this.actor.x += rise; - break; + if (animate) { + switch (this._arrowSide) { + case St.Side.TOP: + this.actor.y -= rise; + break; + case St.Side.BOTTOM: + this.actor.y += rise; + break; + case St.Side.LEFT: + this.actor.x -= rise; + break; + case St.Side.RIGHT: + this.actor.x += rise; + break; + } } Tweener.addTween(this.actor, { opacity: 255, @@ -74,7 +76,7 @@ BoxPointer.prototype = { time: POPUP_ANIMATION_TIME }); }, - animateDisappear: function(onComplete) { + hide: function(animate, onComplete) { let x = this.actor.x; let y = this.actor.y; let originalX = this.actor.x; @@ -82,19 +84,21 @@ BoxPointer.prototype = { let themeNode = this.actor.get_theme_node(); let rise = themeNode.get_length('-arrow-rise'); - switch (this._arrowSide) { - case St.Side.TOP: - y += rise; - break; - case St.Side.BOTTOM: - y -= rise; - break; - case St.Side.LEFT: - x += rise; - break; - case St.Side.RIGHT: - x -= rise; - break; + if (animate) { + switch (this._arrowSide) { + case St.Side.TOP: + y += rise; + break; + case St.Side.BOTTOM: + y -= rise; + break; + case St.Side.LEFT: + x += rise; + break; + case St.Side.RIGHT: + x -= rise; + break; + } } Tweener.addTween(this.actor, { opacity: 0, diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index a63744f51..97ce07d5a 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1676,7 +1676,7 @@ MessageTray.prototype = { this._adjustNotificationBoxPointerPosition(); this._summaryNotificationState = State.SHOWING; - this._summaryNotificationBoxPointer.animateAppear(Lang.bind(this, function() { + this._summaryNotificationBoxPointer.show(true, Lang.bind(this, function() { this._summaryNotificationState = State.SHOWN; })); }, @@ -1715,7 +1715,7 @@ MessageTray.prototype = { this._summaryNotification.ungrabFocus(); this._summaryNotificationState = State.HIDING; - this._summaryNotificationBoxPointer.animateDisappear(Lang.bind(this, this._hideSummaryNotificationCompleted)); + this._summaryNotificationBoxPointer.hide(true, Lang.bind(this, this._hideSummaryNotificationCompleted)); }, _hideSummaryNotificationCompleted: function() { diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 6d04e3d26..c36e95684 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -642,7 +642,7 @@ PopupMenuBase.prototype = { this.box.insert_actor(menuItem.menu.actor, position + 1); menuItem._subMenuActivateId = menuItem.menu.connect('activate', Lang.bind(this, function() { this.emit('activate'); - this.close(); + this.close(true); })); menuItem._subMenuActiveChangeId = menuItem.menu.connect('active-changed', Lang.bind(this, function(submenu, submenuItem) { if (this._activeMenuItem && this._activeMenuItem != submenuItem) @@ -652,7 +652,7 @@ PopupMenuBase.prototype = { })); menuItem._closingId = this.connect('open-state-changed', function(self, open) { if (!open) - menuItem.menu.immediateClose(); + menuItem.menu.close(false); }); } menuItem._activeChangeId = menuItem.connect('active-changed', Lang.bind(this, function (menuItem, active) { @@ -668,7 +668,7 @@ PopupMenuBase.prototype = { })); menuItem._activateId = menuItem.connect('activate', Lang.bind(this, function (menuItem, event) { this.emit('activate', menuItem); - this.close(); + this.close(true); })); menuItem.connect('destroy', Lang.bind(this, function(emitter) { menuItem.disconnect(menuItem._activateId); @@ -735,9 +735,9 @@ PopupMenuBase.prototype = { toggle: function() { if (this.isOpen) - this.close(); + this.close(true); else - this.open(); + this.open(true); }, destroy: function() { @@ -802,26 +802,26 @@ PopupMenu.prototype = { this._boxPointer.setArrowOrigin(origin); }, - open: function() { + open: function(animate) { if (this.isOpen) return; this.isOpen = true; this._boxPointer.setPosition(this.sourceActor, this._gap, this._alignment); - this._boxPointer.animateAppear(); + this._boxPointer.show(animate); this.emit('open-state-changed', true); }, - close: function() { + close: function(animate) { if (!this.isOpen) return; if (this._activeMenuItem) this._activeMenuItem.setActive(false); - this._boxPointer.animateDisappear(); + this._boxPointer.hide(animate); this.isOpen = false; this.emit('open-state-changed', false); @@ -848,12 +848,15 @@ PopupSubMenu.prototype = { this.actor.hide(); }, - open: function() { + open: function(animate) { if (this.isOpen) return; this.isOpen = true; + // we don't implement the !animate case because that doesn't + // currently get used... + let [naturalHeight, minHeight] = this.actor.get_preferred_height(-1); this.actor.height = 0; this.actor.show(); @@ -874,7 +877,7 @@ PopupSubMenu.prototype = { }); }, - close: function() { + close: function(animate) { if (!this.isOpen) return; @@ -883,44 +886,38 @@ PopupSubMenu.prototype = { if (this._activeMenuItem) this._activeMenuItem.setActive(false); - this.actor._arrow_rotation = this._arrow.rotation_angle_z; - Tweener.addTween(this.actor, - { _arrow_rotation: 0, - height: 0, - time: 0.25, - onCompleteScope: this, - onComplete: function() { - this.actor.hide(); - this.actor.set_height(-1); + if (animate) { + this.actor._arrow_rotation = this._arrow.rotation_angle_z; + Tweener.addTween(this.actor, + { _arrow_rotation: 0, + height: 0, + time: 0.25, + onCompleteScope: this, + onComplete: function() { + this.actor.hide(); + this.actor.set_height(-1); - this.emit('open-state-changed', false); - }, - onUpdateScope: this, - onUpdate: function() { - this._arrow.rotation_angle_z = this.actor._arrow_rotation; - } - }); - }, + this.emit('open-state-changed', false); + }, + onUpdateScope: this, + onUpdate: function() { + this._arrow.rotation_angle_z = this.actor._arrow_rotation; + } + }); + } else { + this._arrow.rotation_angle_z = 0; + this.actor.hide(); - immediateClose: function() { - if (!this.isOpen) - return; - - if (this._activeMenuItem) - this._activeMenuItem.setActive(false); - - this._arrow.rotation_angle_z = 0; - this.actor.hide(); - - this.isOpen = false; - this.emit('open-state-changed', false); + this.isOpen = false; + this.emit('open-state-changed', false); + } }, _onKeyPressEvent: function(actor, event) { // Move focus back to parent menu if the user types Left. if (this.isOpen && event.get_key_symbol() == Clutter.KEY_Left) { - this.close(); + this.close(true); this.sourceActor._delegate.setActive(true); return true; } @@ -964,7 +961,7 @@ PopupSubMenuMenuItem.prototype = { _onKeyPressEvent: function(actor, event) { if (event.get_key_symbol() == Clutter.KEY_Right) { - this.menu.open(); + this.menu.open(true); this.menu.activateFirst(); return true; } @@ -972,7 +969,7 @@ PopupSubMenuMenuItem.prototype = { }, activate: function(event) { - this.menu.open(); + this.menu.open(true); }, _onButtonReleaseEvent: function(actor) { @@ -1118,9 +1115,10 @@ PopupMenuManager.prototype = { // before closing it to keep that from happening let oldMenu = this._activeMenu; this._activeMenu = null; - oldMenu.close(); - } - newMenu.open(); + oldMenu.close(false); + newMenu.open(false); + } else + newMenu.open(true); }, _onMenuSourceEnter: function(menu) { @@ -1152,7 +1150,7 @@ PopupMenuManager.prototype = { return; if (focus._delegate && this._findMenu(focus._delegate.menu) != -1) return; - menu.close(); + menu.close(true); })); }, @@ -1240,6 +1238,6 @@ PopupMenuManager.prototype = { _closeMenu: function() { if (this._activeMenu != null) - this._activeMenu.close(); + this._activeMenu.close(true); } }; From d66370aecb859ce17d04ad7cf9a1b0ea3d038e53 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 22 Dec 2010 13:48:56 -0500 Subject: [PATCH 012/132] gnome-shell.modules: Build vala 0.11.2 Now required by dconf --- tools/build/gnome-shell.modules | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules index 94828aa98..ef50ccdb1 100644 --- a/tools/build/gnome-shell.modules +++ b/tools/build/gnome-shell.modules @@ -25,10 +25,10 @@ - - + + From d2f675e41c2438a2a317bd6f1ae6524ad5c61b7a Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 22 Dec 2010 14:36:07 -0500 Subject: [PATCH 013/132] Remove check for GTK+-3.0 compiled Mutter Mutter no longer optionally builds with GTK+-2.0, so we don't need to check for it. And the specific form of the check broke with recent changes to the naming of libraries for GTK+. --- configure.ac | 8 -------- 1 file changed, 8 deletions(-) diff --git a/configure.ac b/configure.ac index 827920a1a..f78ec43cd 100644 --- a/configure.ac +++ b/configure.ac @@ -165,14 +165,6 @@ changequote([,])dnl AC_PATH_PROG(mutter, [mutter]) AC_SUBST(mutter) -AC_MSG_CHECKING([if mutter was compiled with GTK+-3.0]) -if $PKG_CONFIG --libs libmutter-private | grep gtk-x11-3 >/dev/null; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) - AC_MSG_ERROR([GNOME Shell requires Mutter to be compiled against GTK+-3.0]) -fi - AC_CONFIG_FILES([ Makefile data/Makefile From 53f53c5a917ac4ded63a39ee4cc8b151a34765cd Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Wed, 22 Dec 2010 02:41:11 -0500 Subject: [PATCH 014/132] TelepathyClient: make chat notifications resident This ensures that chat notifications don't get removed from the message tray when clicked. https://bugzilla.gnome.org/show_bug.cgi?id=637810 --- js/ui/telepathyClient.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/telepathyClient.js b/js/ui/telepathyClient.js index 5b57706e9..cb9a6f614 100644 --- a/js/ui/telepathyClient.js +++ b/js/ui/telepathyClient.js @@ -593,6 +593,7 @@ Notification.prototype = { _init: function(source) { MessageTray.Notification.prototype._init.call(this, source, source.title, null, { customContent: true }); + this.setResident(true); this._responseEntry = new St.Entry({ style_class: 'chat-response' }); this._responseEntry.clutter_text.connect('activate', Lang.bind(this, this._onEntryActivated)); From c546ad9720c060c2f47cb224855d19e82688bcec Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 22 Dec 2010 16:26:08 -0500 Subject: [PATCH 015/132] Fix for gdk/x11 changes Handle the move of gdk_window_lookup() and gdk_window_foreign_new() into the gdk_x11_ namespace. --- src/shell-global.c | 3 ++- src/shell-tray-manager.c | 9 ++++++--- src/st/st-im-text.c | 5 +++-- src/tray/na-tray-manager.c | 1 - 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/shell-global.c b/src/shell-global.c index 71eb72895..2cf6ec689 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -530,7 +530,8 @@ shell_global_set_cursor (ShellGlobal *global, { ClutterStage *stage = CLUTTER_STAGE (meta_plugin_get_stage (global->plugin)); - global->stage_window = gdk_window_foreign_new (clutter_x11_get_stage_window (stage)); + global->stage_window = gdk_x11_window_foreign_new_for_display (gdk_display_get_default (), + clutter_x11_get_stage_window (stage)); } gdk_window_set_cursor (global->stage_window, cursor); diff --git a/src/shell-tray-manager.c b/src/shell-tray-manager.c index ec6c8aeee..370297ffa 100644 --- a/src/shell-tray-manager.c +++ b/src/shell-tray-manager.c @@ -198,6 +198,7 @@ shell_tray_manager_manage_stage (ShellTrayManager *manager, { Window stage_xwindow; GdkWindow *stage_window; + GdkDisplay *display; GdkScreen *screen; g_return_if_fail (manager->priv->stage == NULL); @@ -212,13 +213,15 @@ shell_tray_manager_manage_stage (ShellTrayManager *manager, * in in some way. (The Clutter/Mutter combo is currently incapable * of multi-screen operation, so alternatively we could just assume * that clutter_x11_get_default_screen() gives us the right - * screen.) + * screen.) We assume, in any case, that we are using the default + * GDK display. */ - stage_window = gdk_window_lookup (stage_xwindow); + display = gdk_display_get_default(); + stage_window = gdk_x11_window_lookup_for_display (display, stage_xwindow); if (stage_window) g_object_ref (stage_window); else - stage_window = gdk_window_foreign_new (stage_xwindow); + stage_window = gdk_x11_window_foreign_new_for_display (display, stage_xwindow); screen = gdk_window_get_screen (stage_window); diff --git a/src/st/st-im-text.c b/src/st/st-im-text.c index 2b3f0fd21..c2a0bf55a 100644 --- a/src/st/st-im-text.c +++ b/src/st/st-im-text.c @@ -61,6 +61,7 @@ #include #include #include +#include #include #include "st-im-text.h" @@ -200,11 +201,11 @@ window_for_actor (ClutterActor *actor) stage = clutter_actor_get_stage (actor); xwindow = clutter_x11_get_stage_window ((ClutterStage *)stage); - window = gdk_window_lookup_for_display (display, xwindow); + window = gdk_x11_window_lookup_for_display (display, xwindow); if (window) g_object_ref (window); else - window = gdk_window_foreign_new_for_display (display, xwindow); + window = gdk_x11_window_foreign_new_for_display (display, xwindow); return window; } diff --git a/src/tray/na-tray-manager.c b/src/tray/na-tray-manager.c index 64300bc82..d53c90206 100644 --- a/src/tray/na-tray-manager.c +++ b/src/tray/na-tray-manager.c @@ -27,7 +27,6 @@ #include "na-tray-manager.h" #include "gtk-compat.h" -#include #include #if defined (GDK_WINDOWING_X11) #include From b1dc2d967e73b4f53d890d01745f00f7e25fcecf Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 22 Dec 2010 16:38:17 -0500 Subject: [PATCH 016/132] Bump GTK+ minimum version to 2.91.7 Needed for new gdk_x11_window_* functions. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index f78ec43cd..ae4f3a85c 100644 --- a/configure.ac +++ b/configure.ac @@ -61,7 +61,7 @@ CLUTTER_MIN_VERSION=1.5.8 GOBJECT_INTROSPECTION_MIN_VERSION=0.6.11 GJS_MIN_VERSION=0.7 MUTTER_MIN_VERSION=2.91.0 -GTK_MIN_VERSION=2.91.0 +GTK_MIN_VERSION=2.91.7 GIO_MIN_VERSION=2.25.9 # Collect more than 20 libraries for a prize! From ca09595350ed7e111fe7fd7169ab0545aa6debac Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 22 Dec 2010 18:44:11 -0500 Subject: [PATCH 017/132] Bump version to 2.91.4 --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index ae4f3a85c..116575df8 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.63) -AC_INIT([gnome-shell],[2.91.3],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) +AC_INIT([gnome-shell],[2.91.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/shell-global.c]) @@ -60,7 +60,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) CLUTTER_MIN_VERSION=1.5.8 GOBJECT_INTROSPECTION_MIN_VERSION=0.6.11 GJS_MIN_VERSION=0.7 -MUTTER_MIN_VERSION=2.91.0 +MUTTER_MIN_VERSION=2.91.4 GTK_MIN_VERSION=2.91.7 GIO_MIN_VERSION=2.25.9 From 7d44c666ff59c437d1e3b7111dc51460f5e33c95 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 22 Dec 2010 09:36:23 -0500 Subject: [PATCH 018/132] altTab: use 'selected' pseudo-style for selected item This makes it consistent with other parts of the UI and will let the a11y code use the rule "has_style_pseudo_class('selected') => ATK_STATE_SELECTED" https://bugzilla.gnome.org/show_bug.cgi?id=637830 --- data/theme/gnome-shell.css | 21 +++++++++------------ js/ui/altTab.js | 16 ++++++++++------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 72c672da4..c5a97db4a 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -993,6 +993,15 @@ StTooltip StLabel { border-radius: 8px; } +.switcher-list .item-box:outlined { + padding: 6px; + border: 2px solid rgba(85,85,85,1.0); +} + +.switcher-list .item-box:selected { + background: rgba(255,255,255,0.33); +} + .switcher-list .thumbnail-box { padding: 2px; spacing: 4px; @@ -1002,18 +1011,6 @@ StTooltip StLabel { width: 256px; } -.switcher-list .outlined-item-box { - padding: 6px; - border: 2px solid rgba(85,85,85,1.0); - border-radius: 8px; -} - -.switcher-list .selected-item-box { - padding: 8px; - border-radius: 8px; - background: rgba(255,255,255,0.33); -} - .switcher-list .separator { width: 1px; background: rgba(255,255,255,0.33); diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 824c1b097..ca2b902be 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -604,16 +604,18 @@ SwitcherList.prototype = { }, highlight: function(index, justOutline) { - if (this._highlighted != -1) - this._items[this._highlighted].style_class = 'item-box'; + if (this._highlighted != -1) { + this._items[this._highlighted].remove_style_pseudo_class('outlined'); + this._items[this._highlighted].remove_style_pseudo_class('selected'); + } this._highlighted = index; if (this._highlighted != -1) { if (justOutline) - this._items[this._highlighted].style_class = 'outlined-item-box'; + this._items[this._highlighted].add_style_pseudo_class('outlined'); else - this._items[this._highlighted].style_class = 'selected-item-box'; + this._items[this._highlighted].add_style_pseudo_class('selected'); } let monitor = global.get_primary_monitor(); @@ -859,9 +861,11 @@ AppSwitcher.prototype = { while(this._items.length > 1 && this._items[j].style_class != 'item-box') { j++; } - let iconPadding = this._items[j].get_theme_node().get_horizontal_padding(); + let themeNode = this._items[j].get_theme_node(); + let iconPadding = themeNode.get_horizontal_padding(); + let iconBorder = themeNode.get_border_width(St.Side.LEFT) + themeNode.get_border_width(St.Side.RIGHT); let [iconMinHeight, iconNaturalHeight] = this.icons[j].label.get_preferred_height(-1); - let iconSpacing = iconNaturalHeight + iconPadding; + let iconSpacing = iconNaturalHeight + iconPadding + iconBorder; let totalSpacing = this._list.spacing * (this._items.length - 1); if (this._separator) totalSpacing += this._separator.width + this._list.spacing; From 23432e616db3047950b270dbda70bf6781807876 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 21 Dec 2010 15:59:55 +0100 Subject: [PATCH 019/132] BluetoothStatus: move the sendto item to the bottom Kill one separator by merging all global actions items at the end of the menu, which ends up divided in three sections: status, devices and actions. https://bugzilla.gnome.org/show_bug.cgi?id=637690 --- js/ui/status/bluetooth.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 9b8fa0d1c..f2cfa8fba 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -65,16 +65,15 @@ Indicator.prototype = { this.menu.addMenuItem(this._discoverable); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); - this._fullMenuItems = [new PopupMenu.PopupMenuItem(_("Send Files to Device...")), - new PopupMenu.PopupSeparatorMenuItem(), - new PopupMenu.PopupSeparatorMenuItem(), + this._fullMenuItems = [new PopupMenu.PopupSeparatorMenuItem(), + new PopupMenu.PopupMenuItem(_("Send Files to Device...")), new PopupMenu.PopupMenuItem(_("Setup a New Device..."))]; - this._deviceSep = this._fullMenuItems[1]; // hidden if no device exists + this._deviceSep = this._fullMenuItems[0]; // hidden if no device exists - this._fullMenuItems[0].connect('activate', function() { + this._fullMenuItems[1].connect('activate', function() { GLib.spawn_command_line_async('bluetooth-sendto'); }); - this._fullMenuItems[3].connect('activate', function() { + this._fullMenuItems[2].connect('activate', function() { GLib.spawn_command_line_async('bluetooth-wizard'); }); @@ -83,7 +82,7 @@ Indicator.prototype = { this.menu.addMenuItem(item); } - this._deviceItemPosition = 5; + this._deviceItemPosition = 3; this._deviceItems = []; this._applet.connect('devices-changed', Lang.bind(this, this._updateDevices)); this._updateDevices(); From 5f212b1ae2dd2685ccb55294da9bb929db211f39 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 21 Dec 2010 16:26:26 +0100 Subject: [PATCH 020/132] BluetoothStatus: update only devices that actually changed When receiving a "devices-changed" signal from BluetoothApplet, check if some device item corresponds to an existing one, destroy the remaining and add the new ones. With this patch, signal emission when no device actually changed (which happen due to bluetoothd creating temporary devices) result in a no-op. https://bugzilla.gnome.org/show_bug.cgi?id=637690 --- js/ui/status/bluetooth.js | 47 ++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index f2cfa8fba..47a7ed288 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -68,6 +68,7 @@ Indicator.prototype = { this._fullMenuItems = [new PopupMenu.PopupSeparatorMenuItem(), new PopupMenu.PopupMenuItem(_("Send Files to Device...")), new PopupMenu.PopupMenuItem(_("Setup a New Device..."))]; + this._hasDevices = false; this._deviceSep = this._fullMenuItems[0]; // hidden if no device exists this._fullMenuItems[1].connect('activate', function() { @@ -118,22 +119,56 @@ Indicator.prototype = { } }, - _updateDevices: function() { - this._destroyAll(this._deviceItems); - this._deviceItems = []; + _deviceCompare: function(d1, d2) { + return d1.device_path == d2.device_path && + d1.bdaddr == d2.bdaddr && + d1.can_connect == d2.can_connect && + d1.capabilities == d2.capabilities; + }, + _updateDevices: function() { let devices = this._applet.get_devices(); - let anydevice = false; + + for (let i = 0; i < this._deviceItems.length; i++) { + let item = this._deviceItems.length; + let destroy = true; + for (let j = 0; j < devices.length; j++) { + // we need to deep compare because BluetoothSimpleDevice is a boxed type + // (but we take advantage of that, because _skip will disappear the next + // time get_devices() is called) + if (this._deviceCompare(item._device, devices[i])) { + item.label.text = devices[i].alias; + devices[i]._skip = true; + destroy = false; + } + } + if (destroy) { + item.destroy(); + item._destroyed = true; + } + } + + let newlist = [ ]; + for (let i = 0; i < this._deviceItems.length; i++) { + let item = this._deviceItems[i]; + if (!item._destroyed) + newlist.push(item); + } + this._deviceItems = newlist; + + this._hasDevices = newlist.length > 0; for (let i = 0; i < devices.length; i++) { let d = devices[i]; + if (d._skip) + continue; let item = this._createDeviceItem(d); if (item) { this.menu.addMenuItem(item, this._deviceItemPosition + this._deviceItems.length); this._deviceItems.push(item); - anydevice = true; + this._hasDevices = true; } } - if (anydevice) + if (this._hasDevices) this._deviceSep.actor.show(); else this._deviceSep.actor.hide(); From a2fb8a8dce18c0ce07a3e7e456d013cc63868481 Mon Sep 17 00:00:00 2001 From: "Gheyret T.Kenji" Date: Thu, 23 Dec 2010 19:08:24 +0100 Subject: [PATCH 021/132] Added UG translation --- po/ug.po | 525 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 369 insertions(+), 156 deletions(-) diff --git a/po/ug.po b/po/ug.po index 1e58f50de..527677a47 100644 --- a/po/ug.po +++ b/po/ug.po @@ -1,16 +1,15 @@ -# Uyghur translation for gnome-shell. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# Gheyret Kenji,2010. -# Sahran , 2010. -# Zeper , 2010. -# +# Uyghur translation for gnome-shell. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Gheyret Kenji,2010. +# Sahran , 2010. +# Zeper , 2010. +# 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-11-25 14:32+0000\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" "PO-Revision-Date: 2010-11-25 14:28+0600\n" "Last-Translator: Sahran \n" "Language-Team: Uyghur Computer Science Association \n" @@ -47,28 +46,21 @@ 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 ئارقىلىق " -"كىرىشىگە قۇلايلىق" +msgstr "ئىچكى قورال قوزغىتىلسا ئىجادكارلار ۋە سىنىغۇچىلارنىڭ Alt-F2 ئارقىلىق كىرىشىگە قۇلايلىق" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "File extension used for storing the screencast" -msgstr "" -"ئېكران كەسمىسى (screencasts) ساقلاشتا ئىشلىتىلىدىغان ھۆججەتنىڭ كېڭەيتىلگەن " -"ئاتى " +msgstr "ئېكران كەسمىسى (screencasts) ساقلاشتا ئىشلىتىلىدىغان ھۆججەتنىڭ كېڭەيتىلگەن ئاتى" #: ../data/org.gnome.shell.gschema.xml.in.h:5 msgid "Framerate used for recording screencasts." -msgstr "" -"ئېكران كەسمىسى (screencasts) خاتىرىلەشتە ئىشلىتىلىدىغان كاندۇك تېزلىكى." +msgstr "ئېكران كەسمىسى (screencasts) خاتىرىلەشتە ئىشلىتىلىدىغان كاندۇك تېزلىكى." #: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." -msgstr "" -"GNOME چاپان (Shell)كېڭەيتىلمىسىنىڭ uuid خاسلىقى بار؛ بۇ كۇنۇپكا " -"يۈكلەنمەيدىغان كېڭەيتىلمىلەر تىزىملىكىنى كۆرسىتىدۇ." +msgstr "GNOME چاپان (Shell)كېڭەيتىلمىسىنىڭ uuid خاسلىقى بار؛ بۇ كۇنۇپكا يۈكلەنمەيدىغان كېڭەيتىلمىلەر تىزىملىكىنى كۆرسىتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.h:7 msgid "History for command (Alt-F2) dialog" @@ -82,17 +74,13 @@ msgstr "سائەت فورماتى" msgid "" "If true and format is either \"12-hour\" or \"24-hour\", display date in the " "clock, in addition to time." -msgstr "" -"ئەگەر راست (true) بولسا سائەتتە ۋاقىت فورماتىنى «12 سائەت» ياكى «24 سائەت» " -"كۆرسەتكەندىن سىرت چېسلانىمۇ كۆرسىتىدۇ." +msgstr "ئەگەر راست (true) بولسا سائەتتە ۋاقىت فورماتىنى «12 سائەت» ياكى «24 سائەت» كۆرسەتكەندىن سىرت چېسلانىمۇ كۆرسىتىدۇ." #: ../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 "" -"ئەگەر راست (true) بولسا سائەتتە ۋاقىت فورماتىنى «12 سائەت» ياكى «24 سائەت» " -"كۆرسەتكەندىن سىرت سېكۇنتنىمۇ كۆرسىتىدۇ. " +msgstr "ئەگەر راست (true) بولسا سائەتتە ۋاقىت فورماتىنى «12 سائەت» ياكى «24 سائەت» كۆرسەتكەندىن سىرت سېكۇنتنىمۇ كۆرسىتىدۇ." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." @@ -100,13 +88,9 @@ msgstr "ئەگەر راست(true) بولسا يىلنامىدىكى ISO ھەپت #: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "List of desktop file IDs for favorite applications" -msgstr "ئامراق قوللىنىشچان پروگراممىلارنىڭ ئۈستەل ئۈستى ھۆججەت ID تىزىملىكى" +msgstr "ئامراق پروگراممىلارنىڭ ئۈستەلئۈستى ھۆججەت ID تىزىملىكى" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "خىزمەت رايون كۆرۈنۈش ھالىتى ھەققىدە قىسقىچە بايان" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 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 " @@ -116,91 +100,60 @@ msgid "" "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." -msgstr "" -"ئۈن ئېلىشنى كودلاشتا ئىشلىتىلىدىغان GStreamer ئاقما لىنىيىنى تەڭشەيدۇ. ئۇ " -"gst-launch گرامماتىكىسىغا بوي سۇنىدۇ. بۇ ئاقما لىنىيىدە ئۇلانمىغان sink pad " -"بولۇشى لازىم، خاتىرىلىنىدىغان سىن مۇشۇ جايدا خاتىرىلىنىدۇ. بۇ لىنىيىدە " -"ئادەتتە يەنە بىر ئۇلانمىغان مەنبە pad بولىدۇ؛ بۇ pad چىقارغان ئۇچۇرلار " -"ھۆججەتكە يېزىلىدۇ. ئەمما ئاقما لىنىيە ئۆزىنىڭ چىقىرىشىنى بىر تەرەپ " -"قىلالايدۇ، بۇنداق بولغاندا shout2send ئارقىلىق ياكى شۇنىڭغا ئوخشاش ئۇسۇلدا " -"چىقىرىشنى icecast مۇلازىمېتىرىغا يوللايدۇ. ئاقما لىنىيە تەڭشەلمىگەن ياكى بوش " -"قىممەتكە تەڭشەلگەندە كۆڭۈلدىكى ئاقما لىنىيە قوزغىتىلىدۇ. ئۇنىڭ نۆۋەتتىكى " -"قىممىتى 'videorate ! theoraenc ! oggmux' بولۇپ، فورماتى Ogg شەكلىدە " -"خاتىرىلىنىدۇ." +msgstr "ئۈن ئېلىشنى كودلاشتا ئىشلىتىلىدىغان GStreamer ئاقما لىنىيىنى تەڭشەيدۇ. ئۇ gst-launch گرامماتىكىسىغا بوي سۇنىدۇ. بۇ ئاقما لىنىيىدە ئۇلانمىغان sink pad بولۇشى لازىم، خاتىرىلىنىدىغان سىن مۇشۇ جايدا خاتىرىلىنىدۇ. بۇ لىنىيىدە ئادەتتە يەنە بىر ئۇلانمىغان مەنبە pad بولىدۇ؛ بۇ pad چىقارغان ئۇچۇرلار ھۆججەتكە يېزىلىدۇ. ئەمما ئاقما لىنىيە ئۆزىنىڭ چىقىرىشىنى بىر تەرەپ قىلالايدۇ، بۇنداق بولغاندا shout2send ئارقىلىق ياكى شۇنىڭغا ئوخشاش ئۇسۇلدا چىقىرىشنى icecast مۇلازىمېتىرىغا يوللايدۇ. ئاقما لىنىيە تەڭشەلمىگەن ياكى بوش قىممەتكە تەڭشەلگەندە كۆڭۈلدىكى ئاقما لىنىيە قوزغىتىلىدۇ. ئۇنىڭ نۆۋەتتىكى قىممىتى 'videorate ! theoraenc ! oggmux' بولۇپ، فورماتى Ogg شەكلىدە خاتىرىلىنىدۇ." -#: ../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." 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 " "a different container format." -msgstr "" -"خاتىرىلەنگەن ئېكراننىڭ ھۆججەت ئاتى نۆۋەتتىكى چېسلا ئاساسىدا بىردىنبىر بولۇپ " -"بۇ كېڭەيتىلگەن ئاتىنى ئىشلىتىدۇ. ئۇ ئۆزگەرسە ئوخشاش بولمىغان قاچا فورماتىدا " -"خاتىرىلەيدۇ." +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." -msgstr "" -"GNOME Shell ئېكران خاتىرىلىگۈچ ھەر سېكۇنتتا خاتىرىلەيدىغان ئېكران كەسمىسى " -"كاندۇك سۈرىتى(ھەر سېكۇنتتىكى كاندۇك سانى)." +msgstr "GNOME Shell ئېكران خاتىرىلىگۈچ ھەر سېكۇنتتا خاتىرىلەيدىغان ئېكران كەسمىسى كاندۇك سۈرىتى(ھەر سېكۇنتتىكى كاندۇك سانى)." -#: ../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 ئاقما لىنىيىسى" -#: ../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 "" -"قىسقىچە باياندىكى تاللانغان خىزمەت رايونىنىڭ كۆرۈنۈش ھالىتى. ئىشلىتىشكە " -"بولىدىغان قىممەتلەر «يەككە» ۋە «سېتكا»" - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "" "The shell normally monitors active applications in order to present the most " "used ones (e.g. in launchers). While this data will be kept private, you may " "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." -msgstr "" -"چاپان (shell) ئادەتتىكى ئەھۋالدا كۆپ ئىشلىتىلىدىغان ئاكتىپ پروگراممىلار" -"(مەسىلەن، ئىجرا قىلىنىۋاتقان)نى كۆزىتىدۇ. گەرچە بۇ سانلىق مەلۇماتلار مەخپىي " -"ساقلانسىمۇ، شەخسىي سىر سەۋەبىدىن بۇنى چەكلىشىڭىز مۇمكىن. دىققەت بۇنداق " -"قىلغاندا ئاللىبۇرۇن ساقلانغان سانلىق مەلۇماتلار چىقىرىۋېتىلمەيدۇ." +msgstr "چاپان (shell) ئادەتتىكى ئەھۋالدا كۆپ ئىشلىتىلىدىغان ئاكتىپ پروگراممىلار(مەسىلەن، ئىجرا قىلىنىۋاتقان)نى كۆزىتىدۇ. گەرچە بۇ سانلىق مەلۇماتلار مەخپىي ساقلانسىمۇ، شەخسىي سىر سەۋەبىدىن بۇنى چەكلىشىڭىز مۇمكىن. دىققەت بۇنداق قىلغاندا ئاللىبۇرۇن ساقلانغان سانلىق مەلۇماتلار چىقىرىۋېتىلمەيدۇ." -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../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 "" -"format (فورمات) كۇنۇپكىسى \"custom\" (ئىختىيارى) قىلىپ تەڭشەلسە بۇ كۇنۇپكا " -"تاختا سائەت ئىشلىتىدىغان فورماتنى بەلگىلەيدۇ. سىز strftime()نىڭ فورمات " -"بەلگىسىنى ئىشلىتىپ بەلگىلەنگەن فورماتقا ئېرىشەلەيسىز. تەپسىلاتىنى strftime() " -"نىڭ قوللانمىسىدىن كۆرۈڭ." +msgstr "format (فورمات) كۇنۇپكىسى \"custom\" (ئىختىيارى) قىلىپ تەڭشەلسە بۇ كۇنۇپكا تاختا سائەت ئىشلىتىدىغان فورماتنى بەلگىلەيدۇ. سىز strftime()نىڭ فورمات بەلگىسىنى ئىشلىتىپ بەلگىلەنگەن فورماتقا ئېرىشەلەيسىز. تەپسىلاتىنى strftime() نىڭ قوللانمىسىدىن كۆرۈڭ." -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../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\", " @@ -208,20 +161,13 @@ msgid "" "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\" يەنى (12 سائەت)، \"24-hour\" يەنى (24 سائەت)، " -"\"unix\" ۋە \"custom\" (ئىختىيارى). ئەگەر \"unix\" قىلىپ تەڭشەلسە سائەت " -"ئۆزلۈكىدىن يېڭى ئېرا (يەنى، 1970-01-01) دىن ئۆتكەن سېكۇنتنى ئاساس قىلىدۇ. " -"ئەگەر \"custom\" قىلىپ تەڭشەلسە سائەت custom_format كۇنۇپكا قىممىتىگە " -"ئاساسەن ۋاقىتنى كۆرسىتىدۇ. ئەگەر \"unix\" ياكى \"custom\" قىلىپ تەڭشەلسە " -"show_date ۋە show_seconds قىممىتىگە پەرۋا قىلمايدۇ" +msgstr "بۇ كۇنۇپكا تاختا سائەت ئىشلەتكەن سائەت فورماتىنى بەلگىلىگەن. ئىشلەتكىلى بولىدىغان قىممىتى \"12-hour\" يەنى (12 سائەت)، \"24-hour\" يەنى (24 سائەت)، \"unix\" ۋە \"custom\" (ئىختىيارى). ئەگەر \"unix\" قىلىپ تەڭشەلسە سائەت ئۆزلۈكىدىن يېڭى ئېرا (يەنى، 1970-01-01) دىن ئۆتكەن سېكۇنتنى ئاساس قىلىدۇ. ئەگەر \"custom\" قىلىپ تەڭشەلسە سائەت custom_format كۇنۇپكا قىممىتىگە ئاساسەن ۋاقىتنى كۆرسىتىدۇ. ئەگەر \"unix\" ياكى \"custom\" قىلىپ تەڭشەلسە show_date ۋە show_seconds قىممىتىگە پەرۋا قىلمايدۇ" -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:24 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:25 msgid "Whether to collect stats about applications usage" msgstr "پروگراممىنىڭ ئىشلىتىلىشى ھەققىدىكى ستاتىستىكىنى توپلامدۇ يوق" @@ -237,8 +183,7 @@ msgstr "نىشانلىغۇچنىڭ رەڭگى" msgid "" "Determines the length of the vertical and horizontal lines that make up the " "crosshairs." -msgstr "" -"نىشانلىغۇچنى ھاسىل قىلىدىغان توغرا ۋە بوي سىزىقنىڭ ئۇزۇنلۇقى بەلگىلىنىدۇ." +msgstr "نىشانلىغۇچنى ھاسىل قىلىدىغان توغرا ۋە بوي سىزىقنىڭ ئۇزۇنلۇقى بەلگىلىنىدۇ." #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:4 msgid "" @@ -305,7 +250,7 @@ msgstr "ئېكران ئورنى" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:15 msgid "Scroll magnified contents beyond the edges of the desktop" -msgstr "دومىلىما چوڭايتقۇچ ئۈستەل ئۈستى گىرۋەك مەزمۇنىدىن ھالقىپ كەتتى" +msgstr "دومىلىما چوڭايتقۇچ ئۈستەلئۈستى گىرۋەك مەزمۇنىدىن ھالقىپ كەتتى" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:16 msgid "Show or hide crosshairs" @@ -379,62 +324,45 @@ msgstr "_12 سائەت فورماتى" msgid "_24 hour format" msgstr "_24 سائەت فورماتى" -#. **** Applications **** -#: ../js/ui/appDisplay.js:316 ../js/ui/dash.js:778 +#: ../js/ui/appDisplay.js:154 +msgid "All" +msgstr "ھەممىسى" + +#: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" msgstr "پروگراممىلار" -#: ../js/ui/appDisplay.js:348 +#: ../js/ui/appDisplay.js:265 msgid "PREFERENCES" msgstr "مايىللىق" -#: ../js/ui/appDisplay.js:647 +#: ../js/ui/appDisplay.js:562 msgid "New Window" msgstr "يېڭى كۆزنەك" -#: ../js/ui/appDisplay.js:651 +#: ../js/ui/appDisplay.js:566 msgid "Remove from Favorites" msgstr "يىغقۇچتىن چىقىرىۋەت" -#: ../js/ui/appDisplay.js:652 +#: ../js/ui/appDisplay.js:567 msgid "Add to Favorites" msgstr "يىغقۇچقا قوش" -#: ../js/ui/appDisplay.js:829 -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 "ئىزدە" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "چىقىرىۋەت" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "ئىزدەۋاتىدۇ..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "ماس كېلىدىغان نەتىجە يوق." - -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:797 ../js/ui/placeDisplay.js:558 -msgid "PLACES & DEVICES" -msgstr "ئورۇن ۋە ئۈسكۈنىلەر" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "يېقىنقى تۈرلەر" @@ -468,63 +396,72 @@ msgstr "مەنبەنى كۆرسەت" msgid "Web Page" msgstr "توربەت" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "يېنىۋال" +#: ../js/ui/overview.js:158 +#| msgid "New Window" +msgid "Windows" +msgstr "كۆزنەكلەر" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "پروگراممىلار" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "%s چېكىن" -#: ../js/ui/panel.js:495 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "مايىللىق" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a %b %e، %R:%S" -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:586 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:586 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e، %l:%M:%S %p" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:599 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:599 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:604 msgid "%a %l:%M %p" msgstr "%p%l:%M (%a)" #. 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:745 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "پائالىيەتلەر" @@ -541,6 +478,10 @@ msgstr "قايتا سىنا" msgid "Connect to..." msgstr "باغلىنىش…" +#: ../js/ui/placeDisplay.js:558 +msgid "PLACES & DEVICES" +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 @@ -568,16 +509,14 @@ msgid "Busy" msgstr "ئالدىراش" #: ../js/ui/statusMenu.js:114 -#, fuzzy #| msgid "My Account..." msgid "My Account" -msgstr "ھېساباتىم…" +msgstr "ھېساباتىم" #: ../js/ui/statusMenu.js:118 -#, fuzzy #| msgid "System Settings..." msgid "System Settings" -msgstr "سىستېما تەڭشەكلىرى..." +msgstr "سىستېما تەڭشىكى" #: ../js/ui/statusMenu.js:125 msgid "Lock Screen" @@ -592,15 +531,18 @@ msgid "Log Out..." msgstr "تىزىمدىن چىقىش…" #: ../js/ui/statusMenu.js:141 -#, fuzzy #| msgid "Suspend" msgid "Suspend..." -msgstr "توڭلات" +msgstr "" #: ../js/ui/statusMenu.js:145 msgid "Shut Down..." msgstr "تاقا…" +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "كېڭەيت تارايت" + #: ../js/ui/status/accessibility.js:88 msgid "Screen Reader" msgstr "ئېكران ئوقۇغۇچ" @@ -641,9 +583,262 @@ msgstr "يۇقىرى ئاق-قارىلىقى" msgid "Large Text" msgstr "چوڭ تېكىست" -#: ../js/ui/status/accessibility.js:224 -msgid "Zoom" -msgstr "كېڭەيت تارايت" +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "كۆكچىش" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "كۆرۈشچانلىقى" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:94 +#| msgid "System Settings..." +msgid "Bluetooth Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:151 +#| msgid "Connect to..." +msgid "Connection" +msgstr "باغلىنىش" + +#: ../js/ui/status/bluetooth.js:187 +#| msgid "Suspend" +msgid "Send Files..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:210 +#| msgid "System Settings..." +msgid "Keyboard Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:215 +#| msgid "System Settings..." +msgid "Mouse Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#| msgid "System Settings..." +msgid "Sound Settings" +msgstr "" + +#: ../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 +#, c-format +msgid "Authorization request from %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "رەت قىل" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "جۈپلەش تۈرى" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "جۈپلىمە" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "جەزملە" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "ۋاز كەچ" + +#: ../js/ui/status/power.js:85 +#| msgid "System Settings..." +msgid "Power Settings" +msgstr "" + +#: ../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] "" + +#. 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 "" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "سائەت" + +#: ../js/ui/status/power.js:117 +#| msgid "%d minute ago" +#| msgid_plural "%d minutes ago" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "مىنۇت" + +#: ../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] "" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "UPS" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "ئېكران" + +#: ../js/ui/status/power.js:245 +#| msgid "Mouse Keys" +msgid "Mouse" +msgstr "چاشقىنەك" + +#: ../js/ui/status/power.js:247 +#| msgid "Screen Keyboard" +msgid "Keyboard" +msgstr "ھەرپتاختا" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "Media چالغۇ" + +#: ../js/ui/status/power.js:255 +#| msgid "Enabled" +msgid "Tablet" +msgstr "سەزمە تاختا" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "كومپيۇتېر" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "نامەلۇم" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "دىسكا" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "" + +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "" + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "" + +#: ../js/ui/telepathyClient.js:568 +#, c-format +#| msgid "'%s' is ready" +msgid "%s is away." +msgstr "" + +#: ../js/ui/telepathyClient.js:571 +#, c-format +msgid "%s is busy." +msgstr "" + +#. 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 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "" #: ../js/ui/windowAttentionHandler.js:43 #, c-format @@ -655,12 +850,12 @@ msgstr "%s باشلاشنى تاماملىدى" msgid "'%s' is ready" msgstr "«%s» تەييار" -#: ../js/ui/workspacesView.js:229 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "يېڭى خىزمەت رايونى قوشالمايدۇ چۈنكى ئەڭ كۆپ خىزمەت رايون چېكىگە يەتتى." -#: ../js/ui/workspacesView.js:246 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "بىرىنچى خىزمەت رايونىنى چىقىرىۋەتكىلى بولمايدۇ." @@ -684,33 +879,29 @@ msgstr[0] "%u كىرگۈزۈلمە" msgid "System Sounds" msgstr "سىستېما ئاۋازى" -#: ../src/shell-app-system.c:1012 -msgid "Unknown" -msgstr "نامەلۇم" - -#: ../src/shell-global.c:1163 +#: ../src/shell-global.c:1155 msgid "Less than a minute ago" msgstr "بىر مىنۇتتىنمۇ ئىلگىرى" -#: ../src/shell-global.c:1167 +#: ../src/shell-global.c:1159 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d مىنۇت ئىلگىرى" -#: ../src/shell-global.c:1172 +#: ../src/shell-global.c:1164 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d سائەت ئىلگىرى" -#: ../src/shell-global.c:1177 +#: ../src/shell-global.c:1169 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d كۈن ئىلگىرى" -#: ../src/shell-global.c:1182 +#: ../src/shell-global.c:1174 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -738,7 +929,29 @@ msgstr "ئىزدە" #: ../src/shell-util.c:300 #, c-format msgid "%1$s: %2$s" -msgstr "%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 "Invisible" #~ msgstr "يوشۇرۇن" From e6678dadd87f1a2eed61b26d8f9fcb3fe31f2325 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 23 Dec 2010 19:54:37 +0100 Subject: [PATCH 022/132] Updated Spanish translation --- po/es.po | 158 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 140 insertions(+), 18 deletions(-) diff --git a/po/es.po b/po/es.po index 2e10fd726..c8b11ef70 100644 --- a/po/es.po +++ b/po/es.po @@ -2,15 +2,16 @@ # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Jorge González , 2009, 2010. +# Daniel Mustieles , 2010. # 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: 2010-12-18 19:25+0000\n" -"PO-Revision-Date: 2010-12-19 13:12+0100\n" -"Last-Translator: Jorge González \n" +"POT-Creation-Date: 2010-12-20 21:07+0000\n" +"PO-Revision-Date: 2010-12-23 10:31+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" @@ -88,8 +89,8 @@ msgid "" "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." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." @@ -111,13 +112,13 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." 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 " +"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 ! theoraenc ! oggmux» y greba en " "Ogg Theora." @@ -199,8 +200,8 @@ msgid "" 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 " +"«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»." @@ -654,6 +655,131 @@ msgstr "Contraste alto" msgid "Large Text" msgstr "Texto:" +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Visibilidad" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "Enviar archivos al dispositivo…" + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "Configurar un dispositivo nuevo…" + +#: ../js/ui/status/bluetooth.js:94 +#| msgid "Power Settings" +msgid "Bluetooth Settings" +msgstr "Configuración de Bluetooth" + +#: ../js/ui/status/bluetooth.js:151 +#| msgid "Connect to..." +msgid "Connection" +msgstr "Conexión" + +#: ../js/ui/status/bluetooth.js:187 +#| msgid "Suspend..." +msgid "Send Files..." +msgstr "Enviar archivos…" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "Examinar archivos…" + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "Error al examinar el dispositivo" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»" + +#: ../js/ui/status/bluetooth.js:210 +#| msgid "Power Settings" +msgid "Keyboard Settings" +msgstr "Configuración del teclado" + +#: ../js/ui/status/bluetooth.js:215 +#| msgid "Power Settings" +msgid "Mouse Settings" +msgstr "Ajustes del ratón…" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Configuración del sonido" + +#: ../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 "Agente Bluetooth" + +#: ../js/ui/status/bluetooth.js:328 +#, c-format +msgid "Authorization request from %s" +msgstr "Solicitud de autorización de %s" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "El dispositivo %s quiere acceder al servicio «%s»" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "Conceder acceso siempre" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "Conceder sólo esta vez" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "Rechazar" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Confirmación de emparejamiento para «%s»" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "El dispositivo «%s» quiere emparejarse con este equipo" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo." + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "Coincide" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "No coincide" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "Solicitud de emparejamiento para «%s»" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "Introduzca el PIN mencionado en el dispositivo." + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "Aceptar" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "Cancelar" + #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Configuración de energía" @@ -746,10 +872,6 @@ msgstr "Volumen" msgid "Microphone" msgstr "Micrófono" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "Configuración del sonido" - #: ../js/ui/telepathyClient.js:560 #, c-format msgid "%s is online." From 0406b91bd5d9ff289e7edf8dd73cbe8e3a82c0ea Mon Sep 17 00:00:00 2001 From: Aron Xu Date: Sat, 25 Dec 2010 12:55:31 +0000 Subject: [PATCH 023/132] Update Simlified Chinese translation. --- po/zh_CN.po | 256 +++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 205 insertions(+), 51 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index 05c19dfd3..0d36398e4 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -7,14 +7,15 @@ # Jessica Ban , 2010. # YunQiang Su , 2010. # zhang ping , 2010. +# 指冷玉笙寒 (dhyang) , 2010 # 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: 2010-12-10 00:17+0000\n" -"PO-Revision-Date: 2010-12-12 15:45+0800\n" +"POT-Creation-Date: 2010-12-23 17:30+0000\n" +"PO-Revision-Date: 2010-12-25 20:54+0800\n" "Last-Translator: Aron Xu \n" "Language-Team: Chinese (simplified) \n" "MIME-Version: 1.0\n" @@ -356,23 +357,28 @@ msgstr "_12 时格式" msgid "_24 hour format" msgstr "_24 小时格式" -#: ../js/ui/appDisplay.js:215 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "全部" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "应用程序" -#: ../js/ui/appDisplay.js:245 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "首选项" -#: ../js/ui/appDisplay.js:542 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "新窗口" -#: ../js/ui/appDisplay.js:546 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "从收藏夹中移除" -#: ../js/ui/appDisplay.js:547 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "添加到收藏夹" @@ -424,63 +430,71 @@ msgstr "查看源" msgid "Web Page" msgstr "网页" -#: ../js/ui/overview.js:112 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "撤销" +#: ../js/ui/overview.js:158 +msgid "Windows" +msgstr "窗口" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "应用程序" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "退出 %s" -#: ../js/ui/panel.js:495 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "首选项" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%A %b %e, %R:%S" -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:586 msgid "%a %b %e, %R" msgstr "%A %m月%d日 %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%A %R:%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%A %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%A %m月%d日 %p%I:%M:%S" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:599 msgid "%a %b %e, %l:%M %p" msgstr "%A %m月%d日 %p%I:%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%A %p%I:%M:%S" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:604 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:745 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "活动" @@ -599,87 +613,203 @@ msgstr "高对比度" msgid "Large Text" msgstr "大号文本" -#: ../js/ui/status/power.js:87 -msgid "What's using power..." -msgstr "哪些设备在用电..." +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 +msgid "Bluetooth" +msgstr "蓝牙" -#: ../js/ui/status/power.js:90 +#: ../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:94 +msgid "Bluetooth Settings" +msgstr "蓝牙设置" + +#: ../js/ui/status/bluetooth.js:185 +msgid "Connection" +msgstr "连接" + +#: ../js/ui/status/bluetooth.js:221 +msgid "Send Files..." +msgstr "发送文件..." + +#: ../js/ui/status/bluetooth.js:226 +msgid "Browse Files..." +msgstr "浏览文件..." + +#: ../js/ui/status/bluetooth.js:235 +msgid "Error browsing device" +msgstr "浏览设备出错" + +#: ../js/ui/status/bluetooth.js:236 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "无法浏览请求的设备,错误为 %s" + +#: ../js/ui/status/bluetooth.js:244 +msgid "Keyboard Settings" +msgstr "键盘设置" + +#: ../js/ui/status/bluetooth.js:249 +msgid "Mouse Settings" +msgstr "鼠标设置" + +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "声音设置" + +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 +msgid "Bluetooth Agent" +msgstr "蓝牙助手" + +#: ../js/ui/status/bluetooth.js:362 +#, c-format +msgid "Authorization request from %s" +msgstr "来自 %s 的认证请求" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "设备 %s 希望访问 %s 服务" + +#: ../js/ui/status/bluetooth.js:370 +msgid "Always grant access" +msgstr "始终允许" + +#: ../js/ui/status/bluetooth.js:371 +msgid "Grant this time only" +msgstr "允许一次" + +#: ../js/ui/status/bluetooth.js:372 +msgid "Reject" +msgstr "拒绝" + +#: ../js/ui/status/bluetooth.js:402 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "%s 的配对确认" + +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "设备 %s 希望与此电脑配对" + +#: ../js/ui/status/bluetooth.js:409 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "请确认 PIN 码 %s 和要配对的设备是否相同。" + +#: ../js/ui/status/bluetooth.js:411 +msgid "Matches" +msgstr "相同" + +#: ../js/ui/status/bluetooth.js:412 +msgid "Does not match" +msgstr "不同" + +#: ../js/ui/status/bluetooth.js:435 +#, c-format +msgid "Pairing request for %s" +msgstr "%s 的配对请求" + +#: ../js/ui/status/bluetooth.js:443 +msgid "Please enter the PIN mentioned on the device." +msgstr "请输入设备上的 PIN 码。" + +#: ../js/ui/status/bluetooth.js:459 +msgid "OK" +msgstr "确定" + +#: ../js/ui/status/bluetooth.js:460 +msgid "Cancel" +msgstr "取消" + +#: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "电源设置" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:112 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" msgstr[0] "剩余 %d 小时" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:115 #, c-format msgid "%d %s %d %s remaining" msgstr "剩余 %d %s %d %s" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" msgstr[0] "小时" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "minute" msgid_plural "minutes" msgstr[0] "分钟" -#: ../js/ui/status/power.js:125 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "剩余 %d 分钟" -#: ../js/ui/status/power.js:244 +#: ../js/ui/status/power.js:237 msgid "AC adapter" msgstr "AC 适配器" -#: ../js/ui/status/power.js:246 +#: ../js/ui/status/power.js:239 msgid "Laptop battery" msgstr "笔记本电池" -#: ../js/ui/status/power.js:248 +#: ../js/ui/status/power.js:241 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:250 +#: ../js/ui/status/power.js:243 msgid "Monitor" msgstr "显示器" -#: ../js/ui/status/power.js:252 +#: ../js/ui/status/power.js:245 msgid "Mouse" msgstr "鼠标" -#: ../js/ui/status/power.js:254 +#: ../js/ui/status/power.js:247 msgid "Keyboard" msgstr "键盘" -#: ../js/ui/status/power.js:256 +#: ../js/ui/status/power.js:249 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:258 +#: ../js/ui/status/power.js:251 msgid "Cell phone" msgstr "手机" -#: ../js/ui/status/power.js:260 +#: ../js/ui/status/power.js:253 msgid "Media player" msgstr "媒体播放器" -#: ../js/ui/status/power.js:262 +#: ../js/ui/status/power.js:255 msgid "Tablet" msgstr "触摸板" -#: ../js/ui/status/power.js:264 +#: ../js/ui/status/power.js:257 msgid "Computer" msgstr "计算机" -#: ../js/ui/status/power.js:266 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "未知" @@ -691,9 +821,33 @@ msgstr "音量" msgid "Microphone" msgstr "麦克风" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "声音设置" +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "%s 在线。" + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "%s 离线。" + +#: ../js/ui/telepathyClient.js:568 +#, c-format +msgid "%s is away." +msgstr "%s 离开。" + +#: ../js/ui/telepathyClient.js:571 +#, 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:665 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "发送于 %X on %A" #: ../js/ui/viewSelector.js:26 msgid "Search your computer" @@ -738,29 +892,29 @@ msgstr[0] "%u 个输入" msgid "System Sounds" msgstr "系统声音" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "少于一分钟前" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1160 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分钟前" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1165 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 小时前" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1170 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天前" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -790,6 +944,9 @@ msgstr "搜索" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "What's using power..." +#~ msgstr "哪些设备在用电..." + #~ msgid "Overview workspace view mode" #~ msgstr "工作区视图模式的总览" @@ -830,9 +987,6 @@ msgstr "%1$s: %2$s" #~ msgid "%H:%M" #~ msgstr "%H:%M" -#~ msgid "Applications" -#~ msgstr "应用程序" - #~ msgid "Recent Documents" #~ msgstr "最近文档" From f8eb881728dc1c5883d9fc37ebec1fd457c638ce Mon Sep 17 00:00:00 2001 From: A S Alam Date: Mon, 27 Dec 2010 07:13:19 +0530 Subject: [PATCH 024/132] Update Punjabi Translation --- po/pa.po | 349 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 306 insertions(+), 43 deletions(-) diff --git a/po/pa.po b/po/pa.po index 187856782..3af889994 100644 --- a/po/pa.po +++ b/po/pa.po @@ -5,18 +5,18 @@ 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: 2010-11-29 15:38+0000\n" -"PO-Revision-Date: 2010-12-01 08:23+0530\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" +"PO-Revision-Date: 2010-12-27 07:12+0530\n" "Last-Translator: A S Alam \n" -"Language-Team: punjabi-users@lists.sf.net\n" -"Language: pa\n" +"Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Virtaal 0.6.1\n" +"X-Generator: Lokalize 1.1\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" @@ -287,6 +287,9 @@ 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 "" @@ -302,7 +305,7 @@ msgstr "ਕਰਾਂਸਹੇਅਰ ਦੀ ਮੋਟਾਈ" msgid "" "Whether the magnified view should be centered over the location of the " "system mouse and move with it." -msgstr "" +msgstr "ਕੀ ਵੱਡਦਰਸ਼ੀ ਝਲਕ ਦੀ ਸਥਿਤੀ ਸਿਸਟਮ ਮਾਊਂਸ ਦੁਆਲੇ ਕੇਂਦਰਤ ਰਹੇ ਅਤੇ ਉਸ ਨਾਲ ਹੀ ਹਿੱਲੇ।" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:24 msgid "Width of the vertical and horizontal lines that make up the crosshairs." @@ -336,23 +339,27 @@ msgstr "_੧੨ ਘੰਟੇ ਫਾਰਮੈਟ" msgid "_24 hour format" msgstr "_੨੪ ਘੰਟੇ ਫਾਰਮੈਟ" -#: ../js/ui/appDisplay.js:215 +#: ../js/ui/appDisplay.js:154 +msgid "All" +msgstr "ਸਭ" + +#: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" msgstr "ਐਪਲੀਕੇਸ਼ਨ" -#: ../js/ui/appDisplay.js:245 +#: ../js/ui/appDisplay.js:265 msgid "PREFERENCES" msgstr "ਪਸੰਦ" -#: ../js/ui/appDisplay.js:538 +#: ../js/ui/appDisplay.js:562 msgid "New Window" msgstr "ਨਵੀਂ ਵਿੰਡੋ" -#: ../js/ui/appDisplay.js:542 +#: ../js/ui/appDisplay.js:566 msgid "Remove from Favorites" msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ" -#: ../js/ui/appDisplay.js:543 +#: ../js/ui/appDisplay.js:567 msgid "Add to Favorites" msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ" @@ -404,63 +411,72 @@ msgstr "ਸਰੋਤ ਵੇਖੋ" msgid "Web Page" msgstr "ਵੈੱਬ ਪੇਜ਼" -#: ../js/ui/overview.js:112 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "ਵਾਪਸ" +#: ../js/ui/overview.js:158 +#| msgid "New Window" +msgid "Windows" +msgstr "ਵਿੰਡੋ" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "ਐਪਲੀਕੇਸ਼ਨ" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "%s ਬੰਦ ਕਰੋ" -#: ../js/ui/panel.js:495 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "ਮੇਰੀ ਪਸੰਦ" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a, %e %b %R:%S" -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:586 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:586 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l:%M:%S %p" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:599 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:599 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:604 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:745 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" @@ -508,12 +524,10 @@ msgid "Busy" msgstr "ਰੁਝਿਆ" #: ../js/ui/statusMenu.js:114 -#| msgid "My Account..." msgid "My Account" msgstr "ਮੇਰਾ ਅਕਾਊਂਟ" #: ../js/ui/statusMenu.js:118 -#| msgid "System Sounds" msgid "System Settings" msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ" @@ -530,7 +544,6 @@ msgid "Log Out..." msgstr "ਲਾਗਆਉਟ..." #: ../js/ui/statusMenu.js:141 -#| msgid "Suspend" msgid "Suspend..." msgstr "ਸਸਪੈਂਡ..." @@ -538,6 +551,10 @@ msgstr "ਸਸਪੈਂਡ..." msgid "Shut Down..." msgstr "ਬੰਦ ਕਰੋ..." +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "ਜ਼ੂਮ" + #: ../js/ui/status/accessibility.js:88 msgid "Screen Reader" msgstr "ਸਕਰੀਨ ਰੀਡਰ" @@ -578,9 +595,262 @@ msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" msgid "Large Text" msgstr "ਵੱਡੇ ਅੱਖਰ" -#: ../js/ui/status/accessibility.js:224 -msgid "Zoom" -msgstr "ਜ਼ੂਮ" +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "ਬਲਿਊਟੁੱਥ" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "ਦਿੱਖ" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "...ਜੰਤਰ ਨੂੰ ਫਾਇਲਾਂ ਭੇਜੋ" + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "...ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ" + +#: ../js/ui/status/bluetooth.js:94 +#| msgid "System Settings" +msgid "Bluetooth Settings" +msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ" + +#: ../js/ui/status/bluetooth.js:151 +#| msgid "Connect to..." +msgid "Connection" +msgstr "ਕੁਨੈਕਸ਼ਨ" + +#: ../js/ui/status/bluetooth.js:187 +#| msgid "Suspend..." +msgid "Send Files..." +msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ" + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'" + +#: ../js/ui/status/bluetooth.js:210 +#| msgid "System Settings" +msgid "Keyboard Settings" +msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ" + +#: ../js/ui/status/bluetooth.js:215 +#| msgid "System Settings" +msgid "Mouse Settings" +msgstr "ਮਾਊਸ ਸੈਟਿੰਗ" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#| msgid "System Settings" +msgid "Sound Settings" +msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ" + +#: ../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 +#, c-format +msgid "Authorization request from %s" +msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "ਨਾ-ਮਨਜ਼ੂਰ" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।" + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "ਮਿਲਦਾ ਹੈ" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।" + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "ਠੀਕ ਹੈ" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: ../js/ui/status/power.js:85 +#| msgid "System Settings" +msgid "Power Settings" +msgstr "ਪਾਵਰ ਸੈਟਿੰਗ" + +#: ../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 ਘੰਟਾ ਬਾਕੀ" +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 "%d %s %d %s ਬਾਕੀ" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "ਘੰਟਾ" +msgstr[1] "ਘੰਟੇ" + +#: ../js/ui/status/power.js:117 +#| msgid "%d minute ago" +#| msgid_plural "%d minutes ago" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "ਮਿੰਟ" +msgstr[1] "ਮਿੰਟ" + +#: ../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 ਮਿੰਟ ਬਾਕੀ" +msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "AC ਐਡਪਟਰ" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "UPS" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "ਮਾਨੀਟਰ" + +#: ../js/ui/status/power.js:245 +#| msgid "Mouse Keys" +msgid "Mouse" +msgstr "ਮਾਊਸ" + +#: ../js/ui/status/power.js:247 +#| msgid "Screen Keyboard" +msgid "Keyboard" +msgstr "ਕੀਬੋਰਡ" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "ਸੈੱਲ ਫੋਨ" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" + +#: ../js/ui/status/power.js:255 +#| msgid "Enabled" +msgid "Tablet" +msgstr "ਟੇਬਲੇਟ" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "ਕੰਪਿਊਟਰ" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "ਅਣਜਾਣ" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "ਆਵਾਜ਼" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "ਮਾਈਕਰੋਫੋਨ" + +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "%s ਆਨਲਾਈਨ ਹੈ।" + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "%s ਆਫਲਾਈਨ ਹੈ।" + +#: ../js/ui/telepathyClient.js:568 +#, c-format +#| msgid "'%s' is ready" +msgid "%s is away." +msgstr "%s ਦੂਰ ਹੈ।" + +#: ../js/ui/telepathyClient.js:571 +#, 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:664 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" #: ../js/ui/viewSelector.js:26 msgid "Search your computer" @@ -626,36 +896,32 @@ msgstr[1] "%u ਇੰਪੁੱਟ" msgid "System Sounds" msgstr "ਸਿਸਟਮ ਸਾਊਂਡ" -#: ../src/shell-app-system.c:1012 -msgid "Unknown" -msgstr "ਅਣਜਾਣ" - -#: ../src/shell-global.c:1163 +#: ../src/shell-global.c:1155 msgid "Less than a minute ago" msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1167 +#: ../src/shell-global.c:1159 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1172 +#: ../src/shell-global.c:1164 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1177 +#: ../src/shell-global.c:1169 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ" msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1182 +#: ../src/shell-global.c:1174 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -727,9 +993,6 @@ msgstr "%1$s: %2$s" #~ msgid "%H:%M" #~ msgstr "%H:%M" -#~ msgid "Applications" -#~ msgstr "ਐਪਲੀਕੇਸ਼ਨ" - #~ msgid "Recent Documents" #~ msgstr "ਤਾਜ਼ਾ ਡੌਕੂਮੈਂਟ" From 2763d8dcc1311640744c353adf8c35f2bb86feef Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 28 Dec 2010 07:48:40 -0500 Subject: [PATCH 025/132] Fix error from blocking removed Gdk.Display.get_device_state. Gdk.Display.get_device_state() was removed in favor of a non-GdkModifierType returning Gdk.Device.get_position(). But block Gdk.Device.get_state() which does return a GdkModifierType mask. https://bugzilla.gnome.org/show_bug.cgi?id=638158 --- js/ui/environment.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/environment.js b/js/ui/environment.js index 0ab354c19..0adf3af6e 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -88,7 +88,7 @@ function init() { _blockMethod('Clutter.Event.get_state', 'Shell.get_event_state', 'gjs\'s handling of Clutter.ModifierType is broken. See bug 597292.'); - _blockMethod('Gdk.Display.get_device_state', 'global.get_pointer', + _blockMethod('Gdk.Device.get_state', 'global.get_pointer', 'gjs\'s handling of Gdk.ModifierType is broken. See bug 597292.'); _blockMethod('Gdk.Window.get_device_position', 'global.get_pointer', 'gjs\'s handling of Gdk.ModifierType is broken. See bug 597292.'); From 9f04009f805dd9f4e78b3892e860f36bf3273a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Wed, 29 Dec 2010 21:26:17 +0700 Subject: [PATCH 026/132] po/vi.po: import from Damned Lies --- po/vi.po | 904 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 811 insertions(+), 93 deletions(-) diff --git a/po/vi.po b/po/vi.po index 9ef8f02db..0325adfb2 100644 --- a/po/vi.po +++ b/po/vi.po @@ -6,8 +6,9 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-02-16 19:32+0700\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" "PO-Revision-Date: 2010-02-16 19:36+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" @@ -24,218 +25,908 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Quản lý cửa sổ và chạy ứng dụng" -#. **** Applications **** -#: ../js/ui/appDisplay.js:252 ../js/ui/dash.js:880 +#: ../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 " +"dialog." +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 +msgid "File extension used for storing the screencast" +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:5 +msgid "Framerate used for recording screencasts." +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:6 +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 +msgid "History for command (Alt-F2) dialog" +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:8 +msgid "Hour format" +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 +msgid "List of desktop file IDs for favorite applications" +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:13 +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 ! theoraenc ! oggmux' and records to Ogg Theora." +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:14 +msgid "Show date in clock" +msgstr "" + +#: ../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:16 +msgid "Show time with seconds" +msgstr "" + +#: ../data/org.gnome.shell.gschema.xml.in.h:17 +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 "" +"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 +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 +msgid "The gstreamer pipeline used to encode the screencast" +msgstr "" + +#: ../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 "" + +#: ../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 +#, fuzzy +#| msgid "No extensions installed" +msgid "Uuids of extensions to disable" +msgstr "Chưa cài phần mở rộng" + +#: ../data/org.gnome.shell.gschema.xml.in.h:25 +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." +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 "" + +#: ../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 +#, fuzzy +#| msgid "Enabled" +msgid "Enable lens mode" +msgstr "Bật" + +#: ../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 "" + +#: ../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 "" + +#: ../data/clock-preferences.ui.h:1 +msgid "Clock Format" +msgstr "" + +#: ../data/clock-preferences.ui.h:2 +#, fuzzy +#| msgid "System Preferences..." +msgid "Clock Preferences" +msgstr "Thiết lập hệ thống..." + +#: ../data/clock-preferences.ui.h:3 +msgid "Panel Display" +msgstr "" + +#: ../data/clock-preferences.ui.h:4 +msgid "Show seco_nds" +msgstr "" + +#: ../data/clock-preferences.ui.h:5 +msgid "Show the _date" +msgstr "" + +#: ../data/clock-preferences.ui.h:6 +msgid "_12 hour format" +msgstr "" + +#: ../data/clock-preferences.ui.h:7 +msgid "_24 hour format" +msgstr "" + +#: ../js/ui/appDisplay.js:154 +msgid "All" +msgstr "" + +#: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" msgstr "ỨNG DỤNG" -#: ../js/ui/appDisplay.js:276 +#: ../js/ui/appDisplay.js:265 msgid "PREFERENCES" msgstr "TUỲ THÍCH" -#: ../js/ui/appDisplay.js:649 +#: ../js/ui/appDisplay.js:562 msgid "New Window" msgstr "Cửa sổ mới" -#: ../js/ui/appDisplay.js:653 +#: ../js/ui/appDisplay.js:566 msgid "Remove from Favorites" msgstr "Bỏ đánh dấu ưa thích" -#: ../js/ui/appDisplay.js:654 +#: ../js/ui/appDisplay.js:567 msgid "Add to Favorites" msgstr "Đánh dấu ưa thích" -#: ../js/ui/appDisplay.js:1006 -msgid "Drag here to add favorites" -msgstr "Kéo vào đây để thêm vào danh mục ưa thích" - -#: ../js/ui/appFavorites.js:89 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "Đã được đánh dấu ưa thích cho %s." -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "Đã bỏ đánh dấu ưa thích cho %s" -#: ../js/ui/dash.js:241 -msgid "Find..." -msgstr "Tìm" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "" -#: ../js/ui/dash.js:508 -msgid "Searching..." -msgstr "Đang tìm..." - -#: ../js/ui/dash.js:522 -msgid "No matching results." -msgstr "Không tìm thấy." - -#. **** Places **** -#. Translators: This is in the sense of locations for documents, -#. network locations, etc. -#: ../js/ui/dash.js:900 ../js/ui/placeDisplay.js:529 -msgid "PLACES & DEVICES" -msgstr "ĐỊA ĐIỂM & THIẾT BỊ" - -#. **** Documents **** -#: ../js/ui/dash.js:907 ../js/ui/docDisplay.js:488 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "MỤC GẦN ĐÂY" -#: ../js/ui/lookingGlass.js:356 +#: ../js/ui/lookingGlass.js:552 msgid "No extensions installed" msgstr "Chưa cài phần mở rộng" -#: ../js/ui/lookingGlass.js:393 +#: ../js/ui/lookingGlass.js:589 msgid "Enabled" msgstr "Bật" -#: ../js/ui/lookingGlass.js:395 +#. 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:397 +#: ../js/ui/lookingGlass.js:593 msgid "Error" msgstr "Lỗi" -#: ../js/ui/lookingGlass.js:399 +#: ../js/ui/lookingGlass.js:595 msgid "Out of date" msgstr "Hết hạn" -#: ../js/ui/lookingGlass.js:424 +#: ../js/ui/lookingGlass.js:620 msgid "View Source" msgstr "Xem mã nguồn" -#: ../js/ui/lookingGlass.js:430 +#: ../js/ui/lookingGlass.js:626 msgid "Web Page" msgstr "Trang Web" -#: ../js/ui/overview.js:92 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "Hoàn lại" -#. 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:336 -msgid "Activities" -msgstr "Hoạt động" +#: ../js/ui/overview.js:158 +#, fuzzy +#| msgid "New Window" +msgid "Windows" +msgstr "Cửa sổ mới" -#. Translators: This is the time format used in 24-hour mode. -#: ../js/ui/panel.js:560 +#: ../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 "" + +#: ../js/ui/panel.js:499 +#, fuzzy +#| msgid "System Preferences..." +msgid "Preferences" +msgstr "Thiết lập hệ thống..." + +#. Translators: This is the time format with date used +#. in 24-hour mode. +#: ../js/ui/panel.js:585 +msgid "%a %b %e, %R:%S" +msgstr "" + +#: ../js/ui/panel.js:586 +#, fuzzy +#| msgid "%a %l:%M %p" +msgid "%a %b %e, %R" +msgstr "%a %l:%M %p" + +#. Translators: This is the time format without date used +#. in 24-hour mode. +#: ../js/ui/panel.js:590 +#, fuzzy +#| msgid "%a %R" +msgid "%a %R:%S" +msgstr "%a %R" + +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" -#. Translators: This is a time format used for AM/PM. -#: ../js/ui/panel.js:563 +#. Translators: This is a time format with date used +#. for AM/PM. +#: ../js/ui/panel.js:598 +#, fuzzy +#| msgid "%a %l:%M %p" +msgid "%a %b %e, %l:%M:%S %p" +msgstr "%a %l:%M %p" + +#: ../js/ui/panel.js:599 +#, fuzzy +#| msgid "%a %l:%M %p" +msgid "%a %b %e, %l:%M %p" +msgstr "%a %l:%M %p" + +#. Translators: This is a time format without date used +#. for AM/PM. +#: ../js/ui/panel.js:603 +#, fuzzy +#| msgid "%a %l:%M %p" +msgid "%a %l:%M:%S %p" +msgstr "%a %l:%M %p" + +#: ../js/ui/panel.js:604 msgid "%a %l:%M %p" msgstr "%a %l:%M %p" -#: ../js/ui/placeDisplay.js:144 +#. 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 +msgid "Activities" +msgstr "Hoạt động" + +#: ../js/ui/placeDisplay.js:111 +#, c-format +msgid "Failed to unmount '%s'" +msgstr "" + +#: ../js/ui/placeDisplay.js:114 +msgid "Retry" +msgstr "" + +#: ../js/ui/placeDisplay.js:159 msgid "Connect to..." msgstr "Kết nối đến..." -#: ../js/ui/runDialog.js:245 +#: ../js/ui/placeDisplay.js:558 +msgid "PLACES & DEVICES" +msgstr "ĐỊA ĐIỂM & THIẾT BỊ" + +#. 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:33 +msgid "toggle-switch-us" +msgstr "" + +#: ../js/ui/runDialog.js:233 msgid "Please enter a command:" msgstr "Vui lòng nhập lệnh:" -#: ../js/ui/runDialog.js:361 +#: ../js/ui/runDialog.js:378 #, c-format msgid "Execution of '%s' failed:" msgstr "Lỗi thực hiện '%s':" -#: ../js/ui/statusMenu.js:107 +#: ../js/ui/statusMenu.js:101 msgid "Available" msgstr "Có mặt" -#: ../js/ui/statusMenu.js:112 +#: ../js/ui/statusMenu.js:106 msgid "Busy" msgstr "Bận" -#: ../js/ui/statusMenu.js:117 -msgid "Invisible" -msgstr "Giấu mặt" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "" -#: ../js/ui/statusMenu.js:126 -msgid "Account Information..." -msgstr "Thông tin tài khoản..." +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "" -#: ../js/ui/statusMenu.js:132 -msgid "Sidebar" -msgstr "Thanh bên" - -#: ../js/ui/statusMenu.js:142 -msgid "System Preferences..." -msgstr "Thiết lập hệ thống..." - -#: ../js/ui/statusMenu.js:151 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "Khoá màn hình" -#: ../js/ui/statusMenu.js:156 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "Chuyển người dùng" -#: ../js/ui/statusMenu.js:162 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." msgstr "Đăng xuất..." -#: ../js/ui/statusMenu.js:167 +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "" + +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." msgstr "Tắt máy..." -#. Translators: This is a time format. -#: ../js/ui/widget.js:163 -msgid "%H:%M" -msgstr "%H:%M" +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "" -#: ../js/ui/widget.js:317 -msgid "Applications" -msgstr "Ứng dụng" +#: ../js/ui/status/accessibility.js:88 +msgid "Screen Reader" +msgstr "" -#: ../js/ui/widget.js:339 -msgid "Recent Documents" -msgstr "Tài liệu gần đây" +#: ../js/ui/status/accessibility.js:91 +msgid "Screen Keyboard" +msgstr "" -#: ../src/shell-global.c:976 +#: ../js/ui/status/accessibility.js:94 +msgid "Visual Alerts" +msgstr "" + +#: ../js/ui/status/accessibility.js:97 +msgid "Sticky Keys" +msgstr "" + +#: ../js/ui/status/accessibility.js:100 +msgid "Slow Keys" +msgstr "" + +#: ../js/ui/status/accessibility.js:103 +msgid "Bounce Keys" +msgstr "" + +#: ../js/ui/status/accessibility.js:106 +msgid "Mouse Keys" +msgstr "" + +#: ../js/ui/status/accessibility.js:110 +msgid "Universal Access Settings" +msgstr "" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:151 +#, fuzzy +#| msgid "Connect to..." +msgid "Connection" +msgstr "Kết nối đến..." + +#: ../js/ui/status/bluetooth.js:187 +msgid "Send Files..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:210 +msgid "Keyboard Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:215 +msgid "Mouse Settings" +msgstr "" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "" + +#: ../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 +#, c-format +msgid "Authorization request from %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "" + +#: ../js/ui/status/power.js:112 +#, fuzzy, c-format +#| msgid "%d hour ago" +#| msgid_plural "%d hours ago" +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "%d giờ trước" + +#. 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 "" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "" + +#: ../js/ui/status/power.js:117 +#, fuzzy +#| msgid "%d minute ago" +#| msgid_plural "%d minutes ago" +msgid "minute" +msgid_plural "minutes" +msgstr[0] "%d phút trước" + +#: ../js/ui/status/power.js:120 +#, fuzzy, 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 trước" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "" + +#: ../js/ui/status/power.js:255 +#, fuzzy +#| msgid "Enabled" +msgid "Tablet" +msgstr "Bật" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "" + +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "" + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "" + +#: ../js/ui/telepathyClient.js:568 +#, c-format +msgid "%s is away." +msgstr "" + +#: ../js/ui/telepathyClient.js:571 +#, c-format +msgid "%s is busy." +msgstr "" + +#. 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 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "" + +#: ../js/ui/windowAttentionHandler.js:43 +#, c-format +msgid "%s has finished starting" +msgstr "" + +#: ../js/ui/windowAttentionHandler.js:45 +#, c-format +msgid "'%s' is ready" +msgstr "" + +#: ../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 +#, c-format +msgid "%u Output" +msgid_plural "%u Outputs" +msgstr[0] "" + +#. 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] "" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "" + +#: ../src/shell-global.c:1155 msgid "Less than a minute ago" msgstr "Chưa đến một phút" -#: ../src/shell-global.c:980 +#: ../src/shell-global.c:1159 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d phút trước" -#: ../src/shell-global.c:985 +#: ../src/shell-global.c:1164 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d giờ trước" -#: ../src/shell-global.c:990 +#: ../src/shell-global.c:1169 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ngày trước" -#: ../src/shell-global.c:995 +#: ../src/shell-global.c:1174 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d tuần trước" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Thư mục chính" #. 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 "Hệ tập tin" -#: ../src/shell-uri-util.c:250 +#: ../src/shell-util.c:250 msgid "Search" msgstr "Tìm" @@ -244,7 +935,34 @@ msgstr "Tìm" #. * 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 "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 6a2f038515e32eb442ea2a3e196e230d05991de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= Date: Wed, 29 Dec 2010 21:29:16 +0700 Subject: [PATCH 027/132] Updated Vietnamese translation --- po/vi.po | 219 ++++++++++++++++++++++++++----------------------------- 1 file changed, 103 insertions(+), 116 deletions(-) diff --git a/po/vi.po b/po/vi.po index 0325adfb2..fe87bf320 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: 2010-12-20 21:07+0000\n" -"PO-Revision-Date: 2010-02-16 19:36+0700\n" +"PO-Revision-Date: 2010-12-29 21:22+0700\n" "Last-Translator: Duy \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" @@ -27,11 +27,11 @@ 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 "" +msgstr "Đồng hồ" #: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 msgid "Customize the panel clock" -msgstr "" +msgstr "Tuỳ biến đồng hồ" #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" @@ -163,10 +163,9 @@ msgid "" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:24 -#, fuzzy #| msgid "No extensions installed" msgid "Uuids of extensions to disable" -msgstr "Chưa cài phần mở rộng" +msgstr "UUID của phần mở rộng cần tắt" #: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Whether to collect stats about applications usage" @@ -213,10 +212,9 @@ msgid "" msgstr "" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 -#, fuzzy #| msgid "Enabled" msgid "Enable lens mode" -msgstr "Bật" +msgstr "Bật chế độ gương" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8 msgid "" @@ -297,41 +295,40 @@ 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 "" +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 "" +msgstr "Dạng đồng hồ" #: ../data/clock-preferences.ui.h:2 -#, fuzzy #| msgid "System Preferences..." msgid "Clock Preferences" -msgstr "Thiết lập hệ thống..." +msgstr "Thiết lập đồng hồ" #: ../data/clock-preferences.ui.h:3 msgid "Panel Display" -msgstr "" +msgstr "Khung hiển thị" #: ../data/clock-preferences.ui.h:4 msgid "Show seco_nds" -msgstr "" +msgstr "Hiện _giây" #: ../data/clock-preferences.ui.h:5 msgid "Show the _date" -msgstr "" +msgstr "Hiện _ngày" #: ../data/clock-preferences.ui.h:6 msgid "_12 hour format" -msgstr "" +msgstr "Dạng _12 giờ" #: ../data/clock-preferences.ui.h:7 msgid "_24 hour format" -msgstr "" +msgstr "Dạng _24 giờ" #: ../js/ui/appDisplay.js:154 msgid "All" -msgstr "" +msgstr "Tất cả" #: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" @@ -365,7 +362,7 @@ msgstr "Đã bỏ đánh dấu ưa thích cho %s" #: ../js/ui/dash.js:27 msgid "Remove" -msgstr "" +msgstr "Loại bỏ" #: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" @@ -406,10 +403,9 @@ msgid "Undo" msgstr "Hoàn lại" #: ../js/ui/overview.js:158 -#, fuzzy #| msgid "New Window" msgid "Windows" -msgstr "Cửa sổ mới" +msgstr "Cửa sổ" #: ../js/ui/overview.js:161 msgid "Applications" @@ -419,33 +415,30 @@ msgstr "Ứng dụng" #: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" -msgstr "" +msgstr "Thoát %s" #: ../js/ui/panel.js:499 -#, fuzzy #| msgid "System Preferences..." msgid "Preferences" -msgstr "Thiết lập hệ thống..." +msgstr "Thiết lập" #. Translators: This is the time format with date used #. in 24-hour mode. #: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" -msgstr "" +msgstr "%a %b %e, %R:%S" #: ../js/ui/panel.js:586 -#, fuzzy #| msgid "%a %l:%M %p" msgid "%a %b %e, %R" -msgstr "%a %l:%M %p" +msgstr "%a %b %e, %R" #. Translators: This is the time format without date used #. in 24-hour mode. #: ../js/ui/panel.js:590 -#, fuzzy #| msgid "%a %R" msgid "%a %R:%S" -msgstr "%a %R" +msgstr "%a %R:%S" #: ../js/ui/panel.js:591 msgid "%a %R" @@ -454,24 +447,21 @@ msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. #: ../js/ui/panel.js:598 -#, fuzzy #| msgid "%a %l:%M %p" msgid "%a %b %e, %l:%M:%S %p" -msgstr "%a %l:%M %p" +msgstr "%a %b %e, %l:%M:%S %p" #: ../js/ui/panel.js:599 -#, fuzzy #| msgid "%a %l:%M %p" msgid "%a %b %e, %l:%M %p" -msgstr "%a %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 -#, fuzzy #| msgid "%a %l:%M %p" msgid "%a %l:%M:%S %p" -msgstr "%a %l:%M %p" +msgstr "%a %l:%M:%S %p" #: ../js/ui/panel.js:604 msgid "%a %l:%M %p" @@ -486,11 +476,11 @@ msgstr "Hoạt động" #: ../js/ui/placeDisplay.js:111 #, c-format msgid "Failed to unmount '%s'" -msgstr "" +msgstr "Lỗi bỏ gắn '%s'" #: ../js/ui/placeDisplay.js:114 msgid "Retry" -msgstr "" +msgstr "Thử lại" #: ../js/ui/placeDisplay.js:159 msgid "Connect to..." @@ -507,7 +497,7 @@ msgstr "ĐỊA ĐIỂM & THIẾT BỊ" #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:33 msgid "toggle-switch-us" -msgstr "" +msgstr "toggle-switch-intl" #: ../js/ui/runDialog.js:233 msgid "Please enter a command:" @@ -528,11 +518,11 @@ msgstr "Bận" #: ../js/ui/statusMenu.js:114 msgid "My Account" -msgstr "" +msgstr "Tài khoản" #: ../js/ui/statusMenu.js:118 msgid "System Settings" -msgstr "" +msgstr "Thiết lập hệ thống" #: ../js/ui/statusMenu.js:125 msgid "Lock Screen" @@ -548,7 +538,7 @@ msgstr "Đăng xuất..." #: ../js/ui/statusMenu.js:141 msgid "Suspend..." -msgstr "" +msgstr "Ngưng..." #: ../js/ui/statusMenu.js:145 msgid "Shut Down..." @@ -556,102 +546,101 @@ msgstr "Tắt máy..." #: ../js/ui/status/accessibility.js:82 msgid "Zoom" -msgstr "" +msgstr "Thu/Phóng" #: ../js/ui/status/accessibility.js:88 msgid "Screen Reader" -msgstr "" +msgstr "Trình đọc màn hình" #: ../js/ui/status/accessibility.js:91 msgid "Screen Keyboard" -msgstr "" +msgstr "Bàn phím màn hình" #: ../js/ui/status/accessibility.js:94 msgid "Visual Alerts" -msgstr "" +msgstr "Cảnh báo trực quan" #: ../js/ui/status/accessibility.js:97 msgid "Sticky Keys" -msgstr "" +msgstr "Phím dính" #: ../js/ui/status/accessibility.js:100 msgid "Slow Keys" -msgstr "" +msgstr "Phím chậm" #: ../js/ui/status/accessibility.js:103 msgid "Bounce Keys" -msgstr "" +msgstr "Phím dội" #: ../js/ui/status/accessibility.js:106 msgid "Mouse Keys" -msgstr "" +msgstr "Phím chuột" #: ../js/ui/status/accessibility.js:110 msgid "Universal Access Settings" -msgstr "" +msgstr "Thiết lập hỗ trợ truy cập" #: ../js/ui/status/accessibility.js:163 msgid "High Contrast" -msgstr "" +msgstr "Tương phản cao" #: ../js/ui/status/accessibility.js:205 msgid "Large Text" -msgstr "" +msgstr "Chữ lớn" #: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 msgid "Bluetooth" -msgstr "" +msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:55 msgid "Visibility" -msgstr "" +msgstr "Tầm nhìn" #: ../js/ui/status/bluetooth.js:68 msgid "Send Files to Device..." -msgstr "" +msgstr "Gửi tập tin đến thiết bị..." #: ../js/ui/status/bluetooth.js:71 msgid "Setup a New Device..." -msgstr "" +msgstr "Thiết lập thiết bị mới..." #: ../js/ui/status/bluetooth.js:94 msgid "Bluetooth Settings" -msgstr "" +msgstr "Thiết lập Bluetooth" #: ../js/ui/status/bluetooth.js:151 -#, fuzzy #| msgid "Connect to..." msgid "Connection" -msgstr "Kết nối đến..." +msgstr "Kết nối" #: ../js/ui/status/bluetooth.js:187 msgid "Send Files..." -msgstr "" +msgstr "Gửi tập tin..." #: ../js/ui/status/bluetooth.js:192 msgid "Browse Files..." -msgstr "" +msgstr "Duyệt tập tin..." #: ../js/ui/status/bluetooth.js:201 msgid "Error browsing device" -msgstr "" +msgstr "Lỗi duyệt tập tin" #: ../js/ui/status/bluetooth.js:202 #, c-format msgid "The requested device cannot be browsed, error is '%s'" -msgstr "" +msgstr "Không thể duyệt thiết bị yêu cầu , lỗi là '%s'" #: ../js/ui/status/bluetooth.js:210 msgid "Keyboard Settings" -msgstr "" +msgstr "Thiết lập bàn phím" #: ../js/ui/status/bluetooth.js:215 msgid "Mouse Settings" -msgstr "" +msgstr "Thiết lập chuột" #: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 msgid "Sound Settings" -msgstr "" +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 @@ -661,181 +650,179 @@ msgstr "" #: ../js/ui/status/bluetooth.js:328 #, c-format msgid "Authorization request from %s" -msgstr "" +msgstr "Yêu cầu cấp quyền từ %s" #: ../js/ui/status/bluetooth.js:334 #, c-format msgid "Device %s wants access to the service '%s'" -msgstr "" +msgstr "Thiết bị %s muốn truy cập dịch vụ '%s'" #: ../js/ui/status/bluetooth.js:336 msgid "Always grant access" -msgstr "" +msgstr "Luôn cho phép" #: ../js/ui/status/bluetooth.js:337 msgid "Grant this time only" -msgstr "" +msgstr "Chỉ cho phép lần này" #: ../js/ui/status/bluetooth.js:338 msgid "Reject" -msgstr "" +msgstr "Từ chối" #: ../js/ui/status/bluetooth.js:368 #, c-format msgid "Pairing confirmation for %s" -msgstr "" +msgstr "Xác nhận kết nối cho %s" #: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 #, c-format msgid "Device %s wants to pair with this computer" -msgstr "" +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 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." -msgstr "" +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 msgid "Matches" -msgstr "" +msgstr "Khớp" #: ../js/ui/status/bluetooth.js:378 msgid "Does not match" -msgstr "" +msgstr "Không khớp" #: ../js/ui/status/bluetooth.js:401 #, c-format msgid "Pairing request for %s" -msgstr "" +msgstr "Yêu cầu kết nối cho %s" #: ../js/ui/status/bluetooth.js:409 msgid "Please enter the PIN mentioned on the device." -msgstr "" +msgstr "Vui lòng nhập số PIN ghi trên thiết bị." #: ../js/ui/status/bluetooth.js:425 msgid "OK" -msgstr "" +msgstr "OK" #: ../js/ui/status/bluetooth.js:426 msgid "Cancel" -msgstr "" +msgstr "Thôi" #: ../js/ui/status/power.js:85 msgid "Power Settings" -msgstr "" +msgstr "Thiết lập năng lượng" #: ../js/ui/status/power.js:112 -#, fuzzy, c-format +#, c-format #| msgid "%d hour ago" #| msgid_plural "%d hours ago" msgid "%d hour remaining" msgid_plural "%d hours remaining" -msgstr[0] "%d giờ trước" +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 #, c-format msgid "%d %s %d %s remaining" -msgstr "" +msgstr "%d %s %d %s còn lại" #: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" -msgstr[0] "" +msgstr[0] "giờ" #: ../js/ui/status/power.js:117 -#, fuzzy #| msgid "%d minute ago" #| msgid_plural "%d minutes ago" msgid "minute" msgid_plural "minutes" -msgstr[0] "%d phút trước" +msgstr[0] "%d phút" #: ../js/ui/status/power.js:120 -#, fuzzy, c-format +#, 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 trước" +msgstr[0] "%d phút còn lại" #: ../js/ui/status/power.js:237 msgid "AC adapter" -msgstr "" +msgstr "Bộ đổi điện AC" #: ../js/ui/status/power.js:239 msgid "Laptop battery" -msgstr "" +msgstr "Pin laptop" #: ../js/ui/status/power.js:241 msgid "UPS" -msgstr "" +msgstr "UPS" #: ../js/ui/status/power.js:243 msgid "Monitor" -msgstr "" +msgstr "Màn hình" #: ../js/ui/status/power.js:245 msgid "Mouse" -msgstr "" +msgstr "Chuột" #: ../js/ui/status/power.js:247 msgid "Keyboard" -msgstr "" +msgstr "Bàn phím" #: ../js/ui/status/power.js:249 msgid "PDA" -msgstr "" +msgstr "PDA" #: ../js/ui/status/power.js:251 msgid "Cell phone" -msgstr "" +msgstr "Điện thoại cầm tay" #: ../js/ui/status/power.js:253 msgid "Media player" -msgstr "" +msgstr "Máy phát" #: ../js/ui/status/power.js:255 -#, fuzzy #| msgid "Enabled" msgid "Tablet" -msgstr "Bật" +msgstr "" #: ../js/ui/status/power.js:257 msgid "Computer" -msgstr "" +msgstr "Máy tính" #: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" -msgstr "" +msgstr "Không biết" #: ../js/ui/status/volume.js:41 msgid "Volume" -msgstr "" +msgstr "Âm lượng" #: ../js/ui/status/volume.js:54 msgid "Microphone" -msgstr "" +msgstr "Micrô" #: ../js/ui/telepathyClient.js:560 #, c-format msgid "%s is online." -msgstr "" +msgstr "%s trực tuyến." #: ../js/ui/telepathyClient.js:565 #, c-format msgid "%s is offline." -msgstr "" +msgstr "%s ngoại tuyến." #: ../js/ui/telepathyClient.js:568 #, c-format msgid "%s is away." -msgstr "" +msgstr "%s đi vắng." #: ../js/ui/telepathyClient.js:571 #, c-format msgid "%s is busy." -msgstr "" +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 @@ -843,30 +830,30 @@ msgstr "" #: ../js/ui/telepathyClient.js:664 #, no-c-format msgid "Sent at %X on %A" -msgstr "" +msgstr "Đã gửi %X lúc %A" #: ../js/ui/viewSelector.js:26 msgid "Search your computer" -msgstr "" +msgstr "Tìm trong máy" #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" -msgstr "" +msgstr "%s đã hoàn tất khởi chạy" #: ../js/ui/windowAttentionHandler.js:45 #, c-format msgid "'%s' is ready" -msgstr "" +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 "" +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 "" +msgstr "Không thể bỏ vùng làm việc đầu tiên." #. translators: #. * The number of sound outputs on a particular device @@ -874,7 +861,7 @@ msgstr "" #, c-format msgid "%u Output" msgid_plural "%u Outputs" -msgstr[0] "" +msgstr[0] "%u đầu ra" #. translators: #. * The number of sound inputs on a particular device @@ -882,11 +869,11 @@ msgstr[0] "" #, c-format msgid "%u Input" msgid_plural "%u Inputs" -msgstr[0] "" +msgstr[0] "%u đầu vào" #: ../src/gvc/gvc-mixer-control.c:1402 msgid "System Sounds" -msgstr "" +msgstr "Âm thanh hệ thống" #: ../src/shell-global.c:1155 msgid "Less than a minute ago" From 0ba7188625b2a9ec2d7a93a8aa1d016174188162 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 30 Dec 2010 01:17:26 +0100 Subject: [PATCH 028/132] Remove Gtk 2 compatibility code It is useless now that we require Gtk 3. https://bugzilla.gnome.org/show_bug.cgi?id=638315 --- src/Makefile-tray.am | 1 - src/Makefile.am | 1 - src/gtk-compat.h | 19 ------------------- src/shell-embedded-window.c | 1 - src/shell-gtk-embed.c | 1 - src/shell-tray-icon.c | 1 - src/tray/na-tray-child.c | 1 - src/tray/na-tray-manager.c | 1 - 8 files changed, 26 deletions(-) delete mode 100644 src/gtk-compat.h diff --git a/src/Makefile-tray.am b/src/Makefile-tray.am index 6634324f8..1377e0c34 100644 --- a/src/Makefile-tray.am +++ b/src/Makefile-tray.am @@ -15,7 +15,6 @@ TRAY_STAMP_FILES = stamp-na-marshal.h # please, keep this sorted alphabetically tray_source = \ - gtk-compat.h \ tray/na-tray-child.c \ tray/na-tray-child.h \ tray/na-tray-manager.c \ diff --git a/src/Makefile.am b/src/Makefile.am index 61b58260a..e79a486fe 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -90,7 +90,6 @@ libgnome_shell_la_SOURCES = \ shell-window-tracker-private.h \ shell-wm-private.h \ gnome-shell-plugin.c \ - gtk-compat.h \ shell-app.c \ shell-app-system.c \ shell-app-usage.c \ diff --git a/src/gtk-compat.h b/src/gtk-compat.h deleted file mode 100644 index 9515205ab..000000000 --- a/src/gtk-compat.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __GTK_COMPAT_H__ -#define __GTK_COMPAT_H__ - -#include - -/* Provide a compatibility layer for accessor functions introduced - * in GTK+ 2.20 which we need to build with GSEAL_ENABLE. - * That way it is still possible to build with GTK+ 2.18 when not - * using GSEAL_ENABLE - */ - -#if !GTK_CHECK_VERSION(2, 20, 0) - -#define gtk_widget_get_realized(w) GTK_WIDGET_REALIZED (w) -#define gtk_widget_get_mapped(w) GTK_WIDGET_MAPPED (w) - -#endif /* GTK_CHECK_VERSION(2, 20, 0) */ - -#endif /* __GTK_COMPAT_H__ */ diff --git a/src/shell-embedded-window.c b/src/shell-embedded-window.c index 01a5a4d27..a87844842 100644 --- a/src/shell-embedded-window.c +++ b/src/shell-embedded-window.c @@ -6,7 +6,6 @@ #include #include "shell-embedded-window-private.h" -#include "gtk-compat.h" /* This type is a subclass of GtkWindow that ties the window to a * ShellGtkEmbed; the window is reparented into the stage diff --git a/src/shell-gtk-embed.c b/src/shell-gtk-embed.c index a7c7bbe10..613397fb5 100644 --- a/src/shell-gtk-embed.c +++ b/src/shell-gtk-embed.c @@ -3,7 +3,6 @@ #include "config.h" #include "shell-embedded-window-private.h" -#include "gtk-compat.h" #include diff --git a/src/shell-tray-icon.c b/src/shell-tray-icon.c index dce8630f7..079a48e51 100644 --- a/src/shell-tray-icon.c +++ b/src/shell-tray-icon.c @@ -5,7 +5,6 @@ #include "shell-tray-icon.h" #include "shell-gtk-embed.h" #include "shell-window-tracker.h" -#include "gtk-compat.h" #include "tray/na-tray-child.h" #include #include "st.h" diff --git a/src/tray/na-tray-child.c b/src/tray/na-tray-child.c index 37db2e0ed..36cd4a064 100644 --- a/src/tray/na-tray-child.c +++ b/src/tray/na-tray-child.c @@ -23,7 +23,6 @@ #include #include "na-tray-child.h" -#include "gtk-compat.h" #include #include diff --git a/src/tray/na-tray-manager.c b/src/tray/na-tray-manager.c index d53c90206..86e3ef33e 100644 --- a/src/tray/na-tray-manager.c +++ b/src/tray/na-tray-manager.c @@ -25,7 +25,6 @@ #include #include "na-tray-manager.h" -#include "gtk-compat.h" #include #if defined (GDK_WINDOWING_X11) From 272cbc14854d7ce01697e49628a5816b43c54213 Mon Sep 17 00:00:00 2001 From: Daniel Nylander Date: Fri, 31 Dec 2010 12:58:02 +0100 Subject: [PATCH 029/132] Updated Swedish translation --- po/sv.po | 640 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 524 insertions(+), 116 deletions(-) diff --git a/po/sv.po b/po/sv.po index 5a3f9f1aa..e08178dc3 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,10 +7,11 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-06 22:51+0200\n" -"PO-Revision-Date: 2010-09-06 22:56+0100\n" +"POT-Creation-Date: 2010-12-29 14:50+0100\n" +"PO-Revision-Date: 2010-12-31 12:57+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" +"Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -81,65 +82,153 @@ msgid "List of desktop file IDs for favorite applications" msgstr "Lista över skrivbordsfil-id för favoritprogram" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 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 ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Visa datum i klocka" -#: ../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 "Visa veckodatum i kalendern" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Visa tid med sekunder" -#: ../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." msgstr "Programmen som motsvarar dessa identifierare kommer att visas i favoritområdet." -#: ../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 a different container format." 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." msgstr "" -#: ../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 "" -#: ../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 "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../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:25 +#: ../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:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Uuids of extensions to disable" msgstr "Uuid:er för tillägg att inaktivera" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Whether to collect stats about applications usage" msgstr "Huruvida statistik ska samlas in för programanvändning" +#: ../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." +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 "" + +#: ../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 "Aktivera linsläge" + +#: ../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 "Förstoringsfaktor" + +#: ../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 "Skärmposition" + +#: ../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 "" + #: ../data/clock-preferences.ui.h:1 msgid "Clock Format" msgstr "Klockformat" @@ -168,64 +257,45 @@ msgstr "_12-timmarsformat" msgid "_24 hour format" msgstr "_24-timmarsformat" -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 -#: ../js/ui/dash.js:778 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "Alla" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "PROGRAM" -#: ../js/ui/appDisplay.js:416 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "INSTÄLLNINGAR" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Nytt fönster" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Ta bort från favoriter" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Lägg till som favorit" -#: ../js/ui/appDisplay.js:1033 -msgid "Drag here to add favorites" -msgstr "Dra hit för att lägga till favorit" - -#: ../js/ui/appFavorites.js:88 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "%s har lagts till i dina favoriter." -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "%s har tagits bort från dina favoriter." -#: ../js/ui/dash.js:142 -msgid "Find" -msgstr "Sök" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "Ta bort" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "Söker..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "Inga sökträffar." - -#. **** 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 "PLATSER OCH ENHETER" - -#. **** Documents **** -#: ../js/ui/dash.js:804 #: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "TIDIGARE OBJEKT" @@ -238,7 +308,10 @@ msgstr "Inga tillägg installerade" msgid "Enabled" msgstr "Aktiverad" +#. translators: +#. * The device has been disabled #: ../js/ui/lookingGlass.js:591 +#: ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Inaktiverad" @@ -258,63 +331,71 @@ msgstr "Visa källa" msgid "Web Page" msgstr "Webbsida" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "Ångra" +#: ../js/ui/overview.js:158 +msgid "Windows" +msgstr "Fönster" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "Program" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "Avsluta %s" -#: ../js/ui/panel.js:498 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "Inställningar" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R.%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:586 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/panel.js:590 msgid "%a %R:%S" msgstr "%a %R.%S" -#: ../js/ui/panel.js:590 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:597 -msgid "%a %b %e, %l:%M:%S %p" -msgstr "%a %e %b, %l.%M.%S %p" - #: ../js/ui/panel.js:598 +msgid "%a %b %e, %l:%M:%S %p" +msgstr "%a %e %b, %H.%M.%S" + +#: ../js/ui/panel.js:599 msgid "%a %b %e, %l:%M %p" -msgstr "%a %e %b, %l:%M %p" +msgstr "%a %e %b, %H.%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:602 -msgid "%a %l:%M:%S %p" -msgstr "%a %l.%M.%S %p" - #: ../js/ui/panel.js:603 +msgid "%a %l:%M:%S %p" +msgstr "%a %H.%M.%S" + +#: ../js/ui/panel.js:604 msgid "%a %l:%M %p" msgstr "%a %H.%M" #. 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:749 msgid "Activities" msgstr "Aktiviteter" @@ -331,19 +412,18 @@ msgstr "Försök igen" msgid "Connect to..." msgstr "Anslut till..." -#. 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 "PÅ" +#: ../js/ui/placeDisplay.js:558 +msgid "PLACES & DEVICES" +msgstr "PLATSER OCH ENHETER" -#: ../js/ui/popupMenu.js:31 -#: ../js/ui/popupMenu.js:45 -msgid "OFF" -msgstr "AV" +#. 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:33 +msgid "toggle-switch-us" +msgstr "" #: ../js/ui/runDialog.js:233 msgid "Please enter a command:" @@ -354,42 +434,336 @@ msgstr "Ange ett kommando:" msgid "Execution of '%s' failed:" msgstr "Körning av \"%s\" misslyckades:" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/statusMenu.js:101 msgid "Available" msgstr "Tillgänglig" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:106 msgid "Busy" msgstr "Upptagen" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Osynlig" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "Mitt konto" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Kontoinformation..." +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "Systeminställningar" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "Systeminställningar..." - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "Lås skärmen" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "Växla användare" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." msgstr "Logga ut..." -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "Vänteläge..." + +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." msgstr "Stäng av..." +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "Zooma" + +#: ../js/ui/status/accessibility.js:88 +msgid "Screen Reader" +msgstr "Skärmläsare" + +#: ../js/ui/status/accessibility.js:91 +msgid "Screen Keyboard" +msgstr "Skärmtangentbord" + +#: ../js/ui/status/accessibility.js:94 +msgid "Visual Alerts" +msgstr "Visuella larm" + +#: ../js/ui/status/accessibility.js:97 +msgid "Sticky Keys" +msgstr "Klistriga tangenter" + +#: ../js/ui/status/accessibility.js:100 +msgid "Slow Keys" +msgstr "Tröga tangenter" + +#: ../js/ui/status/accessibility.js:103 +msgid "Bounce Keys" +msgstr "Studsande tangenter" + +#: ../js/ui/status/accessibility.js:106 +msgid "Mouse Keys" +msgstr "Mustangenter" + +#: ../js/ui/status/accessibility.js:110 +msgid "Universal Access Settings" +msgstr "Inställningar för allmän åtkomst" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "Hög kontrast" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "Stor text" + +#: ../js/ui/status/bluetooth.js:42 +#: ../js/ui/status/bluetooth.js:234 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Synlighet" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Skicka filer till enhet..." + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Konfigurera en ny enhet..." + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "Inställningar för Bluetooth" + +#: ../js/ui/status/bluetooth.js:185 +msgid "Connection" +msgstr "Anslutning" + +#: ../js/ui/status/bluetooth.js:221 +msgid "Send Files..." +msgstr "Skicka filer..." + +#: ../js/ui/status/bluetooth.js:226 +msgid "Browse Files..." +msgstr "Bläddra efter filer..." + +#: ../js/ui/status/bluetooth.js:235 +msgid "Error browsing device" +msgstr "" + +#: ../js/ui/status/bluetooth.js:236 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:244 +msgid "Keyboard Settings" +msgstr "Tangentbordsinställningar" + +#: ../js/ui/status/bluetooth.js:249 +msgid "Mouse Settings" +msgstr "Musinställningar" + +#: ../js/ui/status/bluetooth.js:256 +#: ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Ljudinställningar" + +#: ../js/ui/status/bluetooth.js:327 +#: ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:434 +msgid "Bluetooth Agent" +msgstr "" + +#: ../js/ui/status/bluetooth.js:362 +#, c-format +msgid "Authorization request from %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Enheten %s vill ha åtkomst till tjänsten \"%s\"" + +#: ../js/ui/status/bluetooth.js:370 +msgid "Always grant access" +msgstr "Tillåt alltid åtkomst" + +#: ../js/ui/status/bluetooth.js:371 +msgid "Grant this time only" +msgstr "Tillåt för denna gång" + +#: ../js/ui/status/bluetooth.js:372 +msgid "Reject" +msgstr "Neka" + +#: ../js/ui/status/bluetooth.js:402 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:442 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "" + +#: ../js/ui/status/bluetooth.js:409 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:411 +msgid "Matches" +msgstr "" + +#: ../js/ui/status/bluetooth.js:412 +msgid "Does not match" +msgstr "" + +#: ../js/ui/status/bluetooth.js:435 +#, c-format +msgid "Pairing request for %s" +msgstr "Ihopparningsbegäran för %s" + +#: ../js/ui/status/bluetooth.js:443 +msgid "Please enter the PIN mentioned on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:459 +msgid "OK" +msgstr "OK" + +#: ../js/ui/status/bluetooth.js:460 +msgid "Cancel" +msgstr "Avbryt" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Ströminställningar" + +#: ../js/ui/status/power.js:112 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "%d timme återstår" +msgstr[1] "%d timmar återstår" + +#. 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 "%d %s %d %s återstår" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "timme" +msgstr[1] "timmar" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "minut" +msgstr[1] "minuter" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "%d minut återstår" +msgstr[1] "%d minuter återstår" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "UPS-reservström" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "Skärm" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "Mus" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "Tangentbord" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "Handdator" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "Mobiltelefon" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "Mediaspelare" + +#: ../js/ui/status/power.js:255 +msgid "Tablet" +msgstr "Pekdator" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "Dator" + +#: ../js/ui/status/power.js:259 +#: ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "Okänt" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "Volym" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "Mikrofon" + +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "%s är ansluten." + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "%s är frånkopplad." + +#: ../js/ui/telepathyClient.js:568 +#, c-format +msgid "%s is away." +msgstr "%s är frånvarande." + +#: ../js/ui/telepathyClient.js:571 +#, c-format +msgid "%s is busy." +msgstr "%s är upptagen." + +#. 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:665 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Skickades klockan %X på %A" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "Sök i din dator" + #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" @@ -400,57 +774,79 @@ msgstr "%s har startat" msgid "'%s' is ready" msgstr "\"%s\" är redo" -#: ../js/ui/workspacesView.js:230 +#: ../js/ui/workspacesView.js:244 msgid "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "Kan inte lägga till en ny arbetsyta eftersom maximalt antal arbetsytor har uppnåtts." -#: ../js/ui/workspacesView.js:247 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "Kan inte ta bort första arbetsytan." -#: ../src/shell-global.c:1105 +#. 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 utgång" +msgstr[1] "%u utgångar" + +#. 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 ingång" +msgstr[1] "%u ingångar" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Systemljud" + +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "Mindre än en minut sedan" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1160 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minut sedan" msgstr[1] "%d minuter sedan" -#: ../src/shell-global.c:1114 +#: ../src/shell-global.c:1165 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d timme sedan" msgstr[1] "%d timmar sedan" -#: ../src/shell-global.c:1119 +#: ../src/shell-global.c:1170 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d dag sedan" msgstr[1] "%d dagar sedan" -#: ../src/shell-global.c:1124 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d vecka sedan" msgstr[1] "%d veckor sedan" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Hemmapp" #. 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 "Filsystem" -#: ../src/shell-uri-util.c:250 +#: ../src/shell-util.c:250 msgid "Search" msgstr "Sök" @@ -459,25 +855,37 @@ msgstr "Sök" #. * 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 "Drag here to add favorites" +#~ msgstr "Dra hit för att lägga till favorit" +#~ msgid "Find" +#~ msgstr "Sök" +#~ msgid "Searching..." +#~ msgstr "Söker..." +#~ msgid "No matching results." +#~ msgstr "Inga sökträffar." +#~ msgid "ON" +#~ msgstr "PÅ" +#~ msgid "OFF" +#~ msgstr "AV" +#~ msgid "Invisible" +#~ msgstr "Osynlig" +#~ msgid "Account Information..." +#~ msgstr "Kontoinformation..." #~ msgid "PLACES" #~ msgstr "PLATSER" #~ msgid "SEARCH RESULTS" #~ msgstr "SÖKRESULTAT" #~ msgid "%H:%M" #~ msgstr "%H.%M" -#~ msgid "Applications" -#~ msgstr "Program" #~ msgid "Recent Documents" #~ msgstr "Senaste dokument" #~ msgid "(see all)" #~ msgstr "(se alla)" -#~ msgid "Unknown" -#~ msgstr "Okänt" #~ msgid "Can't lock screen: %s" #~ msgstr "Kan inte låsa skärmen: %s" #~ msgid "Can't temporarily set screensaver to blank screen: %s" From 4e0a1c11522ee85a8dd2d6807da1b594771e840c Mon Sep 17 00:00:00 2001 From: Daniel Nylander Date: Fri, 31 Dec 2010 12:58:28 +0100 Subject: [PATCH 030/132] Updated Swedish translation --- po/sv.po | 179 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 135 insertions(+), 44 deletions(-) diff --git a/po/sv.po b/po/sv.po index e08178dc3..32f6c410d 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-29 14:50+0100\n" +"POT-Creation-Date: 2010-12-31 12:58+0100\n" "PO-Revision-Date: 2010-12-31 12:57+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -34,8 +34,12 @@ msgid "Customize the panel clock" msgstr "Anpassa panelklockan" #: ../data/org.gnome.shell.gschema.xml.in.h:1 -msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." -msgstr "Tillåter åtkomst till interna verktyg för felsökning och övervakning med dialogen Alt-F2." +msgid "" +"Allows access to internal debugging and monitoring tools using the Alt-F2 " +"dialog." +msgstr "" +"Tillåter åtkomst till interna verktyg för felsökning och övervakning med " +"dialogen Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Custom format of the clock" @@ -43,7 +47,8 @@ msgstr "Anpassat format för klockan" #: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" -msgstr "Aktivera interna verktyg användbara för utvecklare och testare från Alt-F2" +msgstr "" +"Aktivera interna verktyg användbara för utvecklare och testare från Alt-F2" #: ../data/org.gnome.shell.gschema.xml.in.h:4 msgid "File extension used for storing the screencast" @@ -54,7 +59,9 @@ msgid "Framerate used for recording screencasts." msgstr "Bildfrekvens för inspelade skärminspelningar." #: ../data/org.gnome.shell.gschema.xml.in.h:6 -msgid "GNOME Shell extensions have a uuid property; this key lists extensions which should not be loaded." +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 @@ -66,12 +73,20 @@ msgid "Hour format" msgstr "Timmesformat" #: ../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 "Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa datum i klockan, i tillägg till tiden." +msgid "" +"If true and format is either \"12-hour\" or \"24-hour\", display date in the " +"clock, in addition to time." +msgstr "" +"Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa datum i " +"klockan, i tillägg till tiden." #: ../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 "Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa sekunder i tiden." +msgid "" +"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " +"time." +msgstr "" +"Om true och formatet antingen är \"12-hour\" eller \"24-hour\", visa " +"sekunder i tiden." #: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." @@ -82,7 +97,15 @@ msgid "List of desktop file IDs for favorite applications" msgstr "Lista över skrivbordsfil-id för favoritprogram" #: ../data/org.gnome.shell.gschema.xml.in.h:13 -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 ! theoraenc ! oggmux' and records to Ogg Theora." +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 ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:14 @@ -98,15 +121,24 @@ msgid "Show time with seconds" msgstr "Visa tid med sekunder" #: ../data/org.gnome.shell.gschema.xml.in.h:17 -msgid "The applications corresponding to these identifiers will be displayed in the favorites area." -msgstr "Programmen som motsvarar dessa identifierare kommer att visas i favoritområdet." +msgid "" +"The applications corresponding to these identifiers will be displayed in the " +"favorites area." +msgstr "" +"Programmen som motsvarar dessa identifierare kommer att visas i " +"favoritområdet." #: ../data/org.gnome.shell.gschema.xml.in.h:18 -msgid "The filename for recorded screencasts will be a unique filename based on the current date, and use this extension. It should be changed when recording to a different container format." +msgid "" +"The filename for recorded screencasts will be a unique filename based on the " +"current date, and use this extension. It should be changed when recording to " +"a different container format." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:19 -msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." +msgid "" +"The framerate of the resulting screencast recordered by GNOME Shell's " +"screencast recorder in frames-per-second." msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:20 @@ -114,15 +146,29 @@ msgid "The gstreamer pipeline used to encode the screencast" msgstr "" #: ../data/org.gnome.shell.gschema.xml.in.h:21 -msgid "The shell normally monitors active applications in order to present the most used ones (e.g. in launchers). While this data will be kept private, you may want to disable this for privacy reasons. Please note that doing so won't remove already saved data." +msgid "" +"The shell normally monitors active applications in order to present the most " +"used ones (e.g. in launchers). While this data will be kept private, you may " +"want to disable this for privacy reasons. Please note that doing so won't " +"remove already saved data." msgstr "" #: ../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." +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." +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 @@ -142,19 +188,35 @@ 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." +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." +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." +msgid "" +"Determines the transparency of the crosshairs, from fully opaque to fully " +"transparent." 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." +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 @@ -162,11 +224,16 @@ msgid "Enable lens mode" msgstr "Aktivera linsläge" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:8 -msgid "Enables/disables display of crosshairs centered on the magnified mouse sprite." +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." +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 @@ -206,15 +273,21 @@ 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." +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." +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." +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 @@ -222,7 +295,9 @@ 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." +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 @@ -310,8 +385,7 @@ msgstr "Aktiverad" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 -#: ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Inaktiverad" @@ -514,8 +588,7 @@ msgstr "Hög kontrast" msgid "Large Text" msgstr "Stor text" -#: ../js/ui/status/bluetooth.js:42 -#: ../js/ui/status/bluetooth.js:234 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 msgid "Bluetooth" msgstr "Bluetooth" @@ -564,15 +637,12 @@ msgstr "Tangentbordsinställningar" msgid "Mouse Settings" msgstr "Musinställningar" -#: ../js/ui/status/bluetooth.js:256 -#: ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "Ljudinställningar" -#: ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:361 -#: ../js/ui/status/bluetooth.js:401 -#: ../js/ui/status/bluetooth.js:434 +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 msgid "Bluetooth Agent" msgstr "" @@ -603,8 +673,7 @@ msgstr "Neka" msgid "Pairing confirmation for %s" msgstr "" -#: ../js/ui/status/bluetooth.js:408 -#: ../js/ui/status/bluetooth.js:442 +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 #, c-format msgid "Device %s wants to pair with this computer" msgstr "" @@ -719,8 +788,7 @@ msgstr "Pekdator" msgid "Computer" msgstr "Dator" -#: ../js/ui/status/power.js:259 -#: ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Okänt" @@ -775,8 +843,11 @@ msgid "'%s' is ready" msgstr "\"%s\" är redo" #: ../js/ui/workspacesView.js:244 -msgid "Can't add a new workspace because maximum workspaces limit has been reached." -msgstr "Kan inte lägga till en ny arbetsyta eftersom maximalt antal arbetsytor har uppnåtts." +msgid "" +"Can't add a new workspace because maximum workspaces limit has been reached." +msgstr "" +"Kan inte lägga till en ny arbetsyta eftersom maximalt antal arbetsytor har " +"uppnåtts." #: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." @@ -862,46 +933,66 @@ msgstr "%1$s: %2$s" #~ msgid "Drag here to add favorites" #~ msgstr "Dra hit för att lägga till favorit" + #~ msgid "Find" #~ msgstr "Sök" + #~ msgid "Searching..." #~ msgstr "Söker..." + #~ msgid "No matching results." #~ msgstr "Inga sökträffar." + #~ msgid "ON" #~ msgstr "PÅ" + #~ msgid "OFF" #~ msgstr "AV" + #~ msgid "Invisible" #~ msgstr "Osynlig" + #~ msgid "Account Information..." #~ msgstr "Kontoinformation..." + #~ msgid "PLACES" #~ msgstr "PLATSER" + #~ msgid "SEARCH RESULTS" #~ msgstr "SÖKRESULTAT" + #~ msgid "%H:%M" #~ msgstr "%H.%M" + #~ msgid "Recent Documents" #~ msgstr "Senaste dokument" + #~ msgid "(see all)" #~ msgstr "(se alla)" + #~ msgid "Can't lock screen: %s" #~ msgstr "Kan inte låsa skärmen: %s" + #~ msgid "Can't temporarily set screensaver to blank screen: %s" #~ msgstr "Kan inte temporärt ställa in skärmsläckaren till blank skärm: %s" + #~ msgid "Can't logout: %s" #~ msgstr "Kan inte logga ut: %s" + #~ msgid "Sidebar" #~ msgstr "Sidopanel" + #~ msgid "Browse" #~ msgstr "Bläddra" + #~ msgid "Find apps or documents" #~ msgstr "Hitta program eller dokument" + #~ msgid "DOCUMENTS" #~ msgstr "DOKUMENT" + #~ msgid "Manager" #~ msgstr "Hanterare" + #~ msgid "The user manager object this user is controlled by." #~ msgstr "Användarhanteringsobjektet som denna användare styrs av." - From d48f0646368b8b2479fdb44e42d32994d7b26ac7 Mon Sep 17 00:00:00 2001 From: Christian Kirbach Date: Sat, 1 Jan 2011 23:21:35 +0100 Subject: [PATCH 031/132] [l10n] Updated German translation --- po/de.po | 567 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 446 insertions(+), 121 deletions(-) diff --git a/po/de.po b/po/de.po index 60b217616..7fd70fe6c 100644 --- a/po/de.po +++ b/po/de.po @@ -6,19 +6,21 @@ # # Hendrik Brandt , 2009. # Hendrik Richter , 2009. -# Mario Blättermann , 2009, 2010. +# Mario Blättermann , 2009, 2010, 2011. # Mario Klug , 2010. -# Christian Kirbach , 2009, 2010. +# Jakob Kramer , 2010. +# Paul Seyfert , 2010. +# Christian Kirbach , 2009, 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: 2010-10-10 03:14+0000\n" -"PO-Revision-Date: 2010-10-10 20:23+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-01 23:21+0100\n" +"PO-Revision-Date: 2011-01-01 16:25+0100\n" "Last-Translator: Christian Kirbach \n" "Language-Team: Deutsch \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -105,12 +107,8 @@ msgstr "" msgid "List of desktop file IDs for favorite applications" msgstr "Liste der Kennungen der Desktop-Dateien für bevorzugte Anwendungen" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "Modus des Arbeitsflächen-Überblicks" - # Hier blicke ich überhaupt nicht durch. -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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 " @@ -130,22 +128,22 @@ msgstr "" "Das kann zum Senden der Ausgabe über shout2send an einen Icecast-Server oder " "Ähnliches verwendet werden. Falls nicht (oder auf einen leeren Wert) " "gesetzt, so wird die vorgegebene Weiterleitung verwendet, welche derzeit " -"»videorate ! theoraenc ! oggmux« lautet und die Aufnahme im Ogg-Theora-Format " -"speichert." +"»videorate ! theoraenc ! oggmux« lautet und die Aufnahme im Ogg-Theora-" +"Format speichert." -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show date in clock" msgstr "Datum in der Uhr anzeigen" -#: ../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 "Wochentag im Kalender anzeigen" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "Show time with seconds" msgstr "Zeit sekundengenau anzeigen" -#: ../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." @@ -153,7 +151,7 @@ msgstr "" "Programme, welche auf diese Bezeichner zutreffen, werden im Favoriten-" "Bereich angezeigt." -#: ../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 " @@ -164,7 +162,7 @@ msgstr "" "Dateiname sollte geändert werden, wenn Sie in einem anderen Containerformat " "aufnehmen." -#: ../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." @@ -173,19 +171,11 @@ msgstr "" "der GNOME-Shell aufgezeichnet werden soll, in Einzelbildern pro Sekunde." # hmm Enkodieren oder Kodieren? -#: ../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 "Die GStreamer-Weiterleitung zur Enkodierung des Screencasts" -#: ../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 "" -"Die gewählte Ansicht des Arbeitsflächen-Überblicks. Mögliche Werte sind " -"»single« (einfach) und »grid« (Raster)." - -#: ../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 " @@ -198,7 +188,7 @@ msgstr "" "deaktivieren, um Ihre Privatsphäre zu schützen. Bitte beachten Sie, dass " "bereits gespeicherte Daten hiervon nicht beeinflusst werden." -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../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" @@ -211,7 +201,7 @@ msgstr "" "Format zu erhalten. Weitere Informationen finden Sie in der Handbuchseite zu " "strftime()." -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../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\", " @@ -221,18 +211,18 @@ msgid "" "the show_date and show_seconds keys are ignored." msgstr "" "Dieser Schlüssel legt das Stundenformat für die Anzeige der Panel-Uhr fest. " -"Mögliche Werte sind »12-hour«, »24-hour«, »unix« und »custom«. Wenn Sie »unix« " -"verwenden, zeigt die Uhr die Sekunden seit Epoch, dem Beginn der Unix-" +"Mögliche Werte sind »12-hour«, »24-hour«, »unix« und »custom«. Wenn Sie " +"»unix« verwenden, zeigt die Uhr die Sekunden seit Epoch, dem Beginn der Unix-" "Zeitrechnung am 1. Januar 1970 an. Wenn Sie »custom« (benutzerdefiniert) " "verwenden, zeigt die Uhr die Zeit gemäß dem im Schlüssel »custom_format« " "angegebenen Format an. Beachten Sie, dass bei »unix« oder »custom« die " "Schlüssel »show_date« und »show_seconds« ignoriert werden." -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:24 msgid "Uuids of extensions to disable" msgstr "UUIDs der zu deaktivierenden Erweiterungen" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:25 msgid "Whether to collect stats about applications usage" msgstr "Legt fest, ob der Status der Anwendungsnutzung erfasst werden soll" @@ -266,14 +256,14 @@ msgid "" msgstr "" "Legt die Position des vergrößerten Bildes der Maus innerhalb der " "vergrößerten Ansicht fest, und wie die Maus auf die Mausbewegungen des " -"Systems reagiert. Folgende Werte sind möglich: »none« - keine Mausverfolgung; " -"»centered« - das Mausbild wird in der Mitte des vergrößerten Bereiches " -"dargestellt (welche auch den Zeiger der Systemmaus darstellt), wobei der " -"vergrößerte Inhalt gerollt wird, sobald die Systemmaus bewegt wird; " -"»proportional« - die Position der vergrößerten Maus im vergrößerten Bereich " -"ist proportional zur Position der Systemmaus auf dem Bildschirm; »push« - " -"wenn die vergrößerte Maus einen der Ränder des vergrößerten Bereichs " -"berührt, wird der entsprechende Inhalt in die Ansicht geschoben." +"Systems reagiert. Folgende Werte sind möglich: »none« - keine " +"Mausverfolgung; »centered« - das Mausbild wird in der Mitte des vergrößerten " +"Bereiches dargestellt (welche auch den Zeiger der Systemmaus darstellt), " +"wobei der vergrößerte Inhalt gerollt wird, sobald die Systemmaus bewegt " +"wird; »proportional« - die Position der vergrößerten Maus im vergrößerten " +"Bereich ist proportional zur Position der Systemmaus auf dem Bildschirm; " +"»push« - wenn die vergrößerte Maus einen der Ränder des vergrößerten " +"Bereichs berührt, wird der entsprechende Inhalt in die Ansicht geschoben." #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5 msgid "" @@ -422,62 +412,46 @@ msgstr "_12-Stunden-Format" msgid "_24 hour format" msgstr "_24-Stunden-Format" -#. **** Applications **** -#: ../js/ui/appDisplay.js:316 ../js/ui/dash.js:778 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "Alle" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "ANWENDUNGEN" -#: ../js/ui/appDisplay.js:348 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "EINSTELLUNGEN" -#: ../js/ui/appDisplay.js:648 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Neues Fenster" -#: ../js/ui/appDisplay.js:652 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Aus Favoriten entfernen" -#: ../js/ui/appDisplay.js:653 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Zu Favoriten hinzufügen" -#: ../js/ui/appDisplay.js:830 -msgid "Drag here to add favorites" -msgstr "Hier ablegen, um zu Favoriten hinzuzufügen" - -#: ../js/ui/appFavorites.js:88 +#: ../js/ui/appFavorites.js:91 #, c-format msgid "%s has been added to your favorites." msgstr "%s wurde zu Ihren Favoriten hinzugefügt" -#: ../js/ui/appFavorites.js:107 +#: ../js/ui/appFavorites.js:122 #, c-format msgid "%s has been removed from your favorites." msgstr "%s wurde aus Ihren Favoriten entfernt" -#: ../js/ui/dash.js:142 -msgid "Find" -msgstr "Suchen" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "Entfernen" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "Suche läuft …" - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "Keine passenden Ergebnisse." - -#. **** 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 "ORTE UND GERÄTE" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "ZULETZT GEÖFFNETE DOKUMENTE" @@ -489,7 +463,9 @@ msgstr "Keine Erweiterungen installiert" msgid "Enabled" msgstr "Aktiviert" -#: ../js/ui/lookingGlass.js:591 +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Deaktiviert" @@ -509,63 +485,71 @@ msgstr "Quelle zeigen" msgid "Web Page" msgstr "Webseite" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:96 msgid "Undo" msgstr "Rückgängig" +#: ../js/ui/overview.js:158 +msgid "Windows" +msgstr "Fenster" + +#: ../js/ui/overview.js:161 +msgid "Applications" +msgstr "Anwendungen" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:468 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "%s beenden" -#: ../js/ui/panel.js:493 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "Einstellungen" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:579 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a, %e. %b, %R:%S" -#: ../js/ui/panel.js:580 +#: ../js/ui/panel.js:586 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:584 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:592 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a, %e. %b, %H:%M:%S" -#: ../js/ui/panel.js:593 +#: ../js/ui/panel.js:599 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/panel.js:597 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:604 msgid "%a %l:%M %p" msgstr "%a %H:%M" #. 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:743 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "Aktivitäten" @@ -582,6 +566,10 @@ msgstr "Erneut versuchen" msgid "Connect to..." msgstr "Verbinden mit …" +#: ../js/ui/placeDisplay.js:558 +msgid "PLACES & DEVICES" +msgstr "ORTE UND GERÄTE" + #. Translators: this MUST be either "toggle-switch-us" #. (for toggle switches containing the English words #. "ON" and "OFF") or "toggle-switch-intl" (for toggle @@ -600,42 +588,332 @@ msgstr "Bitte geben Sie einen Befehl ein:" msgid "Execution of '%s' failed:" msgstr "Ausführung von »%s« ist gescheitert:" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/statusMenu.js:101 msgid "Available" msgstr "Verfügbar" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:106 msgid "Busy" msgstr "Beschäftigt" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Unsichtbar" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "Eigenes Konto" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Benutzerinformationen …" +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "Systemeinstellungen" -#: ../js/ui/statusMenu.js:110 -msgid "System Settings..." -msgstr "Systemeinstellungen …" - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "Bildschirm sperren" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "Benutzer wechseln" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." msgstr "Abmelden …" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "Bereitschaft …" + +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." msgstr "Ausschalten …" +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "Vergrößern" + +#: ../js/ui/status/accessibility.js:88 +msgid "Screen Reader" +msgstr "Bildschirmleser" + +#: ../js/ui/status/accessibility.js:91 +msgid "Screen Keyboard" +msgstr "Bildschirmtastatur" + +#: ../js/ui/status/accessibility.js:94 +msgid "Visual Alerts" +msgstr "Visuelle Warnungen" + +#: ../js/ui/status/accessibility.js:97 +msgid "Sticky Keys" +msgstr "Klebrige Tasten" + +#: ../js/ui/status/accessibility.js:100 +msgid "Slow Keys" +msgstr "Tastenverzögerung" + +#: ../js/ui/status/accessibility.js:103 +msgid "Bounce Keys" +msgstr "Springende Tasten" + +#: ../js/ui/status/accessibility.js:106 +msgid "Mouse Keys" +msgstr "Maustasten" + +#: ../js/ui/status/accessibility.js:110 +msgid "Universal Access Settings" +msgstr "Einstellungen zur Barrierefreiheit" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "Hoher Kontrast" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "Große Schrift" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 +msgid "Bluetooth" +msgstr "Bluetooth" + +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Sichtbarkeit" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Dateien an Gerät senden …" + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Ein neues Gerät einrichten …" + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "Bluetooth-Einstellungen" + +#: ../js/ui/status/bluetooth.js:185 +msgid "Connection" +msgstr "Verbindung" + +#: ../js/ui/status/bluetooth.js:221 +msgid "Send Files..." +msgstr "Dateien senden …" + +#: ../js/ui/status/bluetooth.js:226 +msgid "Browse Files..." +msgstr "Dateien durchsuchen …" + +#: ../js/ui/status/bluetooth.js:235 +msgid "Error browsing device" +msgstr "Fehler beim Durchsuchen des Geräts" + +#: ../js/ui/status/bluetooth.js:236 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" +"Das angesprochene Gerät kann nicht durchsucht werden. Der Fehler lautet »%s«" + +#: ../js/ui/status/bluetooth.js:244 +msgid "Keyboard Settings" +msgstr "Tastatureinstellungen" + +#: ../js/ui/status/bluetooth.js:249 +msgid "Mouse Settings" +msgstr "Maus-Einstellungen" + +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Klangeinstellungen" + +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 +msgid "Bluetooth Agent" +msgstr "Bluetooth-Agent" + +#: ../js/ui/status/bluetooth.js:362 +#, c-format +msgid "Authorization request from %s" +msgstr "Legitimierungsanfrage von %s" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Gerät »%s« bittet um Zugriff auf den Dienst »%s«" + +#: ../js/ui/status/bluetooth.js:370 +msgid "Always grant access" +msgstr "Immer Zugriff gewähren" + +#: ../js/ui/status/bluetooth.js:371 +msgid "Grant this time only" +msgstr "Nur dieses Mal gewähren" + +#: ../js/ui/status/bluetooth.js:372 +msgid "Reject" +msgstr "Abweisen" + +#: ../js/ui/status/bluetooth.js:402 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Koppelungsbestätigung für %s" + +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Gerät »%s« möchte mit diesem Rechner gekoppelt werden" + +#: ../js/ui/status/bluetooth.js:409 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "" +"Bitte bestätigen Sie, ob die PIN »%s« mit der des Gerätes übereinstimmt." + +#: ../js/ui/status/bluetooth.js:411 +msgid "Matches" +msgstr "Stimmt überein" + +#: ../js/ui/status/bluetooth.js:412 +msgid "Does not match" +msgstr "Stimmt nicht überein" + +#: ../js/ui/status/bluetooth.js:435 +#, c-format +msgid "Pairing request for %s" +msgstr "Koppelungsanfrage für %s" + +#: ../js/ui/status/bluetooth.js:443 +msgid "Please enter the PIN mentioned on the device." +msgstr "Bitte geben Sie die auf dem Gerät angezeigte PIN ein." + +#: ../js/ui/status/bluetooth.js:459 +msgid "OK" +msgstr "OK" + +#: ../js/ui/status/bluetooth.js:460 +msgid "Cancel" +msgstr "Abbrechen" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Energieeinstellungen" + +#: ../js/ui/status/power.js:112 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "%d Stunde verbleibend" +msgstr[1] "%d Stunden verbleibend" + +#. 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 "%d %s %d %s verbleibend" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "Stunde" +msgstr[1] "Stunden" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "Minute" +msgstr[1] "Minuten" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "%d Minute verbleibend" +msgstr[1] "%d Minuten verbleibend" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "Netzteil" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "Laptop-Akku" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "Notstromversorgung" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "Bildschirm" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "Maus" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "Tastatur" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "Mobiltelefon" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "Medienwiedergabegerät" + +#: ../js/ui/status/power.js:255 +msgid "Tablet" +msgstr "Tablet" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "Rechner" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "Unbekannt" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "Lautstärke" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "Mikrofon" + +#: ../js/ui/telepathyClient.js:560 +#, c-format +msgid "%s is online." +msgstr "%s ist angemeldet." + +#: ../js/ui/telepathyClient.js:565 +#, c-format +msgid "%s is offline." +msgstr "%s ist abgemeldet." + +#: ../js/ui/telepathyClient.js:568 +#, c-format +msgid "%s is away." +msgstr "»%s« ist abwesend." + +#: ../js/ui/telepathyClient.js:571 +#, c-format +msgid "%s is busy." +msgstr "%s ist beschäftigt." + +#. 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:665 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Gesendet am %A um %X " + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "Ihren Rechner durchsuchen" + #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" @@ -646,60 +924,82 @@ msgstr "Start von %s ist abgeschlossen" msgid "'%s' is ready" msgstr "»%s« ist bereit" -#: ../js/ui/workspacesView.js:230 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "" "Es kann keine weitere Arbeitsfläche hinzugefügt werden, weil das Maximum an " "Arbeitsflächen erreicht worden ist." -#: ../js/ui/workspacesView.js:247 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "Die erste Arbeitsfläche kann nicht entfernt werden." -#: ../src/shell-global.c:1196 +#. 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 Ausgang" +msgstr[1] "%u Ausgänge" + +#. 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 Eingang" +msgstr[1] "%u Eingänge" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Systemklänge" + +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "Vor weniger als einer Minute" -#: ../src/shell-global.c:1200 +#: ../src/shell-global.c:1160 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "Vor %d Minute" msgstr[1] "Vor %d Minuten" -#: ../src/shell-global.c:1205 +#: ../src/shell-global.c:1165 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "Vor %d Stunde" msgstr[1] "Vor %d Stunden" -#: ../src/shell-global.c:1210 +#: ../src/shell-global.c:1170 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "Vor %d Tag" msgstr[1] "Vor %d Tagen" -#: ../src/shell-global.c:1215 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "Vor %d Woche" msgstr[1] "Vor %d Wochen" -#: ../src/shell-uri-util.c:89 +#: ../src/shell-util.c:89 msgid "Home Folder" msgstr "Persönlicher Ordner" #. 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 "Dateisystem" -#: ../src/shell-uri-util.c:250 +#: ../src/shell-util.c:250 msgid "Search" msgstr "Suchen" @@ -708,11 +1008,42 @@ msgstr "Suchen" #. * 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 "What's using power..." +#~ msgstr "Energieverbraucher …" + +#~ msgid "Overview workspace view mode" +#~ msgstr "Modus des Arbeitsflächen-Überblicks" + +#~ msgid "" +#~ "The selected workspace view mode in the overview. Supported values are " +#~ "\"single\" and \"grid\"." +#~ msgstr "" +#~ "Die gewählte Ansicht des Arbeitsflächen-Überblicks. Mögliche Werte sind " +#~ "»single« (einfach) und »grid« (Raster)." + +#~ msgid "Drag here to add favorites" +#~ msgstr "Hier ablegen, um zu Favoriten hinzuzufügen" + +#~ msgid "Find" +#~ msgstr "Suchen" + +#~ msgid "Searching..." +#~ msgstr "Suche läuft …" + +#~ msgid "No matching results." +#~ msgstr "Keine passenden Ergebnisse." + +#~ msgid "Invisible" +#~ msgstr "Unsichtbar" + +#~ msgid "Account Information..." +#~ msgstr "Benutzerinformationen …" + #~ msgid "ON" #~ msgstr "EIN" @@ -725,9 +1056,6 @@ msgstr "%1$s: %2$s" #~ msgid "%H:%M" #~ msgstr "%H:%M" -#~ msgid "Applications" -#~ msgstr "Anwendungen" - #~ msgid "Recent Documents" #~ msgstr "Zuletzt geöffnete Dokumente" @@ -746,9 +1074,6 @@ msgstr "%1$s: %2$s" #~ msgid "SEARCH RESULTS" #~ msgstr "SUCHERGEBNISSE" -#~ msgid "Unknown" -#~ msgstr "Unbekannt" - #~ msgid "Can't lock screen: %s" #~ msgstr "Bildschirm kann nicht gesperrt werden: %s" From 96a0b9d41653ae3fab76c1df7f1ab1cd46e98f97 Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Sun, 2 Jan 2011 19:20:31 +0100 Subject: [PATCH 032/132] =?UTF-8?q?Updated=20Norwegian=20bokm=C3=A5l=20tra?= =?UTF-8?q?nslation=20from=20Torstein=20Adolf=20Winterseth?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- po/nb.po | 236 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 184 insertions(+), 52 deletions(-) diff --git a/po/nb.po b/po/nb.po index 18e0e0a5b..4bbcd92e3 100644 --- a/po/nb.po +++ b/po/nb.po @@ -1,21 +1,24 @@ # Norwegian bokmål translation of gnome-shell. # Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. -# Kjartan Maraas , 2009-2010. # +# Kjartan Maraas , 2009-2010. +# Torstein Adolf Winterseth , 2010. msgid "" msgstr "" "Project-Id-Version: gnome-shell 2.91.x\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-17 14:18+0100\n" -"PO-Revision-Date: 2010-12-17 14:19+0100\n" -"Last-Translator: Kjartan Maraas \n" -"Language-Team: Norwegian bokmål \n" -"Language: \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" +"PO-Revision-Date: 2010-12-30 21:34+0100\n" +"Last-Translator: Torstein Adolf Winterseth \n" +"Language-Team: Norwegian Bokmål \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Lokalize 1.1\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" @@ -325,23 +328,27 @@ msgstr "_12-timers format" msgid "_24 hour format" msgstr "_24-timers format" -#: ../js/ui/appDisplay.js:215 +#: ../js/ui/appDisplay.js:154 +msgid "All" +msgstr "" + +#: ../js/ui/appDisplay.js:235 msgid "APPLICATIONS" msgstr "PROGRAMMER" -#: ../js/ui/appDisplay.js:245 +#: ../js/ui/appDisplay.js:265 msgid "PREFERENCES" msgstr "BRUKERVALG" -#: ../js/ui/appDisplay.js:542 +#: ../js/ui/appDisplay.js:562 msgid "New Window" msgstr "Nytt vindu" -#: ../js/ui/appDisplay.js:546 +#: ../js/ui/appDisplay.js:566 msgid "Remove from Favorites" msgstr "Fjern fra favoritter" -#: ../js/ui/appDisplay.js:547 +#: ../js/ui/appDisplay.js:567 msgid "Add to Favorites" msgstr "Legg til i favoritter" @@ -406,58 +413,58 @@ msgid "Applications" msgstr "Programmer" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:474 #, c-format msgid "Quit %s" msgstr "Avslutt %s" -#: ../js/ui/panel.js:495 +#: ../js/ui/panel.js:499 msgid "Preferences" msgstr "Brukervalg" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:585 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R.%S" -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:586 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:586 +#: ../js/ui/panel.js:590 msgid "%a %R:%S" msgstr "%a %R.%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:591 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:598 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l.%M.%S %p" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:599 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:599 +#: ../js/ui/panel.js:603 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %p" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:604 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:745 +#: ../js/ui/panel.js:749 msgid "Activities" msgstr "Aktiviteter" @@ -472,7 +479,7 @@ msgstr "Prøv igjen" #: ../js/ui/placeDisplay.js:159 msgid "Connect to..." -msgstr "Koble til..." +msgstr "Koble til …" #: ../js/ui/placeDisplay.js:558 msgid "PLACES & DEVICES" @@ -522,15 +529,15 @@ msgstr "Bytt bruker" #: ../js/ui/statusMenu.js:134 msgid "Log Out..." -msgstr "Logg ut..." +msgstr "Logg ut …" #: ../js/ui/statusMenu.js:141 msgid "Suspend..." -msgstr "Hvilemodus..." +msgstr "Hvilemodus …" #: ../js/ui/statusMenu.js:145 msgid "Shut Down..." -msgstr "Avslutt..." +msgstr "Avslutt …" #: ../js/ui/status/accessibility.js:82 msgid "Zoom" @@ -576,15 +583,141 @@ msgstr "Høy kontrast" msgid "Large Text" msgstr "Stor tekst" -#: ../js/ui/status/power.js:85 -msgid "What's using power..." -msgstr "Hva bruker strøm..." +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +msgid "Bluetooth" +msgstr "" -#: ../js/ui/status/power.js:88 +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "" + +#: ../js/ui/status/bluetooth.js:68 +msgid "Send Files to Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:71 +msgid "Setup a New Device..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:94 +#, fuzzy +#| msgid "Power Settings" +msgid "Bluetooth Settings" +msgstr "Innstillinger for strøm" + +#: ../js/ui/status/bluetooth.js:151 +#, fuzzy +#| msgid "Connect to..." +msgid "Connection" +msgstr "Koble til..." + +#: ../js/ui/status/bluetooth.js:187 +#, fuzzy +#| msgid "Suspend..." +msgid "Send Files..." +msgstr "Hvilemodus..." + +#: ../js/ui/status/bluetooth.js:192 +msgid "Browse Files..." +msgstr "" + +#: ../js/ui/status/bluetooth.js:201 +msgid "Error browsing device" +msgstr "" + +#: ../js/ui/status/bluetooth.js:202 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:210 +#, fuzzy +#| msgid "Power Settings" +msgid "Keyboard Settings" +msgstr "Innstillinger for strøm" + +#: ../js/ui/status/bluetooth.js:215 +#, fuzzy +#| msgid "Power Settings" +msgid "Mouse Settings" +msgstr "Innstillinger for strøm" + +#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Innstillinger for lyd" + +#: ../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 +#, c-format +msgid "Authorization request from %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:334 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "" + +#: ../js/ui/status/bluetooth.js:336 +msgid "Always grant access" +msgstr "" + +#: ../js/ui/status/bluetooth.js:337 +msgid "Grant this time only" +msgstr "" + +#: ../js/ui/status/bluetooth.js:338 +msgid "Reject" +msgstr "" + +#: ../js/ui/status/bluetooth.js:368 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "" + +#: ../js/ui/status/bluetooth.js:375 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:377 +msgid "Matches" +msgstr "" + +#: ../js/ui/status/bluetooth.js:378 +msgid "Does not match" +msgstr "" + +#: ../js/ui/status/bluetooth.js:401 +#, c-format +msgid "Pairing request for %s" +msgstr "" + +#: ../js/ui/status/bluetooth.js:409 +msgid "Please enter the PIN mentioned on the device." +msgstr "" + +#: ../js/ui/status/bluetooth.js:425 +msgid "OK" +msgstr "" + +#: ../js/ui/status/bluetooth.js:426 +msgid "Cancel" +msgstr "" + +#: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Innstillinger for strøm" -#: ../js/ui/status/power.js:115 +#: ../js/ui/status/power.js:112 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -592,75 +725,75 @@ msgstr[0] "%d time gjenstår" msgstr[1] "%d timer gjenstår" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:118 +#: ../js/ui/status/power.js:115 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s gjenstår" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" msgstr[0] "time" msgstr[1] "timer" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:117 msgid "minute" msgid_plural "minutes" msgstr[0] "minutt" msgstr[1] "minutter" -#: ../js/ui/status/power.js:123 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d minutt gjenstår" msgstr[1] "%d minutter gjenstår" -#: ../js/ui/status/power.js:240 +#: ../js/ui/status/power.js:237 msgid "AC adapter" msgstr "Strømadapter" -#: ../js/ui/status/power.js:242 +#: ../js/ui/status/power.js:239 msgid "Laptop battery" msgstr "Batteri på bærbar" -#: ../js/ui/status/power.js:244 +#: ../js/ui/status/power.js:241 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:246 +#: ../js/ui/status/power.js:243 msgid "Monitor" msgstr "Skjerm" -#: ../js/ui/status/power.js:248 +#: ../js/ui/status/power.js:245 msgid "Mouse" msgstr "Mus" -#: ../js/ui/status/power.js:250 +#: ../js/ui/status/power.js:247 msgid "Keyboard" msgstr "Tastatur" -#: ../js/ui/status/power.js:252 +#: ../js/ui/status/power.js:249 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:254 +#: ../js/ui/status/power.js:251 msgid "Cell phone" msgstr "Mobiltelefon" -#: ../js/ui/status/power.js:256 +#: ../js/ui/status/power.js:253 msgid "Media player" msgstr "Medieavspiller" -#: ../js/ui/status/power.js:258 +#: ../js/ui/status/power.js:255 msgid "Tablet" msgstr "Nettbrett" -#: ../js/ui/status/power.js:260 +#: ../js/ui/status/power.js:257 msgid "Computer" msgstr "Datamaskin" -#: ../js/ui/status/power.js:262 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Ukjent" @@ -672,10 +805,6 @@ msgstr "Volum" msgid "Microphone" msgstr "Mikrofon" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "Innstillinger for lyd" - #: ../js/ui/telepathyClient.js:560 #, c-format msgid "%s is online." @@ -806,3 +935,6 @@ msgstr "Søk" #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" + +#~ msgid "What's using power..." +#~ msgstr "Hva bruker strøm..." From d9d56b749219010141c5d5a609b9e140865f10f0 Mon Sep 17 00:00:00 2001 From: Ivar Smolin Date: Sun, 2 Jan 2011 20:24:26 +0200 Subject: [PATCH 033/132] [l10n] Updated Estonian translation --- po/et.po | 113 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 103 insertions(+), 10 deletions(-) diff --git a/po/et.po b/po/et.po index 84c9b65ed..ae61fc50d 100644 --- a/po/et.po +++ b/po/et.po @@ -1,21 +1,26 @@ +# GNOME kesta eesti keele tõlge. # Estonian translation for gnome-shell. -# Copyright (C) 2010 The Gnome Project +# +# Copyright (C) 2010, 2011 The Gnome Project +# # This file is distributed under the same license as the gnome-shell package. +# # Mattias Põldaru , 2010. +# Ivar Smolin , 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: 2010-12-18 23:05+0000\n" -"PO-Revision-Date: 2010-12-18 11:47+0200\n" +"POT-Creation-Date: 2010-12-20 21:07+0000\n" +"PO-Revision-Date: 2011-01-02 18:39+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" -"Language: et\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: et\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Estonian\n" "X-Poedit-Country: Estonia\n" @@ -283,7 +288,7 @@ msgid "_24 hour format" msgstr "_24 tunni vorming" msgid "All" -msgstr "" +msgstr "Kõik" msgid "APPLICATIONS" msgstr "Rakendused" @@ -309,7 +314,7 @@ msgid "%s has been removed from your favorites." msgstr "%s eemaldati lemmikutest." msgid "Remove" -msgstr "" +msgstr "Eemalda" msgid "RECENT ITEMS" msgstr "Hiljutised dokumendid" @@ -465,7 +470,7 @@ msgid "Slow Keys" msgstr "Aeglased klahvid" msgid "Bounce Keys" -msgstr "" +msgstr "Põrkeklahvid" msgid "Mouse Keys" msgstr "Hiireklahvid" @@ -479,6 +484,97 @@ msgstr "" msgid "Large Text" msgstr "" +msgid "Bluetooth" +msgstr "Bluetooth" + +msgid "Visibility" +msgstr "Nähtavus" + +msgid "Send Files to Device..." +msgstr "Failide saatmine seadmesse..." + +msgid "Setup a New Device..." +msgstr "" + +msgid "Bluetooth Settings" +msgstr "Bluetoothi sätted" + +msgid "Connection" +msgstr "Ühendus" + +msgid "Send Files..." +msgstr "Failide saatmine..." + +msgid "Browse Files..." +msgstr "Failide sirvimine..." + +msgid "Error browsing device" +msgstr "Viga seadme sirvimisel" + +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "" + +msgid "Keyboard Settings" +msgstr "Klaviatuurisätted" + +msgid "Mouse Settings" +msgstr "Hiiresätted" + +msgid "Sound Settings" +msgstr "Helisätted" + +msgid "Bluetooth Agent" +msgstr "" + +#, c-format +msgid "Authorization request from %s" +msgstr "Autoriseerimise päring seadmelt %s" + +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Seade %s soovib ligipääsu teenusele '%s'" + +msgid "Always grant access" +msgstr "Luba alati" + +msgid "Grant this time only" +msgstr "Luba ainult seekord" + +msgid "Reject" +msgstr "Lükka tagasi" + +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Paardumise kinnitus seadmele %s" + +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Seade '%s' tahab selle arvutiga paarduda" + +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Palun kontrolli, et PIN-kood '%s' kattuks seadme parooliga." + +msgid "Matches" +msgstr "Kattub" + +msgid "Does not match" +msgstr "Ei kattu" + +#, c-format +msgid "Pairing request for %s" +msgstr "Seadmega %s paardumise päring" + +msgid "Please enter the PIN mentioned on the device." +msgstr "Palun sisesta seadme poolt öeldav PIN-kood." + +msgid "OK" +msgstr "Olgu" + +msgid "Cancel" +msgstr "Katkesta" + msgid "Power Settings" msgstr "Toitesätted..." @@ -551,9 +647,6 @@ msgstr "Helivaljus" msgid "Microphone" msgstr "Mikrofon" -msgid "Sound Settings" -msgstr "Helisätted" - #, c-format msgid "%s is online." msgstr "%s on ühendatud." From 68a0d7897fa2bdf07b8ea39b67061282a4c75c7f Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Sat, 1 Jan 2011 16:20:34 +0100 Subject: [PATCH 034/132] Build: stop updating timestamp of st.h when not needed Use the same approach as other generated headers (a temporary file, compare to the existing, then copy), to avoid touching st.h, so that other dependent objects are not rebuilt, if not needed. It should speed up building when switching git branches, as often config.status or automake are run, causing Makefiles to be recreated. https://bugzilla.gnome.org/show_bug.cgi?id=638453 --- .gitignore | 2 ++ src/Makefile-st.am | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 5a035eb4c..c3669d44c 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,8 @@ src/test-recorder src/test-recorder.ogg src/test-theme src/st.h +src/stamp-st.h +src/stamp-st.h.tmp stamp-h1 tests/run-test.sh xmldocs.make diff --git a/src/Makefile-st.am b/src/Makefile-st.am index 4d5d5476e..579223526 100644 --- a/src/Makefile-st.am +++ b/src/Makefile-st.am @@ -100,11 +100,16 @@ st_source_h = \ st/st-widget.h \ $(NULL) -st.h: Makefile +st.h: stamp-st.h + @true +stamp-st.h: Makefile $(AM_V_GEN) (echo "#define ST_H_INSIDE 1"; \ for name in $(st_source_h); do \ echo "#include <"$$name">"; \ - done; echo "#undef ST_H_INSIDE") > st.h.tmp && mv st.h.tmp st.h + done; echo "#undef ST_H_INSIDE") > $@.tmp && \ + (cmp -s $@.tmp st.h || cp $@.tmp st.h) && \ + rm -f $@.tmp && \ + echo timestamp > $(@F) BUILT_SOURCES += st.h From 24f1e87813cf516b8151cc6112cee03dacbe9d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 2 Dec 2010 17:28:06 +0100 Subject: [PATCH 035/132] clock: Use settings from gsettings-desktop-schemas A key for 12hr/24hr clock format has been added to gsettings-desktop-schemas, so use that instead of the one from the shell clock schema. As the setting can be controlled from the Date and Time panel of gnome-control-center now, drop the temporary preference dialog as well. https://bugzilla.gnome.org/show_bug.cgi?id=633200 --- .gitignore | 3 - data/Makefile.am | 6 +- data/clock-preferences.ui | 188 ------------------ ...nome-shell-clock-preferences.desktop.in.in | 15 -- data/org.gnome.shell.gschema.xml.in | 37 +--- js/Makefile.am | 1 - js/prefs/clockPreferences.js | 97 --------- js/ui/panel.js | 65 ++---- po/POTFILES.in | 2 - src/Makefile.am | 11 +- src/gnome-shell-clock-preferences.in | 24 --- 11 files changed, 23 insertions(+), 426 deletions(-) delete mode 100644 data/clock-preferences.ui delete mode 100644 data/gnome-shell-clock-preferences.desktop.in.in delete mode 100644 js/prefs/clockPreferences.js delete mode 100644 src/gnome-shell-clock-preferences.in diff --git a/.gitignore b/.gitignore index c3669d44c..e043cb850 100644 --- a/.gitignore +++ b/.gitignore @@ -18,8 +18,6 @@ config configure data/gnome-shell.desktop data/gnome-shell.desktop.in -data/gnome-shell-clock-preferences.desktop -data/gnome-shell-clock-preferences.desktop.in data/gschemas.compiled data/org.gnome.shell.gschema.xml data/org.gnome.shell.gschema.valid @@ -46,7 +44,6 @@ src/Makefile src/Makefile.in src/gnomeshell-taskpanel src/gnome-shell -src/gnome-shell-clock-preferences src/run-js-test src/test-recorder src/test-recorder.ogg diff --git a/data/Makefile.am b/data/Makefile.am index d8cb9064c..ece423d24 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -1,5 +1,5 @@ desktopdir=$(datadir)/applications -desktop_DATA = gnome-shell.desktop gnome-shell-clock-preferences.desktop +desktop_DATA = gnome-shell.desktop # We substitute in bindir so it works as an autostart # file when built in a non-system prefix @@ -12,8 +12,6 @@ desktop_DATA = gnome-shell.desktop gnome-shell-clock-preferences.desktop %.desktop:%.desktop.in $(AM_V_GEN) sed s/^_// < $< > $@ || rm $@ -dist_pkgdata_DATA = clock-preferences.ui - imagesdir = $(pkgdatadir)/images dist_images_DATA = \ close-black.svg \ @@ -88,7 +86,6 @@ install-data-local: EXTRA_DIST = \ gnome-shell.desktop.in.in \ - gnome-shell-clock-preferences.desktop.in.in \ $(menu_DATA) \ $(gconfschema_DATA) \ $(shaders_DATA) \ @@ -97,7 +94,6 @@ EXTRA_DIST = \ CLEANFILES = \ gnome-shell.desktop.in \ - gnome-shell-clock-preferences.desktop.in \ $(desktop_DATA) \ $(gsettings_SCHEMAS) \ gschemas.compiled diff --git a/data/clock-preferences.ui b/data/clock-preferences.ui deleted file mode 100644 index 2e22d9aa9..000000000 --- a/data/clock-preferences.ui +++ /dev/null @@ -1,188 +0,0 @@ - - - - - - 5 - Clock Preferences - center - normal - False - - - True - vertical - 2 - - - True - vertical - 18 - - - True - 0 - none - - - True - 6 - 12 - 6 - - - True - 12 - - - _12 hour format - True - True - False - True - True - - - False - False - 0 - - - - - _24 hour format - True - True - False - True - True - 12hr_radio - - - False - False - 1 - - - - - - - - - True - Clock Format - - - - - - - - False - False - 0 - - - - - True - 0 - none - - - True - 6 - 12 - - - True - vertical - 6 - - - Show the _date - True - True - False - True - True - - - 0 - - - - - Show seco_nds - True - True - False - True - True - - - 1 - - - - - - - - - True - Panel Display - - - - - - - - False - False - 1 - - - - - 6 - 1 - - - - - True - end - - - - - - gtk-close - True - True - True - True - - - False - False - 1 - - - - - False - end - 0 - - - - - - prefs_close_button - - - diff --git a/data/gnome-shell-clock-preferences.desktop.in.in b/data/gnome-shell-clock-preferences.desktop.in.in deleted file mode 100644 index 5886dd509..000000000 --- a/data/gnome-shell-clock-preferences.desktop.in.in +++ /dev/null @@ -1,15 +0,0 @@ -[Desktop Entry] -_Name=Clock -_Comment=Customize the panel clock -Exec=@bindir@/gnome-shell-clock-preferences -Icon=gnome-panel-clock -Terminal=false -Type=Application -StartupNotify=true -Categories=GNOME;GTK;Settings;DesktopSettings; -OnlyShowIn=GNOME; -X-GNOME-ShellOnly=true -X-GNOME-Bugzilla-Bugzilla=GNOME -X-GNOME-Bugzilla-Product=gnome-shell -X-GNOME-Bugzilla-Component=general -X-GNOME-Bugzilla-Version=@VERSION@ diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in index 031930a4b..843426853 100644 --- a/data/org.gnome.shell.gschema.xml.in +++ b/data/org.gnome.shell.gschema.xml.in @@ -59,51 +59,18 @@ - - - - "12-hour" - - <_summary>Hour format - <_description> - 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. - - - - - - - - - - '' - <_summary>Custom format of the clock - <_description> - 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. - - false <_summary>Show time with seconds <_description> - If true and format is either "12-hour" or "24-hour", display seconds in time. + If true, display seconds in time. false <_summary>Show date in clock <_description> - If true and format is either "12-hour" or "24-hour", - display date in the clock, in addition to time. + If true, display date in the clock, in addition to time. diff --git a/js/Makefile.am b/js/Makefile.am index 462f81b9b..555be7b19 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -11,7 +11,6 @@ nobase_dist_js_DATA = \ misc/telepathy.js \ misc/utils.js \ perf/core.js \ - prefs/clockPreferences.js \ ui/altTab.js \ ui/appDisplay.js \ ui/appFavorites.js \ diff --git a/js/prefs/clockPreferences.js b/js/prefs/clockPreferences.js deleted file mode 100644 index f35d8e250..000000000 --- a/js/prefs/clockPreferences.js +++ /dev/null @@ -1,97 +0,0 @@ -/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ - -const Gio = imports.gi.Gio; -const GLib = imports.gi.GLib; -const Gtk = imports.gi.Gtk; - -const Lang = imports.lang; -const Signals = imports.signals; - -const Gettext = imports.gettext; - -const FORMAT_KEY = 'format'; -const SHOW_DATE_KEY = 'show-date'; -const SHOW_SECONDS_KEY = 'show-seconds'; - - -function ClockPreferences(uiFile) { - this._init(uiFile); -}; - -ClockPreferences.prototype = { - _init: function(uiFile) { - let builder = new Gtk.Builder(); - builder.add_from_file(uiFile); - - this._dialog = builder.get_object('prefs-dialog'); - this._dialog.connect('response', Lang.bind(this, this._onResponse)); - - this._12hrRadio = builder.get_object('12hr_radio'); - this._24hrRadio = builder.get_object('24hr_radio'); - this._dateCheck = builder.get_object('date_check'); - this._secondsCheck = builder.get_object('seconds_check'); - - delete builder; - - this._settings = new Gio.Settings({ schema: 'org.gnome.shell.clock' }); - this._notifyId = this._settings.connect('changed', - Lang.bind(this, - this._updateDialog)); - - this._12hrRadio.connect('toggled', Lang.bind(this, - function() { - let format = this._12hrRadio.active ? '12-hour' : '24-hour'; - this._settings.set_string(FORMAT_KEY, format); - })); - this._dateCheck.connect('toggled', Lang.bind(this, - function() { - this._settings.set_boolean(SHOW_DATE_KEY, - this._dateCheck.active); - })); - this._secondsCheck.connect('toggled', Lang.bind(this, - function() { - this._settings.set_boolean(SHOW_SECONDS_KEY, - this._secondsCheck.active); - })); - - this._updateDialog(); - }, - - show: function() { - this._dialog.show_all(); - }, - - _updateDialog: function() { - let format = this._settings.get_string(FORMAT_KEY); - this._12hrRadio.active = (format == "12-hour"); - this._24hrRadio.active = (format == "24-hour"); - - this._dateCheck.active = this._settings.get_boolean(SHOW_DATE_KEY); - this._secondsCheck.active = this._settings.get_boolean(SHOW_SECONDS_KEY); - }, - - _onResponse: function() { - this._dialog.destroy(); - this._settings.disconnect(this._notifyId); - this.emit('destroy'); - } -}; -Signals.addSignalMethods(ClockPreferences.prototype); - -function main(params) { - if ('progName' in params) - GLib.set_prgname(params['progName']); - if ('localeDir' in params) - Gettext.bindtextdomain('gnome-shell', params['localeDir']); - - Gtk.init(null, null); - - let clockPrefs = new ClockPreferences(params['uiFile']); - clockPrefs.connect('destroy', - function() { - Gtk.main_quit(); - }); - clockPrefs.show(); - - Gtk.main(); -} diff --git a/js/ui/panel.js b/js/ui/panel.js index e797a36f9..eb994d172 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -40,8 +40,10 @@ const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = { if (Config.HAVE_BLUETOOTH) STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator; -const CLOCK_FORMAT_KEY = 'format'; -const CLOCK_CUSTOM_FORMAT_KEY = 'custom-format'; +// in org.gnome.desktop.interface +const CLOCK_FORMAT_KEY = 'clock-format'; + +// in org.gnome.shell.clock const CLOCK_SHOW_DATE_KEY = 'show-date'; const CLOCK_SHOW_SECONDS_KEY = 'show-seconds'; @@ -492,36 +494,32 @@ function ClockButton() { } ClockButton.prototype = { - __proto__: PanelMenu.Button.prototype, - _init: function() { - PanelMenu.Button.prototype._init.call(this, St.Align.START); - this.menu.addAction(_("Preferences"), Lang.bind(this, this._onPrefs)); + this.actor = new St.Bin({ style_class: 'panel-button', + reactive: true, + can_focus: true, + x_fill: true, + y_fill: false, + track_hover: true }); + this.actor._delegate = this; + this.actor.connect('button-press-event', + Lang.bind(this, this._toggleCalendar)); this._clock = new St.Label(); this.actor.set_child(this._clock); this._calendarPopup = null; + this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' }); this._clockSettings = new Gio.Settings({ schema: 'org.gnome.shell.clock' }); + + this._desktopSettings.connect('changed', Lang.bind(this, this._updateClock)); this._clockSettings.connect('changed', Lang.bind(this, this._updateClock)); // Start the clock this._updateClock(); }, - _onButtonPress: function(actor, event) { - let button = event.get_button(); - let menuShowing = this.menu.isOpen; - let calendarShowing = this._calendarPopup && this._calendarPopup.isOpen; - - if (menuShowing || (button == 3 && !calendarShowing)) - this.menu.toggle(); - else - this._toggleCalendar(); - return true; - }, - closeCalendar: function() { if (!this._calendarPopup || !this._calendarPopup.isOpen) return; @@ -537,24 +535,12 @@ ClockButton.prototype = { this.actor.add_style_pseudo_class('pressed'); }, - _onPrefs: function() { - let args = ['gnome-shell-clock-preferences']; - let p = new Shell.Process({ args: args }); - - p.run(); - }, - _toggleCalendar: function() { if (this._calendarPopup == null) { this._calendarPopup = new CalendarPopup(); this._calendarPopup.actor.hide(); } - if (this.menu.isOpen && !this._calendarPopup.isOpen) { - this.menu.close(); - return; - } - if (!this._calendarPopup.isOpen) this.openCalendar(); else @@ -562,23 +548,13 @@ ClockButton.prototype = { }, _updateClock: function() { - let format = this._clockSettings.get_string(CLOCK_FORMAT_KEY); + let format = this._desktopSettings.get_string(CLOCK_FORMAT_KEY); let showDate = this._clockSettings.get_boolean(CLOCK_SHOW_DATE_KEY); let showSeconds = this._clockSettings.get_boolean(CLOCK_SHOW_SECONDS_KEY); let clockFormat; switch (format) { - case 'unix': - // force updates every second - showSeconds = true; - clockFormat = '%s'; - break; - case 'custom': - // force updates every second - showSeconds = true; - clockFormat = this._clockSettings.get_string(CLOCK_CUSTOM_FORMAT_KEY); - break; - case '24-hour': + case '24h': if (showDate) /* Translators: This is the time format with date used in 24-hour mode. */ @@ -590,7 +566,7 @@ ClockButton.prototype = { clockFormat = showSeconds ? _("%a %R:%S") : _("%a %R"); break; - case '12-hour': + case '12h': default: if (showDate) /* Translators: This is a time format with date used @@ -803,9 +779,6 @@ Panel.prototype = { this._clockButton = new ClockButton(); this._centerBox.add(this._clockButton.actor, { y_fill: true }); - let clockMenuManager = new PopupMenu.PopupMenuManager(this); - clockMenuManager.addMenu(this._clockButton.menu); - /* right */ // System status applets live in statusBox, while legacy tray icons diff --git a/po/POTFILES.in b/po/POTFILES.in index b0e2831cb..5ac0ba766 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,8 +1,6 @@ data/gnome-shell.desktop.in.in -data/gnome-shell-clock-preferences.desktop.in.in data/org.gnome.shell.gschema.xml.in data/org.gnome.accessibility.magnifier.gschema.xml.in -[type: gettext/glade]data/clock-preferences.ui js/ui/appDisplay.js js/ui/appFavorites.js js/ui/dash.js diff --git a/src/Makefile.am b/src/Makefile.am index e79a486fe..fa9804b72 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -8,7 +8,7 @@ noinst_PROGRAMS = .AUTOPARALLEL: -bin_SCRIPTS = gnome-shell gnome-shell-clock-preferences +bin_SCRIPTS = gnome-shell gnome-shell: gnome-shell.in $(AM_V_GEN) sed -e "s|@MUTTER_BIN_DIR[@]|$(MUTTER_BIN_DIR)|" \ @@ -23,15 +23,6 @@ gnome-shell: gnome-shell.in CLEANFILES += gnome-shell EXTRA_DIST += gnome-shell.in -gnome-shell-clock-preferences: gnome-shell-clock-preferences.in - $(AM_V_GEN) sed -e "s|@datadir[@]|$(datadir)|" \ - -e "s|@pkgdatadir[@]|$(pkgdatadir)|" \ - -e "s|@localedir[@]|$(datadir)/locale|" \ - -e "s|@GJS_CONSOLE[@]|$(GJS_CONSOLE)|" \ - $< > $@ && chmod a+x $@ -CLEANFILES += gnome-shell-clock-preferences -EXTRA_DIST += gnome-shell-clock-preferences.in - include Makefile-gdmuser.am include Makefile-st.am include Makefile-tray.am diff --git a/src/gnome-shell-clock-preferences.in b/src/gnome-shell-clock-preferences.in deleted file mode 100644 index 76391a8e0..000000000 --- a/src/gnome-shell-clock-preferences.in +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/sh - -if [ -f "$0.in" ] -then - scriptDir="`dirname $0`" - uiDir="$scriptDir/../data" - jsDir="$scriptDir/../js" - schemaDir="$scriptDir/../data" -else - uiDir="@pkgdatadir@" - jsDir="@pkgdatadir@/js" - schemaDir="@datadir@/glib-2.0/schemas" -fi - -progName="`basename $0`" -localeDir="@localedir@" -uiFile="$uiDir/clock-preferences.ui" -export GJS_PATH="$jsDir" -export GSETTINGS_SCHEMA_DIR="$schemaDir" - -@GJS_CONSOLE@ --js-version 1.8 -c "const ClockPreferences = imports.prefs.clockPreferences; -ClockPreferences.main({ progName: '$progName', - uiFile: '$uiFile', - localeDir: '$localeDir' });" From dd0f72169451fe4d296908e07ee3389a570c6aa3 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Tue, 4 Jan 2011 17:19:05 +0100 Subject: [PATCH 036/132] calendar: Use AlignConstraint to center the popup This fixes warnings like: (mutter:12238): Clutter-WARNING **: The actor 'calendarPopup' is currently inside an allocation cycle; calling clutter_actor_queue_relayout() is not recommended https://bugzilla.gnome.org/show_bug.cgi?id=637829 --- js/ui/panel.js | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/js/ui/panel.js b/js/ui/panel.js index eb994d172..4439d3d4d 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -977,6 +977,9 @@ function CalendarPopup() { CalendarPopup.prototype = { _init: function() { let panelActor = Main.panel.actor; + let alignConstraint = new Clutter.AlignConstraint({ source: panelActor, + align_axis: Clutter.AlignAxis.X_AXIS, + factor: 0.5 }); this.actor = new St.Bin({ name: 'calendarPopup' }); @@ -988,7 +991,7 @@ CalendarPopup.prototype = { Main.chrome.addActor(this.actor, { visibleInOverview: true, affectsStruts: false }); this.actor.y = (panelActor.y + panelActor.height - this.actor.height); - this.calendar.actor.connect('notify::width', Lang.bind(this, this._centerPopup)); + this.actor.add_constraint(alignConstraint); }, show: function() { @@ -1001,7 +1004,6 @@ CalendarPopup.prototype = { // Reset the calendar to today's date this.calendar.setDate(new Date()); - this._centerPopup(); this.actor.lower(panelActor); this.actor.show(); Tweener.addTween(this.actor, @@ -1025,10 +1027,5 @@ CalendarPopup.prototype = { onComplete: function() { this.actor.hide(); }, onCompleteScope: this }); - }, - - _centerPopup: function() { - let panelActor = Main.panel.actor; - this.actor.x = Math.round(panelActor.x + (panelActor.width - this.actor.width) / 2); } }; From ad67225bf826bf51becdb815cf4bad2f95fa082e Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Tue, 4 Jan 2011 19:43:32 +0100 Subject: [PATCH 037/132] =?UTF-8?q?Updated=20Norwegian=20bokm=C3=A5l=20tra?= =?UTF-8?q?nslation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- po/nb.po | 327 +++++++++++++++++++++---------------------------------- 1 file changed, 122 insertions(+), 205 deletions(-) diff --git a/po/nb.po b/po/nb.po index 4bbcd92e3..675252d5e 100644 --- a/po/nb.po +++ b/po/nb.po @@ -7,16 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell 2.91.x\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" -"PO-Revision-Date: 2010-12-30 21:34+0100\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2011-01-04 19:39+0100\n" +"PO-Revision-Date: 2011-01-04 19:43+0100\n" "Last-Translator: Torstein Adolf Winterseth \n" "Language-Team: Norwegian Bokmål \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: \n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.1\n" @@ -28,14 +27,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Vindushåndtering og oppstart av programmer" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Klokke" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Tilpass klokken på panelet" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -45,56 +36,44 @@ msgstr "" "F2-dialogen." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Egendefinert format for klokken" - -#: ../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" -msgstr "Timeformat" +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:11 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 " @@ -106,42 +85,42 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Vis dato i klokken" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show the week date in the calendar" msgstr "Vis dato for uken i kalender" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show time with seconds" msgstr "Vis tid med sekunder" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 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:16 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:17 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:18 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:19 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 " @@ -149,29 +128,11 @@ 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 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "Uuider på utvidelser som skal slås av" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "Om det skal samles statistikk om bruk av programmer" @@ -300,55 +261,28 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Klokkeformat" - -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Brukervalg for klokke" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Panelvisning" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Vis seku_nder" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Vis _dato" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_12-timers format" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_24-timers format" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 msgid "All" -msgstr "" +msgstr "Alle" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "PROGRAMMER" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "BRUKERVALG" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Nytt vindu" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Fjern fra favoritter" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Legg til i favoritter" @@ -413,58 +347,54 @@ msgid "Applications" msgstr "Programmer" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 +#: ../js/ui/panel.js:476 #, c-format msgid "Quit %s" msgstr "Avslutt %s" -#: ../js/ui/panel.js:499 -msgid "Preferences" -msgstr "Brukervalg" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:561 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R.%S" -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:562 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:590 +#: ../js/ui/panel.js:566 msgid "%a %R:%S" msgstr "%a %R.%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/panel.js:567 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:574 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l.%M.%S %p" -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:575 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:603 +#: ../js/ui/panel.js:579 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %p" -#: ../js/ui/panel.js:604 +#: ../js/ui/panel.js:580 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:749 +#: ../js/ui/panel.js:725 msgid "Activities" msgstr "Aktiviteter" @@ -583,135 +513,125 @@ msgstr "Høy kontrast" msgid "Large Text" msgstr "Stor tekst" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 msgid "Bluetooth" -msgstr "" +msgstr "Bluetooth" #: ../js/ui/status/bluetooth.js:55 msgid "Visibility" -msgstr "" +msgstr "Synlighet" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." -msgstr "" +msgstr "Send filer til enhet..." -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." -msgstr "" +msgstr "Sett opp en ny enhet..." #: ../js/ui/status/bluetooth.js:94 -#, fuzzy -#| msgid "Power Settings" msgid "Bluetooth Settings" -msgstr "Innstillinger for strøm" +msgstr "Innstillinger for Bluetooth" -#: ../js/ui/status/bluetooth.js:151 -#, fuzzy -#| msgid "Connect to..." +#: ../js/ui/status/bluetooth.js:185 msgid "Connection" -msgstr "Koble til..." +msgstr "Tilkobling" -#: ../js/ui/status/bluetooth.js:187 -#, fuzzy -#| msgid "Suspend..." +#: ../js/ui/status/bluetooth.js:221 msgid "Send Files..." -msgstr "Hvilemodus..." +msgstr "Send filer..." -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:226 msgid "Browse Files..." -msgstr "" +msgstr "Bla gjennom filer..." -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:235 msgid "Error browsing device" -msgstr "" +msgstr "Feil under lesing av enhet" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:236 #, c-format msgid "The requested device cannot be browsed, error is '%s'" -msgstr "" +msgstr "Kan ikke bla gjennom forespurt enhet. Feilen er «%s»" -#: ../js/ui/status/bluetooth.js:210 -#, fuzzy -#| msgid "Power Settings" +#: ../js/ui/status/bluetooth.js:244 msgid "Keyboard Settings" -msgstr "Innstillinger for strøm" +msgstr "Innstillinger for tastatur" -#: ../js/ui/status/bluetooth.js:215 -#, fuzzy -#| msgid "Power Settings" +#: ../js/ui/status/bluetooth.js:249 msgid "Mouse Settings" -msgstr "Innstillinger for strøm" +msgstr "Innstillinger for mus" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "Innstillinger for lyd" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 msgid "Bluetooth Agent" -msgstr "" +msgstr "Bluetooth-agent" -#: ../js/ui/status/bluetooth.js:328 +#: ../js/ui/status/bluetooth.js:362 #, c-format msgid "Authorization request from %s" -msgstr "" - -#: ../js/ui/status/bluetooth.js:334 -#, c-format -msgid "Device %s wants access to the service '%s'" -msgstr "" - -#: ../js/ui/status/bluetooth.js:336 -msgid "Always grant access" -msgstr "" - -#: ../js/ui/status/bluetooth.js:337 -msgid "Grant this time only" -msgstr "" - -#: ../js/ui/status/bluetooth.js:338 -msgid "Reject" -msgstr "" +msgstr "Forespørsel om autorisering fra %s" #: ../js/ui/status/bluetooth.js:368 #, c-format -msgid "Pairing confirmation for %s" -msgstr "" +msgid "Device %s wants access to the service '%s'" +msgstr "Enhet %s vil ha tilgang til tjenesten «%s»" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:370 +msgid "Always grant access" +msgstr "Alltid gi tilgang" + +#: ../js/ui/status/bluetooth.js:371 +msgid "Grant this time only" +msgstr "Gi tilgang kun denne ene gangen" + +#: ../js/ui/status/bluetooth.js:372 +msgid "Reject" +msgstr "Avvis" + +#: ../js/ui/status/bluetooth.js:402 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Bekreftelse for tilkobling for %s" + +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 #, c-format msgid "Device %s wants to pair with this computer" -msgstr "" - -#: ../js/ui/status/bluetooth.js:375 -#, c-format -msgid "Please confirm whether the PIN '%s' matches the one on the device." -msgstr "" - -#: ../js/ui/status/bluetooth.js:377 -msgid "Matches" -msgstr "" - -#: ../js/ui/status/bluetooth.js:378 -msgid "Does not match" -msgstr "" - -#: ../js/ui/status/bluetooth.js:401 -#, c-format -msgid "Pairing request for %s" -msgstr "" +msgstr "Enhet %s vil koble seg sammen med denne datamaskinen" #: ../js/ui/status/bluetooth.js:409 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Vennligst bekreft om PIN «%s» er lik den som brukes på enheten." + +#: ../js/ui/status/bluetooth.js:411 +msgid "Matches" +msgstr "Stemmer overens" + +#: ../js/ui/status/bluetooth.js:412 +msgid "Does not match" +msgstr "Stemmer ikke overens" + +#: ../js/ui/status/bluetooth.js:435 +#, c-format +msgid "Pairing request for %s" +msgstr "Forespørsel om tilkobling for %s" + +#: ../js/ui/status/bluetooth.js:443 msgid "Please enter the PIN mentioned on the device." -msgstr "" +msgstr "Vennligst oppgi PIN som oppgitt på enheten." -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:459 msgid "OK" -msgstr "" +msgstr "OK" -#: ../js/ui/status/bluetooth.js:426 +#: ../js/ui/status/bluetooth.js:460 msgid "Cancel" -msgstr "" +msgstr "Avbryt" #: ../js/ui/status/power.js:85 msgid "Power Settings" @@ -828,7 +748,7 @@ msgstr "%s er opptatt." #. 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:665 #, no-c-format msgid "Sent at %X on %A" msgstr "Sendt %X på %A" @@ -880,32 +800,32 @@ msgstr[1] "%u innganger" msgid "System Sounds" msgstr "Systemlyder" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "Mindre enn ett minutt siden" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1160 #, 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:1164 +#: ../src/shell-global.c:1165 #, 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:1169 +#: ../src/shell-global.c:1170 #, 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:1174 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -935,6 +855,3 @@ msgstr "Søk" #, c-format msgid "%1$s: %2$s" msgstr "%1$s: %2$s" - -#~ msgid "What's using power..." -#~ msgstr "Hva bruker strøm..." From 7beb7e0f65c6f66daebd307c492381249ddd41be Mon Sep 17 00:00:00 2001 From: Vincent Untz Date: Wed, 5 Jan 2011 10:32:44 +0100 Subject: [PATCH 038/132] gnome-shell.in: Really never add empty elements to LD_LIBRARY_PATH This complements the fix from c6eb2761, to make sure that we don't use the pre-existing $LD_LIBRARY_PATH if it's set but empty. Both commits fix CVE-2010-4000. https://bugzilla.gnome.org/show_bug.cgi?id=638728 --- src/gnome-shell.in | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gnome-shell.in b/src/gnome-shell.in index 2abd7d5cc..e422adb8d 100755 --- a/src/gnome-shell.in +++ b/src/gnome-shell.in @@ -152,7 +152,7 @@ def start_dconf_await_service(): # dconf is linked without libtool, so unlike other GNOME modules, # won't have an embedded rpath for its library directory. env = dict(os.environ) - if 'LD_LIBRARY_PATH' in env: + if 'LD_LIBRARY_PATH' in env and env['LD_LIBRARY_PATH']: ld_library_path = '@libdir@:' + env['LD_LIBRARY_PATH'] else: ld_library_path = '@libdir@' @@ -246,7 +246,7 @@ def start_shell(perf_output=None): if pkgconfig.returncode == 0: mozjs_libdir = re.sub('-(sdk|devel)', '', mozjs_sdkdir) if os.path.exists(mozjs_libdir + '/libmozjs.so'): - if 'LD_LIBRARY_PATH' in env: + if 'LD_LIBRARY_PATH' in env and env['LD_LIBRARY_PATH']: ld_library_path = env['LD_LIBRARY_PATH'] + ':' + mozjs_libdir else: ld_library_path = mozjs_libdir From 62507c975919fc9344077cfda8baee8849b44dca Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Wed, 5 Jan 2011 15:39:36 +0100 Subject: [PATCH 039/132] Add a facility to show the stage without grabbing When the user is doing a drag-and-drop, we want to temporarily show the stage to allow them to drag to a different window. But we're not "really" in the overview, and getting a grab would conflict with the X client doing the drag and drop. So add a showTemporarily()/hideTemporarily() pair of methods that show the overview without grabbing. This adds a lot more possibilities for asynchronous race conditions, so rework the code to be more robust against multiple calls to show*() and hide*(). The interpretation is now that all calls to show*() and hide*() affect the state, but if we have conflicting calls to show and hide we wait until the current animation is finished before correcting to the right visual state. https://bugzilla.gnome.org/show_bug.cgi?id=601731 --- js/ui/overview.js | 151 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 123 insertions(+), 28 deletions(-) diff --git a/js/ui/overview.js b/js/ui/overview.js index 4c3e21cb1..56da40adb 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -6,6 +6,7 @@ const Mainloop = imports.mainloop; const Signals = imports.signals; const Lang = imports.lang; const St = imports.gi.St; +const Shell = imports.gi.Shell; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -135,7 +136,10 @@ Overview.prototype = { this._workspacesDisplay = null; - this.visible = false; + this.visible = false; // animating to overview, in overview, animating out + this._shown = false; // show() and not hide() + this._shownTemporarily = false; // showTemporarily() and not hideTemporarily() + this._modal = false; // have a modal grab this.animationInProgress = false; this._hideInProgress = false; @@ -267,11 +271,23 @@ Overview.prototype = { return [this.workspaces.actor.x, this.workspaces.actor.y]; }, + // show: + // + // Animates the overview visible and grabs mouse and keyboard input show : function() { - if (this.visible) + if (this._shown) return; + // Do this manually instead of using _syncInputMode, to handle failure if (!Main.pushModal(this.viewSelector.actor)) return; + this._modal = true; + this._animateVisible(); + this._shown = true; + }, + + _animateVisible: function() { + if (this.visible || this.animationInProgress) + return; this.visible = true; this.animationInProgress = true; @@ -337,8 +353,102 @@ Overview.prototype = { this.emit('showing'); }, + // showTemporarily: + // + // Animates the overview visible without grabbing mouse and keyboard input; + // if show() has already been called, this has no immediate effect, but + // will result in the overview not being hidden until hideTemporarily() is + // called. + showTemporarily: function() { + if (this._shownTemporarily) + return; + + this._syncInputMode(); + this._animateVisible(); + this._shownTemporarily = true; + }, + + // hide: + // + // Reverses the effect of show() hide: function() { - if (!this.visible || this._hideInProgress) + if (!this._shown) + return; + + if (!this._shownTemporarily) + this._animateNotVisible(); + + this._shown = false; + this._syncInputMode(); + }, + + // hideTemporarily: + // + // Reverses the effect of showTemporarily() + hideTemporarily: function() { + if (!this._shownTemporarily) + return; + + if (!this._shown) + this._animateNotVisible(); + + this._shownTemporarily = false; + this._syncInputMode(); + }, + + toggle: function() { + if (this._shown) + this.hide(); + else + this.show(); + }, + + /** + * getWorkspacesForWindow: + * @metaWindow: A #MetaWindow + * + * Returns the Workspaces object associated with the given window. + * This method is not be accessible if the overview is not open + * and will return %null. + */ + getWorkspacesForWindow: function(metaWindow) { + return this.workspaces; + }, + + //// Private methods //// + + _syncInputMode: function() { + // We delay input mode changes during animation so that when removing the + // overview we don't have a problem with the release of a press/release + // going to an application. + if (this.animationInProgress) + return; + + if (this._shown) { + if (!this._modal) { + if (Main.pushModal(this._dash.actor)) + this._modal = true; + else + this.hide(); + } + } else if (this._shownTemporarily) { + if (this._modal) { + Main.popModal(this._dash.actor); + this._modal = false; + } + global.stage_input_mode = Shell.StageInputMode.FULLSCREEN; + } else { + if (this._modal) { + Main.popModal(this._dash.actor); + this._modal = false; + } + else if (global.stage_input_mode == Shell.StageInputMode.FULLSCREEN) + global.stage_input_mode = Shell.StageInputMode.NORMAL; + } + }, + + _animateNotVisible: function() { + if (!this.visible || this.animationInProgress) return; this.animationInProgress = true; @@ -382,36 +492,17 @@ Overview.prototype = { this.emit('hiding'); }, - toggle: function() { - if (this.visible) - this.hide(); - else - this.show(); - }, - - /** - * getWorkspacesForWindow: - * @metaWindow: A #MetaWindow - * - * Returns the Workspaces object associated with the given window. - * This method is not be accessible if the overview is not open - * and will return %null. - */ - getWorkspacesForWindow: function(metaWindow) { - return this.workspaces; - }, - - //// Private methods //// - _showDone: function() { - if (this._hideInProgress) - return; - this.animationInProgress = false; this._desktopFade.hide(); this._coverPane.lower_bottom(); this.emit('shown'); + // Handle any calls to hide* while we were showing + if (!this._shown && !this._shownTemporarily) + this._animateNotVisible(); + + this._syncInputMode(); }, _hideDone: function() { @@ -434,8 +525,12 @@ Overview.prototype = { this._coverPane.lower_bottom(); - Main.popModal(this.viewSelector.actor); this.emit('hidden'); + // Handle any calls to show* while we were hiding + if (this._shown || this._shownTemporarily) + this._animateVisible(); + + this._syncInputMode(); } }; Signals.addSignalMethods(Overview.prototype); From ceedc7e32c4f993574378ddc532465ef2729337a Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 5 Jan 2011 15:47:27 +0100 Subject: [PATCH 040/132] Implement cross overview drag & drop The gnome-panel allows the user to hover over a tasklist entry while draging to activate a minimized or obscured window and drop onto it. Implement a similar behaviour by allowing draging to the activities button or the hotcorner (and thus opening the overview), which allows the user to activate any window (even on different workspaces) as a drop target. https://bugzilla.gnome.org/show_bug.cgi?id=601731 --- js/Makefile.am | 3 +- js/ui/main.js | 3 + js/ui/overview.js | 73 +++++++++++++++++++ js/ui/panel.js | 68 ++++++++++++++--- js/ui/workspacesView.js | 3 + js/ui/xdndHandler.js | 130 +++++++++++++++++++++++++++++++++ src/gnome-shell-plugin.c | 19 +++-- src/shell-global-private.h | 2 + src/shell-global.c | 145 +++++++++++++++++++++++++++++++++++++ src/shell-global.h | 2 + src/shell-marshal.list | 1 + 11 files changed, 433 insertions(+), 16 deletions(-) create mode 100644 js/ui/xdndHandler.js diff --git a/js/Makefile.am b/js/Makefile.am index 555be7b19..49de2ff2a 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -56,4 +56,5 @@ nobase_dist_js_DATA = \ ui/windowManager.js \ ui/workspace.js \ ui/workspacesView.js \ - ui/workspaceSwitcherPopup.js + ui/workspaceSwitcherPopup.js \ + ui/xdndHandler.js diff --git a/js/ui/main.js b/js/ui/main.js index 4a8f8ef2c..e08781bfc 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -37,6 +37,7 @@ const ShellDBus = imports.ui.shellDBus; const TelepathyClient = imports.ui.telepathyClient; const WindowManager = imports.ui.windowManager; const Magnifier = imports.ui.magnifier; +const XdndHandler = imports.ui.xdndHandler; const StatusIconDispatcher = imports.ui.statusIconDispatcher; const DEFAULT_BACKGROUND_COLOR = new Clutter.Color(); @@ -60,6 +61,7 @@ let modalCount = 0; let modalActorFocusStack = []; let uiGroup = null; let magnifier = null; +let xdndHandler = null; let statusIconDispatcher = null; let _errorLogStack = []; let _startDate; @@ -129,6 +131,7 @@ function start() { global.stage.add_actor(uiGroup); placesManager = new PlaceDisplay.PlacesManager(); + xdndHandler = new XdndHandler.XdndHandler(); overview = new Overview.Overview(); chrome = new Chrome.Chrome(); magnifier = new Magnifier.Magnifier(); diff --git a/js/ui/overview.js b/js/ui/overview.js index 56da40adb..bfabcb3d2 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -9,9 +9,11 @@ const St = imports.gi.St; const Shell = imports.gi.Shell; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; +const Gdk = imports.gi.Gdk; const AppDisplay = imports.ui.appDisplay; const Dash = imports.ui.dash; +const DND = imports.ui.dnd; const DocDisplay = imports.ui.docDisplay; const GenericDisplay = imports.ui.genericDisplay; const Lightbox = imports.ui.lightbox; @@ -30,6 +32,8 @@ const ANIMATION_TIME = 0.25; const DASH_SPLIT_FRACTION = 0.1; +const DND_WINDOW_SWITCH_TIMEOUT = 1250; + function Source() { this._init(); } @@ -178,9 +182,72 @@ Overview.prototype = { this._coverPane.lower_bottom(); + // XDND + this._dragMonitor = { + dragMotion: Lang.bind(this, this._onDragMotion) + }; + + Main.xdndHandler.connect('drag-begin', Lang.bind(this, this._onDragBegin)); + Main.xdndHandler.connect('drag-end', Lang.bind(this, this._onDragEnd)); + + this._windowSwitchTimeoutId = 0; + this._windowSwitchTimestamp = 0; + this._lastActiveWorkspaceIndex = -1; + this._needsFakePointerEvent = false; + this.workspaces = null; }, + _onDragBegin: function() { + DND.addDragMonitor(this._dragMonitor); + // Remember the workspace we started from + this._lastActiveWorkspaceIndex = global.screen.get_active_workspace_index(); + }, + + _onDragEnd: function(time) { + // In case the drag was canceled while in the overview + // we have to go back to where we started and hide + // the overview + if (this._shownTemporarily) { + global.screen.get_workspace_by_index(this._lastActiveWorkspaceIndex).activate(time); + this.hideTemporarily(); + } + + DND.removeMonitor(this._dragMonitor); + }, + + _fakePointerEvent: function() { + let display = Gdk.Display.get_default(); + let deviceManager = display.get_device_manager(); + let pointer = deviceManager.get_client_pointer(); + let [screen, pointerX, pointerY] = display.get_device_state(pointer); + + display.warp_device(pointer, screen, pointerX, pointerY); + }, + + _onDragMotion: function(dragEvent) { + if (this._windowSwitchTimeoutId != 0) { + Mainloop.source_remove(this._windowSwitchTimeoutId); + this._windowSwitchTimeoutId = 0; + this._needsFakePointerEvent = false; + } + + if (dragEvent.targetActor && + dragEvent.targetActor._delegate && + dragEvent.targetActor._delegate.metaWindow) { + this._windowSwitchTimestamp = global.get_current_time(); + this._windowSwitchTimeoutId = Mainloop.timeout_add(DND_WINDOW_SWITCH_TIMEOUT, + Lang.bind(this, function() { + this._needsFakePointerEvent = true; + Main.activateWindow(dragEvent.targetActor._delegate.metaWindow, + this._windowSwitchTimestamp); + this.hideTemporarily(); + })); + } + + return DND.DragMotionResult.CONTINUE; + }, + _getDesktopClone: function() { let windows = global.get_window_actors().filter(function(w) { return w.meta_window.get_window_type() == Meta.WindowType.DESKTOP; @@ -531,6 +598,12 @@ Overview.prototype = { this._animateVisible(); this._syncInputMode(); + + // Fake a pointer event if requested + if (this._needsFakePointerEvent) { + this._fakePointerEvent(); + this._needsFakePointerEvent = false; + } } }; Signals.addSignalMethods(Overview.prototype); diff --git a/js/ui/panel.js b/js/ui/panel.js index 4439d3d4d..4fe60a95d 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -26,6 +26,8 @@ const PANEL_ICON_SIZE = 24; const HOT_CORNER_ACTIVATION_TIMEOUT = 0.5; +const BUTTON_DND_ACTIVATION_TIMEOUT = 250; + const ANIMATED_ICON_UPDATE_TIMEOUT = 100; const SPINNER_UPDATE_TIMEOUT = 130; const SPINNER_SPEED = 0.02; @@ -728,7 +730,20 @@ Panel.prototype = { reactive: true, can_focus: true }); this.button.set_child(label); - + this.button._delegate = this.button; + this.button._xdndTimeOut = 0; + this.button.handleDragOver = Lang.bind(this, + function(source, actor, x, y, time) { + if (source == Main.xdndHandler) { + if (this.button._xdndTimeOut != 0) + Mainloop.source_remove(this.button._xdndTimeOut); + this.button._xdndTimeOut = Mainloop.timeout_add(BUTTON_DND_ACTIVATION_TIMEOUT, + Lang.bind(this, + function() { + this._xdndShowOverview(actor); + })); + } + }); this._leftBox.add(this.button); // We use this flag to mark the case where the user has entered the @@ -766,6 +781,18 @@ Panel.prototype = { this._hotCorner.connect('leave-event', Lang.bind(this, this._onHotCornerLeft)); + this._hotCorner._delegate = this._hotCorner; + this._hotCorner.handleDragOver = Lang.bind(this, + function(source, actor, x, y, time) { + if (source == Main.xdndHandler) { + if(!Main.overview.visible && !Main.overview.animationInProgress) { + this.rippleAnimation(); + Main.overview.showTemporarily(); + Main.overview.beginItemDrag(actor); + } + } + }); + this._boxContainer.add_actor(this._hotCornerEnvirons); this._boxContainer.add_actor(this._hotCorner); @@ -821,6 +848,25 @@ Panel.prototype = { Main.chrome.addActor(this.actor, { visibleInOverview: true }); }, + _xdndShowOverview: function (actor) { + let [x, y, mask] = global.get_pointer(); + let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.REACTIVE, x, y); + + if (pickedActor != this.button) { + Mainloop.source_remove(this.button._xdndTimeOut); + this.button._xdndTimeOut = 0; + return; + } + + if(!Main.overview.visible && !Main.overview.animationInProgress) { + Main.overview.showTemporarily(); + Main.overview.beginItemDrag(actor); + } + + Mainloop.source_remove(this.button._xdndTimeOut); + this.button._xdndTimeOut = 0; + }, + startStatusArea: function() { for (let i = 0; i < STANDARD_TRAY_ICON_ORDER.length; i++) { let role = STANDARD_TRAY_ICON_ORDER[i]; @@ -915,6 +961,17 @@ Panel.prototype = { Main.uiGroup.add_actor(ripple); }, + rippleAnimation: function() { + // Show three concentric ripples expanding outwards; the exact + // parameters were found by trial and error, so don't look + // for them to make perfect sense mathematically + + // delay time scale opacity => scale opacity + this._addRipple(0.0, 0.83, 0.25, 1.0, 1.5, 0.0); + this._addRipple(0.05, 1.0, 0.0, 0.7, 1.25, 0.0); + this._addRipple(0.35, 1.0, 0.0, 0.3, 1, 0.0); + }, + _onHotCornerEntered : function() { if (this._menus.grabbed) return false; @@ -923,14 +980,7 @@ Panel.prototype = { if (!Main.overview.animationInProgress) { this._hotCornerActivationTime = Date.now() / 1000; - // Show three concentric ripples expanding outwards; the exact - // parameters were found by trial and error, so don't look - // for them to make perfect sense mathematically - - // delay time scale opacity => scale opacity - this._addRipple(0.0, 0.83, 0.25, 1.0, 1.5, 0.0); - this._addRipple(0.05, 1.0, 0.0, 0.7, 1.25, 0.0); - this._addRipple(0.35, 1.0, 0.0, 0.3, 1, 0.0); + this.rippleAnimation(); Main.overview.toggle(); } } diff --git a/js/ui/workspacesView.js b/js/ui/workspacesView.js index 678a9e087..747800391 100644 --- a/js/ui/workspacesView.js +++ b/js/ui/workspacesView.js @@ -644,6 +644,9 @@ WorkspacesView.prototype = { }, _onDragMotion: function(dragEvent) { + if (Main.overview.animationInProgress) + return DND.DragMotionResult.CONTINUE; + let primary = global.get_primary_monitor(); let activeWorkspaceIndex = global.screen.get_active_workspace_index(); diff --git a/js/ui/xdndHandler.js b/js/ui/xdndHandler.js new file mode 100644 index 000000000..02755591f --- /dev/null +++ b/js/ui/xdndHandler.js @@ -0,0 +1,130 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +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() { + this._init(); +} + +XdndHandler.prototype = { + _init: function() { + // Used to display a clone of the cursor window when the + // window group is hidden (like it happens in the overview) + this._cursorWindowClone = null; + + // Used as a drag actor in case we don't have a cursor window clone + this._dummy = new Clutter.Rectangle({ width: 1, height: 1, opacity: 0 }); + global.stage.add_actor(this._dummy); + this._dummy.hide(); + + // Mutter delays the creation of the output window as long + // as possible to avoid flicker. In case a plugin wants to + // access it directly it has to connect to the stage's show + // signal. (see comment in compositor.c:meta_compositor_manage_screen) + global.stage.connect('show', function () { + global.init_xdnd(); + return false; + }); + + global.connect('xdnd-enter', Lang.bind(this, this._onEnter)); + global.connect('xdnd-position-changed', Lang.bind(this, this._onPositionChanged)); + global.connect('xdnd-leave', Lang.bind(this, this._onLeave)); + + this._windowGroupVisibilityHandlerId = 0; + }, + + // Called when the user cancels the drag (i.e release the button) + _onLeave: function() { + if (this._windowGroupVisibilityHandlerId != 0) { + Mainloop.source_remove(this._windowGroupVisibilityHandlerId); + this._windowGroupVisibilityHandlerId = 0; + } + this.emit('drag-end'); + }, + + _onEnter: function() { + this._windowGroupVisibilityHandlerId = + global.window_group.connect('notify::visible', + Lang.bind(this, this._onWindowGroupVisibilityChanged)); + + this.emit('drag-begin', global.get_current_time()); + }, + + _onWindowGroupVisibilityChanged: function() { + if (!global.window_group.visible) { + if (this._cursorWindowClone) + return; + + let windows = global.get_window_actors(); + let cursorWindow = windows[windows.length - 1]; + + // FIXME: more reliable way? + if (!cursorWindow.is_override_redirect()) + return; + + let constraint_x = new Clutter.BindConstraint({ coordinate : Clutter.BindCoordinate.X, + source: cursorWindow}); + let constraint_y = new Clutter.BindConstraint({ coordinate : Clutter.BindCoordinate.Y, + source: cursorWindow}); + + this._cursorWindowClone = new Clutter.Clone({ source: cursorWindow }); + global.overlay_group.add_actor(this._cursorWindowClone); + Shell.util_set_hidden_from_pick(this._cursorWindowClone, true); + + // Make sure that the clone has the same position as the source + this._cursorWindowClone.add_constraint(constraint_x); + this._cursorWindowClone.add_constraint(constraint_y); + } else { + if (this._cursorWindowClone) + { + this._cursorWindowClone.destroy(); + this._cursorWindowClone = null; + } + } + }, + + _onPositionChanged: function(obj, x, y) { + let pickedActor = global.stage.get_actor_at_pos(Clutter.PickMode.ALL, x, y); + + // Make sure that the cursor window is on top + if (this._cursorWindowClone) + this._cursorWindowClone.raise_top(); + + let dragEvent = { + x: x, + y: y, + dragActor: this._cursorWindowClone ? this._cursorWindowClone : this._dummy, + source: this, + targetActor: pickedActor + }; + + for (let i = 0; i < DND.dragMonitors.length; i++) { + let motionFunc = DND.dragMonitors[i].dragMotion; + if (motionFunc) { + let result = motionFunc(dragEvent); + if (result != DND.DragMotionResult.CONTINUE) + return; + } + } + + while (pickedActor) { + if (pickedActor._delegate && pickedActor._delegate.handleDragOver) { + let result = pickedActor._delegate.handleDragOver(this, + dragEvent.dragActor, + x, + y, + global.get_current_time()); + if (result != DND.DragMotionResult.CONTINUE) + return; + } + pickedActor = pickedActor.get_parent(); + } + } +} + +Signals.addSignalMethods(XdndHandler.prototype); diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index ec23bf317..50e2c5cbf 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -113,6 +113,8 @@ struct _GnomeShellPlugin int glx_error_base; int glx_event_base; guint have_swap_event : 1; + + ShellGlobal *global; }; struct _GnomeShellPluginClass @@ -320,7 +322,6 @@ gnome_shell_plugin_start (MetaPlugin *plugin) int status; const char *shell_js; char **search_path; - ShellGlobal *global; const char *glx_extensions; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); @@ -379,10 +380,10 @@ gnome_shell_plugin_start (MetaPlugin *plugin) gvc_muted_debug_log_handler, NULL); /* Initialize the global object here. */ - global = shell_global_get (); + shell_plugin->global = shell_global_get (); - _shell_global_set_plugin (global, META_PLUGIN(shell_plugin)); - _shell_global_set_gjs_context (global, shell_plugin->gjs_context); + _shell_global_set_plugin (shell_plugin->global, META_PLUGIN(shell_plugin)); + _shell_global_set_gjs_context (shell_plugin->global, shell_plugin->gjs_context); add_statistics (shell_plugin); @@ -511,9 +512,9 @@ static gboolean gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, XEvent *xev) { -#ifdef GLX_INTEL_swap_event - GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); + GnomeShellPlugin *shell_plugin = GNOME_SHELL_PLUGIN (plugin); +#ifdef GLX_INTEL_swap_event if (shell_plugin->have_swap_event && xev->type == (shell_plugin->glx_event_base + GLX_BufferSwapComplete)) { @@ -545,6 +546,12 @@ gnome_shell_plugin_xevent_filter (MetaPlugin *plugin, && xev->xcrossing.window == clutter_x11_get_stage_window (CLUTTER_STAGE (clutter_stage_get_default ()))) return TRUE; + /* + * Pass the event to shell-global + */ + if (_shell_global_check_xdnd_event (shell_plugin->global, xev)) + return TRUE; + return clutter_x11_handle_event (xev) != CLUTTER_X11_FILTER_CONTINUE; } diff --git a/src/shell-global-private.h b/src/shell-global-private.h index 201ace86d..e17514530 100644 --- a/src/shell-global-private.h +++ b/src/shell-global-private.h @@ -11,4 +11,6 @@ void _shell_global_set_plugin (ShellGlobal *global, void _shell_global_set_gjs_context (ShellGlobal *global, GjsContext *context); +gboolean _shell_global_check_xdnd_event (ShellGlobal *global, + XEvent *xev); #endif /* __SHELL_GLOBAL_PRIVATE_H__ */ diff --git a/src/shell-global.c b/src/shell-global.c index 2cf6ec689..4c3246f20 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -6,6 +6,7 @@ #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" @@ -70,6 +71,8 @@ struct _ShellGlobal { /* For sound notifications */ ca_context *sound_context; + + guint32 xdnd_timestamp; }; enum { @@ -92,8 +95,19 @@ enum { PROP_FOCUS_MANAGER, }; +/* Signals */ +enum +{ + XDND_POSITION_CHANGED, + XDND_LEAVE, + XDND_ENTER, + LAST_SIGNAL +}; + G_DEFINE_TYPE(ShellGlobal, shell_global, G_TYPE_OBJECT); +static guint shell_global_signals [LAST_SIGNAL] = { 0 }; + static void shell_global_set_property(GObject *object, guint prop_id, @@ -238,6 +252,36 @@ shell_global_class_init (ShellGlobalClass *klass) gobject_class->get_property = shell_global_get_property; gobject_class->set_property = shell_global_set_property; + /* Emitted from gnome-shell-plugin.c during event handling */ + shell_global_signals[XDND_POSITION_CHANGED] = + g_signal_new ("xdnd-position-changed", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + _shell_marshal_VOID__INT_INT, + G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT); + + /* Emitted from gnome-shell-plugin.c during event handling */ + shell_global_signals[XDND_LEAVE] = + g_signal_new ("xdnd-leave", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + /* Emitted from gnome-shell-plugin.c during event handling */ + shell_global_signals[XDND_ENTER] = + g_signal_new ("xdnd-enter", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + g_object_class_install_property (gobject_class, PROP_OVERLAY_GROUP, g_param_spec_object ("overlay-group", @@ -1130,6 +1174,39 @@ grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data) shell_global_set_stage_input_mode (global, global->input_mode); } +/** + * shell_global_init_xdnd: + * @global: the #ShellGlobal + * + * Enables tracking of Xdnd events + */ +void shell_global_init_xdnd (ShellGlobal *global) +{ + long xdnd_version = 5; + + MetaScreen *screen = shell_global_get_screen (global); + Window output_window = meta_get_overlay_window (screen); + + MetaDisplay *display = meta_screen_get_display (screen); + Display *xdisplay = meta_display_get_xdisplay (display); + + ClutterStage *stage = CLUTTER_STAGE(meta_plugin_get_stage (global->plugin)); + Window stage_win = clutter_x11_get_stage_window (stage); + + XChangeProperty (xdisplay, stage_win, gdk_x11_get_xatom_by_name ("XdndAware"), XA_ATOM, + 32, PropModeReplace, (const unsigned char *)&xdnd_version, 1); + + XChangeProperty (xdisplay, output_window, gdk_x11_get_xatom_by_name ("XdndProxy"), XA_WINDOW, + 32, PropModeReplace, (const unsigned char *)&stage_win, 1); + + /* + * XdndProxy is additionally set on the proxy window as verification that the + * XdndProxy property on the target window isn't a left-over + */ + XChangeProperty (xdisplay, stage_win, gdk_x11_get_xatom_by_name ("XdndProxy"), XA_WINDOW, + 32, PropModeReplace, (const unsigned char *)&stage_win, 1); +} + /** * shell_global_format_time_relative_pretty: * @global: @@ -1422,6 +1499,10 @@ shell_global_get_current_time (ShellGlobal *global) guint32 time; MetaDisplay *display; + /* In case we have a xdnd timestamp use it */ + if (global->xdnd_timestamp != 0) + return global->xdnd_timestamp; + /* meta_display_get_current_time() will return the correct time when handling an X or Gdk event, but will return CurrentTime from some Clutter event callbacks. @@ -1689,3 +1770,67 @@ shell_global_play_theme_sound (ShellGlobal *global, { ca_context_play (global->sound_context, 0, CA_PROP_EVENT_ID, name, NULL); } + +/* + * Process Xdnd events + * + * We pass the position and leave events to JS via a signal + * where the actual drag & drop handling happens. + * + * http://www.freedesktop.org/wiki/Specifications/XDND + */ +gboolean _shell_global_check_xdnd_event (ShellGlobal *global, + XEvent *xev) +{ + MetaScreen *screen = meta_plugin_get_screen (global->plugin); + Window output_window = meta_get_overlay_window (screen); + MetaDisplay *display = meta_screen_get_display (screen); + Display *xdisplay = meta_display_get_xdisplay (display); + + ClutterStage *stage = CLUTTER_STAGE (meta_plugin_get_stage (global->plugin)); + Window stage_win = clutter_x11_get_stage_window (stage); + + if (xev->xany.window != output_window && xev->xany.window != stage_win) + return FALSE; + + if (xev->xany.type == ClientMessage && xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndPosition")) + { + XEvent xevent; + Window src = xev->xclient.data.l[0]; + + memset (&xevent, 0, sizeof(xevent)); + xevent.xany.type = ClientMessage; + xevent.xany.display = xdisplay; + xevent.xclient.window = src; + xevent.xclient.message_type = gdk_x11_get_xatom_by_name ("XdndStatus"); + xevent.xclient.format = 32; + xevent.xclient.data.l[0] = output_window; + /* flags: bit 0: will we accept the drop? bit 1: do we want more position messages */ + xevent.xclient.data.l[1] = 2; + xevent.xclient.data.l[4] = None; + + XSendEvent (xdisplay, src, False, 0, &xevent); + + /* Store the timestamp of the xdnd position event */ + global->xdnd_timestamp = xev->xclient.data.l[3]; + g_signal_emit_by_name (G_OBJECT (global), "xdnd-position-changed", + (int)(xev->xclient.data.l[2] >> 16), (int)(xev->xclient.data.l[2] & 0xFFFF)); + global->xdnd_timestamp = 0; + + return TRUE; + } + else if (xev->xany.type == ClientMessage && xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndLeave")) + { + g_signal_emit_by_name (G_OBJECT (global), "xdnd-leave"); + + return TRUE; + } + else if (xev->xany.type == ClientMessage && xev->xclient.message_type == gdk_x11_get_xatom_by_name ("XdndEnter")) + { + g_signal_emit_by_name (G_OBJECT (global), "xdnd-enter"); + + return TRUE; + } + + return FALSE; +} diff --git a/src/shell-global.h b/src/shell-global.h index 91a82c454..4a40bcd53 100644 --- a/src/shell-global.h +++ b/src/shell-global.h @@ -132,6 +132,8 @@ void shell_global_run_at_leisure (ShellGlobal *global, void shell_global_play_theme_sound (ShellGlobal *global, const char *name); +void shell_global_init_xdnd (ShellGlobal *global); + G_END_DECLS #endif /* __SHELL_GLOBAL_H__ */ diff --git a/src/shell-marshal.list b/src/shell-marshal.list index 588693dc1..34d107884 100644 --- a/src/shell-marshal.list +++ b/src/shell-marshal.list @@ -4,3 +4,4 @@ VOID:BOXED VOID:BOXED,OBJECT VOID:OBJECT,OBJECT VOID:STRING,OBJECT,BOOLEAN +VOID:INT,INT From f60b99523695c129bbe1270e6f93371af1d1f323 Mon Sep 17 00:00:00 2001 From: Hellyna Ng Date: Tue, 4 Jan 2011 17:34:57 +0800 Subject: [PATCH 041/132] Chats should jump to the top of the notification queue. This is to ensure users get notified as soon as chats are received. Notifications with critical urgency still have the highest priority. https://bugzilla.gnome.org/show_bug.cgi?id=630934 --- js/ui/messageTray.js | 33 +++++++++++++++++++++------------ js/ui/notificationDaemon.js | 13 +++++++++++-- js/ui/telepathyClient.js | 1 + 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 97ce07d5a..359327418 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -38,6 +38,17 @@ const State = { HIDING: 3 }; +// Message tray has its custom Urgency enumeration. LOW, NORMAL and CRITICAL +// urgency values map to the corresponding values for the notifications received +// through the notification daemon. HIGH urgency value is used for chats received +// through the Telepathy client. +const Urgency = { + LOW: 0, + NORMAL: 1, + HIGH: 2, + CRITICAL: 3 +} + function _fixMarkup(text, allowMarkup) { if (allowMarkup) { // Support &, ", ', < and >, escape all other @@ -225,7 +236,7 @@ function Notification(source, title, banner, params) { Notification.prototype = { _init: function(source, title, banner, params) { this.source = source; - this.urgent = false; + this.urgency = Urgency.NORMAL; this.resident = false; // 'transient' is a reserved keyword in JS, so we have to use an alternate variable name this.isTransient = false; @@ -490,8 +501,8 @@ Notification.prototype = { this._updated(); }, - setUrgent: function(urgent) { - this.urgent = urgent; + setUrgency: function(urgency) { + this.urgency = urgency; }, setResident: function(resident) { @@ -1166,13 +1177,11 @@ MessageTray.prototype = { } else if (this._notificationQueue.indexOf(notification) < 0) { notification.connect('destroy', Lang.bind(this, this.removeNotification)); - - if (notification.urgent) - this._notificationQueue.unshift(notification); - else - this._notificationQueue.push(notification); + this._notificationQueue.push(notification); + this._notificationQueue.sort(function(notification1, notification2) { + return (notification2.urgency - notification1.urgency); + }); } - this._updateState(); }, @@ -1508,11 +1517,11 @@ MessageTray.prototype = { onCompleteScope: this }); - // We auto-expand urgent notifications. + // We auto-expand notifications with CRITICAL urgency. // We call _expandNotification() again on the notifications that // are expanded in case they were in the process of hiding and need // to re-expand. - if (this._notification.urgent || this._notification.expanded) + if (this._notification.urgency == Urgency.CRITICAL || this._notification.expanded) // This will overwrite the y tween, but leave the opacity // tween, and so the onComplete will remain as well. this._expandNotification(true); @@ -1604,7 +1613,7 @@ MessageTray.prototype = { }, // We use this function to grab focus when the user moves the pointer - // to an urgent notification that was already auto-expanded. + // to a notification with CRITICAL urgency that was already auto-expanded. _ensureNotificationFocused: function() { this._notification.grabFocus(false); }, diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 0b2833df2..719700874 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -343,8 +343,17 @@ NotificationDaemon.prototype = { for (let i = 0; i < actions.length - 1; i += 2) notification.addButton(actions[i], actions[i + 1]); } - - notification.setUrgent(hints.urgency == Urgency.CRITICAL); + switch (hints.urgency) { + case Urgency.LOW: + notification.setUrgency(MessageTray.Urgency.LOW); + break; + case Urgency.NORMAL: + notification.setUrgency(MessageTray.Urgency.NORMAL); + break; + case Urgency.CRITICAL: + notification.setUrgency(MessageTray.Urgency.CRITICAL); + break; + } notification.setResident(hints.resident == true); // 'transient' is a reserved keyword in JS, so we have to retrieve the value // of the 'transient' hint with hints['transient'] rather than hints.transient diff --git a/js/ui/telepathyClient.js b/js/ui/telepathyClient.js index cb9a6f614..ed8feae7d 100644 --- a/js/ui/telepathyClient.js +++ b/js/ui/telepathyClient.js @@ -476,6 +476,7 @@ Source.prototype = { } this._notification = new Notification(this); + this._notification.setUrgency(MessageTray.Urgency.HIGH); // Since we only create sources when receiving a message, this // is a plausible default From 0052657a2252dbb4519fc79392a20888c2548d2b Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 5 Jan 2011 23:34:27 +0100 Subject: [PATCH 042/132] Overview: Update warping code to new gdk api --- js/ui/overview.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/ui/overview.js b/js/ui/overview.js index bfabcb3d2..1d6e6ab50 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -220,9 +220,9 @@ Overview.prototype = { let display = Gdk.Display.get_default(); let deviceManager = display.get_device_manager(); let pointer = deviceManager.get_client_pointer(); - let [screen, pointerX, pointerY] = display.get_device_state(pointer); + let [screen, pointerX, pointerY] = pointer.get_position(); - display.warp_device(pointer, screen, pointerX, pointerY); + pointer.warp(screen, pointerX, pointerY); }, _onDragMotion: function(dragEvent) { From 778aa6be09c85b231ba53ee33ebf8bb17a740d85 Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Thu, 6 Jan 2011 10:58:45 +0100 Subject: [PATCH 043/132] Updated Spanish translation --- po/es.po | 315 ++++++++++++++++++++++++++----------------------------- 1 file changed, 150 insertions(+), 165 deletions(-) diff --git a/po/es.po b/po/es.po index c8b11ef70..a04b45d9a 100644 --- a/po/es.po +++ b/po/es.po @@ -2,15 +2,15 @@ # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Jorge González , 2009, 2010. -# Daniel Mustieles , 2010. +# 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: 2010-12-20 21:07+0000\n" -"PO-Revision-Date: 2010-12-23 10:31+0100\n" +"POT-Creation-Date: 2011-01-04 16:17+0000\n" +"PO-Revision-Date: 2011-01-05 12:38+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -26,14 +26,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Gestión de ventanas e inicio de aplicaciones" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Reloj" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Personalizar el reloj del panel" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -43,24 +35,20 @@ msgstr "" "usando el diálogo Alt+F2" #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Formato personalizado del reloj" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar las herramientas internas, útiles para desarrolladores y probadores, " "desde 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 "Extensión de archivo que usar para almacenar los «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 "Tasa de fotogramas usada para grabar «screencast»." -#: ../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." @@ -68,39 +56,31 @@ msgstr "" "Las extensiones de GNOME Shell tienen una propiedad uuid; esta clave lista " "las extensiones que no se deben cargar." -#: ../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 "Histórico del diálogo de comandos (Alt+F2)" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#| msgid "" +#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " +#| "the clock, in addition to time." +msgid "If true, display date in the clock, in addition to time." +msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora." + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Formato de la hora" +#| msgid "If true, display the ISO week date in the calendar." +msgid "If true, display seconds in time." +msgstr "Si es cierta, muestra los segundos en la hora." #: ../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 "" -"Si es cierta y el formato es «12-horas» o «24-horas», muestra la fecha en el " -"reloj, además de la hora." - -#: ../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 "" -"Si es cierta y el formato es «12-horas» o «24-horas», muestra los segundos en " -"la hora." - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." msgstr "Si es cierta muestra la fecha de semana ISO en el calendario." -#: ../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 "Lista de ID de archivos de escritorio para las aplicaciones favoritas" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -122,19 +102,19 @@ msgstr "" "predeterminada. Actualmente es «videorate ! theoraenc ! oggmux» y greba en " "Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Mostrar la fecha en el reloj" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show the week date in the calendar" msgstr "Mostrar la fecha de la semana en el calendario" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show time with seconds" msgstr "Mostrar la hora con segundos" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -142,7 +122,7 @@ msgstr "" "Las aplicaciones correspondientes con esos identificadores se mostrarán en " "el área de favoritos." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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 +132,7 @@ msgstr "" "basado en la fecha actual y usará esta extensión. Se debería cambiar al " "grabar en otro formato contenedor diferente." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -160,11 +140,11 @@ msgstr "" "La tasa de fotogramas de la grabación resultante grabada por el grabador de " "«screencast» de GNOME Shell, en fotogramas por segundo." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" msgstr "La tubería de gstreamer usada para codificar el «screencast»" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 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 " @@ -176,41 +156,11 @@ msgstr "" "mantienen de forma privada, puede querer desactivarlo por razones de " "privacidad. Note que haciéndolo no eliminará los datos ya guardados." -#: ../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 "" -"Esta clave especifica el formato usado por el reloj del panel cuando la " -"clave del formato se establece a «custom» (personalizado). Puede usar " -"especificadores de conversión que entienda strftime() para obtener un " -"formato específico. Consulte el manual de strftime() para obtener más " -"información." - -#: ../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 "" -"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»." - -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "Uuid de las extensiones que desactivar" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "" "Indica si se deben recolectar estadísticas acerca del uso de las aplicaciones" @@ -372,55 +322,28 @@ msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" "Anchura de las líneas verticales y horizontales que conforman las cruces." -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Formato del reloj" - -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Preferencias del reloj" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Panel de visualización" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Mostrar los segu_ndos" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Mostrar la _fecha" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "Formato _12 horas" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "Formato _24 horas" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 msgid "All" msgstr "Todas" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "APLICACIONES" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "PREFERENCIAS" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Ventana nueva" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Quitar de los favoritos" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Añadir a los favoritos" @@ -485,58 +408,54 @@ msgid "Applications" msgstr "Aplicaciones" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 +#: ../js/ui/panel.js:476 #, c-format msgid "Quit %s" msgstr "Salir de %s" -#: ../js/ui/panel.js:499 -msgid "Preferences" -msgstr "Preferencias" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:561 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:562 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/panel.js:590 +#: ../js/ui/panel.js:566 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/panel.js:567 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:574 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %H:%M:%S" -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:575 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/panel.js:603 +#: ../js/ui/panel.js:579 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/panel.js:604 +#: ../js/ui/panel.js:580 msgid "%a %l:%M %p" msgstr "%a %H:%M" #. 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:725 msgid "Activities" msgstr "Actividades" @@ -655,7 +574,7 @@ msgstr "Contraste alto" msgid "Large Text" msgstr "Texto:" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 msgid "Bluetooth" msgstr "Bluetooth" @@ -663,120 +582,115 @@ msgstr "Bluetooth" msgid "Visibility" msgstr "Visibilidad" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "Enviar archivos al dispositivo…" -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "Configurar un dispositivo nuevo…" #: ../js/ui/status/bluetooth.js:94 -#| msgid "Power Settings" msgid "Bluetooth Settings" msgstr "Configuración de Bluetooth" -#: ../js/ui/status/bluetooth.js:151 -#| msgid "Connect to..." +#: ../js/ui/status/bluetooth.js:185 msgid "Connection" msgstr "Conexión" -#: ../js/ui/status/bluetooth.js:187 -#| msgid "Suspend..." +#: ../js/ui/status/bluetooth.js:221 msgid "Send Files..." msgstr "Enviar archivos…" -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:226 msgid "Browse Files..." msgstr "Examinar archivos…" -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:235 msgid "Error browsing device" msgstr "Error al examinar el dispositivo" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:236 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»" -#: ../js/ui/status/bluetooth.js:210 -#| msgid "Power Settings" +#: ../js/ui/status/bluetooth.js:244 msgid "Keyboard Settings" msgstr "Configuración del teclado" -#: ../js/ui/status/bluetooth.js:215 -#| msgid "Power Settings" +#: ../js/ui/status/bluetooth.js:249 msgid "Mouse Settings" msgstr "Ajustes del ratón…" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "Configuración del sonido" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 msgid "Bluetooth Agent" msgstr "Agente Bluetooth" -#: ../js/ui/status/bluetooth.js:328 +#: ../js/ui/status/bluetooth.js:362 #, c-format msgid "Authorization request from %s" msgstr "Solicitud de autorización de %s" -#: ../js/ui/status/bluetooth.js:334 +#: ../js/ui/status/bluetooth.js:368 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "El dispositivo %s quiere acceder al servicio «%s»" -#: ../js/ui/status/bluetooth.js:336 +#: ../js/ui/status/bluetooth.js:370 msgid "Always grant access" msgstr "Conceder acceso siempre" -#: ../js/ui/status/bluetooth.js:337 +#: ../js/ui/status/bluetooth.js:371 msgid "Grant this time only" msgstr "Conceder sólo esta vez" -#: ../js/ui/status/bluetooth.js:338 +#: ../js/ui/status/bluetooth.js:372 msgid "Reject" msgstr "Rechazar" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:402 #, c-format msgid "Pairing confirmation for %s" msgstr "Confirmación de emparejamiento para «%s»" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 #, c-format msgid "Device %s wants to pair with this computer" msgstr "El dispositivo «%s» quiere emparejarse con este equipo" -#: ../js/ui/status/bluetooth.js:375 +#: ../js/ui/status/bluetooth.js:409 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo." -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:411 msgid "Matches" msgstr "Coincide" -#: ../js/ui/status/bluetooth.js:378 +#: ../js/ui/status/bluetooth.js:412 msgid "Does not match" msgstr "No coincide" -#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:435 #, c-format msgid "Pairing request for %s" msgstr "Solicitud de emparejamiento para «%s»" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:443 msgid "Please enter the PIN mentioned on the device." msgstr "Introduzca el PIN mencionado en el dispositivo." -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:459 msgid "OK" msgstr "Aceptar" -#: ../js/ui/status/bluetooth.js:426 +#: ../js/ui/status/bluetooth.js:460 msgid "Cancel" msgstr "Cancelar" @@ -895,7 +809,7 @@ msgstr "%s está ocupado/a." #. 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:665 #, no-c-format msgid "Sent at %X on %A" msgstr "Enviado a las %X el %A" @@ -947,32 +861,32 @@ msgstr[1] "%u entradas" msgid "System Sounds" msgstr "Sonidos del sistema" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "Hace menos de un minuto" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1160 #, 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:1164 +#: ../src/shell-global.c:1165 #, 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:1169 +#: ../src/shell-global.c:1170 #, 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:1174 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -1003,6 +917,77 @@ msgstr "Buscar" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "Reloj" + +#~ msgid "Customize the panel clock" +#~ msgstr "Personalizar el reloj del panel" + +#~ msgid "Custom format of the clock" +#~ msgstr "Formato personalizado del reloj" + +#~ msgid "Hour format" +#~ msgstr "Formato de la hora" + +#~ msgid "" +#~ "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." + +#~ 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 "" +#~ "Esta clave especifica el formato usado por el reloj del panel cuando la " +#~ "clave del formato se establece a «custom» (personalizado). Puede usar " +#~ "especificadores de conversión que entienda strftime() para obtener un " +#~ "formato específico. Consulte el manual de strftime() para obtener más " +#~ "información." + +#~ 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 "" +#~ "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»." + +#~ msgid "Clock Format" +#~ msgstr "Formato del reloj" + +#~ msgid "Clock Preferences" +#~ msgstr "Preferencias del reloj" + +#~ msgid "Panel Display" +#~ msgstr "Panel de visualización" + +#~ msgid "Show seco_nds" +#~ msgstr "Mostrar los segu_ndos" + +#~ msgid "Show the _date" +#~ msgstr "Mostrar la _fecha" + +#~ msgid "_12 hour format" +#~ msgstr "Formato _12 horas" + +#~ msgid "_24 hour format" +#~ msgstr "Formato _24 horas" + +#~ msgid "Preferences" +#~ msgstr "Preferencias" + #~ msgid "What's using power..." #~ msgstr "Lo que está usando energía…" From ce2efc6a67b4006dd461c9ca3f70077f1d4a786b Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Thu, 6 Jan 2011 12:15:07 +0100 Subject: [PATCH 044/132] Overview: Change tab title style to match mockups https://bugzilla.gnome.org/show_bug.cgi?id=638815 --- data/theme/gnome-shell.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index c5a97db4a..b1cfe6444 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -384,10 +384,14 @@ StTooltip StLabel { color: #888a85; font-weight: bold; padding: 0px 12px; + height: 24px; } .view-tab-title:selected { - color: white; + color: #000000; + background-color: #c2c7cd; + border-radius: 4px; + height: 24px; } .view-tab-boxpointer { From cff503922c72ea2a1946873a3e4e5d6cbf6dc409 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Thu, 6 Jan 2011 14:19:44 +0100 Subject: [PATCH 045/132] DashDND: Don't allow positioning before or after self Don't allow the icon to be dropped immediately next to itself. https://bugzilla.gnome.org/show_bug.cgi?id=637104 --- js/ui/dash.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/js/ui/dash.js b/js/ui/dash.js index 39440cf73..e3f3063be 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -273,7 +273,11 @@ Dash.prototype = { if (app == null || app.is_transient()) return DND.DragMotionResult.NO_DROP; - let numFavorites = AppFavorites.getAppFavorites().getFavorites().length; + let favorites = AppFavorites.getAppFavorites().getFavorites(); + let numFavorites = favorites.length; + + let favPos = favorites.indexOf(app); + let numChildren = this._box.get_children().length; let boxHeight = this._box.height; @@ -291,15 +295,16 @@ Dash.prototype = { this._dragPlaceholderPos = pos; if (this._dragPlaceholder) this._dragPlaceholder.destroy(); + + // Don't allow positioning before or after self + if (favPos != -1 && (pos == favPos || pos == favPos + 1)) + return DND.DragMotionResult.CONTINUE; + this._dragPlaceholder = new St.Bin({ style_class: 'dash-placeholder' }); this._box.insert_actor(this._dragPlaceholder, pos); } - let id = app.get_id(); - - let favorites = AppFavorites.getAppFavorites().getFavoriteMap(); - - let srcIsFavorite = (id in favorites); + let srcIsFavorite = (favPos != -1); if (srcIsFavorite) return DND.DragMotionResult.MOVE_DROP; From a46baeed0b51991d3bcaf0924c80dd6dfe5756ab Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 6 Jan 2011 13:38:41 -0500 Subject: [PATCH 046/132] altTab: fix destroy-without-showing case If the switcher is destroyed without ever being fully shown (either because it couldn't get a keyboard grab, or just because there are no apps to display), destroy it immediately rather than tweening it towards destruction, since its contents haven't been built yet and _allocate() will throw errors if it runs. --- js/ui/altTab.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index ca2b902be..b117fc840 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -34,7 +34,8 @@ function AltTabPopup() { AltTabPopup.prototype = { _init : function() { this.actor = new Shell.GenericContainer({ name: 'altTabPopup', - reactive: true }); + reactive: true, + visible: false }); this.actor.connect('get-preferred-width', Lang.bind(this, this._getPreferredWidth)); this.actor.connect('get-preferred-height', Lang.bind(this, this._getPreferredHeight)); @@ -365,15 +366,18 @@ AltTabPopup.prototype = { }, destroy : function() { - Tweener.addTween(this.actor, - { opacity: 0, - time: POPUP_FADE_TIME, - transition: 'easeOutQuad', - onComplete: Lang.bind(this, - function() { - this.actor.destroy(); - }) - }); + if (this.actor.visible) { + Tweener.addTween(this.actor, + { opacity: 0, + time: POPUP_FADE_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + this.actor.destroy(); + }) + }); + } else + this.actor.destroy(); }, _onDestroy : function() { From cedcbc5fcf33c5033ea35030d491858a963fa317 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 21 Dec 2010 15:53:28 +0100 Subject: [PATCH 047/132] BluetoothStatus: hide the device separator if no devices are shown When BluetoothApplet::show-full-menu property is notified (when you switch from a disabled adapter / no adapter to an active one), we would show all the menu, including the device separator, without checking if any devices actually existed. https://bugzilla.gnome.org/show_bug.cgi?id=637690 --- js/ui/status/bluetooth.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 47a7ed288..7a6206d11 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -267,7 +267,10 @@ Indicator.prototype = { _updateFullMenu: function() { if (this._applet.show_full_menu) { this._showAll(this._fullMenuItems); - this._showAll(this._deviceItems); + if (this._hasDevices) + this._showAll(this._deviceItems); + else + this._deviceSep.hide(); } else { this._hideAll(this._fullMenuItems); this._hideAll(this._deviceItems); From 046308c5821bd8448cbaa0aea79f21574b5ef81d Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Mon, 20 Dec 2010 19:06:54 +0100 Subject: [PATCH 048/132] StBoxLayout: add insert_before Add st_container_move_before internal API, and st_box_layout_insert_before, that inserts an actor before another in the container. https://bugzilla.gnome.org/show_bug.cgi?id=637681 --- src/st/st-box-layout.c | 11 +++++++++++ src/st/st-box-layout.h | 4 ++++ src/st/st-container.c | 23 +++++++++++++++++++++++ src/st/st-container.h | 3 +++ 4 files changed, 41 insertions(+) diff --git a/src/st/st-box-layout.c b/src/st/st-box-layout.c index ae26cd76d..0aa5ef2e8 100644 --- a/src/st/st-box-layout.c +++ b/src/st/st-box-layout.c @@ -1213,3 +1213,14 @@ st_box_layout_insert_actor (StBoxLayout *self, clutter_container_add_actor((ClutterContainer*) self, actor); st_container_move_child (ST_CONTAINER (self), actor, pos); } + +void +st_box_layout_insert_before (StBoxLayout *self, + ClutterActor *actor, + ClutterActor *sibling) +{ + g_return_if_fail (ST_IS_BOX_LAYOUT (self)); + + clutter_container_add_actor(CLUTTER_CONTAINER (self), actor); + st_container_move_before (ST_CONTAINER (self), actor, sibling); +} diff --git a/src/st/st-box-layout.h b/src/st/st-box-layout.h index 54372d53c..f19a065d0 100644 --- a/src/st/st-box-layout.h +++ b/src/st/st-box-layout.h @@ -90,6 +90,10 @@ void st_box_layout_insert_actor (StBoxLayout *self, ClutterActor *actor, int pos); +void st_box_layout_insert_before (StBoxLayout *self, + ClutterActor *actor, + ClutterActor *sibling); + G_END_DECLS #endif /* _ST_BOX_LAYOUT_H */ diff --git a/src/st/st-container.c b/src/st/st-container.c index 4d140a16a..0fb5eb462 100644 --- a/src/st/st-container.c +++ b/src/st/st-container.c @@ -159,6 +159,29 @@ st_container_move_child (StContainer *container, clutter_actor_queue_relayout ((ClutterActor*) container); } +void +st_container_move_before (StContainer *container, + ClutterActor *actor, + ClutterActor *sibling) +{ + StContainerPrivate *priv = container->priv; + GList *actor_item = NULL; + GList *sibling_item = NULL; + + actor_item = g_list_find (priv->children, actor); + sibling_item = g_list_find (priv->children, sibling); + + g_return_if_fail (actor_item != NULL); + g_return_if_fail (sibling_item != NULL); + + priv->children = g_list_delete_link (priv->children, actor_item); + priv->children = g_list_insert_before (priv->children, sibling_item, actor); + + st_container_update_pseudo_classes (container); + + clutter_actor_queue_relayout (CLUTTER_ACTOR (container)); +} + /** * st_container_get_children_list: * @container: An #StContainer diff --git a/src/st/st-container.h b/src/st/st-container.h index f5f04aa09..91f457f26 100644 --- a/src/st/st-container.h +++ b/src/st/st-container.h @@ -62,6 +62,9 @@ GList * st_container_get_focus_chain (StContainer *container); void st_container_move_child (StContainer *container, ClutterActor *actor, int pos); +void st_container_move_before (StContainer *container, + ClutterActor *actor, + ClutterActor *sibling); GList * st_container_get_children_list (StContainer *container); G_END_DECLS From 493844d0054f3df67ad01ae3151ecf8910da412c Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Mon, 20 Dec 2010 19:10:43 +0100 Subject: [PATCH 049/132] PopupMenu: fix addMenuItem with explicit position Only real menu items should be considered, fix this using the new API in StBoxLayout. https://bugzilla.gnome.org/show_bug.cgi?id=637681 --- js/ui/popupMenu.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index c36e95684..91b412c03 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -631,15 +631,22 @@ PopupMenuBase.prototype = { }, addMenuItem: function(menuItem, position) { - if (position == undefined) + let before_item = null; + if (position == undefined) { this.box.add(menuItem.actor); - else - this.box.insert_actor(menuItem.actor, position); + } else { + let items = this.getMenuItems(); + if (position < items.length) { + before_item = items[position].actor; + this.box.insert_before(menuItem.actor, before_item); + } else + this.box.add(menuItem.actor); + } if (menuItem instanceof PopupSubMenuMenuItem) { - if (position == undefined) + if (before_item == null) this.box.add(menuItem.menu.actor); else - this.box.insert_actor(menuItem.menu.actor, position + 1); + this.box.insert_before(menuItem.menu.actor, before_item); menuItem._subMenuActivateId = menuItem.menu.connect('activate', Lang.bind(this, function() { this.emit('activate'); this.close(true); From 4de15b2b57b9e805c038a9d4fb1ebf99317f3279 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 30 Dec 2010 15:22:54 +0100 Subject: [PATCH 050/132] PopupMenuManager: only navigate visible menus When doing keyboard navigation, ignore menus whose sourceActor is hidden. This is needed to hide status icons, as otherwise the menu would appear despite having no icon. https://bugzilla.gnome.org/show_bug.cgi?id=638306 --- js/ui/popupMenu.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js index 91b412c03..30f353eb3 100644 --- a/js/ui/popupMenu.js +++ b/js/ui/popupMenu.js @@ -1194,6 +1194,18 @@ 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; @@ -1232,7 +1244,7 @@ PopupMenuManager.prototype = { if (symbol == Clutter.Left || symbol == Clutter.Right) { let direction = symbol == Clutter.Right ? 1 : -1; let pos = this._findMenu(this._activeMenu); - let next = this._menus[mod(pos + direction, this._menus.length)].menu; + let next = this._nextMenu(pos, direction); if (next != this._activeMenu) { this._changeMenu(next); next.activateFirst(); From b2bb0bf10f9634c01cfa887cc6c976c75d54e3cc Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 30 Dec 2010 15:34:42 +0100 Subject: [PATCH 051/132] BluetoothStatus: hide the icon when no adapter is present There is no point in showing the bluetooth status, when the required hardware is missing. Just hide in that case. https://bugzilla.gnome.org/show_bug.cgi?id=638306 --- js/ui/status/bluetooth.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 7a6206d11..06e16e4b3 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -104,12 +104,18 @@ Indicator.prototype = { _updateKillswitch: function() { let current_state = this._applet.killswitch_state; let on = current_state == GnomeBluetoothApplet.KillswitchState.UNBLOCKED; + let has_adapter = current_state != GnomeBluetoothApplet.KillswitchState.NO_ADAPTER; let can_toggle = current_state != GnomeBluetoothApplet.KillswitchState.NO_ADAPTER && current_state != GnomeBluetoothApplet.KillswitchState.HARD_BLOCKED; this._killswitch.setToggleState(on); this._killswitch.actor.reactive = can_toggle; + if (has_adapter) + this.actor.show(); + else + this.actor.hide(); + if (on) { this._discoverable.actor.show(); this.setIcon('bluetooth-active'); @@ -130,7 +136,7 @@ Indicator.prototype = { let devices = this._applet.get_devices(); for (let i = 0; i < this._deviceItems.length; i++) { - let item = this._deviceItems.length; + let item = this._deviceItems[i]; let destroy = true; for (let j = 0; j < devices.length; j++) { // we need to deep compare because BluetoothSimpleDevice is a boxed type From 1a884535ada25f032ea0fab96115b135215972b1 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Thu, 6 Jan 2011 20:35:21 +0100 Subject: [PATCH 052/132] BluetoothStatus: fix typo The function to hide a menu item is .actor.hide(), not just .hide() --- js/ui/status/bluetooth.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index 06e16e4b3..afda1b474 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -276,7 +276,7 @@ Indicator.prototype = { if (this._hasDevices) this._showAll(this._deviceItems); else - this._deviceSep.hide(); + this._deviceSep.actor.hide(); } else { this._hideAll(this._fullMenuItems); this._hideAll(this._deviceItems); From 960af783f7dc3d62c80bb16c5fc54b67cf5db852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Di=C3=A9guez?= Date: Thu, 6 Jan 2011 23:33:55 +0100 Subject: [PATCH 053/132] Updated galician translations --- po/gl.po | 451 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 297 insertions(+), 154 deletions(-) diff --git a/po/gl.po b/po/gl.po index fca041fbe..259b1da6d 100644 --- a/po/gl.po +++ b/po/gl.po @@ -4,14 +4,14 @@ # # Anton Meixome , 2009. # Antón Méixome , 2009. -# Fran Diéguez , 2009, 2010. +# Fran Diéguez , 2009, 2010, 2011. # msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-10 23:25+0100\n" -"PO-Revision-Date: 2010-12-10 23:29+0100\n" +"POT-Creation-Date: 2011-01-06 23:28+0100\n" +"PO-Revision-Date: 2011-01-06 23:33+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -29,14 +29,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Xestor de xanelas e inicio de aplicativos" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Reloxo" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Personalizar o reloxo do panel" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -46,24 +38,20 @@ msgstr "" "usando o diálogo Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Formato personalizado o reloxo do panel" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Activar as ferramentas internas útiles para os desenvolvedores e probadores " "usando 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 "Extensión de ficheiro usada para o almacenamento da 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 "Taxa de marcos usada para gravar as capturas de pantalla." -#: ../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." @@ -71,39 +59,27 @@ msgstr "" "As extensións do GNOME Shell teñen unha propiedade uuid. Esta chave lista as " "extensións que non deberían cargarse." -#: ../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 "Historial do diálogo de orde (Alt-F2)" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "If true, display date in the clock, in addition to time." +msgstr "Se é verdadeiro, móstrase a data no reloxo, ademais da hora." + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Formato da hora" +msgid "If true, display seconds in time." +msgstr "Se é verdadeiro, móstranse os segundos na hora." #: ../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 "" -"Se é verdadeiro e o formato é «12-hour» ou «24-hour» móstrase a data no " -"reloxo, ademais da hora." - -#: ../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 "" -"Se é verdadeiro e o formato é «12-hour» ou «24-hour» móstranse os segundos " -"na hora." - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 msgid "If true, display the ISO week date in the calendar." msgstr "Se é verdadeiro, móstrase a data da semana ISO no calendario." -#: ../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 "Mostra os ID de ficheiros desktop para os aplicativos preferidos" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -124,19 +100,19 @@ msgstr "" "está a un valor baleiro, usarase a tubería predeterminada. Actualmente é " "«videorate ! theoraenc ! oggmux» e grava en Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Mostrar a data no reloxo" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show the week date in the calendar" msgstr "Mostrar a data da semana no calendario" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show time with seconds" msgstr "Mostrar a hora con segundos" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -144,7 +120,7 @@ msgstr "" "Os aplicativos que corresponden a estes identificadores mostraranse na área " "de preferidos." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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 " @@ -154,7 +130,7 @@ msgstr "" "baseado na data actual e usa esta extensión. Debería cambiar ao grabar nun " "formato de contedor diferente." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -162,11 +138,11 @@ msgstr "" "A taxa de marcos do screencast resultante grabado polo grabador de " "screencasts de GNOME Shell en marcos-por-segundo." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" msgstr "A tubería de gstreamer usada para codificar o screencast" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 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 " @@ -178,40 +154,11 @@ msgstr "" "privados, vostede pode desactivar isto por motivos de privacidade. Teña en " "conta que facendo isto non eliminará os datos gardados." -#: ../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 "" -"Esta chave especifica o formato usado polo reloxo do panel cando a chave de " -"formato está estabelecida a \"custom\". Vostede pode usar os especificadores " -"de conversión que entende strftime() para obter un formato de hora " -"especificado. Vexa o manual de strftime() para obter máis información." - -#: ../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 "" -"Esta chave especifica o formato de hora usado polo reloxo do panel. Os " -"posíbeis valores son «12-hour», «24-hour», «unix» e «custom». Se está " -"estabelecido a «unix», o reloxo mostrará a hora en segundos desde Epoch, p." -"ex. 01-01-1970. Se está estabelecido a «custom», o reloxo mostrará a hora " -"segundo o formato especificado na chave custom_format. Teña en conta que se " -"está estabelecido a «unix» ou «custom», as chaves show_date e show_seconds " -"ignoraranse." - -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "Os Uuid das extensións a desactivar" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "Indica se recoller estatísticas sobre o uso dos aplicativos" @@ -369,51 +316,28 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "Anchura das liñas verticais e horizontais que contén o punto de mira." -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Formato do reloxo" +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "Todos" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Preferencias do reloxo" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Panel de visualización" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Mostrar os segu_ndos" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Mostrar a _data" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "Formato _12 horas" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "Formato _24 horas" - -#: ../js/ui/appDisplay.js:215 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "APLICATIVOS" -#: ../js/ui/appDisplay.js:245 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "PREFERENCIAS" -#: ../js/ui/appDisplay.js:542 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Xanela nova" -#: ../js/ui/appDisplay.js:546 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Eliminar dos favoritos" -#: ../js/ui/appDisplay.js:547 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Engadir aos favoritos" @@ -465,63 +389,67 @@ msgstr "Ver fonte" msgid "Web Page" msgstr "Páxina web" -#: ../js/ui/overview.js:112 +#: ../js/ui/overview.js:101 msgid "Undo" msgstr "Desfacer" +#: ../js/ui/overview.js:166 +msgid "Windows" +msgstr "Xanelas" + +#: ../js/ui/overview.js:169 +msgid "Applications" +msgstr "Aplicativos" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:470 +#: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" msgstr "Saír de %s" -#: ../js/ui/panel.js:495 -msgid "Preferences" -msgstr "Preferencias" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:563 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" -#: ../js/ui/panel.js:582 +#: ../js/ui/panel.js:564 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/panel.js:586 +#: ../js/ui/panel.js:568 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:587 +#: ../js/ui/panel.js:569 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:576 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %H:%M:%S" -#: ../js/ui/panel.js:595 +#: ../js/ui/panel.js:577 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/panel.js:599 +#: ../js/ui/panel.js:581 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/panel.js:600 +#: ../js/ui/panel.js:582 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:745 +#: ../js/ui/panel.js:727 msgid "Activities" msgstr "Actividades" @@ -640,15 +568,131 @@ msgstr "Alto contraste" msgid "Large Text" msgstr "Texto máis grande" -#: ../js/ui/status/power.js:87 -msgid "What's using power..." -msgstr "Que está usando enerxía..." +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +msgid "Bluetooth" +msgstr "Bluetooth" -#: ../js/ui/status/power.js:90 +#: ../js/ui/status/bluetooth.js:55 +msgid "Visibility" +msgstr "Visibilidade" + +#: ../js/ui/status/bluetooth.js:69 +msgid "Send Files to Device..." +msgstr "Enviar ficheiros ao dispositivo..." + +#: ../js/ui/status/bluetooth.js:70 +msgid "Setup a New Device..." +msgstr "Configurar un novo dispositivo..." + +#: ../js/ui/status/bluetooth.js:94 +msgid "Bluetooth Settings" +msgstr "Configuracións de Bluetooth" + +#: ../js/ui/status/bluetooth.js:191 +msgid "Connection" +msgstr "Conexión" + +#: ../js/ui/status/bluetooth.js:227 +msgid "Send Files..." +msgstr "Enviar ficheiros..." + +#: ../js/ui/status/bluetooth.js:232 +msgid "Browse Files..." +msgstr "Explorar ficheiros..." + +#: ../js/ui/status/bluetooth.js:241 +msgid "Error browsing device" +msgstr "Produciuse un erro ao explorar o dispositivo" + +#: ../js/ui/status/bluetooth.js:242 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "O dispositivo solicitado non pode explorarse, o erro foi «%s»" + +#: ../js/ui/status/bluetooth.js:250 +msgid "Keyboard Settings" +msgstr "Configuracións do teclado" + +#: ../js/ui/status/bluetooth.js:255 +msgid "Mouse Settings" +msgstr "Configuracións do rato" + +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +msgid "Sound Settings" +msgstr "Configuracións do son" + +#: ../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 "Axente Bluetooth" + +#: ../js/ui/status/bluetooth.js:371 +#, c-format +msgid "Authorization request from %s" +msgstr "Solicitude de autorización de %s" + +#: ../js/ui/status/bluetooth.js:377 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "O dispositivo %s quere acceder ao servizo «%s»" + +#: ../js/ui/status/bluetooth.js:379 +msgid "Always grant access" +msgstr "Conceder acceso sempre" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Grant this time only" +msgstr "Conceder só esta vez" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Reject" +msgstr "Rexeitar" + +#: ../js/ui/status/bluetooth.js:411 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Confirmación de emparellado para «%s»" + +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "O dispositivo «%s» quere emparellarse con este equipo" + +#: ../js/ui/status/bluetooth.js:418 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Confirme que o PIN mostrado en «%s» coincide co do dispositivo." + +#: ../js/ui/status/bluetooth.js:420 +msgid "Matches" +msgstr "Coincide" + +#: ../js/ui/status/bluetooth.js:421 +msgid "Does not match" +msgstr "Non coincide" + +#: ../js/ui/status/bluetooth.js:444 +#, c-format +msgid "Pairing request for %s" +msgstr "Solicitude de emparellamento para «%s»" + +#: ../js/ui/status/bluetooth.js:452 +msgid "Please enter the PIN mentioned on the device." +msgstr "Introduza o PIN mencionado no dispositivo." + +#: ../js/ui/status/bluetooth.js:468 +msgid "OK" +msgstr "Aceptar" + +#: ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "Cancelar" + +#: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Configuracións de enerxía" -#: ../js/ui/status/power.js:117 +#: ../js/ui/status/power.js:112 #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" @@ -656,75 +700,75 @@ msgstr[0] "%d hora restante" msgstr[1] "%d horas restante" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" -#: ../js/ui/status/power.js:120 +#: ../js/ui/status/power.js:115 #, c-format msgid "%d %s %d %s remaining" msgstr "%d %s %d %s retante" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" -#: ../js/ui/status/power.js:122 +#: ../js/ui/status/power.js:117 msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" -#: ../js/ui/status/power.js:125 +#: ../js/ui/status/power.js:120 #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" msgstr[0] "%d minuto restante" msgstr[1] "%d minutos restantes" -#: ../js/ui/status/power.js:244 +#: ../js/ui/status/power.js:237 msgid "AC adapter" msgstr "Adaptador de corrente" -#: ../js/ui/status/power.js:246 +#: ../js/ui/status/power.js:239 msgid "Laptop battery" msgstr "Batería do portátil" -#: ../js/ui/status/power.js:248 +#: ../js/ui/status/power.js:241 msgid "UPS" msgstr "UPS" -#: ../js/ui/status/power.js:250 +#: ../js/ui/status/power.js:243 msgid "Monitor" msgstr "Monitor" -#: ../js/ui/status/power.js:252 +#: ../js/ui/status/power.js:245 msgid "Mouse" msgstr "Rato" -#: ../js/ui/status/power.js:254 +#: ../js/ui/status/power.js:247 msgid "Keyboard" msgstr "Teclado" -#: ../js/ui/status/power.js:256 +#: ../js/ui/status/power.js:249 msgid "PDA" msgstr "PDA" -#: ../js/ui/status/power.js:258 +#: ../js/ui/status/power.js:251 msgid "Cell phone" msgstr "Teléfono móbil" -#: ../js/ui/status/power.js:260 +#: ../js/ui/status/power.js:253 msgid "Media player" msgstr "Reprodutor multimedia" -#: ../js/ui/status/power.js:262 +#: ../js/ui/status/power.js:255 msgid "Tablet" msgstr "Tablet" -#: ../js/ui/status/power.js:264 +#: ../js/ui/status/power.js:257 msgid "Computer" msgstr "Computador" -#: ../js/ui/status/power.js:266 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Descoñecido" @@ -736,9 +780,33 @@ msgstr "Volume" msgid "Microphone" msgstr "Micrófono" -#: ../js/ui/status/volume.js:62 -msgid "Sound Settings" -msgstr "Configuracións de son" +#: ../js/ui/telepathyClient.js:561 +#, c-format +msgid "%s is online." +msgstr "%s está conectado/a." + +#: ../js/ui/telepathyClient.js:566 +#, c-format +msgid "%s is offline." +msgstr "%s está desconectado/a." + +#: ../js/ui/telepathyClient.js:569 +#, c-format +msgid "%s is away." +msgstr "%s está ausente." + +#: ../js/ui/telepathyClient.js:572 +#, c-format +msgid "%s is busy." +msgstr "%s está ocupado/a." + +#. 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 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Enviado ás %X o %A" #: ../js/ui/viewSelector.js:26 msgid "Search your computer" @@ -787,32 +855,32 @@ msgstr[1] "%u entradas" msgid "System Sounds" msgstr "Sons do sistema" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "Hai menos dun minuto" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "hai %d minuto" msgstr[1] "hai %d minutos" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "hai %d hora" msgstr[1] "hai %d horas" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "hai %d día" msgstr[1] "hai %d días" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -843,6 +911,81 @@ msgstr "Buscar" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "Reloxo" + +#~ msgid "Customize the panel clock" +#~ msgstr "Personalizar o reloxo do panel" + +#~ msgid "Custom format of the clock" +#~ msgstr "Formato personalizado o reloxo do panel" + +#~ msgid "Hour format" +#~ msgstr "Formato da hora" + +#~ msgid "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." +#~ msgstr "" +#~ "Se é verdadeiro e o formato é «12-hour» ou «24-hour» móstranse os " +#~ "segundos na hora." + +#~ 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 "" +#~ "Esta chave especifica o formato usado polo reloxo do panel cando a chave " +#~ "de formato está estabelecida a \"custom\". Vostede pode usar os " +#~ "especificadores de conversión que entende strftime() para obter un " +#~ "formato de hora especificado. Vexa o manual de strftime() para obter máis " +#~ "información." + +#~ 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 "" +#~ "Esta chave especifica o formato de hora usado polo reloxo do panel. Os " +#~ "posíbeis valores son «12-hour», «24-hour», «unix» e «custom». Se está " +#~ "estabelecido a «unix», o reloxo mostrará a hora en segundos desde Epoch, " +#~ "p.ex. 01-01-1970. Se está estabelecido a «custom», o reloxo mostrará a " +#~ "hora segundo o formato especificado na chave custom_format. Teña en conta " +#~ "que se está estabelecido a «unix» ou «custom», as chaves show_date e " +#~ "show_seconds ignoraranse." + +#~ msgid "Clock Format" +#~ msgstr "Formato do reloxo" + +#~ msgid "Clock Preferences" +#~ msgstr "Preferencias do reloxo" + +#~ msgid "Panel Display" +#~ msgstr "Panel de visualización" + +#~ msgid "Show seco_nds" +#~ msgstr "Mostrar os segu_ndos" + +#~ msgid "Show the _date" +#~ msgstr "Mostrar a _data" + +#~ msgid "_12 hour format" +#~ msgstr "Formato _12 horas" + +#~ msgid "_24 hour format" +#~ msgstr "Formato _24 horas" + +#~ msgid "Preferences" +#~ msgstr "Preferencias" + +#~ msgid "What's using power..." +#~ msgstr "Que está usando enerxía..." + #~ msgid "Overview workspace view mode" #~ msgstr "Modo de visualización do espazo de traballo de vista previa" From 66e0e5b370b39278e56b04cc3d90fb3baf9f4e53 Mon Sep 17 00:00:00 2001 From: Chao-Hsiung Liao Date: Fri, 7 Jan 2011 09:44:17 +0800 Subject: [PATCH 054/132] Updated Traditional Chinese translation(Hong Kong and Taiwan) --- po/zh_HK.po | 835 +++++++++++++++++++++++++++++++++++++++------------ po/zh_TW.po | 841 ++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 1292 insertions(+), 384 deletions(-) diff --git a/po/zh_HK.po b/po/zh_HK.po index 579f283c3..9f04787db 100644 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -2,15 +2,17 @@ # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Chao-Hsiung Liao , 2010. +# Wei-Lun Chao , 2010. # msgid "" msgstr "" -"Project-Id-Version: gnome-shell 2.31.5\n" +"Project-Id-Version: gnome-shell 2.91.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-21 20:42+0800\n" -"PO-Revision-Date: 2010-08-21 20:43+0800\n" +"POT-Creation-Date: 2011-01-07 09:43+0800\n" +"PO-Revision-Date: 2011-01-07 09:44+0800\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Hong Kong) \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,14 +26,6 @@ msgstr "GNOME Shell" 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 " @@ -39,60 +33,50 @@ msgid "" 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." msgstr "GNOME Shell 擴充功能有 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:8 -msgid "Hour format" -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." +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#, fuzzy +#| msgid "" +#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " +#| "the clock, in addition to time." +msgid "If true, display date in the clock, in addition to time." msgstr "如果設為 true 且格式為「12-小時」或「24-小時」,在時鐘裏顯示日期,加在時刻後面。" -#: ../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 "如果設為 true 且格式為「12-小時」或「24-小時」,在時刻裏顯示秒鐘。" +#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#, fuzzy +#| msgid "If true, display the ISO week date in the calendar." +msgid "If true, display seconds in time." +msgstr "如果設為 true,在日曆中顯示 ISO 週數。" -#: ../data/org.gnome.shell.gschema.xml.in.h:11 +#: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display the ISO week date in the calendar." msgstr "如果設為 true,在日曆中顯示 ISO 週數。" -#: ../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 "喜好的應用程式桌面檔案 ID 清單" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "概覽工作區檢視模式" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -104,48 +88,42 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "在時鐘內顯示日期" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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:14 msgid "Show time with seconds" msgstr "在時刻中顯示秒數" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "對應這些辨別碼的應用程式會顯示在喜好區域。" -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "由 GNOME Shell 的畫面廣播錄製程式所錄製成果的框架率,以 frames-per-second 計。" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" 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:19 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 " @@ -153,204 +131,275 @@ msgid "" "remove already saved data." msgstr "這個 shell 通常會監控使用中的應用程式以便能顯示出最常使用的(例如,在程式執行器中)。雖然這個資料會保持隱密,但是你可能會基於私隱的理由想要停用這個功能。請注意這麼做並不會移除已儲存的資料。" -#: ../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 "這個設定鍵是在面板時鐘的「format」設定鍵被設為「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 "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 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:21 msgid "Whether to collect stats about applications usage" msgstr "是否收集關於應用程式使用率的狀態" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "時鐘格式" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 +msgid "Clip the crosshairs at the center" +msgstr "" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "時鐘偏好設定" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 +msgid "Color of the crosshairs" +msgstr "十字準星的顏色" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -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/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "顯示秒數(_N)" +#: ../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/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "顯示日期(_D)" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5 +msgid "" +"Determines the transparency of the crosshairs, from fully opaque to fully " +"transparent." +msgstr "決定十字準星的透明度,從完全不透明到完全透明。" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_12 小時制" +#: ../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/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_24 小時制" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 +#, fuzzy +#| msgid "Enabled" +msgid "Enable lens mode" +msgstr "啟用觸控螢幕模式" -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:778 +#: ../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 "螢幕位置" + +#: ../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 "放大的倍數。數值 1.0 表示不放大。數值 2.0 為放大兩倍。" + +#: ../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 "組成十字準星的垂直和水平線條的闊度。" + +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "全部" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "程式集" -#: ../js/ui/appDisplay.js:416 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "偏好設定" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "新視窗" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "自喜好中移除" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:568 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 "尋找" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "移除" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "搜尋中..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "沒有相符的結果。" - -#. **** 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 "位置 & 裝置" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "最近使用項目" -#: ../js/ui/lookingGlass.js:471 +#: ../js/ui/lookingGlass.js:552 msgid "No extensions installed" msgstr "沒有安裝擴充功能" -#: ../js/ui/lookingGlass.js:508 +#: ../js/ui/lookingGlass.js:589 msgid "Enabled" msgstr "已啟用" -#: ../js/ui/lookingGlass.js:510 +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "已停用" -#: ../js/ui/lookingGlass.js:512 +#: ../js/ui/lookingGlass.js:593 msgid "Error" msgstr "錯誤" -#: ../js/ui/lookingGlass.js:514 +#: ../js/ui/lookingGlass.js:595 msgid "Out of date" msgstr "過期" -#: ../js/ui/lookingGlass.js:539 +#: ../js/ui/lookingGlass.js:620 msgid "View Source" msgstr "檢示來源" -#: ../js/ui/lookingGlass.js:545 +#: ../js/ui/lookingGlass.js:626 msgid "Web Page" msgstr "網頁" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:101 msgid "Undo" msgstr "復原" +#: ../js/ui/overview.js:166 +msgid "Windows" +msgstr "視窗" + +#: ../js/ui/overview.js:169 +msgid "Applications" +msgstr "應用程式" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 +#: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" msgstr "結束 %s" -#: ../js/ui/panel.js:498 -msgid "Preferences" -msgstr "偏好設定" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/panel.js:563 msgid "%a %b %e, %R:%S" msgstr "%b %e %a, %R:%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R" msgstr "%b %e %a, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:589 +#: ../js/ui/panel.js:568 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:590 +#: ../js/ui/panel.js:569 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/panel.js:576 msgid "%a %b %e, %l:%M:%S %p" msgstr "%b %e %a, %p %l:%M:%S" -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:577 msgid "%a %b %e, %l:%M %p" msgstr "%b %e %a, %p %l:%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:602 +#: ../js/ui/panel.js:581 msgid "%a %l:%M:%S %p" msgstr "%a %p %l:%M:%S" -#: ../js/ui/panel.js:603 +#: ../js/ui/panel.js:582 msgid "%a %l:%M %p" msgstr "%a %p %l:%M" #. 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:727 msgid "Activities" msgstr "概覽 " @@ -365,19 +414,21 @@ msgstr "重試" #: ../js/ui/placeDisplay.js:159 msgid "Connect to..." -msgstr "連接到..." +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:558 +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:33 +#, fuzzy +msgid "toggle-switch-us" +msgstr "美式 84 鍵鍵盤" #: ../js/ui/runDialog.js:233 msgid "Please enter a command:" @@ -388,100 +439,404 @@ msgstr "請輸入指令:" msgid "Execution of '%s' failed:" msgstr "執行「%s」失敗:" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/statusMenu.js:101 msgid "Available" msgstr "可用" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:106 msgid "Busy" msgstr "忙碌" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "隱形" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "我的帳號" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "帳號資訊..." +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "系統設定值" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "系統偏好設定..." - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "鎖定畫面" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "切換使用者" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." -msgstr "登出..." +msgstr "登出…" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "暫停…" + +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." -msgstr "關機..." +msgstr "關機…" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "縮放" + +#: ../js/ui/status/accessibility.js:88 +msgid "Screen Reader" +msgstr "螢幕閱讀器" + +#: ../js/ui/status/accessibility.js:91 +msgid "Screen Keyboard" +msgstr "螢幕鍵盤" + +#: ../js/ui/status/accessibility.js:94 +msgid "Visual Alerts" +msgstr "視覺警示" + +#: ../js/ui/status/accessibility.js:97 +msgid "Sticky Keys" +msgstr "黏性特殊鍵" + +#: ../js/ui/status/accessibility.js:100 +msgid "Slow Keys" +msgstr "遲緩按鍵" + +#: ../js/ui/status/accessibility.js:103 +msgid "Bounce Keys" +msgstr "回鍵" + +#: ../js/ui/status/accessibility.js:106 +msgid "Mouse Keys" +msgstr "滑鼠按鍵" + +#: ../js/ui/status/accessibility.js:110 +msgid "Universal Access Settings" +msgstr "無障礙功能設定值" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "高反差" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "大型文字" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +msgid "Bluetooth" +msgstr "藍牙" + +#: ../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:94 +msgid "Bluetooth Settings" +msgstr "藍牙設定值" + +#: ../js/ui/status/bluetooth.js:191 +msgid "Connection" +msgstr "連線" + +#: ../js/ui/status/bluetooth.js:227 +msgid "Send Files..." +msgstr "傳送檔案…" + +#: ../js/ui/status/bluetooth.js:232 +msgid "Browse Files..." +msgstr "瀏覽檔案…" + +#: ../js/ui/status/bluetooth.js:241 +msgid "Error browsing device" +msgstr "瀏覽裝置時發生錯誤" + +#: ../js/ui/status/bluetooth.js:242 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "要求的裝置是不能瀏覽的,錯誤為「%s」" + +#: ../js/ui/status/bluetooth.js:250 +msgid "Keyboard Settings" +msgstr "鍵盤設定值" + +#: ../js/ui/status/bluetooth.js:255 +msgid "Mouse Settings" +msgstr "滑鼠設定值" + +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +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 "藍牙代理程式" + +#: ../js/ui/status/bluetooth.js:371 +#, c-format +msgid "Authorization request from %s" +msgstr "來自「%s」的驗證要求" + +#: ../js/ui/status/bluetooth.js:377 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "裝置 %s 想要存取服務「%s」" + +#: ../js/ui/status/bluetooth.js:379 +msgid "Always grant access" +msgstr "永遠准許存取" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Grant this time only" +msgstr "只有這次准許" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Reject" +msgstr "拒絕" + +#: ../js/ui/status/bluetooth.js:411 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "%s 的配對確認" + +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "裝置 %s 想要和這個電腦配對" + +#: ../js/ui/status/bluetooth.js:418 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "請確認 PIN「%s」是否和裝置上的相符。" + +#: ../js/ui/status/bluetooth.js:420 +msgid "Matches" +msgstr "相符" + +#: ../js/ui/status/bluetooth.js:421 +msgid "Does not match" +msgstr "不相符" + +#: ../js/ui/status/bluetooth.js:444 +#, c-format +msgid "Pairing request for %s" +msgstr "%s 的配對請求" + +#: ../js/ui/status/bluetooth.js:452 +msgid "Please enter the PIN mentioned on the device." +msgstr "請輸入裝置所提及的 PIN。" + +#: ../js/ui/status/bluetooth.js:468 +msgid "OK" +msgstr "確定" + +#: ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "取消" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "電源定值" + +#: ../js/ui/status/power.js:112 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "可使用 %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 "剩下 %d %s %d %s" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "小時" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "分鐘" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "剩下 %d 分鐘" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "AC 電源" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "手提電腦電池" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "不斷電系統" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "監視器" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "滑鼠" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "鍵盤" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "流動電話" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "媒體播放器" + +#: ../js/ui/status/power.js:255 +msgid "Tablet" +msgstr "手寫板" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "電腦" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "不明" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "音量" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "麥克風" + +#: ../js/ui/telepathyClient.js:561 +#, c-format +msgid "%s is online." +msgstr "%s 現在上線。" + +#: ../js/ui/telepathyClient.js:566 +#, c-format +msgid "%s is offline." +msgstr "%s 現在離線。" + +#: ../js/ui/telepathyClient.js:569 +#, c-format +msgid "%s is away." +msgstr "%s 已離開。" + +#: ../js/ui/telepathyClient.js:572 +#, 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:666 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "傳送於 %X %A" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "搜尋你的電腦" + +#: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" msgstr "%s 已完成啟動" -#: ../js/ui/windowAttentionHandler.js:47 +#: ../js/ui/windowAttentionHandler.js:45 #, c-format msgid "'%s' is ready" msgstr "「%s」已就緒" -#: ../js/ui/workspacesView.js:230 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "不能加入新的工作區,因為已達到最大工作區上限。" -#: ../js/ui/workspacesView.js:247 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "不能移除第一個工作區。" -#: ../src/shell-global.c:1105 +#. 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 輸出" + +#. 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 輸入" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "系統音效" + +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "少於一分鐘之前" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分鐘前" -#: ../src/shell-global.c:1114 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 小時前" -#: ../src/shell-global.c:1119 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天前" -#: ../src/shell-global.c:1124 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週前" -#: ../src/shell-uri-util.c:89 +#: ../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 "搜尋" @@ -490,7 +845,107 @@ 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" + +#~ msgid "Clock" +#~ msgstr "時鐘" + +#~ msgid "Customize the panel clock" +#~ msgstr "自訂面板時鐘" + +#~ msgid "Custom format of the clock" +#~ msgstr "自訂時鐘的格式" + +#~ msgid "Hour format" +#~ msgstr "小時格式" + +#~ msgid "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." +#~ msgstr "如果設為 true 且格式為「12-小時」或「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 "" +#~ "這個設定鍵是在面板時鐘的「format」設定鍵被設為「custom」時使用的自訂格式。" +#~ "您可以用可被 strftime() 理解的轉換規範來取得所指定的格式。請查閱 strftime" +#~ "() 手冊以獲取更多資訊。" + +#~ 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」,時鐘會顯示自 Epoch,即 " +#~ "1970-01-01 以來的秒數。如果設定為「custom」,時鐘會根據 custom_format 設定" +#~ "鍵顯示時刻。注意不管設為「unix」或「custom」,show_date 和 show_seconds 設" +#~ "定鍵都會被忽略。" + +#~ msgid "Clock Format" +#~ msgstr "時鐘格式" + +#~ msgid "Clock Preferences" +#~ msgstr "時鐘偏好設定" + +#~ msgid "Panel Display" +#~ msgstr "面板顯示" + +#~ msgid "Show seco_nds" +#~ msgstr "顯示秒數(_N)" + +#~ msgid "Show the _date" +#~ msgstr "顯示日期(_D)" + +#~ msgid "_12 hour format" +#~ msgstr "_12 小時制" + +#~ msgid "_24 hour format" +#~ msgstr "_24 小時制" + +#~ msgid "Preferences" +#~ msgstr "偏好設定" + +#~ msgid "Overview workspace view mode" +#~ msgstr "概覽工作區檢視模式" + +#~ msgid "" +#~ "The selected workspace view mode in the overview. Supported values are " +#~ "\"single\" and \"grid\"." +#~ msgstr "" +#~ "在概覽中選取的工作區檢視模式。支援的數值有「single」(單一)和「grid」(格" +#~ "線)。" + +#~ msgid "Drag here to add favorites" +#~ msgstr "拖放到這裡加入喜好" + +#~ msgid "Find" +#~ msgstr "尋找" + +#~ msgid "Searching..." +#~ msgstr "搜尋中…" + +#~ msgid "No matching results." +#~ msgstr "沒有相符的結果。" + +#~ msgid "Invisible" +#~ msgstr "隱形" + +#~ msgid "Account Information..." +#~ msgstr "帳號資訊…" + +#~ msgid "ON" +#~ msgstr "開" + +#~ msgid "OFF" +#~ msgstr "關" diff --git a/po/zh_TW.po b/po/zh_TW.po index 664b36402..b4d8d9b49 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -2,15 +2,17 @@ # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. # Chao-Hsiung Liao , 2010. +# Wei-Lun Chao , 2010. # msgid "" msgstr "" -"Project-Id-Version: gnome-shell 2.31.5\n" +"Project-Id-Version: gnome-shell 2.91.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-21 20:42+0800\n" -"PO-Revision-Date: 2010-08-20 13:40+0800\n" +"POT-Creation-Date: 2011-01-07 09:43+0800\n" +"PO-Revision-Date: 2011-01-05 13:31+0800\n" "Last-Translator: Chao-Hsiung Liao \n" "Language-Team: Chinese (Taiwan) \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -24,14 +26,6 @@ msgstr "GNOME Shell" 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 " @@ -39,62 +33,52 @@ msgid "" 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." msgstr "GNOME Shell 擴充功能有 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:8 -msgid "Hour format" -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." +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +#, fuzzy +#| msgid "" +#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " +#| "the clock, in addition to time." +msgid "If true, display date in the clock, in addition to time." msgstr "" "如果設為 true 且格式為「12-小時」或「24-小時」,在時鐘裡顯示日期,加在時刻後" "面。" -#: ../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 "如果設為 true 且格式為「12-小時」或「24-小時」,在時刻裡顯示秒鐘。" +#: ../data/org.gnome.shell.gschema.xml.in.h:8 +#, fuzzy +#| msgid "If true, display the ISO week date in the calendar." +msgid "If true, display seconds in time." +msgstr "如果設為 true,在日曆中顯示 ISO 週數。" -#: ../data/org.gnome.shell.gschema.xml.in.h:11 +#: ../data/org.gnome.shell.gschema.xml.in.h:9 msgid "If true, display the ISO week date in the calendar." msgstr "如果設為 true,在日曆中顯示 ISO 週數。" -#: ../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 "喜好的應用程式桌面檔案 ID 清單" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "概覽工作區檢視模式" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -106,25 +90,25 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "在時鐘內顯示日期" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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:14 msgid "Show time with seconds" msgstr "在時刻中顯示秒數" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "對應這些辨別碼的應用程式會顯示在喜好區域。" -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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 " @@ -133,7 +117,7 @@ msgstr "" "錄製好的畫面廣播檔案名稱會以目前的時刻作為獨特的檔名,並使用這個延伸檔名。當" "錄製為不同的容器格式時應該做適當變更。" -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -141,18 +125,11 @@ msgstr "" "由 GNOME Shell 的畫面廣播錄製程式所錄製成果的框架率,以 frames-per-second " "計。" -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" 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:19 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 " @@ -163,207 +140,277 @@ 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 "" -"這個設定鍵是在面板時鐘的「format」設定鍵被設為「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 "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 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:21 msgid "Whether to collect stats about applications usage" msgstr "是否收集關於應用程式使用率的狀態" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "時鐘格式" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 +msgid "Clip the crosshairs at the center" +msgstr "" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "時鐘偏好設定" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 +msgid "Color of the crosshairs" +msgstr "十字準星的顏色" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -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/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "顯示秒數(_N)" +#: ../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/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "顯示日期(_D)" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:5 +msgid "" +"Determines the transparency of the crosshairs, from fully opaque to fully " +"transparent." +msgstr "決定十字準星的透明度,從完全不透明到完全透明。" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_12 小時制" +#: ../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/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_24 小時制" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 +#, fuzzy +#| msgid "Enabled" +msgid "Enable lens mode" +msgstr "啟用觸控螢幕模式" -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:778 +#: ../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 "螢幕位置" + +#: ../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 "放大的倍數。數值 1.0 表示不放大。數值 2.0 為放大兩倍。" + +#: ../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 "組成十字準星的垂直和水平線條的寬度。" + +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "全部" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "程式集" -#: ../js/ui/appDisplay.js:416 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "偏好設定" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "新視窗" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "自喜好中移除" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:568 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 "尋找" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "移除" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "搜尋中..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "沒有相符的結果。" - -#. **** 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 "位置 & 裝置" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "最近使用項目" -#: ../js/ui/lookingGlass.js:471 +#: ../js/ui/lookingGlass.js:552 msgid "No extensions installed" msgstr "沒有安裝擴充功能" -#: ../js/ui/lookingGlass.js:508 +#: ../js/ui/lookingGlass.js:589 msgid "Enabled" msgstr "已啟用" -#: ../js/ui/lookingGlass.js:510 +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "已停用" -#: ../js/ui/lookingGlass.js:512 +#: ../js/ui/lookingGlass.js:593 msgid "Error" msgstr "錯誤" -#: ../js/ui/lookingGlass.js:514 +#: ../js/ui/lookingGlass.js:595 msgid "Out of date" msgstr "過期" -#: ../js/ui/lookingGlass.js:539 +#: ../js/ui/lookingGlass.js:620 msgid "View Source" msgstr "檢示來源" -#: ../js/ui/lookingGlass.js:545 +#: ../js/ui/lookingGlass.js:626 msgid "Web Page" msgstr "網頁" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:101 msgid "Undo" msgstr "復原" +#: ../js/ui/overview.js:166 +msgid "Windows" +msgstr "視窗" + +#: ../js/ui/overview.js:169 +msgid "Applications" +msgstr "應用程式" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 +#: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" msgstr "結束 %s" -#: ../js/ui/panel.js:498 -msgid "Preferences" -msgstr "偏好設定" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/panel.js:563 msgid "%a %b %e, %R:%S" msgstr "%b %e %a, %R:%S" -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R" msgstr "%b %e %a, %R" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:589 +#: ../js/ui/panel.js:568 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:590 +#: ../js/ui/panel.js:569 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/panel.js:576 msgid "%a %b %e, %l:%M:%S %p" msgstr "%b %e %a, %p %l:%M:%S" -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:577 msgid "%a %b %e, %l:%M %p" msgstr "%b %e %a, %p %l:%M" #. Translators: This is a time format without date used #. for AM/PM. -#: ../js/ui/panel.js:602 +#: ../js/ui/panel.js:581 msgid "%a %l:%M:%S %p" msgstr "%a %p %l:%M:%S" -#: ../js/ui/panel.js:603 +#: ../js/ui/panel.js:582 msgid "%a %l:%M %p" msgstr "%a %p %l:%M" #. 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:727 msgid "Activities" msgstr "概覽 " @@ -378,19 +425,21 @@ msgstr "重試" #: ../js/ui/placeDisplay.js:159 msgid "Connect to..." -msgstr "連接到..." +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:558 +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:33 +#, fuzzy +msgid "toggle-switch-us" +msgstr "美式 84 鍵鍵盤" #: ../js/ui/runDialog.js:233 msgid "Please enter a command:" @@ -401,100 +450,404 @@ msgstr "請輸入指令:" msgid "Execution of '%s' failed:" msgstr "執行「%s」失敗:" -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/statusMenu.js:101 msgid "Available" msgstr "可用" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:106 msgid "Busy" msgstr "忙碌" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "隱形" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "我的帳號" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "帳號資訊..." +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "系統設定值" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "系統偏好設定..." - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "鎖定畫面" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "切換使用者" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." -msgstr "登出..." +msgstr "登出…" -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "暫停…" + +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." -msgstr "關機..." +msgstr "關機…" -#: ../js/ui/windowAttentionHandler.js:45 +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "縮放" + +#: ../js/ui/status/accessibility.js:88 +msgid "Screen Reader" +msgstr "螢幕閱讀器" + +#: ../js/ui/status/accessibility.js:91 +msgid "Screen Keyboard" +msgstr "螢幕鍵盤" + +#: ../js/ui/status/accessibility.js:94 +msgid "Visual Alerts" +msgstr "視覺警示" + +#: ../js/ui/status/accessibility.js:97 +msgid "Sticky Keys" +msgstr "黏性特殊鍵" + +#: ../js/ui/status/accessibility.js:100 +msgid "Slow Keys" +msgstr "遲緩按鍵" + +#: ../js/ui/status/accessibility.js:103 +msgid "Bounce Keys" +msgstr "回鍵" + +#: ../js/ui/status/accessibility.js:106 +msgid "Mouse Keys" +msgstr "滑鼠按鍵" + +#: ../js/ui/status/accessibility.js:110 +msgid "Universal Access Settings" +msgstr "無障礙功能設定值" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "高反差" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "大型文字" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +msgid "Bluetooth" +msgstr "藍牙" + +#: ../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:94 +msgid "Bluetooth Settings" +msgstr "藍牙設定值" + +#: ../js/ui/status/bluetooth.js:191 +msgid "Connection" +msgstr "連線" + +#: ../js/ui/status/bluetooth.js:227 +msgid "Send Files..." +msgstr "傳送檔案…" + +#: ../js/ui/status/bluetooth.js:232 +msgid "Browse Files..." +msgstr "瀏覽檔案…" + +#: ../js/ui/status/bluetooth.js:241 +msgid "Error browsing device" +msgstr "瀏覽裝置時發生錯誤" + +#: ../js/ui/status/bluetooth.js:242 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "要求的裝置是不能瀏覽的,錯誤為「%s」" + +#: ../js/ui/status/bluetooth.js:250 +msgid "Keyboard Settings" +msgstr "鍵盤設定值" + +#: ../js/ui/status/bluetooth.js:255 +msgid "Mouse Settings" +msgstr "滑鼠設定值" + +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +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 "藍牙代理程式" + +#: ../js/ui/status/bluetooth.js:371 +#, c-format +msgid "Authorization request from %s" +msgstr "來自「%s」的驗證要求" + +#: ../js/ui/status/bluetooth.js:377 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "裝置 %s 想要存取服務「%s」" + +#: ../js/ui/status/bluetooth.js:379 +msgid "Always grant access" +msgstr "永遠准許存取" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Grant this time only" +msgstr "只有這次准許" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Reject" +msgstr "拒絕" + +#: ../js/ui/status/bluetooth.js:411 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "%s 的配對確認" + +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "裝置 %s 想要和這個電腦配對" + +#: ../js/ui/status/bluetooth.js:418 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "請確認 PIN「%s」是否和裝置上的相符。" + +#: ../js/ui/status/bluetooth.js:420 +msgid "Matches" +msgstr "相符" + +#: ../js/ui/status/bluetooth.js:421 +msgid "Does not match" +msgstr "不相符" + +#: ../js/ui/status/bluetooth.js:444 +#, c-format +msgid "Pairing request for %s" +msgstr "%s 的配對請求" + +#: ../js/ui/status/bluetooth.js:452 +msgid "Please enter the PIN mentioned on the device." +msgstr "請輸入裝置所提及的 PIN。" + +#: ../js/ui/status/bluetooth.js:468 +msgid "OK" +msgstr "確定" + +#: ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "取消" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "電源定值" + +#: ../js/ui/status/power.js:112 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "可使用 %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 "剩下 %d %s %d %s" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "小時" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "分鐘" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "剩下 %d 分鐘" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "AC 電源" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "筆記型電腦電池" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "不斷電系統" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "監視器" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "滑鼠" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "鍵盤" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "行動電話" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "媒體播放器" + +#: ../js/ui/status/power.js:255 +msgid "Tablet" +msgstr "手寫板" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "電腦" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "不明" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "音量" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "麥克風" + +#: ../js/ui/telepathyClient.js:561 +#, c-format +msgid "%s is online." +msgstr "%s 現在上線。" + +#: ../js/ui/telepathyClient.js:566 +#, c-format +msgid "%s is offline." +msgstr "%s 現在離線。" + +#: ../js/ui/telepathyClient.js:569 +#, c-format +msgid "%s is away." +msgstr "%s 已離開。" + +#: ../js/ui/telepathyClient.js:572 +#, 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:666 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "傳送於 %X %A" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "搜尋您的電腦" + +#: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" msgstr "%s 已完成啟動" -#: ../js/ui/windowAttentionHandler.js:47 +#: ../js/ui/windowAttentionHandler.js:45 #, c-format msgid "'%s' is ready" msgstr "「%s」已就緒" -#: ../js/ui/workspacesView.js:230 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "不能加入新的工作區,因為已達到最大工作區上限。" -#: ../js/ui/workspacesView.js:247 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "不能移除第一個工作區。" -#: ../src/shell-global.c:1105 +#. 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 輸出" + +#. 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 輸入" + +#: ../src/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "系統音效" + +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "少於一分鐘之前" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d 分鐘前" -#: ../src/shell-global.c:1114 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d 小時前" -#: ../src/shell-global.c:1119 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d 天前" -#: ../src/shell-global.c:1124 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" msgstr[0] "%d 週前" -#: ../src/shell-uri-util.c:89 +#: ../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 "搜尋" @@ -503,7 +856,107 @@ 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" + +#~ msgid "Clock" +#~ msgstr "時鐘" + +#~ msgid "Customize the panel clock" +#~ msgstr "自訂面板時鐘" + +#~ msgid "Custom format of the clock" +#~ msgstr "自訂時鐘的格式" + +#~ msgid "Hour format" +#~ msgstr "小時格式" + +#~ msgid "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." +#~ msgstr "如果設為 true 且格式為「12-小時」或「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 "" +#~ "這個設定鍵是在面板時鐘的「format」設定鍵被設為「custom」時使用的自訂格式。" +#~ "您可以用可被 strftime() 理解的轉換規範來取得所指定的格式。請查閱 strftime" +#~ "() 手冊以獲取更多資訊。" + +#~ 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」,時鐘會顯示自 Epoch,即 " +#~ "1970-01-01 以來的秒數。如果設定為「custom」,時鐘會根據 custom_format 設定" +#~ "鍵顯示時刻。注意不管設為「unix」或「custom」,show_date 和 show_seconds 設" +#~ "定鍵都會被忽略。" + +#~ msgid "Clock Format" +#~ msgstr "時鐘格式" + +#~ msgid "Clock Preferences" +#~ msgstr "時鐘偏好設定" + +#~ msgid "Panel Display" +#~ msgstr "面板顯示" + +#~ msgid "Show seco_nds" +#~ msgstr "顯示秒數(_N)" + +#~ msgid "Show the _date" +#~ msgstr "顯示日期(_D)" + +#~ msgid "_12 hour format" +#~ msgstr "_12 小時制" + +#~ msgid "_24 hour format" +#~ msgstr "_24 小時制" + +#~ msgid "Preferences" +#~ msgstr "偏好設定" + +#~ msgid "Overview workspace view mode" +#~ msgstr "概覽工作區檢視模式" + +#~ msgid "" +#~ "The selected workspace view mode in the overview. Supported values are " +#~ "\"single\" and \"grid\"." +#~ msgstr "" +#~ "在概覽中選取的工作區檢視模式。支援的數值有「single」(單一)和「grid」(格" +#~ "線)。" + +#~ msgid "Drag here to add favorites" +#~ msgstr "拖放到這裡加入喜好" + +#~ msgid "Find" +#~ msgstr "尋找" + +#~ msgid "Searching..." +#~ msgstr "搜尋中…" + +#~ msgid "No matching results." +#~ msgstr "沒有相符的結果。" + +#~ msgid "Invisible" +#~ msgstr "隱形" + +#~ msgid "Account Information..." +#~ msgstr "帳號資訊…" + +#~ msgid "ON" +#~ msgstr "開" + +#~ msgid "OFF" +#~ msgstr "關" From 34f8568547cd93a7a0edd0216a3df9cb8116ddef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Fri, 7 Jan 2011 13:34:46 +0200 Subject: [PATCH 055/132] [l10n] Updated Estonian translation --- po/et.po | 137 +++++++++++++++++++++++-------------------------------- 1 file changed, 57 insertions(+), 80 deletions(-) diff --git a/po/et.po b/po/et.po index ae61fc50d..b1e54761e 100644 --- a/po/et.po +++ b/po/et.po @@ -5,17 +5,17 @@ # # This file is distributed under the same license as the gnome-shell package. # -# Mattias Põldaru , 2010. +# Mattias Põldaru , 2010, 2011. # Ivar Smolin , 2011. # msgid "" msgstr "" -"Project-Id-Version: gnome-shell master\n" +"Project-Id-Version: gnome-shell MASTER\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&component=general\n" -"POT-Creation-Date: 2010-12-20 21:07+0000\n" -"PO-Revision-Date: 2011-01-02 18:39+0200\n" -"Last-Translator: Ivar Smolin \n" +"POT-Creation-Date: 2011-01-04 16:17+0000\n" +"PO-Revision-Date: 2011-01-07 11:20+0300\n" +"Last-Translator: Mattias Põldaru \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,12 +31,6 @@ msgstr "GNOME kest" msgid "Window management and application launching" msgstr "Aknahaldur ja rakenduste käivitaja" -msgid "Clock" -msgstr "Kell" - -msgid "Customize the panel clock" -msgstr "Paneelikella kohandamine" - msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." @@ -44,9 +38,6 @@ msgstr "" "Lubab ligipääsu sisemistele silumise ja monitoorimise tööriistadele Alt-F2 " "dialoogi kaudu." -msgid "Custom format of the clock" -msgstr "Kellaaaja kohandatud vorming" - msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Arendajate ja testijate jaoks sisemiste tööriistade lubamine Alt-F2 alt" @@ -65,25 +56,14 @@ msgstr "" msgid "History for command (Alt-F2) dialog" msgstr "Käsudialoogi (Alt-F2) ajalugu" -msgid "Hour format" -msgstr "Tundide vorming" +msgid "If true, display date in the clock, in addition to time." +msgstr "Kui määratud, siis kuvatakse kellaaja kõrval ka kuupäeva." -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display date in the " -"clock, in addition to time." -msgstr "" -"Kui tõene ja vorming on kas \"12-tundi\" või \"24-tundi\", kuvatakse " -"kellaaja kõrval ka kuupäeva." - -msgid "" -"If true and format is either \"12-hour\" or \"24-hour\", display seconds in " -"time." -msgstr "" -"Kui tõene ja vorming on kas \"12-tundi\" või \"24-tundi\", kuvatakse " -"kellaaega koos sekunditega." +msgid "If true, display seconds in time." +msgstr "Kui määratud, siis kuvatakse aja juures ka sekundeid." msgid "If true, display the ISO week date in the calendar." -msgstr "Kui tõene, kuvatakse kalendris kuupäeva ISO nädalate järgi." +msgstr "Kui määratud, kuvatakse kalendris kuupäeva ISO nädalavormingus." msgid "List of desktop file IDs for favorite applications" msgstr "Lemmikrakenduste töölauafailide ID-de loend" @@ -103,7 +83,7 @@ msgid "Show date in clock" msgstr "Kell näitab kuupäeva" msgid "Show the week date in the calendar" -msgstr "Kalendris näidatakse nädala kuupäeva" +msgstr "Kalendris näidatakse kuupäeva nädalavormingus" msgid "Show time with seconds" msgstr "Kellaaega näidatakse sekunditega" @@ -134,22 +114,6 @@ msgid "" "remove already saved data." msgstr "" -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 "" - -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 "" - msgid "Uuids of extensions to disable" msgstr "Keelatavate laienduste UUID-d" @@ -266,27 +230,7 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "Niitristi moodustavate püst- ja rõhtjoone laius" -msgid "Clock Format" -msgstr "Kellaaja vorming" - -msgid "Clock Preferences" -msgstr "Kella eelistused" - -msgid "Panel Display" -msgstr "Paneelikuva" - -msgid "Show seco_nds" -msgstr "_Sekundeid näidatakse" - -msgid "Show the _date" -msgstr "_Kuupäeva näidatakse" - -msgid "_12 hour format" -msgstr "_12 tunni vorming" - -msgid "_24 hour format" -msgstr "_24 tunni vorming" - +#. Translators: Filter to display all applications msgid "All" msgstr "Kõik" @@ -356,9 +300,6 @@ msgstr "Rakendused" msgid "Quit %s" msgstr "Lõpeta %s" -msgid "Preferences" -msgstr "Eelistused" - #. Translators: This is the time format with date used #. in 24-hour mode. msgid "%a %b %e, %R:%S" @@ -525,7 +466,7 @@ msgid "Sound Settings" msgstr "Helisätted" msgid "Bluetooth Agent" -msgstr "" +msgstr "Bluetoothi agent" #, c-format msgid "Authorization request from %s" @@ -581,13 +522,13 @@ msgstr "Toitesätted..." #, c-format msgid "%d hour remaining" msgid_plural "%d hours remaining" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "jäänud %d tund" +msgstr[1] "jäänud %d tundi" #. TRANSLATORS: this is a time string, as in "%d hours %d minutes remaining" #, c-format msgid "%d %s %d %s remaining" -msgstr "" +msgstr "jäänud %d %s ja %d %s" msgid "hour" msgid_plural "hours" @@ -602,8 +543,8 @@ msgstr[1] "minutit" #, c-format msgid "%d minute remaining" msgid_plural "%d minutes remaining" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "jäänud %d minut" +msgstr[1] "jäänud %d minutit" msgid "AC adapter" msgstr "Võrgutoite adapter" @@ -624,7 +565,7 @@ msgid "Keyboard" msgstr "Klaviatuur" msgid "PDA" -msgstr "" +msgstr "Elektronmärkmik" msgid "Cell phone" msgstr "Mobiiltelefon" @@ -633,7 +574,7 @@ msgid "Media player" msgstr "Meediaesitaja" msgid "Tablet" -msgstr "" +msgstr "Graafikalaud" msgid "Computer" msgstr "Arvuti" @@ -668,7 +609,7 @@ msgstr "%s on hõivatud." #. locale, without seconds. #, no-c-format msgid "Sent at %X on %A" -msgstr "" +msgstr "Saadetud: %a, kell %X" msgid "Search your computer" msgstr "" @@ -754,6 +695,42 @@ msgstr "Otsing" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "Kell" + +#~ msgid "Customize the panel clock" +#~ msgstr "Paneelikella kohandamine" + +#~ msgid "Custom format of the clock" +#~ msgstr "Kellaaaja kohandatud vorming" + +#~ msgid "Hour format" +#~ msgstr "Tundide vorming" + +#~ msgid "Clock Format" +#~ msgstr "Kellaaja vorming" + +#~ msgid "Clock Preferences" +#~ msgstr "Kella eelistused" + +#~ msgid "Panel Display" +#~ msgstr "Paneelikuva" + +#~ msgid "Show seco_nds" +#~ msgstr "_Sekundeid näidatakse" + +#~ msgid "Show the _date" +#~ msgstr "_Kuupäeva näidatakse" + +#~ msgid "_12 hour format" +#~ msgstr "_12 tunni vorming" + +#~ msgid "_24 hour format" +#~ msgstr "_24 tunni vorming" + +#~ msgid "Preferences" +#~ msgstr "Eelistused" + #~ msgid "Drag here to add favorites" #~ msgstr "Lemmikute lisamiseks lohista need siia" From 5322e9a64391a0f2a834d0458a66943d4d0105e0 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 7 Jan 2011 16:22:28 +0100 Subject: [PATCH 056/132] notificationDaemon: Fix trayIcon check Correctly detect non tray icons and use the ShellApp's icon in that case. --- js/ui/notificationDaemon.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index 719700874..cbf34cf35 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -476,8 +476,8 @@ Source.prototype = { return; // Only override the icon if we were previously using - // notification-based icons (ie, not a trayicon) - if (this.useNotificationIcon) { + // notification-based icons (ie, not a trayicon) or if it was unset before + if (!this._isTrayIcon) { this.useNotificationIcon = false; this._setSummaryIcon(this.app.create_icon_texture (this.ICON_SIZE)); } From 512798f9c698b92bfe4aebb7fbc10a04d452991c Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 4 Jan 2011 14:30:03 -0500 Subject: [PATCH 057/132] Factor out a function to load the default theme We will use this function elsewhere when the theme needs to be reloaded. https://bugzilla.gnome.org/show_bug.cgi?id=630428 --- js/ui/main.js | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/js/ui/main.js b/js/ui/main.js index e08781bfc..86e510237 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -109,10 +109,7 @@ function start() { global.stage.color = DEFAULT_BACKGROUND_COLOR; global.stage.no_clear_hint = true; - let themeContext = St.ThemeContext.get_for_stage (global.stage); - let stylesheetPath = global.datadir + '/theme/gnome-shell.css'; - let theme = new St.Theme ({ application_stylesheet: stylesheetPath }); - themeContext.set_theme (theme); + loadTheme(); let shellwm = global.window_manager; shellwm.takeover_keybinding('panel_main_menu'); @@ -201,6 +198,18 @@ function start() { } } +/** + * loadTheme: + * + * Reloads the theme CSS file from the default theme. + */ +function loadTheme() { + let themeContext = St.ThemeContext.get_for_stage (global.stage); + let stylesheetPath = global.datadir + '/theme/gnome-shell.css'; + let theme = new St.Theme ({ application_stylesheet: stylesheetPath }); + themeContext.set_theme (theme); +} + /** * _log: * @category: string message type ('info', 'error') From 77289737c51b42047cd56ed7e78ff9fbadce9c96 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Tue, 4 Jan 2011 14:34:54 -0500 Subject: [PATCH 058/132] Add an 'rt' command to the Run dialog to reload the theme This should be useful for theme authors who want to quickly reload the theme without restarting the whole shell. Signed-off-by: Federico Mena Quintero https://bugzilla.gnome.org/show_bug.cgi?id=630428 --- js/ui/runDialog.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index aae73924a..d09639ceb 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -207,6 +207,11 @@ RunDialog.prototype = { 'debugexit': Lang.bind(this, function() { Meta.exit(Meta.ExitCode.ERROR); + }), + + // rt is short for "reload theme" + 'rt': Lang.bind(this, function() { + Main.loadTheme(); }) }; From a538027fe783ce4925a11badbaddfcc35642dc29 Mon Sep 17 00:00:00 2001 From: A S Alam Date: Sat, 8 Jan 2011 08:25:16 +0530 Subject: [PATCH 059/132] Translation: update Punjabi --- po/pa.po | 331 ++++++++++++++++++++++++++----------------------------- 1 file changed, 157 insertions(+), 174 deletions(-) diff --git a/po/pa.po b/po/pa.po index 3af889994..8236de545 100644 --- a/po/pa.po +++ b/po/pa.po @@ -1,14 +1,14 @@ # Punjabi translation for gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. -# A S Alam , 2009, 2010. +# A S Alam , 2009, 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: 2010-12-20 21:07+0000\n" -"PO-Revision-Date: 2010-12-27 07:12+0530\n" +"POT-Creation-Date: 2011-01-04 16:17+0000\n" +"PO-Revision-Date: 2011-01-08 08:20+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" @@ -26,14 +26,6 @@ msgstr "ਗਨੋਮ ਸ਼ੈਲ" 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 " @@ -41,57 +33,49 @@ msgid "" 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." msgstr "" "ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ 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 "" +#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " +#| "the clock, in addition to time." +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" -msgstr "ਘੰਟਾ ਫਾਰਮੈਟ" +#| msgid "If true, display the ISO week date in the calendar." +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 "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਘੜੀ ਵਿੱਚ \"12-hour\" ਜਾਂ \" 24-hour\" ਸਮੇਂ ਦੇ ਨਾਲ ਵੇਖਾਏ ਜਾਣਗੇ।" - -#: ../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\" ਸਕਿੰਟ ਵੇਖਾਏ ਜਾਣਗੇ।" - -#: ../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 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "List of desktop file IDs for favorite applications" msgstr "ਪਸੰਦੀਦਾ ਐਪਲੀਕੇਸ਼ਨ ਲਈ ਡੈਸਕਟਾਪ ਫਾਇਲ ID ਦੀ ਲਿਸਟ ਹੈ" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -103,32 +87,35 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "ਘੜੀ ਵਿੱਚ ਮਿਤੀ ਵੇਖੋ" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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:14 msgid "Show time with seconds" msgstr "ਸਮਾਂ ਵਿੱਚ ਸਕਿੰਟ ਵੇਖੋ" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 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:16 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:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -136,50 +123,27 @@ msgstr "" "ਗਨੋਮ ਸ਼ੈੱਲ ਦੇ ਸਕਰੀਨਕਾਸਟ ਰਿਕਾਰਡਰ ਵਲੋਂ ਰਿਕਾਰਡ ਕਰਕੇ ਬਣਾਈ ਗਈ ਸਕਰੀਨਕਾਸਟ ਦਾ ਫਰੇਮਰੇਟ ਫਰੇਮ ਪ੍ਰਤੀ " "ਸਕਿੰਟ 'ਚ ਹੈ।" -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 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:19 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 "" +"ਸ਼ੈੱਲ ਲਗਾਤਾਰ ਸਰਗਰਮ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਕਿ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ " +"ਨੂੰ ਵੇਖਾਇਆ ਜਾ ਸਕੇ (ਜਿਵੇਂ ਕਿ ਲਾਂਚਰ ਵਿੱਚ)। ਹਾਲਾਂਕਿ ਇਹ ਡਾਟਾ ਪ੍ਰਾਈਵੇਟ ਹੀ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਤਾਂ ਵੀ " +"ਜੇ ਤੁਸੀਂ ਚਾਹੋ ਤਾਂ ਇਸ ਨੂੰ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ। ਯਾਦ ਰੱਖੋ ਕਿ ਇੰਝ ਕਰਨ ਨਾਲ " +"ਪਹਿਲਾਂ ਸੰਭਾਲਿਆ ਗਿਆ ਡਾਟਾ ਹਟਾਇਆ ਨਹੀਂ ਜਾਵੇਗਾ।" -#: ../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 "" -"ਇਹ ਕੁੰਜੀ ਪੈਨਲ ਘੜੀ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫਾਰਮੈਟ ਦਿੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਫਾਰਮੈਟ ਕੁੰਜੀ \"ਕਸਟਮ\" ਸੈੱਟ ਕੀਤੀ " -"ਹੋਵੇ। ਤੁਸੀਂ ਖਾਸ ਫਾਰਮੈਟ ਦੇਣ ਲਈ ਹਦਾਇਤਾਂ ਵਾਸਤੇ strftime () ਨੂੰ ਵਰਤ ਸਕਦੇ ਹੋ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ " -"strftime () ਦਸਤਾਵੇਜ਼ ਵੇਖੋ।" - -#: ../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 "" -"ਇਹ ਕੁੰਜੀ ਤਹਿ ਕਰਦੀ ਹੈ ਕਿ ਕਿਹੜਾ ਪੈਨਲ ਘੜੀ ਵਿੱਚ ਘੰਟਾ ਫਾਰਮੈਟ ਵਰਤਿਆ ਜਾਵੇ। ਸੰਭਵ ਮੁੱਲ ਹਨ \"12-" -"hour\"(੧੨-ਘੰਟੇ), \"24-hour\" (੨੪-ਘੰਟੇ), \"unix\" (ਯੂਨੈਕਸ) ਅਤੇ \"custom\" (ਪਸੰਦੀਦਾ)। " -"ਜੇ \"ਯੂਨੈਕਸ\" ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ ਘੜੀ ਨੂੰ ਈਪੋਚ (੦੧-ਜਨਵਰੀ-੧੯੭੦) ਤੋਂ ਵੇਖਾਇਆ\n" -"ਜਾਵੇਗਾ। ਜੇ \"ਪਸੰਦੀਦਾ\" ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ, ਘੜੀ ਨੂੰ custom_format ਕੁੰਜੀ ਵਿੱਚ ਦਿੱਤੇ ਫਾਰਮੈਟ " -"ਮੁਤਾਬਕ ਵੇਖਾਇਆ ਜਾਵੇਗਾ। ਯਾਦ ਰੱਖੋ ਕਿ ਜੇ \"ਯੂਨੈਕਸ\" ਜਾਂ \"ਪਸੰਦੀਦਾ\" ਸੈੱਟ ਕੀਤਾ ਤਾਂ ਅੱਪਗਰੇਡ ਮਿਤੀ " -"ਵੇਖਾਓ ਤੇ ਸਕਿੰਟ ਵੇਖਾਓ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਵੇਗਾ।" - -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "ਇਕਟੈਨਸ਼ਨ ਦੀ Uuids ਬੰਦ ਹੈ" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "ਐਪਲੀਕੇਸ਼ਨ ਵਰਤੋਂ ਬਾਰੇ ਅੰਕੜੇ ਇੱਕਠੇ ਕਰਨੇ ਹਨ" @@ -231,7 +195,7 @@ msgstr "ਲੈਨਜ਼ ਮੋਡ ਚਾਲੂ" msgid "" "Enables/disables display of crosshairs centered on the magnified mouse " "sprite." -msgstr "" +msgstr "ਵੱਡਦਰਸ਼ੀ ਮਾਊਸ ਸਪਰਿਟ ਉੱਤੇ ਸੈਂਟਰ ਕੀਤੇ ਕਰਾਂਸਹੇਅਰ ਵੇਖਾਉਣਾ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ।" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9 msgid "" @@ -239,6 +203,9 @@ msgid "" "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" @@ -287,8 +254,7 @@ 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 @@ -311,55 +277,28 @@ msgstr "ਕੀ ਵੱਡਦਰਸ਼ੀ ਝਲਕ ਦੀ ਸਥਿਤੀ ਸਿ msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "ਵਰਟੀਕਲ ਤੇ ਹਰੀਜੱਟਲ ਲਾਈਨਾਂ ਦੀ ਚੌੜਾਈ, ਜੋ ਕਿ ਕਰਾਂਸਹੇਅਰ ਬਣਾਉਂਦੀਆਂ ਹਨ" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "ਘੜੀ ਫਾਰਮੈਟ" - -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "ਘੜੀ ਪਸੰਦ" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "ਪੈਨਲ ਦਿੱਖ" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "ਸਕਿੰਟ ਵੇਖੋ(_n)" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "ਮਿਤੀ ਵੇਖੋ(_d)" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "_੧੨ ਘੰਟੇ ਫਾਰਮੈਟ" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "_੨੪ ਘੰਟੇ ਫਾਰਮੈਟ" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 msgid "All" msgstr "ਸਭ" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "ਐਪਲੀਕੇਸ਼ਨ" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "ਪਸੰਦ" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "ਨਵੀਂ ਵਿੰਡੋ" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "ਪਸੰਦ ਵਿੱਚੋਂ ਹਟਾਓ" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "ਪਸੰਦ 'ਚ ਸ਼ਾਮਲ ਕਰੋ" @@ -416,7 +355,6 @@ msgid "Undo" msgstr "ਵਾਪਸ" #: ../js/ui/overview.js:158 -#| msgid "New Window" msgid "Windows" msgstr "ਵਿੰਡੋ" @@ -425,58 +363,54 @@ msgid "Applications" msgstr "ਐਪਲੀਕੇਸ਼ਨ" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 +#: ../js/ui/panel.js:476 #, c-format msgid "Quit %s" msgstr "%s ਬੰਦ ਕਰੋ" -#: ../js/ui/panel.js:499 -msgid "Preferences" -msgstr "ਮੇਰੀ ਪਸੰਦ" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:561 msgid "%a %b %e, %R:%S" msgstr "%a, %e %b %R:%S" -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:562 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:590 +#: ../js/ui/panel.js:566 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/panel.js:567 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:574 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e %b, %l:%M:%S %p" -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:575 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:603 +#: ../js/ui/panel.js:579 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:604 +#: ../js/ui/panel.js:580 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:749 +#: ../js/ui/panel.js:725 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" @@ -595,7 +529,7 @@ msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" msgid "Large Text" msgstr "ਵੱਡੇ ਅੱਖਰ" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 msgid "Bluetooth" msgstr "ਬਲਿਊਟੁੱਥ" @@ -603,133 +537,124 @@ msgstr "ਬਲਿਊਟੁੱਥ" msgid "Visibility" msgstr "ਦਿੱਖ" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "...ਜੰਤਰ ਨੂੰ ਫਾਇਲਾਂ ਭੇਜੋ" -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "...ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ" #: ../js/ui/status/bluetooth.js:94 -#| msgid "System Settings" msgid "Bluetooth Settings" msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:151 -#| msgid "Connect to..." +#: ../js/ui/status/bluetooth.js:185 msgid "Connection" msgstr "ਕੁਨੈਕਸ਼ਨ" -#: ../js/ui/status/bluetooth.js:187 -#| msgid "Suspend..." +#: ../js/ui/status/bluetooth.js:221 msgid "Send Files..." msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ" -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:226 msgid "Browse Files..." msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ" -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:235 msgid "Error browsing device" msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:236 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'" -#: ../js/ui/status/bluetooth.js:210 -#| msgid "System Settings" +#: ../js/ui/status/bluetooth.js:244 msgid "Keyboard Settings" msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:215 -#| msgid "System Settings" +#: ../js/ui/status/bluetooth.js:249 msgid "Mouse Settings" msgstr "ਮਾਊਸ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 -#| msgid "System Settings" +#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 +#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 +#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 msgid "Bluetooth Agent" msgstr "ਬਲਿਊਟੁੱਥ ਏਜੰਟ" -#: ../js/ui/status/bluetooth.js:328 +#: ../js/ui/status/bluetooth.js:362 #, c-format msgid "Authorization request from %s" msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ" -#: ../js/ui/status/bluetooth.js:334 +#: ../js/ui/status/bluetooth.js:368 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।" -#: ../js/ui/status/bluetooth.js:336 +#: ../js/ui/status/bluetooth.js:370 msgid "Always grant access" msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:337 +#: ../js/ui/status/bluetooth.js:371 msgid "Grant this time only" msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:338 +#: ../js/ui/status/bluetooth.js:372 msgid "Reject" msgstr "ਨਾ-ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:402 #, c-format msgid "Pairing confirmation for %s" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 #, c-format msgid "Device %s wants to pair with this computer" msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ" -#: ../js/ui/status/bluetooth.js:375 +#: ../js/ui/status/bluetooth.js:409 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।" -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:411 msgid "Matches" msgstr "ਮਿਲਦਾ ਹੈ" -#: ../js/ui/status/bluetooth.js:378 +#: ../js/ui/status/bluetooth.js:412 msgid "Does not match" msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ" -#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:435 #, c-format msgid "Pairing request for %s" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:443 msgid "Please enter the PIN mentioned on the device." msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।" -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:459 msgid "OK" msgstr "ਠੀਕ ਹੈ" -#: ../js/ui/status/bluetooth.js:426 +#: ../js/ui/status/bluetooth.js:460 msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" #: ../js/ui/status/power.js:85 -#| msgid "System Settings" msgid "Power Settings" msgstr "ਪਾਵਰ ਸੈਟਿੰਗ" #: ../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 ਘੰਟਾ ਬਾਕੀ" @@ -748,8 +673,6 @@ msgstr[0] "ਘੰਟਾ" msgstr[1] "ਘੰਟੇ" #: ../js/ui/status/power.js:117 -#| msgid "%d minute ago" -#| msgid_plural "%d minutes ago" msgid "minute" msgid_plural "minutes" msgstr[0] "ਮਿੰਟ" @@ -757,8 +680,6 @@ msgstr[1] "ਮਿੰਟ" #: ../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 ਮਿੰਟ ਬਾਕੀ" @@ -781,12 +702,10 @@ msgid "Monitor" msgstr "ਮਾਨੀਟਰ" #: ../js/ui/status/power.js:245 -#| msgid "Mouse Keys" msgid "Mouse" msgstr "ਮਾਊਸ" #: ../js/ui/status/power.js:247 -#| msgid "Screen Keyboard" msgid "Keyboard" msgstr "ਕੀਬੋਰਡ" @@ -803,7 +722,6 @@ msgid "Media player" msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" #: ../js/ui/status/power.js:255 -#| msgid "Enabled" msgid "Tablet" msgstr "ਟੇਬਲੇਟ" @@ -835,7 +753,6 @@ msgstr "%s ਆਫਲਾਈਨ ਹੈ।" #: ../js/ui/telepathyClient.js:568 #, c-format -#| msgid "'%s' is ready" msgid "%s is away." msgstr "%s ਦੂਰ ਹੈ।" @@ -847,7 +764,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:664 +#: ../js/ui/telepathyClient.js:665 #, no-c-format msgid "Sent at %X on %A" msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" @@ -896,32 +813,32 @@ msgstr[1] "%u ਇੰਪੁੱਟ" msgid "System Sounds" msgstr "ਸਿਸਟਮ ਸਾਊਂਡ" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1156 msgid "Less than a minute ago" msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1160 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1165 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1170 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ" msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1175 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -952,6 +869,72 @@ msgstr "ਖੋਜ" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "ਘੜੀ" + +#~ msgid "Customize the panel clock" +#~ msgstr "ਪੈਨਲ ਘੜੀ ਕਸਟਮਾਈਜ਼ ਕਰੋ" + +#~ msgid "Custom format of the clock" +#~ msgstr "ਘੜੀ ਲਈ ਪਸੰਦੀਦਾ ਫਾਰਮੈਟ" + +#~ msgid "Hour format" +#~ msgstr "ਘੰਟਾ ਫਾਰਮੈਟ" + +#~ msgid "" +#~ "If true and format is either \"12-hour\" or \"24-hour\", display seconds " +#~ "in time." +#~ msgstr "ਜੇ ਚੋਣ ਕੀਤੀ ਤਾਂ ਸਮੇਂ ਵਿੱਚ \"12-hour\" ਜਾਂ \" 24-hour\" ਸਕਿੰਟ ਵੇਖਾਏ ਜਾਣਗੇ।" + +#~ 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 "" +#~ "ਇਹ ਕੁੰਜੀ ਪੈਨਲ ਘੜੀ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਫਾਰਮੈਟ ਦਿੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਫਾਰਮੈਟ ਕੁੰਜੀ \"ਕਸਟਮ\" ਸੈੱਟ " +#~ "ਕੀਤੀ ਹੋਵੇ। ਤੁਸੀਂ ਖਾਸ ਫਾਰਮੈਟ ਦੇਣ ਲਈ ਹਦਾਇਤਾਂ ਵਾਸਤੇ strftime () ਨੂੰ ਵਰਤ ਸਕਦੇ ਹੋ। ਹੋਰ " +#~ "ਜਾਣਕਾਰੀ ਲਈ strftime () ਦਸਤਾਵੇਜ਼ ਵੇਖੋ।" + +#~ 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" +#~ "\" (ਪਸੰਦੀਦਾ)। ਜੇ \"ਯੂਨੈਕਸ\" ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ ਘੜੀ ਨੂੰ ਈਪੋਚ (੦੧-ਜਨਵਰੀ-੧੯੭੦) ਤੋਂ ਵੇਖਾਇਆ\n" +#~ "ਜਾਵੇਗਾ। ਜੇ \"ਪਸੰਦੀਦਾ\" ਲਈ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਤਾਂ, ਘੜੀ ਨੂੰ custom_format ਕੁੰਜੀ ਵਿੱਚ ਦਿੱਤੇ " +#~ "ਫਾਰਮੈਟ ਮੁਤਾਬਕ ਵੇਖਾਇਆ ਜਾਵੇਗਾ। ਯਾਦ ਰੱਖੋ ਕਿ ਜੇ \"ਯੂਨੈਕਸ\" ਜਾਂ \"ਪਸੰਦੀਦਾ\" ਸੈੱਟ ਕੀਤਾ ਤਾਂ " +#~ "ਅੱਪਗਰੇਡ ਮਿਤੀ ਵੇਖਾਓ ਤੇ ਸਕਿੰਟ ਵੇਖਾਓ ਨੂੰ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਵੇਗਾ।" + +#~ msgid "Clock Format" +#~ msgstr "ਘੜੀ ਫਾਰਮੈਟ" + +#~ msgid "Clock Preferences" +#~ msgstr "ਘੜੀ ਪਸੰਦ" + +#~ msgid "Panel Display" +#~ msgstr "ਪੈਨਲ ਦਿੱਖ" + +#~ msgid "Show seco_nds" +#~ msgstr "ਸਕਿੰਟ ਵੇਖੋ(_n)" + +#~ msgid "Show the _date" +#~ msgstr "ਮਿਤੀ ਵੇਖੋ(_d)" + +#~ msgid "_12 hour format" +#~ msgstr "_੧੨ ਘੰਟੇ ਫਾਰਮੈਟ" + +#~ msgid "_24 hour format" +#~ msgstr "_੨੪ ਘੰਟੇ ਫਾਰਮੈਟ" + +#~ msgid "Preferences" +#~ msgstr "ਮੇਰੀ ਪਸੰਦ" + #~ msgid "Overview workspace view mode" #~ msgstr "ਵਰਕਸਪੇਸ ਝਲਕ ਮੋਡ ਦੀ ਝਲਕ" From 055a34877ec451ad7307dfa4e4747f0115bd5728 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Sat, 8 Jan 2011 13:03:45 +0100 Subject: [PATCH 060/132] Favorites: Refine default list Change the default list to: Firefox, Evolution, Empathy, Rhythmbox, Shotwell, OOWriter, Nautilus https://bugzilla.gnome.org/show_bug.cgi?id=638990 --- data/org.gnome.shell.gschema.xml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in index 843426853..78f301d66 100644 --- a/data/org.gnome.shell.gschema.xml.in +++ b/data/org.gnome.shell.gschema.xml.in @@ -30,7 +30,7 @@ - [ 'mozilla-firefox.desktop', 'evolution.desktop', 'openoffice.org-writer.desktop' ] + [ 'mozilla-firefox.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'openoffice.org-writer.desktop', 'nautilus.desktop' ] <_summary>List of desktop file IDs for favorite applications <_description> The applications corresponding to these identifiers From df5ec16842db6e11e2ae3a63ab0a45e924789bf3 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 9 Jan 2011 18:51:03 +0200 Subject: [PATCH 061/132] Updated Hebrew translation. --- po/he.po | 354 ++++++++++++++++++++++++++----------------------------- 1 file changed, 170 insertions(+), 184 deletions(-) diff --git a/po/he.po b/po/he.po index 0d7590d1f..4abe2da32 100644 --- a/po/he.po +++ b/po/he.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-21 12:56+0200\n" -"PO-Revision-Date: 2010-12-21 12:59+0200\n" +"POT-Creation-Date: 2011-01-09 18:50+0200\n" +"PO-Revision-Date: 2011-01-09 18:51+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\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,22 +34,18 @@ msgstr "" "dialog." #: ../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." @@ -65,39 +53,27 @@ 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:7 +#: ../data/org.gnome.shell.gschema.xml.in.h:6 msgid "History for command (Alt-F2) dialog" msgstr "History for command (Alt-F2) dialog" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +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:8 -msgid "Hour format" -msgstr "Hour format" +msgid "If true, display seconds in time." +msgstr "If true, display seconds in 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." - -#: ../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:10 msgid "List of desktop file IDs for favorite applications" msgstr "List of desktop file IDs for favorite applications" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -117,49 +93,49 @@ msgstr "" "to an empty value, the default pipeline will be used. This is currently " "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Show date in clock" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show the week date in the calendar" msgstr "Show the week date in the calendar" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show time with seconds" msgstr "Show time with seconds" +#: ../data/org.gnome.shell.gschema.xml.in.h:15 +msgid "" +"The applications corresponding to these identifiers will be displayed in the " +"favorites area." +msgstr "" +"The applications corresponding to these identifiers will be displayed in the " +"favorites area." + +#: ../data/org.gnome.shell.gschema.xml.in.h:16 +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 "" +"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." + #: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" -"The applications corresponding to these identifiers will be displayed in the " -"favorites area." +"The framerate of the resulting screencast recordered by GNOME Shell's " +"screencast recorder in frames-per-second." msgstr "" -"The applications corresponding to these identifiers will be displayed in the " -"favorites area." +"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: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 "" -"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." - -#: ../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 "" -"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: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:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 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 " @@ -171,39 +147,11 @@ msgstr "" "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." -#: ../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 "" -"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: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 "" -"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:24 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "Uuids of extensions to disable" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "Whether to collect stats about applications usage" @@ -362,55 +310,28 @@ msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" "Width of the vertical and horizontal lines that make up the crosshairs." -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "מבנה השעון" - -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "העדפות השעון" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "תצוגת הלוח" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "הצגת ש_ניות" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "הצגת ה_תאריך" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "מבנה _12 שעות" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "מבנה _24 שעות" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 msgid "All" msgstr "הכול" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "יישומים" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "העדפות" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "חלון חדש" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "הסרה מהמועדפים" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "הוספה למועדפים" @@ -462,71 +383,67 @@ msgstr "צפייה במקור" msgid "Web Page" msgstr "דף אינטרנט" -#: ../js/ui/overview.js:96 +#: ../js/ui/overview.js:101 msgid "Undo" msgstr "ביטול" -#: ../js/ui/overview.js:158 +#: ../js/ui/overview.js:166 msgid "Windows" msgstr "חלונות" -#: ../js/ui/overview.js:161 +#: ../js/ui/overview.js:169 msgid "Applications" msgstr "יישומים" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 +#: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" msgstr "יציאה מ־%s" -#: ../js/ui/panel.js:499 -msgid "Preferences" -msgstr "העדפות" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:563 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:564 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 +#: ../js/ui/panel.js:568 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/panel.js:569 msgid "%a %R" msgstr "%a %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 +#: ../js/ui/panel.js:576 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:577 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 +#: ../js/ui/panel.js:581 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:604 +#: ../js/ui/panel.js:582 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:749 +#: ../js/ui/panel.js:727 msgid "Activities" msgstr "פעילויות" @@ -556,11 +473,11 @@ msgstr "מקומות והתקנים" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:238 msgid "Please enter a command:" msgstr "נא להזין פקודה:" -#: ../js/ui/runDialog.js:378 +#: ../js/ui/runDialog.js:383 #, c-format msgid "Execution of '%s' failed:" msgstr "ההרצה של '%s' נכשלה:" @@ -645,7 +562,7 @@ msgstr "ניגודיות גבוהה" msgid "Large Text" msgstr "טקסט גדול" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 msgid "Bluetooth" msgstr "Bluetooth" @@ -653,11 +570,11 @@ msgstr "Bluetooth" msgid "Visibility" msgstr "הצגה" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "שליחת קובץ להתקן..." -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "הגדרת התקן חדש..." @@ -665,103 +582,103 @@ msgstr "הגדרת התקן חדש..." msgid "Bluetooth Settings" msgstr "הגדרות Bluetooth" -#: ../js/ui/status/bluetooth.js:151 +#: ../js/ui/status/bluetooth.js:191 msgid "Connection" msgstr "חיבור" -#: ../js/ui/status/bluetooth.js:187 +#: ../js/ui/status/bluetooth.js:227 msgid "Send Files..." msgstr "שליחת קבצים..." -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:232 msgid "Browse Files..." msgstr "עיון בקבצים..." -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:241 msgid "Error browsing device" msgstr "שגיאה בעיון בהתקן" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:242 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "לא ניתן לעיין בהתקן הנבחר, השגיאה היא '%s'" -#: ../js/ui/status/bluetooth.js:210 +#: ../js/ui/status/bluetooth.js:250 msgid "Keyboard Settings" msgstr "הגדרות מקלדת" -#: ../js/ui/status/bluetooth.js:215 +#: ../js/ui/status/bluetooth.js:255 msgid "Mouse Settings" msgstr "הגדרות עכבר" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 msgid "Sound Settings" msgstr "הגדרות שמע" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 +#: ../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:328 +#: ../js/ui/status/bluetooth.js:371 #, c-format msgid "Authorization request from %s" msgstr "בקשת אישור מאת %s" -#: ../js/ui/status/bluetooth.js:334 +#: ../js/ui/status/bluetooth.js:377 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "ההתקן %s מעוניין לגשת אל השירות '%s'" -#: ../js/ui/status/bluetooth.js:336 +#: ../js/ui/status/bluetooth.js:379 msgid "Always grant access" msgstr "תמיד להעניק גישה" -#: ../js/ui/status/bluetooth.js:337 +#: ../js/ui/status/bluetooth.js:380 msgid "Grant this time only" msgstr "הענקת גישה הפעם בלבד" -#: ../js/ui/status/bluetooth.js:338 +#: ../js/ui/status/bluetooth.js:381 msgid "Reject" msgstr "סירוב" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:411 #, c-format msgid "Pairing confirmation for %s" msgstr "אישור צימוד עבור %s" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 #, c-format msgid "Device %s wants to pair with this computer" msgstr "ההתקן %s מעוניין בצימוד עם מחשב זה" -#: ../js/ui/status/bluetooth.js:375 +#: ../js/ui/status/bluetooth.js:418 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "נא לאשר האם קוד ה־PIN‏ '%s' תואם את זה שמופיע בהתקן." -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:420 msgid "Matches" msgstr "התאמות" -#: ../js/ui/status/bluetooth.js:378 +#: ../js/ui/status/bluetooth.js:421 msgid "Does not match" msgstr "אינו תואם" -#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Pairing request for %s" msgstr "בקשת צימוד עבור %s" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:452 msgid "Please enter the PIN mentioned on the device." msgstr "נא להזין את קוד ה־PIN המוזכר בהתקן." -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:468 msgid "OK" msgstr "אישור" -#: ../js/ui/status/bluetooth.js:426 +#: ../js/ui/status/bluetooth.js:469 msgid "Cancel" msgstr "ביטול" @@ -861,22 +778,22 @@ msgstr "עצמה" msgid "Microphone" msgstr "מיקרופון" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:561 #, c-format msgid "%s is online." msgstr "%s התחבר/ה." -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:566 #, c-format msgid "%s is offline." msgstr "%s התנתק/ה." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:569 #, c-format msgid "%s is away." msgstr "'%s' מרוחק/ת." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:572 #, c-format msgid "%s is busy." msgstr "%s עסוק/ה." @@ -884,7 +801,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:664 +#: ../js/ui/telepathyClient.js:666 #, no-c-format msgid "Sent at %X on %A" msgstr "נשלח ב־%X בשעה %A" @@ -936,11 +853,11 @@ msgstr[2] "2 קלטים" msgid "System Sounds" msgstr "צלילי מערכת" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "לפני פחות מדקה" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -948,7 +865,7 @@ msgstr[0] "לפני דקה" msgstr[1] "לפני %d דקות" msgstr[2] "לפני 2 דקות" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -956,7 +873,7 @@ msgstr[0] "לפני שעה" msgstr[1] "לפני %d שעות" msgstr[2] "לפני שעתיים" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -964,7 +881,7 @@ msgstr[0] "לפני יום" msgstr[1] "לפני %d ימים" msgstr[2] "לפני יומיים" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -996,6 +913,75 @@ msgstr "חיפוש" msgid "%1$s: %2$s" msgstr "%1$s: %2$s" +#~ msgid "Clock" +#~ msgstr "שעון" + +#~ msgid "Customize the panel clock" +#~ msgstr "התאמת לוח השעון" + +#~ 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 "" +#~ "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 "מבנה השעון" + +#~ msgid "Clock Preferences" +#~ msgstr "העדפות השעון" + +#~ msgid "Panel Display" +#~ msgstr "תצוגת הלוח" + +#~ msgid "Show seco_nds" +#~ msgstr "הצגת ש_ניות" + +#~ msgid "Show the _date" +#~ msgstr "הצגת ה_תאריך" + +#~ msgid "_12 hour format" +#~ msgstr "מבנה _12 שעות" + +#~ msgid "_24 hour format" +#~ msgstr "מבנה _24 שעות" + +#~ msgid "Preferences" +#~ msgstr "העדפות" + #~ msgid "What's using power..." #~ msgstr "מה צורך חשמל..." From c08021d91f75f18f0eb0139df8c6e890e32f00a9 Mon Sep 17 00:00:00 2001 From: Ivar Smolin Date: Sun, 9 Jan 2011 20:38:25 +0200 Subject: [PATCH 062/132] [l10n] Updated Estonian translation --- po/et.po | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/po/et.po b/po/et.po index b1e54761e..a51bd33f8 100644 --- a/po/et.po +++ b/po/et.po @@ -14,8 +14,8 @@ msgstr "" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "shell&component=general\n" "POT-Creation-Date: 2011-01-04 16:17+0000\n" -"PO-Revision-Date: 2011-01-07 11:20+0300\n" -"Last-Translator: Mattias Põldaru \n" +"PO-Revision-Date: 2011-01-09 11:20+0200\n" +"Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -43,7 +43,7 @@ msgstr "" "Arendajate ja testijate jaoks sisemiste tööriistade lubamine Alt-F2 alt" msgid "File extension used for storing the screencast" -msgstr "Faililaiend, mida kasutatakse ekraanivideo salvestamisel" +msgstr "Ekraanivideo salvestamisel kasutatav faililaiend" msgid "Framerate used for recording screencasts." msgstr "Ekraanivideo lindistamisel kasutatav kaadrikiirus." @@ -52,6 +52,8 @@ msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" +"GNOME Shelli laiendustel on omadus UUID. Selle võtmega määratakse " +"laiendused, mida ei peaks laaditama." msgid "History for command (Alt-F2) dialog" msgstr "Käsudialoogi (Alt-F2) ajalugu" @@ -98,6 +100,10 @@ msgid "" "current date, and use this extension. It should be changed when recording to " "a different container format." msgstr "" +"Ekraanivideo jaoks kasutatav failinimi on unikaalne, see sisaldab " +"salvestamise kuupäeva ja ka käesoleva võtmega määratud laiendit. Mõnda teise " +"konteinervormingusse salvestades tuleks ka sellele vormingule vastav laiend " +"määrata." msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " From 4c4a703e6394fbf503e3291b415228318dc4b30d Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 7 Jan 2011 11:59:20 -0500 Subject: [PATCH 063/132] messageTray: use alignment rather than gravity to position the summary Actors in clutter are supposed to be re-allocated with Clutter.AllocationFlags.ABSOLUTE_ORIGIN_CHANGED if they move relative to the screen, even if they don't move relative to their parent. Currently this does not work correctly for actors inside containers with non-northwest gravity. This is probably a fixable bug, but gravity has messed up other things in the past too, so let's just not use it. This change ensures that summary trayicons are re-allocated when the summary animates, and is part of the fix for https://bugzilla.gnome.org/show_bug.cgi?id=635695 --- js/ui/messageTray.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 359327418..04a968b56 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -916,7 +916,7 @@ MessageTray.prototype = { this._notification = null; this._notificationClickedId = 0; - this._summaryBin = new St.Bin({ anchor_gravity: Clutter.Gravity.NORTH_EAST }); + this._summaryBin = new St.Bin({ x_align: St.Align.END }); this.actor.add_actor(this._summaryBin); this._summary = new St.BoxLayout({ name: 'summary-mode', reactive: true, @@ -1008,9 +1008,8 @@ MessageTray.prototype = { this.actor.width = primary.width; this._notificationBin.x = 0; this._notificationBin.width = primary.width; - - // These work because of their anchor_gravity - this._summaryBin.x = primary.width; + this._summaryBin.x = 0; + this._summaryBin.width = primary.width; }, contains: function(source) { From 84bac4414c95396e18d28e168b35a7e593677864 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 6 Jan 2011 17:07:51 -0500 Subject: [PATCH 064/132] ShellGtkEmbed: revert to old actor/window position-syncing code Synchronizing the actor and window position on paint resulted in lots of syncing, and also resulted in the window mistakenly being left at 0,0 if the actor wasn't visible when the window first mapped. Revert back to the old way of doing it, by tying into clutter_actor_allocate, which was only failing before because of a bug elsewhere. https://bugzilla.gnome.org/show_bug.cgi?id=635695 --- src/shell-gtk-embed.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/shell-gtk-embed.c b/src/shell-gtk-embed.c index 613397fb5..f1caa93c1 100644 --- a/src/shell-gtk-embed.c +++ b/src/shell-gtk-embed.c @@ -166,25 +166,19 @@ shell_gtk_embed_get_preferred_height (ClutterActor *actor, } static void -shell_gtk_embed_paint (ClutterActor *actor) +shell_gtk_embed_allocate (ClutterActor *actor, + const ClutterActorBox *box, + ClutterAllocationFlags flags) { ShellGtkEmbed *embed = SHELL_GTK_EMBED (actor); float wx = 0.0, wy = 0.0, x, y, ax, ay; - float w, h; - CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)->paint (actor); + CLUTTER_ACTOR_CLASS (shell_gtk_embed_parent_class)-> + allocate (actor, box, flags); - if (!embed->priv->window) - return; - - /* Move the X window to the same position as the actor; it's much - * easier to just do this from paint() than it is to tray to track - * the position and allocation of @embed and each of its ancestors - * as they change. We don't use get_transformed_position() here - * because we know that the icon isn't scaled or rotated, and so - * it's faster to avoid the floating-point transformations. + /* Find the actor's new coordinates in terms of the stage (which is + * priv->window's parent window. */ - clutter_actor_get_size (actor, &w, &h); while (actor) { clutter_actor_get_position (actor, &x, &y); @@ -198,7 +192,8 @@ shell_gtk_embed_paint (ClutterActor *actor) _shell_embedded_window_allocate (embed->priv->window, (int)(0.5 + wx), (int)(0.5 + wy), - w, h); + box->x2 - box->x1, + box->y2 - box->y1); } static void @@ -245,7 +240,7 @@ shell_gtk_embed_class_init (ShellGtkEmbedClass *klass) actor_class->get_preferred_width = shell_gtk_embed_get_preferred_width; actor_class->get_preferred_height = shell_gtk_embed_get_preferred_height; - actor_class->paint = shell_gtk_embed_paint; + actor_class->allocate = shell_gtk_embed_allocate; actor_class->realize = shell_gtk_embed_realize; actor_class->unrealize = shell_gtk_embed_unrealize; From ed83b5494c8069826573c97bf5ef83b3bf4c2c11 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 6 Jan 2011 14:39:07 -0500 Subject: [PATCH 065/132] main: allow Alt-F1 to exit the overview Also, change _globalKeyPressHandler to handle KEY_PRESS, not KEY_RELEASE, for consistency with other code (and so that the combination of an Alt-F1 press and release doesn't first enter the overview and then immediately exit it). https://bugzilla.gnome.org/show_bug.cgi?id=636371 --- js/ui/main.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/js/ui/main.js b/js/ui/main.js index 86e510237..e4075173f 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -307,7 +307,7 @@ function _removeUnusedWorkspaces() { function _globalKeyPressHandler(actor, event) { if (modalCount == 0) return false; - if (event.type() != Clutter.EventType.KEY_RELEASE) + if (event.type() != Clutter.EventType.KEY_PRESS) return false; let symbol = event.get_key_symbol(); @@ -349,6 +349,10 @@ function _globalKeyPressHandler(actor, event) { case Meta.KeyBindingAction.COMMAND_2: getRunDialog().open(); return true; + case Meta.KeyBindingAction.PANEL_MAIN_MENU: + if (overview.visible) + overview.hide(); + return true; case Meta.KeyBindingAction.SWITCH_PANELS: // Only intercept this when we're in the overview, and don't // intercept it if something beyond that (like, say, the From 44f70646d3ba2ea5ac15e53dd9cd418cdaf430c1 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Thu, 6 Jan 2011 15:30:24 -0500 Subject: [PATCH 066/132] main: clean up handling of metacity keybindings during grabs Although certain keys (like Ctrl-Alt-Tab and Alt-F2) should work in the overview, we generally don't want them to work from inside each others grabs. In particular, typing Left or Right from inside Ctrl-Alt-Tab should navigate among focus groups, not switch workspaces. https://bugzilla.gnome.org/show_bug.cgi?id=636971 --- js/ui/main.js | 62 ++++++++++++++++++++++----------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/js/ui/main.js b/js/ui/main.js index e4075173f..8574fe701 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -298,12 +298,6 @@ function _removeUnusedWorkspaces() { // are disabled with a global grab. (When there is a global grab, then // all key events will be delivered to the stage, so ::captured-event // on the stage can be used for global keybindings.) -// -// We expect to need to conditionally enable just a few keybindings -// depending on circumstance; the main hackiness here is that we are -// assuming that keybindings have their default values; really we -// should be asking Mutter to resolve the key into an action and then -// base our handling based on the action. function _globalKeyPressHandler(actor, event) { if (modalCount == 0) return false; @@ -313,32 +307,36 @@ function _globalKeyPressHandler(actor, event) { let symbol = event.get_key_symbol(); let keyCode = event.get_key_code(); let modifierState = Shell.get_event_state(event); - // Check the overview key first, this isn't a Meta.KeyBindingAction yet - if (symbol == Clutter.Super_L || symbol == Clutter.Super_R) { - // The super key is the default for triggering the overview, and should - // get us out of the overview when we are already in it. - if (overview.visible) - overview.hide(); + let display = global.screen.get_display(); + // This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType + let action = display.get_keybinding_action(keyCode, modifierState); + + // The screenshot action should always be available (even if a + // modal dialog is present) + if (action == Meta.KeyBindingAction.COMMAND_SCREENSHOT) { + let gconf = GConf.Client.get_default(); + let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot'); + if (command != null && command != '') { + let [ok, len, args] = GLib.shell_parse_argv(command); + let p = new Shell.Process({'args' : args}); + p.run(); + } return true; } - // Whitelist some of the Metacity actions - let display = global.screen.get_display(); - let activeWorkspaceIndex = global.screen.get_active_workspace_index(); + // Other bindings are only available when the overview is up and + // no modal dialog is present. + if (!overview.visible || modalCount > 1) + return false; + + // This isn't a Meta.KeyBindingAction yet + if (symbol == Clutter.Super_L || symbol == Clutter.Super_R) { + overview.hide(); + return true; + } - // This relies on the fact that Clutter.ModifierType is the same as Gdk.ModifierType - let action = display.get_keybinding_action(keyCode, modifierState); switch (action) { - case Meta.KeyBindingAction.COMMAND_SCREENSHOT: - let gconf = GConf.Client.get_default(); - let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot'); - if (command != null && command != '') { - let [ok, len, args] = GLib.shell_parse_argv(command); - let p = new Shell.Process({'args' : args}); - p.run(); - } - return true; case Meta.KeyBindingAction.WORKSPACE_LEFT: wm.actionMoveWorkspaceLeft(); return true; @@ -350,17 +348,11 @@ function _globalKeyPressHandler(actor, event) { getRunDialog().open(); return true; case Meta.KeyBindingAction.PANEL_MAIN_MENU: - if (overview.visible) - overview.hide(); + overview.hide(); return true; case Meta.KeyBindingAction.SWITCH_PANELS: - // Only intercept this when we're in the overview, and don't - // intercept it if something beyond that (like, say, the - // ctrl-alt-tab popup!) is visible - if (overview.visible && modalCount == 1) { - ctrlAltTabManager.popup(modifierState & Clutter.ModifierType.SHIFT_MASK); - return true; - } + ctrlAltTabManager.popup(modifierState & Clutter.ModifierType.SHIFT_MASK); + return true; } return false; From 6bae9ed20ddddabfbca6065152308db62a3c890a Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 11 Jan 2011 09:14:32 -0500 Subject: [PATCH 067/132] gnome-shell.css: specify font size for overview view selector area Previously this was inheriting the default size, which is specified in pts, and so would make the text larger than its 16px containing box if you have high DPI. https://bugzilla.gnome.org/show_bug.cgi?id=639213 --- data/theme/gnome-shell.css | 1 + 1 file changed, 1 insertion(+) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index b1cfe6444..344692af7 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -338,6 +338,7 @@ StTooltip StLabel { #viewSelector { spacing: 16px; + font-size: 16px; } #viewSelectorTabBar { From 81714ce1a34ffe92b27e2d2ebb0b9298601e9669 Mon Sep 17 00:00:00 2001 From: Hellyna Ng Date: Wed, 12 Jan 2011 05:33:03 +0800 Subject: [PATCH 068/132] Notifications with CRITICAL urgency are no longer timed out Notifications with CRITICAL urgency should not pop down until the user interacts with them. https://bugzilla.gnome.org/show_bug.cgi?id=630942 --- js/ui/messageTray.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 04a968b56..da8f7e891 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1379,7 +1379,7 @@ MessageTray.prototype = { let notificationsPending = this._notificationQueue.length > 0; let notificationPinned = this._pointerInTray && !this._pointerInSummary && !this._notificationRemoved; let notificationExpanded = this._notificationBin.y < 0; - let notificationExpired = (this._notificationTimeoutId == 0 && !this._pointerInTray && !this._locked) || this._notificationRemoved; + let notificationExpired = (this._notificationTimeoutId == 0 && !(this._notification && this._notification.urgency == Urgency.CRITICAL) && !this._pointerInTray && !this._locked) || this._notificationRemoved; if (this._notificationState == State.HIDDEN) { if (notificationsPending) @@ -1527,7 +1527,8 @@ MessageTray.prototype = { }, _showNotificationCompleted: function() { - this._updateNotificationTimeout(NOTIFICATION_TIMEOUT * 1000); + if (this._notification.urgency != Urgency.CRITICAL) + this._updateNotificationTimeout(NOTIFICATION_TIMEOUT * 1000); }, _updateNotificationTimeout: function(timeout) { From d77409876c77fa8b79bdc993ad9967766f95ac0f Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 11 Jan 2011 18:05:08 -0500 Subject: [PATCH 069/132] Clean generated stamp-st.h --- src/Makefile-st.am | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile-st.am b/src/Makefile-st.am index 579223526..e952a4abd 100644 --- a/src/Makefile-st.am +++ b/src/Makefile-st.am @@ -112,6 +112,7 @@ stamp-st.h: Makefile echo timestamp > $(@F) BUILT_SOURCES += st.h +CLEANFILES += stamp-st.h st_source_private_h = \ st/st-private.h \ From 428d2fdb7635230c0d263d027cecc23171b38d81 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 11 Jan 2011 18:10:08 -0500 Subject: [PATCH 070/132] gnome-shell-build-setup.sh: Add libgtop Add libgtop, a new build dependency for gnome-control-center. --- tools/build/gnome-shell-build-setup.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/build/gnome-shell-build-setup.sh b/tools/build/gnome-shell-build-setup.sh index b6c48734f..66a02d120 100755 --- a/tools/build/gnome-shell-build-setup.sh +++ b/tools/build/gnome-shell-build-setup.sh @@ -62,7 +62,7 @@ fi # libxklavier, libxml2, ORBit2, pam, python, readline, # spidermonkey ({mozilla,firefox,xulrunner}-js), startup-notification, # xdamage, icon-naming-utils, upower, libtool-ltdl, libvorbis, -# libgcrypt, libtasn1, libgnome-keyring +# libgcrypt, libtasn1, libgnome-keyring, libgtop # # Non-devel packages needed by gnome-shell and its deps: # glxinfo, gstreamer-plugins-base, gstreamer-plugins-good, @@ -76,7 +76,7 @@ if test "x$system" = xUbuntu -o "x$system" = xDebian -o "x$system" = xLinuxMint build-essential curl automake bison flex gettext git-core 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 + 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 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 @@ -120,7 +120,7 @@ if test "x$system" = xFedora ; then startup-notification-devel xorg-x11-server-Xephyr gnome-terminal zenity icon-naming-utils upower-devel libtool-ltdl-devel libvorbis-devel libxklavier-devel libgcrypt-devel libtasn1-devel libtasn1-tools - libgnome-keyring-devel + libgnome-keyring-devel libgtop2-devel " if expr $version \>= 14 > /dev/null ; then @@ -143,7 +143,7 @@ if test "x$system" = xSUSE -o "x$system" = "xSUSE LINUX" ; then curl \ bison flex gtk-doc gnome-common gnome-doc-utils-devel \ gnome-desktop-devel gnome-menus-devel icon-naming-utils \ - libpulse-devel libtiff-devel cups-devel libffi-devel \ + libgtop-devel libpulse-devel libtiff-devel cups-devel libffi-devel \ orbit2-devel libwnck-devel xorg-x11-proto-devel readline-devel \ mozilla-xulrunner191-devel libcroco-devel \ xorg-x11-devel xorg-x11 xorg-x11-server-extra \ From d7a19fdd1bab825adea7cb424fa8d0b481af16c7 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Tue, 11 Jan 2011 18:13:36 -0500 Subject: [PATCH 071/132] Bump version to 2.91.5 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 116575df8..08655072e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.63) -AC_INIT([gnome-shell],[2.91.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) +AC_INIT([gnome-shell],[2.91.5],[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 4e45e28ea01d84a579cb6ed85adaf2769cdeef90 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 11 Jan 2011 12:27:10 -0500 Subject: [PATCH 072/132] shell: disable libgnome-bluetooth debug spew Centralize all the debug-spew-disabling here, and add libgnome-bluetooth to the list. https://bugzilla.gnome.org/show_bug.cgi?id=639236 --- src/gdmuser/gdm-user-manager.c | 14 -------------- src/gnome-shell-plugin.c | 16 ++++++++++------ 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/src/gdmuser/gdm-user-manager.c b/src/gdmuser/gdm-user-manager.c index d3df15ac7..a39bea1ca 100644 --- a/src/gdmuser/gdm-user-manager.c +++ b/src/gdmuser/gdm-user-manager.c @@ -3059,15 +3059,6 @@ gdm_user_manager_finalize (GObject *object) G_OBJECT_CLASS (gdm_user_manager_parent_class)->finalize (object); } -static void -gdm_user_muted_debug_log_handler (const char *log_domain, - GLogLevelFlags log_level, - const char *message, - gpointer data) -{ - /* Intentionally empty to discard message */ -} - /** * gdm_user_manager_ref_default: * @@ -3086,11 +3077,6 @@ gdm_user_manager_ref_default (void) user_manager_object = g_object_new (GDM_TYPE_USER_MANAGER, NULL); g_object_add_weak_pointer (user_manager_object, (gpointer *) &user_manager_object); - - /* We don't normally care about user manager messages in the shell, - * so mute them */ - g_log_set_handler (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, - gdm_user_muted_debug_log_handler, NULL); } return GDM_USER_MANAGER (user_manager_object); diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index 50e2c5cbf..ad2c4e626 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -302,10 +302,10 @@ add_statistics (GnomeShellPlugin *shell_plugin) } static void -gvc_muted_debug_log_handler (const char *log_domain, - GLogLevelFlags log_level, - const char *message, - gpointer data) +muted_log_handler (const char *log_domain, + GLogLevelFlags log_level, + const char *message, + gpointer data) { /* Intentionally empty to discard message */ } @@ -375,9 +375,13 @@ gnome_shell_plugin_start (MetaPlugin *plugin) NULL); g_strfreev(search_path); - /* Disable the gnome-volume-control debug */ + /* Disable debug spew from various libraries */ g_log_set_handler ("Gvc", G_LOG_LEVEL_DEBUG, - gvc_muted_debug_log_handler, NULL); + muted_log_handler, NULL); + g_log_set_handler ("GdmUser", G_LOG_LEVEL_DEBUG, + muted_log_handler, NULL); + g_log_set_handler ("libgnome-bluetooth", G_LOG_LEVEL_DEBUG | G_LOG_LEVEL_MESSAGE, + muted_log_handler, NULL); /* Initialize the global object here. */ shell_plugin->global = shell_global_get (); From 90e042e30c44f3192da1c90b873e0e639587ca12 Mon Sep 17 00:00:00 2001 From: Khaled Hosny Date: Wed, 12 Jan 2011 11:29:54 +0200 Subject: [PATCH 073/132] Updated Arabic translation --- po/ar.po | 595 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 404 insertions(+), 191 deletions(-) diff --git a/po/ar.po b/po/ar.po index f981ba16f..444942326 100644 --- a/po/ar.po +++ b/po/ar.po @@ -1,13 +1,13 @@ # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. -# Khaled Hosny , 2009, 2010. +# Khaled Hosny , 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: HEAD\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-10-30 13:30+0200\n" -"PO-Revision-Date: 2010-10-30 13:30+0300\n" +"POT-Creation-Date: 2011-01-12 11:29+0200\n" +"PO-Revision-Date: 2011-01-12 11:29+0300\n" "Last-Translator: Khaled Hosny \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" @@ -26,14 +26,6 @@ msgstr "صدفة جنوم" 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 " @@ -41,60 +33,44 @@ 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 -msgid "Overview workspace view mode" -msgstr "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -106,48 +82,42 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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:14 msgid "Show time with seconds" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 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:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" msgstr "" -#: ../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 "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:23 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 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 " @@ -155,29 +125,11 @@ msgid "" "remove already saved data." 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 "" - -#: ../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 "" - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "" -#: ../data/org.gnome.shell.gschema.xml.in.h:27 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "" @@ -306,90 +258,46 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "تنسيق الساعة" +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "الكل" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "تفضيلات الساعة" - -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "عرض اللوحة" - -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "أظهر ال_ثواني" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "أظهر ال_تاريخ" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "نسق _12 ساعة" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "نسق _24 ساعة" - -#. **** Applications **** -#: ../js/ui/appDisplay.js:316 ../js/ui/dash.js:778 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "التطبيقات" -#: ../js/ui/appDisplay.js:348 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "التفضيلات" -#: ../js/ui/appDisplay.js:647 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "نافذة جديدة" -#: ../js/ui/appDisplay.js:651 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "أزِل من المفضّلة" -#: ../js/ui/appDisplay.js:652 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "أضِف إلى المفضّلة" -#: ../js/ui/appDisplay.js:829 -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 "ابحث" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "أزِل" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "يبحث..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "لا نتائج مطابقة." - -#. **** 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 "الأماكن والأجهزة" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:494 msgid "RECENT ITEMS" msgstr "العناصر الحديثة" @@ -423,63 +331,67 @@ msgstr "اعرض المصدر" msgid "Web Page" msgstr "صفحة الوب" -#: ../js/ui/overview.js:160 +#: ../js/ui/overview.js:101 msgid "Undo" msgstr "تراجع" +#: ../js/ui/overview.js:166 +msgid "Windows" +msgstr "النوافذ" + +#: ../js/ui/overview.js:169 +msgid "Applications" +msgstr "التطبيقات" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:469 +#: ../js/ui/panel.js:478 #, c-format msgid "Quit %s" msgstr "أغلق %s" -#: ../js/ui/panel.js:494 -msgid "Preferences" -msgstr "التفضيلات" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:580 +#: ../js/ui/panel.js:563 msgid "%a %b %e, %R:%S" msgstr "%A %e %B، %R:%S" -#: ../js/ui/panel.js:581 +#: ../js/ui/panel.js:564 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:585 +#: ../js/ui/panel.js:568 msgid "%a %R:%S" msgstr "%A %R:%S" -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:569 msgid "%a %R" msgstr "%A %R" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:593 +#: ../js/ui/panel.js:576 msgid "%a %b %e, %l:%M:%S %p" msgstr "%A %e %B، %l:%M:%S %p" -#: ../js/ui/panel.js:594 +#: ../js/ui/panel.js:577 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:598 +#: ../js/ui/panel.js:581 msgid "%a %l:%M:%S %p" msgstr "%A %l:%M:%S %p" -#: ../js/ui/panel.js:599 +#: ../js/ui/panel.js:582 msgid "%a %l:%M %p" msgstr "%A %Ol:%OM %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:744 +#: ../js/ui/panel.js:727 msgid "Activities" msgstr "الأنشطة" @@ -496,6 +408,10 @@ msgstr "أعد المحاولة" msgid "Connect to..." msgstr "اتّصل ب‍..." +#: ../js/ui/placeDisplay.js:558 +msgid "PLACES & DEVICES" +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 @@ -503,13 +419,13 @@ msgstr "اتّصل ب‍..." #. simply result in invisible toggle switches. #: ../js/ui/popupMenu.js:33 msgid "toggle-switch-us" -msgstr "" +msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:238 msgid "Please enter a command:" msgstr "من فضلك اكتب أمرا:" -#: ../js/ui/runDialog.js:378 +#: ../js/ui/runDialog.js:383 #, c-format msgid "Execution of '%s' failed:" msgstr "فشل تنفيذ '%s':‏" @@ -522,42 +438,38 @@ msgstr "متاح" msgid "Busy" msgstr "مشغول" -#: ../js/ui/statusMenu.js:111 -msgid "Invisible" -msgstr "خفي" +#: ../js/ui/statusMenu.js:114 +msgid "My Account" +msgstr "حسابي" -#: ../js/ui/statusMenu.js:119 -msgid "My Account..." -msgstr "حسابي..." +#: ../js/ui/statusMenu.js:118 +msgid "System Settings" +msgstr "إعدادات النظام" -#: ../js/ui/statusMenu.js:123 -msgid "System Preferences..." -msgstr "تفضيلات النظام..." - -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:125 msgid "Lock Screen" msgstr "أوصد الشاشة" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:129 msgid "Switch User" msgstr "بدّل المستخدم" -#: ../js/ui/statusMenu.js:139 +#: ../js/ui/statusMenu.js:134 msgid "Log Out..." msgstr "اخرج..." -#: ../js/ui/statusMenu.js:146 -msgid "Suspend" -msgstr "علّق" +#: ../js/ui/statusMenu.js:141 +msgid "Suspend..." +msgstr "علّق..." -#: ../js/ui/statusMenu.js:150 -msgid "Restart..." -msgstr "أعد التشغيل..." - -#: ../js/ui/statusMenu.js:154 +#: ../js/ui/statusMenu.js:145 msgid "Shut Down..." msgstr "أطفئ..." +#: ../js/ui/status/accessibility.js:82 +msgid "Zoom" +msgstr "تقريب" + #: ../js/ui/status/accessibility.js:88 msgid "Screen Reader" msgstr "قارئ الشاشة" @@ -594,13 +506,269 @@ msgstr "إعدادات الإتاحة" msgid "High Contrast" msgstr "تباين عال" -#: ../js/ui/status/accessibility.js:202 +#: ../js/ui/status/accessibility.js:205 msgid "Large Text" msgstr "نص كبير" -#: ../js/ui/status/accessibility.js:223 -msgid "Zoom" -msgstr "تقريب" +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +msgid "Bluetooth" +msgstr "بلوتوث" + +#: ../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:94 +msgid "Bluetooth Settings" +msgstr "إعدادات بلوتوث" + +#: ../js/ui/status/bluetooth.js:191 +msgid "Connection" +msgstr "الاتصال" + +#: ../js/ui/status/bluetooth.js:227 +msgid "Send Files..." +msgstr "أرسل ملفات..." + +#: ../js/ui/status/bluetooth.js:232 +msgid "Browse Files..." +msgstr "تصفح الملفات..." + +#: ../js/ui/status/bluetooth.js:241 +msgid "Error browsing device" +msgstr "عطل أثناء تصفّح الجهاز" + +#: ../js/ui/status/bluetooth.js:242 +#, c-format +msgid "The requested device cannot be browsed, error is '%s'" +msgstr "تعذّر تصفح الجهاز، رسالة العطل '%s'" + +#: ../js/ui/status/bluetooth.js:250 +msgid "Keyboard Settings" +msgstr "إعدادات لوحة المفاتيح" + +#: ../js/ui/status/bluetooth.js:255 +msgid "Mouse Settings" +msgstr "إعدادات الفأرة" + +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +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 "عميل بلوتوث" + +#: ../js/ui/status/bluetooth.js:371 +#, c-format +msgid "Authorization request from %s" +msgstr "طلب تخويل من %s" + +#: ../js/ui/status/bluetooth.js:377 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "يريد الجهاز %s صلاحية الوصول للخدمة '%s'" + +#: ../js/ui/status/bluetooth.js:379 +msgid "Always grant access" +msgstr "امنح الصلاحية دائما" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Grant this time only" +msgstr "امنح هذه المرة فقط" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Reject" +msgstr "أخرج" + +#: ../js/ui/status/bluetooth.js:411 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "تأكيد مزاوجة %s" + +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "يريد الجهاز %s المزاوجة مع هذا الحاسوب" + +#: ../js/ui/status/bluetooth.js:418 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "من فضلك أكد تطابق الرقم '%s' مع الموجود على الجهاز." + +#: ../js/ui/status/bluetooth.js:420 +msgid "Matches" +msgstr "مطابقات" + +#: ../js/ui/status/bluetooth.js:421 +msgid "Does not match" +msgstr "لا تتطابق" + +#: ../js/ui/status/bluetooth.js:444 +#, c-format +msgid "Pairing request for %s" +msgstr "طلب مزاوجة من %s" + +#: ../js/ui/status/bluetooth.js:452 +msgid "Please enter the PIN mentioned on the device." +msgstr "من فضلك أدخل الرقم المذكور على الجهاز." + +#: ../js/ui/status/bluetooth.js:468 +msgid "OK" +msgstr "حسنا" + +#: ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "ألغِ" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "إعدادات الطاقة" + +#: ../js/ui/status/power.js:112 +#, c-format +msgid "%d hour remaining" +msgid_plural "%d hours remaining" +msgstr[0] "بقي أقل من ساعة" +msgstr[1] "بقي ساعة" +msgstr[2] "بقي ساعتين" +msgstr[3] "بقي %d ساعات" +msgstr[4] "بقي %d ساعة" +msgstr[5] "بقي %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 "بقي %d %s و %d %s" + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "أقل من ساعة" +msgstr[1] "ساعة" +msgstr[2] "ساعتين" +msgstr[3] "ساعات" +msgstr[4] "ساعة" +msgstr[5] "ساعة" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "أقل من دقيقة" +msgstr[1] "دقيقة" +msgstr[2] "دقيقتين" +msgstr[3] "دقائق" +msgstr[4] "دقيقة" +msgstr[5] "دقيقة" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "بقي أقل من دقيقة" +msgstr[1] "بقي دقيقة" +msgstr[2] "بقي دقيقتين" +msgstr[3] "بقي %d دقائق" +msgstr[4] "بقي %d دقيقة" +msgstr[5] "بقي %d دقيقة" + +#: ../js/ui/status/power.js:237 +msgid "AC adapter" +msgstr "مقبس طاقة" + +#: ../js/ui/status/power.js:239 +msgid "Laptop battery" +msgstr "بطارية حاسوب محمول" + +#: ../js/ui/status/power.js:241 +msgid "UPS" +msgstr "مزود طاقة لا منقطعة" + +#: ../js/ui/status/power.js:243 +msgid "Monitor" +msgstr "شاشة" + +#: ../js/ui/status/power.js:245 +msgid "Mouse" +msgstr "فأرة" + +#: ../js/ui/status/power.js:247 +msgid "Keyboard" +msgstr "لوحة المفاتيح" + +#: ../js/ui/status/power.js:249 +msgid "PDA" +msgstr "مساعد رقمي" + +#: ../js/ui/status/power.js:251 +msgid "Cell phone" +msgstr "هاتف محمول" + +#: ../js/ui/status/power.js:253 +msgid "Media player" +msgstr "مشغل وسائط" + +#: ../js/ui/status/power.js:255 +msgid "Tablet" +msgstr "لوحة" + +#: ../js/ui/status/power.js:257 +msgid "Computer" +msgstr "حاسوب" + +#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "مجهول" + +#: ../js/ui/status/volume.js:41 +msgid "Volume" +msgstr "جزء" + +#: ../js/ui/status/volume.js:54 +msgid "Microphone" +msgstr "ميكروفون" + +#: ../js/ui/telepathyClient.js:561 +#, c-format +msgid "%s is online." +msgstr "‏%s متّصل." + +#: ../js/ui/telepathyClient.js:566 +#, c-format +msgid "%s is offline." +msgstr "‏%s غير متّصل." + +#: ../js/ui/telepathyClient.js:569 +#, c-format +msgid "%s is away." +msgstr "‏%s غائب." + +#: ../js/ui/telepathyClient.js:572 +#, 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:666 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "أُرسلت الساعة %l:%M:%S في %A" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "ابحث في حاسوبك" #: ../js/ui/windowAttentionHandler.js:43 #, c-format @@ -612,12 +780,12 @@ msgstr "انتهى %s من البدء" msgid "'%s' is ready" msgstr "‏'%s' جاهز" -#: ../js/ui/workspacesView.js:229 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "تعذّر إضافة مساحة عمل جديدة، لتجاوز أقصى عدد من مساحات العمل." -#: ../js/ui/workspacesView.js:246 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "لا يمكن حذف مساحة العمل الأولى." @@ -651,11 +819,11 @@ msgstr[5] "%u مدخل" msgid "System Sounds" msgstr "أصوات النظام" -#: ../src/shell-global.c:1219 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "منذ أقل من دقيقة" -#: ../src/shell-global.c:1223 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -666,7 +834,7 @@ msgstr[3] "منذ %d دقائق" msgstr[4] "منذ %d دقيقة" msgstr[5] "منذ %d دقيقة" -#: ../src/shell-global.c:1228 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -677,7 +845,7 @@ msgstr[3] "منذ %d ساعات" msgstr[4] "منذ %d ساعة" msgstr[5] "منذ %d ساعة" -#: ../src/shell-global.c:1233 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -688,7 +856,7 @@ msgstr[3] "منذ %d أيام" msgstr[4] "منذ %d يوما" msgstr[5] "منذ %d يوم" -#: ../src/shell-global.c:1238 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -699,17 +867,17 @@ msgstr[3] "منذ %d أسابيع" msgstr[4] "منذ %d أسبوعا" msgstr[5] "منذ %d أسبوع" -#: ../src/shell-uri-util.c:89 +#: ../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 "ابحث" @@ -718,20 +886,68 @@ 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" +#~ msgid "Clock" +#~ msgstr "الساعة" + +#~ msgid "Customize the panel clock" +#~ msgstr "طوّع ساعة اللوحة" + +#~ msgid "Clock Format" +#~ msgstr "تنسيق الساعة" + +#~ msgid "Clock Preferences" +#~ msgstr "تفضيلات الساعة" + +#~ msgid "Panel Display" +#~ msgstr "عرض اللوحة" + +#~ msgid "Show seco_nds" +#~ msgstr "أظهر ال_ثواني" + +#~ msgid "Show the _date" +#~ msgstr "أظهر ال_تاريخ" + +#~ msgid "_12 hour format" +#~ msgstr "نسق _12 ساعة" + +#~ msgid "_24 hour format" +#~ msgstr "نسق _24 ساعة" + +#~ msgid "Drag here to add favorites" +#~ msgstr "اسحب إلى هنا ليضاف إلى المفضّلة" + +#~ msgid "Find" +#~ msgstr "ابحث" + +#~ msgid "Searching..." +#~ msgstr "يبحث..." + +#~ msgid "No matching results." +#~ msgstr "لا نتائج مطابقة." + +#~ msgid "Preferences" +#~ msgstr "التفضيلات" + +#~ msgid "Invisible" +#~ msgstr "خفي" + +#~ msgid "System Preferences..." +#~ msgstr "تفضيلات النظام..." + +#~ msgid "Restart..." +#~ msgstr "أعد التشغيل..." + #~ msgid "Account Information..." #~ msgstr "معلومات الحساب..." #~ msgid "%H:%M" #~ msgstr "%OH:%OM" -#~ msgid "Applications" -#~ msgstr "التطبيقات" - #~ msgid "Recent Documents" #~ msgstr "المستندات الحديثة" @@ -750,9 +966,6 @@ msgstr "‏%1$s:‏ %2$s" #~ msgid "SEARCH RESULTS" #~ msgstr "نتائج البحث" -#~ msgid "Unknown" -#~ msgstr "مجهول" - #~ msgid "Can't lock screen: %s" #~ msgstr "تعذّر إيصاد الشاشة: %s" From 420753637707d5af55acfa4172b26e09329ac577 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 4 Jan 2011 23:04:56 +0100 Subject: [PATCH 074/132] Status Area: add keyboard layout selector Add an indicator for the current keyboard layout, based on libgnomekbd. The indicator is shown when more than one group is loaded in X and it is not disabled in GSettings. https://bugzilla.gnome.org/show_bug.cgi?id=600771 --- js/Makefile.am | 1 + js/ui/panel.js | 3 +- js/ui/status/keyboard.js | 205 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 js/ui/status/keyboard.js diff --git a/js/Makefile.am b/js/Makefile.am index 49de2ff2a..b2975fc27 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -46,6 +46,7 @@ nobase_dist_js_DATA = \ ui/statusIconDispatcher.js \ ui/statusMenu.js \ ui/status/accessibility.js \ + ui/status/keyboard.js \ ui/status/power.js \ ui/status/volume.js \ ui/status/bluetooth.js \ diff --git a/js/ui/panel.js b/js/ui/panel.js index 4fe60a95d..97789d802 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -36,7 +36,8 @@ const STANDARD_TRAY_ICON_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'blue const STANDARD_TRAY_ICON_SHELL_IMPLEMENTATION = { 'a11y': imports.ui.status.accessibility.ATIndicator, 'volume': imports.ui.status.volume.Indicator, - 'battery': imports.ui.status.power.Indicator + 'battery': imports.ui.status.power.Indicator, + 'keyboard': imports.ui.status.keyboard.XKBIndicator }; if (Config.HAVE_BLUETOOTH) diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js new file mode 100644 index 000000000..b01e28b69 --- /dev/null +++ b/js/ui/status/keyboard.js @@ -0,0 +1,205 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +const Clutter = imports.gi.Clutter; +const GdkPixbuf = imports.gi.GdkPixbuf; +const Gkbd = imports.gi.Gkbd; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Lang = imports.lang; +const Shell = imports.gi.Shell; +const St = imports.gi.St; + +const PopupMenu = imports.ui.popupMenu; +const PanelMenu = imports.ui.panelMenu; + +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + +const INDICATOR_SCHEMA = 'org.gnome.settings-daemon.plugins.keyboard'; + +function LayoutMenuItem() { + this._init.apply(this, arguments); +} + +LayoutMenuItem.prototype = { + __proto__: PopupMenu.PopupBaseMenuItem.prototype, + + _init: function(config, id, indicator, long_name) { + PopupMenu.PopupBaseMenuItem.prototype._init.call(this); + + this._config = config; + this._id = id; + this.label = new St.Label({ text: long_name }); + this.indicator = indicator; + this.addActor(this.label); + this.addActor(this.indicator); + }, + + activate: function(event) { + this._config.lock_group(this._id); + } +}; + +function XKBIndicator() { + this._init.apply(this, arguments); +} + +XKBIndicator.prototype = { + __proto__: PanelMenu.Button.prototype, + + _init: function() { + PanelMenu.Button.prototype._init.call(this, St.Align.START); + + this._container = new Shell.GenericContainer(); + this._container.connect('get-preferred-width', Lang.bind(this, this._get_preferred_width)); + this._container.connect('get-preferred-height', Lang.bind(this, this._get_preferred_height)); + this._container.connect('allocate', Lang.bind(this, this._allocate)); + this.actor.set_child(this._container); + + this._iconActor = new St.Icon({ icon_name: 'keyboard', icon_type: St.IconType.SYMBOLIC, style_class: 'system-status-icon' }); + this._container.add_actor(this._iconActor); + this._labelActors = [ ]; + this._layoutItems = [ ]; + + this._indicatorSettings = new Gio.Settings({ schema: INDICATOR_SCHEMA }); + this._indicatorSettings.connect('changed::disable-indicator', Lang.bind(this, this._sync_config)); + + this._disableIndicator = false; + this._showFlags = false; + this._config = Gkbd.Configuration.get(); + this._config.connect('changed', Lang.bind(this, this._sync_config)); + this._config.connect('group-changed', Lang.bind(this, this._sync_group)); + this._config.start_listen(); + + this._sync_config(); + + this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); + this.menu.addAction(_("Keyboard Preferences"), function() { + GLib.spawn_command_line_async('gnome-control-center region'); + }); + }, + + _sync_config: function() { + this._disableIndicator = this._indicatorSettings.get_boolean('disable-indicator'); + + this._showFlags = this._config.if_flags_shown(); + if (this._showFlags) { + this._container.set_skip_paint(this._iconActor, false); + } else { + this._container.set_skip_paint(this._iconActor, true); + } + + let groups = this._config.get_group_names(); + if (groups.length > 1 && !this._disableIndicator) { + this.actor.show(); + } else { + this.menu.close(); + this.actor.hide(); + } + + for (let i = 0; i < this._layoutItems.length; i++) + this._layoutItems[i].destroy(); + + for (let i = 0; i < this._labelActors.length; i++) + this._labelActors[i].destroy(); + + let short_names = this._config.get_short_group_names(); + + this._selectedLayout = null; + this._layoutItems = [ ]; + this._selectedLabel = null; + this._labelActors = [ ]; + for (let i = 0; i < groups.length; i++) { + let icon_name = this._config.get_group_name(i); + let actor; + if (this._showFlags) + actor = new St.Icon({ icon_name: icon_name, icon_type: St.IconType.SYMBOLIC, style_class: 'popup-menu-icon' }); + else + actor = new St.Label({ text: short_names[i] }); + let item = new LayoutMenuItem(this._config, i, actor, groups[i]); + item._short_group_name = short_names[i]; + item._icon_name = icon_name; + this._layoutItems.push(item); + this.menu.addMenuItem(item, i); + + let shortLabel = new St.Label({ text: short_names[i] }); + this._labelActors.push(shortLabel); + this._container.add_actor(shortLabel); + this._container.set_skip_paint(shortLabel, true); + } + + this._sync_group(); + }, + + _sync_group: function() { + let selected = this._config.get_current_group(); + + if (this._selectedLayout) { + this._selectedLayout.setShowDot(false); + this._selectedLayout = null; + } + + if (this._selectedLabel) { + this._container.set_skip_paint(this._selectedLabel, true); + this._selectedLabel = null; + } + + let item = this._layoutItems[selected]; + item.setShowDot(true); + + this._iconActor.icon_name = item._icon_name; + this._selectedLabel = this._labelActors[selected]; + this._container.set_skip_paint(this._selectedLabel, this._showFlags); + + this._selectedLayout = item; + }, + + _get_preferred_width: function(container, for_height, alloc) { + /* Here, and in _get_preferred_height, we need to query for the + height of all children, but we ignore the results for those + we don't actually display. */ + let max_min_width = 0, max_natural_width = 0; + if (this._showFlags) + [max_min_width, max_natural_width] = this._iconActor.get_preferred_width(for_height); + + for (let i = 0; i < this._labelActors.length; i++) { + let [min_width, natural_width] = this._labelActors[i].get_preferred_width(for_height); + if (!this._showFlags) { + max_min_width = Math.max(max_min_width, min_width); + max_natural_width = Math.max(max_natural_width, natural_width); + } + } + + alloc.min_size = max_min_width; + alloc.natural_size = max_natural_width; + }, + + _get_preferred_height: function(container, for_width, alloc) { + let max_min_height = 0, max_natural_height = 0; + if (this._showFlags) + [max_min_height, max_natural_height] = this._iconActor.get_preferred_height(for_width); + + for (let i = 0; i < this._labelActors.length; i++) { + let [min_height, natural_height] = this._labelActors[i].get_preferred_height(for_width); + if (!this._showFlags) { + max_min_height = Math.max(max_min_height, min_height); + max_natural_height = Math.max(max_natural_height, natural_height); + } + } + + alloc.min_size = max_min_height; + alloc.natural_size = max_natural_height; + }, + + _allocate: function(container, box, flags) { + // translate box to (0, 0) + box.x2 -= box.x1; + box.x1 = 0; + box.y2 -= box.y1; + box.y1 = 0; + + this._iconActor.allocate_align_fill(box, 0.5, 0, false, false, flags); + for (let i = 0; i < this._labelActors.length; i++) + this._labelActors[i].allocate_align_fill(box, 0.5, 0, false, false, flags); + } +}; \ No newline at end of file From 6200daa5bb1ad72ef8ca8890309b6b84b0931dc9 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 11 Jan 2011 22:34:09 +0100 Subject: [PATCH 075/132] Propagate version to Javascript files Add an entry in config.js.in for PACKAGE_VERSION and GJS_VERSION, to be used by the notification daemon and in the future by the extension system. https://bugzilla.gnome.org/show_bug.cgi?id=639255 --- configure.ac | 7 +++++++ js/misc/config.js.in | 7 +++++++ js/ui/notificationDaemon.js | 7 ++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 08655072e..a1d1bcab3 100644 --- a/configure.ac +++ b/configure.ac @@ -6,6 +6,9 @@ AC_CONFIG_SRCDIR([src/shell-global.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([config]) +AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"]) +AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"]) + AM_INIT_AUTOMAKE([1.10 dist-bzip2 no-dist-gzip foreign]) AM_MAINTAINER_MODE @@ -78,6 +81,10 @@ PKG_CHECK_MODULES(MUTTER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION libcanberra) +GJS_VERSION=`$PKG_CONFIG --modversion gjs-internals-1.0` +AC_DEFINE_UNQUOTED([GJS_VERSION], ["$GJS_VERSION"], [The version of GJS we're linking to]) +AC_SUBST([GJS_VERSION], ["$GJS_VERSION"]) + saved_CFLAGS=$CFLAGS saved_LIBS=$LIBS CFLAGS=$MUTTER_PLUGIN_CFLAGS diff --git a/js/misc/config.js.in b/js/misc/config.js.in index db8c6da5e..25a0e7287 100644 --- a/js/misc/config.js.in +++ b/js/misc/config.js.in @@ -1,3 +1,10 @@ /* mode: js2; indent-tabs-mode: nil; tab-size: 4 */ +/* The name of this package (not localized) */ +const PACKAGE_NAME = '@PACKAGE_NAME@'; +/* The version of this package */ +const PACKAGE_VERSION = '@PACKAGE_VERSION@'; +/* The version of GJS we're linking to */ +const GJS_VERSION = '@GJS_VERSION@'; +/* 1 if gnome-bluetooth is available, 0 otherwise */ const HAVE_BLUETOOTH = @HAVE_BLUETOOTH@; diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index cbf34cf35..b87b3a41d 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -9,6 +9,7 @@ const St = imports.gi.St; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; +const Config = imports.misc.config; const Main = imports.ui.main; const MessageTray = imports.ui.messageTray; const Params = imports.misc.params; @@ -390,10 +391,10 @@ NotificationDaemon.prototype = { GetServerInformation: function() { return [ - 'GNOME Shell', + Config.PACKAGE_NAME, 'GNOME', - '0.1', // FIXME, get this from somewhere - '1.0' + Config.PACKAGE_VERSION, + '1.2' ]; }, From 5412ce276cf9fa0d137b74a31e4263c70020faea Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 11 Jan 2011 22:42:34 +0100 Subject: [PATCH 076/132] ExtensionSystem: introduce versioning Require that all extensions have a "shell-version" property in their metadata, which is an array of supported Shell versions. Extensions can target a specific version triple or an entire stable version. Optionally, they can also require a specific GJS version, to ensure compatibility. https://bugzilla.gnome.org/show_bug.cgi?id=639255 --- js/ui/extensionSystem.js | 42 ++++++++++++++++++++++++++++++++++++++-- src/gnome-shell.in | 3 ++- 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 5315d90c3..8a514a53f 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -4,6 +4,8 @@ const GLib = imports.gi.GLib; const Gio = imports.gi.Gio; const St = imports.gi.St; +const Config = imports.misc.config; + const ExtensionState = { ENABLED: 1, DISABLED: 2, @@ -25,6 +27,36 @@ var disabledExtensions; // GFile for user extensions var userExtensionsDir = null; +/** + * versionCheck: + * @required: an array of versions we're compatible with + * @current: the version we have + * + * Check if a component is compatible for an extension. + * @required is an array, and at least one version must match. + * @current must be in the format ... + * is always ignored + * is ignored if is even (so you can target the + * whole stable release) + * and must match + * Each target version must be at least and + */ +function versionCheck(required, current) { + let currentArray = current.split('.'); + let major = currentArray[0]; + let minor = currentArray[1]; + let point = currentArray[2]; + for (let i = 0; i < required.length; i++) { + let requiredArray = required[i].split('.'); + if (requiredArray[0] == major && + requiredArray[1] == minor && + (requiredArray[2] == point || + (requiredArray[2] == undefined && parseInt(minor) % 2 == 0))) + return true; + } + return false; +} + function loadExtension(dir, enabled, type) { let info; let baseErrorString = 'While loading extension from "' + dir.get_parse_name() + '": '; @@ -43,8 +75,8 @@ function loadExtension(dir, enabled, type) { global.logError(baseErrorString + 'Failed to parse metadata.json: ' + e); return; } - let requiredProperties = ['uuid', 'name', 'description']; - for (let i = 0; i < requiredProperties; i++) { + let requiredProperties = ['uuid', 'name', 'description', 'shell-version']; + for (let i = 0; i < requiredProperties.length; i++) { let prop = requiredProperties[i]; if (!meta[prop]) { global.logError(baseErrorString + 'missing "' + prop + '" property in metadata.json'); @@ -68,6 +100,12 @@ function loadExtension(dir, enabled, type) { return; } + if (!versionCheck(meta['shell-version'], Config.PACKAGE_VERSION) || + (meta['js-version'] && !versionCheck(meta['js-version'], Config.GJS_VERSION))) { + global.logError(baseErrorString + 'extension is not compatible with current GNOME Shell and/or GJS version'); + return; + } + extensionMeta[meta.uuid] = meta; extensionMeta[meta.uuid].type = type; extensionMeta[meta.uuid].path = dir.get_path(); diff --git a/src/gnome-shell.in b/src/gnome-shell.in index e422adb8d..8500d98cb 100755 --- a/src/gnome-shell.in +++ b/src/gnome-shell.in @@ -672,7 +672,8 @@ use an extension title clicktofocus@janedoe.example.com.''' os.makedirs(extension_path) meta = { 'name': name, 'description': description, - 'uuid': uuid } + 'uuid': uuid, + 'shell-version': ['@VERSION@'] } f = open(os.path.join(extension_path, 'metadata.json'), 'w') try: json.dump(meta, f) From e4fc899aca640daa9e9df794ad489712bed0a56c Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 12 Jan 2011 16:29:23 -0500 Subject: [PATCH 077/132] Require the latest g-i Necessary for correct handling of (out caller-allocates) among other things. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index a1d1bcab3..59ebb464f 100644 --- a/configure.ac +++ b/configure.ac @@ -61,7 +61,7 @@ fi AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) CLUTTER_MIN_VERSION=1.5.8 -GOBJECT_INTROSPECTION_MIN_VERSION=0.6.11 +GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 GJS_MIN_VERSION=0.7 MUTTER_MIN_VERSION=2.91.4 GTK_MIN_VERSION=2.91.7 From 870be026d8f46c985484e62e32f217d6782d54f3 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Fri, 10 Sep 2010 18:07:17 -0400 Subject: [PATCH 078/132] Install a GDK event handler to catch events queued by IBus With IBus, key events sometimes get sent to the server than redelivered via gdk_event_put(). Since we expect all key events to be delivered via the GDK event filter Mutter installs, this results in key input not working. To fix this, install an event handler with gdk_event_handler_set() to intercept events being set from GDK to GTK+, pull out the key events and send them back to Clutter. Partially based on a patch by Daiki Ueno https://bugzilla.gnome.org/show_bug.cgi?id=621659 --- src/gnome-shell-plugin.c | 95 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) diff --git a/src/gnome-shell-plugin.c b/src/gnome-shell-plugin.c index ad2c4e626..c77cbdae4 100644 --- a/src/gnome-shell-plugin.c +++ b/src/gnome-shell-plugin.c @@ -301,6 +301,99 @@ add_statistics (GnomeShellPlugin *shell_plugin) 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_RELEASE) ? + 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, @@ -340,6 +433,8 @@ gnome_shell_plugin_start (MetaPlugin *plugin) NULL); update_font_options (settings); + gdk_event_handler_set (gnome_shell_gdk_event_handler, plugin, NULL); + screen = meta_plugin_get_screen (plugin); display = meta_screen_get_display (screen); From 7322a4e4ef9077ceb9ffd4be9f626e550d241b98 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 30 Nov 2010 10:47:28 -0500 Subject: [PATCH 079/132] messageTray: add SystemNotificationSource, moved from overview.js Move the overview's "System Information" source here, so it can be used by non-overview code as well. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- js/ui/messageTray.js | 27 +++++++++++++++++++++++++++ js/ui/overview.js | 27 +-------------------------- po/POTFILES.in | 1 + 3 files changed, 29 insertions(+), 26 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index da8f7e891..4188225c9 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -18,6 +18,9 @@ const BoxPointer = imports.ui.boxpointer; const Params = imports.misc.params; const Utils = imports.misc.utils; +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + const ANIMATION_TIME = 0.2; const NOTIFICATION_TIMEOUT = 4; const SUMMARY_TIMEOUT = 1; @@ -1743,3 +1746,27 @@ MessageTray.prototype = { } } }; + +function SystemNotificationSource() { + this._init(); +} + +SystemNotificationSource.prototype = { + __proto__: Source.prototype, + + _init: function() { + Source.prototype._init.call(this, _("System Information")); + + this._setSummaryIcon(this.createNotificationIcon()); + }, + + createNotificationIcon: function() { + return new St.Icon({ icon_name: 'dialog-information', + icon_type: St.IconType.SYMBOLIC, + icon_size: this.ICON_SIZE }); + }, + + _notificationClicked: function() { + this.destroy(); + } +}; diff --git a/js/ui/overview.js b/js/ui/overview.js index 1d6e6ab50..08641ae89 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -31,33 +31,8 @@ const ANIMATION_TIME = 0.25; // We split the screen vertically between the dash and the view selector. const DASH_SPLIT_FRACTION = 0.1; - const DND_WINDOW_SWITCH_TIMEOUT = 1250; -function Source() { - this._init(); -} - -Source.prototype = { - __proto__: MessageTray.Source.prototype, - - _init: function() { - MessageTray.Source.prototype._init.call(this, - "System Information"); - this._setSummaryIcon(this.createNotificationIcon()); - }, - - createNotificationIcon: function() { - return new St.Icon({ icon_name: 'dialog-information', - icon_type: St.IconType.SYMBOLIC, - icon_size: this.ICON_SIZE }); - }, - - _notificationClicked: function() { - this.destroy(); - } -} - function ShellInfo() { this._init(); } @@ -79,7 +54,7 @@ ShellInfo.prototype = { setMessage: function(text, undoCallback, undoLabel) { if (this._source == null) { - this._source = new Source(); + this._source = new MessageTray.SystemNotificationSource(); this._source.connect('destroy', Lang.bind(this, function() { this._source = null; diff --git a/po/POTFILES.in b/po/POTFILES.in index 5ac0ba766..cb9c39f0b 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -6,6 +6,7 @@ js/ui/appFavorites.js js/ui/dash.js js/ui/docDisplay.js js/ui/lookingGlass.js +js/ui/messageTray.js js/ui/overview.js js/ui/panel.js js/ui/placeDisplay.js From a65a0f03d49e794fb413abdf6b97d84a269bd0f1 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 30 Nov 2010 11:16:10 -0500 Subject: [PATCH 080/132] util: rename from utils, avoid RegExp literal Rename imports.misc.utils to imports.misc.util for more consistency (eg, with shell-util). Also, use the string-based RegExp() constructor rather than a RegExp literal, since the literal is extremely difficult to parse correctly, and confuses emacs and probably other editors and thus messes up autoindentation, etc. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- js/Makefile.am | 2 +- js/misc/{utils.js => util.js} | 2 +- js/ui/messageTray.js | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) rename js/misc/{utils.js => util.js} (71%) diff --git a/js/Makefile.am b/js/Makefile.am index b2975fc27..3d87decc9 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -9,7 +9,7 @@ nobase_dist_js_DATA = \ misc/gnomeSession.js \ misc/params.js \ misc/telepathy.js \ - misc/utils.js \ + misc/util.js \ perf/core.js \ ui/altTab.js \ ui/appDisplay.js \ diff --git a/js/misc/utils.js b/js/misc/util.js similarity index 71% rename from js/misc/utils.js rename to js/misc/util.js index 0b7d6c02b..0d1d5c464 100644 --- a/js/misc/utils.js +++ b/js/misc/util.js @@ -1,7 +1,7 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ /* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */ -const _urlRegexp = /\b(([a-z][\w-]+:(\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)([^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'\".,<>?«»“”‘’]))/gi; +const _urlRegexp = new RegExp('\b(([a-z][\w-]+:(/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)([^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))', 'gi'); // findUrls: // @str: string to find URLs in diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 4188225c9..e085421ef 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -16,7 +16,7 @@ const Tweener = imports.ui.tweener; const Main = imports.ui.main; const BoxPointer = imports.ui.boxpointer; const Params = imports.misc.params; -const Utils = imports.misc.utils; +const Util = imports.misc.util; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -138,13 +138,13 @@ URLHighlighter.prototype = { this.actor.clutter_text.set_markup(text); /* clutter_text.text contain text without markup */ - this._urls = Utils.findUrls(this.actor.clutter_text.text); + this._urls = Util.findUrls(this.actor.clutter_text.text); this._highlightUrls(); }, _highlightUrls: function() { // text here contain markup - let urls = Utils.findUrls(this._text); + let urls = Util.findUrls(this._text); let markup = ''; let pos = 0; for (let i = 0; i < urls.length; i++) { From 8bdfb8df6897a81a0c0087c6f778fe07902dd8f7 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 17 Nov 2010 11:43:08 -0500 Subject: [PATCH 081/132] util: add Util.spawn and friends Add Util.spawn, Util.spawnCommandLine, and Util.spawnDesktop for spawning a command/argv/.desktop file in the background, automatically handling errors via MessageTray.SystemNotificationSource(), and Util.trySpawn, Util.trySpawnCommandLine, and Utils.trySpawnDesktop that don't do automatic error handling (but do at least clean up the error message in the exception a bit). Update various other bits of code around the shell to use the new methods. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- js/misc/util.js | 131 ++++++++++++++++++++++++++++++++++ js/ui/main.js | 8 +-- js/ui/messageTray.js | 3 +- js/ui/placeDisplay.js | 3 +- js/ui/runDialog.js | 14 ++-- js/ui/status/accessibility.js | 4 +- js/ui/status/power.js | 11 ++- js/ui/status/volume.js | 4 +- js/ui/statusMenu.js | 21 ++---- po/POTFILES.in | 1 + 10 files changed, 158 insertions(+), 42 deletions(-) diff --git a/js/misc/util.js b/js/misc/util.js index 0d1d5c464..e61f0dd94 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -1,5 +1,16 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Shell = imports.gi.Shell; + +const Main = imports.ui.main; +const MessageTray = imports.ui.messageTray; + +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + /* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */ const _urlRegexp = new RegExp('\b(([a-z][\w-]+:(/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)([^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))', 'gi'); @@ -17,3 +28,123 @@ function findUrls(str) { res.push({ url: match[0], pos: match.index }); return res; } + +// spawn: +// @argv: an argv array +// +// Runs @argv in the background, handling any errors that occur +// when trying to start the program. +function spawn(argv) { + try { + trySpawn(argv); + } catch (err) { + _handleSpawnError(argv[0], err); + } +} + +// spawnCommandLine: +// @command_line: a command line +// +// Runs @command_line in the background, handling any errors that +// occur when trying to parse or start the program. +function spawnCommandLine(command_line) { + try { + let [success, argc, argv] = GLib.shell_parse_argv(command_line); + trySpawn(argv); + } catch (err) { + _handleSpawnError(command_line, err); + } +} + +// spawnDesktop: +// @id: a desktop file ID +// +// Spawns the desktop file identified by @id using startup notification, +// etc, handling any errors that occur when trying to find or start +// the program. +function spawnDesktop(id) { + try { + trySpawnDesktop(id); + } catch (err) { + _handleSpawnError(id, err); + } +} + +// trySpawn: +// @argv: an argv array +// +// Runs @argv in the background. If launching @argv fails, +// this will throw an error. +function trySpawn(argv) +{ + try { + GLib.spawn_async(null, argv, null, + GLib.SpawnFlags.SEARCH_PATH, + null, null); + } catch (err) { + // The exception from gjs contains an error string like: + // Error invoking GLib.spawn_command_line_async: Failed to + // execute child process "foo" (No such file or directory) + // We are only interested in the part in the parentheses. (And + // we can't pattern match the text, since it gets localized.) + err.message = err.message.replace(/.*\((.+)\)/, '$1'); + throw err; + } +} + +// trySpawnCommandLine: +// @command_line: a command line +// +// Runs @command_line in the background. If launching @command_line +// fails, this will throw an error. +function trySpawnCommandLine(command_line) { + let success, argc, argv; + + try { + [success, argc, argv] = GLib.shell_parse_argv(command_line); + } catch (err) { + // Replace "Error invoking GLib.shell_parse_argv: " with + // something nicer + err.message = err.message.replace(/[^:]*: /, _("Could not parse command:") + "\n"); + throw err; + } + + trySpawn(argv); +} + +// trySpawnDesktop: +// @id: a desktop file ID +// +// Spawns the desktop file identified by @id using startup notification. +// On error, throws an exception. +function trySpawnDesktop(id) { + let app; + + // shell_app_system_load_from_desktop_file() will end up returning + // a stupid error message if the desktop file doesn't exist, but + // that's the only case it returns an error for, so we just + // substitute our own error in instead + try { + app = Shell.AppSystem.get_default().load_from_desktop_file(id + '.desktop'); + } catch (err) { + throw new Error(_("No such application")); + } + + try { + app.launch(); + } catch(err) { + // see trySpawn + err.message = err.message.replace(/.*\((.+)\)/, '$1'); + throw err; + } +} + +function _handleSpawnError(command, err) { + let title = _("Execution of '%s' failed:").format(command); + + let source = new MessageTray.SystemNotificationSource(); + Main.messageTray.add(source); + let notification = new MessageTray.Notification(source, title, err.message); + notification.setTransient(true); + source.notify(notification); +} diff --git a/js/ui/main.js b/js/ui/main.js index 8574fe701..1ee806516 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -39,6 +39,7 @@ const WindowManager = imports.ui.windowManager; const Magnifier = imports.ui.magnifier; const XdndHandler = imports.ui.xdndHandler; const StatusIconDispatcher = imports.ui.statusIconDispatcher; +const Util = imports.misc.util; const DEFAULT_BACKGROUND_COLOR = new Clutter.Color(); DEFAULT_BACKGROUND_COLOR.from_pixel(0x2266bbff); @@ -317,11 +318,8 @@ function _globalKeyPressHandler(actor, event) { if (action == Meta.KeyBindingAction.COMMAND_SCREENSHOT) { let gconf = GConf.Client.get_default(); let command = gconf.get_string('/apps/metacity/keybinding_commands/command_screenshot'); - if (command != null && command != '') { - let [ok, len, args] = GLib.shell_parse_argv(command); - let p = new Shell.Process({'args' : args}); - p.run(); - } + if (command != null && command != '') + Util.spawnCommandLine(command); return true; } diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index e085421ef..57f5acf02 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -106,8 +106,7 @@ URLHighlighter.prototype = { return true; } catch (e) { // TODO: remove this after gnome 3 release - let p = new Shell.Process({ 'args' : ['gvfs-open', url] }); - p.run(); + Util.spawn(['gvfs-open', url]); return true; } } diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index fb96149c9..9b7134b89 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -14,6 +14,7 @@ const _ = Gettext.gettext; const DND = imports.ui.dnd; const Main = imports.ui.main; const Search = imports.ui.search; +const Util = imports.misc.util; const NAUTILUS_PREFS_DIR = '/apps/nautilus/preferences'; const DESKTOP_IS_HOME_KEY = NAUTILUS_PREFS_DIR + '/desktop_is_home_dir'; @@ -163,7 +164,7 @@ PlacesManager.prototype = { icon_size: size }); }, function () { - new Shell.Process({ args: ['nautilus-connect-server'] }).run(); + Util.spawn(['nautilus-connect-server']); }); let networkApp = null; diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index d09639ceb..955f1e777 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -14,6 +14,7 @@ const _ = Gettext.gettext; const Lightbox = imports.ui.lightbox; const Main = imports.ui.main; const Tweener = imports.ui.tweener; +const Util = imports.misc.util; const MAX_FILE_DELETED_BEFORE_INVALID = 10; @@ -354,9 +355,7 @@ RunDialog.prototype = { try { if (inTerminal) command = 'gnome-terminal -x ' + input; - let [ok, len, args] = GLib.shell_parse_argv(command); - let p = new Shell.Process({ 'args' : args }); - p.run(); + Util.trySpawnCommandLine(command); } catch (e) { // Mmmh, that failed - see if @input matches an existing file let path = null; @@ -374,13 +373,8 @@ RunDialog.prototype = { global.create_app_launch_context()); } else { this._commandError = true; - // The exception contains an error string like: - // Error invoking Shell.run: Failed to execute child - // process "foo" (No such file or directory) - // We are only interested in the actual error, so parse - //that out. - let m = /.+\((.+)\)/.exec(e); - let errorStr = _("Execution of '%s' failed:").format(command) + '\n' + m[1]; + + let errorStr = _("Execution of '%s' failed:").format(command) + '\n' + e.message; this._errorMessage.set_text(errorStr); this._errorBox.show(); diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js index f96e193a8..11a95f373 100644 --- a/js/ui/status/accessibility.js +++ b/js/ui/status/accessibility.js @@ -12,6 +12,7 @@ const St = imports.gi.St; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; +const Util = imports.misc.util; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -108,8 +109,7 @@ ATIndicator.prototype = { this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addAction(_("Universal Access Settings"), function() { - let p = new Shell.Process({ args: ['gnome-control-center','universal-access'] }); - p.run(); + Util.spawnDesktop('gnome-universal-access-panel'); }); }, diff --git a/js/ui/status/power.js b/js/ui/status/power.js index 3a909c4cd..fe787f790 100644 --- a/js/ui/status/power.js +++ b/js/ui/status/power.js @@ -10,6 +10,7 @@ const St = imports.gi.St; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; +const Util = imports.misc.util; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -83,7 +84,7 @@ Indicator.prototype = { this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addAction(_("Power Settings"),function() { - GLib.spawn_command_line_async('gnome-control-center power'); + Util.spawnDesktop('gnome-power-panel'); }); this._proxy.connect('Changed', Lang.bind(this, this._devicesChanged)); @@ -134,8 +135,7 @@ Indicator.prototype = { this._batteryItem.actor.reactive = true; this._batteryItem.actor.can_focus = true; this._batteryItem.connect('activate', function(item) { - let p = new Shell.Process({ args: ['gnome-power-statistics', '--device', device_id] }); - p.run(); + Util.spawn(['gnome-power-statistics', '--device', device_id]); }); } else { // virtual device @@ -164,8 +164,7 @@ Indicator.prototype = { let item = new DeviceItem (devices[i]); item.connect('activate', function() { - let p = new Shell.Process({ args: ['gnome-power-statistics', '--device', device_id] }); - p.run(); + Util.spawn(['gnome-power-statistics', '--device', device_id]); }); this._deviceItems.push(item); this.menu.addMenuItem(item, this._otherDevicePosition + position); @@ -198,7 +197,7 @@ Indicator.prototype = { _checkError: function(error) { if (!this._restarted && error && error.message.match(/org\.freedesktop\.DBus\.Error\.(UnknownMethod|InvalidArgs)/)) { GLib.spawn_command_line_sync('pkill -f "^gnome-power-manager$"'); - GLib.spawn_command_line_async('gnome-power-manager'); + Util.spawn(['gnome-power-manager']); this._restarted = true; } } diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js index 63f76fe0d..9211968f9 100644 --- a/js/ui/status/volume.js +++ b/js/ui/status/volume.js @@ -11,6 +11,7 @@ const St = imports.gi.St; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; +const Util = imports.misc.util; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -60,8 +61,7 @@ Indicator.prototype = { this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); this.menu.addAction(_("Sound Settings"), function() { - let p = new Shell.Process({ args: ['gnome-control-center', 'sound'] }); - p.run(); + Util.spawnDesktop('gnome-sound-panel'); }); this.actor.connect('scroll-event', Lang.bind(this, this._onScrollEvent)); diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js index e2d13c68d..f834aad49 100644 --- a/js/ui/statusMenu.js +++ b/js/ui/statusMenu.js @@ -12,6 +12,7 @@ const GnomeSession = imports.misc.gnomeSession; const Main = imports.ui.main; const PanelMenu = imports.ui.panelMenu; const PopupMenu = imports.ui.popupMenu; +const Util = imports.misc.util; // Adapted from gdm/gui/user-switch-applet/applet.c // @@ -31,7 +32,7 @@ StatusMenuButton.prototype = { this.actor.set_child(box); this._gdm = Gdm.UserManager.ref_default(); - this._gdm.queue_load() + this._gdm.queue_load(); this._user = this._gdm.get_user(GLib.get_user_name()); this._presence = new GnomeSession.Presence(); @@ -153,17 +154,17 @@ StatusMenuButton.prototype = { _onMyAccountActivate: function() { Main.overview.hide(); - this._spawn(['gnome-control-center', 'user-accounts']); + Util.spawnDesktop('gnome-user-accounts-panel'); }, _onPreferencesActivate: function() { Main.overview.hide(); - this._spawn(['gnome-control-center', '-o']); + Util.spawnDesktop('gnome-control-center'); }, _onLockScreenActivate: function() { Main.overview.hide(); - this._spawn(['gnome-screensaver-command', '--lock']); + Util.spawn(['gnome-screensaver-command', '--lock']); }, _onLoginScreenActivate: function() { @@ -174,19 +175,11 @@ StatusMenuButton.prototype = { _onQuitSessionActivate: function() { Main.overview.hide(); - this._spawn(['gnome-session-save', '--logout-dialog']); + Util.spawn(['gnome-session-save', '--logout-dialog']); }, _onShutDownActivate: function() { Main.overview.hide(); - this._spawn(['gnome-session-save', '--shutdown-dialog']); - }, - - _spawn: function(args) { - // FIXME: once Shell.Process gets support for signalling - // errors we should pop up an error dialog or something here - // on failure - let p = new Shell.Process({'args' : args}); - p.run(); + Util.spawn(['gnome-session-save', '--shutdown-dialog']); } }; diff --git a/po/POTFILES.in b/po/POTFILES.in index cb9c39f0b..255a3d651 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,6 +1,7 @@ data/gnome-shell.desktop.in.in data/org.gnome.shell.gschema.xml.in data/org.gnome.accessibility.magnifier.gschema.xml.in +js/misc/util.js js/ui/appDisplay.js js/ui/appFavorites.js js/ui/dash.js From 23353fb77a9e836b37a2923937ec81b6babb5124 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 17 Dec 2010 15:30:12 -0500 Subject: [PATCH 082/132] Util.killall: add utility for killing unwanted processes Since we have to use pkill, kludgily, for the right combination of portability and featurefulness, put the code in one place rather than duplicating it everywhere. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- js/misc/util.js | 25 +++++++++++++++++++++++++ js/ui/notificationDaemon.js | 14 +++----------- js/ui/status/power.js | 3 +-- js/ui/statusIconDispatcher.js | 4 ++-- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/js/misc/util.js b/js/misc/util.js index e61f0dd94..db5dc01c6 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -148,3 +148,28 @@ function _handleSpawnError(command, err) { notification.setTransient(true); source.notify(notification); } + +// killall: +// @processName: a process name +// +// Kills @processName. If no process with the given name is found, +// this will fail silently. +function killall(processName) { + try { + // pkill is more portable than killall, but on Linux at least + // it won't match if you pass more than 15 characters of the + // process name... However, if you use the '-f' flag to match + // the entire command line, it will work, but we have to be + // careful in that case that we can match + // '/usr/bin/processName' but not 'gedit processName.c' or + // whatever... + + let argv = ['pkill', '-f', '^([^ ]*/)?' + processName + '($| )']; + GLib.spawn_sync(null, argv, null, GLib.SpawnFlags.SEARCH_PATH, null, null); + // It might be useful to return success/failure, but we'd need + // a wrapper around WIFEXITED and WEXITSTATUS. Since none of + // the current callers care, we don't bother. + } catch (e) { + logError(e, 'Failed to kill ' + processName); + } +} diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js index b87b3a41d..0b377a834 100644 --- a/js/ui/notificationDaemon.js +++ b/js/ui/notificationDaemon.js @@ -13,6 +13,7 @@ const Config = imports.misc.config; const Main = imports.ui.main; const MessageTray = imports.ui.messageTray; const Params = imports.misc.params; +const Util = imports.misc.util; let nextNotificationId = 1; @@ -127,17 +128,8 @@ NotificationDaemon.prototype = { log('Failed to acquire org.freedesktop.Notifications'); else { log('Failed to acquire org.freedesktop.Notifications; trying again'); - - // kill the notification-daemon. pkill is more portable - // than killall, but on Linux at least it won't match if - // you pass more than 15 characters of the process name... - // However, if you use the '-f' flag to match the entire - // command line, it will work, but we have to be careful - // in that case that we don't match 'gedit - // notification-daemon.c' or whatever... - let p = new Shell.Process({ args: ['pkill', '-f', - '^([^ ]*/)?(notification-daemon|notify-osd)$']}); - p.run(); + Util.killall('notification-daemon'); + Util.killall('notify-osd'); } }, diff --git a/js/ui/status/power.js b/js/ui/status/power.js index fe787f790..263d48e3d 100644 --- a/js/ui/status/power.js +++ b/js/ui/status/power.js @@ -1,7 +1,6 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ const Gio = imports.gi.Gio; -const GLib = imports.gi.GLib; const DBus = imports.dbus; const Lang = imports.lang; const Mainloop = imports.mainloop; @@ -196,7 +195,7 @@ Indicator.prototype = { _checkError: function(error) { if (!this._restarted && error && error.message.match(/org\.freedesktop\.DBus\.Error\.(UnknownMethod|InvalidArgs)/)) { - GLib.spawn_command_line_sync('pkill -f "^gnome-power-manager$"'); + Util.killall('gnome-power-manager'); Util.spawn(['gnome-power-manager']); this._restarted = true; } diff --git a/js/ui/statusIconDispatcher.js b/js/ui/statusIconDispatcher.js index 474cf54d3..874ffb40d 100644 --- a/js/ui/statusIconDispatcher.js +++ b/js/ui/statusIconDispatcher.js @@ -6,6 +6,7 @@ const Signals = imports.signals; const MessageTray = imports.ui.messageTray; const NotificationDaemon = imports.ui.notificationDaemon; +const Util = imports.misc.util; const STANDARD_TRAY_ICON_IMPLEMENTATIONS = { 'bluetooth-applet': 'bluetooth', @@ -33,8 +34,7 @@ StatusIconDispatcher.prototype = { // app-indicators, so that applications fall back to normal // status icons // http://bugzilla.gnome.org/show_bug.cgi=id=621382 - let p = new Shell.Process({ args: ['pkill', '-f', '^([^ ]*/)?indicator-application-service$']}); - p.run(); + Util.killall('indicator-application-service'); }, _onTrayIconAdded: function(o, icon) { From 9ddf19a1a48b14ff14025dc0a9b45dd9517299dc Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Wed, 17 Nov 2010 11:43:08 -0500 Subject: [PATCH 083/132] shell: remove ShellProcess ShellProcess only existed to work around gjs bugs that have long since been fixed, and has now been obsoleted by Util.spawn*. Kill it. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- src/Makefile.am | 2 - src/shell-process.c | 129 -------------------------------------------- src/shell-process.h | 37 ------------- 3 files changed, 168 deletions(-) delete mode 100644 src/shell-process.c delete mode 100644 src/shell-process.h diff --git a/src/Makefile.am b/src/Makefile.am index fa9804b72..0740f0667 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -59,7 +59,6 @@ shell_public_headers_h = \ shell-embedded-window.h \ shell-generic-container.h \ shell-gtk-embed.h \ - shell-process.h \ shell-global.h \ shell-perf-log.h \ shell-slicer.h \ @@ -90,7 +89,6 @@ libgnome_shell_la_SOURCES = \ shell-embedded-window.c \ shell-generic-container.c \ shell-gtk-embed.c \ - shell-process.c \ shell-global.c \ shell-perf-log.c \ shell-slicer.c \ diff --git a/src/shell-process.c b/src/shell-process.c deleted file mode 100644 index afa3abdf6..000000000 --- a/src/shell-process.c +++ /dev/null @@ -1,129 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ - -#include "config.h" - -#include "shell-process.h" - -#include -#include - -struct _ShellProcessPrivate { - char **args; - GPid pid; -}; - -enum { - PROP_0, - PROP_ARGS, -}; - -static void shell_process_dispose (GObject *object); -static void shell_process_finalize (GObject *object); -static void shell_process_set_property ( GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec ); -static void shell_process_get_property( GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec ); - -G_DEFINE_TYPE( ShellProcess, shell_process, G_TYPE_OBJECT); - -static void shell_process_class_init( ShellProcessClass *klass) -{ - GObjectClass *gobject_class = (GObjectClass *)klass; - - gobject_class->dispose = shell_process_dispose; - gobject_class->finalize = shell_process_finalize; - gobject_class->set_property = shell_process_set_property; - gobject_class->get_property = shell_process_get_property; - - g_object_class_install_property (gobject_class, - PROP_ARGS, - g_param_spec_boxed ("args", - "Arguments", - "", - G_TYPE_STRV, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); - -} - -static void shell_process_init (ShellProcess *self) -{ - self->priv = g_new0 (ShellProcessPrivate, 1); -} - -static void shell_process_dispose (GObject *object) -{ - G_OBJECT_CLASS (shell_process_parent_class)->dispose(object); -} - -static void shell_process_finalize (GObject *object) -{ - ShellProcess *self = (ShellProcess*)object; - - g_free (self->priv); - g_signal_handlers_destroy(object); - G_OBJECT_CLASS (shell_process_parent_class)->finalize(object); -} -static void shell_process_set_property ( GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec ) -{ - ShellProcess* self = SHELL_PROCESS(object); - switch (property_id) { - case PROP_ARGS: - self->priv->args = (char**) g_value_dup_boxed (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - - -static void shell_process_get_property ( GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec ) -{ - ShellProcess* self = SHELL_PROCESS(object); - switch (property_id) { - case PROP_ARGS: - g_value_set_boxed (value, self->priv->args); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -ShellProcess* shell_process_new(char **args) -{ - return (ShellProcess*) g_object_new(SHELL_TYPE_PROCESS, - "args", args, - NULL); -} - -gboolean -shell_process_run (ShellProcess *self, - GError **error) -{ - return g_spawn_async (NULL, self->priv->args, NULL, - G_SPAWN_SEARCH_PATH, NULL, NULL, - &self->priv->pid, - error); -} -/* -int -shell_process_wait (ShellProcess *self) -{ - int status; - - waitpid ((pid_t) self->priv->pid, &status, 0); - - return status; -} -*/ diff --git a/src/shell-process.h b/src/shell-process.h deleted file mode 100644 index ef6b2a878..000000000 --- a/src/shell-process.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ -#ifndef __SHELL_PROCESS_H__ -#define __SHELL_PROCESS_H__ - -#include - -#define SHELL_TYPE_PROCESS (shell_process_get_type ()) -#define SHELL_PROCESS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SHELL_TYPE_PROCESS, ShellProcess)) -#define SHELL_PROCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_PROCESS, ShellProcessClass)) -#define SHELL_IS_PROCESS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SHELL_TYPE_PROCESS)) -#define SHELL_IS_PROCESS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_PROCESS)) -#define SHELL_PROCESS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_PROCESS, ShellProcessClass)) - -typedef struct _ShellProcess ShellProcess; -typedef struct _ShellProcessClass ShellProcessClass; - -typedef struct _ShellProcessPrivate ShellProcessPrivate; - -struct _ShellProcess -{ - GObject parent; - - ShellProcessPrivate *priv; -}; - -struct _ShellProcessClass -{ - GObjectClass parent_class; - -}; - -GType shell_process_get_type (void) G_GNUC_CONST; -ShellProcess* shell_process_new(char **args); - -gboolean shell_process_run (ShellProcess *process, GError **error); - -#endif /* __SHELL_PROCESS_H__ */ From b919dd72718eb73a24f855402dbf07afafc6a28c Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 17 Dec 2010 08:11:11 -0500 Subject: [PATCH 084/132] shell-app-system.h: clean up (indentation, order, etc) https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- src/shell-app-system.h | 96 ++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 45 deletions(-) diff --git a/src/shell-app-system.h b/src/shell-app-system.h index 696972b11..07684b791 100644 --- a/src/shell-app-system.h +++ b/src/shell-app-system.h @@ -34,63 +34,69 @@ struct _ShellAppSystemClass void (*favorites_changed)(ShellAppSystem *appsys, gpointer user_data); }; -GType shell_app_system_get_type (void) G_GNUC_CONST; -ShellAppSystem* shell_app_system_get_default(void); +GType shell_app_system_get_type (void) G_GNUC_CONST; +ShellAppSystem *shell_app_system_get_default (void); typedef struct _ShellAppInfo ShellAppInfo; #define SHELL_TYPE_APP_INFO (shell_app_info_get_type ()) -GType shell_app_info_get_type (void); +GType shell_app_info_get_type (void); -ShellAppInfo* shell_app_info_ref (ShellAppInfo *info); -void shell_app_info_unref (ShellAppInfo *info); +ShellAppInfo *shell_app_info_ref (ShellAppInfo *info); +void shell_app_info_unref (ShellAppInfo *info); -const char *shell_app_info_get_id (ShellAppInfo *info); -char *shell_app_info_get_name (ShellAppInfo *info); -char *shell_app_info_get_description (ShellAppInfo *info); -char *shell_app_info_get_executable (ShellAppInfo *info); -char *shell_app_info_get_desktop_file_path (ShellAppInfo *info); -GIcon *shell_app_info_get_icon (ShellAppInfo *info); -ClutterActor *shell_app_info_create_icon_texture (ShellAppInfo *info, float size); -char *shell_app_info_get_section (ShellAppInfo *info); -gboolean shell_app_info_get_is_nodisplay (ShellAppInfo *info); -gboolean shell_app_info_is_transient (ShellAppInfo *info); +const char *shell_app_info_get_id (ShellAppInfo *info); +char *shell_app_info_get_name (ShellAppInfo *info); +char *shell_app_info_get_description (ShellAppInfo *info); +char *shell_app_info_get_executable (ShellAppInfo *info); +char *shell_app_info_get_desktop_file_path (ShellAppInfo *info); +GIcon *shell_app_info_get_icon (ShellAppInfo *info); +ClutterActor *shell_app_info_create_icon_texture (ShellAppInfo *info, + float size); +char *shell_app_info_get_section (ShellAppInfo *info); +gboolean shell_app_info_get_is_nodisplay (ShellAppInfo *info); +gboolean shell_app_info_is_transient (ShellAppInfo *info); +MetaWindow *shell_app_info_get_source_window (ShellAppInfo *info); -MetaWindow *shell_app_info_get_source_window (ShellAppInfo *info); +gboolean shell_app_info_launch (ShellAppInfo *info, + GError **error); +gboolean shell_app_info_launch_full (ShellAppInfo *info, + guint timestamp, + GList *uris, + int workspace, + char **startup_id, + GError **error); -gboolean shell_app_info_launch_full (ShellAppInfo *info, - guint timestamp, - GList *uris, - int workspace, - char **startup_id, - GError **error); -gboolean shell_app_info_launch (ShellAppInfo *info, - GError **error); -ShellAppInfo *shell_app_system_load_from_desktop_file (ShellAppSystem *system, const char *filename, GError **error); +GList *shell_app_system_get_sections (ShellAppSystem *system); +GSList *shell_app_system_get_flattened_apps (ShellAppSystem *system); +GSList *shell_app_system_get_all_settings (ShellAppSystem *system); -GList *shell_app_system_get_sections (ShellAppSystem *system); -ShellApp *shell_app_system_get_app (ShellAppSystem *system, const char *id); -ShellApp *shell_app_system_get_app_for_path (ShellAppSystem *system, const char *desktop_path); -ShellApp *shell_app_system_get_app_for_window (ShellAppSystem *self, MetaWindow *window); +ShellApp *shell_app_system_get_app (ShellAppSystem *system, + const char *id); +ShellApp *shell_app_system_get_app_for_path (ShellAppSystem *system, + const char *desktop_path); +ShellApp *shell_app_system_get_app_for_window (ShellAppSystem *self, + MetaWindow *window); +ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, + const char *id); -void _shell_app_system_register_app (ShellAppSystem *self, ShellApp *app); +ShellAppInfo *shell_app_system_load_from_desktop_file (ShellAppSystem *system, + const char *filename, + GError **error); +ShellAppInfo *shell_app_system_create_from_window (ShellAppSystem *system, + MetaWindow *window); -ShellApp *shell_app_system_lookup_heuristic_basename (ShellAppSystem *system, const char *id); +GSList *shell_app_system_initial_search (ShellAppSystem *system, + gboolean prefs, + GSList *terms); +GSList *shell_app_system_subsearch (ShellAppSystem *system, + gboolean prefs, + GSList *previous_results, + GSList *terms); -ShellAppInfo *shell_app_system_create_from_window (ShellAppSystem *system, MetaWindow *window); - -GSList *shell_app_system_get_flattened_apps (ShellAppSystem *system); - -GSList *shell_app_system_get_all_settings (ShellAppSystem *system); - -GSList *shell_app_system_initial_search (ShellAppSystem *system, - gboolean prefs, - GSList *terms); - -GSList *shell_app_system_subsearch (ShellAppSystem *system, - gboolean prefs, - GSList *previous_results, - GSList *terms); +/* internal API */ +void _shell_app_system_register_app (ShellAppSystem *self, + ShellApp *app); #endif /* __SHELL_APP_SYSTEM_H__ */ From 99a865fb0fe76822157d2612e31a89650ead01b0 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 17 Dec 2010 15:01:19 -0500 Subject: [PATCH 085/132] ShellApp: is_on_workspace() should be TRUE for workspaceless apps If a starting-up app has not requested a particular workspace, then shell_app_is_on_workspace() should return TRUE for any workspace. Otherwise we will never get startup notification for them, since the app menu only shows apps that are starting on the current workspace. https://bugzilla.gnome.org/show_bug.cgi?id=635089 --- src/shell-app.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/shell-app.c b/src/shell-app.c index fae61c4d4..0f733a429 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -577,7 +577,8 @@ shell_app_is_on_workspace (ShellApp *app, if (shell_app_get_state (app) == SHELL_APP_STATE_STARTING) { - if (meta_workspace_index (workspace) == app->started_on_workspace) + if (app->started_on_workspace == -1 || + meta_workspace_index (workspace) == app->started_on_workspace) return TRUE; else return FALSE; From 38fb51a99ef62a8893a15189fd69a4c3ee6d9be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 13 Jan 2011 16:02:55 +0100 Subject: [PATCH 086/132] app-display: Expose BaseIcon params in AppWellIcon AppWellIcon is used both in the dash and view selector. As the dash requires manual sizing, it is not possible to set the icon size used in the view selector in the CSS, but icons will use the default size (unless set manually as in the dash). Expose the params parameter of BaseIcon and enable manual resizing only for AppWellIcons in the dash. https://bugzilla.gnome.org/show_bug.cgi?id=639428 --- js/ui/appDisplay.js | 16 ++++++++-------- js/ui/dash.js | 3 ++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 95530d9ca..4b460fcc0 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -281,21 +281,21 @@ PrefsSearchProvider.prototype = { } }; -function AppIcon(app) { - this._init(app); +function AppIcon(app, params) { + this._init(app, params); } AppIcon.prototype = { __proto__: IconGrid.BaseIcon.prototype, - _init : function(app) { + _init : function(app, params) { this.app = app; let label = this.app.get_name(); IconGrid.BaseIcon.prototype._init.call(this, label, - { setSizeManually: true }); + params); }, createIcon: function(iconSize) { @@ -303,12 +303,12 @@ AppIcon.prototype = { } }; -function AppWellIcon(app) { - this._init(app); +function AppWellIcon(app, iconParams) { + this._init(app, iconParams); } AppWellIcon.prototype = { - _init : function(app) { + _init : function(app, iconParams) { this.app = app; this.actor = new St.Clickable({ style_class: 'app-well-app', reactive: true, @@ -316,7 +316,7 @@ AppWellIcon.prototype = { y_fill: true }); this.actor._delegate = this; - this.icon = new AppIcon(app); + this.icon = new AppIcon(app, iconParams); this.actor.set_child(this.icon.actor); this.actor.connect('clicked', Lang.bind(this, this._onClicked)); diff --git a/js/ui/dash.js b/js/ui/dash.js index e3f3063be..99f91613c 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -193,7 +193,8 @@ Dash.prototype = { }, _addApp: function(app) { - let display = new AppDisplay.AppWellIcon(app); + let display = new AppDisplay.AppWellIcon(app, + { setSizeManually: true }); display._draggable.connect('drag-begin', Lang.bind(this, function() { display.actor.opacity = 50; From 49a09657c5a96cf581fa286b6b4c4e9d24d70fd1 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Thu, 13 Jan 2011 23:23:16 +0200 Subject: [PATCH 087/132] Updated Hebrew translation. --- po/he.po | 133 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 61 deletions(-) diff --git a/po/he.po b/po/he.po index 4abe2da32..25dea597d 100644 --- a/po/he.po +++ b/po/he.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-09 18:50+0200\n" -"PO-Revision-Date: 2011-01-09 18:51+0200\n" +"POT-Creation-Date: 2011-01-13 23:22+0200\n" +"PO-Revision-Date: 2011-01-13 23:23+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" @@ -310,6 +310,21 @@ msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" "Width of the vertical and horizontal lines that make up the crosshairs." +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:108 +msgid "Could not parse command:" +msgstr "לא ניתן לפענח את הפקודה:" + +#: ../js/misc/util.js:130 +msgid "No such application" +msgstr "אין כזה יישום" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:377 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "ההרצה של '%s' נכשלה:" + #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:155 msgid "All" @@ -383,84 +398,88 @@ msgstr "צפייה במקור" msgid "Web Page" msgstr "דף אינטרנט" -#: ../js/ui/overview.js:101 +#: ../js/ui/messageTray.js:1757 +msgid "System Information" +msgstr "פרטי המערכת" + +#: ../js/ui/overview.js:76 msgid "Undo" msgstr "ביטול" -#: ../js/ui/overview.js:166 +#: ../js/ui/overview.js:141 msgid "Windows" msgstr "חלונות" -#: ../js/ui/overview.js:169 +#: ../js/ui/overview.js:144 msgid "Applications" msgstr "יישומים" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:478 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "יציאה מ־%s" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:563 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %b %e, %R:%S" -#: ../js/ui/panel.js:564 +#: ../js/ui/panel.js:565 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:568 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:569 +#: ../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:576 +#: ../js/ui/panel.js:577 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %b %e, %l:%M:%S %p" -#: ../js/ui/panel.js:577 +#: ../js/ui/panel.js:578 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:581 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:582 +#: ../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:727 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "פעילויות" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "אירע כשל בניתוק '%s'" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "ניסיון חוזר" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "התחברות אל..." -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "מקומות והתקנים" @@ -473,84 +492,79 @@ msgstr "מקומות והתקנים" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:238 +#: ../js/ui/runDialog.js:239 msgid "Please enter a command:" msgstr "נא להזין פקודה:" -#: ../js/ui/runDialog.js:383 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "ההרצה של '%s' נכשלה:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "זמין" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "עסוק" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "החשבון שלי" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "הגדרות המערכת" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "נעילת המסך" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "החלפת משתמש" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "ניתוק..." -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "השהיה..." -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "כיבוי..." -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "תקריב" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "מקריא מסך" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "מקלדת מסך" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "התראות חזותיות" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "מקשים דביקים" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "מקשים אטיים" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "מקשים קופצים" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "מקשי עכבר" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "הגדרות גישה אוניברסלית" @@ -611,7 +625,7 @@ msgstr "הגדרות מקלדת" msgid "Mouse Settings" msgstr "הגדרות עכבר" -#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "הגדרות שמע" @@ -722,59 +736,59 @@ msgstr[0] "דקה אחת נותרה" msgstr[1] "%d דקות נותרו" msgstr[2] "שתי דקות נותרו" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "מתאם חשמל" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "סוללת נייד" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:239 msgid "UPS" msgstr "אל־פסק" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:241 msgid "Monitor" msgstr "צג" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "עכבר" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "מקלדת" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:247 msgid "PDA" msgstr "מחשב כף יד" -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:249 msgid "Cell phone" msgstr "טלפון סלולרי" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "נגן מדיה" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "טבלת שליטה" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "מחשב" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "לא ידוע" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "עצמה" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "מיקרופון" @@ -1013,9 +1027,6 @@ msgstr "%1$s: %2$s" #~ msgid "Restart..." #~ msgstr "הפעלה מחדש..." -#~ msgid "Account Information..." -#~ msgstr "פרטי המשתמש..." - #~ msgid "ON" #~ msgstr "1" From 00d897f282c1ee527642413be95994ea1efe961d Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 13 Jan 2011 16:37:50 -0500 Subject: [PATCH 088/132] Require gjs 0.7.8 We use the js-version property, among other things. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 59ebb464f..3248f2d93 100644 --- a/configure.ac +++ b/configure.ac @@ -62,7 +62,7 @@ AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) CLUTTER_MIN_VERSION=1.5.8 GOBJECT_INTROSPECTION_MIN_VERSION=0.10.1 -GJS_MIN_VERSION=0.7 +GJS_MIN_VERSION=0.7.8 MUTTER_MIN_VERSION=2.91.4 GTK_MIN_VERSION=2.91.7 GIO_MIN_VERSION=2.25.9 From 856207c15459a2d86b2790e59eb2619cd1d77a21 Mon Sep 17 00:00:00 2001 From: Giovanni Campagna Date: Tue, 11 Jan 2011 21:14:16 +0100 Subject: [PATCH 089/132] LookingGlass: fix a Clutter warning After destroying an actor, it is no more parented anywhere, so we cannot allocate it. https://bugzilla.gnome.org/show_bug.cgi?id=633028 --- js/ui/lookingGlass.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js index 60bab9b0f..2f894366e 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -398,6 +398,9 @@ Inspector.prototype = { }, _allocate: function(actor, box, flags) { + if (!this._eventHandler) + return; + let primary = global.get_primary_monitor(); let [minWidth, minHeight, natWidth, natHeight] = @@ -415,6 +418,7 @@ Inspector.prototype = { Clutter.ungrab_pointer(this._eventHandler); Clutter.ungrab_keyboard(this._eventHandler); this._eventHandler.destroy(); + this._eventHandler = null; this.emit('closed'); }, From a681a2ba02e18d5a06349ca3c564432ca5601ddd Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Thu, 13 Jan 2011 18:33:01 -0500 Subject: [PATCH 090/132] Remove _onKeyPress() function in Notification Its usage was removed in commit 4dd4c9f99f528667eb0b571a71ed23f61919f44b - "Use more actor.grab_key_focus() and less stage.connect('key-press-event')". --- js/ui/messageTray.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 57f5acf02..1e896a9c5 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -706,15 +706,6 @@ Notification.prototype = { this.destroy(); }, - _onKeyPress: function(actor, event) { - let symbol = event.get_key_symbol(); - if (symbol == Clutter.Escape) { - Main.messageTray.escapeTray(); - return true; - } - return false; - }, - ungrabFocus: function() { if (!this._hasFocus) return; From e0f58c615b40bb4f2befa7a1f8278ede947cfb98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 13 Jan 2011 23:32:20 +0100 Subject: [PATCH 091/132] kbd-status: Close the menu when switching layouts Layout items in the menu overwrite PopupBaseMenuItem.activate(), so the menu stays open when selecting a layout from the menu. Chain up to the parent class' method to make the items behave properly. https://bugzilla.gnome.org/show_bug.cgi?id=639474 --- js/ui/status/keyboard.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index b01e28b69..df3d1ab58 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -36,6 +36,7 @@ LayoutMenuItem.prototype = { }, activate: function(event) { + PopupMenu.PopupBaseMenuItem.prototype.activate.call(this); this._config.lock_group(this._id); } }; From ed76e52918b4752fd49d656b3ccc7b5db79199f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 14 Jan 2011 01:05:23 +0100 Subject: [PATCH 092/132] Revert "kbd-status: Close the menu when switching layouts" This reverts commit e0f58c615b40bb4f2befa7a1f8278ede947cfb98. Pushed accidentally. --- js/ui/status/keyboard.js | 1 - 1 file changed, 1 deletion(-) diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index df3d1ab58..b01e28b69 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -36,7 +36,6 @@ LayoutMenuItem.prototype = { }, activate: function(event) { - PopupMenu.PopupBaseMenuItem.prototype.activate.call(this); this._config.lock_group(this._id); } }; From bed063eea16b0e43ae7e6166e6786769f4f06c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 13 Jan 2011 23:48:51 +0100 Subject: [PATCH 093/132] generic-container: Queue a redraw in skip_paint() When changing a child's visibility with skip_paint(), the change will not be visible until a redraw is triggered. Queue a redraw, so that the function has an immediate effect. https://bugzilla.gnome.org/show_bug.cgi?id=639461 --- src/shell-generic-container.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shell-generic-container.c b/src/shell-generic-container.c index 8be3a96c5..c54ebf278 100644 --- a/src/shell-generic-container.c +++ b/src/shell-generic-container.c @@ -233,6 +233,8 @@ shell_generic_container_set_skip_paint (ShellGenericContainer *self, g_hash_table_remove (self->priv->skip_paint, child); else g_hash_table_insert (self->priv->skip_paint, child, child); + + clutter_actor_queue_redraw (CLUTTER_ACTOR (self)); } static void From dc020628b5f869922fb0df0d49cd61ca280399e8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 20 Oct 2010 15:08:14 -0400 Subject: [PATCH 094/132] main: add timestamp parameter to push/popModal Right now popModal() passes global.get_current_time() for its begin_modal() call. global.get_current_time() is the timestamp of the last gdk or clutter event processed by the shell's mutter process. These values could potentially be be too stale to use if pushModal() were to get called in response to an event by another process. This commit changes pushModal() to have an optional timestamp argument, which can be used to associate the call with the event that initiated it. https://bugzilla.gnome.org/show_bug.cgi?id=637187 --- js/ui/main.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/js/ui/main.js b/js/ui/main.js index 1ee806516..1d068ebe5 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -369,6 +369,7 @@ function _findModal(actor) { /** * pushModal: * @actor: #ClutterActor which will be given keyboard focus + * @timestamp: optional timestamp * * Ensure we are in a mode where all keyboard and mouse input goes to * the stage, and focus @actor. Multiple calls to this function act in @@ -379,11 +380,19 @@ function _findModal(actor) { * modal stack returns to this actor, reset the focus to the actor * which was focused at the time pushModal() was invoked. * + * @timestamp is optionally used to associate the call with a specific user + * initiated event. If not provided then the value of + * global.get_current_time() is assumed. + * * Returns: true iff we successfully acquired a grab or already had one */ -function pushModal(actor) { +function pushModal(actor, timestamp) { + + if (timestamp == undefined) + timestamp = global.get_current_time(); + if (modalCount == 0) { - if (!global.begin_modal(global.get_current_time())) { + if (!global.begin_modal(timestamp)) { log('pushModal: invocation of begin_modal failed'); return false; } @@ -414,12 +423,21 @@ function pushModal(actor) { /** * popModal: * @actor: #ClutterActor passed to original invocation of pushModal(). + * @timestamp: optional timestamp * * Reverse the effect of pushModal(). If this invocation is undoing * the topmost invocation, then the focus will be restored to the * previous focus at the time when pushModal() was invoked. + * + * @timestamp is optionally used to associate the call with a specific user + * initiated event. If not provided then the value of + * global.get_current_time() is assumed. */ -function popModal(actor) { +function popModal(actor, timestamp) { + + if (timestamp == undefined) + timestamp = global.get_current_time(); + modalCount -= 1; let focusIndex = _findModal(actor); if (focusIndex >= 0) { @@ -438,7 +456,7 @@ function popModal(actor) { return; global.stage.set_key_focus(null); - global.end_modal(global.get_current_time()); + global.end_modal(timestamp); global.set_stage_input_mode(Shell.StageInputMode.NORMAL); } From 47b8d16067180cb5c7ad86efb99819ad466312a4 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 20 Oct 2010 20:46:38 -0400 Subject: [PATCH 095/132] modalDialog: Add modal dialog base class This is a base class to make it easier to gain a consistent look for system modal dialogs. It handles creating a darkened backdrop behind the dialog, setting up buttons in the dialog, keynav, etc. https://bugzilla.gnome.org/show_bug.cgi?id=637187 --- data/theme/gnome-shell.css | 48 ++++++++ js/Makefile.am | 1 + js/ui/modalDialog.js | 233 +++++++++++++++++++++++++++++++++++++ 3 files changed, 282 insertions(+) create mode 100644 js/ui/modalDialog.js diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 344692af7..1240c12cb 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -1080,6 +1080,54 @@ StTooltip StLabel { border-radius: 8px; } +/* Modal Dialogs */ +.modal-dialog { + font: 12pt sans-serif; + border-radius: 24px; + background-color: rgba(0.0, 0.0, 0.0, 0.9); + border: 2px solid #868686; + color: #ffffff; + + padding-right: 42px; + padding-left: 42px; + padding-bottom: 30px; + padding-top: 30px; +} + +.modal-dialog-button { + border: 1px solid #8b8b8b; + border-radius: 18px; + font: 14px sans-serif; + + margin-left: 10px; + margin-right: 10px; + + padding-left: 32px; + padding-right: 32px; + padding-top: 8px; + padding-bottom: 8px; + + background-gradient-direction: vertical; + background-gradient-start: #29323b; + background-gradient-end: #121a24; +} + +.modal-dialog-button:active, +.modal-dialog-button:pressed { + border-color: #a5a5a5; + background-gradient-start: #121a24; + background-gradient-end: #29323b; +} + +.modal-dialog-button:focus { + border: 2px solid #a5a5a5; + + padding-left: 31px; + padding-right: 31px; + padding-top: 7px; + padding-bottom: 7px; +} + /* Run Dialog */ .run-dialog-label { font: 12px sans-serif; diff --git a/js/Makefile.am b/js/Makefile.am index 3d87decc9..3dce4f292 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -32,6 +32,7 @@ nobase_dist_js_DATA = \ ui/magnifierDBus.js \ ui/main.js \ ui/messageTray.js \ + ui/modalDialog.js \ ui/notificationDaemon.js \ ui/overview.js \ ui/panel.js \ diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js new file mode 100644 index 000000000..7b3f0d36f --- /dev/null +++ b/js/ui/modalDialog.js @@ -0,0 +1,233 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ + +const Clutter = imports.gi.Clutter; +const Gdk = imports.gi.Gdk; +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Lang = imports.lang; +const Meta = imports.gi.Meta; +const Pango = imports.gi.Pango; +const St = imports.gi.St; +const Shell = imports.gi.Shell; +const Signals = imports.signals; +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + +const Params = imports.misc.params; + +const Lightbox = imports.ui.lightbox; +const Main = imports.ui.main; +const Tweener = imports.ui.tweener; + +const OPEN_AND_CLOSE_TIME = 0.1; +const FADE_OUT_DIALOG_TIME = 1.0; + +const State = { + OPENED: 0, + CLOSED: 1, + OPENING: 2, + CLOSING: 3, + FADED_OUT: 4 +}; + +function ModalDialog() { + this._init(); +} + +ModalDialog.prototype = { + _init: function(params) { + params = Params.parse(params, { styleClass: null }); + + this.state = State.CLOSED; + + this._group = new St.Group({ visible: false, + x: 0, + y: 0 }); + Main.uiGroup.add_actor(this._group); + global.focus_manager.add_group(this._group); + this._initialKeyFocus = this._group; + + this._group.connect('destroy', Lang.bind(this, this._onGroupDestroy)); + + this._actionKeys = {}; + this._group.connect('key-press-event', Lang.bind(this, this._onKeyPressEvent)); + + this._lightbox = new Lightbox.Lightbox(this._group, + { inhibitEvents: true }); + + this._backgroundBin = new St.Bin(); + + this._group.add_actor(this._backgroundBin); + this._lightbox.highlight(this._backgroundBin); + + this._dialogLayout = new St.BoxLayout({ style_class: 'modal-dialog', + vertical: true }); + if (params.styleClass != null) { + this._dialogLayout.add_style_class_name(params.styleClass); + } + this._backgroundBin.child = this._dialogLayout; + + this.contentLayout = new St.BoxLayout({ vertical: true }); + this._dialogLayout.add(this.contentLayout, + { x_fill: true, + y_fill: true, + x_align: St.Align.MIDDLE, + y_align: St.Align.START }); + + this._buttonLayout = new St.BoxLayout({ opacity: 220, + vertical: false }); + this._dialogLayout.add(this._buttonLayout, + { expand: true, + x_align: St.Align.MIDDLE, + y_align: St.Align.END }); + }, + + setButtons: function(buttons) { + this._buttonLayout.remove_all(); + let i = 0; + for (let index in buttons) { + let buttonInfo = buttons[index]; + let label = buttonInfo['label']; + let action = buttonInfo['action']; + let key = buttonInfo['key']; + + let button = new St.Button({ style_class: 'modal-dialog-button', + reactive: true, + can_focus: true, + label: label }); + + let x_alignment; + if (buttons.length == 1) + x_alignment = St.Align.END; + else if (i == 0) + x_alignment = St.Align.START; + else if (i == buttons.length - 1) + x_alignment = St.Align.END; + else + x_alignment = St.Align.MIDDLE; + + this._initialKeyFocus = button; + this._buttonLayout.add(button, + { expand: true, + x_fill: false, + y_fill: false, + x_align: x_alignment, + y_align: St.Align.MIDDLE }); + + button.connect('clicked', action); + + if (key) + this._actionKeys[key] = action; + i++; + } + }, + + _onKeyPressEvent: function(object, keyPressEvent) { + let symbol = keyPressEvent.get_key_symbol(); + let action = this._actionKeys[symbol]; + + if (action) + action(); + }, + + _onGroupDestroy: function() { + this.emit('destroy'); + }, + + _fadeOpen: function() { + let monitor = global.get_focus_monitor(); + + this._backgroundBin.set_position(monitor.x, monitor.y); + this._backgroundBin.set_size(monitor.width, monitor.height); + + this.state = State.OPENING; + + this._dialogLayout.opacity = 255; + this._lightbox.show(); + this._group.opacity = 0; + this._group.show(); + Tweener.addTween(this._group, + { opacity: 255, + time: OPEN_AND_CLOSE_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + this._initialKeyFocus.grab_key_focus(); + this.state = State.OPENED; + this.emit('opened'); + }), + }); + }, + + open: function(timestamp) { + if (this.state == State.OPENED || this.state == State.OPENING) + return true; + + if (!Main.pushModal(this._group, timestamp)) + return false; + + global.stage.set_key_focus(this._group); + + this._fadeOpen(); + return true; + }, + + close: function(timestamp) { + if (this.state == State.CLOSED || this.state == State.CLOSING) + return; + + let needsPopModal; + + if (this.state == State.OPENED || this.state == State.OPENING) + needsPopModal = true; + else + needsPopModal = false; + + this.state = State.CLOSING; + + Tweener.addTween(this._group, + { opacity: 0, + time: OPEN_AND_CLOSE_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + this.state = State.CLOSED; + this._group.hide(); + + if (needsPopModal) + Main.popModal(this._group, timestamp); + }) + }); + }, + + // This method is like close, but fades the dialog out much slower, + // and leaves the lightbox in place. Once in the faded out state, + // the dialog can be brought back by an open call, or the lightbox + // can be dismissed by a close call. + // + // The main point of this method is to give some indication to the user + // that the dialog reponse has been acknowledged but will take a few + // moments before being processed. + // e.g., if a user clicked "Log Out" then the dialog should go away + // imediately, but the lightbox should remain until the logout is + // complete. + _fadeOutDialog: function(timestamp) { + if (this.state == State.CLOSED || this.state == State.CLOSING) + return; + + if (this.state == State.FADED_OUT) + return; + + Tweener.addTween(this._dialogLayout, + { opacity: 0, + time: FADE_OUT_DIALOG_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + this.state = State.FADED_OUT; + Main.popModal(this._group, timestamp); + }) + }); + } +}; +Signals.addSignalMethods(ModalDialog.prototype); From ab1ecb5ba2c9715049ab7117f95b8dc44130b132 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 6 Dec 2010 14:41:06 -0500 Subject: [PATCH 096/132] runDialog: subclass from modalDialog Now that we have a modalDialog base class in gnome-shell, it makes sense to use it for the run dialog. Note, the run dialog doesn't currently have buttons, so it isn't exercising all the API of the base class. https://bugzilla.gnome.org/show_bug.cgi?id=637187 --- data/theme/gnome-shell.css | 10 +++-- js/ui/runDialog.js | 88 ++++++++------------------------------ 2 files changed, 23 insertions(+), 75 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 1240c12cb..2d83bc069 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -1153,10 +1153,12 @@ StTooltip StLabel { } .run-dialog { - padding: 8px; - border: 1px solid rgba(128,128,128,0.40); - border-radius: 4px; - background: rgba(0,0,0,0.8); + border-radius: 16px; + + padding-right: 21px; + padding-left: 21px; + padding-bottom: 15px; + padding-top: 15px; } .lightbox { diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index 955f1e777..f29866d4d 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -11,8 +11,8 @@ const Signals = imports.signals; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; -const Lightbox = imports.ui.lightbox; const Main = imports.ui.main; +const ModalDialog = imports.ui.modalDialog; const Tweener = imports.ui.tweener; const Util = imports.misc.util; @@ -21,8 +21,6 @@ const MAX_FILE_DELETED_BEFORE_INVALID = 10; const HISTORY_KEY = 'command-history'; const HISTORY_LIMIT = 512; -const DIALOG_FADE_TIME = 0.1; - function CommandCompleter() { this._init(); } @@ -176,8 +174,9 @@ function RunDialog() { } RunDialog.prototype = { +__proto__: ModalDialog.ModalDialog.prototype, _init : function() { - this._isOpen = false; + ModalDialog.ModalDialog.prototype._init.call(this, { styleClass: 'run-dialog' }); global.settings.connect('changed::development-tools', Lang.bind(this, function () { this._enableInternalCommands = global.settings.get_boolean('development-tools'); @@ -216,38 +215,24 @@ RunDialog.prototype = { }) }; - // All actors are inside _group. We create it initially - // hidden then show it in show() - this._group = new Clutter.Group({ visible: false, - x: 0, y: 0 }); - Main.uiGroup.add_actor(this._group); - - this._lightbox = new Lightbox.Lightbox(this._group, - { inhibitEvents: true }); - - this._box = new St.Bin({ x_align: St.Align.MIDDLE, - y_align: St.Align.MIDDLE }); - - this._group.add_actor(this._box); - this._lightbox.highlight(this._box); - - let dialogBox = new St.BoxLayout({ style_class: 'run-dialog', vertical: true }); - - this._box.set_child(dialogBox); let label = new St.Label({ style_class: 'run-dialog-label', text: _("Please enter a command:") }); - dialogBox.add(label, { expand: true, y_fill: false }); + this.contentLayout.add(label, { y_align: St.Align.START }); let entry = new St.Entry({ style_class: 'run-dialog-entry' }); this._entryText = entry.clutter_text; - dialogBox.add(entry, { expand: true }); + this.contentLayout.add(entry, { y_align: St.Align.START }); + this.connect('opened', + Lang.bind(this, function() { + this._entryText.grab_key_focus(); + })); this._errorBox = new St.BoxLayout(); - dialogBox.add(this._errorBox, { expand: true }); + this.contentLayout.add(this._errorBox, { expand: true }); let errorIcon = new St.Button({ style_class: 'run-dialog-error-icon' }); @@ -281,10 +266,10 @@ RunDialog.prototype = { else this._run(o.get_text(), false); if (!this._commandError) - this.close(); + this.close(global.get_current_time()); } if (symbol == Clutter.Escape) { - this.close(); + this.close(global.get_current_time()); return true; } if (symbol == Clutter.slash) { @@ -399,53 +384,14 @@ RunDialog.prototype = { this._entryText.set_text(''); }, - open : function() { - if (this._isOpen) // Already shown - return; - - if (!Main.pushModal(this._group)) - return; - - // Position the dialog on the current monitor - let monitor = global.get_focus_monitor(); - + open: function() { this._historyIndex = this._history.length; - - this._box.set_position(monitor.x, monitor.y); - this._box.set_size(monitor.width, monitor.height); - - this._isOpen = true; - this._lightbox.show(); - this._group.opacity = 0; - this._group.show(); - Tweener.addTween(this._group, - { opacity: 255, - time: DIALOG_FADE_TIME, - transition: 'easeOutQuad' - }); - - global.stage.set_key_focus(this._entryText); - }, - - close : function() { - if (!this._isOpen) - return; - - this._isOpen = false; + this._errorBox.hide(); + this._entryText.set_text(''); this._commandError = false; - Main.popModal(this._group); + ModalDialog.ModalDialog.prototype.open.call(this); + }, - Tweener.addTween(this._group, - { opacity: 0, - time: DIALOG_FADE_TIME, - transition: 'easeOutQuad', - onComplete: Lang.bind(this, function() { - this._errorBox.hide(); - this._group.hide(); - this._entryText.set_text(''); - }) - }); - } }; Signals.addSignalMethods(RunDialog.prototype); From 2905b0318d267b14e5eb251ccfcd8d4ec8c971e8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 6 Dec 2010 14:41:45 -0500 Subject: [PATCH 097/132] runDialog: animate to new height on error When an error message is displayed the run dialog pops to the new height instantly. It needs a a transition. This commit makes the dialog quickly grow to its ultimate height, making room for the error message, before showing it. https://bugzilla.gnome.org/show_bug.cgi?id=637187 --- js/ui/runDialog.js | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index f29866d4d..88c057961 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -21,6 +21,8 @@ const MAX_FILE_DELETED_BEFORE_INVALID = 10; const HISTORY_KEY = 'command-history'; const HISTORY_LIMIT = 512; +const DIALOG_GROW_TIME = 0.1; + function CommandCompleter() { this._init(); } @@ -362,7 +364,21 @@ __proto__: ModalDialog.ModalDialog.prototype, let errorStr = _("Execution of '%s' failed:").format(command) + '\n' + e.message; this._errorMessage.set_text(errorStr); - this._errorBox.show(); + if (!this._errorBox.visible) { + let [errorBoxMinHeight, errorBoxNaturalHeight] = this._errorBox.get_preferred_height(-1); + + let parentActor = this._errorBox.get_parent(); + Tweener.addTween(parentActor, + { height: parentActor.height + errorBoxNaturalHeight, + time: DIALOG_GROW_TIME, + transition: 'easeOutQuad', + onComplete: Lang.bind(this, + function() { + parentActor.set_height(-1); + this._errorBox.show(); + }) + }); + } } } } From e73e4375b8c4f1f0982ca0b23c24706e81c25bad Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 6 Jan 2011 10:30:15 -0500 Subject: [PATCH 098/132] endSessionDialog: Add logout/shutdown dialog This commit adds a dialog for gnome-session to privately use when initiating log outs and shut downs. Coordination is done over the bus. https://bugzilla.gnome.org/show_bug.cgi?id=637187 --- data/theme/gnome-shell.css | 56 +++++ js/Makefile.am | 1 + js/misc/gnomeSession.js | 58 +++++ js/ui/endSessionDialog.js | 504 +++++++++++++++++++++++++++++++++++++ js/ui/main.js | 5 + 5 files changed, 624 insertions(+) create mode 100644 js/ui/endSessionDialog.js diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 2d83bc069..393cce95f 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -1165,6 +1165,62 @@ StTooltip StLabel { background-color: rgba(0, 0, 0, 0.4); } +/* End Session Dialog */ +.end-session-dialog-subject { + font: 12pt sans-serif; + font-weight: bold; + color: #666666; + padding-top: 10px; + padding-left: 17px; + padding-bottom: 30px; +} + +.end-session-dialog-description { + font: 10pt sans-serif; + color: white; + padding-left: 17px; + padding-right: 40px; + width: 16em; +} + +.end-session-dialog-logout-icon { + border: 2px solid #8b8b8b; + border-radius: 5px; + width: 32px; + height: 32px; +} + +.end-session-dialog-shutdown-icon { + width: 32px; + height: 32px; +} + +.end-session-dialog-app-list { + font: 10pt sans-serif; + max-height: 200px; + padding-top: 42px; + padding-bottom: 42px; + padding-left: 17px; + padding-right: 32px; +} + +.end-session-dialog-app-list-item { + padding-right: 1em; +} + +.end-session-dialog-app-list-item-icon { + padding-right: 17px; +} + +.end-session-dialog-app-list-item-name { + font: 10pt sans-serif; +} + +.end-session-dialog-app-list-item-description { + font: 8pt sans-serif; + color: #444444; +} + /* Magnifier */ .magnifier-zoom-region { diff --git a/js/Makefile.am b/js/Makefile.am index 3dce4f292..1b02f4968 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -21,6 +21,7 @@ nobase_dist_js_DATA = \ ui/dash.js \ ui/dnd.js \ ui/docDisplay.js \ + ui/endSessionDialog.js \ ui/environment.js \ ui/extensionSystem.js \ ui/genericDisplay.js \ diff --git a/js/misc/gnomeSession.js b/js/misc/gnomeSession.js index 06f52a36b..ef4ef848d 100644 --- a/js/misc/gnomeSession.js +++ b/js/misc/gnomeSession.js @@ -2,6 +2,7 @@ const DBus = imports.dbus; const Lang = imports.lang; +const Signals = imports.signals; const PresenceIface = { name: 'org.gnome.SessionManager.Presence', @@ -43,3 +44,60 @@ Presence.prototype = { } }; DBus.proxifyPrototype(Presence.prototype, PresenceIface); + +// Note inhibitors are immutable objects, so they don't +// change at runtime (changes always come in the form +// of new inhibitors) +const InhibitorIface = { + name: 'org.gnome.SessionManager.Inhibitor', + properties: [{ name: 'app_id', + signature: 's', + access: 'readonly' }, + { name: 'client_id', + signature: 's', + access: 'readonly' }, + { name: 'reason', + signature: 's', + access: 'readonly' }, + { name: 'flags', + signature: 'u', + access: 'readonly' }, + { name: 'toplevel_xid', + signature: 'u', + access: 'readonly' }, + { name: 'cookie', + signature: 'u', + access: 'readonly' }], +}; + +function Inhibitor(objectPath) { + this._init(objectPath); +} + +Inhibitor.prototype = { + _init: function(objectPath) { + DBus.session.proxifyObject(this, + "org.gnome.SessionManager", + objectPath); + this.isLoaded = false; + this._loadingPropertiesCount = InhibitorIface.properties.length; + for (let i = 0; i < InhibitorIface.properties.length; i++) { + let propertyName = InhibitorIface.properties[i].name; + this.GetRemote(propertyName, Lang.bind(this, + function(value, exception) { + if (exception) + return; + + this[propertyName] = value; + this._loadingPropertiesCount--; + + if (this._loadingPropertiesCount == 0) { + this.isLoaded = true; + this.emit("is-loaded"); + } + })); + } + }, +}; +DBus.proxifyPrototype(Inhibitor.prototype, InhibitorIface); +Signals.addSignalMethods(Inhibitor.prototype); diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js new file mode 100644 index 000000000..62b69b12b --- /dev/null +++ b/js/ui/endSessionDialog.js @@ -0,0 +1,504 @@ +/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- + * + * Copyright 2010 Red Hat, Inc + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +const DBus = imports.dbus; +const Lang = imports.lang; +const Signals = imports.signals; + +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + +const Clutter = imports.gi.Clutter; +const Gdm = imports.gi.Gdm; +const GLib = imports.gi.GLib; +const Gtk = imports.gi.Gtk; +const Pango = imports.gi.Pango; +const St = imports.gi.St; +const Shell = imports.gi.Shell; + +const GnomeSession = imports.misc.gnomeSession +const Lightbox = imports.ui.lightbox; +const Main = imports.ui.main; +const ModalDialog = imports.ui.modalDialog; +const Tweener = imports.ui.tweener; + +let _endSessionDialog = null; + +const _ITEM_ICON_SIZE = 48; +const _DIALOG_ICON_SIZE = 32; + +const GSM_SESSION_MANAGER_LOGOUT_FORCE = 2; + +const EndSessionDialogIface = { + name: 'org.gnome.SessionManager.EndSessionDialog', + methods: [{ name: 'Open', + inSignature: 'uuuao', + outSignature: '' + } + ], + signals: [{ name: 'Canceled', + outSignature: '', + }], + properties: [] +}; + +const logoutDialogContent = { + subjectWithUser: _("Log Out %s"), + subject: _("Log Out"), + inhibitedDescription: _("Click Log Out to quit these applications and log out of the system."), + uninhibitedDescriptionWithUser: _("%s will be logged out automatically in %d seconds."), + uninhibitedDescription: _("You will be logged out automatically in %d seconds."), + endDescription: _("Logging out of the system."), + confirmButtonText: _("Log Out"), + iconStyleClass: 'end-session-dialog-logout-icon' +}; + +const shutdownDialogContent = { + subject: _("Shut Down"), + inhibitedDescription: _("Click Shut Down to quit these applications and shut down the system."), + uninhibitedDescription: _("The system will shut down automatically in %d seconds."), + endDescription: _("Shutting down the system."), + confirmButtonText: _("Shut Down"), + iconName: 'system-shutdown', + iconStyleClass: 'end-session-dialog-shutdown-icon' +}; + +const restartDialogContent = { + subject: _("Restart"), + inhibitedDescription: _("Click Restart to quit these applications and restart the system."), + uninhibitedDescription: _("The system will restart automatically in %d seconds."), + endDescription: _("Restarting the system."), + confirmButtonText: _("Restart"), + iconName: 'system-shutdown', + iconStyleClass: 'end-session-dialog-shutdown-icon' +}; + +const DialogContent = { + 0 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_LOGOUT */: logoutDialogContent, + 1 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_SHUTDOWN */: shutdownDialogContent, + 2 /* GSM_SHELL_END_SESSION_DIALOG_TYPE_RESTART */: restartDialogContent +}; + +function findAppFromInhibitor(inhibitor) { + let desktopFile = inhibitor.app_id; + + if (!GLib.str_has_suffix(desktopFile, '.desktop')) + desktopFile += '.desktop'; + + let candidateDesktopFiles = []; + + candidateDesktopFiles.push(desktopFile); + candidateDesktopFiles.push('gnome-' + desktopFile); + + let appSystem = Shell.AppSystem.get_default(); + let app = null; + for (let i = 0; i < candidateDesktopFiles.length; i++) { + try { + app = appSystem.get_app(candidateDesktopFiles[i]); + + if (app) + break; + } catch(e) { + // ignore errors + } + } + + return app; +} + +function ListItem(app, reason) { + this._init(app, reason); +} + +ListItem.prototype = { + _init: function(app, reason) { + this._app = app; + this._reason = reason; + + if (this._reason == null) + this._reason = ''; + + let layout = new St.BoxLayout({ vertical: false}); + + this.actor = new St.Clickable({ style_class: 'end-session-dialog-app-list-item', + can_focus: true, + child: layout, + reactive: true, + x_align: St.Align.START, + x_fill: true }); + + this._icon = this._app.create_icon_texture(_ITEM_ICON_SIZE); + + let iconBin = new St.Bin({ style_class: 'end-session-dialog-app-list-item-icon', + child: this._icon }); + layout.add(iconBin); + + let textLayout = new St.BoxLayout({ style_class: 'end-session-dialog-app-list-item-text-box', + vertical: true }); + layout.add(textLayout); + + this._nameLabel = new St.Label({ text: this._app.get_name(), + style_class: 'end-session-dialog-app-list-item-name' }); + textLayout.add(this._nameLabel, + { expand: false, + x_fill: true }); + + this._descriptionLabel = new St.Label({ text: this._reason, + style_class: 'end-session-dialog-app-list-item-description' }); + textLayout.add(this._descriptionLabel, + { expand: true, + x_fill: true }); + + this.actor.connect('clicked', Lang.bind(this, this._onClicked)); + }, + + _onClicked: function() { + this.emit('activate'); + this._app.activate(); + } +}; +Signals.addSignalMethods(ListItem.prototype); + +// The logout timer only shows updates every 10 seconds +// until the last 10 seconds, then it shows updates every +// second. This function takes a given time and returns +// what we should show to the user for that time. +function _roundSecondsToInterval(totalSeconds, secondsLeft, interval) { + let time; + + time = Math.ceil(secondsLeft); + + // Final count down is in decrements of 1 + if (time <= interval) + return time; + + // Round up higher than last displayable time interval + time += interval - 1; + + // Then round down to that time interval + if (time > totalSeconds) + time = Math.ceil(totalSeconds); + else + time -= time % interval; + + return time; +} + +function _setLabelText(label, text) { + if (text) { + label.set_text(text); + label.show(); + } else { + label.set_text(''); + label.hide(); + } +} + +function EndSessionDialog() { + if (_endSessionDialog == null) { + this._init(); + DBus.session.exportObject('/org/gnome/SessionManager/EndSessionDialog', + this); + _endSessionDialog = this; + } + + return _endSessionDialog; +} + +function init() { + // This always returns the same singleton object + // By instantiating it initially, we register the + // bus object, etc. + let dialog = new EndSessionDialog(); +} + +EndSessionDialog.prototype = { + __proto__: ModalDialog.ModalDialog.prototype, + + _init: function() { + ModalDialog.ModalDialog.prototype._init.call(this); + + this._user = Gdm.UserManager.ref_default().get_user(GLib.get_user_name()); + + this._secondsLeft = 0; + this._totalSecondsToStayOpen = 0; + this._inhibitors = []; + + this.connect('destroy', + Lang.bind(this, this._onDestroy)); + this.connect('opened', + Lang.bind(this, this._onOpened)); + + this._userLoadedId = this._user.connect('notify::is_loaded', + Lang.bind(this, this._updateContent)); + + this._userChangedId = this._user.connect('changed', + Lang.bind(this, this._updateContent)); + + let mainContentLayout = new St.BoxLayout({ vertical: false }); + this.contentLayout.add(mainContentLayout, + { x_fill: true, + y_fill: false }); + + this._iconBin = new St.Bin(); + mainContentLayout.add(this._iconBin, + { x_fill: true, + y_fill: false, + x_align: St.Align.END, + y_align: St.Align.START }); + + let messageLayout = new St.BoxLayout({ vertical: true }); + mainContentLayout.add(messageLayout, + { y_align: St.Align.START }); + + this._subjectLabel = new St.Label({ style_class: 'end-session-dialog-subject' }); + + messageLayout.add(this._subjectLabel, + { y_fill: false, + y_align: St.Align.START }); + + this._descriptionLabel = new St.Label({ style_class: 'end-session-dialog-description' }); + this._descriptionLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; + this._descriptionLabel.clutter_text.line_wrap = true; + + messageLayout.add(this._descriptionLabel, + { y_fill: true, + y_align: St.Align.START }); + + let scrollView = new St.ScrollView({ style_class: 'end-session-dialog-app-list'}); + scrollView.set_policy(Gtk.PolicyType.NEVER, + Gtk.PolicyType.AUTOMATIC); + this.contentLayout.add(scrollView, + { x_fill: true, + y_fill: true }); + this._applicationList = new St.BoxLayout({ vertical: true }); + scrollView.add_actor(this._applicationList, + { x_fill: true, + y_fill: true, + x_align: St.Align.START, + y_align: St.Align.MIDDLE }); + }, + + _onDestroy: function() { + this._user.disconnect(this._userLoadedId); + this._user.disconnect(this._userChangedId); + }, + + _setIconFromFile: function(iconFile, styleClass) { + if (styleClass) + this._iconBin.set_style_class_name(styleClass); + this._iconBin.set_style(null); + + this._iconBin.child = null; + if (iconFile) { + this._iconBin.show(); + this._iconBin.set_style('background-image: url("' + iconFile + '");'); + } else { + this._iconBin.hide(); + } + }, + + _setIconFromName: function(iconName, styleClass) { + if (styleClass) + this._iconBin.set_style_class_name(styleClass); + this._iconBin.set_style(null); + + if (iconName != null) { + let textureCache = St.TextureCache.get_default(); + let icon = textureCache.load_icon_name(this._iconBin.get_theme_node(), + iconName, + St.IconType.SYMBOLIC, + _DIALOG_ICON_SIZE); + + this._iconBin.child = icon; + this._iconBin.show(); + } else { + this._iconBin.child = null; + this._iconBin.hide(); + } + }, + + _updateContent: function() { + if (this.state != ModalDialog.State.OPENING && + this.state != ModalDialog.State.OPENED) + return; + + let dialogContent = DialogContent[this._type]; + + let subject = dialogContent.subject; + let description; + + if (this._user.is_loaded && !dialogContent.iconName) { + let iconFile = this._user.get_icon_file(); + + this._setIconFromFile(iconFile, dialogContent.iconStyleClass); + } else if (dialogContent.iconName) { + this._setIconFromName(dialogContent.iconName, + dialogContent.iconStyleClass); + } + + if (this._inhibitors.length > 0) { + this._stopTimer(); + description = dialogContent.inhibitedDescription; + } else if (this._secondsLeft > 0 && this._inhibitors.length == 0) { + let displayTime = _roundSecondsToInterval(this._totalSecondsToStayOpen, + this._secondsLeft, + 10); + + if (this._user.is_loaded) { + let realName = this._user.get_real_name(); + + if (realName != null) { + if (dialogContent.subjectWithUser) + subject = dialogContent.subjectWithUser.format(realName); + + if (dialogContent.uninhibitedDescriptionWithUser) + description = dialogContent.uninhibitedDescriptionWithUser.format(realName, displayTime); + else + description = dialogContent.uninhibitedDescription.format(displayTime); + } + } + + if (!description) + description = dialogContent.uninhibitedDescription.format(displayTime); + } else { + description = dialogContent.endDescription; + } + + _setLabelText(this._subjectLabel, subject); + _setLabelText(this._descriptionLabel, description); + }, + + _updateButtons: function() { + if (this.state != ModalDialog.State.OPENING && + this.state != ModalDialog.State.OPENED) + return; + + let dialogContent = DialogContent[this._type]; + let confirmButtonText = _("Confirm"); + + if (dialogContent.confirmButtonText) + confirmButtonText = dialogContent.confirmButtonText; + + this.setButtons([{ label: _("Cancel"), + action: Lang.bind(this, this.cancel), + key: Clutter.Escape + }, + { label: confirmButtonText, + action: Lang.bind(this, this._confirm) + }]); + }, + + cancel: function() { + this._stopTimer(); + DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog', + 'org.gnome.SessionManager.EndSessionDialog', + 'Canceled', '', []); + this.close(global.get_current_time()); + }, + + _confirm: function() { + this._fadeOutDialog(); + this._stopTimer(); + DBus.session.emit_signal('/org/gnome/SessionManager/EndSessionDialog', + 'org.gnome.SessionManager.EndSessionDialog', + 'Confirmed', '', []); + }, + + _onOpened: function() { + if (this._inhibitors.length == 0) + this._startTimer(); + }, + + _startTimer: function() { + this._secondsLeft = this._totalSecondsToStayOpen; + Tweener.addTween(this, + { _secondsLeft: 0, + time: this._secondsLeft, + transition: 'linear', + onUpdate: Lang.bind(this, this._updateContent), + onComplete: Lang.bind(this, this._confirm), + }); + }, + + _stopTimer: function() { + Tweener.removeTweens(this); + this._secondsLeft = 0; + }, + + _onInhibitorLoaded: function(inhibitor) { + if (this._inhibitors.indexOf(inhibitor) < 0) { + // Stale inhibitor + return; + } + + let app = findAppFromInhibitor(inhibitor); + + if (app) { + let item = new ListItem(app, inhibitor.reason); + item.connect('activate', + Lang.bind(this, function() { + this.close(global.get_current_time()); + })); + this._applicationList.add(item.actor, { x_fill: true }); + this._stopTimer(); + } else { + // inhibiting app is a service, not an application + this._inhibitors.splice(this._inhibitors.indexOf(inhibitor), 1); + } + + this._updateContent(); + }, + + OpenAsync: function(type, timestamp, totalSecondsToStayOpen, inhibitorObjectPaths, callback) { + this._totalSecondsToStayOpen = totalSecondsToStayOpen; + this._inhibitors = []; + this._applicationList.remove_all(); + this._type = type; + + if (!(this._type in DialogContent)) + throw new DBus.DBusError('org.gnome.Shell.ModalDialog.TypeError', + "Unknown dialog type requested"); + + for (let i = 0; i < inhibitorObjectPaths.length; i++) { + let inhibitor = new GnomeSession.Inhibitor(inhibitorObjectPaths[i]); + + inhibitor.connect('is-loaded', + Lang.bind(this, function() { + this._onInhibitorLoaded(inhibitor); + })); + this._inhibitors.push(inhibitor); + } + + if (!this.open(timestamp)) + throw new DBus.DBusError('org.gnome.Shell.ModalDialog.GrabError', + "Cannot grab pointer and keyboard"); + + this._updateButtons(); + this._updateContent(); + + let signalId = this.connect('opened', + Lang.bind(this, function() { + callback(); + this.disconnect(signalId); + })); + } +}; +DBus.conformExport(EndSessionDialog.prototype, EndSessionDialogIface); diff --git a/js/ui/main.js b/js/ui/main.js index 1d068ebe5..1d456af8d 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -22,6 +22,7 @@ const _ = Gettext.gettext; const Chrome = imports.ui.chrome; const CtrlAltTab = imports.ui.ctrlAltTab; +const EndSessionDialog = imports.ui.endSessionDialog; const Environment = imports.ui.environment; const ExtensionSystem = imports.ui.extensionSystem; const MessageTray = imports.ui.messageTray; @@ -171,6 +172,10 @@ function start() { } }); + // Provide the bus object for gnome-session to + // initiate logouts. + EndSessionDialog.init(); + global.gdk_screen.connect('monitors-changed', _relayout); ExtensionSystem.init(); From d21f04b8b4b789bf071193bbac94e501a299ce71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 13 Jan 2011 23:32:20 +0100 Subject: [PATCH 099/132] kbd-status: Close the menu when switching layouts Layout items in the menu overwrite PopupBaseMenuItem.activate(), so the menu stays open when selecting a layout from the menu. Chain up to the parent class' method to make the items behave properly. https://bugzilla.gnome.org/show_bug.cgi?id=639474 --- js/ui/status/keyboard.js | 1 + 1 file changed, 1 insertion(+) diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index b01e28b69..df3d1ab58 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -36,6 +36,7 @@ LayoutMenuItem.prototype = { }, activate: function(event) { + PopupMenu.PopupBaseMenuItem.prototype.activate.call(this); this._config.lock_group(this._id); } }; From 1f1fe36b89f339c15e280ed3d9813cd83b5eb08e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Di=C3=A9guez?= Date: Fri, 14 Jan 2011 16:33:17 +0100 Subject: [PATCH 100/132] Updated Galician translations --- po/gl.po | 147 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 79 insertions(+), 68 deletions(-) diff --git a/po/gl.po b/po/gl.po index 259b1da6d..267220e98 100644 --- a/po/gl.po +++ b/po/gl.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-06 23:28+0100\n" -"PO-Revision-Date: 2011-01-06 23:33+0100\n" +"POT-Creation-Date: 2011-01-14 16:32+0100\n" +"PO-Revision-Date: 2011-01-14 16:33+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -316,6 +316,21 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "Anchura das liñas verticais e horizontais que contén o punto de mira." +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:108 +msgid "Could not parse command:" +msgstr "Non foi posíbel analizar a orde:" + +#: ../js/misc/util.js:130 +msgid "No such application" +msgstr "Non existe o aplicativo" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Produciuse un fallo na execución de «%s»:" + #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:155 msgid "All" @@ -359,114 +374,118 @@ msgstr "Eliminar" msgid "RECENT ITEMS" msgstr "ELEMENTOS RECENTES" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "Non hai ningunha extensión instalada" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "Activado" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Desactivado" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "Erro" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "Desactualizado" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "Ver fonte" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "Páxina web" -#: ../js/ui/overview.js:101 +#: ../js/ui/messageTray.js:1748 +msgid "System Information" +msgstr "Información do sistema" + +#: ../js/ui/overview.js:76 msgid "Undo" msgstr "Desfacer" -#: ../js/ui/overview.js:166 +#: ../js/ui/overview.js:141 msgid "Windows" msgstr "Xanelas" -#: ../js/ui/overview.js:169 +#: ../js/ui/overview.js:144 msgid "Applications" msgstr "Aplicativos" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:478 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "Saír de %s" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:563 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" -#: ../js/ui/panel.js:564 +#: ../js/ui/panel.js:565 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/panel.js:568 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:569 +#: ../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:576 +#: ../js/ui/panel.js:577 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %H:%M:%S" -#: ../js/ui/panel.js:577 +#: ../js/ui/panel.js:578 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/panel.js:581 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/panel.js:582 +#: ../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:727 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "Actividades" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "Produciuse un fallo ao desmontar «%s»" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "Reintentar" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "Conectar con..." -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "LUGARES E DISPOSITIVOS" @@ -479,84 +498,79 @@ msgstr "LUGARES E DISPOSITIVOS" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "Insira unha orde:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Produciuse un fallo na execución de «%s»:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Dispoñíbel" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Ocupado" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "A miña conta" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "Configuracións do sistema" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Bloquear pantalla" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Cambiar de usuario" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "Saír da sesión..." -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "Suspender..." -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "Apagar..." -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "Ampliación" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "Lector de pantalla" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "Teclado en pantalla" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "Alertas visuais" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "Teclas persistentes" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "Teclas lentas" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "Rebote das teclas" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "Teclas do Rato" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "Configuracións de acceso universal" @@ -617,7 +631,7 @@ msgstr "Configuracións do teclado" msgid "Mouse Settings" msgstr "Configuracións do rato" -#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Configuracións do son" @@ -724,59 +738,59 @@ msgid_plural "%d minutes remaining" msgstr[0] "%d minuto restante" msgstr[1] "%d minutos restantes" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "Adaptador de corrente" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "Batería do portátil" -#: ../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 "Monitor" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "Rato" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "Teclado" -#: ../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 "Teléfono móbil" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "Reprodutor multimedia" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "Tablet" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "Computador" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Descoñecido" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Volume" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "Micrófono" @@ -1017,9 +1031,6 @@ msgstr "%1$s: %2$s" #~ msgid "System Preferences..." #~ msgstr "Preferencias do sistema..." -#~ msgid "Account Information..." -#~ msgstr "Información da conta..." - #~ msgid "ON" #~ msgstr "⚫" From d442494f3aecd82eb26f9691d3d79181a193835d Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 14 Jan 2011 21:22:18 +0100 Subject: [PATCH 101/132] Dash: Remove unused properties --- js/ui/dash.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/js/ui/dash.js b/js/ui/dash.js index 99f91613c..01de6af44 100644 --- a/js/ui/dash.js +++ b/js/ui/dash.js @@ -78,8 +78,6 @@ function Dash() { Dash.prototype = { _init : function() { - this._menus = []; - this._menuDisplays = []; this._maxHeight = -1; this._iconSize = 48; From 1fca8a8b95a8e73cc225c9abb5f735fd9cad92a3 Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Fri, 14 Jan 2011 21:58:24 +0100 Subject: [PATCH 102/132] css: Remove places and recent items They no longer exist so they should be removed from css as well. --- data/theme/gnome-shell.css | 51 -------------------------------------- 1 file changed, 51 deletions(-) diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 393cce95f..58e1c7354 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -554,57 +554,6 @@ StTooltip StLabel { font-size: 12px } -/* Places */ - -.places-section { - spacing-columns: 4px; - spacing-rows: 4px; -} - -.places-item-box { - spacing: 2px; -} - -.places-item { - border-radius: 4px; - padding: 2px; - border: 1px solid #181818; - padding-left: 4px; - padding-right: 4px; - transition-duration: 100; -} - -.places-item:hover { - border: 1px solid #666666; - background-gradient-direction: vertical; - background-gradient-start: rgba(61,61,61,0.8); - background-gradient-end: rgba(24,24,24,0.2); - transition-duration: 100; -} - -/* Recent items */ - -.recent-docs-item-box { - spacing: 2px; -} - -.recent-docs-item { - border-radius: 4px; - padding: 2px; - border: 1px solid #181818; - padding-left: 4px; - padding-right: 4px; - transition-duration: 100; -} - -.recent-docs-item:hover { - border: 1px solid #666666; - background-gradient-direction: vertical; - background-gradient-start: rgba(61,61,61,0.8); - background-gradient-end: rgba(24,24,24,0.2); - transition-duration: 100; -} - /* LookingGlass */ #LookingGlassDialog From 39b0c88c76b50f1c013a867beab3b1b908238407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 14 Jan 2011 22:08:03 +0100 Subject: [PATCH 103/132] doc-display: Remove UI of the old dash display Currently recent items only show up in search results. It is planned to bring them back in the context of "Finding and Reminding", but the UI in the corresponding mockups differs significantly from the removed UI, so that it doesn't seem useful to keep it around. --- js/ui/docDisplay.js | 476 -------------------------------------------- 1 file changed, 476 deletions(-) diff --git a/js/ui/docDisplay.js b/js/ui/docDisplay.js index 17c3d415f..d2afe04f6 100644 --- a/js/ui/docDisplay.js +++ b/js/ui/docDisplay.js @@ -1,487 +1,11 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ -const Clutter = imports.gi.Clutter; -const Lang = imports.lang; -const Shell = imports.gi.Shell; -const Signals = imports.signals; -const St = imports.gi.St; -const Mainloop = imports.mainloop; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; const DocInfo = imports.misc.docInfo; -const DND = imports.ui.dnd; -const GenericDisplay = imports.ui.genericDisplay; -const Main = imports.ui.main; const Search = imports.ui.search; -const MAX_DASH_DOCS = 50; -const DASH_DOCS_ICON_SIZE = 16; - -const DEFAULT_SPACING = 4; - -/* This class represents a single display item containing information about a document. - * We take the current number of seconds in the constructor to avoid looking up the current - * time for every item when they are created in a batch. - * - * docInfo - DocInfo object containing information about the document - * currentSeconds - current number of seconds since the epoch - */ -function DocDisplayItem(docInfo, currentSecs) { - this._init(docInfo, currentSecs); -} - -DocDisplayItem.prototype = { - __proto__: GenericDisplay.GenericDisplayItem.prototype, - - _init : function(docInfo, currentSecs) { - GenericDisplay.GenericDisplayItem.prototype._init.call(this); - this._docInfo = docInfo; - - this._setItemInfo(docInfo.name, ''); - - this._timeoutTime = -1; - this._resetTimeDisplay(currentSecs); - }, - - //// Public methods //// - - getUpdateTimeoutTime: function() { - return this._timeoutTime; - }, - - // Update any relative-time based displays for this item. - redisplay: function(currentSecs) { - this._resetTimeDisplay(currentSecs); - }, - - //// Public method overrides //// - - // Opens a document represented by this display item. - launch : function() { - this._docInfo.launch(); - }, - - //// Protected method overrides //// - - // Returns an icon for the item. - _createIcon : function() { - return this._docInfo.createIcon(GenericDisplay.ITEM_DISPLAY_ICON_SIZE); - }, - - // Returns a preview icon for the item. - _createPreviewIcon : function() { - return this._docInfo.createIcon(GenericDisplay.PREVIEW_ICON_SIZE); - }, - - // Creates and returns a large preview icon, but only if this._docInfo is an image file - // and we were able to generate a pixbuf from it successfully. - _createLargePreviewIcon : function() { - if (this._docInfo.mimeType == null || this._docInfo.mimeType.indexOf('image/') != 0) - return null; - - try { - return St.TextureCache.get_default().load_uri_sync(St.TextureCachePolicy.NONE, - this._docInfo.uri, -1, -1); - } catch (e) { - // An exception will be raised when the image format isn't know - /* FIXME: http://bugzilla.gnome.org/show_bug.cgi?id=591480: should - * only ignore GDK_PIXBUF_ERROR_UNKNOWN_TYPE. */ - return null; - } - }, - - //// Drag and Drop //// - - shellWorkspaceLaunch: function() { - this.launch(); - }, - - //// Private Methods //// - - // Updates the last visited time displayed in the description text for the item. - _resetTimeDisplay: function(currentSecs) { - let lastSecs = this._docInfo.timestamp; - let timeDelta = currentSecs - lastSecs; - let [text, nextUpdate] = global.format_time_relative_pretty(timeDelta); - this._timeoutTime = currentSecs + nextUpdate; - this._setDescriptionText(text); - } -}; - -/* This class represents a display containing a collection of document items. - * The documents are sorted by how recently they were last visited. - */ -function DocDisplay() { - this._init(); -} - -DocDisplay.prototype = { - __proto__: GenericDisplay.GenericDisplay.prototype, - - _init : function() { - GenericDisplay.GenericDisplay.prototype._init.call(this); - // We keep a single timeout callback for updating last visited times - // for all the items in the display. This avoids creating individual - // callbacks for each item in the display. So proper time updates - // for individual items and item details depend on the item being - // associated with one of the displays. - this._updateTimeoutTargetTime = -1; - this._updateTimeoutId = 0; - - this._docManager = DocInfo.getDocManager(); - this._docsStale = true; - this._docManager.connect('changed', Lang.bind(this, function(mgr, userData) { - this._docsStale = true; - // Changes in local recent files should not happen when we are in the Overview mode, - // but redisplaying right away is cool when we use Zephyr. - // Also, we might be displaying remote documents, like Google Docs, in the future - // which might be edited by someone else. - this._redisplay(GenericDisplay.RedisplayFlags.NONE); - })); - - this.connect('destroy', Lang.bind(this, function (o) { - if (this._updateTimeoutId > 0) - Mainloop.source_remove(this._updateTimeoutId); - })); - }, - - //// Protected method overrides //// - - // Gets the list of recent items from the recent items manager. - _refreshCache : function() { - if (!this._docsStale) - return true; - this._allItems = {}; - Lang.copyProperties(this._docManager.getInfosByUri(), this._allItems); - this._docsStale = false; - return false; - }, - - // Sets the list of the displayed items based on how recently they were last visited. - _setDefaultList : function() { - // It seems to be an implementation detail of the Mozilla JavaScript that object - // properties are returned during the iteration in the same order in which they were - // defined, but it is not a guarantee according to this - // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Statements/for...in - // While this._allItems associative array seems to always be ordered by last added, - // as the results of this._recentManager.get_items() based on which it is constructed are, - // we should do the sorting manually because we want the order to be based on last visited. - // - // This function is called each time the search string is set back to '' or we display - // the Overview, so we are doing the sorting over the same items multiple times if the list - // of recent items didn't change. We could store an additional array of doc ids and sort - // them once when they are returned by this._recentManager.get_items() to avoid having to do - // this sorting each time, but the sorting seems to be very fast anyway, so there is no need - // to introduce an additional class variable. - this._matchedItems = {}; - this._matchedItemKeys = []; - let docIdsToRemove = []; - for (docId in this._allItems) { - this._matchedItems[docId] = 1; - this._matchedItemKeys.push(docId); - } - - for (docId in docIdsToRemove) { - delete this._allItems[docId]; - } - - this._matchedItemKeys.sort(Lang.bind(this, this._compareItems)); - }, - - // Compares items associated with the item ids based on how recently the items - // were last visited. - // Returns an integer value indicating the result of the comparison. - _compareItems : function(itemIdA, itemIdB) { - let docA = this._allItems[itemIdA]; - let docB = this._allItems[itemIdB]; - - return docB.timestamp - docA.timestamp; - }, - - // Checks if the item info can be a match for the search string by checking - // the name of the document. Item info is expected to be GtkRecentInfo. - // Returns a boolean flag indicating if itemInfo is a match. - _isInfoMatching : function(itemInfo, search) { - if (!itemInfo.exists()) - return false; - - if (search == null || search == '') - return true; - - let name = itemInfo.name.toLowerCase(); - if (name.indexOf(search) >= 0) - return true; - // TODO: we can also check doc URIs, so that - // if you search for a directory name, we display recent files from it - return false; - }, - - // Creates a DocDisplayItem based on itemInfo, which is expected to be a DocInfo object. - _createDisplayItem: function(itemInfo) { - let currentSecs = new Date().getTime() / 1000; - let docDisplayItem = new DocDisplayItem(itemInfo, currentSecs); - this._updateTimeoutCallback(docDisplayItem, currentSecs); - return docDisplayItem; - }, - - //// Private Methods //// - - // A callback function that redisplays the items, updating their descriptions, - // and sets up a new timeout callback. - _docTimeout: function () { - let currentSecs = new Date().getTime() / 1000; - this._updateTimeoutId = 0; - this._updateTimeoutTargetTime = -1; - for (let docId in this._displayedItems) { - let docDisplayItem = this._displayedItems[docId]; - docDisplayItem.redisplay(currentSecs); - this._updateTimeoutCallback(docDisplayItem, currentSecs); - } - return false; - }, - - // Updates the timeout callback if the timeout time for the docDisplayItem - // is earlier than the target time for the current timeout callback. - _updateTimeoutCallback: function (docDisplayItem, currentSecs) { - let timeoutTime = docDisplayItem.getUpdateTimeoutTime(); - if (this._updateTimeoutTargetTime < 0 || timeoutTime < this._updateTimeoutTargetTime) { - if (this._updateTimeoutId > 0) - Mainloop.source_remove(this._updateTimeoutId); - this._updateTimeoutId = Mainloop.timeout_add_seconds(timeoutTime - currentSecs, Lang.bind(this, this._docTimeout)); - this._updateTimeoutTargetTime = timeoutTime; - } - } -}; - -Signals.addSignalMethods(DocDisplay.prototype); - -function DashDocDisplayItem(docInfo) { - this._init(docInfo); -} - -DashDocDisplayItem.prototype = { - _init: function(docInfo) { - this._info = docInfo; - this._icon = docInfo.createIcon(DASH_DOCS_ICON_SIZE); - - this.actor = new St.Clickable({ style_class: 'recent-docs-item', - reactive: true, - x_align: St.Align.START }); - - let box = new St.BoxLayout({ style_class: 'recent-docs-item-box' }); - this.actor.set_child(box); - - box.add(this._icon); - - let text = new St.Label({ text: docInfo.name }); - box.add(text); - - this.actor.connect('clicked', Lang.bind(this, function () { - docInfo.launch(); - Main.overview.hide(); - })); - - this.actor._delegate = this; - let draggable = DND.makeDraggable(this.actor); - draggable.connect('drag-begin', - Lang.bind(this, function() { - Main.overview.beginItemDrag(this); - })); - draggable.connect('drag-end', - Lang.bind(this, function() { - Main.overview.endItemDrag(this); - })); - }, - - getUri: function() { - return this._info.uri; - }, - - getDragActorSource: function() { - return this._icon; - }, - - getDragActor: function(stageX, stageY) { - this.dragActor = this._info.createIcon(DASH_DOCS_ICON_SIZE); - return this.dragActor; - }, - - //// Drag and drop functions //// - - shellWorkspaceLaunch: function () { - this._info.launch(); - } -}; - -/** - * Class used to display two column recent documents in the dash - */ -function DashDocDisplay() { - this._init(); -} - -DashDocDisplay.prototype = { - _init: function() { - this.actor = new Shell.GenericContainer(); - 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._workId = Main.initializeDeferredWork(this.actor, Lang.bind(this, this._redisplay)); - - this._actorsByUri = {}; - - this._docManager = DocInfo.getDocManager(); - this._docManager.connect('changed', Lang.bind(this, this._onDocsChanged)); - this._pendingDocsChange = true; - this._checkDocExistence = false; - }, - - _getPreferredWidth: function(actor, forHeight, alloc) { - let children = actor.get_children(); - - // We use two columns maximum. Just take the min and natural size of the - // first two items, even though strictly speaking it's not correct; we'd - // need to calculate how many items we could fit for the height, then - // take the biggest preferred width for each column. - // In practice the dash gets a fixed width anyways. - - // If we have one child, add its minimum and natural size - if (children.length > 0) { - let [minSize, naturalSize] = children[0].get_preferred_width(forHeight); - alloc.min_size += minSize; - alloc.natural_size += naturalSize; - } - // If we have two, add its size, plus DEFAULT_SPACING - if (children.length > 1) { - let [minSize, naturalSize] = children[1].get_preferred_width(forHeight); - alloc.min_size += DEFAULT_SPACING + minSize; - alloc.natural_size += DEFAULT_SPACING + naturalSize; - } - }, - - _getPreferredHeight: function(actor, forWidth, alloc) { - let children = actor.get_children(); - - // The width of an item is our allocated width, minus spacing, divided in half. - this._itemWidth = Math.floor((forWidth - DEFAULT_SPACING) / 2); - - let maxNatural = 0; - for (let i = 0; i < children.length; i++) { - let child = children[i]; - let [minSize, naturalSize] = child.get_preferred_height(this._itemWidth); - maxNatural = Math.max(maxNatural, naturalSize); - } - - this._itemHeight = maxNatural; - - let firstColumnChildren = Math.ceil(children.length / 2); - alloc.natural_size = (firstColumnChildren * maxNatural + - (firstColumnChildren - 1) * DEFAULT_SPACING); - }, - - _allocate: function(actor, box, flags) { - let width = box.x2 - box.x1; - let height = box.y2 - box.y1; - - // Make sure this._itemWidth/Height have been computed, even - // if the parent actor didn't check our size before allocating. - // (Not clear if that is required or not as a Clutter - // invariant; this is safe and cheap because of caching.) - actor.get_preferred_height(width); - - let children = actor.get_children(); - - let x = 0; - let y = 0; - let columnIndex = 0; - let i = 0; - // Loop over the children, going vertically down first. When we run - // out of vertical space (our y variable is bigger than box.y2), switch - // to the second column. - while (i < children.length) { - let child = children[i]; - - if (y + this._itemHeight > box.y2) { - // Is this the second column, or we're in - // the first column and can't even fit one - // item? In that case, break. - if (columnIndex == 1 || i == 0) { - break; - } - // Set x to the halfway point. - columnIndex += 1; - x = x + this._itemWidth + DEFAULT_SPACING; - // And y is back to the top. - y = 0; - // Retry this same item, now that we're in the second column. - // By looping back to the top here, we re-test the size - // again for the second column. - continue; - } - - let childBox = new Clutter.ActorBox(); - childBox.x1 = x; - childBox.y1 = y; - childBox.x2 = childBox.x1 + this._itemWidth; - childBox.y2 = y + this._itemHeight; - - y = childBox.y2 + DEFAULT_SPACING; - - child.allocate(childBox, flags); - this.actor.set_skip_paint(child, false); - - i++; - } - - if (this._checkDocExistence) { - // Now we know how many docs we are displaying, queue a check to see if any of them - // have been deleted. If they are deleted, then we'll get a 'changed' signal; since - // we'll now be displaying items we weren't previously, we'll check again to see - // if they were deleted, and so forth and so on. - // TODO: We should change this to ask for as many as we can fit in the given space: - // https://bugzilla.gnome.org/show_bug.cgi?id=603522#c23 - this._docManager.queueExistenceCheck(i); - this._checkDocExistence = false; - } - - for (; i < children.length; i++) - this.actor.set_skip_paint(children[i], true); - }, - - _onDocsChanged: function() { - this._checkDocExistence = true; - Main.queueDeferredWork(this._workId); - }, - - _redisplay: function() { - // Should be kept alive by the _actorsByUri - this.actor.remove_all(); - let docs = this._docManager.getTimestampOrderedInfos(); - for (let i = 0; i < docs.length && i < MAX_DASH_DOCS; i++) { - let doc = docs[i]; - let display = this._actorsByUri[doc.uri]; - if (display) { - this.actor.add_actor(display.actor); - } else { - let display = new DashDocDisplayItem(doc); - this.actor.add_actor(display.actor); - this._actorsByUri[doc.uri] = display; - } - } - // Any unparented actors must have been deleted - for (let uri in this._actorsByUri) { - let display = this._actorsByUri[uri]; - if (display.actor.get_parent() == null) { - display.actor.destroy(); - delete this._actorsByUri[uri]; - } - } - this.emit('changed'); - } -}; - -Signals.addSignalMethods(DashDocDisplay.prototype); function DocSearchProvider() { this._init(); From 56f6c9c5f64e3907159ec8dcb0a48b752f227cf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 14 Jan 2011 22:15:53 +0100 Subject: [PATCH 104/132] genericDisplay: Remove unused module GenericDisplay used to provide a common base class for places and recent items, none of which exists anymore. As of current mockups, display items in "Finding and Reminding" should be based on BaseIcon / IconGrid instead. --- data/theme/gnome-shell.css | 36 -- js/Makefile.am | 1 - js/misc/docInfo.js | 3 +- js/ui/genericDisplay.js | 693 ------------------------------------- js/ui/overview.js | 1 - 5 files changed, 1 insertion(+), 733 deletions(-) delete mode 100644 js/ui/genericDisplay.js diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 58e1c7354..05c9ce263 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -441,42 +441,6 @@ StTooltip StLabel { spacing: 4px; } -/* GenericDisplay */ - -.generic-display-container { - spacing: 4px; -} - -.generic-display-item { - height: 50px; - border-radius: 4px; - color: #ffffff; - font-size: 14px; - spacing: 4px; -} - -.generic-display-item:selected { - background-color: rgba(79,111,173,0.66); -} - -.generic-display-item-text { - spacing: 4px; -} - -.generic-display-item-description { - font-size: 12px; - color: #bababa; -} - -.generic-display-details { - font-size: 14px; - color: #ffffff; -} - -.generic-display-details-name { - font-weight: bold; -} - /* Apps */ .icon-grid { diff --git a/js/Makefile.am b/js/Makefile.am index 1b02f4968..3a7a2da06 100644 --- a/js/Makefile.am +++ b/js/Makefile.am @@ -24,7 +24,6 @@ nobase_dist_js_DATA = \ ui/endSessionDialog.js \ ui/environment.js \ ui/extensionSystem.js \ - ui/genericDisplay.js \ ui/iconGrid.js \ ui/lightbox.js \ ui/link.js \ diff --git a/js/misc/docInfo.js b/js/misc/docInfo.js index 6888ced50..a9332d91c 100644 --- a/js/misc/docInfo.js +++ b/js/misc/docInfo.js @@ -60,8 +60,7 @@ function getDocManager() { } /** - * DocManager wraps the DocSystem, primarily to expose DocInfo objects - * which conform to the GenericDisplay item API. + * DocManager wraps the DocSystem, primarily to expose DocInfo objects. */ function DocManager() { this._init(); diff --git a/js/ui/genericDisplay.js b/js/ui/genericDisplay.js deleted file mode 100644 index 071599315..000000000 --- a/js/ui/genericDisplay.js +++ /dev/null @@ -1,693 +0,0 @@ -/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ - -const Gtk = imports.gi.Gtk; -const Lang = imports.lang; -const Signals = imports.signals; -const St = imports.gi.St; - -const DND = imports.ui.dnd; -const Main = imports.ui.main; - -const RedisplayFlags = { NONE: 0, - FULL: 1 << 1, - SUBSEARCH: 1 << 2, - IMMEDIATE: 1 << 3 }; - -// Used by subclasses -const ITEM_DISPLAY_ICON_SIZE = 48; -const PREVIEW_ICON_SIZE = 96; - -/* This is a virtual class that represents a single display item containing - * a name, a description, and an icon. It allows selecting an item and represents - * it by highlighting it with a different background color than the default. - */ -function GenericDisplayItem() { - this._init(); -} - -GenericDisplayItem.prototype = { - _init: function() { - this.actor = new St.BoxLayout({ style_class: 'generic-display-item', - reactive: true }); - - this.actor._delegate = this; - this.actor.connect('button-release-event', - Lang.bind(this, - function() { - // Activates the item by launching it - this.emit('activate'); - return true; - })); - - let draggable = DND.makeDraggable(this.actor); - draggable.connect('drag-begin', - Lang.bind(this, function() { - Main.overview.beginItemDrag(this); - })); - draggable.connect('drag-end', - Lang.bind(this, function() { - Main.overview.endItemDrag(this); - })); - - this._iconBin = new St.Bin(); - this.actor.add(this._iconBin); - - this._infoText = new St.BoxLayout({ style_class: 'generic-display-item-text', - vertical: true }); - this.actor.add(this._infoText, { expand: true, y_fill: false }); - - this._name = null; - this._description = null; - this._icon = null; - - this._initialLoadComplete = false; - - // An array of details description actors that we create over time for the item. - // It is used for updating the description text inside the details actor when - // the description text for the item is updated. - this._detailsDescriptions = []; - }, - - //// Draggable object interface //// - - // Returns a cloned texture of the item's icon to represent the item as it - // is being dragged. - getDragActor: function(stageX, stageY) { - return this._createIcon(); - }, - - // Returns the item icon, a separate copy of which is used to - // represent the item as it is being dragged. This is used to - // determine a snap-back location for the drag icon if it does - // not get accepted by any drop target. - getDragActorSource: function() { - return this._icon; - }, - - //// Public methods //// - - // Highlights the item by setting a different background color than the default - // if isSelected is true, removes the highlighting otherwise. - markSelected: function(isSelected) { - if (isSelected) - this.actor.add_style_pseudo_class('selected'); - else - this.actor.remove_style_pseudo_class('selected'); - }, - - /* - * Returns an actor containing item details. In the future details can have more information than what - * the preview pop-up has and be item-type specific. - */ - createDetailsActor: function() { - - let details = new St.BoxLayout({ style_class: 'generic-display-container', - vertical: true }); - - let mainDetails = new St.BoxLayout({ style_class: 'generic-display-container' }); - - // Inner box with name and description - let textDetails = new St.BoxLayout({ style_class: 'generic-display-details', - vertical: true }); - let detailsName = new St.Label({ style_class: 'generic-display-details-name', - text: this._name.text }); - textDetails.add(detailsName); - - let detailsDescription = new St.Label({ text: this._description.text }); - textDetails.add(detailsDescription); - - this._detailsDescriptions.push(detailsDescription); - - mainDetails.add(textDetails, { expand: true }); - - let previewIcon = this._createPreviewIcon(); - let largePreviewIcon = this._createLargePreviewIcon(); - - if (previewIcon != null && largePreviewIcon == null) { - mainDetails.insert_actor(previewIcon, 0); - } - - details.add(mainDetails); - - if (largePreviewIcon != null) { - details.add(largePreviewIcon); - } - - return details; - }, - - // Destroys the item. - destroy: function() { - this.actor.destroy(); - }, - - //// Pure virtual public methods //// - - // Performes an action associated with launching this item, such as opening a file or an application. - launch: function() { - throw new Error('Not implemented'); - }, - - //// Protected methods //// - - /* - * Creates the graphical elements for the item based on the item information. - * - * nameText - name of the item - * descriptionText - short description of the item - */ - _setItemInfo: function(nameText, descriptionText) { - if (this._name != null) { - // this also removes this._name from the parent container, - // so we don't need to call this.actor.remove_actor(this._name) directly - this._name.destroy(); - this._name = null; - } - if (this._description != null) { - this._description.destroy(); - this._description = null; - } - if (this._icon != null) { - // though we get the icon from elsewhere, we assume its ownership here, - // and therefore should be responsible for distroying it - this._icon.destroy(); - this._icon = null; - } - - this._icon = this._createIcon(); - this._iconBin.set_child(this._icon); - - this._name = new St.Label({ style_class: 'generic-display-item-name', - text: nameText }); - this._infoText.add(this._name); - - this._description = new St.Label({ style_class: 'generic-display-item-description', - text: descriptionText ? descriptionText : '' }); - this._infoText.add(this._description); - }, - - // Sets the description text for the item, including the description text - // in the details actors that have been created for the item. - _setDescriptionText: function(text) { - this._description.text = text; - for (let i = 0; i < this._detailsDescriptions.length; i++) { - let detailsDescription = this._detailsDescriptions[i]; - if (detailsDescription != null) { - detailsDescription.text = text; - } - } - }, - - //// Virtual protected methods //// - - // Creates and returns a large preview icon, but only if we have a detailed image. - _createLargePreviewIcon : function() { - return null; - }, - - //// Pure virtual protected methods //// - - // Returns an icon for the item. - _createIcon: function() { - throw new Error('Not implemented'); - }, - - // Returns a preview icon for the item. - _createPreviewIcon: function() { - throw new Error('Not implemented'); - } - - //// Private methods //// -}; - -Signals.addSignalMethods(GenericDisplayItem.prototype); - -/* This is a virtual class that represents a display containing a collection of items - * that can be filtered with a search string. - */ -function GenericDisplay() { - this._init(); -} - -GenericDisplay.prototype = { - _init : function() { - this._search = ''; - this._expanded = false; - - this.actor = new St.ScrollView({ x_fill: true, - y_fill: false, - vshadows: true }); - this._list = new St.BoxLayout({ style_class: 'generic-display-container', - vertical: true }); - this.actor.add_actor(this._list); - this.actor.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); - - this._pendingRedisplay = RedisplayFlags.NONE; - this.actor.connect('notify::mapped', Lang.bind(this, this._onMappedNotify)); - - // map where Object represents the item info - this._allItems = {}; - // set - this._matchedItems = {}; - // sorted array of items matched by search - this._matchedItemKeys = []; - // map - this._displayedItems = {}; - this._openDetailIndex = -1; - this._selectedIndex = -1; - }, - - //// Public methods //// - - // Sets the search string and displays the matching items. - setSearch: function(text) { - let lowertext = text.toLowerCase(); - if (lowertext == this._search) { - return; - } - let flags = RedisplayFlags.IMMEDIATE; - if (this._search != '') { - // Because we combine search terms with OR, we have to be sure that no new term - // was introduced before deciding that the new search results will be a subset of - // the existing search results. - if (lowertext.indexOf(this._search) == 0 && - lowertext.split(/\s+/).length == this._search.split(/\s+/).length) { - flags |= RedisplayFlags.SUBSEARCH; - } - } - this._search = lowertext; - this._redisplay(flags); - }, - - // Launches the item that is currently selected, closing the Overview - activateSelected: function() { - if (this._selectedIndex != -1) { - let selected = this._findDisplayedByIndex(this._selectedIndex); - selected.launch(); - this.unsetSelected(); - Main.overview.hide(); - } - }, - - // Moves the selection one up. If the selection was already on the top item, it's moved - // to the bottom one. Returns true if the selection actually moved up, false if it wrapped - // around to the bottom. - selectUp: function() { - let count = this._getVisibleCount(); - let selectedUp = true; - let prev = this._selectedIndex - 1; - if (this._selectedIndex <= 0) { - prev = count - 1; - selectedUp = false; - } - this._selectIndex(prev); - return selectedUp; - }, - - // Moves the selection one down. If the selection was already on the bottom item, it's moved - // to the top one. Returns true if the selection actually moved down, false if it wrapped - // around to the top. - selectDown: function() { - let count = this._getVisibleCount(); - let selectedDown = true; - let next = this._selectedIndex + 1; - if (this._selectedIndex == count - 1) { - next = 0; - selectedDown = false; - } - this._selectIndex(next); - return selectedDown; - }, - - // Selects the first item among the displayed items. - selectFirstItem: function() { - if (this.hasItems()) - this._selectIndex(0); - }, - - // Selects the last item among the displayed items. - selectLastItem: function() { - let count = this._getVisibleCount(); - if (this.hasItems()) - this._selectIndex(count - 1); - }, - - // Returns true if the display has some item selected. - hasSelected: function() { - return this._selectedIndex != -1; - }, - - // Removes selection if some display item is selected. - unsetSelected: function() { - this._selectIndex(-1); - }, - - // Returns true if the display has any displayed items. - hasItems: function() { - // TODO: figure out why this._list.displayedCount is returning a - // positive number when this._mathedItems.length is 0 - // This can be triggered if a search string is entered for which there are no matches. - // log('this._mathedItems.length: ' + this._matchedItems.length + ' this._list.displayedCount ' + this._list.displayedCount); - return this._matchedItemKeys.length > 0; - }, - - getMatchedItemsCount: function() { - return this._matchedItemKeys.length; - }, - - // Load the initial state - load: function() { - this._redisplay(RedisplayFlags.FULL); - }, - - // Should be called when the display is closed - resetState: function() { - this._filterReset(); - this._openDetailIndex = -1; - this.actor.get_vscroll_bar().get_adjustment().value = 0; - }, - - // Returns an actor which acts as a sidebar; this is used for - // the applications category view - getNavigationArea: function () { - return null; - }, - - createDetailsForIndex: function(index) { - let item = this._findDisplayedByIndex(index); - return item.createDetailsActor(); - }, - - //// Protected methods //// - - _recreateDisplayItems: function() { - this._removeAllDisplayItems(); - this._setDefaultList(); - for (let itemId in this._allItems) { - this._addDisplayItem(itemId); - } - }, - - // Creates a display item based on the information associated with itemId - // and adds it to the list of displayed items, but does not yet display it. - _addDisplayItem : function(itemId) { - if (this._displayedItems.hasOwnProperty(itemId)) { - log('Tried adding a display item for ' + itemId + ', but an item with this item id is already among displayed items.'); - return; - } - - let itemInfo = this._allItems[itemId]; - let displayItem = this._createDisplayItem(itemInfo); - - displayItem.connect('activate', - Lang.bind(this, - function() { - // update the selection - this._selectIndex(this._list.get_children().indexOf(displayItem.actor)); - this.activateSelected(); - })); - - displayItem.connect('show-details', - Lang.bind(this, - function() { - let index = this._list.get_children().indexOf(displayItem.actor); - /* Close the details pane if already open */ - if (index == this._openDetailIndex) { - this._openDetailIndex = -1; - this.emit('show-details', -1); - } else { - this._openDetailIndex = index; - this.emit('show-details', index); - } - })); - this._displayedItems[itemId] = displayItem; - }, - - // Removes an item identifed by the itemId from the displayed items. - _removeDisplayItem: function(itemId) { - let children = this._list.get_children(); - let count = children.length; - let displayItem = this._displayedItems[itemId]; - let displayItemIndex = children.indexOf(displayItem.actor); - - if (this.hasSelected() && count == 1) { - this.unsetSelected(); - } else if (this.hasSelected() && displayItemIndex < this._selectedIndex) { - this.selectUp(); - } - - displayItem.destroy(); - - delete this._displayedItems[itemId]; - }, - - // Removes all displayed items. - _removeAllDisplayItems: function() { - this.unsetSelected(); - for (itemId in this._displayedItems) - this._removeDisplayItem(itemId); - }, - - // Return true if there's an active search or other constraint - // on the list - _filterActive: function() { - return this._search != ''; - }, - - // Called when we are resetting state - _filterReset: function() { - this.unsetSelected(); - }, - - _compareSearchMatch: function(a, b) { - let countA = this._matchedItems[a]; - let countB = this._matchedItems[b]; - if (countA > countB) - return -1; - else if (countA < countB) - return 1; - else - return this._compareItems(a, b); - }, - - _setMatches: function(matches) { - this._matchedItems = matches; - this._matchedItemKeys = []; - for (let itemId in this._matchedItems) { - this._matchedItemKeys.push(itemId); - } - this._matchedItemKeys.sort(Lang.bind(this, this._compareSearchMatch)); - }, - - /** - * _redisplaySubSearch: - * A somewhat more optimized function called when we know - * that we're going to be displaying a subset of the items - * we already had, in the same order. In that case, we can - * just hide the actors that shouldn't be shown. - */ - _redisplaySubSearch: function() { - let matches = this._getSearchMatchedItems(true); - - // Just hide all from the old set, - // we'll show the ones we want below - for (let itemId in this._displayedItems) { - let item = this._displayedItems[itemId]; - item.actor.hide(); - } - - this._setMatches(matches); - - for (let itemId in matches) { - let item = this._displayedItems[itemId]; - item.actor.show(); - } - this._list.queue_relayout(); - }, - - _redisplayReordering: function() { - if (!this._filterActive()) { - this._setDefaultList(); - } else { - this._setMatches(this._getSearchMatchedItems(false)); - } - this._list.remove_all(); - for (let i = 0; i < this._matchedItemKeys.length; i++) { - let itemId = this._matchedItemKeys[i]; - let item = this._displayedItems[itemId]; - item.actor.show(); - this._list.add_actor(item.actor); - } - }, - - /* - * Updates the displayed items, applying the search string if one exists. - * @flags: Flags controlling redisplay behavior as follows: - * SUBSEARCH - Indicates that the current _search is a superstring of the previous - * one, which implies we only need to re-search through previous results. - * FULL - Indicates that we need recreate all displayed items. - * IMMEDIATE - Do the full redisplay even if we're not mapped. This is useful - * if you want to get the number of matched items and show/hide a section based on - * that number. - */ - _redisplay: function(flags) { - let immediate = (flags & RedisplayFlags.IMMEDIATE) != 0; - if (!immediate && !this.actor.mapped) { - this._pendingRedisplay |= flags; - return; - } - - let isSubSearch = (flags & RedisplayFlags.SUBSEARCH) != 0; - let fullReload = (flags & RedisplayFlags.FULL) != 0; - - let hadSelected = this.hasSelected(); - this.unsetSelected(); - - if (!this._initialLoadComplete) - fullReload = true; - - if (!this._refreshCache()) - fullReload = true; - - if (fullReload) { - this._recreateDisplayItems(); - this._initialLoadComplete = true; - } - - if (isSubSearch) { - this._redisplaySubSearch(); - } else { - this._redisplayReordering(); - } - - if (hadSelected) { - this._selectedIndex = -1; - this.selectFirstItem(); - } - - this.emit('redisplayed'); - }, - - //// Pure virtual protected methods //// - - // Performs the steps needed to have the latest information about the items. - // Implementation should return %true if we are up to date, and %false - // if a full reload occurred. - _refreshCache: function() { - throw new Error('Not implemented'); - }, - - // Sets the list of the displayed items based on the default sorting order. - // The default sorting order is specific to each implementing class. - _setDefaultList: function() { - throw new Error('Not implemented'); - }, - - // Compares items associated with the item ids based on the order in which the - // items should be displayed. - // Intended to be used as a compareFunction for array.sort(). - // Returns an integer value indicating the result of the comparison. - _compareItems: function(itemIdA, itemIdB) { - throw new Error('Not implemented'); - }, - - // Checks if the item info can be a match for the search string. - // Returns a boolean flag indicating if that's the case. - _isInfoMatching: function(itemInfo, search) { - throw new Error('Not implemented'); - }, - - // Creates a display item based on itemInfo. - _createDisplayItem: function(itemInfo) { - throw new Error('Not implemented'); - }, - - //// Private methods //// - - _getItemSearchScore: function(itemId, terms) { - let item = this._allItems[itemId]; - let score = 0; - for (let i = 0; i < terms.length; i++) { - let term = terms[i]; - if (this._isInfoMatching(item, term)) { - score++; - } - } - return score; - }, - - _getSearchMatchedItems: function(isSubSearch) { - // Break the search up into terms, and search for each - // individual term. Keep track of the number of terms - // each item matched. - let terms = this._search.split(/\s+/); - let matchScores = {}; - - if (isSubSearch) { - for (let i = 0; i < this._matchedItemKeys.length; i++) { - let itemId = this._matchedItemKeys[i]; - let score = this._getItemSearchScore(itemId, terms); - if (score > 0) - matchScores[itemId] = score; - } - } else { - for (let itemId in this._displayedItems) { - let score = this._getItemSearchScore(itemId, terms); - if (score > 0) - matchScores[itemId] = score; - } - } - return matchScores; - }, - - // Returns a display item based on its index in the ordering of the - // display children. - _findDisplayedByIndex: function(index) { - let actor = this._list.get_children()[index]; - return this._findDisplayedByActor(actor); - }, - - // Returns a display item based on the actor that represents it in - // the display. - _findDisplayedByActor: function(actor) { - for (itemId in this._displayedItems) { - let item = this._displayedItems[itemId]; - if (item.actor == actor) { - return item; - } - } - return null; - }, - - // Selects (e.g. highlights) a display item at the provided index, - // updates this.selectedItemDetails actor, and emits 'selected' signal. - _selectIndex: function(index) { - // Cleanup from the previous item - if (this.hasSelected()) { - this._findDisplayedByIndex(this._selectedIndex).markSelected(false); - } - - this._selectedIndex = index; - if (index < 0) - return; - - // Mark the new item as selected and create its details pane - let item = this._findDisplayedByIndex(index); - item.markSelected(true); - this.emit('selected'); - }, - - _getVisibleCount: function() { - return this._list.get_n_children(); - }, - - _onMappedNotify: function () { - let mapped = this.actor.mapped; - if (mapped && this._pendingRedisplay > RedisplayFlags.NONE) - this._redisplay(this._pendingRedisplay); - - this._pendingRedisplay = RedisplayFlags.NONE; - } -}; - -Signals.addSignalMethods(GenericDisplay.prototype); diff --git a/js/ui/overview.js b/js/ui/overview.js index 08641ae89..353d769e8 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -15,7 +15,6 @@ const AppDisplay = imports.ui.appDisplay; const Dash = imports.ui.dash; const DND = imports.ui.dnd; const DocDisplay = imports.ui.docDisplay; -const GenericDisplay = imports.ui.genericDisplay; const Lightbox = imports.ui.lightbox; const Main = imports.ui.main; const MessageTray = imports.ui.messageTray; From b2ab3de80e6442254b26ec6964b0d92aac9e2149 Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Sat, 15 Jan 2011 00:59:43 +0100 Subject: [PATCH 105/132] [l10n] updates POTFILES.in --- po/POTFILES.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/po/POTFILES.in b/po/POTFILES.in index 255a3d651..4dfe2cab4 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -6,6 +6,7 @@ js/ui/appDisplay.js js/ui/appFavorites.js js/ui/dash.js js/ui/docDisplay.js +js/ui/endSessionDialog.js js/ui/lookingGlass.js js/ui/messageTray.js js/ui/overview.js @@ -16,6 +17,7 @@ js/ui/runDialog.js js/ui/statusMenu.js js/ui/status/accessibility.js js/ui/status/bluetooth.js +js/ui/status/keyboard.js js/ui/status/power.js js/ui/status/volume.js js/ui/telepathyClient.js From 5b3f40102f8f7809eb986138cfd2fcbcf54c6fbf Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Sat, 15 Jan 2011 01:04:06 +0100 Subject: [PATCH 106/132] kbd-status: s/Preferences/Settings in menu entry In order to match similar menu entries from other menus. --- js/ui/status/keyboard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js index df3d1ab58..404a766cc 100644 --- a/js/ui/status/keyboard.js +++ b/js/ui/status/keyboard.js @@ -75,7 +75,7 @@ XKBIndicator.prototype = { this._sync_config(); this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem()); - this.menu.addAction(_("Keyboard Preferences"), function() { + this.menu.addAction(_("Keyboard Settings"), function() { GLib.spawn_command_line_async('gnome-control-center region'); }); }, From 6b353ece82ec66fb05bc9e0f64b549714086cdbd Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Sat, 15 Jan 2011 01:22:47 +0100 Subject: [PATCH 107/132] [l10n] updated Italian translation --- po/it.po | 435 +++++++++++++++++++++++++++---------------------------- 1 file changed, 216 insertions(+), 219 deletions(-) diff --git a/po/it.po b/po/it.po index fda7b926c..4b6f085ed 100644 --- a/po/it.po +++ b/po/it.po @@ -3,19 +3,19 @@ # This file is distributed under the same license as the gnome-shell package. # # Milo Casagrande , 2009, 2010. -# Luca Ferretti , 2010. +# Luca Ferretti , 2010, 2011. msgid "" msgstr "" "Project-Id-Version: gnome-shell\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-12-20 22:54+0100\n" -"PO-Revision-Date: 2010-12-20 22:55+0100\n" +"POT-Creation-Date: 2011-01-15 01:10+0100\n" +"PO-Revision-Date: 2011-01-15 01:19+0100\n" "Last-Translator: Luca Ferretti \n" "Language-Team: Italian \n" -"Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: it\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/gnome-shell.desktop.in.in.h:1 @@ -26,14 +26,6 @@ msgstr "GNOME Shell" msgid "Window management and application launching" msgstr "Gestisce finestre e avvia applicazioni" -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:1 -msgid "Clock" -msgstr "Orologio" - -#: ../data/gnome-shell-clock-preferences.desktop.in.in.h:2 -msgid "Customize the panel clock" -msgstr "Personalizza l'orologio sul pannello" - #: ../data/org.gnome.shell.gschema.xml.in.h:1 msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " @@ -43,24 +35,20 @@ msgstr "" "utilizzando il dialogo Alt-F2." #: ../data/org.gnome.shell.gschema.xml.in.h:2 -msgid "Custom format of the clock" -msgstr "Formato personalizzato dell'orologio" - -#: ../data/org.gnome.shell.gschema.xml.in.h:3 msgid "Enable internal tools useful for developers and testers from Alt-F2" msgstr "" "Abilita gli strumenti interni utili a sviluppatori e beta-tester attraverso " "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 "Estensione del file utilizzato per salvare lo 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 per la registrazione di screencast." -#: ../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." @@ -68,39 +56,27 @@ msgstr "" "Le estensioni per la GNOME Shell dispongono di una proprietà UUID: questa " "chiave elenca le estensioni che non dovrebbero essere caricate." -#: ../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 "Cronologia per il dialogo dei comandi (Alt-F2)" +#: ../data/org.gnome.shell.gschema.xml.in.h:7 +msgid "If true, display date in the clock, in addition to time." +msgstr "Se VERO, mostra nell'orologio la data, oltre all'orario." + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Formato orario" +msgid "If true, display seconds in time." +msgstr "Se VERO, mostra i secondi nell'orario." #: ../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 "" -"Se VERO e il formato è \"12-hour\" oppure \"24-hour\", visualizza anche la " -"data nell'orologio oltre all'orario." +msgid "If true, display the ISO week date in the calendar." +msgstr "Se VERO, mostra il giorno della settimana ISO nel calendario." #: ../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 "" -"Se VERO e il formato è \"12-hour\" oppure \"24-hour\", visualizza i secondi " -"nell'ora." - -#: ../data/org.gnome.shell.gschema.xml.in.h:11 -msgid "If true, display the ISO week date in the calendar." -msgstr "Se VERO, visualizza il giorno della settimana ISO nel calendario." - -#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "List of desktop file IDs for favorite applications" msgstr "Elenco di ID di file desktop per le applicazioni preferite" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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,19 +97,19 @@ msgstr "" "alcun valore, viene usata la pipeline predefinita il cui valore è " "\"videorate ! theoraenc ! oggmux\" e che registra nel formato Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Mostra la data nell'orologio" -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 msgid "Show the week date in the calendar" msgstr "Mostra il giorno della settimana nel calendario" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:14 msgid "Show time with seconds" msgstr "Mostra l'ora con i secondi" -#: ../data/org.gnome.shell.gschema.xml.in.h:17 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." @@ -141,7 +117,7 @@ msgstr "" "Le applicazioni che corrispondono a questi identificatori vengono " "visualizzate nell'area dei preferiti." -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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 " @@ -151,7 +127,7 @@ msgstr "" "data corrente e utilizza questa estensione. Dovrebbe essere modificato " "quando si registra utilizzando un diverso formato contenitore." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." @@ -159,12 +135,12 @@ msgstr "" "Il framerate in fotogrammi al secondo dello screencast registrato attraverso " "il registratore della GNOME Shell." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" msgstr "La pipeline di gstreamer utilizzata per codificare lo screencast" # (ndt) quel "in launchers" non mi convince... -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:19 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 " @@ -176,40 +152,11 @@ msgstr "" "disabilitare questa funzionalità per motivi di privacy. I dati già salvati " "non verranno comunque rimossi." -#: ../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 "" -"Questa chiave indica il formato usato dall'orologio nel pannello quando la " -"chiave specifica è impostata a \"custom\". È possibile utilizzare gli " -"specificatori di formato compatibili con strftime(). Per maggiori " -"informazioni, consultare il manuale di strftime()." - -#: ../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 "" -"Questa chiave indica il formato orario usato dall'orologio. I possibili " -"valori sono \"12-hour\", \"24-hour\", \"unix\" e \"custom\". Se impostata a " -"\"unix\", l'orologio visualizza l'ora in secondi a partire dall'era Epoch, " -"cioè dal 1970-01-01. Se impostata a \"custom\", l'orologio visualizza l'ora " -"in base al formato specificato nella chiave custom_format. Notare che se " -"impostata a \"unix\" o \"custom\", le chiavi show_date e show_seconds non " -"vengono considerate." - -#: ../data/org.gnome.shell.gschema.xml.in.h:24 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" msgstr "UUID delle estensioni da disabilitare" -#: ../data/org.gnome.shell.gschema.xml.in.h:25 +#: ../data/org.gnome.shell.gschema.xml.in.h:21 msgid "Whether to collect stats about applications usage" msgstr "" "Indica se raccogliere statistiche riguardo l'utilizzo delle applicazioni" @@ -339,55 +286,43 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Formato ora" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:108 +msgid "Could not parse command:" +msgstr "Impossibile analizzare il comando:" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Preferenze di Orologio" +#: ../js/misc/util.js:130 +msgid "No such application" +msgstr "Applicazione inesistente" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -msgstr "Visualizzazione sul pannello" +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Esecuzione di «%s» non riuscita:" -#: ../data/clock-preferences.ui.h:4 -msgid "Show seco_nds" -msgstr "Mostrare i _secondi" - -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -msgstr "Mostrare la _data" - -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "Formato _12 ore" - -#: ../data/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "Formato _24 ore" - -#: ../js/ui/appDisplay.js:154 +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 msgid "All" msgstr "Tutte" -#: ../js/ui/appDisplay.js:235 +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "APPLICAZIONI" -#: ../js/ui/appDisplay.js:265 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "PREFERENZE" -#: ../js/ui/appDisplay.js:562 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Nuova finestra" -#: ../js/ui/appDisplay.js:566 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Rimuovi dai preferiti" -#: ../js/ui/appDisplay.js:567 +#: ../js/ui/appDisplay.js:568 msgid "Add to Favorites" msgstr "Aggiungi ai preferiti" @@ -407,126 +342,197 @@ msgstr "%s è stato rimosso dai preferiti." msgid "Remove" msgstr "Rimuovi" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "Elementi recenti" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Termina sessione di %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Termina sessione" + +# oddio... abbandonare il sistema sembra la nave che affonda... (LF) +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "Fare clic su «Termina sessione» per chiudere queste applicazioni e abbandonare il sistema." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "La sessione di %s verrà terminata automaticamente tra %d secondi." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "La sessione verrà terminata automaticamente tra %d secondi." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Chiusura della sessione." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Arresta" + +# usato un termine diverso, magari si capisce meglio (LF) +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "Fare clic su «Arresta» per chiudere queste applicazioni e spegnere il sistema." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "Il sistema verrà arrestato automaticamente tra %d secondi." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Arresto del sistema." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Riavvia" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "Fare clic su «Riavvia» per chiudere queste applicazioni e riavviare il sistema." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "Il sistema verrà riavviato automaticamente tra %d secondi." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Riavvio del sistema." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Conferma" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "Annulla" + +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "Nessuna estensione installata" # (ndt) o abilitata? -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "Abilitato" # (ndt) o disabilitata? #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Disabilitato" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "Errore" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "Non aggiornato" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "Visualizza sorgente" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "Pagina web" -#: ../js/ui/overview.js:96 +#: ../js/ui/messageTray.js:1748 +msgid "System Information" +msgstr "Informazione di sistema" + +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "Annulla" -#: ../js/ui/overview.js:158 +#: ../js/ui/overview.js:140 msgid "Windows" -msgstr "Finestra" +msgstr "Finestre" -#: ../js/ui/overview.js:161 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "Applicazioni" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:474 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "Chiudi %s" -#: ../js/ui/panel.js:499 -msgid "Preferences" -msgstr "Preferenze" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:585 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %k.%M.%S" # (ndt) proviamo col k, se non funge, sappiamo il perché... -#: ../js/ui/panel.js:586 +#: ../js/ui/panel.js:565 msgid "%a %b %e, %R" msgstr "%a %e %b, %k.%M" #. Translators: This is the time format without date used #. in 24-hour mode. -#: ../js/ui/panel.js:590 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %k.%M.%S" -#: ../js/ui/panel.js:591 +#: ../js/ui/panel.js:570 msgid "%a %R" msgstr "%a %k.%M" #. Translators: This is a time format with date used #. for AM/PM. -#: ../js/ui/panel.js:598 +#: ../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:599 +#: ../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:603 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %P" -#: ../js/ui/panel.js:604 +#: ../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:749 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "Attività" # (ndt) libera, ma unmount non si può proprio vedere... -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "Impossibile scollegare «%s»" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "Riprova" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "Connetti a..." -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "Risorse e dispositivi" @@ -539,84 +545,79 @@ msgstr "Risorse e dispositivi" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "Inserire un comando:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Esecuzione di «%s» non riuscita:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Disponibile" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Non disponibile" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "Account personale" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "Impostazioni di sistema" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Blocca schermo" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Cambia utente" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "Termina sessione..." -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "Sospendi..." -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "Arresta..." -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "Ingrandimento" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "Lettore schermo" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "Tastiera a schermo" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "Allerte visive" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "Permanenza tasti" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "Rallentamento tasti" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "Pressione ravvicinata tasti" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "Mouse da tastiera" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "Impostazioni accesso universale" @@ -628,7 +629,7 @@ msgstr "Contrasto elevato" msgid "Large Text" msgstr "Caratteri grandi" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:200 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 msgid "Bluetooth" msgstr "Bluetooth" @@ -637,11 +638,11 @@ msgstr "Bluetooth" msgid "Visibility" msgstr "Rilevabile" -#: ../js/ui/status/bluetooth.js:68 +#: ../js/ui/status/bluetooth.js:69 msgid "Send Files to Device..." msgstr "Invia file al dispositivo..." -#: ../js/ui/status/bluetooth.js:71 +#: ../js/ui/status/bluetooth.js:70 msgid "Setup a New Device..." msgstr "Imposta un nuovo dispositivo..." @@ -651,106 +652,102 @@ msgstr "Impostazioni Bluetooth" # indica lo stato del device BT, per esempio gli auricolari # credo sia meglio l'aggettivo che il sostantivo -#: ../js/ui/status/bluetooth.js:151 +#: ../js/ui/status/bluetooth.js:191 msgid "Connection" msgstr "Collegato" -#: ../js/ui/status/bluetooth.js:187 +#: ../js/ui/status/bluetooth.js:227 msgid "Send Files..." msgstr "Invia file..." -#: ../js/ui/status/bluetooth.js:192 +#: ../js/ui/status/bluetooth.js:232 msgid "Browse Files..." msgstr "Esplora file..." -#: ../js/ui/status/bluetooth.js:201 +#: ../js/ui/status/bluetooth.js:241 msgid "Error browsing device" msgstr "Errore nell'esplorare il dispositivo" -#: ../js/ui/status/bluetooth.js:202 +#: ../js/ui/status/bluetooth.js:242 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Non è possibile esplorare il dispositivo richiesto, l'errore è «%s»" -#: ../js/ui/status/bluetooth.js:210 +#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "Impostazioni tastiera" -#: ../js/ui/status/bluetooth.js:215 +#: ../js/ui/status/bluetooth.js:255 msgid "Mouse Settings" msgstr "Impostazioni mouse" -#: ../js/ui/status/bluetooth.js:222 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Impostazioni audio" -#: ../js/ui/status/bluetooth.js:293 ../js/ui/status/bluetooth.js:327 -#: ../js/ui/status/bluetooth.js:367 ../js/ui/status/bluetooth.js:400 +#: ../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 "" -#: ../js/ui/status/bluetooth.js:328 +#: ../js/ui/status/bluetooth.js:371 #, c-format msgid "Authorization request from %s" msgstr "Richesta autorizzazione da %s" -#: ../js/ui/status/bluetooth.js:334 +#: ../js/ui/status/bluetooth.js:377 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Il dispositivo %s vuole accedere al servizio «%s»" -#: ../js/ui/status/bluetooth.js:336 +#: ../js/ui/status/bluetooth.js:379 msgid "Always grant access" msgstr "Consenti sempre accesso" -#: ../js/ui/status/bluetooth.js:337 +#: ../js/ui/status/bluetooth.js:380 msgid "Grant this time only" msgstr "Consenti solo stavolta" -#: ../js/ui/status/bluetooth.js:338 +#: ../js/ui/status/bluetooth.js:381 msgid "Reject" msgstr "Rifiuta" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:411 #, c-format msgid "Pairing confirmation for %s" msgstr "Conferma associazione per %s" -#: ../js/ui/status/bluetooth.js:374 ../js/ui/status/bluetooth.js:408 +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Il dispositivo %s vuole associarsi con questo computer" -#: ../js/ui/status/bluetooth.js:375 +#: ../js/ui/status/bluetooth.js:418 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Confermare la corrispondenza del PIN «%s» con quello sul dispositivo." -#: ../js/ui/status/bluetooth.js:377 +#: ../js/ui/status/bluetooth.js:420 msgid "Matches" msgstr "Corrisponde" -#: ../js/ui/status/bluetooth.js:378 +#: ../js/ui/status/bluetooth.js:421 msgid "Does not match" msgstr "Non corrisponde" -#: ../js/ui/status/bluetooth.js:401 +#: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Pairing request for %s" msgstr "Richiesta associazione per %s" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:452 msgid "Please enter the PIN mentioned on the device." msgstr "Inserire il PIN indicato sul dispositivo." -#: ../js/ui/status/bluetooth.js:425 +#: ../js/ui/status/bluetooth.js:468 msgid "OK" msgstr "OK" -#: ../js/ui/status/bluetooth.js:426 -msgid "Cancel" -msgstr "Annulla" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Impostazioni alimentazione" @@ -787,79 +784,79 @@ msgid_plural "%d minutes remaining" msgstr[0] "%d minuto rimanente" msgstr[1] "%d minuti rimanenti" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "Alimentatore di corrente" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "Batteria del portatile" -#: ../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 "Monitor" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "Mouse" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "Tastiera" -#: ../js/ui/status/power.js:249 +#: ../js/ui/status/power.js:247 msgid "PDA" msgstr "PDS" # c'era una discussione su tp... -#: ../js/ui/status/power.js:251 +#: ../js/ui/status/power.js:249 msgid "Cell phone" msgstr "Cellulare" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "Lettore multimediale" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "Tablet" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "Computer" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Sconosciuto" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Volume" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "Microfono" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:561 #, c-format msgid "%s is online." msgstr "%s è disponibile." -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:566 #, c-format msgid "%s is offline." msgstr "%s è fuori rete." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:569 #, c-format msgid "%s is away." msgstr "%s è assente." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:572 #, c-format msgid "%s is busy." msgstr "%s non è disponibile." @@ -867,7 +864,7 @@ msgstr "%s non è disponibile." #. 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:666 #, no-c-format msgid "Sent at %X on %A" msgstr "Inviato alle %-H.%M.%S di %A" @@ -922,32 +919,32 @@ msgstr[1] "%u ingressi" msgid "System Sounds" msgstr "Audio di sistema" -#: ../src/shell-global.c:1155 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "Meno di un minuto fa" -#: ../src/shell-global.c:1159 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d minuto fa" msgstr[1] "%d minuti fa" -#: ../src/shell-global.c:1164 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ora fa" msgstr[1] "%d ore fa" -#: ../src/shell-global.c:1169 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d giorno fa" msgstr[1] "%d giorni fa" -#: ../src/shell-global.c:1174 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" From fea2044eb8766b289794186ba3eaf39e0ba5a1cd Mon Sep 17 00:00:00 2001 From: Kostas Papadimas Date: Sat, 15 Jan 2011 11:51:02 +0200 Subject: [PATCH 108/132] Updated Greek translation --- po/el.po | 915 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 652 insertions(+), 263 deletions(-) diff --git a/po/el.po b/po/el.po index 3b750224d..150d02b97 100644 --- a/po/el.po +++ b/po/el.po @@ -1,4 +1,3 @@ -# translation of gnome-shell.po.master.po to Greek # Greek translation for gnome-shell. # Copyright (C) 2009 gnome-shell's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-shell package. @@ -9,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell.po.master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-31 23:35+0300\n" -"PO-Revision-Date: 2010-08-31 23:29+0200\n" -"Last-Translator: Michael Kotsarinis \n" +"POT-Creation-Date: 2011-01-15 11:50+0200\n" +"PO-Revision-Date: 2011-01-15 11:48+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" @@ -21,20 +21,12 @@ msgstr "" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" -msgstr "Κέλυφος GNOME" +msgstr "GNOME Shell" #: ../data/gnome-shell.desktop.in.in.h:2 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 " @@ -44,72 +36,53 @@ 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." msgstr "" -"Οι επεκτάσεις του κελύφους του GNOME έχουν μια ιδιότητα uuid. Αυτό το κλειδί " +"Οι επεκτάσεις του GNOME Shell έχουν μια ιδιότητα 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 "If true, display date in the clock, in addition to time." +msgstr "Αν αληθές, εμφανίζει την ημερομηνία στο ρολόι επιπλέον της ώρας." + #: ../data/org.gnome.shell.gschema.xml.in.h:8 -msgid "Hour format" -msgstr "Μορφή ώρας" +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 "" -"Αν αληθές και η μορφοποίηση είναι «12-ωρο» ή «24-ωρο», εμφανίζει τη ημερομηνία " -"στο ρολόι επιπλέον της ώρας." - -#: ../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-ωρο» ή «24-ωρο», εμφανίζει δευτερόλεπτα " -"στην ώρα." - -#: ../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 +#: ../data/org.gnome.shell.gschema.xml.in.h:10 msgid "List of desktop file IDs for favorite applications" msgstr "Λίστα ID αρχείων επιφάνειας εργασίας για προτιμώμενες εφαρμογές" -#: ../data/org.gnome.shell.gschema.xml.in.h:13 -msgid "Overview workspace view mode" -msgstr "Κατάσταση προβολής επισκόπησης του χώρου εργασίας" - -#: ../data/org.gnome.shell.gschema.xml.in.h:14 +#: ../data/org.gnome.shell.gschema.xml.in.h:11 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 " @@ -123,35 +96,35 @@ msgstr "" "Ορίζει το δίαυλο του GStreamer που θα χρησιμοποιηθεί για την κωδικοποίηση " "των εγγραφών. Ακολουθεί το συντακτικό που χρησιμοποιείται για το gst-launch. " "Ο δίαυλος θα πρέπει να έχει έναν μη συνδεδεμένο απαγωγέα όπου θα εγγράφεται " -"το καταγραφέν βίντεο. Φυσιολογικά θα έχει μια μη συνδεδεμένη πηγή. Η έξοδος " +"το καταγραφέα βίντεο. Φυσιολογικά θα έχει μια μη συνδεδεμένη πηγή. Η έξοδος " "της πηγής θα εγγράφεται στο αρχείο εξόδου. Όμως, ο δίαυλος μπορεί να " -"επιληφθεί της δικής του εξόδου - αυτό μπορεί να χρησιμποιηθεί για την " -"αποστολή της εξόσου σε έναν διακομιστή icecast μέσω του shout2send ή κάποιου " +"επιληφθεί της δικής του εξόδου - αυτό μπορεί να χρησιμοποιηθεί για την " +"αποστολή της εξόδου σε έναν διακομιστή icecast μέσω του shout2send ή κάποιου " "παρόμοιου. Όταν δεν έχει ορισθεί ή έχει ορισθεί σε κενή τιμή, θα " "χρησιμοποιηθεί ο προεπιλεγμένος δίαυλος. Αυτός είναι αυτή τη στιγμή ο " "'videorate ! theoraenc ! oggmux' και εγγράφει σε Ogg Theora." -#: ../data/org.gnome.shell.gschema.xml.in.h:15 +#: ../data/org.gnome.shell.gschema.xml.in.h:12 msgid "Show date in clock" msgstr "Εμφάνιση ημερομηνίας στο ρολόι" -#: ../data/org.gnome.shell.gschema.xml.in.h:16 +#: ../data/org.gnome.shell.gschema.xml.in.h:13 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:14 msgid "Show time with seconds" msgstr "Εμφάνιση ώρας με δευτερόλεπτα" -#: ../data/org.gnome.shell.gschema.xml.in.h:18 +#: ../data/org.gnome.shell.gschema.xml.in.h:15 msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." msgstr "" -"Οι εφαρμογές που αντιστοιχούν σε αυτούς τους ταυτοποιητές θα εμφανισθούν " -"στην περιοχή αγαπημένων." +"Οι εφαρμογές που αντιστοιχούν σε αυτά τα αναγνωριστικά θα εμφανισθούν στην " +"περιοχή αγαπημένων." -#: ../data/org.gnome.shell.gschema.xml.in.h:19 +#: ../data/org.gnome.shell.gschema.xml.in.h:16 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 " @@ -161,29 +134,21 @@ msgstr "" "βασισμένο στην τρέχουσα ημερομηνία και θα χρησιμοποιεί αυτή την επέκταση. Θα " "πρέπει να αλλάζει όταν γίνεται εγγραφή σε διαφορετικό πρότυπο περιέκτη." -#: ../data/org.gnome.shell.gschema.xml.in.h:20 +#: ../data/org.gnome.shell.gschema.xml.in.h:17 msgid "" "The framerate of the resulting screencast recordered by GNOME Shell's " "screencast recorder in frames-per-second." msgstr "" -"Ο ρυθμός καρέ του στιγμιοτύπου που παράγεται από τον εγγραφέα στιγμιοτύπων " -"οθόνης του Κελύφους του GNOME σε καρέ ανά δευτερόλεπτο." +"Ο ρυθμός καρέ του στιγμιότυπου που παράγεται από τον εγγραφέα στιγμιοτύπων " +"οθόνης του GNOME Shell σε καρέ ανά δευτερόλεπτο." -#: ../data/org.gnome.shell.gschema.xml.in.h:21 +#: ../data/org.gnome.shell.gschema.xml.in.h:18 msgid "The gstreamer pipeline used to encode the screencast" 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:19 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 " @@ -193,356 +158,815 @@ 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\", το ρολόι θα εμφανίζει την ώρα σε δευτερόλεπτα " -"από την ημερομηνία αναφοράς, δηλαδή την 01-01-1970. Αν ορισθεί σε \"custom" -"\", το ρολόι θα εμφανίζει την ώρα σύμφωνα με τη μορφοποίηση που ορίζεται στο " -"κλειδί custom_format. Σημειώστε ότι αν το κλειδί ορισθεί σε \"unix\" ή " -"\"custom\", τα κλειδιά show_date και show_seconds αγνοούνται." - -#: ../data/org.gnome.shell.gschema.xml.in.h:26 +#: ../data/org.gnome.shell.gschema.xml.in.h:20 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:21 msgid "Whether to collect stats about applications usage" msgstr "Εάν θα συλλέγονται στατιστικά χρήσης των εφαρμογών" -#: ../data/clock-preferences.ui.h:1 -msgid "Clock Format" -msgstr "Μορφή ρολογιού" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 +msgid "Clip the crosshairs at the center" +msgstr "Περικοπή του σκοπεύτρου στο κέντρο" -#: ../data/clock-preferences.ui.h:2 -msgid "Clock Preferences" -msgstr "Προτιμήσεις ρολογιού" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:2 +msgid "Color of the crosshairs" +msgstr "Χρώμα του σκόπευτρου" -#: ../data/clock-preferences.ui.h:3 -msgid "Panel Display" -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/clock-preferences.ui.h:4 -msgid "Show seco_nds" -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." +msgstr "" -#: ../data/clock-preferences.ui.h:5 -msgid "Show the _date" -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 "" -#: ../data/clock-preferences.ui.h:6 -msgid "_12 hour format" -msgstr "Μορφή _12 ωρών" +#: ../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/clock-preferences.ui.h:7 -msgid "_24 hour format" -msgstr "Μορφή _24 ωρών" +#: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:7 +msgid "Enable lens mode" +msgstr "Ενεργοποίηση λειτουργίας φακού" -#. **** Applications **** -#: ../js/ui/appDisplay.js:384 ../js/ui/dash.js:778 +#: ../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 +#, fuzzy +msgid "Could not parse command:" +msgstr "Παρακαλώ εισάγετε μία εντολή:" + +#: ../js/misc/util.js:130 +#, fuzzy +msgid "No such application" +msgstr "Εφαρμογές" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Η εκτέλεση του '%s' απέτυχε:" + +#. Translators: Filter to display all applications +#: ../js/ui/appDisplay.js:155 +msgid "All" +msgstr "Όλα" + +#: ../js/ui/appDisplay.js:236 msgid "APPLICATIONS" msgstr "ΕΦΑΡΜΟΓΕΣ" -#: ../js/ui/appDisplay.js:416 +#: ../js/ui/appDisplay.js:266 msgid "PREFERENCES" msgstr "ΠΡΟΤΙΜΗΣΕΙΣ" -#: ../js/ui/appDisplay.js:721 +#: ../js/ui/appDisplay.js:563 msgid "New Window" msgstr "Νέο παράθυρο" -#: ../js/ui/appDisplay.js:725 +#: ../js/ui/appDisplay.js:567 msgid "Remove from Favorites" msgstr "Αφαίρεση από τα αγαπημένα" -#: ../js/ui/appDisplay.js:726 +#: ../js/ui/appDisplay.js:568 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 "Εύρεση" +#: ../js/ui/dash.js:27 +msgid "Remove" +msgstr "Απομάκρυνση" -#: ../js/ui/dash.js:473 -msgid "Searching..." -msgstr "Αναζήτηση..." - -#: ../js/ui/dash.js:487 -msgid "No matching results." -msgstr "Δεν βρέθηκαν ταιριάσματα." - -#. **** 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 "ΤΟΠΟΘΕΣΙΕΣ $ ΣΥΣΚΕΥΕΣ" - -#. **** Documents **** -#: ../js/ui/dash.js:804 ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "ΠΡΟΣΦΑΤΑ ΑΝΤΙΚΕΙΜΕΝΑ" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/endSessionDialog.js:63 +#, fuzzy, c-format +msgid "Log Out %s" +msgstr "Αποσύνδεση..." + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +#, fuzzy +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 "" + +#: ../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 "Τερματισμός..." + +#: ../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:469 +msgid "Cancel" +msgstr "Ακύρωση" + +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "Δεν υπάρχουν εγκατεστημένες επεκτάσεις" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "Ενεργοποιημένο" -#: ../js/ui/lookingGlass.js:591 +#. translators: +#. * The device has been disabled +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Απενεργοποιημένο" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "Σφάλμα" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "Μη ενημερωμένο" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "Προβολή πηγής" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "Ιστοσελίδα" -#: ../js/ui/overview.js:160 +#: ../js/ui/messageTray.js:1748 +#, fuzzy +msgid "System Information" +msgstr "Ρυθμίσεις συστήματος" + +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "Αναίρεση" +#: ../js/ui/overview.js:140 +msgid "Windows" +msgstr "Παράθυρα" + +#: ../js/ui/overview.js:143 +msgid "Applications" +msgstr "Εφαρμογές" + #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:473 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "Έξοδος %s" -#: ../js/ui/panel.js:498 -msgid "Preferences" -msgstr "Προτιμήσεις" - #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:584 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R:%S" -#: ../js/ui/panel.js:585 +#: ../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:589 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R%a %R:%S" -#: ../js/ui/panel.js:590 +#: ../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:597 +#: ../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:598 +#: ../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:602 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:603 +#: ../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:748 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "Δραστηριότητες" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "Αποτυχία αποπροσάρτησης '%s'" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "Προσπάθεια ξανά" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 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 "ON" +#: ../js/ui/placeDisplay.js:559 +msgid "PLACES & DEVICES" +msgstr "ΤΟΠΟΘΕΣΙΕΣ $ ΣΥΣΚΕΥΕΣ" -#: ../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:33 +msgid "toggle-switch-us" +msgstr "toggle-switch-us" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "Παρακαλώ εισάγετε μία εντολή:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Η εκτέλεση του '%s' απέτυχε:" - -#: ../js/ui/statusMenu.js:91 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Διαθέσιμος" -#: ../js/ui/statusMenu.js:95 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Απασχολημένος" -#: ../js/ui/statusMenu.js:99 -msgid "Invisible" -msgstr "Αόρατος" +#: ../js/ui/statusMenu.js:115 +msgid "My Account" +msgstr "Ο λογαριασμός μου" -#: ../js/ui/statusMenu.js:106 -msgid "Account Information..." -msgstr "Πληροφορίες λογαριασμού..." +#: ../js/ui/statusMenu.js:119 +msgid "System Settings" +msgstr "Ρυθμίσεις συστήματος" -#: ../js/ui/statusMenu.js:110 -msgid "System Preferences..." -msgstr "Προστιμήσεις συστήματος..." - -#: ../js/ui/statusMenu.js:117 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Κλείδωμα οθόνης" -#: ../js/ui/statusMenu.js:121 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Αλλαγή χρήστη" -#: ../js/ui/statusMenu.js:126 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "Αποσύνδεση..." -#: ../js/ui/statusMenu.js:130 +#: ../js/ui/statusMenu.js:142 +msgid "Suspend..." +msgstr "Αναστολή..." + +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "Τερματισμός..." +#: ../js/ui/status/accessibility.js:83 +msgid "Zoom" +msgstr "Εστίαση" + +#: ../js/ui/status/accessibility.js:89 +msgid "Screen Reader" +msgstr "Αναγνώστης οθόνης" + +#: ../js/ui/status/accessibility.js:92 +msgid "Screen Keyboard" +msgstr "Πληκτρολόγιο οθόνης" + +#: ../js/ui/status/accessibility.js:95 +msgid "Visual Alerts" +msgstr "Οπτικές ειδοποιήσεις" + +#: ../js/ui/status/accessibility.js:98 +msgid "Sticky Keys" +msgstr "Κολλώδης πλήκτρα" + +#: ../js/ui/status/accessibility.js:101 +msgid "Slow Keys" +msgstr "Αργά πλήκτρα" + +#: ../js/ui/status/accessibility.js:104 +msgid "Bounce Keys" +msgstr "Πλήκτρα αναπήδησης" + +#: ../js/ui/status/accessibility.js:107 +msgid "Mouse Keys" +msgstr "Πλήκτρα ποντικιού" + +#: ../js/ui/status/accessibility.js:111 +msgid "Universal Access Settings" +msgstr "Ρυθμίσεις καθολικής πρόσβασης" + +#: ../js/ui/status/accessibility.js:163 +msgid "High Contrast" +msgstr "Υψηλή αντίθεση" + +#: ../js/ui/status/accessibility.js:205 +msgid "Large Text" +msgstr "Μεγάλο κείμενο" + +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +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:94 +msgid "Bluetooth Settings" +msgstr "Ρυθμίσεις Bluetooth" + +#: ../js/ui/status/bluetooth.js:191 +msgid "Connection" +msgstr "Σύνδεση" + +#: ../js/ui/status/bluetooth.js:227 +msgid "Send Files..." +msgstr "Αποστολή αρχείων..." + +#: ../js/ui/status/bluetooth.js:232 +msgid "Browse Files..." +msgstr "Εξερεύνηση αρχείων..." + +#: ../js/ui/status/bluetooth.js:241 +msgid "Error browsing device" +msgstr "Σφάλμα περιήγησης συσκευής" + +#: ../js/ui/status/bluetooth.js:242 +#, 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 +msgid "Keyboard Settings" +msgstr "Ρυθμίσεις πληκτρολογίου" + +#: ../js/ui/status/bluetooth.js:255 +msgid "Mouse Settings" +msgstr "Ρυθμίσεις ποντικιού" + +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 +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 +#, c-format +msgid "Authorization request from %s" +msgstr "Αίτηση διαπίστευσης από %s" + +#: ../js/ui/status/bluetooth.js:377 +#, c-format +msgid "Device %s wants access to the service '%s'" +msgstr "Η συσκευή %s επιθυμεί πρόσβαση στην υπηρεσία '%s'" + +#: ../js/ui/status/bluetooth.js:379 +msgid "Always grant access" +msgstr "Να επιτρέπεται πάντα η πρόσβαση" + +#: ../js/ui/status/bluetooth.js:380 +msgid "Grant this time only" +msgstr "Μόνο για αυτή τη φορά" + +#: ../js/ui/status/bluetooth.js:381 +msgid "Reject" +msgstr "Απόρριψη" + +#: ../js/ui/status/bluetooth.js:411 +#, c-format +msgid "Pairing confirmation for %s" +msgstr "Επιβεβαίωση σύζευξης για %s" + +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 +#, c-format +msgid "Device %s wants to pair with this computer" +msgstr "Η συσκευή %s επιθυμεί να συνδεθεί με αυτόν τον υπολογιστή" + +#: ../js/ui/status/bluetooth.js:418 +#, c-format +msgid "Please confirm whether the PIN '%s' matches the one on the device." +msgstr "Παρακαλώ επιβεβαιώστε αν το PIN '%s' ταιριάζει με αυτό στη συσκευή." + +#: ../js/ui/status/bluetooth.js:420 +msgid "Matches" +msgstr "Ταιριάζει" + +#: ../js/ui/status/bluetooth.js:421 +msgid "Does not match" +msgstr "Δεν ταιριάζει" + +#: ../js/ui/status/bluetooth.js:444 +#, c-format +msgid "Pairing request for %s" +msgstr "Αίτηση σύζευξης για %s" + +#: ../js/ui/status/bluetooth.js:452 +msgid "Please enter the PIN mentioned on the device." +msgstr "Παρακαλώ εισάγετε το PIN που αναφέρεται στην συσκευή" + +#: ../js/ui/status/bluetooth.js:468 +msgid "OK" +msgstr "ΟΚ" + +#: ../js/ui/status/power.js:85 +msgid "Power Settings" +msgstr "Ρυθμίσεις τροφοδοσίας" + +#: ../js/ui/status/power.js:112 +#, 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:115 +#, c-format +msgid "%d %s %d %s remaining" +msgstr "Απομένουν %d %s %d %s " + +#: ../js/ui/status/power.js:117 +msgid "hour" +msgid_plural "hours" +msgstr[0] "ώρα" +msgstr[1] "ώρες" + +#: ../js/ui/status/power.js:117 +msgid "minute" +msgid_plural "minutes" +msgstr[0] "λεπτό" +msgstr[1] "λεπτά" + +#: ../js/ui/status/power.js:120 +#, c-format +msgid "%d minute remaining" +msgid_plural "%d minutes remaining" +msgstr[0] "%d λεπτό απομένει" +msgstr[1] "%d λεπτά απομένουν" + +#: ../js/ui/status/power.js:235 +msgid "AC adapter" +msgstr "Τροφοδοσία AC" + +#: ../js/ui/status/power.js:237 +msgid "Laptop battery" +msgstr "Μπαταρία φορητού" + +#: ../js/ui/status/power.js:239 +msgid "UPS" +msgstr "UPS" + +#: ../js/ui/status/power.js:241 +msgid "Monitor" +msgstr "Οθόνη" + +#: ../js/ui/status/power.js:243 +msgid "Mouse" +msgstr "Ποντίκι" + +#: ../js/ui/status/power.js:245 +msgid "Keyboard" +msgstr "Πληκτρολόγιο" + +#: ../js/ui/status/power.js:247 +msgid "PDA" +msgstr "PDA" + +#: ../js/ui/status/power.js:249 +msgid "Cell phone" +msgstr "Κινητό" + +#: ../js/ui/status/power.js:251 +msgid "Media player" +msgstr "Αναπαραγωγή πολυμέσων" + +#: ../js/ui/status/power.js:253 +msgid "Tablet" +msgstr "Ταμπλέτα" + +#: ../js/ui/status/power.js:255 +msgid "Computer" +msgstr "Υπολογιστής" + +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 +msgid "Unknown" +msgstr "Άγνωστο" + +#: ../js/ui/status/volume.js:42 +msgid "Volume" +msgstr "Ένταση ήχου" + +#: ../js/ui/status/volume.js:55 +msgid "Microphone" +msgstr "Μικρόφωνο" + +#: ../js/ui/telepathyClient.js:561 +#, c-format +msgid "%s is online." +msgstr "Ο/η %s είναι συνδεδεμένος" + +#: ../js/ui/telepathyClient.js:566 +#, c-format +msgid "%s is offline." +msgstr "Ο/η %s είναι αποσυνδεδεμένος" + +#: ../js/ui/telepathyClient.js:569 +#, c-format +msgid "%s is away." +msgstr "Ο/η '%s' είναι εκτός. " + +#: ../js/ui/telepathyClient.js:572 +#, 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:666 +#, no-c-format +msgid "Sent at %X on %A" +msgstr "Στάλθηκε στις %A και ώρα %X" + +#: ../js/ui/viewSelector.js:26 +msgid "Search your computer" +msgstr "Αναζήτηση στον υπολογιστή σας" + #: ../js/ui/windowAttentionHandler.js:43 #, c-format msgid "%s has finished starting" -msgstr "%s ολοκλήρωσε την εκκίνηση " +msgstr "Το %s ολοκλήρωσε την εκκίνηση " #: ../js/ui/windowAttentionHandler.js:45 #, c-format msgid "'%s' is ready" msgstr "Το '%s' είναι έτοιμο" -#: ../js/ui/workspacesView.js:230 +#: ../js/ui/workspacesView.js:244 msgid "" "Can't add a new workspace because maximum workspaces limit has been reached." msgstr "" "Αδυναμία προσθήκης νέου χώρου εργασίας επειδή έχετε φτάσει το μέγιστο αριθμό " "χώρων εργασίας." -#: ../js/ui/workspacesView.js:247 +#: ../js/ui/workspacesView.js:260 msgid "Can't remove the first workspace." msgstr "Δεν είναι δυνατή η αφαίρεση του πρώτου χώρου εργασίας." -#: ../src/shell-global.c:1105 +#. 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 έξοδοι" + +#. 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/gvc/gvc-mixer-control.c:1402 +msgid "System Sounds" +msgstr "Ήχοι συστήματος" + +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "Λιγότερο από ένα λεπτό πριν" -#: ../src/shell-global.c:1109 +#: ../src/shell-global.c:1237 #, 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:1242 #, 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:1247 #, 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:1252 #, 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-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 "Αναζήτηση" @@ -551,42 +975,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" - -#~ msgid "Sidebar" -#~ msgstr "Πλευρική στήλη" - -#~ msgid "Applications" -#~ msgstr "Εφαρμογές" - -#~ msgid "Recent Documents" -#~ msgstr "Πρόσφατα έγγραφα" - -#~ msgid "More" -#~ msgstr "Περισσότερα" - -#~ msgid "(see all)" -#~ msgstr "(εμφάνιση όλων)" - -#~ msgid "PLACES" -#~ msgstr "ΤΟΠΟΘΕΣΙΕΣ" - -#~ msgid "SEARCH RESULTS" -#~ msgstr "ΑΠΟΤΕΛΕΣΜΑΤΑ ΑΝΑΖΗΤΗΣΗΣ" - -#~ msgid "Unknown" -#~ msgstr "Άγνωστο" - -#~ msgid "Can't lock screen: %s" -#~ msgstr "Αδύνατο το κλείδωμα της οθόνης: %s" - -#~ msgid "Can't temporarily set screensaver to blank screen: %s" -#~ msgstr "" -#~ "Δεν είναι δυνατή η προσωρινή ρύθμιση της προστασίας οθόνης σε κενή οθόνη: " -#~ "%s" - -#~ msgid "Can't logout: %s" -#~ msgstr "Αδύνατη η αποσύνδεση: %s" From 343c1133f4d4dd246c95fc16ba3f6db4d1aa8fb7 Mon Sep 17 00:00:00 2001 From: Kjartan Maraas Date: Sat, 15 Jan 2011 12:44:30 +0100 Subject: [PATCH 109/132] =?UTF-8?q?Updated=20Norwegian=20bokm=C3=A5l=20tra?= =?UTF-8?q?nslation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- po/nb.po | 285 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 182 insertions(+), 103 deletions(-) diff --git a/po/nb.po b/po/nb.po index 675252d5e..2cf41fc43 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-01-04 19:39+0100\n" -"PO-Revision-Date: 2011-01-04 19:43+0100\n" +"POT-Creation-Date: 2011-01-15 12:41+0100\n" +"PO-Revision-Date: 2011-01-15 12:44+0100\n" "Last-Translator: Torstein Adolf Winterseth \n" "Language-Team: Norwegian Bokmål \n" "Language: \n" @@ -261,6 +261,21 @@ msgstr "" 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 +msgid "Could not parse command:" +msgstr "Klarte ikke å lese kommando:" + +#: ../js/misc/util.js:130 +msgid "No such application" +msgstr "Programmet finnes ikke" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Kjøring av «%s» feilet:" + #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:155 msgid "All" @@ -300,118 +315,191 @@ msgstr "%s ble fjernet fra dine favoritter." msgid "Remove" msgstr "Fjern" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "SISTE OPPFØRINGER" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Logg ut %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Logg ut …" + +#: ../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 vil bli logget ut automatisk om %d sekunder." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "Du vil bli logget ut automatisk om %d sekunder." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Logger ut av systemet" + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Avslutt" + +#: ../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 "Systemet vil slås av automatisk om %d sekunder." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Slår av systemet." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Start på nytt" + +#: ../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 "Systemet vil starte på nytt automatisk om %d sekunder." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Starter systemet på nytt." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Bekreft" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "Avbryt" + +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "Ingen utvidelser installert" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "Aktivert" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Deaktivert" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "Feil" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "Utdatert" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "Vis kildekode" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "Nettside" -#: ../js/ui/overview.js:96 +#: ../js/ui/messageTray.js:1748 +msgid "System Information" +msgstr "Systeminformasjon" + +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "Angre" -#: ../js/ui/overview.js:158 +#: ../js/ui/overview.js:140 msgid "Windows" msgstr "Vinduer" -#: ../js/ui/overview.js:161 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "Programmer" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:476 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "Avslutt %s" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:561 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %e %b, %R.%S" -#: ../js/ui/panel.js:562 +#: ../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:566 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R.%S" -#: ../js/ui/panel.js:567 +#: ../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:574 +#: ../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:575 +#: ../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:579 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %l.%M.%S %p" -#: ../js/ui/panel.js:580 +#: ../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:725 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "Aktiviteter" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "Klarte ikke å avmontere «%s»" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "Prøv igjen" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "Koble til …" -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "STEDER & ENHETER" @@ -424,84 +512,79 @@ msgstr "STEDER & ENHETER" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "Oppgi en kommando:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Kjøring av «%s» feilet:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Tilgjengelig" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Opptatt" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "Min konto" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "Systeminnstillinger" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Lås skjerm" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Bytt bruker" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "Logg ut …" -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "Hvilemodus …" -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "Avslutt …" -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "Zoom" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "Skjermleser" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "Tastatur på skjermen" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "Synlig varsling" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "Klebrige taster" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "Trege taster" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "Spretne taster" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "Mustaster" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "Innstillinger for tilgjengelighet" @@ -513,7 +596,7 @@ msgstr "Høy kontrast" msgid "Large Text" msgstr "Stor tekst" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 msgid "Bluetooth" msgstr "Bluetooth" @@ -533,106 +616,102 @@ msgstr "Sett opp en ny enhet..." msgid "Bluetooth Settings" msgstr "Innstillinger for Bluetooth" -#: ../js/ui/status/bluetooth.js:185 +#: ../js/ui/status/bluetooth.js:191 msgid "Connection" msgstr "Tilkobling" -#: ../js/ui/status/bluetooth.js:221 +#: ../js/ui/status/bluetooth.js:227 msgid "Send Files..." msgstr "Send filer..." -#: ../js/ui/status/bluetooth.js:226 +#: ../js/ui/status/bluetooth.js:232 msgid "Browse Files..." msgstr "Bla gjennom filer..." -#: ../js/ui/status/bluetooth.js:235 +#: ../js/ui/status/bluetooth.js:241 msgid "Error browsing device" msgstr "Feil under lesing av enhet" -#: ../js/ui/status/bluetooth.js:236 +#: ../js/ui/status/bluetooth.js:242 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "Kan ikke bla gjennom forespurt enhet. Feilen er «%s»" -#: ../js/ui/status/bluetooth.js:244 +#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "Innstillinger for tastatur" -#: ../js/ui/status/bluetooth.js:249 +#: ../js/ui/status/bluetooth.js:255 msgid "Mouse Settings" msgstr "Innstillinger for mus" -#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Innstillinger for lyd" -#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 -#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 +#: ../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-agent" -#: ../js/ui/status/bluetooth.js:362 +#: ../js/ui/status/bluetooth.js:371 #, c-format msgid "Authorization request from %s" msgstr "Forespørsel om autorisering fra %s" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:377 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "Enhet %s vil ha tilgang til tjenesten «%s»" -#: ../js/ui/status/bluetooth.js:370 +#: ../js/ui/status/bluetooth.js:379 msgid "Always grant access" msgstr "Alltid gi tilgang" -#: ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:380 msgid "Grant this time only" msgstr "Gi tilgang kun denne ene gangen" -#: ../js/ui/status/bluetooth.js:372 +#: ../js/ui/status/bluetooth.js:381 msgid "Reject" msgstr "Avvis" -#: ../js/ui/status/bluetooth.js:402 +#: ../js/ui/status/bluetooth.js:411 #, c-format msgid "Pairing confirmation for %s" msgstr "Bekreftelse for tilkobling for %s" -#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 #, c-format msgid "Device %s wants to pair with this computer" msgstr "Enhet %s vil koble seg sammen med denne datamaskinen" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:418 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Vennligst bekreft om PIN «%s» er lik den som brukes på enheten." -#: ../js/ui/status/bluetooth.js:411 +#: ../js/ui/status/bluetooth.js:420 msgid "Matches" msgstr "Stemmer overens" -#: ../js/ui/status/bluetooth.js:412 +#: ../js/ui/status/bluetooth.js:421 msgid "Does not match" msgstr "Stemmer ikke overens" -#: ../js/ui/status/bluetooth.js:435 +#: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Pairing request for %s" msgstr "Forespørsel om tilkobling for %s" -#: ../js/ui/status/bluetooth.js:443 +#: ../js/ui/status/bluetooth.js:452 msgid "Please enter the PIN mentioned on the device." msgstr "Vennligst oppgi PIN som oppgitt på enheten." -#: ../js/ui/status/bluetooth.js:459 +#: ../js/ui/status/bluetooth.js:468 msgid "OK" msgstr "OK" -#: ../js/ui/status/bluetooth.js:460 -msgid "Cancel" -msgstr "Avbryt" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Innstillinger for strøm" @@ -669,78 +748,78 @@ msgid_plural "%d minutes remaining" msgstr[0] "%d minutt gjenstår" msgstr[1] "%d minutter gjenstår" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "Strømadapter" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "Batteri på bærbar" -#: ../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 "Skjerm" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "Mus" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "Tastatur" -#: ../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 "Mobiltelefon" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "Medieavspiller" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "Nettbrett" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "Datamaskin" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Ukjent" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Volum" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "Mikrofon" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:561 #, c-format msgid "%s is online." msgstr "%s er tilkoblet." -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:566 #, c-format msgid "%s is offline." msgstr "%s er frakoblet." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:569 #, c-format msgid "%s is away." msgstr "«%s» er borte." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:572 #, c-format msgid "%s is busy." msgstr "%s er opptatt." @@ -748,7 +827,7 @@ msgstr "%s er opptatt." #. 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:665 +#: ../js/ui/telepathyClient.js:666 #, no-c-format msgid "Sent at %X on %A" msgstr "Sendt %X på %A" @@ -800,32 +879,32 @@ msgstr[1] "%u innganger" msgid "System Sounds" msgstr "Systemlyder" -#: ../src/shell-global.c:1156 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "Mindre enn ett minutt siden" -#: ../src/shell-global.c:1160 +#: ../src/shell-global.c:1237 #, 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:1165 +#: ../src/shell-global.c:1242 #, 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:1170 +#: ../src/shell-global.c:1247 #, 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:1175 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" From 6ebd808e8bdfaa3cacbdbee3838bf0e85a0db31c Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Sat, 15 Jan 2011 21:57:31 +0100 Subject: [PATCH 110/132] [Build] Bump vala to 0.11.4 --- tools/build/gnome-shell.modules | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/build/gnome-shell.modules b/tools/build/gnome-shell.modules index ef50ccdb1..60b810723 100644 --- a/tools/build/gnome-shell.modules +++ b/tools/build/gnome-shell.modules @@ -25,10 +25,10 @@ - - + + From 108b582f0d8e2a143fd9f7d64cefa128843547bf Mon Sep 17 00:00:00 2001 From: Ivar Smolin Date: Sun, 16 Jan 2011 10:20:20 +0200 Subject: [PATCH 111/132] [l10n] Updated Estonian translation --- po/et.po | 86 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 73 insertions(+), 13 deletions(-) diff --git a/po/et.po b/po/et.po index a51bd33f8..bf15eb8e3 100644 --- a/po/et.po +++ b/po/et.po @@ -13,8 +13,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-01-04 16:17+0000\n" -"PO-Revision-Date: 2011-01-09 11:20+0200\n" +"POT-Creation-Date: 2011-01-15 00:23+0000\n" +"PO-Revision-Date: 2011-01-15 15:45+0200\n" "Last-Translator: Ivar Smolin \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" @@ -236,6 +236,18 @@ msgstr "" msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "Niitristi moodustavate püst- ja rõhtjoone laius" +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +msgid "Could not parse command:" +msgstr "Käsku pole võimalik analüüsida:" + +msgid "No such application" +msgstr "Sellist rakendust ei ole" + +#, c-format +msgid "Execution of '%s' failed:" +msgstr "'%s' käivitamine nurjus:" + #. Translators: Filter to display all applications msgid "All" msgstr "Kõik" @@ -269,6 +281,61 @@ msgstr "Eemalda" msgid "RECENT ITEMS" msgstr "Hiljutised dokumendid" +#, c-format +msgid "Log Out %s" +msgstr "Logi %s välja" + +msgid "Log Out" +msgstr "Logi välja" + +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "" + +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "" + +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "" + +msgid "Logging out of the system." +msgstr "Süsteemist väljalogimine" + +msgid "Shut Down" +msgstr "Lülita välja" + +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "" + +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "" + +msgid "Shutting down the system." +msgstr "Süsteemi seiskamine." + +msgid "Restart" +msgstr "Taaskäivita" + +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Nende rakenduste sulgemiseks ja süsteemi taaskäivitamiseks klõpsa " +"\"Taaskäivita\"." + +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "Süsteem taaskäivitatakse automaatselt %d sekundi pärast." + +msgid "Restarting the system." +msgstr "Süsteemi taaskäivitamine." + +msgid "Confirm" +msgstr "Kinnita" + +msgid "Cancel" +msgstr "Katkesta" + msgid "No extensions installed" msgstr "Ühtegi laiendust pole paigaldatud" @@ -292,6 +359,9 @@ msgstr "Kuva lähtekoodi" msgid "Web Page" msgstr "Veebileht" +msgid "System Information" +msgstr "Süsteemi andmed" + msgid "Undo" msgstr "Võta tagasi" @@ -367,10 +437,6 @@ msgstr "toggle-switch-intl" msgid "Please enter a command:" msgstr "Palun sisesta käsk:" -#, c-format -msgid "Execution of '%s' failed:" -msgstr "'%s' käivitamine nurjus:" - msgid "Available" msgstr "Saadaval" @@ -393,7 +459,7 @@ msgid "Log Out..." msgstr "Logi välja..." msgid "Suspend..." -msgstr "" +msgstr "Peata..." msgid "Shut Down..." msgstr "Lülita välja..." @@ -519,9 +585,6 @@ msgstr "Palun sisesta seadme poolt öeldav PIN-kood." msgid "OK" msgstr "Olgu" -msgid "Cancel" -msgstr "Katkesta" - msgid "Power Settings" msgstr "Toitesätted..." @@ -751,6 +814,3 @@ msgstr "%1$s: %2$s" #~ msgid "Invisible" #~ msgstr "Nähtamatu" - -#~ msgid "Account Information..." -#~ msgstr "Konto andmed..." From 2205a395e7a46ceed715b9efe45108e56d870354 Mon Sep 17 00:00:00 2001 From: A S Alam Date: Sun, 16 Jan 2011 11:08:08 +0530 Subject: [PATCH 112/132] update for translation --- po/pa.po | 364 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 231 insertions(+), 133 deletions(-) diff --git a/po/pa.po b/po/pa.po index 8236de545..ddbe5fd39 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-01-04 16:17+0000\n" -"PO-Revision-Date: 2011-01-08 08:20+0530\n" +"POT-Creation-Date: 2011-01-15 00:23+0000\n" +"PO-Revision-Date: 2011-01-16 11:07+0530\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi/Panjabi \n" "MIME-Version: 1.0\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Language: pa\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Lokalize 1.1\n" +"X-Generator: Lokalize 1.2\n" #: ../data/gnome-shell.desktop.in.in.h:1 msgid "GNOME Shell" @@ -30,7 +30,9 @@ msgstr "ਵਿੰਡੋ ਪਰਬੰਧ ਅਤੇ ਐਪਲੀਕੇਸ਼ਨ msgid "" "Allows access to internal debugging and monitoring tools using the Alt-F2 " "dialog." -msgstr "Alt-F2 ਡਾਈਲਾਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਦਰੂਨੀ ਡੀਬੱਗਿਗ ਤੇ ਮਾਨੀਟਰਿੰਗ ਟੂਲ ਵਰਤੋਂ ਕਰਨ ਲਈ ਸਹਾਇਕ ਹੈ" +msgstr "" +"Alt-F2 ਡਾਈਲਾਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਦਰੂਨੀ ਡੀਬੱਗਿਗ ਤੇ ਮਾਨੀਟਰਿੰਗ ਟੂਲ ਵਰਤੋਂ ਕਰਨ ਲਈ " +"ਸਹਾਇਕ ਹੈ" #: ../data/org.gnome.shell.gschema.xml.in.h:2 msgid "Enable internal tools useful for developers and testers from Alt-F2" @@ -49,21 +51,18 @@ msgid "" "GNOME Shell extensions have a uuid property; this key lists extensions which " "should not be loaded." msgstr "" -"ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ uuid ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ; ਇਹ ਕੁੰਜੀ ਇਕਸਟੈਨਸ਼ਨ ਦਰਸਾਉਂਦੀ ਹੈ, ਜੋ ਲੋਡ ਨਹੀਂ ਹਨ।" +"ਗਨੋਮ ਸ਼ੈਲ ਇਕਸਟੈਨਸ਼ਨ ਲਈ ਇੱਕ uuid ਵਿਸ਼ੇਸ਼ਤਾ ਹੈ; ਇਹ ਕੁੰਜੀ ਇਕਸਟੈਨਸ਼ਨ ਦਰਸਾਉਂਦੀ ਹੈ, " +"ਜੋ ਲੋਡ ਨਹੀਂ ਹਨ।" #: ../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 "" -#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " -#| "the clock, in addition to time." msgid "If true, display date in the clock, in addition to time." msgstr "ਜੇ ਸੱਚ ਹੈ ਤਾਂ, ਘੜੀ ਵਿਚ ਸਮਾਂ ਨਾਲ ਮਿਤੀ ਵੀ ਵੇਖਾਈ ਜਾਵੇਗੀ।" #: ../data/org.gnome.shell.gschema.xml.in.h:8 -#| msgid "If true, display the ISO week date in the calendar." msgid "If true, display seconds in time." msgstr "ਜੇ ਸੱਚ ਹੈ ਤਾਂ ਸਮਾਂ ਵਿੱਚ ਸਕਿੰਟ ਵੀ ਵੇਖਾਏ ਜਾਣਗੇ।" @@ -103,7 +102,8 @@ msgstr "ਸਮਾਂ ਵਿੱਚ ਸਕਿੰਟ ਵੇਖੋ" msgid "" "The applications corresponding to these identifiers will be displayed in the " "favorites area." -msgstr "ਇਹਨਾਂ ਐਂਡਟਟੀਫਾਇਰ ਨਾਲ ਸਬੰਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪਸੰਦੀਦਾ ਖੇਤਰ 'ਚ ਵੇਖਾਇਆ ਜਾਵੇਗਾ।" +msgstr "" +"ਇਹਨਾਂ ਐਂਡਟਟੀਫਾਇਰ ਨਾਲ ਸਬੰਧਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਪਸੰਦੀਦਾ ਖੇਤਰ 'ਚ ਵੇਖਾਇਆ ਜਾਵੇਗਾ।" #: ../data/org.gnome.shell.gschema.xml.in.h:16 msgid "" @@ -111,8 +111,10 @@ 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:17 @@ -120,7 +122,8 @@ 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:18 @@ -134,10 +137,13 @@ msgid "" "want to disable this for privacy reasons. Please note that doing so won't " "remove already saved data." msgstr "" -"ਸ਼ੈੱਲ ਲਗਾਤਾਰ ਸਰਗਰਮ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਕਿ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ " -"ਨੂੰ ਵੇਖਾਇਆ ਜਾ ਸਕੇ (ਜਿਵੇਂ ਕਿ ਲਾਂਚਰ ਵਿੱਚ)। ਹਾਲਾਂਕਿ ਇਹ ਡਾਟਾ ਪ੍ਰਾਈਵੇਟ ਹੀ ਰੱਖਿਆ ਜਾਵੇਗਾ, ਤਾਂ ਵੀ " -"ਜੇ ਤੁਸੀਂ ਚਾਹੋ ਤਾਂ ਇਸ ਨੂੰ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ। ਯਾਦ ਰੱਖੋ ਕਿ ਇੰਝ ਕਰਨ ਨਾਲ " -"ਪਹਿਲਾਂ ਸੰਭਾਲਿਆ ਗਿਆ ਡਾਟਾ ਹਟਾਇਆ ਨਹੀਂ ਜਾਵੇਗਾ।" +"ਸ਼ੈੱਲ ਲਗਾਤਾਰ ਸਰਗਰਮ ਐਪਲੀਕੇਸ਼ਨ ਦੀ ਨਿਗਰਾਨੀ ਕਰਦੀ ਰਹਿੰਦੀ ਹੈ ਤਾਂ ਕਿ ਸਭ ਤੋਂ ਵੱਧ " +"ਵਰਤੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ " +"ਨੂੰ ਵੇਖਾਇਆ ਜਾ ਸਕੇ (ਜਿਵੇਂ ਕਿ ਲਾਂਚਰ ਵਿੱਚ)। ਹਾਲਾਂਕਿ ਇਹ ਡਾਟਾ ਪ੍ਰਾਈਵੇਟ ਹੀ ਰੱਖਿਆ " +"ਜਾਵੇਗਾ, ਤਾਂ ਵੀ " +"ਜੇ ਤੁਸੀਂ ਚਾਹੋ ਤਾਂ ਇਸ ਨੂੰ ਸੁਰੱਖਿਆ ਕਾਰਨਾਂ ਕਰਕੇ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ। ਯਾਦ ਰੱਖੋ ਕਿ ਇੰਝ " +"ਕਰਨ ਨਾਲ ਪਹਿਲਾਂ " +"ਸੰਭਾਲਿਆ ਗਿਆ ਡਾਟਾ ਹਟਾਇਆ ਨਹੀਂ ਜਾਵੇਗਾ।" #: ../data/org.gnome.shell.gschema.xml.in.h:20 msgid "Uuids of extensions to disable" @@ -195,7 +201,8 @@ msgstr "ਲੈਨਜ਼ ਮੋਡ ਚਾਲੂ" msgid "" "Enables/disables display of crosshairs centered on the magnified mouse " "sprite." -msgstr "ਵੱਡਦਰਸ਼ੀ ਮਾਊਸ ਸਪਰਿਟ ਉੱਤੇ ਸੈਂਟਰ ਕੀਤੇ ਕਰਾਂਸਹੇਅਰ ਵੇਖਾਉਣਾ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ।" +msgstr "" +"ਵੱਡਦਰਸ਼ੀ ਮਾਊਸ ਸਪਰਿਟ ਉੱਤੇ ਸੈਂਟਰ ਕੀਤੇ ਕਰਾਂਸਹੇਅਰ ਵੇਖਾਉਣਾ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰੋ।" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:9 msgid "" @@ -203,9 +210,11 @@ msgid "" "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" @@ -254,14 +263,17 @@ 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 "ਵੱਡਦਰਸ਼ੀ ਦੀ ਤਾਕਤ ਹੈ। ੧.੦ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੋਈ ਵੀ ਨਹੀਂ। ੨.੦ ਦਾ ਮਤਲਬ ਹੈ ਆਕਾਰ ਦਾ ਦੋ ਗੁਣਾ।" +msgstr "" +"ਵੱਡਦਰਸ਼ੀ ਦੀ ਤਾਕਤ ਹੈ। ੧.੦ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਕੋਈ ਵੀ ਨਹੀਂ। ੨.੦ ਦਾ ਮਤਲਬ ਹੈ ਆਕਾਰ ਦਾ ਦੋ " +"ਗੁਣਾ।" #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:22 msgid "Thickness of the crosshairs" @@ -271,12 +283,30 @@ msgstr "ਕਰਾਂਸਹੇਅਰ ਦੀ ਮੋਟਾਈ" msgid "" "Whether the magnified view should be centered over the location of the " "system mouse and move with it." -msgstr "ਕੀ ਵੱਡਦਰਸ਼ੀ ਝਲਕ ਦੀ ਸਥਿਤੀ ਸਿਸਟਮ ਮਾਊਂਸ ਦੁਆਲੇ ਕੇਂਦਰਤ ਰਹੇ ਅਤੇ ਉਸ ਨਾਲ ਹੀ ਹਿੱਲੇ।" +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 +#| msgid "Please enter a command:" +msgid "Could not parse command:" +msgstr "ਕਮਾਂਡ ਪਾਰਸ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ:" + +#: ../js/misc/util.js:130 +#| msgid "Applications" +msgid "No such application" +msgstr "ਇੰਞ ਦੀ ਕੋਈ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:" + #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:155 msgid "All" @@ -316,118 +346,198 @@ msgstr "%s ਨੂੰ ਤੁਹਾਡੀ ਪਸੰਦ ਤੋਂ ਹਟਾਇਆ msgid "Remove" msgstr "ਹਟਾਓ" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "ਤਾਜ਼ਾ ਆਈਟਮਾਂ" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/endSessionDialog.js:63 +#, c-format +#| msgid "Log Out..." +msgid "Log Out %s" +msgstr "%s ਲਾਗਆਉਟ" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +#| msgid "Log Out..." +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..." +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..." +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:469 +msgid "Cancel" +msgstr "ਰੱਦ ਕਰੋ" + +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "ਕੋਈ ਇਕਸਟੈਨਸ਼ਨ ਇੰਸਟਾਲ ਨਹੀਂ ਹੈ" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "ਚਾਲੂ ਹੈ" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "ਬੰਦ ਹੈ" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "ਗਲਤੀ" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "ਪੁਰਾਣਾ" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "ਸਰੋਤ ਵੇਖੋ" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "ਵੈੱਬ ਪੇਜ਼" -#: ../js/ui/overview.js:96 +#: ../js/ui/messageTray.js:1748 +#| msgid "Account Information..." +msgid "System Information" +msgstr "ਸਿਸਟਮ ਜਾਣਕਾਰੀ" + +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "ਵਾਪਸ" -#: ../js/ui/overview.js:158 +#: ../js/ui/overview.js:140 msgid "Windows" msgstr "ਵਿੰਡੋ" -#: ../js/ui/overview.js:161 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "ਐਪਲੀਕੇਸ਼ਨ" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:476 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "%s ਬੰਦ ਕਰੋ" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:561 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a, %e %b %R:%S" -#: ../js/ui/panel.js:562 +#: ../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:566 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:567 +#: ../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:574 +#: ../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:575 +#: ../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:579 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %l:%M:%S %p" -#: ../js/ui/panel.js:580 +#: ../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:725 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "ਸਰਗਰਮੀਆਂ" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "'%s' ਅਣ-ਮਾਊਂਟ ਕਰਨ ਲਈ ਫੇਲ੍ਹ" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "ਮੁੜ-ਕੋਸ਼ਿਸ਼" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "...ਨਾਲ ਕੁਨੈਕਟ ਕਰੋ" -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ" @@ -440,84 +550,79 @@ msgstr "ਥਾਵਾਂ ਤੇ ਜੰਤਰ" msgid "toggle-switch-us" msgstr "toggle-switch-us" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "ਕਮਾਂਡ ਦਿਓ ਜੀ:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "'%s' ਚਲਾਉਣ ਲਈ ਫੇਲ੍ਹ:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "ਉਪਲੱਬਧ" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "ਰੁਝਿਆ" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "ਮੇਰਾ ਅਕਾਊਂਟ" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "ਸਿਸਟਮ ਸੈਟਿੰਗ" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "ਸਕਰੀਨ ਲਾਕ ਕਰੋ" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "ਯੂਜ਼ਰ ਬਦਲੋ" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." msgstr "ਲਾਗਆਉਟ..." -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "ਸਸਪੈਂਡ..." -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "ਬੰਦ ਕਰੋ..." -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "ਜ਼ੂਮ" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "ਸਕਰੀਨ ਰੀਡਰ" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "ਸਕਰੀਨ ਕੀਬੋਰਡ" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "ਦਿੱਖ ਚੇਤਾਵਨੀ" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "ਸਟਿੱਕੀ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "ਹੌਲੀ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "ਬਾਊਂਸ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "ਮਾਊਸ ਸਵਿੱਚਾਂ" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "ਯੂਨੀਵਰਸਲ ਅਸੈੱਸ ਸੈਟਿੰਗ" @@ -529,7 +634,7 @@ msgstr "ਵੱਧ ਕਨਟਰਾਸਟ" msgid "Large Text" msgstr "ਵੱਡੇ ਅੱਖਰ" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 msgid "Bluetooth" msgstr "ਬਲਿਊਟੁੱਥ" @@ -549,106 +654,102 @@ msgstr "...ਨਵਾਂ ਜੰਤਰ ਸੈਟਅੱਪ" msgid "Bluetooth Settings" msgstr "ਬਲਿਊਟੁੱਥ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:185 +#: ../js/ui/status/bluetooth.js:191 msgid "Connection" msgstr "ਕੁਨੈਕਸ਼ਨ" -#: ../js/ui/status/bluetooth.js:221 +#: ../js/ui/status/bluetooth.js:227 msgid "Send Files..." msgstr "...ਫਾਇਲਾਂ ਭੇਜੋ" -#: ../js/ui/status/bluetooth.js:226 +#: ../js/ui/status/bluetooth.js:232 msgid "Browse Files..." msgstr "...ਫਾਇਲਾਂ ਦੀ ਝਲਕ" -#: ../js/ui/status/bluetooth.js:235 +#: ../js/ui/status/bluetooth.js:241 msgid "Error browsing device" msgstr "ਜੰਤਰ ਬਰਾਊਜ਼ ਕਰਨ ਲਈ ਗਲਤੀ" -#: ../js/ui/status/bluetooth.js:236 +#: ../js/ui/status/bluetooth.js:242 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "ਮੰਗ ਕੀਤੇ ਗਏ ਜੰਤਰ ਨੂੰ ਬਰਾਊਜ਼ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ, ਗਲਤੀ ਸੀ '%s'" -#: ../js/ui/status/bluetooth.js:244 +#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "ਕੀਬੋਰਡ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:249 +#: ../js/ui/status/bluetooth.js:255 msgid "Mouse Settings" msgstr "ਮਾਊਸ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "ਸਾਊਂਡ ਸੈਟਿੰਗ" -#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 -#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 +#: ../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 "ਬਲਿਊਟੁੱਥ ਏਜੰਟ" -#: ../js/ui/status/bluetooth.js:362 +#: ../js/ui/status/bluetooth.js:371 #, c-format msgid "Authorization request from %s" msgstr "'%s' ਤੋਂ ਪਰਮਾਣਕਿਤਾ ਮੰਗ" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:377 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "ਜੰਤਰ %s ਸਰਵਿਸ '%s' ਨੂੰ ਵਰਤਣੀ ਚਾਹੁੰਦਾ ਹੈ।" -#: ../js/ui/status/bluetooth.js:370 +#: ../js/ui/status/bluetooth.js:379 msgid "Always grant access" msgstr "ਹਮੇਸ਼ਾ ਪਹੁੰਚ ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:380 msgid "Grant this time only" msgstr "ਕੇਵਲ ਇਸ ਸਮੇਂ ਹੀ ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:372 +#: ../js/ui/status/bluetooth.js:381 msgid "Reject" msgstr "ਨਾ-ਮਨਜ਼ੂਰ" -#: ../js/ui/status/bluetooth.js:402 +#: ../js/ui/status/bluetooth.js:411 #, c-format msgid "Pairing confirmation for %s" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਪੁਸ਼ਟੀ" -#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 #, c-format msgid "Device %s wants to pair with this computer" msgstr "ਜੰਤਰ %s ਇਸ ਕੰਪਿਊਟਰ ਨਾਲ ਪੇਅਰ ਹੋਣਾ ਚਾਹੁੰਦਾ ਹੈ" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:418 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "ਪੁਸ਼ਟੀ ਕਰੋ ਜੀ ਕਿ ਪਿੰਨ '%s' ਜੰਤਰ ਉੱਤੇ ਮੌਜੂਦ ਪਿੰਨ ਨਾਲ ਮਿਲਦਾ ਹੈ।" -#: ../js/ui/status/bluetooth.js:411 +#: ../js/ui/status/bluetooth.js:420 msgid "Matches" msgstr "ਮਿਲਦਾ ਹੈ" -#: ../js/ui/status/bluetooth.js:412 +#: ../js/ui/status/bluetooth.js:421 msgid "Does not match" msgstr "ਮਿਲਦਾ ਨਹੀਂ ਹੈ" -#: ../js/ui/status/bluetooth.js:435 +#: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Pairing request for %s" msgstr "%s ਲਈ ਪੇਅਰ ਕਰਨ ਦੀ ਮੰਗ" -#: ../js/ui/status/bluetooth.js:443 +#: ../js/ui/status/bluetooth.js:452 msgid "Please enter the PIN mentioned on the device." msgstr "ਜੰਤਰ ਉੱਤੇ ਦਿੱਤਾ ਗਿਆ ਪਿੰਨ ਦਿਉ ਜੀ।" -#: ../js/ui/status/bluetooth.js:459 +#: ../js/ui/status/bluetooth.js:468 msgid "OK" msgstr "ਠੀਕ ਹੈ" -#: ../js/ui/status/bluetooth.js:460 -msgid "Cancel" -msgstr "ਰੱਦ ਕਰੋ" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "ਪਾਵਰ ਸੈਟਿੰਗ" @@ -685,78 +786,78 @@ msgid_plural "%d minutes remaining" msgstr[0] "%d ਮਿੰਟ ਬਾਕੀ" msgstr[1] "%d ਮਿੰਟ ਬਾਕੀ" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "AC ਐਡਪਟਰ" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "ਲੈਪਟਾਪ ਬੈਟਰੀ" -#: ../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 "ਮਾਨੀਟਰ" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "ਮਾਊਸ" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "ਕੀਬੋਰਡ" -#: ../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 "ਸੈੱਲ ਫੋਨ" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "ਮੀਡਿਆ ਪਲੇਅਰ" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "ਟੇਬਲੇਟ" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "ਕੰਪਿਊਟਰ" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "ਅਣਜਾਣ" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "ਆਵਾਜ਼" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "ਮਾਈਕਰੋਫੋਨ" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:561 #, c-format msgid "%s is online." msgstr "%s ਆਨਲਾਈਨ ਹੈ।" -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:566 #, c-format msgid "%s is offline." msgstr "%s ਆਫਲਾਈਨ ਹੈ।" -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:569 #, c-format msgid "%s is away." msgstr "%s ਦੂਰ ਹੈ।" -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:572 #, c-format msgid "%s is busy." msgstr "%s ਰੁੱਝਿਆ/ਰੁੱਝੀ ਹੈ।" @@ -764,7 +865,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:665 +#: ../js/ui/telepathyClient.js:666 #, no-c-format msgid "Sent at %X on %A" msgstr "%2$A ਨੂੰ %1$X ਵਜੇ ਭੇਜਿਆ" @@ -784,8 +885,11 @@ 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 "ਨਵਾਂ ਵਰਕਸਪੇਸ ਜੋੜਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਕਿਉਂਕਿ ਵਰਕਸਪੇਸਾਂ ਦੀ ਵੱਧੋ-ਵੱਧ ਗਿਣਤੀ ਪੂਰੀ ਹੋ ਚੁੱਕੀ ਹੈ।" +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." @@ -813,32 +917,32 @@ msgstr[1] "%u ਇੰਪੁੱਟ" msgid "System Sounds" msgstr "ਸਿਸਟਮ ਸਾਊਂਡ" -#: ../src/shell-global.c:1156 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "ਇੱਕ ਮਿੰਟ ਤੋਂ ਘੱਟ ਚਿਰ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1160 +#: ../src/shell-global.c:1237 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "%d ਮਿੰਟ ਪਹਿਲਾਂ" msgstr[1] "%d ਮਿੰਟ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1165 +#: ../src/shell-global.c:1242 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "%d ਘੰਟਾ ਪਹਿਲਾਂ" msgstr[1] "%d ਘੰਟੇ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1170 +#: ../src/shell-global.c:1247 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "%d ਦਿਨ ਪਹਿਲਾਂ" msgstr[1] "%d ਦਿਨ ਪਹਿਲਾਂ" -#: ../src/shell-global.c:1175 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -964,12 +1068,6 @@ msgstr "%1$s: %2$s" #~ msgid "System Preferences..." #~ msgstr "ਸਿਸਟਮ ਪਸੰਦ..." -#~ msgid "Restart..." -#~ msgstr "...ਮੁੜ-ਚਾਲੂ" - -#~ msgid "Account Information..." -#~ msgstr "ਅਕਾਊਂਟ ਜਾਣਕਾਰੀ..." - #~ msgid "Sidebar" #~ msgstr "ਬਾਹੀ" From 988b515ad2d46da8b4be3a2c8a7dc3fcf5001ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Di=C3=A9guez?= Date: Sun, 16 Jan 2011 17:09:09 +0100 Subject: [PATCH 113/132] Updated Galician translations --- po/gl.po | 94 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 80 insertions(+), 14 deletions(-) diff --git a/po/gl.po b/po/gl.po index 267220e98..ddb850399 100644 --- a/po/gl.po +++ b/po/gl.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-14 16:32+0100\n" -"PO-Revision-Date: 2011-01-14 16:33+0100\n" +"POT-Creation-Date: 2011-01-16 17:04+0100\n" +"PO-Revision-Date: 2011-01-16 17:09+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -370,10 +370,83 @@ msgstr "%s foi eliminado dos seus favoritos." msgid "Remove" msgstr "Eliminar" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "ELEMENTOS RECENTES" +#: ../js/ui/endSessionDialog.js:63 +#, c-format +msgid "Log Out %s" +msgstr "Saír da sesión de %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +msgid "Log Out" +msgstr "Saír da sesión" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "" +"Prema sobre Saír da sesión para saír de estes aplicativos e pechar a sesión." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "Vaise pechar a sesión de %s de forma automática en %d segundos." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "A súa sesión pecharase automaticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Saíndo da sesión." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +msgid "Shut Down" +msgstr "Apagar" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "" +"Prema sobre Apagar para saír de estes aplicativos e apagar o computador." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "O computador apagarase automaticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Apagando o computador." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +msgid "Restart" +msgstr "Reiniciar" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Prema sobre Reiniciar para saír de estes aplicativos e reiniciar o seu " +"computador." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "O seu computador reiniciarase automaticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Reiniciando o computador." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Confirmar" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "Cancelar" + #: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "Non hai ningunha extensión instalada" @@ -408,15 +481,15 @@ msgstr "Páxina web" msgid "System Information" msgstr "Información do sistema" -#: ../js/ui/overview.js:76 +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "Desfacer" -#: ../js/ui/overview.js:141 +#: ../js/ui/overview.js:140 msgid "Windows" msgstr "Xanelas" -#: ../js/ui/overview.js:144 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "Aplicativos" @@ -623,7 +696,7 @@ msgstr "Produciuse un erro ao explorar o dispositivo" msgid "The requested device cannot be browsed, error is '%s'" msgstr "O dispositivo solicitado non pode explorarse, o erro foi «%s»" -#: ../js/ui/status/bluetooth.js:250 +#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "Configuracións do teclado" @@ -698,10 +771,6 @@ msgstr "Introduza o PIN mencionado no dispositivo." msgid "OK" msgstr "Aceptar" -#: ../js/ui/status/bluetooth.js:469 -msgid "Cancel" -msgstr "Cancelar" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Configuracións de enerxía" @@ -1025,9 +1094,6 @@ msgstr "%1$s: %2$s" #~ msgid "Invisible" #~ msgstr "Invisíbel" -#~ msgid "Restart..." -#~ msgstr "Reiniciar..." - #~ msgid "System Preferences..." #~ msgstr "Preferencias do sistema..." From f4572eedd03ea93d7a3651b1177a5b355223e73b Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Sun, 16 Jan 2011 13:34:31 +0100 Subject: [PATCH 114/132] altTab: Query the correct monitor's size We always display the appSwitcher on the primary monitor, so always query for its size rather than that of the focused one. --- js/ui/altTab.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/ui/altTab.js b/js/ui/altTab.js index b117fc840..aa0e7e246 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -875,9 +875,9 @@ AppSwitcher.prototype = { totalSpacing += this._separator.width + this._list.spacing; // We just assume the whole screen here due to weirdness happing with the passed width - let focus = global.get_focus_monitor(); + let primary = global.get_primary_monitor(); let parentPadding = this.actor.get_parent().get_theme_node().get_horizontal_padding(); - let availWidth = focus.width - parentPadding - this.actor.get_theme_node().get_horizontal_padding(); + let availWidth = primary.width - parentPadding - this.actor.get_theme_node().get_horizontal_padding(); let height = 0; for(let i = 0; i < iconSizes.length; i++) { From e67fbcdc7970d3d1a0d4a09ba723e432cf883ce2 Mon Sep 17 00:00:00 2001 From: Daniel Mustieles Date: Sun, 16 Jan 2011 21:28:21 +0100 Subject: [PATCH 115/132] Updated Spanish translation --- po/es.po | 346 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 213 insertions(+), 133 deletions(-) diff --git a/po/es.po b/po/es.po index a04b45d9a..fd320aa69 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-01-04 16:17+0000\n" -"PO-Revision-Date: 2011-01-05 12:38+0100\n" +"POT-Creation-Date: 2011-01-15 00:23+0000\n" +"PO-Revision-Date: 2011-01-16 13:26+0100\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español \n" "MIME-Version: 1.0\n" @@ -61,14 +61,10 @@ msgid "History for command (Alt-F2) dialog" msgstr "Histórico del diálogo de comandos (Alt+F2)" #: ../data/org.gnome.shell.gschema.xml.in.h:7 -#| msgid "" -#| "If true and format is either \"12-hour\" or \"24-hour\", display date in " -#| "the clock, in addition to time." msgid "If true, display date in the clock, in addition to time." msgstr "Si es cierta, muestra la fecha en el reloj, además de la hora." #: ../data/org.gnome.shell.gschema.xml.in.h:8 -#| msgid "If true, display the ISO week date in the calendar." msgid "If true, display seconds in time." msgstr "Si es cierta, muestra los segundos en la hora." @@ -92,13 +88,13 @@ msgid "" "'videorate ! theoraenc ! oggmux' and records to Ogg Theora." 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 " +"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 ! theoraenc ! oggmux» y greba en " "Ogg Theora." @@ -322,6 +318,23 @@ msgid "Width of the vertical and horizontal lines that make up the crosshairs." msgstr "" "Anchura de las líneas verticales y horizontales que conforman las cruces." +#. Replace "Error invoking GLib.shell_parse_argv: " with +#. something nicer +#: ../js/misc/util.js:108 +#| msgid "Please enter a command:" +msgid "Could not parse command:" +msgstr "No se pudo analizar el comando:" + +#: ../js/misc/util.js:130 +#| msgid "Applications" +msgid "No such application" +msgstr "No existe la aplicación" + +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#, c-format +msgid "Execution of '%s' failed:" +msgstr "Falló la ejecución de «%s»:" + #. Translators: Filter to display all applications #: ../js/ui/appDisplay.js:155 msgid "All" @@ -361,118 +374,199 @@ msgstr "Se ha quitado %s de sus favoritos." msgid "Remove" msgstr "Quitar" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "ELEMENTOS RECIENTES" -#: ../js/ui/lookingGlass.js:552 +#: ../js/ui/endSessionDialog.js:63 +#, c-format +#| msgid "Log Out..." +msgid "Log Out %s" +msgstr "Cerrar la sesión %s" + +#: ../js/ui/endSessionDialog.js:64 ../js/ui/endSessionDialog.js:69 +#| msgid "Log Out..." +msgid "Log Out" +msgstr "Cerrar la sesión" + +#: ../js/ui/endSessionDialog.js:65 +msgid "Click Log Out to quit these applications and log out of the system." +msgstr "" +"Pulse «Cerrar la sesión» para salir de esas aplicaciones y cerrar la sesión " +"del sistema." + +#: ../js/ui/endSessionDialog.js:66 +#, c-format +msgid "%s will be logged out automatically in %d seconds." +msgstr "La sesión de %s se cerrará automáticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:67 +#, c-format +msgid "You will be logged out automatically in %d seconds." +msgstr "Su sesión se cerrará automáticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:68 +msgid "Logging out of the system." +msgstr "Cerrando la sesión." + +#: ../js/ui/endSessionDialog.js:74 ../js/ui/endSessionDialog.js:78 +#| msgid "Shut Down..." +msgid "Shut Down" +msgstr "Apagar" + +#: ../js/ui/endSessionDialog.js:75 +msgid "Click Shut Down to quit these applications and shut down the system." +msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema." + +#: ../js/ui/endSessionDialog.js:76 +#, c-format +msgid "The system will shut down automatically in %d seconds." +msgstr "El sistema se apagará automáticamente en %d segundo." + +#: ../js/ui/endSessionDialog.js:77 +msgid "Shutting down the system." +msgstr "Apagando el sistema." + +#: ../js/ui/endSessionDialog.js:84 ../js/ui/endSessionDialog.js:88 +#| msgid "Restart..." +msgid "Restart" +msgstr "Reiniciar" + +#: ../js/ui/endSessionDialog.js:85 +msgid "Click Restart to quit these applications and restart the system." +msgstr "" +"Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema." + +#: ../js/ui/endSessionDialog.js:86 +#, c-format +msgid "The system will restart automatically in %d seconds." +msgstr "El sistema se reiniciará automáticamente en %d segundos." + +#: ../js/ui/endSessionDialog.js:87 +msgid "Restarting the system." +msgstr "Reiniciando el sistema." + +#: ../js/ui/endSessionDialog.js:395 +msgid "Confirm" +msgstr "Confirmar" + +#: ../js/ui/endSessionDialog.js:400 ../js/ui/status/bluetooth.js:469 +msgid "Cancel" +msgstr "Cancelar" + +#: ../js/ui/lookingGlass.js:556 msgid "No extensions installed" msgstr "No hay extensiones instaladas" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "Activado" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "Desactivado" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "Error" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "Caducado" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "Ver fuente" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "Página web" -#: ../js/ui/overview.js:96 +#: ../js/ui/messageTray.js:1748 +#| msgid "Account Information..." +msgid "System Information" +msgstr "Información del sistema" + +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "Deshacer" -#: ../js/ui/overview.js:158 +#: ../js/ui/overview.js:140 msgid "Windows" msgstr "Ventanas" -#: ../js/ui/overview.js:161 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "Aplicaciones" #. TODO - _quit() doesn't really work on apps in state STARTING yet -#: ../js/ui/panel.js:476 +#: ../js/ui/panel.js:479 #, c-format msgid "Quit %s" msgstr "Salir de %s" #. Translators: This is the time format with date used #. in 24-hour mode. -#: ../js/ui/panel.js:561 +#: ../js/ui/panel.js:564 msgid "%a %b %e, %R:%S" msgstr "%a %e de %b, %R:%S" -#: ../js/ui/panel.js:562 +#: ../js/ui/panel.js:565 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/panel.js:566 +#: ../js/ui/panel.js:569 msgid "%a %R:%S" msgstr "%a %R:%S" -#: ../js/ui/panel.js:567 +#: ../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:574 +#: ../js/ui/panel.js:577 msgid "%a %b %e, %l:%M:%S %p" msgstr "%a %e de %b, %H:%M:%S" -#: ../js/ui/panel.js:575 +#: ../js/ui/panel.js:578 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/panel.js:579 +#: ../js/ui/panel.js:582 msgid "%a %l:%M:%S %p" msgstr "%a %H:%M:%S" -#: ../js/ui/panel.js:580 +#: ../js/ui/panel.js:583 msgid "%a %l:%M %p" msgstr "%a %H:%M" #. 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:725 +#: ../js/ui/panel.js:728 msgid "Activities" msgstr "Actividades" -#: ../js/ui/placeDisplay.js:111 +#: ../js/ui/placeDisplay.js:112 #, c-format msgid "Failed to unmount '%s'" msgstr "Falló al desmontar «%s»" -#: ../js/ui/placeDisplay.js:114 +#: ../js/ui/placeDisplay.js:115 msgid "Retry" msgstr "Reintentar" -#: ../js/ui/placeDisplay.js:159 +#: ../js/ui/placeDisplay.js:160 msgid "Connect to..." msgstr "Conectar a…" -#: ../js/ui/placeDisplay.js:558 +#: ../js/ui/placeDisplay.js:559 msgid "PLACES & DEVICES" msgstr "LUGARES Y DISPOSITIVOS" @@ -485,84 +579,79 @@ msgstr "LUGARES Y DISPOSITIVOS" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:233 +#: ../js/ui/runDialog.js:222 msgid "Please enter a command:" msgstr "Introduzca un comando:" -#: ../js/ui/runDialog.js:378 -#, c-format -msgid "Execution of '%s' failed:" -msgstr "Falló la ejecución de «%s»:" - -#: ../js/ui/statusMenu.js:101 +#: ../js/ui/statusMenu.js:102 msgid "Available" msgstr "Disponible" -#: ../js/ui/statusMenu.js:106 +#: ../js/ui/statusMenu.js:107 msgid "Busy" msgstr "Ocupado" -#: ../js/ui/statusMenu.js:114 +#: ../js/ui/statusMenu.js:115 msgid "My Account" msgstr "Mi cuenta" -#: ../js/ui/statusMenu.js:118 +#: ../js/ui/statusMenu.js:119 msgid "System Settings" msgstr "Configuración del sistema" -#: ../js/ui/statusMenu.js:125 +#: ../js/ui/statusMenu.js:126 msgid "Lock Screen" msgstr "Bloquear la pantalla" -#: ../js/ui/statusMenu.js:129 +#: ../js/ui/statusMenu.js:130 msgid "Switch User" msgstr "Cambiar de usuario" -#: ../js/ui/statusMenu.js:134 +#: ../js/ui/statusMenu.js:135 msgid "Log Out..." -msgstr "Salir…" +msgstr "Cerrar la sesión…" -#: ../js/ui/statusMenu.js:141 +#: ../js/ui/statusMenu.js:142 msgid "Suspend..." msgstr "Suspender…" -#: ../js/ui/statusMenu.js:145 +#: ../js/ui/statusMenu.js:146 msgid "Shut Down..." msgstr "Apagar…" -#: ../js/ui/status/accessibility.js:82 +#: ../js/ui/status/accessibility.js:83 msgid "Zoom" msgstr "Ampliación" -#: ../js/ui/status/accessibility.js:88 +#: ../js/ui/status/accessibility.js:89 msgid "Screen Reader" msgstr "Lector de pantalla" -#: ../js/ui/status/accessibility.js:91 +#: ../js/ui/status/accessibility.js:92 msgid "Screen Keyboard" msgstr "Teclado en pantalla" -#: ../js/ui/status/accessibility.js:94 +#: ../js/ui/status/accessibility.js:95 msgid "Visual Alerts" msgstr "Alertas visuales" -#: ../js/ui/status/accessibility.js:97 +#: ../js/ui/status/accessibility.js:98 msgid "Sticky Keys" msgstr "Teclas persistentes" -#: ../js/ui/status/accessibility.js:100 +#: ../js/ui/status/accessibility.js:101 msgid "Slow Keys" msgstr "Teclas lentas" -#: ../js/ui/status/accessibility.js:103 +#: ../js/ui/status/accessibility.js:104 msgid "Bounce Keys" msgstr "Rechazo de teclas" -#: ../js/ui/status/accessibility.js:106 +#: ../js/ui/status/accessibility.js:107 msgid "Mouse Keys" msgstr "Teclas del ratón" -#: ../js/ui/status/accessibility.js:110 +#: ../js/ui/status/accessibility.js:111 msgid "Universal Access Settings" msgstr "Preferencias del acceso universal" @@ -574,7 +663,7 @@ msgstr "Contraste alto" msgid "Large Text" msgstr "Texto:" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:234 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 msgid "Bluetooth" msgstr "Bluetooth" @@ -594,106 +683,102 @@ msgstr "Configurar un dispositivo nuevo…" msgid "Bluetooth Settings" msgstr "Configuración de Bluetooth" -#: ../js/ui/status/bluetooth.js:185 +#: ../js/ui/status/bluetooth.js:191 msgid "Connection" msgstr "Conexión" -#: ../js/ui/status/bluetooth.js:221 +#: ../js/ui/status/bluetooth.js:227 msgid "Send Files..." msgstr "Enviar archivos…" -#: ../js/ui/status/bluetooth.js:226 +#: ../js/ui/status/bluetooth.js:232 msgid "Browse Files..." msgstr "Examinar archivos…" -#: ../js/ui/status/bluetooth.js:235 +#: ../js/ui/status/bluetooth.js:241 msgid "Error browsing device" msgstr "Error al examinar el dispositivo" -#: ../js/ui/status/bluetooth.js:236 +#: ../js/ui/status/bluetooth.js:242 #, c-format msgid "The requested device cannot be browsed, error is '%s'" msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»" -#: ../js/ui/status/bluetooth.js:244 +#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "Configuración del teclado" -#: ../js/ui/status/bluetooth.js:249 +#: ../js/ui/status/bluetooth.js:255 msgid "Mouse Settings" msgstr "Ajustes del ratón…" -#: ../js/ui/status/bluetooth.js:256 ../js/ui/status/volume.js:62 +#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Configuración del sonido" -#: ../js/ui/status/bluetooth.js:327 ../js/ui/status/bluetooth.js:361 -#: ../js/ui/status/bluetooth.js:401 ../js/ui/status/bluetooth.js:434 +#: ../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 "Agente Bluetooth" -#: ../js/ui/status/bluetooth.js:362 +#: ../js/ui/status/bluetooth.js:371 #, c-format msgid "Authorization request from %s" msgstr "Solicitud de autorización de %s" -#: ../js/ui/status/bluetooth.js:368 +#: ../js/ui/status/bluetooth.js:377 #, c-format msgid "Device %s wants access to the service '%s'" msgstr "El dispositivo %s quiere acceder al servicio «%s»" -#: ../js/ui/status/bluetooth.js:370 +#: ../js/ui/status/bluetooth.js:379 msgid "Always grant access" msgstr "Conceder acceso siempre" -#: ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:380 msgid "Grant this time only" msgstr "Conceder sólo esta vez" -#: ../js/ui/status/bluetooth.js:372 +#: ../js/ui/status/bluetooth.js:381 msgid "Reject" msgstr "Rechazar" -#: ../js/ui/status/bluetooth.js:402 +#: ../js/ui/status/bluetooth.js:411 #, c-format msgid "Pairing confirmation for %s" msgstr "Confirmación de emparejamiento para «%s»" -#: ../js/ui/status/bluetooth.js:408 ../js/ui/status/bluetooth.js:442 +#: ../js/ui/status/bluetooth.js:417 ../js/ui/status/bluetooth.js:451 #, c-format msgid "Device %s wants to pair with this computer" msgstr "El dispositivo «%s» quiere emparejarse con este equipo" -#: ../js/ui/status/bluetooth.js:409 +#: ../js/ui/status/bluetooth.js:418 #, c-format msgid "Please confirm whether the PIN '%s' matches the one on the device." msgstr "Confirme que el PIN mostrado en «%s» coincide con el del dispositivo." -#: ../js/ui/status/bluetooth.js:411 +#: ../js/ui/status/bluetooth.js:420 msgid "Matches" msgstr "Coincide" -#: ../js/ui/status/bluetooth.js:412 +#: ../js/ui/status/bluetooth.js:421 msgid "Does not match" msgstr "No coincide" -#: ../js/ui/status/bluetooth.js:435 +#: ../js/ui/status/bluetooth.js:444 #, c-format msgid "Pairing request for %s" msgstr "Solicitud de emparejamiento para «%s»" -#: ../js/ui/status/bluetooth.js:443 +#: ../js/ui/status/bluetooth.js:452 msgid "Please enter the PIN mentioned on the device." msgstr "Introduzca el PIN mencionado en el dispositivo." -#: ../js/ui/status/bluetooth.js:459 +#: ../js/ui/status/bluetooth.js:468 msgid "OK" msgstr "Aceptar" -#: ../js/ui/status/bluetooth.js:460 -msgid "Cancel" -msgstr "Cancelar" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "Configuración de energía" @@ -730,78 +815,78 @@ msgid_plural "%d minutes remaining" msgstr[0] "Queda %d minuto" msgstr[1] "Queda %d minutos" -#: ../js/ui/status/power.js:237 +#: ../js/ui/status/power.js:235 msgid "AC adapter" msgstr "Adaptador de corriente" -#: ../js/ui/status/power.js:239 +#: ../js/ui/status/power.js:237 msgid "Laptop battery" msgstr "Batería del portátil" -#: ../js/ui/status/power.js:241 +#: ../js/ui/status/power.js:239 msgid "UPS" msgstr "SAI" -#: ../js/ui/status/power.js:243 +#: ../js/ui/status/power.js:241 msgid "Monitor" msgstr "Monitor" -#: ../js/ui/status/power.js:245 +#: ../js/ui/status/power.js:243 msgid "Mouse" msgstr "Ratón" -#: ../js/ui/status/power.js:247 +#: ../js/ui/status/power.js:245 msgid "Keyboard" msgstr "Teclado" -#: ../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 "Teléfono móvil" -#: ../js/ui/status/power.js:253 +#: ../js/ui/status/power.js:251 msgid "Media player" msgstr "Reproductor multimedia" -#: ../js/ui/status/power.js:255 +#: ../js/ui/status/power.js:253 msgid "Tablet" msgstr "Tableta" -#: ../js/ui/status/power.js:257 +#: ../js/ui/status/power.js:255 msgid "Computer" msgstr "Equipo" -#: ../js/ui/status/power.js:259 ../src/shell-app-system.c:1012 +#: ../js/ui/status/power.js:257 ../src/shell-app-system.c:1012 msgid "Unknown" msgstr "Desconocido" -#: ../js/ui/status/volume.js:41 +#: ../js/ui/status/volume.js:42 msgid "Volume" msgstr "Volumen" -#: ../js/ui/status/volume.js:54 +#: ../js/ui/status/volume.js:55 msgid "Microphone" msgstr "Micrófono" -#: ../js/ui/telepathyClient.js:560 +#: ../js/ui/telepathyClient.js:561 #, c-format msgid "%s is online." msgstr "%s está conectado/a." -#: ../js/ui/telepathyClient.js:565 +#: ../js/ui/telepathyClient.js:566 #, c-format msgid "%s is offline." msgstr "%s está desconectado/a." -#: ../js/ui/telepathyClient.js:568 +#: ../js/ui/telepathyClient.js:569 #, c-format msgid "%s is away." msgstr "%s está ausente." -#: ../js/ui/telepathyClient.js:571 +#: ../js/ui/telepathyClient.js:572 #, c-format msgid "%s is busy." msgstr "%s está ocupado/a." @@ -809,7 +894,7 @@ msgstr "%s está ocupado/a." #. 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:665 +#: ../js/ui/telepathyClient.js:666 #, no-c-format msgid "Sent at %X on %A" msgstr "Enviado a las %X el %A" @@ -861,32 +946,32 @@ msgstr[1] "%u entradas" msgid "System Sounds" msgstr "Sonidos del sistema" -#: ../src/shell-global.c:1156 +#: ../src/shell-global.c:1233 msgid "Less than a minute ago" msgstr "Hace menos de un minuto" -#: ../src/shell-global.c:1160 +#: ../src/shell-global.c:1237 #, 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:1165 +#: ../src/shell-global.c:1242 #, 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:1170 +#: ../src/shell-global.c:1247 #, 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:1175 +#: ../src/shell-global.c:1252 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -933,8 +1018,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 " @@ -951,18 +1036,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" @@ -1016,12 +1102,6 @@ msgstr "%1$s: %2$s" #~ msgid "Invisible" #~ msgstr "Invisible" -#~ msgid "Restart..." -#~ msgstr "Reiniciar…" - -#~ msgid "Account Information..." -#~ msgstr "Información de la cuenta…" - #~ msgid "ON" #~ msgstr "ENCENDIDO" From 89d89ae1cf72a95520c945114ea374dd482833b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 16 Jan 2011 20:05:10 +0100 Subject: [PATCH 116/132] places: Remove obsolete code The dash no longer contains a places section, so remove the now unused code. https://bugzilla.gnome.org/show_bug.cgi?id=639689 --- js/ui/placeDisplay.js | 144 ------------------------------------------ 1 file changed, 144 deletions(-) diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index 9b7134b89..c31bf9651 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -19,8 +19,6 @@ const Util = imports.misc.util; const NAUTILUS_PREFS_DIR = '/apps/nautilus/preferences'; const DESKTOP_IS_HOME_KEY = NAUTILUS_PREFS_DIR + '/desktop_is_home_dir'; -const PLACES_ICON_SIZE = 16; - /** * Represents a place object, which is most normally a bookmark entry, * a mount/volume, or a special place like the Home Folder, Computer, and Network. @@ -403,150 +401,8 @@ PlacesManager.prototype = { sourceArray.splice(this._lookupIndexById(sourceArray, id), 1); } }; - Signals.addSignalMethods(PlacesManager.prototype); -/** - * An entry in the places menu. - * @info The corresponding PlaceInfo to populate this entry. - */ -function DashPlaceDisplayItem(info) { - this._init(info); -} - -DashPlaceDisplayItem.prototype = { - _init: function(info) { - this.name = info.name; - this._info = info; - this._icon = info.iconFactory(PLACES_ICON_SIZE); - - this.actor = new St.Clickable({ style_class: 'places-item', - reactive: true, - x_align: St.Align.START, - x_fill: true }); - - let box = new St.BoxLayout({ style_class: 'places-item-box' }); - this.actor.set_child(box); - - let bin = new St.Bin({ child: this._icon }); - box.add(bin); - - let text = new St.Label({ text: info.name }); - box.add(text, { expand: true, x_fill: true }); - - if (info.isRemovable()) { - let removeIcon = new St.Icon({ icon_name: 'media-eject', - icon_type: St.IconType.FULLCOLOR, - icon_size: PLACES_ICON_SIZE }); - let removeIconBox = new St.Clickable({ child: removeIcon, - reactive: true }); - box.add(removeIconBox); - removeIconBox.connect('clicked', - Lang.bind(this, function() { - this._info.remove(); - })); - } - - this.actor.connect('clicked', Lang.bind(this, this._onClicked)); - - this.actor._delegate = this; - this._draggable = DND.makeDraggable(this.actor); - this._draggable.connect('drag-begin', - Lang.bind(this, function() { - Main.overview.beginItemDrag(this); - })); - this._draggable.connect('drag-end', - Lang.bind(this, function() { - Main.overview.endItemDrag(this); - })); - }, - - _onClicked: function(b) { - this._info.launch(); - Main.overview.hide(); - }, - - getDragActorSource: function() { - return this._icon; - }, - - getDragActor: function(stageX, stageY) { - return this._info.iconFactory(PLACES_ICON_SIZE); - }, - - //// Drag and drop methods //// - - shellWorkspaceLaunch: function() { - this._info.launch(); - } -}; - -function DashPlaceDisplay() { - this._init(); -} - -DashPlaceDisplay.prototype = { - _init: function() { - - // Places is divided semi-arbitrarily into left and right; a grid would - // look better in that there would be an even number of items left+right, - // but it seems like we want some sort of differentiation between actions - // like "Connect to server..." and regular folders - this.actor = new St.Table({ style_class: 'places-section', - homogeneous: true }); - - this._defaultsList = []; - this._bookmarksList = []; - this._mountsList = []; - - Main.placesManager.connect('defaults-updated', Lang.bind(this, this._updateDefaults)); - Main.placesManager.connect('bookmarks-updated', Lang.bind(this, this._updateBookmarks)); - Main.placesManager.connect('mounts-updated', Lang.bind(this, this._updateMounts)); - - this._updateDefaults(); - this._updateMounts(); - this._updateBookmarks(); - }, - - _updateDefaults: function() { - for (let i = 0; i < this._defaultsList.length; i++) - this._defaultsList[i].destroy(); - - this._defaultsList = []; - let places = Main.placesManager.getDefaultPlaces(); - for (let i = 0; i < places.length; i++) { - this._defaultsList[i] = new DashPlaceDisplayItem(places[i]).actor; - this.actor.add(this._defaultsList[i], {row: i, col: 0}); - } - this._updateMounts(); - }, - - _updateMounts: function() { - for (let i = 0; i < this._mountsList.length; i++) - this._mountsList[i].destroy(); - - this._mountsList = []; - let places = Main.placesManager.getMounts(); - for (let i = 0; i < places.length; i++) { - this._mountsList[i] = new DashPlaceDisplayItem(places[i]).actor; - this.actor.add(this._mountsList[i], {row: this._defaultsList.length + i, col: 0}); - } - }, - - _updateBookmarks: function() { - for (let i = 0; i < this._bookmarksList.length; i++) - this._bookmarksList[i].destroy(); - - this._bookmarksList = []; - let places = Main.placesManager.getBookmarks(); - for (let i = 0; i < places.length; i ++) { - this._bookmarksList[i] = new DashPlaceDisplayItem(places[i]).actor; - this.actor.add(this._bookmarksList[i], {row: i, col: 1}); - } - } -}; - -Signals.addSignalMethods(DashPlaceDisplay.prototype); function PlaceSearchProvider() { this._init(); From f91138d0a2fb1301a802d58db70587d2bfd5f2aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 16 Jan 2011 20:18:09 +0100 Subject: [PATCH 117/132] places: Port to GSettings 'Places' follows the nautilus preference of whether the Desktop should be a separate directory or the home folder should be used. Nautilus has been ported to GSettings a while ago, so follow suit. https://bugzilla.gnome.org/show_bug.cgi?id=639689 --- js/ui/placeDisplay.js | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index c31bf9651..80f632c48 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -1,6 +1,5 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ -const GConf = imports.gi.GConf; const GLib = imports.gi.GLib; const Gio = imports.gi.Gio; const Shell = imports.gi.Shell; @@ -16,8 +15,8 @@ const Main = imports.ui.main; const Search = imports.ui.search; const Util = imports.misc.util; -const NAUTILUS_PREFS_DIR = '/apps/nautilus/preferences'; -const DESKTOP_IS_HOME_KEY = NAUTILUS_PREFS_DIR + '/desktop_is_home_dir'; +const NAUTILUS_PREFS_SCHEMA = 'org.gnome.nautilus.preferences'; +const DESKTOP_IS_HOME_KEY = 'desktop-is-home-dir'; /** * Represents a place object, which is most normally a bookmark entry, @@ -122,13 +121,15 @@ function PlacesManager() { PlacesManager.prototype = { _init: function() { - let gconf = GConf.Client.get_default(); - gconf.add_dir(NAUTILUS_PREFS_DIR, GConf.ClientPreloadType.PRELOAD_NONE); - this._defaultPlaces = []; this._mounts = []; this._bookmarks = []; - this._isDesktopHome = gconf.get_bool(DESKTOP_IS_HOME_KEY); + + this._settings = new Gio.Settings({ schema: NAUTILUS_PREFS_SCHEMA }); + this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); + this._settings.connect('changed::' + DESKTOP_IS_HOME_KEY, + Lang.bind(this, + this._updateDesktopMenuVisibility)); let homeFile = Gio.file_new_for_path (GLib.get_home_dir()); let homeUri = homeFile.get_uri(); @@ -228,9 +229,6 @@ PlacesManager.prototype = { })); this._reloadBookmarks(); - - gconf.notify_add(DESKTOP_IS_HOME_KEY, Lang.bind(this, this._updateDesktopMenuVisibility)); - }, _updateDevices: function() { @@ -340,8 +338,7 @@ PlacesManager.prototype = { }, _updateDesktopMenuVisibility: function() { - let gconf = GConf.Client.get_default(); - this._isDesktopHome = gconf.get_boolean(DESKTOP_IS_HOME_KEY); + this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); if (this._isDesktopHome) this._removeById(this._defaultPlaces, 'special:desktop'); From 26aaecc33d81695dd79651b0d54a0b7810c80689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Sun, 16 Jan 2011 20:21:10 +0100 Subject: [PATCH 118/132] places: Fail gracefully when not using unstable nautilus The latest development version of nautilus has been ported to GSettings, which we now use as well for the desktop-is-home-dir preference. Obviously, the required schema is only available if a recent enough nautilus version is installed. Instead of adding yet another module to the moduleset, catch the exception and ignore the preference in case the schema is not available. https://bugzilla.gnome.org/show_bug.cgi?id=639689 --- js/ui/placeDisplay.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index 80f632c48..4bbdb06fc 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -125,11 +125,24 @@ PlacesManager.prototype = { this._mounts = []; this._bookmarks = []; - this._settings = new Gio.Settings({ schema: NAUTILUS_PREFS_SCHEMA }); - this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); - this._settings.connect('changed::' + DESKTOP_IS_HOME_KEY, - Lang.bind(this, - this._updateDesktopMenuVisibility)); + this._settings = null; + this._isDesktopHome = false; + + // The GNOME3 version of nautilus has been ported to GSettings; we + // don't require it though, so for now we'll have to deal with the + // case of GNOME3 nautilus not being installed. + try { + this._settings = new Gio.Settings({ schema: NAUTILUS_PREFS_SCHEMA }); + } catch (e) { + log('Failed to get settings from Nautilus. Places may not work as expected'); + } + + if (this._settings != null) { + this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); + this._settings.connect('changed::' + DESKTOP_IS_HOME_KEY, + Lang.bind(this, + this._updateDesktopMenuVisibility)); + } let homeFile = Gio.file_new_for_path (GLib.get_home_dir()); let homeUri = homeFile.get_uri(); From 05f9be046f75c45cb3c092559bca4ff9ad1b7d75 Mon Sep 17 00:00:00 2001 From: Luca Ferretti Date: Mon, 17 Jan 2011 21:02:03 +0100 Subject: [PATCH 119/132] BluetoothStatus: add a separator above Settings menu entry Close bug #639704 --- js/ui/status/bluetooth.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index afda1b474..2220d2520 100644 --- a/js/ui/status/bluetooth.js +++ b/js/ui/status/bluetooth.js @@ -67,7 +67,8 @@ Indicator.prototype = { this._fullMenuItems = [new PopupMenu.PopupSeparatorMenuItem(), new PopupMenu.PopupMenuItem(_("Send Files to Device...")), - new PopupMenu.PopupMenuItem(_("Setup a New Device..."))]; + new PopupMenu.PopupMenuItem(_("Setup a New Device...")), + new PopupMenu.PopupSeparatorMenuItem()]; this._hasDevices = false; this._deviceSep = this._fullMenuItems[0]; // hidden if no device exists From ad52d783bda46c408bf37c87026a94b88086a1d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 17 Jan 2011 20:52:26 +0100 Subject: [PATCH 120/132] places: Do not use nautilus' 'desktop-is-home-dir' setting g_settings_schema_new() aborts if the requested schema is not found, so the previous approach of handling the case of unstable nautilus not being installed did not work. Instead, remove the use of the setting altogether - the original intent was to not have separate items for Desktop and Home in the places section if the nautilus key was set. As the section has been removed anyway, the impact of always adding the desktop folder is minimal (e.g. searching for "desktop" will match the desktop folder even if it's set to the home folder). --- js/ui/placeDisplay.js | 41 +---------------------------------------- 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/js/ui/placeDisplay.js b/js/ui/placeDisplay.js index 4bbdb06fc..b8745b21f 100644 --- a/js/ui/placeDisplay.js +++ b/js/ui/placeDisplay.js @@ -15,9 +15,6 @@ const Main = imports.ui.main; const Search = imports.ui.search; const Util = imports.misc.util; -const NAUTILUS_PREFS_SCHEMA = 'org.gnome.nautilus.preferences'; -const DESKTOP_IS_HOME_KEY = 'desktop-is-home-dir'; - /** * Represents a place object, which is most normally a bookmark entry, * a mount/volume, or a special place like the Home Folder, Computer, and Network. @@ -125,25 +122,6 @@ PlacesManager.prototype = { this._mounts = []; this._bookmarks = []; - this._settings = null; - this._isDesktopHome = false; - - // The GNOME3 version of nautilus has been ported to GSettings; we - // don't require it though, so for now we'll have to deal with the - // case of GNOME3 nautilus not being installed. - try { - this._settings = new Gio.Settings({ schema: NAUTILUS_PREFS_SCHEMA }); - } catch (e) { - log('Failed to get settings from Nautilus. Places may not work as expected'); - } - - if (this._settings != null) { - this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); - this._settings.connect('changed::' + DESKTOP_IS_HOME_KEY, - Lang.bind(this, - this._updateDesktopMenuVisibility)); - } - let homeFile = Gio.file_new_for_path (GLib.get_home_dir()); let homeUri = homeFile.get_uri(); let homeLabel = Shell.util_get_label_for_uri (homeUri); @@ -201,10 +179,7 @@ PlacesManager.prototype = { } this._defaultPlaces.push(this._home); - - this._desktopMenuIndex = this._defaultPlaces.length; - if (!this._isDesktopHome) - this._defaultPlaces.push(this._desktopMenu); + this._defaultPlaces.push(this._desktopMenu); if (this._network) this._defaultPlaces.push(this._network); @@ -350,20 +325,6 @@ PlacesManager.prototype = { this.emit('places-updated'); }, - _updateDesktopMenuVisibility: function() { - this._isDesktopHome = this._settings.get_boolean(DESKTOP_IS_HOME_KEY); - - if (this._isDesktopHome) - this._removeById(this._defaultPlaces, 'special:desktop'); - else - this._defaultPlaces.splice(this._desktopMenuIndex, 0, - this._desktopMenu); - - /* See comment in _updateDevices for explanation why there are two signals. */ - this.emit('defaults-updated'); - this.emit('places-updated'); - }, - _addMount: function(mount) { let devItem = new PlaceDeviceInfo(mount); this._mounts.push(devItem); From 883f51be939abc63fa563aecf691135702e35d4d Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 18 Jan 2011 00:30:12 +0300 Subject: [PATCH 121/132] runDialog: use fileUtils.listDirAsync in CommandCompleter https://bugzilla.gnome.org/show_bug.cgi?id=623708 --- js/ui/runDialog.js | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js index 88c057961..6d07ee223 100644 --- a/js/ui/runDialog.js +++ b/js/ui/runDialog.js @@ -11,6 +11,7 @@ const Signals = imports.signals; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; +const FileUtils = imports.misc.fileUtils; const Main = imports.ui.main; const ModalDialog = imports.ui.modalDialog; const Tweener = imports.ui.tweener; @@ -63,25 +64,6 @@ CommandCompleter.prototype = { this._update(0); }, - _onGetEnumerateComplete : function(obj, res) { - this._enumerator = obj.enumerate_children_finish(res); - this._enumerator.next_files_async(100, GLib.PRIORITY_LOW, null, Lang.bind(this, this._onNextFileComplete)); - }, - - _onNextFileComplete : function(obj, res) { - let files = obj.next_files_finish(res); - for (let i = 0; i < files.length; i++) { - this._childs[this._i].push(files[i].get_name()); - } - if (files.length) { - this._enumerator.next_files_async(100, GLib.PRIORITY_LOW, null, Lang.bind(this, this._onNextFileComplete)); - } else { - this._enumerator.close(null); - this._enumerator = null; - this._update(this._i + 1); - } - }, - update : function() { if (this._valid) return; @@ -101,7 +83,12 @@ CommandCompleter.prototype = { } let file = Gio.file_new_for_path(this._paths[i]); this._childs[this._i] = []; - file.enumerate_children_async(Gio.FILE_ATTRIBUTE_STANDARD_NAME, Gio.FileQueryInfoFlags.NONE, GLib.PRIORITY_LOW, null, Lang.bind(this, this._onGetEnumerateComplete)); + FileUtils.listDirAsync(file, Lang.bind(this, function (files) { + for (let i = 0; i < files.length; i++) { + this._childs[this._i].push(files[i].get_name()); + } + this._update(this._i + 1); + })); }, _onChanged : function(m, f, of, type) { From b0c6cf3fc541e117ca3d4b00b77bf92182225b75 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 18 Jan 2011 00:38:47 +0300 Subject: [PATCH 122/132] add ability to search in web from search view It use OpenSearch to define the search engines. https://bugzilla.gnome.org/show_bug.cgi?id=623708 --- configure.ac | 2 +- data/Makefile.am | 5 + data/org.gnome.shell.gschema.xml.in | 4 + data/search_providers/google.xml | 7 ++ data/search_providers/wikipedia.xml | 44 +++++++++ data/theme/gnome-shell.css | 26 ++++++ js/ui/search.js | 114 +++++++++++++++++++++++ js/ui/searchDisplay.js | 137 ++++++++++++++++++++++------ js/ui/viewSelector.js | 3 +- src/shell-global.c | 133 +++++++++++++++++++++++++++ src/shell-global.h | 8 ++ src/st/st-texture-cache.c | 64 +++++++++++++ 12 files changed, 517 insertions(+), 30 deletions(-) create mode 100644 data/search_providers/google.xml create mode 100644 data/search_providers/wikipedia.xml diff --git a/configure.ac b/configure.ac index 3248f2d93..35a132375 100644 --- a/configure.ac +++ b/configure.ac @@ -69,7 +69,7 @@ GIO_MIN_VERSION=2.25.9 # 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 + 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 diff --git a/data/Makefile.am b/data/Makefile.am index ece423d24..4e73e037a 100644 --- a/data/Makefile.am +++ b/data/Makefile.am @@ -12,6 +12,11 @@ desktop_DATA = gnome-shell.desktop %.desktop:%.desktop.in $(AM_V_GEN) sed s/^_// < $< > $@ || rm $@ +searchprovidersdir = $(pkgdatadir)/search_providers +dist_searchproviders_DATA = \ + search_providers/google.xml \ + search_providers/wikipedia.xml + imagesdir = $(pkgdatadir)/images dist_images_DATA = \ close-black.svg \ diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in index 78f301d66..c19463099 100644 --- a/data/org.gnome.shell.gschema.xml.in +++ b/data/org.gnome.shell.gschema.xml.in @@ -37,6 +37,10 @@ will be displayed in the favorites area. + + [] + <_summary>disabled OpenSearch providers + [] <_summary>History for command (Alt-F2) dialog diff --git a/data/search_providers/google.xml b/data/search_providers/google.xml new file mode 100644 index 000000000..daaa254b7 --- /dev/null +++ b/data/search_providers/google.xml @@ -0,0 +1,7 @@ + +Google +Google Search +UTF-8 +data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA + + diff --git a/data/search_providers/wikipedia.xml b/data/search_providers/wikipedia.xml new file mode 100644 index 000000000..4c61256a9 --- /dev/null +++ b/data/search_providers/wikipedia.xml @@ -0,0 +1,44 @@ + +Wikipedia +Wikipedia, the free encyclopedia +UTF-8 +data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAEAgQAhIOEAMjHyABIR0gA6ejpAGlqaQCpqKkAKCgoAPz9%2FAAZGBkAmJiYANjZ2ABXWFcAent6ALm6uQA8OjwAiIiIiIiIiIiIiI4oiL6IiIiIgzuIV4iIiIhndo53KIiIiB%2FWvXoYiIiIfEZfWBSIiIEGi%2FfoqoiIgzuL84i9iIjpGIoMiEHoiMkos3FojmiLlUipYliEWIF%2BiDe0GoRa7D6GPbjcu1yIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + + +ar +bg +ca +cs +da +de +en +eo +es +fa +fi +fr +he +hu +id +it +ja +ko +lt +nl +no +pl +pt +ro +ru +sk +sl +sr +sv +tr +uk +vi +vo +war +zh + diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css index 05c9ce263..d7c0b6c13 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css @@ -441,6 +441,32 @@ StTooltip StLabel { spacing: 4px; } +.search-providers-box { + spacing: 4px; +} + +.dash-search-button { + background-gradient-direction: vertical; + background-gradient-start: rgba(255, 255, 255, 0.2); + background-gradient-end: rgba(255, 255, 255, 0); +/* border: 1px solid #808080;*/ + border-radius: 10px; + height: 32px; + width: 300px; +} + +.dash-search-button:selected, +.dash-search-button:hover { + background-gradient-direction: vertical; + background-gradient-start: rgba(255, 255, 255, 0.4); + background-gradient-end: rgba(255, 255, 255, 0.2); +} + +.dash-search-button-label { + color: #cccccc; + font: 16px sans-serif; +} + /* Apps */ .icon-grid { diff --git a/js/ui/search.js b/js/ui/search.js index adc561198..926abb72c 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -1,6 +1,18 @@ /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */ +const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; +const Lang = imports.lang; const Signals = imports.signals; +const Shell = imports.gi.Shell; + +const Gettext = imports.gettext.domain('gnome-shell'); +const _ = Gettext.gettext; + +const FileUtils = imports.misc.fileUtils; +const Main = imports.ui.main; + +const DISABLED_OPEN_SEARCH_PROVIDERS_KEY = 'disabled-open-search-providers'; const RESULT_ICON_SIZE = 48; @@ -211,6 +223,108 @@ SearchProvider.prototype = { }; Signals.addSignalMethods(SearchProvider.prototype); +function OpenSearchSystem(title) { + this._init(title); +} + +OpenSearchSystem.prototype = { + _init: function() { + this._providers = []; + global.settings.connect('changed::' + DISABLED_OPEN_SEARCH_PROVIDERS_KEY, Lang.bind(this, this._refresh)); + this._refresh(); + }, + + getProviders: function() { + let res = []; + for (let i = 0; i < this._providers.length; i++) + res.push({ id: i, name: this._providers[i].name }); + + return res; + }, + + setSearchTerms: function(terms) { + this._terms = terms; + }, + + _checkSupportedProviderLanguage: function(provider) { + if (provider.url.search(/{language}/) == -1) + return true; + + let langs = GLib.get_language_names(); + + langs.push('en'); + let lang = null; + for (let i = 0; i < langs.length; i++) { + for (let k = 0; k < provider.langs.length; k++) { + if (langs[i] == provider.langs[k]) + lang = langs[i]; + } + if (lang) + break; + } + provider.lang = lang; + return lang != null; + }, + + activateResult: function(id) { + let searchTerms = this._terms.join(' '); + + let url = this._providers[id].url.replace('{searchTerms}', encodeURIComponent(searchTerms)); + if (url.match('{language}')) + url = url.replace('{language}', this._providers[id].lang); + + try { + Gio.app_info_launch_default_for_uri(url, global.create_app_launch_context()); + } catch (e) { + // TODO: remove this after glib will be removed from moduleset + // In the default jhbuild, gio is in our prefix but gvfs is not + let p = new Shell.Process({ 'args' : ['gvfs-open', url] }); + p.run(); + } + + Main.overview.hide(); + }, + + _addProvider: function(fileName) { + let file = Gio.file_new_for_path(global.datadir + '/search_providers/' + fileName); + let source = ''; + + file.load_contents_async(null, Lang.bind(this, function (obj, res) { + let [success, source] = file.load_contents_finish(res); + if (source) { + let [success, name, url, langs, icon_uri] = global.parse_search_provider(source); + let provider ={ name: name, + url: url, + id: this._providers.length, + icon_uri: icon_uri, + langs: langs }; + if (this._checkSupportedProviderLanguage(provider)) { + this._providers.push(provider); + this.emit('changed'); + } + } + })); + }, + + _refresh: function() { + this._providers = []; + let names = global.settings.get_strv(DISABLED_OPEN_SEARCH_PROVIDERS_KEY); + let file = Gio.file_new_for_path(global.datadir + '/search_providers'); + FileUtils.listDirAsync(file, Lang.bind(this, function(files) { + for (let i = 0; i < files.length; i++) { + let enabled = true; + let name = files[i].get_name(); + for (let k = 0; k < names.length; k++) + if (names[k] == name) + enabled = false; + if (enabled) + this._addProvider(name); + } + })); + } +} +Signals.addSignalMethods(OpenSearchSystem.prototype); + function SearchSystem() { this._init(); } diff --git a/js/ui/searchDisplay.js b/js/ui/searchDisplay.js index 3f094546f..fe6c76072 100644 --- a/js/ui/searchDisplay.js +++ b/js/ui/searchDisplay.js @@ -149,18 +149,18 @@ GridSearchResults.prototype = { }; -function SearchResults(searchSystem) { - this._init(searchSystem); +function SearchResults(searchSystem, openSearchSystem) { + this._init(searchSystem, openSearchSystem); } SearchResults.prototype = { - _init: function(searchSystem) { + _init: function(searchSystem, openSearchSystem) { this._searchSystem = searchSystem; + this._openSearchSystem = openSearchSystem; + + this.actor = new St.BoxLayout({ name: 'searchResults', + vertical: true }); - this.actor = new St.Bin({ name: 'searchResults', - y_align: St.Align.START, - x_align: St.Align.START, - x_fill: true }); this._content = new St.BoxLayout({ name: 'searchResultsContent', vertical: true }); @@ -170,7 +170,11 @@ SearchResults.prototype = { scrollView.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC); scrollView.add_actor(this._content); - this.actor.set_child(scrollView); + this.actor.add(scrollView, { x_fill: true, + y_fill: false, + expand: true, + x_align: St.Align.START, + y_align: St.Align.START }); this._statusText = new St.Label({ style_class: 'search-statustext' }); this._content.add(this._statusText); @@ -179,6 +183,51 @@ SearchResults.prototype = { this._providerMeta = []; for (let i = 0; i < this._providers.length; i++) this.createProviderMeta(this._providers[i]); + + this._searchProvidersBox = new St.BoxLayout({ style_class: 'search-providers-box' }); + this.actor.add(this._searchProvidersBox); + + this._openSearchProviders = []; + this._openSearchSystem.connect('changed', Lang.bind(this, this._updateOpenSearchProviderButtons)); + this._updateOpenSearchProviderButtons(); + }, + + _updateOpenSearchProviderButtons: function() { + this._selectedOpenSearchButton = -1; + for (let i = 0; i < this._openSearchProviders.length; i++) + this._openSearchProviders[i].actor.destroy(); + this._openSearchProviders = this._openSearchSystem.getProviders(); + for (let i = 0; i < this._openSearchProviders.length; i++) + this._createOpenSearchProviderButton(this._openSearchProviders[i]); + }, + + _updateOpenSearchButtonState: function() { + for (let i = 0; i < this._openSearchProviders.length; i++) { + if (i == this._selectedOpenSearchButton) + this._openSearchProviders[i].actor.add_style_pseudo_class('selected'); + else + this._openSearchProviders[i].actor.remove_style_pseudo_class('selected'); + } + }, + + _createOpenSearchProviderButton: function(provider) { + let clickable = new St.Clickable({ style_class: 'dash-search-button', + reactive: true, + x_fill: true, + y_align: St.Align.MIDDLE }); + let bin = new St.Bin({ x_fill: false, + x_align:St.Align.MIDDLE }); + clickable.connect('clicked', Lang.bind(this, function() { + this._openSearchSystem.activateResult(provider.id); + })); + let title = new St.Label({ text: provider.name, + style_class: 'dash-search-button-label' }); + + bin.set_child(title); + clickable.set_child(bin); + provider.actor = clickable; + + this._searchProvidersBox.add(clickable); }, createProviderMeta: function(provider) { @@ -227,6 +276,8 @@ SearchResults.prototype = { this._searchSystem.reset(); this._statusText.hide(); this._clearDisplay(); + this._selectedOpenSearchButton = -1; + this._updateOpenSearchButtonState(); }, startingSearch: function() { @@ -247,12 +298,12 @@ SearchResults.prototype = { if (results.length == 0) { this._statusText.set_text(_("No matching results.")); this._statusText.show(); - return true; } else { this._statusText.hide(); } let terms = this._searchSystem.getTerms(); + this._openSearchSystem.setSearchTerms(terms); for (let i = 0; i < results.length; i++) { let [provider, providerResults] = results[i]; @@ -262,7 +313,8 @@ SearchResults.prototype = { meta.count.set_text('' + providerResults.length); } - this.selectDown(false); + if (this._selectedOpenSearchButton == -1) + this.selectDown(false); return true; }, @@ -284,16 +336,26 @@ SearchResults.prototype = { }, selectUp: function(recursing) { - for (let i = this._selectedProvider; i >= 0; i--) { - let meta = this._providerMeta[i]; - if (!meta.actor.visible) - continue; - let success = this._modifyActorSelection(meta.resultDisplay, true); - if (success) { - this._selectedProvider = i; - return; + if (this._selectedOpenSearchButton == -1) { + for (let i = this._selectedProvider; i >= 0; i--) { + let meta = this._providerMeta[i]; + if (!meta.actor.visible) + continue; + let success = this._modifyActorSelection(meta.resultDisplay, true); + if (success) { + this._selectedProvider = i; + return; + } } } + + if (this._selectedOpenSearchButton == -1) + this._selectedOpenSearchButton = this._openSearchProviders.length; + this._selectedOpenSearchButton--; + this._updateOpenSearchButtonState(); + if (this._selectedOpenSearchButton >= 0) + return; + if (this._providerMeta.length > 0 && !recursing) { this._selectedProvider = this._providerMeta.length - 1; this.selectUp(true); @@ -302,18 +364,30 @@ SearchResults.prototype = { selectDown: function(recursing) { let current = this._selectedProvider; - if (current == -1) - current = 0; - for (let i = current; i < this._providerMeta.length; i++) { - let meta = this._providerMeta[i]; - if (!meta.actor.visible) - continue; - let success = this._modifyActorSelection(meta.resultDisplay, false); - if (success) { - this._selectedProvider = i; - return; + if (this._selectedOpenSearchButton == -1) { + if (current == -1) + current = 0; + for (let i = current; i < this._providerMeta.length; i++) { + let meta = this._providerMeta[i]; + if (!meta.actor.visible) + continue; + let success = this._modifyActorSelection(meta.resultDisplay, false); + if (success) { + this._selectedProvider = i; + return; + } } } + this._selectedOpenSearchButton++; + + if (this._selectedOpenSearchButton < this._openSearchProviders.length) { + this._updateOpenSearchButtonState(); + return; + } + + this._selectedOpenSearchButton = -1; + this._updateOpenSearchButtonState(); + if (this._providerMeta.length > 0 && !recursing) { this._selectedProvider = 0; this.selectDown(true); @@ -321,6 +395,13 @@ SearchResults.prototype = { }, activateSelected: function() { + if (this._selectedOpenSearchButton != -1) { + let provider = this._openSearchProviders[this._selectedOpenSearchButton]; + this._openSearchSystem.activateResult(provider.id); + Main.overview.hide(); + return; + } + let current = this._selectedProvider; if (current < 0) return; diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index 96d7a9717..9575e296e 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -247,9 +247,10 @@ SearchTab.prototype = { this._focusBase = focusBase; this._searchSystem = new Search.SearchSystem(); + this._openSearchSystem = new Search.OpenSearchSystem(); this._searchEntry = new SearchEntry(focusBase); - this._searchResults = new SearchDisplay.SearchResults(this._searchSystem); + this._searchResults = new SearchDisplay.SearchResults(this._searchSystem, this._openSearchSystem); BaseTab.prototype._init.call(this, this._searchEntry.actor, this._searchResults.actor); diff --git a/src/shell-global.c b/src/shell-global.c index 4c3246f20..8e0463ddd 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -27,6 +27,9 @@ #include #include #include +#include +#include +#include #ifdef HAVE_SYS_RESOURCE_H #include #endif @@ -1070,6 +1073,136 @@ shell_global_breakpoint (ShellGlobal *global) G_BREAKPOINT (); } +/** + * shell_global_parse_search_provider: + * @global: A #ShellGlobal + * @data: description of provider + * @name: (out): location to store a display name + * @url: (out): location to store template of url + * @langs: (out) (transfer full) (element-type utf8): list of supported languages + * @icon_data_uri: (out): location to store uri + * @error: location to store GError + * + * Returns: %TRUE on success + */ +gboolean +shell_global_parse_search_provider (ShellGlobal *global, + const char *data, + char **name, + char **url, + GList **langs, + char **icon_data_uri, + GError **error) +{ + xmlDocPtr doc = xmlParseMemory (data, strlen(data)); + xmlNode *root; + + *name = NULL; + *url = NULL; + *icon_data_uri = NULL; + *langs = NULL; + + if (!doc) + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Malformed xml"); + return FALSE; + } + + root = xmlDocGetRootElement (doc); + if (root && root->name && xmlStrcmp (root->name, (const xmlChar *)"OpenSearchDescription") == 0) + { + xmlNode *child; + for (child = root->children; child; child = child->next) + { + if (!child->name) + continue; + if (xmlStrcmp (child->name, (const xmlChar *)"Language") == 0) + { + xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1); + if (!val) + continue; + *langs = g_list_append (*langs, g_strdup ((char *)val)); + xmlFree (val); + } + if (!*name && xmlStrcmp (child->name, (const xmlChar *)"ShortName") == 0) + { + xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1); + *name = g_strdup ((char *)val); + xmlFree (val); + } + if (!*icon_data_uri && xmlStrcmp (child->name, (const xmlChar *)"Image") == 0) + { + xmlChar *val = xmlNodeListGetString(doc, child->xmlChildrenNode, 1); + if (val) + *icon_data_uri = g_strdup ((char *)val); + xmlFree (val); + } + if (!*url && xmlStrcmp (child->name, (const xmlChar *)"Url") == 0) + { + xmlChar *template; + xmlChar *type; + + type = xmlGetProp(child, (const xmlChar *)"type"); + if (!type) + continue; + + if (xmlStrcmp (type, (const xmlChar *)"text/html") != 0) + { + xmlFree (type); + continue; + } + xmlFree (type); + + template = xmlGetProp(child, (const xmlChar *)"template"); + if (!template) + continue; + *url = g_strdup ((char *)template); + xmlFree (template); + } + } + } + else + { + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Invalid OpenSearch document"); + xmlFreeDoc (doc); + return FALSE; + } + xmlFreeDoc (doc); + if (*icon_data_uri && *name && *url) + return TRUE; + + if (*icon_data_uri) + g_free (*icon_data_uri); + else + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "search provider doesn't have icon"); + + if (*name) + g_free (*name); + else if (error && !*error) + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "search provider doesn't have ShortName"); + + if (*url) + g_free (*url); + else if (error && !*error) + g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, + "search provider doesn't have template for url"); + + if (*langs) + { + g_list_foreach (*langs, (GFunc)g_free, NULL); + g_list_free (*langs); + } + + *url = NULL; + *name = NULL; + *icon_data_uri = NULL; + *langs = NULL; + + return FALSE; +} + /** * shell_global_gc: * @global: A #ShellGlobal diff --git a/src/shell-global.h b/src/shell-global.h index 4a40bcd53..1afbdc465 100644 --- a/src/shell-global.h +++ b/src/shell-global.h @@ -84,6 +84,14 @@ void shell_global_reexec_self (ShellGlobal *global); void shell_global_breakpoint (ShellGlobal *global); +gboolean shell_global_parse_search_provider (ShellGlobal *global, + const char *data, + char **name, + char **url, + GList **langs, + char **icon_data_uri, + GError **error); + void shell_global_gc (ShellGlobal *global); void shell_global_maybe_gc (ShellGlobal *global); diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index 520b7d750..346ac4a8a 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -437,6 +437,67 @@ out: return rotated_pixbuf; } +static GdkPixbuf* +decode_image (const char *val) +{ + int i; + GError *error = NULL; + GdkPixbuf *res = NULL; + struct { + const char *prefix; + const char *mime_type; + } formats[] = { + { "data:image/x-icon;base64,", "image/x-icon" }, + { "data:image/png;base64,", "image/png" } + }; + + g_return_val_if_fail (val, NULL); + + for (i = 0; i < G_N_ELEMENTS (formats); i++) + { + if (g_str_has_prefix (val, formats[i].prefix)) + { + gsize len; + guchar *data = NULL; + char *unescaped; + + unescaped = g_uri_unescape_string (val + strlen (formats[i].prefix), NULL); + if (unescaped) + { + data = g_base64_decode (unescaped, &len); + g_free (unescaped); + } + + if (data) + { + GdkPixbufLoader *loader; + + loader = gdk_pixbuf_loader_new_with_mime_type (formats[i].mime_type, &error); + if (loader && + gdk_pixbuf_loader_write (loader, data, len, &error) && + gdk_pixbuf_loader_close (loader, &error)) + { + res = gdk_pixbuf_loader_get_pixbuf (loader); + g_object_ref (res); + } + g_object_unref (loader); + g_free (data); + } + } + } + if (!res) + { + if (error) + { + g_warning (error->message); + g_error_free (error); + } + else + g_warning ("incorrect data uri"); + } + return res; +} + static GdkPixbuf * impl_load_pixbuf_file (const char *uri, int available_width, @@ -448,6 +509,9 @@ impl_load_pixbuf_file (const char *uri, char *contents = NULL; gsize size; + if (g_str_has_prefix (uri, "data:")) + return decode_image (uri); + file = g_file_new_for_uri (uri); if (g_file_load_contents (file, NULL, &contents, &size, NULL, error)) { From cf49882e96fe9620e289ff7126e6ebadb5c7a82a Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Mon, 17 Jan 2011 23:05:30 +0100 Subject: [PATCH 123/132] search: Use Util.spawn rather then Shell.Process Shell.Process has been removed in favor of Util.spawn* so use that instead. --- js/ui/search.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/ui/search.js b/js/ui/search.js index 926abb72c..f7be6af47 100644 --- a/js/ui/search.js +++ b/js/ui/search.js @@ -5,6 +5,7 @@ const GLib = imports.gi.GLib; const Lang = imports.lang; const Signals = imports.signals; const Shell = imports.gi.Shell; +const Util = imports.misc.util; const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; @@ -278,8 +279,7 @@ OpenSearchSystem.prototype = { } catch (e) { // TODO: remove this after glib will be removed from moduleset // In the default jhbuild, gio is in our prefix but gvfs is not - let p = new Shell.Process({ 'args' : ['gvfs-open', url] }); - p.run(); + Util.spawn(['gvfs-open', url]) } Main.overview.hide(); From 4bc078b5fd0b6c0cabd427d18e8d4fd8e8109f56 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Tue, 18 Jan 2011 01:21:44 +0300 Subject: [PATCH 124/132] StTextureCache: Fix compilation warning --- src/st/st-texture-cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index 346ac4a8a..2dceeca37 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -489,7 +489,7 @@ decode_image (const char *val) { if (error) { - g_warning (error->message); + g_warning ("%s\n", error->message); g_error_free (error); } else From 6e18d18a812c98ce14649ecc8fd9b89e64b7c79e Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Tue, 18 Jan 2011 13:05:41 +0200 Subject: [PATCH 125/132] Updated Hebrew translation. --- po/he.po | 180 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 123 insertions(+), 57 deletions(-) diff --git a/po/he.po b/po/he.po index 25dea597d..fda1af7c1 100644 --- a/po/he.po +++ b/po/he.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-13 23:22+0200\n" -"PO-Revision-Date: 2011-01-13 23:23+0200\n" +"POT-Creation-Date: 2011-01-18 13:02+0200\n" +"PO-Revision-Date: 2011-01-18 13:05+0200\n" "Last-Translator: Yaron Shahrabani \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" @@ -155,6 +155,10 @@ msgstr "Uuids of extensions to disable" msgid "Whether to collect stats about applications usage" msgstr "Whether to collect stats about applications usage" +#: ../data/org.gnome.shell.gschema.xml.in.h:22 +msgid "disabled OpenSearch providers" +msgstr "disabled OpenSearch providers" + #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 msgid "Clip the crosshairs at the center" msgstr "Clip the crosshairs at the center" @@ -320,7 +324,7 @@ msgstr "לא ניתן לפענח את הפקודה:" msgid "No such application" msgstr "אין כזה יישום" -#: ../js/misc/util.js:143 ../js/ui/runDialog.js:377 +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:351 #, c-format msgid "Execution of '%s' failed:" msgstr "ההרצה של '%s' נכשלה:" @@ -364,53 +368,122 @@ msgstr "%s הוסר מהמועדפים שלך." msgid "Remove" msgstr "הסרה" -#: ../js/ui/docDisplay.js:494 +#: ../js/ui/docDisplay.js:18 msgid "RECENT ITEMS" msgstr "פריטים אחרונים" -#: ../js/ui/lookingGlass.js:552 +#: ../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:556 msgid "No extensions installed" msgstr "לא מותקנות הרחבות" -#: ../js/ui/lookingGlass.js:589 +#: ../js/ui/lookingGlass.js:593 msgid "Enabled" msgstr "פעיל" #. translators: #. * The device has been disabled -#: ../js/ui/lookingGlass.js:591 ../src/gvc/gvc-mixer-control.c:1087 +#: ../js/ui/lookingGlass.js:595 ../src/gvc/gvc-mixer-control.c:1087 msgid "Disabled" msgstr "מנוטרל" -#: ../js/ui/lookingGlass.js:593 +#: ../js/ui/lookingGlass.js:597 msgid "Error" msgstr "שגיאה" -#: ../js/ui/lookingGlass.js:595 +#: ../js/ui/lookingGlass.js:599 msgid "Out of date" msgstr "לא בתוקף" -#: ../js/ui/lookingGlass.js:620 +#: ../js/ui/lookingGlass.js:624 msgid "View Source" msgstr "צפייה במקור" -#: ../js/ui/lookingGlass.js:626 +#: ../js/ui/lookingGlass.js:630 msgid "Web Page" msgstr "דף אינטרנט" -#: ../js/ui/messageTray.js:1757 +#: ../js/ui/messageTray.js:1748 msgid "System Information" msgstr "פרטי המערכת" -#: ../js/ui/overview.js:76 +#: ../js/ui/overview.js:75 msgid "Undo" msgstr "ביטול" -#: ../js/ui/overview.js:141 +#: ../js/ui/overview.js:140 msgid "Windows" msgstr "חלונות" -#: ../js/ui/overview.js:144 +#: ../js/ui/overview.js:143 msgid "Applications" msgstr "יישומים" @@ -466,20 +539,20 @@ msgstr "%a %l:%M %p" msgid "Activities" msgstr "פעילויות" -#: ../js/ui/placeDisplay.js:112 +#: ../js/ui/placeDisplay.js:106 #, c-format msgid "Failed to unmount '%s'" msgstr "אירע כשל בניתוק '%s'" -#: ../js/ui/placeDisplay.js:115 +#: ../js/ui/placeDisplay.js:109 msgid "Retry" msgstr "ניסיון חוזר" -#: ../js/ui/placeDisplay.js:160 +#: ../js/ui/placeDisplay.js:150 msgid "Connect to..." msgstr "התחברות אל..." -#: ../js/ui/placeDisplay.js:559 +#: ../js/ui/placeDisplay.js:386 msgid "PLACES & DEVICES" msgstr "מקומות והתקנים" @@ -492,7 +565,7 @@ msgstr "מקומות והתקנים" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:239 +#: ../js/ui/runDialog.js:209 msgid "Please enter a command:" msgstr "נא להזין פקודה:" @@ -576,7 +649,7 @@ msgstr "ניגודיות גבוהה" 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 msgid "Bluetooth" msgstr "Bluetooth" @@ -592,110 +665,106 @@ 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/bluetooth.js:251 ../js/ui/status/keyboard.js:78 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:63 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 +#: ../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 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/bluetooth.js:469 -msgid "Cancel" -msgstr "ביטול" - #: ../js/ui/status/power.js:85 msgid "Power Settings" msgstr "הגדרות צריכת החשמל" @@ -867,11 +936,11 @@ msgstr[2] "2 קלטים" msgid "System Sounds" msgstr "צלילי מערכת" -#: ../src/shell-global.c:1233 +#: ../src/shell-global.c:1366 msgid "Less than a minute ago" msgstr "לפני פחות מדקה" -#: ../src/shell-global.c:1237 +#: ../src/shell-global.c:1370 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" @@ -879,7 +948,7 @@ msgstr[0] "לפני דקה" msgstr[1] "לפני %d דקות" msgstr[2] "לפני 2 דקות" -#: ../src/shell-global.c:1242 +#: ../src/shell-global.c:1375 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" @@ -887,7 +956,7 @@ msgstr[0] "לפני שעה" msgstr[1] "לפני %d שעות" msgstr[2] "לפני שעתיים" -#: ../src/shell-global.c:1247 +#: ../src/shell-global.c:1380 #, c-format msgid "%d day ago" msgid_plural "%d days ago" @@ -895,7 +964,7 @@ msgstr[0] "לפני יום" msgstr[1] "לפני %d ימים" msgstr[2] "לפני יומיים" -#: ../src/shell-global.c:1252 +#: ../src/shell-global.c:1385 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" @@ -1024,9 +1093,6 @@ msgstr "%1$s: %2$s" #~ msgid "Invisible" #~ msgstr "בלתי נראה" -#~ msgid "Restart..." -#~ msgstr "הפעלה מחדש..." - #~ msgid "ON" #~ msgstr "1" From df10ef532fbe6047baae07bc0d01b07e1c9556c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 18 Jan 2011 17:17:38 +0100 Subject: [PATCH 126/132] build: Add cups development package to dependencies Needed by gnome-control-center. --- tools/build/gnome-shell-build-setup.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/build/gnome-shell-build-setup.sh b/tools/build/gnome-shell-build-setup.sh index 66a02d120..78e94d018 100755 --- a/tools/build/gnome-shell-build-setup.sh +++ b/tools/build/gnome-shell-build-setup.sh @@ -62,7 +62,7 @@ fi # libxklavier, 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 +# libgcrypt, libtasn1, libgnome-keyring, libgtop, cups # # Non-devel packages needed by gnome-shell and its deps: # glxinfo, gstreamer-plugins-base, gstreamer-plugins-good, @@ -82,7 +82,8 @@ if test "x$system" = xUbuntu -o "x$system" = xDebian -o "x$system" = xLinuxMint mesa-common-dev mesa-utils libpam-dev python-dev python-gconf python-gobject xulrunner-dev xserver-xephyr gnome-terminal libcroco3-dev libgstreamer0.10-dev gstreamer0.10-plugins-base gstreamer0.10-plugins-good - libltdl-dev libvorbis-dev libxklavier-dev libgnome-keyring-dev libupower-glib-dev + libltdl-dev libvorbis-dev libxklavier-dev libgnome-keyring-dev + libupower-glib-dev libcups2-dev " if apt-cache show autopoint > /dev/null 2> /dev/null; then @@ -120,7 +121,7 @@ if test "x$system" = xFedora ; then startup-notification-devel xorg-x11-server-Xephyr gnome-terminal zenity icon-naming-utils upower-devel libtool-ltdl-devel libvorbis-devel libxklavier-devel libgcrypt-devel libtasn1-devel libtasn1-tools - libgnome-keyring-devel libgtop2-devel + libgnome-keyring-devel libgtop2-devel cups-devel " if expr $version \>= 14 > /dev/null ; then From c74536c9b375bcc991e430b21ad92fb0ec94715c Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Tue, 18 Jan 2011 11:48:37 -0500 Subject: [PATCH 127/132] configure.ac: remove an old reference to Tidy --- configure.ac | 1 - 1 file changed, 1 deletion(-) diff --git a/configure.ac b/configure.ac index 35a132375..b3c0b2482 100644 --- a/configure.ac +++ b/configure.ac @@ -94,7 +94,6 @@ AC_CHECK_FUNCS(JS_NewGlobalObject sn_startup_sequence_get_application_id) CFLAGS=$saved_CFLAGS LIBS=$saved_LIBS -PKG_CHECK_MODULES(TIDY, clutter-1.0) PKG_CHECK_MODULES(ST, clutter-1.0 gtk+-3.0 libcroco-0.6 gnome-desktop-3.0 >= 2.90.0) PKG_CHECK_MODULES(GDMUSER, dbus-glib-1 gtk+-3.0) PKG_CHECK_MODULES(TRAY, gtk+-3.0) From 4c449124eea56c67d56c884697c9e8c5700bf6fb Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Tue, 18 Jan 2011 19:25:00 +0100 Subject: [PATCH 128/132] windowManager: Skip disposed windows in _switchWorkspaceDone Avoid reparenting already disposed windows. https://bugzilla.gnome.org/show_bug.cgi?id=639853 --- js/ui/windowManager.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 5bd14e499..447e4796e 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -497,6 +497,8 @@ WindowManager.prototype = { for (let i = 0; i < switchData.windows.length; i++) { let w = switchData.windows[i]; + if (w.window.is_destroyed()) // Window gone + continue; if (w.window.get_parent() == switchData.outGroup) { w.window.reparent(w.parent); w.window.hide(); From cb4c2ab8245ffcb36144d137ec30bcc19af14282 Mon Sep 17 00:00:00 2001 From: Marina Zhurakhinskaya Date: Wed, 12 Jan 2011 20:05:36 -0500 Subject: [PATCH 129/132] Don't reset y position of expanded notifications when updating them This fixes the problem of chat notifications collapsing and then expanding again when receiving multiple messages in the expanded new notification. https://bugzilla.gnome.org/show_bug.cgi?id=629557 --- js/ui/messageTray.js | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js index 1e896a9c5..c158c037a 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js @@ -1500,23 +1500,40 @@ MessageTray.prototype = { _updateShowingNotification: function() { Tweener.removeTweens(this._notificationBin); - this._tween(this._notificationBin, '_notificationState', State.SHOWN, - { y: 0, - opacity: 255, - time: ANIMATION_TIME, - transition: 'easeOutQuad', - onComplete: this._showNotificationCompleted, - onCompleteScope: this - }); // We auto-expand notifications with CRITICAL urgency. - // We call _expandNotification() again on the notifications that - // are expanded in case they were in the process of hiding and need - // to re-expand. + // We use Tweener.removeTweens() to remove a tween that was hiding the notification we are + // updating, in case that notification was in the process of being hidden. However, + // Tweener.removeTweens() would also remove a tween that was updating the position of the + // notification we are updating, in case that notification was already expanded and its height + // changed. Therefore we need to call this._expandNotification() for expanded notifications + // to make sure their position is updated. if (this._notification.urgency == Urgency.CRITICAL || this._notification.expanded) - // This will overwrite the y tween, but leave the opacity - // tween, and so the onComplete will remain as well. this._expandNotification(true); + + // We tween all notifications to full opacity. This ensures that both new notifications and + // notifications that might have been in the process of hiding get full opacity. + // + // We tween any notification showing in the banner mode to banner height (this._notificationBin.y = 0). + // This ensures that both new notifications and notifications in the banner mode that might + // have been in the process of hiding are shown with the banner height. + // + // We use this._showNotificationCompleted() onComplete callback to extend the time the updated + // notification is being shown. + // + // We don't set the y parameter for the tween for expanded notifications because + // this._expandNotification() will result in getting this._notificationBin.y set to the appropriate + // fully expanded value. + let tweenParams = { opacity: 255, + time: ANIMATION_TIME, + transition: 'easeOutQuad', + onComplete: this._showNotificationCompleted, + onCompleteScope: this + }; + if (!this._notification.expanded) + tweenParams.y = 0; + + this._tween(this._notificationBin, '_notificationState', State.SHOWN, tweenParams); }, _showNotificationCompleted: function() { From 255d4634a9d6f3506f4c85299795bd056c4a8860 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Wed, 19 Jan 2011 05:06:53 +0300 Subject: [PATCH 130/132] util: Fix regex used to match for URLs Commit a65a0f03d49 changed the literal RegExp to a string-based RegExp(). As backslashes are treated specially inside strings, translating an expression as /\s/ to '\s' results in a faulty regex of /s/, so escape backslashes where necessary. https://bugzilla.gnome.org/show_bug.cgi?id=639914 --- js/misc/util.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/misc/util.js b/js/misc/util.js index db5dc01c6..fc515eb7b 100644 --- a/js/misc/util.js +++ b/js/misc/util.js @@ -12,7 +12,7 @@ const Gettext = imports.gettext.domain('gnome-shell'); const _ = Gettext.gettext; /* http://daringfireball.net/2010/07/improved_regex_for_matching_urls */ -const _urlRegexp = new RegExp('\b(([a-z][\w-]+:(/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)([^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))', 'gi'); +const _urlRegexp = new RegExp('\\b(([a-z][\\w-]+:(/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)([^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:\'\\".,<>?«»“”‘’]))', 'gi'); // findUrls: // @str: string to find URLs in From 5c7042cff3ce251750daac101bf20bb4cf61eff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Di=C3=A9guez?= Date: Wed, 19 Jan 2011 15:01:58 +0100 Subject: [PATCH 131/132] Updated Galician translations --- po/gl.po | 84 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/po/gl.po b/po/gl.po index ddb850399..7be837e71 100644 --- a/po/gl.po +++ b/po/gl.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: gnome-shell master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-01-16 17:04+0100\n" -"PO-Revision-Date: 2011-01-16 17:09+0100\n" +"POT-Creation-Date: 2011-01-19 15:01+0100\n" +"PO-Revision-Date: 2011-01-19 15:01+0100\n" "Last-Translator: Fran Diéguez \n" "Language-Team: Galician \n" "Language: gl\n" @@ -162,6 +162,10 @@ msgstr "Os Uuid das extensións a desactivar" msgid "Whether to collect stats about applications usage" msgstr "Indica se recoller estatísticas sobre o uso dos aplicativos" +#: ../data/org.gnome.shell.gschema.xml.in.h:22 +msgid "disabled OpenSearch providers" +msgstr "fornecedores de OpenSearch desactivados" + #: ../data/org.gnome.accessibility.magnifier.gschema.xml.in.h:1 msgid "Clip the crosshairs at the center" msgstr "Poñer o punto de mira no centro" @@ -326,7 +330,7 @@ msgstr "Non foi posíbel analizar a orde:" msgid "No such application" msgstr "Non existe o aplicativo" -#: ../js/misc/util.js:143 ../js/ui/runDialog.js:364 +#: ../js/misc/util.js:143 ../js/ui/runDialog.js:351 #, c-format msgid "Execution of '%s' failed:" msgstr "Produciuse un fallo na execución de «%s»:" @@ -443,7 +447,7 @@ msgstr "Reiniciando o computador." msgid "Confirm" msgstr "Confirmar" -#: ../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 "Cancelar" @@ -477,7 +481,7 @@ msgstr "Ver fonte" msgid "Web Page" msgstr "Páxina web" -#: ../js/ui/messageTray.js:1748 +#: ../js/ui/messageTray.js:1765 msgid "System Information" msgstr "Información do sistema" @@ -545,20 +549,20 @@ msgstr "%a %l:%M %p" msgid "Activities" msgstr "Actividades" -#: ../js/ui/placeDisplay.js:112 +#: ../js/ui/placeDisplay.js:106 #, c-format msgid "Failed to unmount '%s'" msgstr "Produciuse un fallo ao desmontar «%s»" -#: ../js/ui/placeDisplay.js:115 +#: ../js/ui/placeDisplay.js:109 msgid "Retry" msgstr "Reintentar" -#: ../js/ui/placeDisplay.js:160 +#: ../js/ui/placeDisplay.js:150 msgid "Connect to..." msgstr "Conectar con..." -#: ../js/ui/placeDisplay.js:559 +#: ../js/ui/placeDisplay.js:386 msgid "PLACES & DEVICES" msgstr "LUGARES E DISPOSITIVOS" @@ -571,7 +575,7 @@ msgstr "LUGARES E DISPOSITIVOS" msgid "toggle-switch-us" msgstr "toggle-switch-intl" -#: ../js/ui/runDialog.js:222 +#: ../js/ui/runDialog.js:209 msgid "Please enter a command:" msgstr "Insira unha orde:" @@ -655,7 +659,7 @@ msgstr "Alto contraste" msgid "Large Text" msgstr "Texto máis grande" -#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:240 +#: ../js/ui/status/bluetooth.js:42 ../js/ui/status/bluetooth.js:241 msgid "Bluetooth" msgstr "Bluetooth" @@ -671,103 +675,103 @@ msgstr "Enviar ficheiros ao dispositivo..." msgid "Setup a New Device..." msgstr "Configurar un novo dispositivo..." -#: ../js/ui/status/bluetooth.js:94 +#: ../js/ui/status/bluetooth.js:95 msgid "Bluetooth Settings" msgstr "Configuracións de Bluetooth" -#: ../js/ui/status/bluetooth.js:191 +#: ../js/ui/status/bluetooth.js:192 msgid "Connection" msgstr "Conexión" -#: ../js/ui/status/bluetooth.js:227 +#: ../js/ui/status/bluetooth.js:228 msgid "Send Files..." msgstr "Enviar ficheiros..." -#: ../js/ui/status/bluetooth.js:232 +#: ../js/ui/status/bluetooth.js:233 msgid "Browse Files..." msgstr "Explorar ficheiros..." -#: ../js/ui/status/bluetooth.js:241 +#: ../js/ui/status/bluetooth.js:242 msgid "Error browsing device" msgstr "Produciuse un erro ao explorar o dispositivo" -#: ../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 "O dispositivo solicitado non pode explorarse, o erro foi «%s»" -#: ../js/ui/status/bluetooth.js:250 ../js/ui/status/keyboard.js:78 +#: ../js/ui/status/bluetooth.js:251 ../js/ui/status/keyboard.js:78 msgid "Keyboard Settings" msgstr "Configuracións do teclado" -#: ../js/ui/status/bluetooth.js:255 +#: ../js/ui/status/bluetooth.js:256 msgid "Mouse Settings" msgstr "Configuracións do rato" -#: ../js/ui/status/bluetooth.js:262 ../js/ui/status/volume.js:63 +#: ../js/ui/status/bluetooth.js:263 ../js/ui/status/volume.js:63 msgid "Sound Settings" msgstr "Configuracións do son" -#: ../js/ui/status/bluetooth.js:336 ../js/ui/status/bluetooth.js:370 -#: ../js/ui/status/bluetooth.js:410 ../js/ui/status/bluetooth.js:443 +#: ../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 Agent" msgstr "Axente Bluetooth" -#: ../js/ui/status/bluetooth.js:371 +#: ../js/ui/status/bluetooth.js:372 #, c-format msgid "Authorization request from %s" msgstr "Solicitude de autorización de %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 "O dispositivo %s quere acceder ao servizo «%s»" -#: ../js/ui/status/bluetooth.js:379 +#: ../js/ui/status/bluetooth.js:380 msgid "Always grant access" msgstr "Conceder acceso sempre" -#: ../js/ui/status/bluetooth.js:380 +#: ../js/ui/status/bluetooth.js:381 msgid "Grant this time only" msgstr "Conceder só esta vez" -#: ../js/ui/status/bluetooth.js:381 +#: ../js/ui/status/bluetooth.js:382 msgid "Reject" msgstr "Rexeitar" -#: ../js/ui/status/bluetooth.js:411 +#: ../js/ui/status/bluetooth.js:412 #, c-format msgid "Pairing confirmation for %s" msgstr "Confirmación de emparellado para «%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 "O dispositivo «%s» quere emparellarse con este equipo" -#: ../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 "Confirme que o PIN mostrado en «%s» coincide co do dispositivo." -#: ../js/ui/status/bluetooth.js:420 +#: ../js/ui/status/bluetooth.js:421 msgid "Matches" msgstr "Coincide" -#: ../js/ui/status/bluetooth.js:421 +#: ../js/ui/status/bluetooth.js:422 msgid "Does not match" msgstr "Non coincide" -#: ../js/ui/status/bluetooth.js:444 +#: ../js/ui/status/bluetooth.js:445 #, c-format msgid "Pairing request for %s" msgstr "Solicitude de emparellamento para «%s»" -#: ../js/ui/status/bluetooth.js:452 +#: ../js/ui/status/bluetooth.js:453 msgid "Please enter the PIN mentioned on the device." msgstr "Introduza o PIN mencionado no dispositivo." -#: ../js/ui/status/bluetooth.js:468 +#: ../js/ui/status/bluetooth.js:469 msgid "OK" msgstr "Aceptar" @@ -938,32 +942,32 @@ msgstr[1] "%u entradas" msgid "System Sounds" msgstr "Sons do sistema" -#: ../src/shell-global.c:1233 +#: ../src/shell-global.c:1366 msgid "Less than a minute ago" msgstr "Hai menos dun minuto" -#: ../src/shell-global.c:1237 +#: ../src/shell-global.c:1370 #, c-format msgid "%d minute ago" msgid_plural "%d minutes ago" msgstr[0] "hai %d minuto" msgstr[1] "hai %d minutos" -#: ../src/shell-global.c:1242 +#: ../src/shell-global.c:1375 #, c-format msgid "%d hour ago" msgid_plural "%d hours ago" msgstr[0] "hai %d hora" msgstr[1] "hai %d horas" -#: ../src/shell-global.c:1247 +#: ../src/shell-global.c:1380 #, c-format msgid "%d day ago" msgid_plural "%d days ago" msgstr[0] "hai %d día" msgstr[1] "hai %d días" -#: ../src/shell-global.c:1252 +#: ../src/shell-global.c:1385 #, c-format msgid "%d week ago" msgid_plural "%d weeks ago" From a739f89dd1132f531798083021bcd922b23ae121 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Wed, 19 Jan 2011 16:38:10 +0100 Subject: [PATCH 132/132] texture-cache: add a missing array annotation --- src/st/st-texture-cache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/st/st-texture-cache.c b/src/st/st-texture-cache.c index 2dceeca37..c7906ab9c 100644 --- a/src/st/st-texture-cache.c +++ b/src/st/st-texture-cache.c @@ -1679,7 +1679,7 @@ st_texture_cache_load_from_data (StTextureCache *cache, /** * st_texture_cache_load_from_raw: * @cache: a #StTextureCache - * @data: raw pixel data + * @data: (array length=len): raw pixel data * @len: the length of @data * @has_alpha: whether @data includes an alpha channel * @width: width in pixels of @data