diff --git a/.gitignore b/.gitignore index 41500b4..cb32663 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/gnome-shell-3.14.4.tar.xz +SOURCES/gnome-shell-3.22.3.tar.xz diff --git a/.gnome-shell.metadata b/.gnome-shell.metadata index 12bac15..031c566 100644 --- a/.gnome-shell.metadata +++ b/.gnome-shell.metadata @@ -1 +1 @@ -1a7684829e3b44a06bee7083955d4fca42888e5e SOURCES/gnome-shell-3.14.4.tar.xz +0cfb5d638fb5b9ea02421fdab21c1ebfd145de06 SOURCES/gnome-shell-3.22.3.tar.xz diff --git a/SOURCES/0001-Don-t-crash-on-accesses-to-stale-window-backed-apps.patch b/SOURCES/0001-Don-t-crash-on-accesses-to-stale-window-backed-apps.patch deleted file mode 100644 index 4f93aa9..0000000 --- a/SOURCES/0001-Don-t-crash-on-accesses-to-stale-window-backed-apps.patch +++ /dev/null @@ -1,265 +0,0 @@ -From 82757fd7bd099d849c11847be75f9f4cf43544a7 Mon Sep 17 00:00:00 2001 -From: "Owen W. Taylor" -Date: Wed, 7 Oct 2015 22:56:11 -0400 -Subject: [PATCH] Don't crash on accesses to stale window-backed apps - -The JS code could still be holding on to a reference to a window-backed app -after all windows have vanished. (For example, the dash queues an idle to -refetch apps and display them.) Avoid dying with an error message if we -attempt to activate or otherwise manipulate such a window. - -https://bugzilla.gnome.org/show_bug.cgi?id=674799 ---- - src/shell-app.c | 32 +++++++++++++++++++++++--------- - 1 file changed, 23 insertions(+), 9 deletions(-) - -diff --git a/src/shell-app.c b/src/shell-app.c -index 051f84f..36aa47a 100644 ---- a/src/shell-app.c -+++ b/src/shell-app.c -@@ -146,93 +146,99 @@ static void - shell_app_set_property (GObject *gobject, - guint prop_id, - const GValue *value, - GParamSpec *pspec) - { - ShellApp *app = SHELL_APP (gobject); - - switch (prop_id) - { - case PROP_APP_INFO: - _shell_app_set_app_info (app, g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); - break; - } - } - - const char * - shell_app_get_id (ShellApp *app) - { - if (app->info) - return g_app_info_get_id (G_APP_INFO (app->info)); - return app->window_id_string; - } - - static MetaWindow * - window_backed_app_get_window (ShellApp *app) - { - g_assert (app->info == NULL); -- g_assert (app->running_state); -- g_assert (app->running_state->windows); -- return app->running_state->windows->data; -+ if (app->running_state) -+ { -+ g_assert (app->running_state->windows); -+ return app->running_state->windows->data; -+ } -+ else -+ return NULL; - } - - static ClutterActor * - window_backed_app_get_icon (ShellApp *app, - int size) - { -- MetaWindow *window; -+ MetaWindow *window = NULL; - ClutterActor *actor; - gint scale; - ShellGlobal *global; - StThemeContext *context; - - global = shell_global_get (); - context = st_theme_context_get_for_stage (shell_global_get_stage (global)); - g_object_get (context, "scale-factor", &scale, NULL); - - size *= scale; - - /* During a state transition from running to not-running for - * window-backend apps, it's possible we get a request for the icon. - * Avoid asserting here and just return an empty image. - */ -- if (app->running_state == NULL) -+ if (app->running_state != NULL) -+ window = window_backed_app_get_window (app); -+ -+ if (window == NULL) - { - actor = clutter_texture_new (); - g_object_set (actor, "opacity", 0, "width", (float) size, "height", (float) size, NULL); - return actor; - } - -- window = window_backed_app_get_window (app); - actor = st_texture_cache_bind_pixbuf_property (st_texture_cache_get_default (), - G_OBJECT (window), - "icon"); - g_object_set (actor, "width", (float) size, "height", (float) size, NULL); - return actor; - } - - /** - * shell_app_create_icon_texture: - * - * Look up the icon for this application, and create a #ClutterTexture - * for it at the given size. - * - * Return value: (transfer none): A floating #ClutterActor - */ - ClutterActor * - shell_app_create_icon_texture (ShellApp *app, - int size) - { - GIcon *icon; - gint scale; - ClutterActor *ret; - ShellGlobal *global; - StThemeContext *context; - - global = shell_global_get (); - context = st_theme_context_get_for_stage (shell_global_get_stage (global)); - g_object_get (context, "scale-factor", &scale, NULL); - ret = NULL; - -@@ -415,63 +421,65 @@ shell_app_get_faded_icon (ShellApp *app, int size, ClutterTextDirection directio - texture = st_texture_cache_load (st_texture_cache_get_default (), - cache_key, - ST_TEXTURE_CACHE_POLICY_FOREVER, - shell_app_create_faded_icon_cpu, - &data, - NULL); - g_free (cache_key); - - if (texture != COGL_INVALID_HANDLE) - { - result = clutter_texture_new (); - clutter_texture_set_cogl_texture (CLUTTER_TEXTURE (result), texture); - } - else - { - result = clutter_texture_new (); - g_object_set (result, "opacity", 0, "width", (float) size * scale, "height", (float) size * scale, NULL); - - } - return result; - } - - const char * - shell_app_get_name (ShellApp *app) - { - if (app->info) - return g_app_info_get_name (G_APP_INFO (app->info)); - else - { - MetaWindow *window = window_backed_app_get_window (app); -- const char *name; -+ const char *name = NULL; -+ -+ if (window) -+ name = meta_window_get_title (window); - -- name = meta_window_get_title (window); - if (!name) - name = C_("program", "Unknown"); - return name; - } - } - - const char * - shell_app_get_description (ShellApp *app) - { - if (app->info) - return g_app_info_get_description (G_APP_INFO (app->info)); - else - return NULL; - } - - /** - * shell_app_is_window_backed: - * - * A window backed application is one which represents just an open - * window, i.e. there's no .desktop file assocation, so we don't know - * how to launch it again. - */ - gboolean - shell_app_is_window_backed (ShellApp *app) - { - return app->info == NULL; - } - - typedef struct { - MetaWorkspace *workspace; -@@ -1325,61 +1333,67 @@ app_child_setup (gpointer user_data) - do - res = dup2 (journalfd, 1); - while (G_UNLIKELY (res == -1 && errno == EINTR)); - do - res = dup2 (journalfd, 2); - while (G_UNLIKELY (res == -1 && errno == EINTR)); - (void) close (journalfd); - } - } - #endif - - /** - * shell_app_launch: - * @timestamp: Event timestamp, or 0 for current event timestamp - * @workspace: Start on this workspace, or -1 for default - * @error: A #GError - */ - gboolean - shell_app_launch (ShellApp *app, - guint timestamp, - int workspace, - GError **error) - { - ShellGlobal *global; - GAppLaunchContext *context; - gboolean ret; - - if (app->info == NULL) - { - MetaWindow *window = window_backed_app_get_window (app); -- meta_window_activate (window, timestamp); -+ /* We don't use an error return if there no longer any windows, because the -+ * user attempting to activate a stale window backed app isn't something -+ * we would expect the caller to meaningfully handle or display an error -+ * message to the user. -+ */ -+ if (window) -+ meta_window_activate (window, timestamp); - return TRUE; - } - - global = shell_global_get (); - context = shell_global_create_app_launch_context (global, timestamp, workspace); - - ret = g_desktop_app_info_launch_uris_as_manager (app->info, NULL, - context, - G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, - #ifdef HAVE_SYSTEMD - app_child_setup, (gpointer)shell_app_get_id (app), - #else - NULL, NULL, - #endif - _gather_pid_callback, app, - error); - g_object_unref (context); - - return ret; - } - - /** - * shell_app_launch_action: - * @app: the #ShellApp - * @action_name: the name of the action to launch (as obtained by - * g_desktop_app_info_list_actions()) - * @timestamp: Event timestamp, or 0 for current event timestamp - * @workspace: Start on this workspace, or -1 for default - */ - void --- -2.7.4 - diff --git a/SOURCES/0001-ScreenShield-set-LockedHint-property-from-systemd.patch b/SOURCES/0001-ScreenShield-set-LockedHint-property-from-systemd.patch deleted file mode 100644 index cb03f92..0000000 --- a/SOURCES/0001-ScreenShield-set-LockedHint-property-from-systemd.patch +++ /dev/null @@ -1,69 +0,0 @@ -From bda1257c8299045fa4d4aa09e05f70e404cacc56 Mon Sep 17 00:00:00 2001 -From: Victor Toso -Date: Thu, 12 May 2016 09:25:49 +0200 -Subject: [PATCH] ScreenShield: set LockedHint property from systemd - -Logind recently got support for a hint property in Session Object to -inform if session is Locked or not. It is up to desktop environments -to keep this property up to date. - -https://bugzilla.gnome.org/show_bug.cgi?id=764773 ---- - js/misc/loginManager.js | 3 +++ - js/ui/screenShield.js | 10 +++++++++- - 2 files changed, 12 insertions(+), 1 deletion(-) - -diff --git a/js/misc/loginManager.js b/js/misc/loginManager.js -index b4ed4a6..af0586e 100644 ---- a/js/misc/loginManager.js -+++ b/js/misc/loginManager.js -@@ -40,6 +40,9 @@ const SystemdLoginSessionIface = ' \ - \ - \ - \ -+ \ -+ \ -+ \ - \ - '; - -diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index 3a84468..973604a 100644 ---- a/js/ui/screenShield.js -+++ b/js/ui/screenShield.js -@@ -1125,9 +1125,13 @@ const ScreenShield = new Lang.Class({ - let prevIsActive = this._isActive; - this._isActive = true; - -- if (prevIsActive != this._isActive) -+ if (prevIsActive != this._isActive) { - this.emit('active-changed'); - -+ if (this._loginSession) -+ this._loginSession.SetLockedHintRemote(this._isActive); -+ } -+ - if (this._aboutToSuspend) - this._uninhibitSuspend(); - -@@ -1226,6 +1230,8 @@ const ScreenShield = new Lang.Class({ - this._activationTime = 0; - this._isActive = false; - this.emit('active-changed'); -+ if (this._loginSession) -+ this._loginSession.SetLockedHintRemote(this._isActive); - return; - } - -@@ -1272,6 +1278,8 @@ const ScreenShield = new Lang.Class({ - this._isLocked = false; - this.emit('active-changed'); - this.emit('locked-changed'); -+ if (this._loginSession) -+ this._loginSession.SetLockedHintRemote(this._isActive); - global.set_runtime_state(LOCKED_STATE_STR, null); - }, - --- -2.7.4 - diff --git a/SOURCES/0001-altTab-Don-t-error-out-if-we-don-t-have-windows-for-.patch b/SOURCES/0001-altTab-Don-t-error-out-if-we-don-t-have-windows-for-.patch deleted file mode 100644 index 9159475..0000000 --- a/SOURCES/0001-altTab-Don-t-error-out-if-we-don-t-have-windows-for-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 02d385ba830fa43cb06877f6bfb63ea4aaa1d508 Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Thu, 8 Oct 2015 18:17:54 +0200 -Subject: [PATCH] altTab: Don't error out if we don't have windows for an app - -We are currently erroring out when the tab chain doesn't contain at -least one window for an app which might happen for windows that don't -take focus like xeyes. This leaves us in a state where we can't show -the switcher at all. Let's just ignore these apps instead of looking -broken. ---- - js/ui/altTab.js | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index cee81b0..3850d89 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -449,8 +449,6 @@ const AppSwitcher = new Lang.Class({ - }); - if (appIcon.cachedWindows.length > 0) - this._addIcon(appIcon); -- else if (workspace == null) -- throw new Error('%s appears to be running, but doesn\'t have any windows'.format(appIcon.app.get_name())); - } - - this._curApp = -1; --- -2.7.4 - diff --git a/SOURCES/0001-app-Add-a-construct-only-app-info-property.patch b/SOURCES/0001-app-Add-a-construct-only-app-info-property.patch deleted file mode 100644 index 97c4ff4..0000000 --- a/SOURCES/0001-app-Add-a-construct-only-app-info-property.patch +++ /dev/null @@ -1,178 +0,0 @@ -From 2e05f7170a8c7fb0525334815361c72c08d3894a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 6 Jul 2016 19:56:47 +0200 -Subject: [PATCH] app: Add a construct-only app-info property - -This will allow us to create a ShellApp from JS code, for instance -for .desktop files that aren't known to the AppSystem. ---- - src/shell-app.c | 45 +++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 41 insertions(+), 4 deletions(-) - -diff --git a/src/shell-app.c b/src/shell-app.c -index 1593c89..03369e5 100644 ---- a/src/shell-app.c -+++ b/src/shell-app.c -@@ -96,7 +96,8 @@ enum { - PROP_ID, - PROP_DBUS_ID, - PROP_ACTION_GROUP, -- PROP_MENU -+ PROP_MENU, -+ PROP_APP_INFO - }; - - enum { -@@ -138,6 +139,29 @@ shell_app_get_property (GObject *gobject, - if (app->running_state) - g_value_set_object (value, app->running_state->remote_menu); - break; -+ case PROP_APP_INFO: -+ if (app->info) -+ g_value_set_object (value, app->info); -+ break; -+ default: -+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); -+ break; -+ } -+} -+ -+static void -+shell_app_set_property (GObject *gobject, -+ guint prop_id, -+ const GValue *value, -+ GParamSpec *pspec) -+{ -+ ShellApp *app = SHELL_APP (gobject); -+ -+ switch (prop_id) -+ { -+ case PROP_APP_INFO: -+ _shell_app_set_app_info (app, g_value_get_object (value)); -+ break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec); - break; -@@ -806,9 +830,9 @@ _shell_app_new (GDesktopAppInfo *info) - { - ShellApp *app; - -- app = g_object_new (SHELL_TYPE_APP, NULL); -- -- _shell_app_set_app_info (app, info); -+ app = g_object_new (SHELL_TYPE_APP, -+ "app-info", info, -+ NULL); - - return app; - } -@@ -1405,6 +1429,7 @@ shell_app_class_init(ShellAppClass *klass) - GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - - gobject_class->get_property = shell_app_get_property; -+ gobject_class->set_property = shell_app_set_property; - gobject_class->dispose = shell_app_dispose; - gobject_class->finalize = shell_app_finalize; - -@@ -1483,5 +1508,17 @@ shell_app_class_init(ShellAppClass *klass) - "The primary menu exported by the remote application", - G_TYPE_MENU_MODEL, - G_PARAM_READABLE | G_PARAM_STATIC_STRINGS)); -+ /** -+ * ShellApp:app-info: -+ * -+ * The #GDesktopAppInfo associated with this ShellApp, if any. -+ */ -+ g_object_class_install_property (gobject_class, -+ PROP_APP_INFO, -+ g_param_spec_object ("app-info", -+ "DesktopAppInfo", -+ "The DesktopAppInfo associated with this app", -+ G_TYPE_DESKTOP_APP_INFO, -+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); - - } --- -2.7.4 - -From fef6ef9c90cea5f8a9f13651e2fb1deb03013c7f Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 12 Jul 2016 14:16:41 -0400 -Subject: [PATCH] fixup! app: Add a construct-only app-info property - ---- - src/shell-app.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/src/shell-app.c b/src/shell-app.c -index 36aa47a..9cea064 100644 ---- a/src/shell-app.c -+++ b/src/shell-app.c -@@ -969,61 +969,63 @@ ShellApp * - _shell_app_new_for_window (MetaWindow *window) - { - ShellApp *app; - - app = g_object_new (SHELL_TYPE_APP, NULL); - - app->window_id_string = g_strdup_printf ("window:%d", meta_window_get_stable_sequence (window)); - - _shell_app_add_window (app, window); - - return app; - } - - ShellApp * - _shell_app_new (GDesktopAppInfo *info) - { - ShellApp *app; - - app = g_object_new (SHELL_TYPE_APP, - "app-info", info, - NULL); - - return app; - } - - void - _shell_app_set_app_info (ShellApp *app, - GDesktopAppInfo *info) - { - g_clear_object (&app->info); -- app->info = g_object_ref (info); -+ -+ if (info) -+ app->info = g_object_ref (info); - - if (app->name_collation_key != NULL) - g_free (app->name_collation_key); - app->name_collation_key = g_utf8_collate_key (shell_app_get_name (app), -1); - } - - static void - shell_app_state_transition (ShellApp *app, - ShellAppState state) - { - if (app->state == state) - return; - g_return_if_fail (!(app->state == SHELL_APP_STATE_RUNNING && - state == SHELL_APP_STATE_STARTING)); - app->state = state; - - _shell_app_system_notify_app_state_changed (shell_app_system_get_default (), app); - - g_object_notify (G_OBJECT (app), "state"); - } - - static void - shell_app_on_unmanaged (MetaWindow *window, - ShellApp *app) - { - _shell_app_remove_window (app, window); - } - - static void - shell_app_on_user_time_changed (MetaWindow *window, --- -2.7.4 - diff --git a/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch b/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch index a319633..c182978 100644 --- a/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch +++ b/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch @@ -1,4 +1,4 @@ -From 75ae1a91dd112faef56bb4bf0459c87acc3c09d6 Mon Sep 17 00:00:00 2001 +From 1c4f08191702f6a06e46bc2a3f6dea2d96c851e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 20 May 2015 16:44:00 +0200 Subject: [PATCH] app: Fall back to window title instead of WM_CLASS @@ -11,18 +11,18 @@ a .desktop file ... 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shell-app.c b/src/shell-app.c -index dea610e..f1b71d9 100644 +index 7f61dc369..ab30abf11 100644 --- a/src/shell-app.c +++ b/src/shell-app.c -@@ -420,7 +420,7 @@ shell_app_get_name (ShellApp *app) - MetaWindow *window = window_backed_app_get_window (app); - const char *name; +@@ -265,7 +265,7 @@ shell_app_get_name (ShellApp *app) + const char *name = NULL; -- name = meta_window_get_wm_class (window); -+ name = meta_window_get_title (window); + if (window) +- name = meta_window_get_wm_class (window); ++ name = meta_window_get_title (window); if (!name) name = C_("program", "Unknown"); return name; -- -2.3.6 +2.12.0 diff --git a/SOURCES/0001-authPrompt-allow-empty-response-to-PAM-messages.patch b/SOURCES/0001-authPrompt-allow-empty-response-to-PAM-messages.patch new file mode 100644 index 0000000..e589a81 --- /dev/null +++ b/SOURCES/0001-authPrompt-allow-empty-response-to-PAM-messages.patch @@ -0,0 +1,147 @@ +From 497fa4820897bf6579cfc11b33b383a36faca408 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 14 Jun 2017 10:05:36 -0400 +Subject: [PATCH] authPrompt: allow empty response to PAM messages + +Some PAM modules say "Press enter to continue" or +whatever. We need to support them. + +This commit allows empty responses to PAM questions, +but still requires a non-empty response for username. +--- + js/gdm/authPrompt.js | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index ae03a5b49..a18615059 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -213,61 +213,61 @@ const AuthPrompt = new Lang.Class({ + this._buttonBox.add(this._defaultButtonWell, + { expand: true, + x_fill: false, + y_fill: false, + x_align: St.Align.END, + y_align: St.Align.MIDDLE }); + this.nextButton = new St.Button({ style_class: 'modal-dialog-button button', + button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, + reactive: true, + can_focus: true, + label: _("Next") }); + this.nextButton.connect('clicked', + Lang.bind(this, function() { + this.emit('next'); + })); + this.nextButton.add_style_pseudo_class('default'); + this._buttonBox.add(this.nextButton, + { expand: false, + x_fill: false, + y_fill: false, + x_align: St.Align.END, + y_align: St.Align.END }); + + this._updateNextButtonSensitivity(this._entry.text.length > 0); + + this._entry.clutter_text.connect('text-changed', + Lang.bind(this, function() { + if (!this._userVerifier.hasPendingMessages && this._queryingService && !this._preemptiveAnswer) + this._fadeOutMessage(); + +- this._updateNextButtonSensitivity(this._entry.text.length > 0); ++ this._updateNextButtonSensitivity(this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING); + })); + this._entry.clutter_text.connect('activate', Lang.bind(this, function() { + if (this.nextButton.reactive) + this.emit('next'); + })); + }, + + _onAskQuestion: function(verifier, serviceName, question, passwordChar) { + if (this._queryingService) + this.clear(); + + this._queryingService = serviceName; + if (this._preemptiveAnswer) { + this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer); + this._preemptiveAnswer = null; + return; + } + this.setPasswordChar(passwordChar); + this.setQuestion(question); + + if (passwordChar) { + if (this._userVerifier.reauthenticating) + this.nextButton.label = _("Unlock"); + else + this.nextButton.label = C_("button", "Sign In"); + } else { + this.nextButton.label = _("Next"); + } + + this.updateSensitivity(true); +@@ -446,61 +446,61 @@ const AuthPrompt = new Lang.Class({ + transition: 'easeOutQuad' + }); + }, + + setMessage: function(message, type) { + if (type == GdmUtil.MessageType.ERROR) + this._message.add_style_class_name('login-dialog-message-warning'); + else + this._message.remove_style_class_name('login-dialog-message-warning'); + + if (type == GdmUtil.MessageType.HINT) + this._message.add_style_class_name('login-dialog-message-hint'); + else + this._message.remove_style_class_name('login-dialog-message-hint'); + + if (message) { + Tweener.removeTweens(this._message); + this._message.text = message; + this._message.opacity = 255; + } else { + this._message.opacity = 0; + } + }, + + _updateNextButtonSensitivity: function(sensitive) { + this.nextButton.reactive = sensitive; + this.nextButton.can_focus = sensitive; + }, + + updateSensitivity: function(sensitive) { +- this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0); ++ this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); + this._entry.reactive = sensitive; + this._entry.clutter_text.editable = sensitive; + }, + + hide: function() { + this.setActorInDefaultButtonWell(null, true); + this.actor.hide(); + this._message.opacity = 0; + + this.setUser(null); + + this.updateSensitivity(true); + this._entry.set_text(''); + }, + + setUser: function(user) { + let oldChild = this._userWell.get_child(); + if (oldChild) + oldChild.destroy(); + + if (user) { + let userWidget = new UserWidget.UserWidget(user); + this._userWell.set_child(userWidget.actor); + } + }, + + _onUserStoppedTypePreemptiveAnswer: function() { + if (!this._preemptiveAnswerWatchId || + this._preemptiveAnswer || + this._queryingService) +-- +2.13.0 + diff --git a/SOURCES/0001-calendar-server-Remove-unused-variables-and-function.patch b/SOURCES/0001-calendar-server-Remove-unused-variables-and-function.patch new file mode 100644 index 0000000..52c3444 --- /dev/null +++ b/SOURCES/0001-calendar-server-Remove-unused-variables-and-function.patch @@ -0,0 +1,47 @@ +From 56cfd8d36bdf98af82a302d811e9b01caaff2679 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 21 Mar 2017 22:01:43 +0100 +Subject: [PATCH] calendar-server: Remove unused variables and function + +The code that used them was removed in commit 7e0e224e0eb8. +--- + src/calendar-server/gnome-shell-calendar-server.c | 16 ---------------- + 1 file changed, 16 deletions(-) + +diff --git a/src/calendar-server/gnome-shell-calendar-server.c b/src/calendar-server/gnome-shell-calendar-server.c +index 57bc71bb8..b607b7331 100644 +--- a/src/calendar-server/gnome-shell-calendar-server.c ++++ b/src/calendar-server/gnome-shell-calendar-server.c +@@ -387,21 +387,6 @@ calendar_appointment_init (CalendarAppointment *appointment, + default_zone); + } + +-static icaltimezone * +-resolve_timezone_id (const char *tzid, +- ECalClient *source) +-{ +- icaltimezone *retval; +- +- retval = icaltimezone_get_builtin_timezone_from_tzid (tzid); +- if (!retval) +- { +- e_cal_client_get_timezone_sync (source, tzid, &retval, NULL, NULL); +- } +- +- return retval; +-} +- + static CalendarAppointment * + calendar_appointment_new (icalcomponent *ical, + ECalClient *cal) +@@ -624,7 +609,6 @@ app_load_events (App *app) + { + ECalClient *cal = E_CAL_CLIENT (l->data); + GError *error; +- GSList *objects, *j; + ECalClientView *view; + CollectAppointmentsData data; + +-- +2.12.0 + diff --git a/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch new file mode 100644 index 0000000..d9e9a12 --- /dev/null +++ b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch @@ -0,0 +1,82 @@ +From 62377987c188fd48967c0956c36f36d8f77b0a24 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Jun 2017 12:04:31 -0400 +Subject: [PATCH] data: install process-working.svg to filesystem + +This helps prevent unlock failure on inplace upgrades between +7.3 and 7.4 +--- + data/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/data/Makefile.am b/data/Makefile.am +index 2eee47903..e2b806d61 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -45,60 +45,63 @@ introspection_DATA = \ + $(NULL) + + theme_sources = \ + theme/gnome-shell-high-contrast.scss \ + theme/gnome-shell.scss \ + theme/gnome-shell-sass/_colors.scss \ + theme/gnome-shell-sass/_common.scss \ + theme/gnome-shell-sass/_drawing.scss \ + theme/gnome-shell-sass/_high-contrast-colors.scss \ + $(NULL) + + dist_theme_files = \ + $(theme_sources) \ + theme/Gemfile \ + theme/HACKING \ + theme/README \ + theme/gnome-shell-sass/COPYING \ + theme/gnome-shell-sass/HACKING \ + theme/gnome-shell-sass/NEWS \ + theme/gnome-shell-sass/README \ + theme/gnome-shell-sass/gnome-shell-sass.doap \ + theme/parse-sass.sh \ + $(NULL) + + %.css: %.scss $(theme_sources) + @if test -n "$(SASS)"; then \ + if $(AM_V_P); then PS4= set -x; else echo " GEN $@"; fi; \ + $(SASS) --sourcemap=none -f -q --update $<; \ + fi + ++themedir = $(pkgdatadir)/theme ++dist_theme_DATA = theme/process-working.svg ++ + resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml) + gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $< + resourcedir = $(pkgdatadir) + resource_DATA = gnome-shell-theme.gresource + + backgrounddir = $(pkgdatadir) + background_DATA = perf-background.xml + + perf-background.xml: perf-background.xml.in + $(AM_V_GEN) sed -e "s|@datadir[@]|$(datadir)|" \ + $< > $@ || rm $@ + + keysdir = @GNOME_KEYBINDINGS_KEYSDIR@ + keys_DATA = 50-gnome-shell-system.xml + + gsettings_SCHEMAS = org.gnome.shell.gschema.xml + + %.gschema.xml: %.gschema.xml.in Makefile + $(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \ + $< > $@ || rm $@ + + @GSETTINGS_RULES@ + + # We need to compile schemas at make time + # to run from source tree + gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid) + $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --targetdir=. . + + all-local: gschemas.compiled +-- +2.13.0 + diff --git a/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch b/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch index c7a44aa..45b3ef1 100644 --- a/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch +++ b/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch @@ -1,4 +1,4 @@ -From 04ef143e61be7445bc643298cd1cbd99f9c57383 Mon Sep 17 00:00:00 2001 +From 8a2efe0e5c239a18ad38bba966d73c992eed9dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Mon, 21 Sep 2015 20:18:12 +0200 Subject: [PATCH] extensionSystem: Notify about extension issues on update @@ -8,7 +8,7 @@ Subject: [PATCH] extensionSystem: Notify about extension issues on update 1 file changed, 32 insertions(+) diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js -index a69308d..b5e189c 100644 +index 810fa1577..fe0d8117f 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -7,6 +7,7 @@ const GLib = imports.gi.GLib; @@ -65,5 +65,5 @@ index a69308d..b5e189c 100644 function enableAllExtensions() { -- -2.5.0 +2.12.0 diff --git a/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch new file mode 100644 index 0000000..e261ddf --- /dev/null +++ b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch @@ -0,0 +1,42 @@ +From b888500bb59bbf64ad3c10033e48227396d44cd8 Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Fri, 8 Nov 2013 13:58:09 +0100 +Subject: [PATCH] extensions: Add a SESSION_MODE extension type + +This allows e.g. gnome-tweak-tool to present these extensions in a +different way since they can't be disabled. +--- + js/misc/extensionUtils.js | 3 ++- + js/ui/extensionSystem.js | 2 ++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js +index 1d1221c35..9d7e4496e 100644 +--- a/js/misc/extensionUtils.js ++++ b/js/misc/extensionUtils.js +@@ -15,7 +15,8 @@ const FileUtils = imports.misc.fileUtils; + + const ExtensionType = { + SYSTEM: 1, +- PER_USER: 2 ++ PER_USER: 2, ++ SESSION_MODE: 3 + }; + + // Maps uuid -> metadata object +diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js +index ba332220b..810fa1577 100644 +--- a/js/ui/extensionSystem.js ++++ b/js/ui/extensionSystem.js +@@ -295,6 +295,8 @@ function _loadExtensions() { + let finder = new ExtensionUtils.ExtensionFinder(); + finder.connect('extension-found', function(finder, extension) { + loadExtension(extension); ++ if (Main.sessionMode.enabledExtensions.indexOf(extension.uuid) != -1) ++ extension.type = ExtensionUtils.ExtensionType.SESSION_MODE; + }); + finder.scanExtensions(); + } +-- +2.12.0 + diff --git a/SOURCES/0001-gdm-Handle-absence-of-Fprint.Manager-service.patch b/SOURCES/0001-gdm-Handle-absence-of-Fprint.Manager-service.patch new file mode 100644 index 0000000..e4518d2 --- /dev/null +++ b/SOURCES/0001-gdm-Handle-absence-of-Fprint.Manager-service.patch @@ -0,0 +1,60 @@ +From daa05f09d2a79d160c5e355cf26e4c73d7b0f01b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 14 Mar 2017 21:02:51 +0100 +Subject: [PATCH] gdm: Handle absence of Fprint.Manager service + +We rely on the service to detect whether a fingerprint reader is +present. It is fine to not support fingerprint authentication +when the service is missing, but currently we don't handle this +case at all and end up with a non-functional login screen. + +https://bugzilla.gnome.org/show_bug.cgi?id=780063 +--- + js/gdm/fingerprint.js | 8 +++++++- + js/gdm/util.js | 5 +++-- + 2 files changed, 10 insertions(+), 3 deletions(-) + +diff --git a/js/gdm/fingerprint.js b/js/gdm/fingerprint.js +index bce0bc6a7..2aeb377ce 100644 +--- a/js/gdm/fingerprint.js ++++ b/js/gdm/fingerprint.js +@@ -23,6 +23,12 @@ function FprintManager() { + g_object_path: '/net/reactivated/Fprint/Manager', + g_flags: (Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) }); + +- self.init(null); ++ try { ++ self.init(null); ++ } catch(e) { ++ log('Failed to connect to Fprint service: ' + e.message); ++ return null; ++ } ++ + return self; + } +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 9517150f0..0048c85bd 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -132,7 +132,7 @@ const ShellUserVerifier = new Lang.Class({ + this._settings.connect('changed', + Lang.bind(this, this._updateDefaultService)); + +- this._fprintManager = new Fprint.FprintManager(); ++ this._fprintManager = Fprint.FprintManager(); + this._smartcardManager = SmartcardManager.getSmartcardManager(); + + // We check for smartcards right away, since an inserted smartcard +@@ -294,7 +294,8 @@ const ShellUserVerifier = new Lang.Class({ + _checkForFingerprintReader: function() { + this._haveFingerprintReader = false; + +- if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY)) { ++ if (!this._settings.get_boolean(FINGERPRINT_AUTHENTICATION_KEY) || ++ this._fprintManager == null) { + this._updateDefaultService(); + return; + } +-- +2.12.0 + diff --git a/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch b/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch index 487e9c3..a0556f7 100644 --- a/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch +++ b/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch @@ -1,4 +1,4 @@ -From 266607d2b5ce7bb74f5954897460261af21b9ff0 Mon Sep 17 00:00:00 2001 +From 03f5d81342e096ab331308c99ac4b1c15dd5a448 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 18 Aug 2015 12:02:17 -0400 Subject: [PATCH] gdm: honor timed login delay even if animations disabled @@ -14,42 +14,14 @@ has noticed the user is idle for 5 seconds. This commit addresses that problem by initiating timed login and the animation from a main loop timeout, instead of using the tweener api. --- - js/gdm/loginDialog.js | 38 ++++++++++++++++++++++++++++---------- - src/gvc | 2 +- - 2 files changed, 29 insertions(+), 11 deletions(-) + js/gdm/loginDialog.js | 37 +++++++++++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index a51ffd5..4b4d232 100644 +index 0b6c0b50a..45eca18f7 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -80,74 +80,90 @@ const UserListItem = new Lang.Class({ - scale_x: 0 }); - layout.add(this._timedLoginIndicator); - - this.actor.connect('clicked', Lang.bind(this, this._onClicked)); - this._onUserChanged(); - }, - - _onUserChanged: function() { - this._updateLoggedIn(); - }, - - _updateLoggedIn: function() { - if (this.user.is_logged_in()) - this.actor.add_style_pseudo_class('logged-in'); - else - this.actor.remove_style_pseudo_class('logged-in'); - }, - - _onDestroy: function() { - this._user.disconnect(this._userChangedId); - }, - - _onClicked: function() { - this.emit('activate'); - }, - - showTimedLoginIndicator: function(time) { +@@ -107,20 +107,34 @@ const UserListItem = new Lang.Class({ let hold = new Batch.Hold(); this.hideTimedLoginIndicator(); @@ -71,9 +43,7 @@ index a51ffd5..4b4d232 100644 + let currentTime = GLib.get_monotonic_time(); + let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; + this._timedLoginIndicator.scale_x = elapsedTime / time; -+ log("elasped time: " + elapsedTime + " time: " + time); + if (elapsedTime >= time) { -+ log("releasing hold"); + this._timedLoginTimeoutId = 0; + hold.release(); + return GLib.SOURCE_REMOVE; @@ -96,30 +66,6 @@ index a51ffd5..4b4d232 100644 this._timedLoginIndicator.scale_x = 0.; } }); - Signals.addSignalMethods(UserListItem.prototype); - - const UserList = new Lang.Class({ - Name: 'UserList', - - _init: function() { - this.actor = new St.ScrollView({ style_class: 'login-dialog-user-list-view'}); - this.actor.set_policy(Gtk.PolicyType.NEVER, - Gtk.PolicyType.AUTOMATIC); - - this._box = new St.BoxLayout({ vertical: true, - style_class: 'login-dialog-user-list', - pseudo_class: 'expanded' }); - - this.actor.add_actor(this._box); - this._items = {}; - - this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems)); - }, - - _moveFocusToItems: function() { - let hasItems = Object.keys(this._items).length > 0; - - if (!hasItems) - return; - - if (global.stage.get_key_focus() != this.actor) +-- +2.12.0 + diff --git a/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch b/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch new file mode 100644 index 0000000..c6edacd --- /dev/null +++ b/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch @@ -0,0 +1,29 @@ +From 2af504d2aac532fa7e7e3a628198b337440e3d34 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 1 Jul 2015 11:18:44 -0400 +Subject: [PATCH] gdm: use password authentication if all schemes are disabled + +This prevents a traceback, at least. +--- + js/gdm/util.js | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 2ff59cb75..1aa52a17f 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -414,6 +414,11 @@ const ShellUserVerifier = new Lang.Class({ + this._defaultService = SMARTCARD_SERVICE_NAME; + else if (this._haveFingerprintReader) + this._defaultService = FINGERPRINT_SERVICE_NAME; ++ ++ if (!this._defaultService) { ++ log("no authentication service is enabled, using password authentication"); ++ this._defaultService = PASSWORD_SERVICE_NAME; ++ } + }, + + _startService: function(serviceName) { +-- +2.12.0 + diff --git a/SOURCES/0001-gdmUtil-Fix-auth-prompt-drawing-over-user-list.patch b/SOURCES/0001-gdmUtil-Fix-auth-prompt-drawing-over-user-list.patch new file mode 100644 index 0000000..e5c5085 --- /dev/null +++ b/SOURCES/0001-gdmUtil-Fix-auth-prompt-drawing-over-user-list.patch @@ -0,0 +1,84 @@ +From cf6f7eb276edd4ae9b497e54167ea10f7d804f21 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 7 Jun 2017 15:00:11 -0400 +Subject: [PATCH] gdmUtil: Fix auth prompt drawing over user list + +If the user fails to enter their password then hits escape, we +jump back to the user list, then ask again for a password in a +garbled screen. this commit fixes that by skipping a retry if +the operation is cancelled. +--- + js/gdm/util.js | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 6876cbef9..03fd344ef 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -513,61 +513,62 @@ const ShellUserVerifier = new Lang.Class({ + _onVerificationComplete: function() { + this.emit('verification-complete'); + }, + + _cancelAndReset: function() { + this.cancel(); + this._onReset(); + }, + + _retry: function() { + this.begin(this._userName, new Batch.Hold()); + }, + + _verificationFailed: function(retry) { + // For Not Listed / enterprise logins, immediately reset + // the dialog + // Otherwise, we allow ALLOWED_FAILURES attempts. After that, we + // go back to the welcome screen. + + this._failCounter++; + let canRetry = retry && this._userName && + this._failCounter < this._settings.get_int(ALLOWED_FAILURES_KEY); + + if (canRetry) { + if (!this.hasPendingMessages) { + this._retry(); + } else { + let signalId = this.connect('no-more-messages', + Lang.bind(this, function() { + this.disconnect(signalId); +- this._retry(); ++ if (this._cancellable && !this._cancellable.is_cancelled()) ++ this._retry(); + })); + } + } else { + if (!this.hasPendingMessages) { + this._cancelAndReset(); + } else { + let signalId = this.connect('no-more-messages', + Lang.bind(this, function() { + this.disconnect(signalId); + this._cancelAndReset(); + })); + } + } + + this.emit('verification-failed'); + }, + + _onConversationStopped: function(client, serviceName) { + // If the login failed with the preauthenticated oVirt credentials + // then discard the credentials and revert to default authentication + // mechanism. + if (this.serviceIsForeground(OVIRT_SERVICE_NAME)) { + this._oVirtCredentialsManager.resetToken(); + this._preemptingService = null; + this._verificationFailed(false); + return; + } + + // if the password service fails, then cancel everything. + // But if, e.g., fingerprint fails, still give +-- +2.13.0 + diff --git a/SOURCES/0001-loginDialog-make-info-messages-themed.patch b/SOURCES/0001-loginDialog-make-info-messages-themed.patch new file mode 100644 index 0000000..b813224 --- /dev/null +++ b/SOURCES/0001-loginDialog-make-info-messages-themed.patch @@ -0,0 +1,159 @@ +From 73fa23c14f1582dc959c767454459ab8051e7e5d Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 26 Jun 2017 14:35:05 -0400 +Subject: [PATCH] loginDialog: make info messages themed + +They were lacking a definition before leading them to +show up invisible. +--- + data/theme/gnome-shell-high-contrast.css | 6 ++++-- + data/theme/gnome-shell.css | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) + +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index 0325fea87..d89ec4a3a 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -1598,63 +1598,65 @@ StScrollBar { + box-shadow: inset 0 1px #5d696d; + text-shadow: 0 1px black; + icon-shadow: 0 1px black; } + .login-dialog .modal-dialog-button:default:active { + color: white; + border-color: rgba(0, 0, 0, 0.7); + background-color: #1c5187; + box-shadow: inset 0 0 black; + text-shadow: none; + icon-shadow: none; } + .login-dialog .modal-dialog-button:default:insensitive { + color: gray; + border-color: rgba(0, 0, 0, 0.7); + background-color: rgba(62, 67, 69, 0.7); + box-shadow: none; + text-shadow: none; + icon-shadow: none; } + + .login-dialog-logo-bin { + padding: 24px 0px; } + + .login-dialog-banner { + color: #d6d6d1; } + + .login-dialog-button-box { + spacing: 5px; } + + .login-dialog-message-warning { + color: #f57900; } + +-.login-dialog-message-hint { ++.login-dialog-message-hint, .login-dialog-message { ++ color: #bebeb6; + padding-top: 0; +- padding-bottom: 20px; } ++ padding-bottom: 20px; ++ min-height: 2.75em; } + + .login-dialog-user-selection-box { + padding: 100px 0px; } + .login-dialog-user-selection-box .login-dialog-not-listed-label { + padding-left: 2px; } + .login-dialog-not-listed-button:focus .login-dialog-user-selection-box .login-dialog-not-listed-label, .login-dialog-not-listed-button:hover .login-dialog-user-selection-box .login-dialog-not-listed-label { + color: #eeeeec; } + + .login-dialog-not-listed-label { + font-size: 90%; + font-weight: bold; + color: #a6a69b; + padding-top: 1em; } + + .login-dialog-user-list-view { + -st-vfade-offset: 1em; } + + .login-dialog-user-list { + spacing: 12px; + padding: .2em; + width: 23em; } + .login-dialog-user-list:expanded .login-dialog-user-list-item:focus { + background-color: #215d9c; + color: #ffffff; } + .login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in { + border-right: 2px solid #215d9c; } + + .login-dialog-user-list-item { + border-radius: 5px; + padding: .2em; +diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css +index e2a442ecb..bbc6b8434 100644 +--- a/data/theme/gnome-shell.css ++++ b/data/theme/gnome-shell.css +@@ -1598,63 +1598,65 @@ StScrollBar { + box-shadow: inset 0 1px #5d696d; + text-shadow: 0 1px black; + icon-shadow: 0 1px black; } + .login-dialog .modal-dialog-button:default:active { + color: white; + border-color: rgba(0, 0, 0, 0.7); + background-color: #1c5187; + box-shadow: inset 0 0 black; + text-shadow: none; + icon-shadow: none; } + .login-dialog .modal-dialog-button:default:insensitive { + color: #949796; + border-color: rgba(0, 0, 0, 0.7); + background-color: rgba(66, 72, 73, 0.7); + box-shadow: none; + text-shadow: none; + icon-shadow: none; } + + .login-dialog-logo-bin { + padding: 24px 0px; } + + .login-dialog-banner { + color: #d6d6d1; } + + .login-dialog-button-box { + spacing: 5px; } + + .login-dialog-message-warning { + color: #f57900; } + +-.login-dialog-message-hint { ++.login-dialog-message-hint, .login-dialog-message { ++ color: #bebeb6; + padding-top: 0; +- padding-bottom: 20px; } ++ padding-bottom: 20px; ++ min-height: 2.75em; } + + .login-dialog-user-selection-box { + padding: 100px 0px; } + .login-dialog-user-selection-box .login-dialog-not-listed-label { + padding-left: 2px; } + .login-dialog-not-listed-button:focus .login-dialog-user-selection-box .login-dialog-not-listed-label, .login-dialog-not-listed-button:hover .login-dialog-user-selection-box .login-dialog-not-listed-label { + color: #eeeeec; } + + .login-dialog-not-listed-label { + font-size: 90%; + font-weight: bold; + color: #a6a69b; + padding-top: 1em; } + + .login-dialog-user-list-view { + -st-vfade-offset: 1em; } + + .login-dialog-user-list { + spacing: 12px; + padding: .2em; + width: 23em; } + .login-dialog-user-list:expanded .login-dialog-user-list-item:focus { + background-color: #215d9c; + color: #ffffff; } + .login-dialog-user-list:expanded .login-dialog-user-list-item:logged-in { + border-right: 2px solid #215d9c; } + + .login-dialog-user-list-item { + border-radius: 5px; + padding: .2em; +-- +2.13.0 + diff --git a/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch b/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch index 8e70092..133c187 100644 --- a/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch +++ b/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch @@ -1,4 +1,4 @@ -From 46e5ac207a244960840a1d8108b780dd95a8146a Mon Sep 17 00:00:00 2001 +From 80c3466bf9752567f557b4db2fe41d5b72e2c257 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 15 Sep 2015 14:04:07 -0400 Subject: [PATCH] magnifier: don't spew to console when focus moves around @@ -9,107 +9,43 @@ depends on function names shipped in later versions of at-spi2. This commit works around the problem by using the names of the functions, as they existed in 2.8. --- - js/ui/magnifier.js | 17 +++++++++++++++-- - 1 file changed, 15 insertions(+), 2 deletions(-) + js/ui/magnifier.js | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js -index 101c14c..2fe99c6 100644 +index 6438c64c3..6312524e3 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js -@@ -690,78 +690,91 @@ const ZoomRegion = new Lang.Class({ - this._background = null; - this._uiGroupClone = null; - this._mouseSourceActor = mouseSourceActor; - this._mouseActor = null; - this._crossHairs = null; - this._crossHairsActor = null; - - this._viewPortX = 0; - this._viewPortY = 0; - this._viewPortWidth = global.screen_width; - this._viewPortHeight = global.screen_height; - this._xCenter = this._viewPortWidth / 2; - this._yCenter = this._viewPortHeight / 2; - this._xMagFactor = 1; - this._yMagFactor = 1; - this._followingCursor = false; - this._xFocus = 0; - this._yFocus = 0; - this._xCaret = 0; - this._yCaret = 0; - - Main.layoutManager.connect('monitors-changed', - Lang.bind(this, this._monitorsChanged)); - this._focusCaretTracker.connect('caret-moved', - Lang.bind(this, this._updateCaret)); - this._focusCaretTracker.connect('focus-changed', - Lang.bind(this, this._updateFocus)); +@@ -724,7 +724,13 @@ const ZoomRegion = new Lang.Class({ }, _updateFocus: function(caller, event) { - let component = event.source.get_component_iface(); + let component; + -+ if (typeof event.source.get_component_iface === "function") { ++ if (typeof event.source.get_component_iface === 'function') + component = event.source.get_component_iface(); -+ } else if (typeof event.source.get_component === "function") { ++ else if (typeof event.source.get_component === 'function') + component = event.source.get_component(); -+ } + if (!component || event.detail1 != 1) return; let extents; - try { - extents = component.get_extents(Atspi.CoordType.SCREEN); - } catch(e) { - log('Failed to read extents of focused component: ' + e.message); - return; - } - - [this._xFocus, this._yFocus] = [extents.x + (extents.width / 2), - extents.y + (extents.height / 2)]; - this._centerFromFocusPosition(); +@@ -741,7 +747,13 @@ const ZoomRegion = new Lang.Class({ }, _updateCaret: function(caller, event) { - let text = event.source.get_text_iface(); + let text; + -+ if (typeof event.source.get_text_iface === "function") { ++ if (typeof event.source.get_text_iface === 'function') + text = event.source.get_text_iface(); -+ } else if (typeof event.source.get_text === "function") { ++ else if (typeof event.source.get_text === 'function') + text = event.source.get_text(); -+ } ++ if (!text) return; let extents; - try { - extents = text.get_character_extents(text.get_caret_offset(), 0); - } catch(e) { - log('Failed to read extents of text caret: ' + e.message); - return; - } - - [this._xCaret, this._yCaret] = [extents.x, extents.y]; - this._centerFromCaretPosition(); - }, - - /** - * setActive: - * @activate: Boolean to show/hide the ZoomRegion. - */ - setActive: function(activate) { - if (activate == this.isActive()) - return; - - if (activate) { - this._createActors(); - if (this._isMouseOverRegion()) - this._magnifier.hideSystemCursor(); - this._updateMagViewGeometry(); - this._updateCloneGeometry(); - this._updateMousePosition(); - } else { -- -2.5.0 +2.12.0 diff --git a/SOURCES/0001-messageTray-Emit-signal-when-notifications-are-enabl.patch b/SOURCES/0001-messageTray-Emit-signal-when-notifications-are-enabl.patch deleted file mode 100644 index 825bf7f..0000000 --- a/SOURCES/0001-messageTray-Emit-signal-when-notifications-are-enabl.patch +++ /dev/null @@ -1,32 +0,0 @@ -From e598852366619893def62b0a99ef69bc7cfc5c0f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Tue, 12 May 2015 21:27:59 +0200 -Subject: [PATCH] messageTray: Emit signal when notifications are - enabled/disabled - -Since the introduction of per-source notification policy in commit -098bd4509ba0, the NotificationPolicy::enable-changed signal has been -used to track the 'enable' settings. However as we never actually -emitted that signal, this never worked without a restart - oops. - -https://bugzilla.gnome.org/show_bug.cgi?id=749279 ---- - js/ui/messageTray.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js -index a034fc3..f1ce7f2 100644 ---- a/js/ui/messageTray.js -+++ b/js/ui/messageTray.js -@@ -392,6 +392,8 @@ const NotificationApplicationPolicy = new Lang.Class({ - - _changed: function(settings, key) { - this.emit('policy-changed', key); -+ if (key == 'enable') -+ this.emit('enable-changed'); - }, - - _canonicalizeId: function(id) { --- -2.3.6 - diff --git a/SOURCES/0001-network-Always-show-primary-icon-when-connected.patch b/SOURCES/0001-network-Always-show-primary-icon-when-connected.patch deleted file mode 100644 index 2d979d1..0000000 --- a/SOURCES/0001-network-Always-show-primary-icon-when-connected.patch +++ /dev/null @@ -1,40 +0,0 @@ -From b9b12009cfa24d77d33927c3d011036f4591d37c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 19 May 2016 18:22:02 +0200 -Subject: [PATCH] network: Always show primary icon when connected - ---- - js/ui/status/network.js | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/js/ui/status/network.js b/js/ui/status/network.js -index 9f4faa4..0a345eb 100644 ---- a/js/ui/status/network.js -+++ b/js/ui/status/network.js -@@ -2069,13 +2069,20 @@ const NMApplet = new Lang.Class({ - }, - - _updateIcon: function() { -- if (!this._client.networking_enabled || !this._mainConnection) { -+ if (!this._client.networking_enabled) { - this._primaryIndicator.visible = false; - } else { -- let dev = this._mainConnection._primaryDevice; -- this._primaryIndicator.visible = (dev != null); -+ let dev = null; -+ if (this._mainConnection) -+ dev = this._mainConnection._primaryDevice; -+ -+ let state = this._client.get_state(); -+ let connected = state == NetworkManager.State.CONNECTED_GLOBAL; -+ this._primaryIndicator.visible = (dev != null) || connected; - if (dev) - this._primaryIndicator.icon_name = dev.getIndicatorIcon(); -+ else if (connected) -+ this._primaryIndicator.icon_name = 'network-wired-symbolic'; - } - - this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon(); --- -2.7.4 - diff --git a/SOURCES/0001-network-Close-Wifi-selection-dialog-when-appropriate.patch b/SOURCES/0001-network-Close-Wifi-selection-dialog-when-appropriate.patch new file mode 100644 index 0000000..d7ecde1 --- /dev/null +++ b/SOURCES/0001-network-Close-Wifi-selection-dialog-when-appropriate.patch @@ -0,0 +1,38 @@ +From 465e059a0c8a68301f8071a1cc14c817d2337012 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 14 Mar 2017 20:32:50 +0100 +Subject: [PATCH] network: Close Wifi selection dialog when appropriate + +Currently when the wifi selection dialog is open when the screen lock is +activated, the dialog remains visible above the shield. This is clearly +broken, so close the dialog automatically on session mode changes if the +mode doesn't allow settings (as changing the access point is arguably a +user setting). + +https://bugzilla.gnome.org/show_bug.cgi?id=780054 +--- + js/ui/status/network.js | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/js/ui/status/network.js b/js/ui/status/network.js +index 11ca16014..842f6be6a 100644 +--- a/js/ui/status/network.js ++++ b/js/ui/status/network.js +@@ -769,6 +769,14 @@ const NMWirelessDialog = new Lang.Class({ + this._scanTimeoutId = Mainloop.timeout_add_seconds(15, Lang.bind(this, this._onScanTimeout)); + GLib.Source.set_name_by_id(this._scanTimeoutId, '[gnome-shell] this._onScanTimeout'); + this._onScanTimeout(); ++ ++ let id = Main.sessionMode.connect('updated', () => { ++ if (Main.sessionMode.allowSettings) ++ return; ++ ++ Main.sessionMode.disconnect(id); ++ this.close(); ++ }); + }, + + destroy: function() { +-- +2.12.0 + diff --git a/SOURCES/0001-network-Fix-initial-visibility-of-summary-item.patch b/SOURCES/0001-network-Fix-initial-visibility-of-summary-item.patch new file mode 100644 index 0000000..142ac23 --- /dev/null +++ b/SOURCES/0001-network-Fix-initial-visibility-of-summary-item.patch @@ -0,0 +1,26 @@ +From 73768b8e327066f691188a5f6619d04c4fb56dda Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 31 May 2017 18:55:09 +0200 +Subject: [PATCH] network: Fix initial visibility of summary item + +This was fixed when upstreaming the patch, but never made it back +into the RHEL version ... +--- + js/ui/status/network.js | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/js/ui/status/network.js b/js/ui/status/network.js +index 842f6be6a..e42ebabd5 100644 +--- a/js/ui/status/network.js ++++ b/js/ui/status/network.js +@@ -1607,6 +1607,7 @@ const DeviceCategory = new Lang.Class({ + + this._summaryItem.menu.addSettingsAction(_('Network Settings'), + 'gnome-network-panel.desktop'); ++ this._summaryItem.actor.hide(); + + }, + +-- +2.13.0 + diff --git a/SOURCES/0001-network-Summarize-sections-with-too-many-devices.patch b/SOURCES/0001-network-Summarize-sections-with-too-many-devices.patch index e86b185..501f36f 100644 --- a/SOURCES/0001-network-Summarize-sections-with-too-many-devices.patch +++ b/SOURCES/0001-network-Summarize-sections-with-too-many-devices.patch @@ -1,4 +1,4 @@ -From cd541f612cc7340450f4c874b7bf0ef4f84b177c Mon Sep 17 00:00:00 2001 +From cd1462d01cce3741330cb013b5fff9f1267ddabd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 13 May 2016 19:42:04 +0200 Subject: [PATCH] network: Summarize sections with too many devices @@ -11,14 +11,14 @@ bad. The system menu does not lend itself to scrolling, so handle this case instead by summarizing sections ("n connections") where the number of devices exceeds a threshold. --- - js/ui/status/network.js | 88 ++++++++++++++++++++++++++++++++++++++++++------- - 1 file changed, 76 insertions(+), 12 deletions(-) + js/ui/status/network.js | 87 ++++++++++++++++++++++++++++++++++++++++++------- + 1 file changed, 75 insertions(+), 12 deletions(-) diff --git a/js/ui/status/network.js b/js/ui/status/network.js -index 3ce228c..b8bd375 100644 +index 337ea3fa4..c386bff1d 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js -@@ -39,6 +39,8 @@ const NMAccessPointSecurity = { +@@ -40,6 +40,8 @@ const NMAccessPointSecurity = { WPA2_ENT: 6 }; @@ -27,7 +27,7 @@ index 3ce228c..b8bd375 100644 // small optimization, to avoid using [] all the time const NM80211Mode = NetworkManager['80211Mode']; const NM80211ApFlags = NetworkManager['80211ApFlags']; -@@ -1552,6 +1554,73 @@ const NMVPNSection = new Lang.Class({ +@@ -1564,6 +1566,72 @@ const NMVPNSection = new Lang.Class({ }); Signals.addSignalMethods(NMVPNSection.prototype); @@ -53,7 +53,6 @@ index 3ce228c..b8bd375 100644 + + this._summaryItem.menu.addSettingsAction(_('Network Settings'), + 'gnome-network-panel.desktop'); -+ this._summaryItem.actor.hide(); + + }, + @@ -101,7 +100,7 @@ index 3ce228c..b8bd375 100644 const NMApplet = new Lang.Class({ Name: 'NMApplet', Extends: PanelMenu.SystemIndicator, -@@ -1595,15 +1664,6 @@ const NMApplet = new Lang.Class({ +@@ -1607,15 +1675,6 @@ const NMApplet = new Lang.Class({ this._tryLateInit(); }, @@ -117,7 +116,7 @@ index 3ce228c..b8bd375 100644 _tryLateInit: function() { if (!this._client || !this._settings) return; -@@ -1620,9 +1680,13 @@ const NMApplet = new Lang.Class({ +@@ -1632,9 +1691,13 @@ const NMApplet = new Lang.Class({ this._nmDevices = []; this._devices = { }; @@ -135,5 +134,5 @@ index 3ce228c..b8bd375 100644 this._vpnSection = new NMVPNSection(this._client); this._vpnSection.connect('activation-failed', Lang.bind(this, this._onActivationFailed)); -- -2.7.4 +2.12.0 diff --git a/SOURCES/0001-objectManager-handle-proxies-coming-and-going.patch b/SOURCES/0001-objectManager-handle-proxies-coming-and-going.patch new file mode 100644 index 0000000..e5a6f41 --- /dev/null +++ b/SOURCES/0001-objectManager-handle-proxies-coming-and-going.patch @@ -0,0 +1,252 @@ +From 1fc22df08e365820fedccf92b95601859ce63f5b Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 7 Oct 2016 15:40:14 -0400 +Subject: [PATCH 1/2] objectManager: handle proxies coming and going + +Ever since commit b8e29ae8c78658917c8a8ddd391667d7d9e36971 +(I think), start up is littered with this message: + + Gjs-WARNING **: JS ERROR: could not get remote objects for service + org.gnome.SettingsDaemon.Smartcard path + +since gnome-shell is now started before gnome-settings-daemon. + +This commit addresses the problem by making the object manager code +not try to autostart its proxy, and instead wait for it to appear. + +https://bugzilla.gnome.org/show_bug.cgi?id=772589 +--- + js/misc/objectManager.js | 34 ++++++++++++++++++++++++++++++++-- + 1 files changed, 34 insertions(+), 2 deletions(-) + +diff --git a/js/misc/objectManager.js b/js/misc/objectManager.js +index 225204347..5db7588b6 100644 +--- a/js/misc/objectManager.js ++++ b/js/misc/objectManager.js +@@ -19,101 +19,104 @@ const ObjectManagerIface = ' \ + \ + \ + \ + \ + \ + \ + '; + + const ObjectManagerInfo = Gio.DBusInterfaceInfo.new_for_xml(ObjectManagerIface); + + const ObjectManager = new Lang.Class({ + Name: 'ObjectManager', + _init: function(params) { + params = Params.parse(params, { connection: null, + name: null, + objectPath: null, + knownInterfaces: null, + cancellable: null, + onLoaded: null }); + + this._connection = params.connection; + this._serviceName = params.name; + this._managerPath = params.objectPath; + this._cancellable = params.cancellable; + + this._managerProxy = new Gio.DBusProxy({ g_connection: this._connection, + g_interface_name: ObjectManagerInfo.name, + g_interface_info: ObjectManagerInfo, + g_name: this._serviceName, + g_object_path: this._managerPath, +- g_flags: Gio.DBusProxyFlags.NONE }); ++ g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START }); + + this._interfaceInfos = {}; + this._objects = {}; + this._interfaces = {}; + this._onLoaded = params.onLoaded; + + if (params.knownInterfaces) + this._registerInterfaces(params.knownInterfaces); + + // Start out inhibiting load until at least the proxy + // manager is loaded and the remote objects are fetched + this._numLoadInhibitors = 1; + this._managerProxy.init_async(GLib.PRIORITY_DEFAULT, + this._cancellable, + Lang.bind(this, this._onManagerProxyLoaded)); + }, + + _tryToCompleteLoad: function() { ++ if (this._numLoadInhibitors == 0) ++ return; ++ + this._numLoadInhibitors--; + if (this._numLoadInhibitors == 0) { + if (this._onLoaded) + this._onLoaded(); + } + }, + + _addInterface: function(objectPath, interfaceName, onFinished) { + let info = this._interfaceInfos[interfaceName]; + + if (!info) { + if (onFinished) + onFinished(); + return; + } + + let proxy = new Gio.DBusProxy({ g_connection: this._connection, + g_name: this._serviceName, + g_object_path: objectPath, + g_interface_name: interfaceName, + g_interface_info: info, +- g_flags: Gio.DBusProxyFlags.NONE }); ++ g_flags: Gio.DBusProxyFlags.DO_NOT_AUTO_START }); + + proxy.init_async(GLib.PRIORITY_DEFAULT, + this._cancellable, + Lang.bind(this, function(initable, result) { + let error = null; + try { + initable.init_finish(result); + } catch(e) { + logError(e, 'could not initialize proxy for interface ' + interfaceName); + + if (onFinished) + onFinished(); + return; + } + + let isNewObject; + if (!this._objects[objectPath]) { + this._objects[objectPath] = {}; + isNewObject = true; + } else { + isNewObject = false; + } + + this._objects[objectPath][interfaceName] = proxy; + + if (!this._interfaces[interfaceName]) + this._interfaces[interfaceName] = []; + + this._interfaces[interfaceName].push(proxy); + +@@ -154,92 +157,119 @@ const ObjectManager = new Lang.Class({ + }, + + _onManagerProxyLoaded: function(initable, result) { + let error = null; + try { + initable.init_finish(result); + } catch(e) { + logError(e, 'could not initialize object manager for object ' + params.name); + + this._tryToCompleteLoad(); + return; + } + + this._managerProxy.connectSignal('InterfacesAdded', + Lang.bind(this, function(objectManager, sender, [objectPath, interfaces]) { + let interfaceNames = Object.keys(interfaces); + for (let i = 0; i < interfaceNames.length; i++) + this._addInterface(objectPath, interfaceNames[i]); + })); + this._managerProxy.connectSignal('InterfacesRemoved', + Lang.bind(this, function(objectManager, sender, [objectPath, interfaceNames]) { + for (let i = 0; i < interfaceNames.length; i++) + this._removeInterface(objectPath, interfaceNames[i]); + })); + + if (Object.keys(this._interfaceInfos).length == 0) { + this._tryToCompleteLoad(); + return; + } + ++ this._managerProxy.connect('notify::g-name-owner', Lang.bind(this, function() { ++ if (this._managerProxy.g_name_owner) ++ this._onNameAppeared(); ++ else ++ this._onNameVanished(); ++ })); ++ ++ if (this._managerProxy.g_name_owner) ++ this._onNameAppeared(); ++ }, ++ ++ _onNameAppeared: function() { + this._managerProxy.GetManagedObjectsRemote(Lang.bind(this, function(result, error) { + if (!result) { + if (error) { + logError(error, 'could not get remote objects for service ' + this._serviceName + ' path ' + this._managerPath); + } + + this._tryToCompleteLoad(); + return; + } + + let [objects] = result; + + let objectPaths = Object.keys(objects); + for (let i = 0; i < objectPaths.length; i++) { + let objectPath = objectPaths[i]; + let object = objects[objectPath]; + + let interfaceNames = Object.getOwnPropertyNames(object); + for (let j = 0; j < interfaceNames.length; j++) { + let interfaceName = interfaceNames[j]; + + // Prevent load from completing until the interface is loaded + this._numLoadInhibitors++; + this._addInterface(objectPath, + interfaceName, + Lang.bind(this, this._tryToCompleteLoad)); + } + } + this._tryToCompleteLoad(); + })); + }, + ++ _onNameVanished: function() { ++ let objectPaths = Object.keys(this._objects); ++ for (let i = 0; i < objectPaths.length; i++) { ++ let object = this._objects[objectPaths]; ++ ++ let interfaceNames = Object.keys(object); ++ for (let j = 0; i < interfaceNames.length; i++) { ++ let interfaceName = interfaceNames[i]; ++ ++ if (object[interfaceName]) ++ this._removeInterface(objectPath, interfaceName); ++ } ++ } ++ }, ++ + _registerInterfaces: function(interfaces) { + for (let i = 0; i < interfaces.length; i++) { + let info = Gio.DBusInterfaceInfo.new_for_xml(interfaces[i]); + this._interfaceInfos[info.name] = info; + } + }, + + getProxy: function(objectPath, interfaceName) { + let object = this._objects[objectPath]; + + if (!object) + return null; + + return object[interfaceName]; + }, + + getProxiesForInterface: function(interfaceName) { + let proxyList = this._interfaces[interfaceName]; + + if (!proxyList) + return []; + + return proxyList; + }, + + getAllProxies: function() { + let proxies = []; + + let objectPaths = Object.keys(this._objects); + for (let i = 0; i < objectPaths.length; i++) { diff --git a/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch index edff1ca..ea0e747 100644 --- a/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch +++ b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch @@ -1,35 +1,48 @@ -From 16febef9581d3689fc61861086432e188d4dcb2d Mon Sep 17 00:00:00 2001 +From ea91b6c39c1c17abca0a5f34b3047a5cd5314127 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 15 Jan 2014 16:45:34 -0500 Subject: [PATCH] panel: add an icon to the ActivitiesButton Requested by brand --- - data/theme/gnome-shell.css | 5 +++++ - js/ui/panel.js | 9 ++++++++- - 2 files changed, 13 insertions(+), 1 deletion(-) + data/theme/gnome-shell-high-contrast.css | 3 +++ + data/theme/gnome-shell.css | 3 +++ + js/ui/panel.js | 9 ++++++++- + 3 files changed, 14 insertions(+), 1 deletion(-) +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index 28922be77..3ce5278e1 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -685,6 +685,9 @@ StScrollBar { + -st-icon-style: symbolic; + margin-left: 4px; + margin-right: 4px; } ++ #panel .panel-button .panel-logo-icon { ++ padding-right: .4em; ++ icon-size: 1em; } + #panel .panel-button:hover { + color: white; } + #panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked { diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 8f84c44..c8a1bd9 100644 +index 690722372..342bebe9d 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css -@@ -713,6 +713,11 @@ StScrollBar StButton#vhandle:active { - icon-shadow: black 0px 2px 2px; - } - -+.panel-logo-icon { -+ padding-right: .4em; -+ icon-size: 1em; -+} -+ - .panel-menu { - -boxpointer-gap: 4px; - } +@@ -685,6 +685,9 @@ StScrollBar { + -st-icon-style: symbolic; + margin-left: 4px; + margin-right: 4px; } ++ #panel .panel-button .panel-logo-icon { ++ padding-right: .4em; ++ icon-size: 1em; } + #panel .panel-button:hover { + color: white; } + #panel .panel-button:active, #panel .panel-button:overview, #panel .panel-button:focus, #panel .panel-button:checked { diff --git a/js/ui/panel.js b/js/ui/panel.js -index 05d43f9..dd04601 100644 +index e05a6223c..d07bbaa7b 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js -@@ -562,11 +562,18 @@ const ActivitiesButton = new Lang.Class({ +@@ -409,11 +409,18 @@ const ActivitiesButton = new Lang.Class({ this.actor.name = 'panelActivities'; @@ -50,5 +63,5 @@ index 05d43f9..dd04601 100644 this.actor.label_actor = this._label; -- -2.3.3 +2.12.0 diff --git a/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch index 5fb4c30..efcb0cc 100644 --- a/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch +++ b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch @@ -1,4 +1,4 @@ -From ba5eacc70a296d9753bfc2b8de14e08726212b69 Mon Sep 17 00:00:00 2001 +From c9fc0a860acccb8f28a76c349a839d98cf83cf7b Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 3 Jul 2015 13:54:36 -0400 Subject: [PATCH] screenShield: unblank when inserting smartcard @@ -13,37 +13,10 @@ action to get the screen to unblank. 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index 3a84468..ad7ce54 100644 +index 8918910f8..3d55375b0 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js -@@ -510,62 +510,64 @@ const ScreenShield = new Lang.Class({ - this._dragAction.connect('gesture-progress', Lang.bind(this, this._onDragMotion)); - this._dragAction.connect('gesture-end', Lang.bind(this, this._onDragEnd)); - this._lockScreenGroup.add_action(this._dragAction); - - this._lockDialogGroup = new St.Widget({ x_expand: true, - y_expand: true, - reactive: true, - pivot_point: new Clutter.Point({ x: 0.5, y: 0.5 }), - name: 'lockDialogGroup' }); - - this.actor.add_actor(this._lockDialogGroup); - this.actor.add_actor(this._lockScreenGroup); - - this._presence = new GnomeSession.Presence(Lang.bind(this, function(proxy, error) { - if (error) { - logError(error, 'Error while reading gnome-session presence'); - return; - } - - this._onStatusChanged(proxy.status); - })); - this._presence.connectSignal('StatusChanged', Lang.bind(this, function(proxy, senderName, [status]) { - this._onStatusChanged(status); - })); - - this._screenSaverDBus = new ShellDBus.ScreenSaverDBus(this); - +@@ -513,8 +513,10 @@ const ScreenShield = new Lang.Class({ this._smartcardManager = SmartcardManager.getSmartcardManager(); this._smartcardManager.connect('smartcard-inserted', Lang.bind(this, function(manager, token) { @@ -55,33 +28,6 @@ index 3a84468..ad7ce54 100644 })); this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager(); - this._oVirtCredentialsManager.connect('user-authenticated', - Lang.bind(this, function() { - if (this._isLocked) - this._liftShield(true, 0); - })); - - this._inhibitor = null; - this._aboutToSuspend = false; - this._loginManager = LoginManager.getLoginManager(); - this._loginManager.connect('prepare-for-sleep', - Lang.bind(this, this._prepareForSleep)); - this._inhibitSuspend(); - - this._loginManager.getCurrentSessionProxy(Lang.bind(this, - function(sessionProxy) { - this._loginSession = sessionProxy; - this._loginSession.connectSignal('Lock', Lang.bind(this, function() { this.lock(false); })); - this._loginSession.connectSignal('Unlock', Lang.bind(this, function() { this.deactivate(false); })); - })); - - this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); - - this._isModal = false; - this._hasLockScreen = false; - this._isGreeter = false; - this._isActive = false; - this._isLocked = false; -- -2.3.7 +2.12.0 diff --git a/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch index ee69cd9..76eab2b 100644 --- a/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch +++ b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch @@ -1,7 +1,7 @@ -From daf38420dcdd70c090cf146973f0b3f4522a532c Mon Sep 17 00:00:00 2001 +From c9cdeef7230e6f9671c2ad38b3b7a21a8da79963 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Fri, 8 Nov 2013 11:36:04 +0100 -Subject: [PATCH 1/2] shellDBus: Add a DBus method to load a single extension +Subject: [PATCH] shellDBus: Add a DBus method to load a single extension This allows e.g. gnome-tweak-tool to install an extension from a zip file and load it into the running shell. @@ -10,10 +10,10 @@ file and load it into the running shell. 1 file changed, 20 insertions(+) diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js -index a87ea41..f8b05f4 100644 +index 14dba7292..7299367e5 100644 --- a/js/ui/shellDBus.js +++ b/js/ui/shellDBus.js -@@ -283,6 +283,10 @@ const GnomeShellExtensionsIface = ' \ +@@ -313,6 +313,10 @@ const GnomeShellExtensionsIface = ' \ \ \ \ @@ -24,7 +24,7 @@ index a87ea41..f8b05f4 100644 \ \ '; -@@ -385,6 +389,22 @@ const GnomeShellExtensions = new Lang.Class({ +@@ -415,6 +419,22 @@ const GnomeShellExtensions = new Lang.Class({ ExtensionDownloader.checkForUpdates(); }, @@ -48,5 +48,5 @@ index a87ea41..f8b05f4 100644 _extensionStateChanged: function(_, newState) { -- -2.3.3 +2.12.0 diff --git a/SOURCES/0001-shell_dbus_acquire_name-Don-t-leak-error.patch b/SOURCES/0001-shell_dbus_acquire_name-Don-t-leak-error.patch deleted file mode 100644 index 3a4d677..0000000 --- a/SOURCES/0001-shell_dbus_acquire_name-Don-t-leak-error.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 7f1a258ff9fc768a7fc13e5c37e1fd6d7ab5c33b Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -Date: Thu, 24 Sep 2015 13:16:56 -0400 -Subject: [PATCH 1/3] shell_dbus_acquire_name: Don't leak error - -If fatal is not set, we return from this function in the error -case. Don't leak the GError if that happens. ---- - src/main.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/main.c b/src/main.c -index d984eec..fb0ea43 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -69,6 +69,7 @@ shell_dbus_acquire_name (GDBusProxy *bus, - &error))) - { - g_printerr ("failed to acquire %s: %s\n", name, error->message); -+ g_clear_error (&error); - if (!fatal) - return; - exit (1); --- -2.5.3 - diff --git a/SOURCES/0001-st-Add-missing-NULL-check.patch b/SOURCES/0001-st-Add-missing-NULL-check.patch new file mode 100644 index 0000000..d043cc2 --- /dev/null +++ b/SOURCES/0001-st-Add-missing-NULL-check.patch @@ -0,0 +1,37 @@ +From dd90faeddf9074e814dbc44d201ee131af198741 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 22 Mar 2017 01:26:08 +0100 +Subject: [PATCH] st: Add missing %NULL check + +st_theme_node_get_border_image() may return %NULL, leading to a +segfault in st_border_image_get_file() when glib is compiled with +G_DISABLE_CHECKS. +--- + src/st/st-widget.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/st/st-widget.c b/src/st/st-widget.c +index 002249d25..db984ac9b 100644 +--- a/src/st/st-widget.c ++++ b/src/st/st-widget.c +@@ -290,6 +290,7 @@ st_widget_texture_cache_changed (StTextureCache *cache, + StWidget *actor = ST_WIDGET (user_data); + StWidgetPrivate *priv = st_widget_get_instance_private (actor); + StThemeNode *node = priv->theme_node; ++ StBorderImage *border_image; + gboolean changed = FALSE; + GFile *theme_file; + +@@ -303,7 +304,8 @@ st_widget_texture_cache_changed (StTextureCache *cache, + changed = TRUE; + } + +- theme_file = st_border_image_get_file (st_theme_node_get_border_image (node)); ++ border_image = st_theme_node_get_border_image (node); ++ theme_file = border_image ? st_border_image_get_file (border_image) : NULL; + if ((theme_file != NULL) && g_file_equal (theme_file, file)) + { + st_theme_node_invalidate_border_image (node); +-- +2.12.0 + diff --git a/SOURCES/0001-st-button-Don-t-rely-on-hover-to-accept-clicks.patch b/SOURCES/0001-st-button-Don-t-rely-on-hover-to-accept-clicks.patch deleted file mode 100644 index 8cd869a..0000000 --- a/SOURCES/0001-st-button-Don-t-rely-on-hover-to-accept-clicks.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 0365b1f803ef181d5f806b3a8b77afe6c5edbf91 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 7 Oct 2015 01:21:02 +0200 -Subject: [PATCH] st-button: Don't rely on hover to accept clicks - -Since commit 4f1f226828 we only consider buttons clicked when the -release event had a corresponding press event. However as we use -the hover state to check whether a release event actually occurred -on the button, we dismiss any clicks in cases where we missed the -enter event - most likely due to some other actor holding a grab. -Instead, check whether the button contains the event's source, which -should be less error-prone. - -https://bugzilla.gnome.org/show_bug.cgi?id=748919 ---- - src/st/st-button.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/st/st-button.c b/src/st/st-button.c -index 56502f1..0db6b0d 100644 ---- a/src/st/st-button.c -+++ b/src/st/st-button.c -@@ -211,7 +211,7 @@ st_button_button_release (ClutterActor *actor, - { - gboolean is_click; - -- is_click = button->priv->grabbed && st_widget_get_hover (ST_WIDGET (button)); -+ is_click = button->priv->grabbed && clutter_actor_contains (actor, event->source); - st_button_release (button, device, mask, is_click ? event->button : 0, NULL); - - button->priv->grabbed &= ~mask; --- -2.7.2 - diff --git a/SOURCES/0001-theme-Use-font-relative-sizes-for-menu-widths.patch b/SOURCES/0001-theme-Use-font-relative-sizes-for-menu-widths.patch deleted file mode 100644 index d962aa4..0000000 --- a/SOURCES/0001-theme-Use-font-relative-sizes-for-menu-widths.patch +++ /dev/null @@ -1,48 +0,0 @@ -From a474ae94b4dbe9d5fa21c9b0f6ef028af8a97680 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 4 Sep 2015 18:54:44 +0200 -Subject: [PATCH] theme: Use font-relative sizes for menu widths - -For menus, it makes more sense to pick a width that fits a reasonable amount -of content rather than a fixed amount of screen estate, so use font-relative -sizes instead of pixel values. - -https://bugzilla.gnome.org/show_bug.cgi?id=754581 ---- - data/theme/gnome-shell.css | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 97634b1..f1e9a23 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -169,7 +169,7 @@ StScrollBar StButton#vhandle:active { - - - .popup-menu { -- min-width: 200px; -+ min-width: 15em; - } - - .popup-menu-arrow { -@@ -733,7 +733,7 @@ StScrollBar StButton#vhandle:active { - } - - .aggregate-menu { -- width: 360px; -+ width: 27em; - } - - .aggregate-menu .popup-menu-icon { -@@ -1455,7 +1455,7 @@ StScrollBar StButton#vhandle:active { - } - - .events-table { -- width: 320px; -+ width: 24em; - spacing-columns: 6pt; - padding: 0 1.4em; - } --- -2.7.2 - diff --git a/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch new file mode 100644 index 0000000..dbcd0d1 --- /dev/null +++ b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch @@ -0,0 +1,53 @@ +From dd7d9565555fcfc9ecc730e421ec2145988ea755 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 14 Mar 2017 17:04:36 +0100 +Subject: [PATCH] windowMenu: Bring back workspaces submenu for static + workspaces + +When the titlebar context menu was moved to the shell, the submenu for +moving to a specific workspace was intentionally left out; some people +are quite attached to it though, so bring it back when static workspaces +are used. +--- + js/ui/windowMenu.js | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js +index 5cd6802e6..6b7f6f7c9 100644 +--- a/js/ui/windowMenu.js ++++ b/js/ui/windowMenu.js +@@ -97,8 +97,6 @@ const WindowMenu = new Lang.Class({ + if (window.is_always_on_all_workspaces()) + item.setSensitive(false); + +- let nWorkspaces = global.screen.n_workspaces; +- + if (!isSticky) { + let workspace = window.get_workspace(); + if (workspace != workspace.get_neighbor(Meta.MotionDirection.LEFT)) { +@@ -121,6 +119,22 @@ const WindowMenu = new Lang.Class({ + window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN)); + })); + } ++ ++ let nWorkspaces = global.screen.n_workspaces; ++ if (nWorkspaces > 1 && !Meta.prefs_get_dynamic_workspaces()) { ++ item = new PopupMenu.PopupSubMenuMenuItem(_("Move to another workspace")); ++ this.addMenuItem(item); ++ ++ let currentIndex = global.screen.get_active_workspace_index(); ++ for (let i = 0; i < nWorkspaces; i++) { ++ let index = i; ++ let name = Meta.prefs_get_workspace_name(i); ++ let subitem = item.menu.addAction(name, Lang.bind(this, function() { ++ window.change_workspace_by_index(index, false); ++ })); ++ subitem.setSensitive(currentIndex != i); ++ } ++ } + } + } + +-- +2.12.0 + diff --git a/SOURCES/0002-extensions-Add-a-SESSION_MODE-extension-type.patch b/SOURCES/0002-extensions-Add-a-SESSION_MODE-extension-type.patch deleted file mode 100644 index 06d4eca..0000000 --- a/SOURCES/0002-extensions-Add-a-SESSION_MODE-extension-type.patch +++ /dev/null @@ -1,42 +0,0 @@ -From dcdf2c26467818b2ee9999dc103242b3e3cd1416 Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Fri, 8 Nov 2013 13:58:09 +0100 -Subject: [PATCH 2/2] extensions: Add a SESSION_MODE extension type - -This allows e.g. gnome-tweak-tool to present these extensions in a -different way since they can't be disabled. ---- - js/misc/extensionUtils.js | 3 ++- - js/ui/extensionSystem.js | 2 ++ - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js -index afdc3cd..8541cf6 100644 ---- a/js/misc/extensionUtils.js -+++ b/js/misc/extensionUtils.js -@@ -15,7 +15,8 @@ const FileUtils = imports.misc.fileUtils; - - const ExtensionType = { - SYSTEM: 1, -- PER_USER: 2 -+ PER_USER: 2, -+ SESSION_MODE: 3 - }; - - // Maps uuid -> metadata object -diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js -index 11a75c6..a69308d 100644 ---- a/js/ui/extensionSystem.js -+++ b/js/ui/extensionSystem.js -@@ -295,6 +295,8 @@ function _loadExtensions() { - let finder = new ExtensionUtils.ExtensionFinder(); - finder.connect('extension-found', function(finder, extension) { - loadExtension(extension); -+ if (Main.sessionMode.enabledExtensions.indexOf(extension.uuid) != -1) -+ extension.type = ExtensionUtils.ExtensionType.SESSION_MODE; - }); - finder.scanExtensions(); - } --- -2.3.3 - diff --git a/SOURCES/0002-objectManager-handle-object-manager-sending-empty-ar.patch b/SOURCES/0002-objectManager-handle-object-manager-sending-empty-ar.patch new file mode 100644 index 0000000..162fa77 --- /dev/null +++ b/SOURCES/0002-objectManager-handle-object-manager-sending-empty-ar.patch @@ -0,0 +1,86 @@ +From 9ce09f7afb08a32eff1f6664d7893c49237a45c7 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 14 Jun 2017 16:41:41 -0400 +Subject: [PATCH 2/2] objectManager: handle object manager sending empty array + +If the service implementing the object manager returns +a 0 length array we currently throw an exception. + +This commit fixes that. +--- + js/misc/objectManager.js | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/js/misc/objectManager.js b/js/misc/objectManager.js +index 5db7588b6..835057f5e 100644 +--- a/js/misc/objectManager.js ++++ b/js/misc/objectManager.js +@@ -181,60 +181,65 @@ const ObjectManager = new Lang.Class({ + + if (Object.keys(this._interfaceInfos).length == 0) { + this._tryToCompleteLoad(); + return; + } + + this._managerProxy.connect('notify::g-name-owner', Lang.bind(this, function() { + if (this._managerProxy.g_name_owner) + this._onNameAppeared(); + else + this._onNameVanished(); + })); + + if (this._managerProxy.g_name_owner) + this._onNameAppeared(); + }, + + _onNameAppeared: function() { + this._managerProxy.GetManagedObjectsRemote(Lang.bind(this, function(result, error) { + if (!result) { + if (error) { + logError(error, 'could not get remote objects for service ' + this._serviceName + ' path ' + this._managerPath); + } + + this._tryToCompleteLoad(); + return; + } + + let [objects] = result; + ++ if (!objects) { ++ this._tryToCompleteLoad(); ++ return; ++ } ++ + let objectPaths = Object.keys(objects); + for (let i = 0; i < objectPaths.length; i++) { + let objectPath = objectPaths[i]; + let object = objects[objectPath]; + + let interfaceNames = Object.getOwnPropertyNames(object); + for (let j = 0; j < interfaceNames.length; j++) { + let interfaceName = interfaceNames[j]; + + // Prevent load from completing until the interface is loaded + this._numLoadInhibitors++; + this._addInterface(objectPath, + interfaceName, + Lang.bind(this, this._tryToCompleteLoad)); + } + } + this._tryToCompleteLoad(); + })); + }, + + _onNameVanished: function() { + let objectPaths = Object.keys(this._objects); + for (let i = 0; i < objectPaths.length; i++) { + let object = this._objects[objectPaths]; + + let interfaceNames = Object.keys(object); + for (let j = 0; i < interfaceNames.length; i++) { + let interfaceName = interfaceNames[i]; + + if (object[interfaceName]) +-- +2.13.0 + diff --git a/SOURCES/0002-shell_dbus_acquire_name-Don-t-leak-the-result.patch b/SOURCES/0002-shell_dbus_acquire_name-Don-t-leak-the-result.patch deleted file mode 100644 index 3b43a48..0000000 --- a/SOURCES/0002-shell_dbus_acquire_name-Don-t-leak-the-result.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 3f0fbae7e213b2fbe7267b9d25ac7fcfaa8afcff Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -Date: Thu, 24 Sep 2015 13:17:36 -0400 -Subject: [PATCH 2/3] shell_dbus_acquire_name: Don't leak the result - -The GVariant returned by g_dbus_proxy_call_sync must be -freed with g_variant_unref, to prevent a leak. ---- - src/main.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/main.c b/src/main.c -index fb0ea43..b33d4bf 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -75,6 +75,7 @@ shell_dbus_acquire_name (GDBusProxy *bus, - exit (1); - } - g_variant_get (request_name_variant, "(u)", request_name_result); -+ g_variant_unref (request_name_variant); - } - - static void --- -2.5.3 - diff --git a/SOURCES/0003-Check-error-of-g_dbus_proxy_new_sync-call.patch b/SOURCES/0003-Check-error-of-g_dbus_proxy_new_sync-call.patch deleted file mode 100644 index be625c3..0000000 --- a/SOURCES/0003-Check-error-of-g_dbus_proxy_new_sync-call.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 18c713823719c9876a9824ba4bd0ba5c41cc07be Mon Sep 17 00:00:00 2001 -From: Matthias Clasen -Date: Thu, 24 Sep 2015 13:31:07 -0400 -Subject: [PATCH 3/3] Check error of g_dbus_proxy_new_sync call - -Otherwise errors pile up and we crash later on. ---- - src/main.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/src/main.c b/src/main.c -index b33d4bf..e8ac998 100644 ---- a/src/main.c -+++ b/src/main.c -@@ -132,6 +132,12 @@ shell_dbus_init (gboolean replace) - NULL, /* cancellable */ - &error); - -+ if (!bus) -+ { -+ g_printerr ("Failed to get a session bus proxy: %s", error->message); -+ exit (1); -+ } -+ - request_name_flags = G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT; - if (replace) - request_name_flags |= DBUS_NAME_FLAG_REPLACE_EXISTING; --- -2.5.3 - diff --git a/SOURCES/allow-timed-login-with-no-user-list.patch b/SOURCES/allow-timed-login-with-no-user-list.patch index 572dd71..25bc1a7 100644 --- a/SOURCES/allow-timed-login-with-no-user-list.patch +++ b/SOURCES/allow-timed-login-with-no-user-list.patch @@ -1,43 +1,56 @@ -From a08995020936b425a98970b686ff5f9169d8968b Mon Sep 17 00:00:00 2001 +From f3f5643134c317546c88ff11b974f1a04ad780ff Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 19 Apr 2016 13:12:46 -0400 Subject: [PATCH] loginDialog: allow timed login with disabled user list --- - data/theme/gnome-shell.css | 5 +++++ - js/gdm/authPrompt.js | 41 +++++++++++++++++++++++++++++++++++++++++ - js/gdm/loginDialog.js | 29 ++++++++++++++++++++++++++--- - 3 files changed, 72 insertions(+), 3 deletions(-) + data/theme/gnome-shell-high-contrast.css | 3 +++ + data/theme/gnome-shell.css | 3 +++ + js/gdm/authPrompt.js | 41 ++++++++++++++++++++++++++++++++ + js/gdm/loginDialog.js | 29 +++++++++++++++++++--- + 4 files changed, 73 insertions(+), 3 deletions(-) +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index 3ce5278e1..0325fea87 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -1691,6 +1691,9 @@ StScrollBar { + padding-bottom: 12px; + spacing: 8px; + width: 23em; } ++ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { ++ height: 2px; ++ background-color: #8b8b8b; } + + .login-dialog-prompt-label { + color: #bebeb6; diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index f1e9a23..97f8b0a 100644 +index 342bebe9d..e2a442ecb 100644 --- a/data/theme/gnome-shell.css +++ b/data/theme/gnome-shell.css -@@ -2455,6 +2455,11 @@ StScrollBar StButton#vhandle:active { - background-size: contain; - } - -+.login-dialog-prompt-layout .login-dialog-timed-login-indicator { +@@ -1691,6 +1691,9 @@ StScrollBar { + padding-bottom: 12px; + spacing: 8px; + width: 23em; } ++ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { + height: 2px; -+ background-color: #8b8b8b; -+} -+ - .login-dialog-user-list-item .login-dialog-timed-login-indicator { - background-color: rgba(0,0,0,0.0); - height: 2px; ++ background-color: #8b8b8b; } + + .login-dialog-prompt-label { + color: #bebeb6; diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index fe80519..4370721 100644 +index 6327633d9..ae03a5b49 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js -@@ -1,6 +1,7 @@ - // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- +@@ -2,6 +2,7 @@ const Clutter = imports.gi.Clutter; + const Gio = imports.gi.Gio; +const GLib = imports.gi.GLib; const Lang = imports.lang; const Signals = imports.signals; const St = imports.gi.St; -@@ -117,6 +118,11 @@ const AuthPrompt = new Lang.Class({ +@@ -118,6 +119,11 @@ const AuthPrompt = new Lang.Class({ this._entry.grab_key_focus(); @@ -49,7 +62,7 @@ index fe80519..4370721 100644 this._message = new St.Label({ opacity: 0, styleClass: 'login-dialog-message' }); this._message.clutter_text.line_wrap = true; -@@ -141,6 +147,41 @@ const AuthPrompt = new Lang.Class({ +@@ -142,6 +148,41 @@ const AuthPrompt = new Lang.Class({ this._defaultButtonWell.add_child(this._spinner.actor); }, @@ -92,20 +105,20 @@ index fe80519..4370721 100644 if (this._preemptiveAnswerWatchId) { this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index b577520..a370e1c 100644 +index 45eca18f7..9034d732e 100644 --- a/js/gdm/loginDialog.js +++ b/js/gdm/loginDialog.js -@@ -734,6 +734,9 @@ const LoginDialog = new Lang.Class({ +@@ -729,6 +729,9 @@ const LoginDialog = new Lang.Class({ if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) this._authPrompt.reset(); -+ ++ + if (this._disableUserList && this._timedLoginUserListHold) + this._timedLoginUserListHold.release(); } }, -@@ -971,6 +974,9 @@ const LoginDialog = new Lang.Class({ +@@ -984,6 +987,9 @@ const LoginDialog = new Lang.Class({ }, _showTimedLoginAnimation: function() { @@ -115,7 +128,7 @@ index b577520..a370e1c 100644 this._timedLoginItem.actor.grab_key_focus(); return this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime); }, -@@ -998,19 +1004,31 @@ const LoginDialog = new Lang.Class({ +@@ -1011,19 +1017,31 @@ const LoginDialog = new Lang.Class({ }, _startTimedLogin: function(userName, delay) { @@ -149,7 +162,7 @@ index b577520..a370e1c 100644 // If we're just starting out, start on the right // item. if (!this._userManager.is_loaded) { -@@ -1021,6 +1039,9 @@ const LoginDialog = new Lang.Class({ +@@ -1034,6 +1052,9 @@ const LoginDialog = new Lang.Class({ this._blockTimedLoginUntilIdle, function() { @@ -159,7 +172,7 @@ index b577520..a370e1c 100644 this._userList.scrollToItem(this._timedLoginItem); }, -@@ -1045,7 +1066,9 @@ const LoginDialog = new Lang.Class({ +@@ -1058,7 +1079,9 @@ const LoginDialog = new Lang.Class({ if (this._timedLoginItem) this._timedLoginItem.hideTimedLoginIndicator(); @@ -171,5 +184,5 @@ index b577520..a370e1c 100644 if (userName) this._startTimedLogin(userName, this._timedLoginDelay); -- -1.8.3.1 +2.12.0 diff --git a/SOURCES/disable-unlock-entry-until-question.patch b/SOURCES/disable-unlock-entry-until-question.patch index 9872e71..1fca3fd 100644 --- a/SOURCES/disable-unlock-entry-until-question.patch +++ b/SOURCES/disable-unlock-entry-until-question.patch @@ -1,98 +1,7 @@ -From 68c280c3bcf8a67a90eb25c30b2e6c2493d7d4d9 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 30 Sep 2015 12:47:01 -0400 -Subject: [PATCH 1/4] authPrompt: use correct service name when answering - preemptively - -If the user hits enter before a question is asked, we try to answer -that question as soon as it comes in. - -This doesn't work right now because we only answer the question if -there's a query service, but there won't ever be one until the -question is asked. - -This commit corrects the code to it's intention, which is to answer -the first service that asks a question, as as soon as possible. ---- - js/gdm/authPrompt.js | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 34ad7fb..816c69c 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -167,62 +167,61 @@ const AuthPrompt = new Lang.Class({ - can_focus: true, - label: _("Next") }); - this.nextButton.connect('clicked', - Lang.bind(this, function() { - this.emit('next'); - })); - this.nextButton.add_style_pseudo_class('default'); - this._buttonBox.add(this.nextButton, - { expand: false, - x_fill: false, - y_fill: false, - x_align: St.Align.END, - y_align: St.Align.END }); - - this._updateNextButtonSensitivity(this._entry.text.length > 0); - - this._entry.clutter_text.connect('text-changed', - Lang.bind(this, function() { - if (!this._userVerifier.hasPendingMessages) - this._fadeOutMessage(); - - this._updateNextButtonSensitivity(this._entry.text.length > 0); - })); - this._entry.clutter_text.connect('activate', Lang.bind(this, function() { - this.emit('next'); - })); - }, - - _onAskQuestion: function(verifier, serviceName, question, passwordChar) { - if (this._preemptiveAnswer) { -- if (this._queryingService) -- this._userVerifier.answerQuery(this._queryingService, this._preemptiveAnswer); -+ this._userVerifier.answerQuery(serviceName, this._preemptiveAnswer); - this._preemptiveAnswer = null; - return; - } - - if (this._queryingService) - this.clear(); - - this._queryingService = serviceName; - this.setPasswordChar(passwordChar); - this.setQuestion(question); - - if (passwordChar) { - if (this._userVerifier.reauthenticating) - this.nextButton.label = _("Unlock"); - else - this.nextButton.label = C_("button", "Sign In"); - } else { - this.nextButton.label = _("Next"); - } - - this.updateSensitivity(true); - this.emit('prompted'); - }, - - _onOVirtUserAuthenticated: function() { - if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED) - this.reset(); - }, - - _onSmartcardStatusChanged: function() { --- -2.5.0 - - -From 1b7fa7ad6874208873eb8ce1e8b03dc07cb01217 Mon Sep 17 00:00:00 2001 +From 9d0795d0a140fae4e916b3e69cadb742b91bf563 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 30 Sep 2015 12:51:24 -0400 -Subject: [PATCH 2/4] authPrompt: don't fade out auth messages if user types +Subject: [PATCH 1/3] authPrompt: don't fade out auth messages if user types password up front Right now we fade out any stale auth messages as soon as the user starts @@ -103,37 +12,10 @@ front, before a password is asked. 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 816c69c..11b6a23 100644 +index 50c66fd13..2d92ae926 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js -@@ -155,61 +155,61 @@ const AuthPrompt = new Lang.Class({ - x_align: St.Align.START, - y_align: St.Align.END }); - - this._buttonBox.add(this._defaultButtonWell, - { expand: true, - x_fill: false, - y_fill: false, - x_align: St.Align.END, - y_align: St.Align.MIDDLE }); - this.nextButton = new St.Button({ style_class: 'modal-dialog-button', - button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, - reactive: true, - can_focus: true, - label: _("Next") }); - this.nextButton.connect('clicked', - Lang.bind(this, function() { - this.emit('next'); - })); - this.nextButton.add_style_pseudo_class('default'); - this._buttonBox.add(this.nextButton, - { expand: false, - x_fill: false, - y_fill: false, - x_align: St.Align.END, - y_align: St.Align.END }); - - this._updateNextButtonSensitivity(this._entry.text.length > 0); +@@ -183,7 +183,7 @@ const AuthPrompt = new Lang.Class({ this._entry.clutter_text.connect('text-changed', Lang.bind(this, function() { @@ -142,78 +24,24 @@ index 816c69c..11b6a23 100644 this._fadeOutMessage(); this._updateNextButtonSensitivity(this._entry.text.length > 0); - })); - this._entry.clutter_text.connect('activate', Lang.bind(this, function() { - this.emit('next'); - })); - }, - - _onAskQuestion: function(verifier, serviceName, question, passwordChar) { - if (this._preemptiveAnswer) { - this._userVerifier.answerQuery(serviceName, this._preemptiveAnswer); - this._preemptiveAnswer = null; - return; - } - - if (this._queryingService) - this.clear(); - - this._queryingService = serviceName; - this.setPasswordChar(passwordChar); - this.setQuestion(question); - - if (passwordChar) { - if (this._userVerifier.reauthenticating) - this.nextButton.label = _("Unlock"); - else - this.nextButton.label = C_("button", "Sign In"); - } else { - this.nextButton.label = _("Next"); -- -2.5.0 +2.12.0 -From 3b767c0a55b136b53b7c85aff2095969fb230ce4 Mon Sep 17 00:00:00 2001 +From 424ecd98bca6d23c6ee4363014f21dfb91bb2d5c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 30 Sep 2015 14:36:33 -0400 -Subject: [PATCH 3/4] authPrompt: don't spin unless answering question +Subject: [PATCH 2/3] authPrompt: don't spin unless answering question --- js/gdm/authPrompt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 11b6a23..875f9c5 100644 +index 2d92ae926..0b11ba95d 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js -@@ -37,62 +37,62 @@ const BeginRequestType = { - }; - - const AuthPrompt = new Lang.Class({ - Name: 'AuthPrompt', - - _init: function(gdmClient, mode) { - this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; - - this._gdmClient = gdmClient; - this._mode = mode; - - let reauthenticationOnly; - if (this._mode == AuthPromptMode.UNLOCK_ONLY) - reauthenticationOnly = true; - else if (this._mode == AuthPromptMode.UNLOCK_OR_LOG_IN) - reauthenticationOnly = false; - - this._userVerifier = new GdmUtil.ShellUserVerifier(this._gdmClient, { reauthenticationOnly: reauthenticationOnly }); - - this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion)); - this._userVerifier.connect('show-message', Lang.bind(this, this._onShowMessage)); - this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed)); - this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); - this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); - this._userVerifier.connect('smartcard-status-changed', Lang.bind(this, this._onSmartcardStatusChanged)); - this._userVerifier.connect('ovirt-user-authenticated', Lang.bind(this, this._onOVirtUserAuthenticated)); - this.smartcardDetected = this._userVerifier.smartcardDetected; +@@ -65,8 +65,8 @@ const AuthPrompt = new Lang.Class({ this.connect('next', Lang.bind(this, function() { this.updateSensitivity(false); @@ -223,42 +51,15 @@ index 11b6a23..875f9c5 100644 this._userVerifier.answerQuery(this._queryingService, this._entry.text); } else { this._preemptiveAnswer = this._entry.text; - } - })); - - this.actor = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout', - vertical: true }); - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); - this.actor.connect('key-press-event', - Lang.bind(this, function(actor, event) { - if (event.get_key_symbol() == Clutter.KEY_Escape) { - this.cancel(); - } - return Clutter.EVENT_PROPAGATE; - })); - - this._userWell = new St.Bin({ x_fill: true, - x_align: St.Align.START }); - this.actor.add(this._userWell, - { x_align: St.Align.START, - x_fill: true, - y_fill: true, - expand: true }); - this._label = new St.Label({ style_class: 'login-dialog-prompt-label' }); - - this.actor.add(this._label, - { expand: true, - x_fill: false, - y_fill: true, -- -2.5.0 +2.12.0 -From 22d618c293906defbac877925491af13f8def9a3 Mon Sep 17 00:00:00 2001 +From d3848683a63938be8b1af391eecc65e214ad26ce Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 5 Oct 2015 15:26:18 -0400 -Subject: [PATCH 4/4] authPrompt: stop accepting preemptive answer if user stops - typing +Subject: [PATCH 3/3] authPrompt: stop accepting preemptive answer if user + stops typing We only want to allow the user to type the preemptive password in one smooth motion. If they start to type, and then stop typing, @@ -272,17 +73,10 @@ all. 1 file changed, 38 insertions(+) diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 875f9c5..fe80519 100644 +index 0b11ba95d..6327633d9 100644 --- a/js/gdm/authPrompt.js +++ b/js/gdm/authPrompt.js -@@ -1,101 +1,109 @@ - // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - - const Clutter = imports.gi.Clutter; - const Lang = imports.lang; - const Signals = imports.signals; - const St = imports.gi.St; - +@@ -9,6 +9,7 @@ const St = imports.gi.St; const Animation = imports.ui.animation; const Batch = imports.gdm.batch; const GdmUtil = imports.gdm.util; @@ -290,37 +84,7 @@ index 875f9c5..fe80519 100644 const Params = imports.misc.params; const ShellEntry = imports.ui.shellEntry; const Tweener = imports.ui.tweener; - const UserWidget = imports.ui.userWidget; - - const DEFAULT_BUTTON_WELL_ICON_SIZE = 24; - const DEFAULT_BUTTON_WELL_ANIMATION_DELAY = 1.0; - const DEFAULT_BUTTON_WELL_ANIMATION_TIME = 0.3; - - const MESSAGE_FADE_OUT_ANIMATION_TIME = 0.5; - - const AuthPromptMode = { - UNLOCK_ONLY: 0, - UNLOCK_OR_LOG_IN: 1 - }; - - const AuthPromptStatus = { - NOT_VERIFYING: 0, - VERIFYING: 1, - VERIFICATION_FAILED: 2, - VERIFICATION_SUCCEEDED: 3 - }; - - const BeginRequestType = { - PROVIDE_USERNAME: 0, - DONT_PROVIDE_USERNAME: 1 - }; - - const AuthPrompt = new Lang.Class({ - Name: 'AuthPrompt', - - _init: function(gdmClient, mode) { - this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; - +@@ -46,6 +47,8 @@ const AuthPrompt = new Lang.Class({ this._gdmClient = gdmClient; this._mode = mode; @@ -329,24 +93,7 @@ index 875f9c5..fe80519 100644 let reauthenticationOnly; if (this._mode == AuthPromptMode.UNLOCK_ONLY) reauthenticationOnly = true; - else if (this._mode == AuthPromptMode.UNLOCK_OR_LOG_IN) - reauthenticationOnly = false; - - this._userVerifier = new GdmUtil.ShellUserVerifier(this._gdmClient, { reauthenticationOnly: reauthenticationOnly }); - - this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion)); - this._userVerifier.connect('show-message', Lang.bind(this, this._onShowMessage)); - this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed)); - this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); - this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); - this._userVerifier.connect('smartcard-status-changed', Lang.bind(this, this._onSmartcardStatusChanged)); - this._userVerifier.connect('ovirt-user-authenticated', Lang.bind(this, this._onOVirtUserAuthenticated)); - this.smartcardDetected = this._userVerifier.smartcardDetected; - - this.connect('next', Lang.bind(this, function() { - this.updateSensitivity(false); - if (this._queryingService) { - this.startSpinning(); +@@ -70,6 +73,11 @@ const AuthPrompt = new Lang.Class({ this._userVerifier.answerQuery(this._queryingService, this._entry.text); } else { this._preemptiveAnswer = this._entry.text; @@ -358,61 +105,7 @@ index 875f9c5..fe80519 100644 } })); - this.actor = new St.BoxLayout({ style_class: 'login-dialog-prompt-layout', - vertical: true }); - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); - this.actor.connect('key-press-event', - Lang.bind(this, function(actor, event) { - if (event.get_key_symbol() == Clutter.KEY_Escape) { - this.cancel(); - } - return Clutter.EVENT_PROPAGATE; - })); - - this._userWell = new St.Bin({ x_fill: true, - x_align: St.Align.START }); - this.actor.add(this._userWell, - { x_align: St.Align.START, - x_fill: true, - y_fill: true, - expand: true }); - this._label = new St.Label({ style_class: 'login-dialog-prompt-label' }); - - this.actor.add(this._label, - { expand: true, - x_fill: false, - y_fill: true, - x_align: St.Align.START }); - this._entry = new St.Entry({ style_class: 'login-dialog-prompt-entry', - can_focus: true }); -@@ -107,60 +115,65 @@ const AuthPrompt = new Lang.Class({ - y_fill: false, - x_align: St.Align.START }); - - this._entry.grab_key_focus(); - - this._message = new St.Label({ opacity: 0, - styleClass: 'login-dialog-message' }); - this._message.clutter_text.line_wrap = true; - this.actor.add(this._message, { x_fill: false, x_align: St.Align.START, y_align: St.Align.START }); - - this._buttonBox = new St.BoxLayout({ style_class: 'login-dialog-button-box', - vertical: false }); - this.actor.add(this._buttonBox, - { expand: true, - x_align: St.Align.MIDDLE, - y_align: St.Align.END }); - - this._defaultButtonWell = new St.Widget({ layout_manager: new Clutter.BinLayout() }); - this._defaultButtonWellActor = null; - - this._initButtons(); - - let spinnerIcon = global.datadir + '/theme/process-working.svg'; - this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE); - this._spinner.actor.opacity = 0; - this._spinner.actor.show(); - this._defaultButtonWell.add_child(this._spinner.actor); +@@ -135,6 +143,11 @@ const AuthPrompt = new Lang.Class({ }, _onDestroy: function() { @@ -424,61 +117,7 @@ index 875f9c5..fe80519 100644 this._userVerifier.destroy(); this._userVerifier = null; }, - - _initButtons: function() { - this.cancelButton = new St.Button({ style_class: 'modal-dialog-button', - button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, - reactive: true, - can_focus: true, - label: _("Cancel") }); - this.cancelButton.connect('clicked', - Lang.bind(this, function() { - this.cancel(); - })); - this._buttonBox.add(this.cancelButton, - { expand: false, - x_fill: false, - y_fill: false, - x_align: St.Align.START, - y_align: St.Align.END }); - - this._buttonBox.add(this._defaultButtonWell, - { expand: true, - x_fill: false, - y_fill: false, - x_align: St.Align.END, - y_align: St.Align.MIDDLE }); - this.nextButton = new St.Button({ style_class: 'modal-dialog-button', - button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, - reactive: true, -@@ -316,60 +329,65 @@ const AuthPrompt = new Lang.Class({ - else - Tweener.addTween(actor, - { opacity: 255, - time: DEFAULT_BUTTON_WELL_ANIMATION_TIME, - delay: DEFAULT_BUTTON_WELL_ANIMATION_DELAY, - transition: 'linear' }); - } - - this._defaultButtonWellActor = actor; - }, - - startSpinning: function() { - this.setActorInDefaultButtonWell(this._spinner.actor, true); - }, - - stopSpinning: function() { - this.setActorInDefaultButtonWell(null, false); - }, - - clear: function() { - this._entry.text = ''; - this.stopSpinning(); - }, - - setPasswordChar: function(passwordChar) { - this._entry.clutter_text.set_password_char(passwordChar); - this._entry.menu.isPassword = passwordChar != ''; +@@ -356,6 +369,11 @@ const AuthPrompt = new Lang.Class({ }, setQuestion: function(question) { @@ -490,61 +129,7 @@ index 875f9c5..fe80519 100644 this._label.set_text(question); this._label.show(); - this._entry.show(); - - this._entry.grab_key_focus(); - }, - - getAnswer: function() { - let text; - - if (this._preemptiveAnswer) { - text = this._preemptiveAnswer; - this._preemptiveAnswer = null; - } else { - text = this._entry.get_text(); - } - - return text; - }, - - _fadeOutMessage: function() { - if (this._message.opacity == 0) - return; - Tweener.removeTweens(this._message); - Tweener.addTween(this._message, - { opacity: 0, - time: MESSAGE_FADE_OUT_ANIMATION_TIME, - transition: 'easeOutQuad' - }); -@@ -401,66 +419,86 @@ const AuthPrompt = new Lang.Class({ - }, - - updateSensitivity: function(sensitive) { - this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0); - this._entry.reactive = sensitive; - this._entry.clutter_text.editable = sensitive; - }, - - hide: function() { - this.setActorInDefaultButtonWell(null, true); - this.actor.hide(); - this._message.opacity = 0; - - this.setUser(null); - - this.updateSensitivity(true); - this._entry.set_text(''); - }, - - setUser: function(user) { - let oldChild = this._userWell.get_child(); - if (oldChild) - oldChild.destroy(); - - if (user) { - let userWidget = new UserWidget.UserWidget(user); - this._userWell.set_child(userWidget.actor); +@@ -441,12 +459,32 @@ const AuthPrompt = new Lang.Class({ } }, @@ -577,33 +162,6 @@ index 875f9c5..fe80519 100644 if (this._userVerifier) this._userVerifier.cancel(); - this._queryingService = null; - this.clear(); - this._message.opacity = 0; - this.setUser(null); - this.stopSpinning(); - - if (oldStatus == AuthPromptStatus.VERIFICATION_FAILED) - this.emit('failed'); - - let beginRequestType; - - if (this._mode == AuthPromptMode.UNLOCK_ONLY) { - // The user is constant at the unlock screen, so it will immediately - // respond to the request with the username - beginRequestType = BeginRequestType.PROVIDE_USERNAME; - } else if (this._userVerifier.serviceIsForeground(GdmUtil.OVIRT_SERVICE_NAME) || - this._userVerifier.serviceIsForeground(GdmUtil.SMARTCARD_SERVICE_NAME)) { - // We don't need to know the username if the user preempted the login screen - // with a smartcard or with preauthenticated oVirt credentials - beginRequestType = BeginRequestType.DONT_PROVIDE_USERNAME; - } else { - // In all other cases, we should get the username up front. - beginRequestType = BeginRequestType.PROVIDE_USERNAME; - } - - this.emit('reset', beginRequestType); - }, -- -2.5.0 +2.12.0 diff --git a/SOURCES/drop-gsystem-dependency.patch b/SOURCES/drop-gsystem-dependency.patch deleted file mode 100644 index ebbd050..0000000 --- a/SOURCES/drop-gsystem-dependency.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 61233d3703071993a1505570de765d8ef1bf7ee2 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Fri, 13 Feb 2015 04:27:27 -0500 -Subject: [PATCH 1/2] Drop use of libgsystem, move single API call into - shell-global.c - -See https://mail.gnome.org/archives/desktop-devel-list/2015-February/msg00121.html - -We presently only indirectly link to it via this one call; until GLib -gains structured logging, simply import the code to wrap the journal -logging in an introspectable API into Shell. - -https://bugzilla.gnome.org/show_bug.cgi?id=744457 ---- - js/ui/main.js | 12 +++--------- - src/shell-global.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/shell-global.h | 3 +++ - 3 files changed, 58 insertions(+), 9 deletions(-) - -diff --git a/js/ui/main.js b/js/ui/main.js -index 2459069..45df8b4 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -208,16 +208,10 @@ function _initializeUI() { - if (screenShield) { - screenShield.lockIfWasLocked(); - } -- if (LoginManager.haveSystemd() && -- sessionMode.currentMode != 'gdm' && -+ if (sessionMode.currentMode != 'gdm' && - sessionMode.currentMode != 'initial-setup') { -- // Do not import globally to not depend -- // on systemd on non-systemd systems. -- let GSystem = imports.gi.GSystem; -- GSystem.log_structured_print('GNOME Shell started at ' + _startDate, -- ['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]); -- } else { -- log('GNOME Shell started at ' + _startDate); -+ Shell.log_structured_print('GNOME Shell started at ' + _startDate, -+ ['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]); - } - }); - } -diff --git a/src/shell-global.c b/src/shell-global.c -index d90ceaf..3a27f31 100644 ---- a/src/shell-global.c -+++ b/src/shell-global.c -@@ -28,6 +28,12 @@ - #include - #include - -+#ifdef HAVE_SYSTEMD -+#include -+#include -+#include -+#endif -+ - /* Memory report bits */ - #ifdef HAVE_MALLINFO - #include -@@ -1307,6 +1313,52 @@ shell_global_reexec_self (ShellGlobal *global) - } - - /** -+ * shell_global_log_structured: -+ * @message: A message to print -+ * @keys: (allow-none) (array zero-terminated=1) (element-type utf8): Optional structured data -+ * -+ * Log structured data in an operating-system specific fashion. The -+ * parameter @opts should be an array of UTF-8 KEY=VALUE strings. -+ * This function does not support binary data. See -+ * http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html -+ * or more information about fields that can be used on a systemd -+ * system. -+ * -+ */ -+void -+shell_global_log_structured (const char *message, -+ const char *const *keys) -+{ -+#ifdef HAVE_SYSTEMD -+ const char *const*iter; -+ char *msgkey; -+ guint i, n_opts; -+ struct iovec *iovs; -+ -+ for (n_opts = 0, iter = keys; *iter; iter++, n_opts++) -+ ; -+ -+ n_opts++; /* Add one for MESSAGE= */ -+ iovs = g_alloca (sizeof (struct iovec) * n_opts); -+ -+ for (i = 0, iter = keys; *iter; iter++, i++) { -+ iovs[i].iov_base = (char*)keys[i]; -+ iovs[i].iov_len = strlen (keys[i]); -+ } -+ g_assert(i == n_opts-1); -+ msgkey = g_strconcat ("MESSAGE=", message, NULL); -+ iovs[i].iov_base = msgkey; -+ iovs[i].iov_len = strlen (msgkey); -+ -+ // The code location isn't useful since we're wrapping -+ sd_journal_sendv (iovs, n_opts); -+ g_free (msgkey); -+#else -+ g_print ("%s\n", message); -+#endif -+} -+ -+/** - * shell_global_notify_error: - * @global: a #ShellGlobal - * @msg: Error message -diff --git a/src/shell-global.h b/src/shell-global.h -index a5630ec..25afe17 100644 ---- a/src/shell-global.h -+++ b/src/shell-global.h -@@ -126,6 +126,9 @@ void shell_global_init_xdnd (ShellGlobal *global); - - void shell_global_reexec_self (ShellGlobal *global); - -+void shell_global_log_structured (const char *message, -+ const char *const *keys); -+ - const char * shell_global_get_session_mode (ShellGlobal *global); - - void shell_global_set_runtime_state (ShellGlobal *global, --- -2.3.6 - - -From 1fe15cf0dbd98afb7b1084c5556f6b6b9a0e62f8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 13 Feb 2015 23:02:06 +0100 -Subject: [PATCH 2/2] main: Fix structured_log() call - -Meh, I should have caught that one in review ... ---- - js/ui/main.js | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/js/ui/main.js b/js/ui/main.js -index 45df8b4..6865c41 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -210,8 +210,8 @@ function _initializeUI() { - } - if (sessionMode.currentMode != 'gdm' && - sessionMode.currentMode != 'initial-setup') { -- Shell.log_structured_print('GNOME Shell started at ' + _startDate, -- ['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]); -+ Shell.Global.log_structured('GNOME Shell started at ' + _startDate, -+ ['MESSAGE_ID=' + GNOMESHELL_STARTED_MESSAGE_ID]); - } - }); - } --- -2.3.6 - diff --git a/SOURCES/enforce-smartcard-at-unlock.patch b/SOURCES/enforce-smartcard-at-unlock.patch index e28cb1f..87dce7a 100644 --- a/SOURCES/enforce-smartcard-at-unlock.patch +++ b/SOURCES/enforce-smartcard-at-unlock.patch @@ -1,4 +1,4 @@ -From d1aaebbb268df2f53f909028d9ae83c1849db103 Mon Sep 17 00:00:00 2001 +From 624d302d3d192b66d5465fa4551c223df0c4a850 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 10:57:02 -0400 Subject: [PATCH 1/3] smartcardManager: add way to detect if user logged using @@ -16,37 +16,10 @@ This commit adds the necessary api to detect that case. 1 file changed, 7 insertions(+) diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js -index 674efc9..bfe8a26 100644 +index 674efc9ad..bfe8a26f4 100644 --- a/js/misc/smartcardManager.js +++ b/js/misc/smartcardManager.js -@@ -86,34 +86,41 @@ const SmartcardManager = new Lang.Class({ - if (token.IsInserted) - this.emit('smartcard-inserted', token); - }, - - _removeToken: function(token) { - let objectPath = token.get_object_path(); - - if (this._insertedTokens[objectPath] == token) { - delete this._insertedTokens[objectPath]; - this.emit('smartcard-removed', token); - } - - if (this._loginToken == token) - this._loginToken = null; - - token.disconnectAll(); - }, - - hasInsertedTokens: function() { - return Object.keys(this._insertedTokens).length > 0; - }, - - hasInsertedLoginToken: function() { - if (!this._loginToken) - return false; - - if (!this._loginToken.IsInserted) +@@ -113,6 +113,13 @@ const SmartcardManager = new Lang.Class({ return false; return true; @@ -60,12 +33,11 @@ index 674efc9..bfe8a26 100644 } }); - Signals.addSignalMethods(SmartcardManager.prototype); -- -2.5.0 +2.12.0 -From 090c0f85b01e95d953b287f21d8aa33335a014c1 Mon Sep 17 00:00:00 2001 +From 9e3c4a25a32f1e9b828dc37c5a37de1481288478 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 19:56:53 -0400 Subject: [PATCH 2/3] gdm: only unlock with smartcard, if smartcard used for @@ -78,37 +50,10 @@ gets used for unlock, too. 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/js/gdm/util.js b/js/gdm/util.js -index dd04544..776b76d 100644 +index 1aa52a17f..cea1a0918 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -104,71 +104,72 @@ function cloneAndFadeOutActor(actor) { - Main.uiGroup.add_child(clone); - - let [x, y] = actor.get_transformed_position(); - clone.set_position(x, y); - - let hold = new Batch.Hold(); - Tweener.addTween(clone, - { opacity: 0, - time: CLONE_FADE_ANIMATION_TIME, - transition: 'easeOutQuad', - onComplete: function() { - clone.destroy(); - hold.release(); - } - }); - return hold; - } - - const ShellUserVerifier = new Lang.Class({ - Name: 'ShellUserVerifier', - - _init: function(client, params) { - params = Params.parse(params, { reauthenticationOnly: false }); - this._reauthOnly = params.reauthenticationOnly; - - this._client = client; - +@@ -131,7 +131,6 @@ const ShellUserVerifier = new Lang.Class({ this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._settings.connect('changed', Lang.bind(this, this._updateDefaultService)); @@ -116,10 +61,7 @@ index dd04544..776b76d 100644 this._fprintManager = new Fprint.FprintManager(); this._smartcardManager = SmartcardManager.getSmartcardManager(); - - // We check for smartcards right away, since an inserted smartcard - // at startup should result in immediately initiating authentication. - // This is different than fingeprint readers, where we only check them +@@ -142,6 +141,8 @@ const ShellUserVerifier = new Lang.Class({ // after a user has been picked. this._checkForSmartcard(); @@ -128,61 +70,7 @@ index dd04544..776b76d 100644 this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted', Lang.bind(this, this._checkForSmartcard)); this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed', - Lang.bind(this, this._checkForSmartcard)); - - this._messageQueue = []; - this._messageQueueTimeoutId = 0; - this.hasPendingMessages = false; - this.reauthenticating = false; - - this._failCounter = 0; - - this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager(); - - if (this._oVirtCredentialsManager.hasToken()) - this._oVirtUserAuthenticated(this._oVirtCredentialsManager.getToken()); - - this._oVirtUserAuthenticatedId = this._oVirtCredentialsManager.connect('user-authenticated', - Lang.bind(this, this._oVirtUserAuthenticated)); - }, - - begin: function(userName, hold) { - this._cancellable = new Gio.Cancellable(); - this._hold = hold; - this._userName = userName; - this.reauthenticating = false; - - this._checkForFingerprintReader(); - - if (userName) { -@@ -381,61 +382,63 @@ const ShellUserVerifier = new Lang.Class({ - this._beginVerification(); - this._hold.release(); - }, - - _connectSignals: function() { - this._userVerifier.connect('info', Lang.bind(this, this._onInfo)); - this._userVerifier.connect('problem', Lang.bind(this, this._onProblem)); - this._userVerifier.connect('info-query', Lang.bind(this, this._onInfoQuery)); - this._userVerifier.connect('secret-info-query', Lang.bind(this, this._onSecretInfoQuery)); - this._userVerifier.connect('conversation-stopped', Lang.bind(this, this._onConversationStopped)); - this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); - this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); - }, - - _getForegroundService: function() { - if (this._preemptingService) - return this._preemptingService; - - return this._defaultService; - }, - - serviceIsForeground: function(serviceName) { - return serviceName == this._getForegroundService(); - }, - - serviceIsDefault: function(serviceName) { - return serviceName == this._defaultService; +@@ -408,7 +409,9 @@ const ShellUserVerifier = new Lang.Class({ }, _updateDefaultService: function() { @@ -193,38 +81,11 @@ index dd04544..776b76d 100644 this._defaultService = PASSWORD_SERVICE_NAME; else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) this._defaultService = SMARTCARD_SERVICE_NAME; - else if (this._haveFingerprintReader) - this._defaultService = FINGERPRINT_SERVICE_NAME; - - if (!this._defaultService) { - log("no authentication service is enabled, using password authentication"); - this._defaultService = PASSWORD_SERVICE_NAME; - } - }, - - _startService: function(serviceName) { - this._hold.acquire(); - if (this._userName) { - this._userVerifier.call_begin_verification_for_user(serviceName, - this._userName, - this._cancellable, - Lang.bind(this, function(obj, result) { - try { - obj.call_begin_verification_for_user_finish(result); - } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { - return; - } catch(e) { - this._reportInitError('Failed to start verification for user', e); - return; - } - - this._hold.release(); - })); -- -2.5.0 +2.12.0 -From cc8f8795d9a4bdf4b7893b07bb1a1a5585443ef7 Mon Sep 17 00:00:00 2001 +From d378c2ccd514770cc35ce72bfff2b24fe956b762 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 28 Sep 2015 19:57:36 -0400 Subject: [PATCH 3/3] gdm: update default service when smartcard inserted @@ -237,37 +98,10 @@ after we get a smartcard insertion event. 1 file changed, 2 insertions(+) diff --git a/js/gdm/util.js b/js/gdm/util.js -index 776b76d..8723d59 100644 +index cea1a0918..9517150f0 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js -@@ -304,60 +304,62 @@ const ShellUserVerifier = new Lang.Class({ - if (!error && device) { - this._haveFingerprintReader = true; - this._updateDefaultService(); - } - })); - }, - - _oVirtUserAuthenticated: function(token) { - this._preemptingService = OVIRT_SERVICE_NAME; - this.emit('ovirt-user-authenticated'); - }, - - _checkForSmartcard: function() { - let smartcardDetected; - - if (!this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) - smartcardDetected = false; - else if (this._reauthOnly) - smartcardDetected = this._smartcardManager.hasInsertedLoginToken(); - else - smartcardDetected = this._smartcardManager.hasInsertedTokens(); - - if (smartcardDetected != this.smartcardDetected) { - this.smartcardDetected = smartcardDetected; - - if (this.smartcardDetected) - this._preemptingService = SMARTCARD_SERVICE_NAME; +@@ -331,6 +331,8 @@ const ShellUserVerifier = new Lang.Class({ else if (this._preemptingService == SMARTCARD_SERVICE_NAME) this._preemptingService = null; @@ -276,33 +110,6 @@ index 776b76d..8723d59 100644 this.emit('smartcard-status-changed'); } }, - - _reportInitError: function(where, error) { - logError(error, where); - this._hold.release(); - - this._queueMessage(_("Authentication error"), MessageType.ERROR); - this._verificationFailed(false); - }, - - _reauthenticationChannelOpened: function(client, result) { - try { - this._clearUserVerifier(); - this._userVerifier = client.open_reauthentication_channel_finish(result); - } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) { - return; - } catch(e if e.matches(Gio.DBusError, Gio.DBusError.ACCESS_DENIED) && - !this._reauthOnly) { - // Gdm emits org.freedesktop.DBus.Error.AccessDenied when there is - // no session to reauthenticate. Fall back to performing verification - // from this login session - client.get_user_verifier(this._cancellable, Lang.bind(this, this._userVerifierGot)); - return; - } catch(e) { - this._reportInitError('Failed to open reauthentication channel', e); - return; - } - -- -2.5.0 +2.12.0 diff --git a/SOURCES/fix-background-leaks.patch b/SOURCES/fix-background-leaks.patch deleted file mode 100644 index 57bdef2..0000000 --- a/SOURCES/fix-background-leaks.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 1975387a50888ad911e303a58933527ed6c48e3c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 14 Mar 2014 18:09:22 +0100 -Subject: [PATCH] background: Force a GC run after removing a background - ---- - js/ui/background.js | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/js/ui/background.js b/js/ui/background.js -index ad0cacc..a48934e 100644 ---- a/js/ui/background.js -+++ b/js/ui/background.js -@@ -99,8 +99,10 @@ const Gio = imports.gi.Gio; - const GLib = imports.gi.GLib; - const GnomeDesktop = imports.gi.GnomeDesktop; - const Lang = imports.lang; -+const Mainloop = imports.mainloop; - const Meta = imports.gi.Meta; - const Signals = imports.signals; -+const System = imports.system; - - const Main = imports.ui.main; - const Params = imports.misc.params; -@@ -202,6 +204,14 @@ const BackgroundCache = new Lang.Class({ - if (source._useCount == 0) { - delete this._backgroundSources[settingsSchema]; - source.destroy(); -+ -+ if (!this._gcId) -+ this._gcId = Mainloop.idle_add(Lang.bind(this, -+ function() { -+ System.gc(); -+ this._gcId = 0; -+ return false; -+ })); - } - } - } --- -2.3.3 - diff --git a/SOURCES/fix-cycle-keybindings.patch b/SOURCES/fix-cycle-keybindings.patch deleted file mode 100644 index 414105e..0000000 --- a/SOURCES/fix-cycle-keybindings.patch +++ /dev/null @@ -1,602 +0,0 @@ -From 9014bbdd2e8ccee83836fbb3795691a09d3c2d54 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 19 May 2016 14:41:24 +0200 -Subject: [PATCH 1/6] altTab: Take over cycle-windows/cycle-group keybindings - -The code to handle cycling through windows without showing a popup -was removed from mutter a while ago, which left the corresponding -keybindings mostly broken (i.e. they now only switch between two -windows). With the various switch-foo keybindings handled by the -shell, it is now easier to take over the cycle-foo keybindings as -well. - -https://bugzilla.gnome.org/show_bug.cgi?id=730739 ---- - js/ui/altTab.js | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++ - js/ui/windowManager.js | 34 ++++++++++++++++++++++ - 2 files changed, 113 insertions(+) - -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index 3850d89..0d569f8 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -355,6 +355,59 @@ const AppSwitcherPopup = new Lang.Class({ - } - }); - -+const CyclerPopup = new Lang.Class({ -+ Name: 'CyclerPopup', -+ Extends: SwitcherPopup.SwitcherPopup, -+ Abstract: true, -+ -+ _init : function() { -+ this.parent(); -+ -+ this._items = this._getWindows(); -+ -+ if (this._items.length == 0) -+ return; -+ -+ // We don't show an actual popup, so just provide what SwitcherPopup -+ // expects instead of inheriting from SwitcherList -+ this._switcherList = { actor: new St.Widget(), -+ highlight: Lang.bind(this, this._highlightItem), -+ connect: function() {} }; -+ }, -+ -+ _highlightItem: function(index, justOutline) { -+ Main.activateWindow(this._items[index]); -+ }, -+ -+ _finish: function() { -+ this._highlightItem(this._selectedIndex); -+ -+ this.parent(); -+ } -+}); -+ -+ -+const GroupCyclerPopup = new Lang.Class({ -+ Name: 'GroupCyclerPopup', -+ Extends: CyclerPopup, -+ -+ _getWindows: function() { -+ let app = Shell.WindowTracker.get_default().focus_app; -+ return app ? app.get_windows() : []; -+ }, -+ -+ _keyPressHandler: function(keysym, action) { -+ if (action == Meta.KeyBindingAction.CYCLE_GROUP) -+ this._select(this._next()); -+ else if (action == Meta.KeyBindingAction.CYCLE_GROUP_BACKWARD) -+ this._select(this._previous()); -+ else -+ return Clutter.EVENT_PROPAGATE; -+ -+ return Clutter.EVENT_STOP; -+ } -+}); -+ - const WindowSwitcherPopup = new Lang.Class({ - Name: 'WindowSwitcherPopup', - Extends: SwitcherPopup.SwitcherPopup, -@@ -402,6 +455,32 @@ const WindowSwitcherPopup = new Lang.Class({ - } - }); - -+const WindowCyclerPopup = new Lang.Class({ -+ Name: 'WindowCyclerPopup', -+ Extends: CyclerPopup, -+ -+ _init: function() { -+ this._settings = new Gio.Settings({ schema_id: 'org.gnome.shell.window-switcher' }); -+ this.parent(); -+ }, -+ -+ _getWindows: function() { -+ let workspace = this._settings.get_boolean('current-workspace-only') ? global.screen.get_active_workspace() : null; -+ return global.display.get_tab_list(Meta.TabList.NORMAL, workspace); -+ }, -+ -+ _keyPressHandler: function(keysym, action) { -+ if (action == Meta.KeyBindingAction.CYCLE_WINDOWS) -+ this._select(this._next()); -+ else if (action == Meta.KeyBindingAction.CYCLE_WINDOWS_BACKWARD) -+ this._select(this._previous()); -+ else -+ return Clutter.EVENT_PROPAGATE; -+ -+ return Clutter.EVENT_STOP; -+ } -+}); -+ - const AppIcon = new Lang.Class({ - Name: 'AppIcon', - -diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js -index e332552..b7dbc1f 100644 ---- a/js/ui/windowManager.js -+++ b/js/ui/windowManager.js -@@ -763,6 +763,18 @@ const WindowManager = new Lang.Class({ - this.setCustomKeybindingHandler('switch-windows-backward', - Shell.KeyBindingMode.NORMAL, - Lang.bind(this, this._startWindowSwitcher)); -+ this.setCustomKeybindingHandler('cycle-windows', -+ Shell.KeyBindingMode.NORMAL, -+ Lang.bind(this, this._startWindowCycler)); -+ this.setCustomKeybindingHandler('cycle-windows-backward', -+ Shell.KeyBindingMode.NORMAL, -+ Lang.bind(this, this._startWindowCycler)); -+ this.setCustomKeybindingHandler('cycle-group', -+ Shell.KeyBindingMode.NORMAL, -+ Lang.bind(this, this._startGroupCycler)); -+ this.setCustomKeybindingHandler('cycle-group-backward', -+ Shell.KeyBindingMode.NORMAL, -+ Lang.bind(this, this._startGroupCycler)); - this.setCustomKeybindingHandler('switch-panels', - Shell.KeyBindingMode.NORMAL | - Shell.KeyBindingMode.OVERVIEW | -@@ -1407,6 +1419,28 @@ const WindowManager = new Lang.Class({ - tabPopup.destroy(); - }, - -+ _startWindowCycler : function(display, screen, window, binding) { -+ /* prevent a corner case where both popups show up at once */ -+ if (this._workspaceSwitcherPopup != null) -+ this._workspaceSwitcherPopup.destroy(); -+ -+ let tabPopup = new AltTab.WindowCyclerPopup(); -+ -+ if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) -+ tabPopup.destroy(); -+ }, -+ -+ _startGroupCycler : function(display, screen, window, binding) { -+ /* prevent a corner case where both popups show up at once */ -+ if (this._workspaceSwitcherPopup != null) -+ this._workspaceSwitcherPopup.destroy(); -+ -+ let tabPopup = new AltTab.GroupCyclerPopup(); -+ -+ if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) -+ tabPopup.destroy(); -+ }, -+ - _startA11ySwitcher : function(display, screen, window, binding) { - Main.ctrlAltTabManager.popup(binding.is_reversed(), binding.get_name(), binding.get_mask()); - }, --- -2.9.3 - - -From bfe5a9043e7a42108f39319c0966e0a6c3fd6d17 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 19 May 2016 16:36:46 +0200 -Subject: [PATCH 2/6] windowManager: Avoid code duplication - -The various switcher keybindings are handled identically, except for -the popup that is shown; update the code to reflect that instead of -duplicating the code again and again. - -https://bugzilla.gnome.org/show_bug.cgi?id=730739 ---- - js/ui/windowManager.js | 78 ++++++++++++++++++++++---------------------------- - 1 file changed, 35 insertions(+), 43 deletions(-) - -diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js -index b7dbc1f..f228142 100644 ---- a/js/ui/windowManager.js -+++ b/js/ui/windowManager.js -@@ -747,34 +747,34 @@ const WindowManager = new Lang.Class({ - Lang.bind(this, this._showWorkspaceSwitcher)); - this.setCustomKeybindingHandler('switch-applications', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startAppSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-group', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startAppSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-applications-backward', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startAppSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-group-backward', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startAppSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-windows', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startWindowSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-windows-backward', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startWindowSwitcher)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('cycle-windows', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startWindowCycler)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('cycle-windows-backward', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startWindowCycler)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('cycle-group', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startGroupCycler)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('cycle-group-backward', - Shell.KeyBindingMode.NORMAL, -- Lang.bind(this, this._startGroupCycler)); -+ Lang.bind(this, this._startSwitcher)); - this.setCustomKeybindingHandler('switch-panels', - Shell.KeyBindingMode.NORMAL | - Shell.KeyBindingMode.OVERVIEW | -@@ -1397,45 +1397,37 @@ const WindowManager = new Lang.Class({ - this._windowMenuManager.showWindowMenuForWindow(window, menu, rect); - }, - -- _startAppSwitcher : function(display, screen, window, binding) { -- /* prevent a corner case where both popups show up at once */ -- if (this._workspaceSwitcherPopup != null) -- this._workspaceSwitcherPopup.destroy(); -- -- let tabPopup = new AltTab.AppSwitcherPopup(); -- -- if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) -- tabPopup.destroy(); -- }, -- -- _startWindowSwitcher : function(display, screen, window, binding) { -- /* prevent a corner case where both popups show up at once */ -- if (this._workspaceSwitcherPopup != null) -- this._workspaceSwitcherPopup.destroy(); -- -- let tabPopup = new AltTab.WindowSwitcherPopup(); -- -- if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) -- tabPopup.destroy(); -- }, -- -- _startWindowCycler : function(display, screen, window, binding) { -- /* prevent a corner case where both popups show up at once */ -- if (this._workspaceSwitcherPopup != null) -- this._workspaceSwitcherPopup.destroy(); -- -- let tabPopup = new AltTab.WindowCyclerPopup(); -+ _startSwitcher: function(display, screen, window, binding) { -+ let constructor = null; -+ switch (binding.get_name()) { -+ case 'switch-applications': -+ case 'switch-applications-backward': -+ case 'switch-group': -+ case 'switch-group-backward': -+ constructor = AltTab.AppSwitcherPopup; -+ break; -+ case 'switch-windows': -+ case 'switch-windows-backward': -+ constructor = AltTab.WindowSwitcherPopup; -+ break; -+ case 'cycle-windows': -+ case 'cycle-windows-backward': -+ constructor = AltTab.WindowCyclerPopup; -+ break; -+ case 'cycle-group': -+ case 'cycle-group-backward': -+ constructor = AltTab.GroupCyclerPopup; -+ break; -+ } - -- if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) -- tabPopup.destroy(); -- }, -+ if (!constructor) -+ return; - -- _startGroupCycler : function(display, screen, window, binding) { - /* prevent a corner case where both popups show up at once */ - if (this._workspaceSwitcherPopup != null) - this._workspaceSwitcherPopup.destroy(); - -- let tabPopup = new AltTab.GroupCyclerPopup(); -+ let tabPopup = new constructor(); - - if (!tabPopup.show(binding.is_reversed(), binding.get_name(), binding.get_mask())) - tabPopup.destroy(); --- -2.9.3 - - -From 76169ed024198e8efbc876f6d50a21e71809b861 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 8 Sep 2016 16:05:06 +0200 -Subject: [PATCH 3/6] altTab: Don't mess up MRU order while cycling windows - -Commit bd6e7f14d17b reimplemented the cycle keybindings to -fix cycling between more than two windows, but the approach -of highlighting cycled windows by actually focusing them has -the drawback that cycling messes up the MRU order of windows. -To fix this, only change the window focus when the operation -finishes, and use a dedicated actor that draws a border around -a window clone for highlighting. - -https://bugzilla.gnome.org/show_bug.cgi?id=771063 ---- - data/theme/gnome-shell.css | 4 +++ - js/ui/altTab.js | 75 ++++++++++++++++++++++++++++++++++++++++++++-- - 2 files changed, 77 insertions(+), 2 deletions(-) - -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index f1e9a23..56ff92f 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -1891,6 +1891,10 @@ StScrollBar StButton#vhandle:active { - color: white; - } - -+/* Window Cycler */ -+.cycler-highlight { -+ border: 5px solid #215d9c; } -+ - /* Workspace Switcher */ - .workspace-switcher-group { - padding: 12px; -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index 0d569f8..c87baa2 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -355,6 +355,67 @@ const AppSwitcherPopup = new Lang.Class({ - } - }); - -+const CyclerHighlight = new Lang.Class({ -+ Name: 'CyclerHighlight', -+ -+ _init: function() { -+ this._window = null; -+ -+ this.actor = new St.Widget({ layout_manager: new Clutter.BinLayout() }); -+ -+ this._clone = new Clutter.Clone(); -+ this.actor.add_actor(this._clone); -+ -+ this._highlight = new St.Widget({ style_class: 'cycler-highlight' }); -+ this.actor.add_actor(this._highlight); -+ -+ let coordinate = Clutter.BindCoordinate.ALL; -+ let constraint = new Clutter.BindConstraint({ coordinate: coordinate }); -+ this._clone.bind_property('source', constraint, 'source', 0); -+ -+ this.actor.add_constraint(constraint); -+ -+ this.actor.connect('notify::allocation', -+ Lang.bind(this, this._onAllocationChanged)); -+ this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); -+ }, -+ -+ set window(w) { -+ if (this._window == w) -+ return; -+ -+ this._window = w; -+ -+ if (this._clone.source) -+ this._clone.source.show(); -+ -+ let windowActor = this._window ? this._window.get_compositor_private() -+ : null; -+ -+ if (windowActor) -+ windowActor.hide(); -+ -+ this._clone.source = windowActor; -+ }, -+ -+ _onAllocationChanged: function() { -+ if (!this._window) { -+ this._highlight.set_size(0, 0); -+ this._highlight.hide(); -+ } else { -+ let [x, y] = this.actor.allocation.get_origin(); -+ let rect = this._window.get_frame_rect(); -+ this._highlight.set_size(rect.width, rect.height); -+ this._highlight.set_position(rect.x - x, rect.y - y); -+ this._highlight.show(); -+ } -+ }, -+ -+ _onDestroy: function() { -+ this.window = null; -+ } -+}); -+ - const CyclerPopup = new Lang.Class({ - Name: 'CyclerPopup', - Extends: SwitcherPopup.SwitcherPopup, -@@ -368,6 +429,9 @@ const CyclerPopup = new Lang.Class({ - if (this._items.length == 0) - return; - -+ this._highlight = new CyclerHighlight(); -+ global.window_group.add_actor(this._highlight.actor); -+ - // We don't show an actual popup, so just provide what SwitcherPopup - // expects instead of inheriting from SwitcherList - this._switcherList = { actor: new St.Widget(), -@@ -376,11 +440,18 @@ const CyclerPopup = new Lang.Class({ - }, - - _highlightItem: function(index, justOutline) { -- Main.activateWindow(this._items[index]); -+ this._highlight.window = this._items[index]; -+ global.window_group.set_child_above_sibling(this._highlight.actor, null); - }, - - _finish: function() { -- this._highlightItem(this._selectedIndex); -+ Main.activateWindow(this._items[this._selectedIndex]); -+ -+ this.parent(); -+ }, -+ -+ _onDestroy: function() { -+ this._highlight.actor.destroy(); - - this.parent(); - } --- -2.9.3 - - -From d5a87ea4b596a24905b0d1496b75ce5a26ac31fa Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Tue, 13 Sep 2016 21:18:17 +0200 -Subject: [PATCH 4/6] altTab: Restore correct visibility when cycling windows - -Commit 3171819c improved window cycling by using a dedicated to clone -for highlighting rather than activating all cycled windows. Original -window actors are hidden while its clone is showing, and shown again -afterwards, however the latter is wrong for actors that are not supposed -to be visible (for example where the window is minimized, or on a different -workspace). Fix this by properly syncing the actor's visibility instead -of showing it unconditionally. - -https://bugzilla.gnome.org/show_bug.cgi?id=771536 ---- - js/ui/altTab.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index c87baa2..242b243 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -387,7 +387,7 @@ const CyclerHighlight = new Lang.Class({ - this._window = w; - - if (this._clone.source) -- this._clone.source.show(); -+ this._clone.source.sync_visibility(); - - let windowActor = this._window ? this._window.get_compositor_private() - : null; --- -2.9.3 - - -From 14f381e5a86b586a713f95f7af017552a3d1733d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 14 Sep 2016 22:44:12 +0200 -Subject: [PATCH 5/6] altTab: Improve cycling to a window on another workspace - -Both 'cycle-group' and 'cycle-window' shortcuts allow cycling through -windows on all workspaces. While this works, it looks quite broken -since we started showing clones for highlighting: the selected window -vanishes (when its clone is destroyed), then slides back in with its -workspace. Instead, slide the selected window to its workspace like -we do for the 'move-to-workspace-*' shortcuts. - -https://bugzilla.gnome.org/show_bug.cgi?id=771536 ---- - js/ui/altTab.js | 16 +++++++++++++++- - 1 file changed, 15 insertions(+), 1 deletion(-) - -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index 242b243..42d3b4a 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -445,7 +445,21 @@ const CyclerPopup = new Lang.Class({ - }, - - _finish: function() { -- Main.activateWindow(this._items[this._selectedIndex]); -+ let window = this._items[this._selectedIndex]; -+ let ws = window.get_workspace(); -+ let activeWs = global.screen.get_active_workspace(); -+ -+ if (activeWs == ws) { -+ Main.activateWindow(window); -+ } else { -+ // If the selected window is on a different workspace, we don't -+ // want it to disappear, then slide in with the workspace; instead, -+ // always activate it on the active workspace ... -+ activeWs.activate_with_focus(window, global.get_current_time()); -+ -+ // ... then slide it over to the original workspace if necessary -+ Main.wm.actionMoveWindow(window, ws); -+ } - - this.parent(); - }, --- -2.9.3 - - -From d5008a5bbed4a5b0511dc4c6b947ec04134a6370 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 15 Sep 2016 17:41:52 +0200 -Subject: [PATCH 6/6] altTab: Skip unminimize effect when cycling to a window - -Similar to windows on another workspace, selecting a minimized window -doesn't look quite right - the selected window disappears, then animates -back in. Fix this by adding support for skipping the next effect to the -wm and use it to bypass the unminimize animation. - -https://bugzilla.gnome.org/show_bug.cgi?id=771536 ---- - js/ui/altTab.js | 5 +++++ - js/ui/windowManager.js | 9 +++++++++ - 2 files changed, 14 insertions(+) - -diff --git a/js/ui/altTab.js b/js/ui/altTab.js -index 42d3b4a..41d9647 100644 ---- a/js/ui/altTab.js -+++ b/js/ui/altTab.js -@@ -449,6 +449,11 @@ const CyclerPopup = new Lang.Class({ - let ws = window.get_workspace(); - let activeWs = global.screen.get_active_workspace(); - -+ if (window.minimized) { -+ Main.wm.skipNextEffect(window.get_compositor_private()); -+ window.unminimize(); -+ } -+ - if (activeWs == ws) { - Main.activateWindow(window); - } else { -diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js -index f228142..237ae1d 100644 ---- a/js/ui/windowManager.js -+++ b/js/ui/windowManager.js -@@ -595,6 +595,8 @@ const WindowManager = new Lang.Class({ - - this._dimmedWindows = []; - -+ this._skippedActors = []; -+ - this._allowedKeybindings = {}; - - this._switchData = null; -@@ -875,6 +877,10 @@ const WindowManager = new Lang.Class({ - this._workspaceTracker.keepWorkspaceAlive(workspace, duration); - }, - -+ skipNextEffect: function(actor) { -+ this._skippedActors.push(actor); -+ }, -+ - setCustomKeybindingHandler: function(name, modes, handler) { - if (Meta.keybindings_set_custom_handler(name, handler)) - this.allowKeybinding(name, modes); -@@ -901,6 +907,9 @@ const WindowManager = new Lang.Class({ - }, - - _shouldAnimateActor: function(actor, types) { -+ if (this._removeEffect(this._skippedActors, actor)) -+ return false; -+ - if (!this._shouldAnimate()) - return false; - --- -2.9.3 - diff --git a/SOURCES/fix-maximized-windows-flickering-to-the-wrong-struts.patch b/SOURCES/fix-maximized-windows-flickering-to-the-wrong-struts.patch deleted file mode 100644 index cf744e8..0000000 --- a/SOURCES/fix-maximized-windows-flickering-to-the-wrong-struts.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -up gnome-shell-3.14.4/js/ui/layout.js.strut-timing gnome-shell-3.14.4/js/ui/layout.js ---- gnome-shell-3.14.4/js/ui/layout.js.strut-timing 2016-02-04 12:47:52.032839734 -0500 -+++ gnome-shell-3.14.4/js/ui/layout.js 2016-02-04 13:06:04.575627502 -0500 -@@ -636,7 +636,10 @@ const LayoutManager = new Lang.Class({ - this.addChrome(this._coverPane); - - if (Meta.is_restart() || global.screen.get_n_monitors() == 0) { -- // On restart, we don't do an animation -+ // On restart, we don't do an animation; force an update of the -+ // regions immediately so that maximized windows restore to the -+ // right size taking struts into account. -+ this._updateRegions(); - } else if (Main.sessionMode.isGreeter) { - this.panelBox.translation_y = -this.panelBox.height; - } else { -@@ -987,6 +990,11 @@ const LayoutManager = new Lang.Class({ - delete this._updateRegionIdle; - } - -+ // Bug workaround - get_transformed_position()/get_transformed_size() don't work after a change -+ // in stage size until the first pick or paint. -+ // https://bugzilla.gnome.org/show_bug.cgi?id=761565 -+ global.stage.get_actor_at_pos(Clutter.PickMode.ALL, 0, 0); -+ - // No need to update when we have a modal. - if (Main.modalCount > 0) - return GLib.SOURCE_REMOVE; diff --git a/SOURCES/fix-menu-ornament-oddities.patch b/SOURCES/fix-menu-ornament-oddities.patch deleted file mode 100644 index 95d2776..0000000 --- a/SOURCES/fix-menu-ornament-oddities.patch +++ /dev/null @@ -1,66 +0,0 @@ -From d9b3a28a579ba1969e6fa3cb83d487f7742e6765 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 30 Jul 2015 17:25:59 +0200 -Subject: [PATCH 1/2] theme: Make menu ornament slightly wider - -The existing width works well enough for a narrow character like the dot, -but doesn't leave any whitespace for a wider one like the checkmark. - -https://bugzilla.gnome.org/show_bug.cgi?id=741366 ---- - data/theme/gnome-shell.css | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 80dff57..97634b1 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -140,7 +140,7 @@ StScrollBar StButton#vhandle:active { - - .popup-menu-ornament { - text-align: right; -- width: 1em; -+ width: 1.2em; - } - - .popup-menu-boxpointer, --- -2.4.3 - - -From 1e5fc64944e9259782d060032e48bb7e6aaaabd3 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Thu, 30 Jul 2015 15:54:16 +0200 -Subject: [PATCH 2/2] windowMenu: Use CHECK ornament rather than DOT - -The dot suggests a radio action, while the items are actually toggles; -in the app menu we use checkmarks in that case, so do the same here. ---- - js/ui/windowMenu.js | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js -index 3d378fa..43f6125 100644 ---- a/js/ui/windowMenu.js -+++ b/js/ui/windowMenu.js -@@ -74,7 +74,7 @@ const WindowMenu = new Lang.Class({ - window.make_above(); - })); - if (window.is_above()) -- item.setOrnament(PopupMenu.Ornament.DOT); -+ item.setOrnament(PopupMenu.Ornament.CHECK); - if (window.get_maximized() == Meta.MaximizeFlags.BOTH || - type == Meta.WindowType.DOCK || - type == Meta.WindowType.DESKTOP || -@@ -93,7 +93,7 @@ const WindowMenu = new Lang.Class({ - window.stick(); - })); - if (isSticky) -- item.setOrnament(PopupMenu.Ornament.DOT); -+ item.setOrnament(PopupMenu.Ornament.CHECK); - if (window.is_always_on_all_workspaces()) - item.setSensitive(false); - --- -2.4.3 - diff --git a/SOURCES/gnome-shell-3.14.4-EL7.3_translations.patch b/SOURCES/gnome-shell-3.14.4-EL7.3_translations.patch deleted file mode 100644 index fafe437..0000000 --- a/SOURCES/gnome-shell-3.14.4-EL7.3_translations.patch +++ /dev/null @@ -1,15582 +0,0 @@ -diff -urN gnome-shell-3.14.4/po/de.po gnome-shell-3.14.4_localized/po/de.po ---- gnome-shell-3.14.4/po/de.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/de.po 2016-03-11 22:07:50.494000000 +0530 -@@ -1,9 +1,9 @@ - # German gnome-shell translation. - # Copyright (C) 2009 Free Software Foundation, Inc. - # This file is distributed under the same license as the gnome-shell package. --# -+# - # workspace - Arbeitsfläche --# -+# - # Hendrik Brandt , 2009. - # Hendrik Richter , 2009, 2010, 2011. - # Mario Blättermann , 2009-2013. -@@ -14,22 +14,22 @@ - # Christian Kirbach , 2009, 2010, 2011, 2012, 2013. - # Tobias Endrigkeit , 2012, 2013. - # Benjamin Steinwender , 2013-2014. --# -+# lstemmle , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell master\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-10-01 19:43+0000\n" --"PO-Revision-Date: 2014-10-01 22:16+0100\n" --"Last-Translator: Christian Kirbach \n" --"Language-Team: Deutsch \n" --"Language: de_DE\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-07 04:27+0000\n" -+"Last-Translator: lstemmle \n" -+"Language-Team: Deutsch \n" -+"Language: de\n" - "Plural-Forms: nplurals=2; plural=(n != 1);\n" --"X-Generator: Poedit 1.5.4\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -204,6 +204,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "" - "Tastenkombination zum Öffnen der »Anwendungen anzeigen«-Ansicht der " - "Aktivitätenübersicht." -@@ -219,7 +220,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 - msgid "Keybinding to toggle the visibility of the message tray" - msgstr "" --"Tastenkombination zum Umschalten der Sichtbarkeit des Benachrichtigungsfeldes" -+"Tastenkombination zum Umschalten der Sichtbarkeit des " -+"Benachrichtigungsfeldes" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 - msgid "Keybinding to toggle the visibility of the message tray." -@@ -237,7 +239,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Tastenkombination, die alle laufenden Zwischenbilder anhält und fortsetzt. " - "Zur Fehlerdiagnose." -@@ -270,8 +273,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Legt fest, wie Fenster im Fensterwechsler dargestellt werden. Mögliche Werte " - "sind »thumbnail-only« (Vorschaubilder der Fenster werden angezeigt), »app-" -@@ -321,7 +324,7 @@ - msgstr "Erzwungene Anmeldeseite" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "Beim Laden des Einstellungsdialogs für %s ist ein Fehler aufgetreten:" - -@@ -329,54 +332,68 @@ - msgid "GNOME Shell Extensions" - msgstr "GNOME-Shell-Erweiterungen" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Abbrechen" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Weiter" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Entsperren" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Anmelden" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Sitzung wählen" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "Nicht aufgeführt?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(z.B. Benutzer oder %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Benutzername:" - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Anmeldefenster" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Anmeldung fehlgeschlagen" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(oder benutzen Sie den Fingerabdruckleser)" - -@@ -384,58 +401,62 @@ - msgid "Command not found" - msgstr "Befehl nicht gefunden" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "Befehl konnte nicht verarbeitet werden:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "Ausführung von »%s« ist gescheitert:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Umleitung zu einer Internet-Anmeldung" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Häufig genutzte Anwendungen werden hier erscheinen" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Häufig" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Alle" - --#: ../js/ui/appDisplay.js:1790 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Neues Fenster" - --#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Aus Favoriten entfernen" - --#: ../js/ui/appDisplay.js:1822 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Zu Favoriten hinzufügen" - --#: ../js/ui/appDisplay.js:1831 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Details anzeigen" - --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s wurde zu Ihren Favoriten hinzugefügt" - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s wurde aus Ihren Favoriten entfernt" - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Einstellungen" -@@ -446,69 +467,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Ganztägig" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "S" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "F" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "S" -@@ -518,86 +539,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "So" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "Mo" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "Di" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "Mi" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "Do" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "Fr" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "Sa" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Vorheriger Monat" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Nächster Monat" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Nichts geplant" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A, %d. %B" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%a, %d. %B %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Heute" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Morgen" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Diese Woche" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "Nächste Woche" - -@@ -614,7 +635,7 @@ - msgstr "Wechseldatenträger" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Öffnen mit %s" - -@@ -635,6 +656,7 @@ - msgid "Connect" - msgstr "Verbinden" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -643,6 +665,7 @@ - msgid "Password: " - msgstr "Passwort:" - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Schlüssel:" -@@ -664,7 +687,7 @@ - msgstr "Anmeldung für Funknetzwerk wird benötigt" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -701,7 +724,7 @@ - msgstr "Passwort der mobilen Breitbandverbindung" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "Es wird ein Passwort benötigt, um sich mit »%s« zu verbinden." - -@@ -720,19 +743,24 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." --msgstr "Entschuldigung, das hat nicht geklappt. Bitte versuchen Sie es erneut." -+msgstr "" -+"Entschuldigung, das hat nicht geklappt. Bitte versuchen Sie es erneut." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Einladung" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Anruf" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Dateiübertragung" -@@ -749,88 +777,95 @@ - msgid "Mute" - msgstr "Stumm" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "Gestern, %H:%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "Gestern, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%e. %B, %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%e. %B %Y, %H:%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d %Y, %H\\u2236%M" - --# 24h Format --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%H∶%M" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "Gestern, %H:%M" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "Gestern, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%e. %B, %H∶%M" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%e. %B %Y, %H:%M" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s heißt jetzt %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Einladung zum Betreten von %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s lädt Sie ein, %s beizutreten" - -@@ -847,19 +882,19 @@ - msgid "Accept" - msgstr "Annehmen" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Video-Anruf von %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Anruf von %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Antworten" -@@ -868,15 +903,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s sendet Ihnen %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s bittet um das Recht, Ihre Online-Verfügbarkeit sehen zu dürfen" - -@@ -989,9 +1024,9 @@ - msgstr "Interner Fehler" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "Verbindung zu %s fehlgeschlagen" - -@@ -1003,7 +1038,7 @@ - msgid "Unknown reason" - msgstr "Unbekannter Grund" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Fenster" - -@@ -1012,31 +1047,33 @@ - msgstr "Anwendungen anzeigen" - - # Würde ich so übernehmen, oder evtl. »Dock«. -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "Kalender öffnen" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "Uhren öffnen" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "Einstellungen für Datum und Uhrzeit" - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%A, %e. %B %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "%s abmelden" -@@ -1047,14 +1084,14 @@ - msgstr "Abmelden" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s wird automatisch in %d Sekunde abgemeldet." - msgstr[1] "%s wird automatisch in %d Sekunden abgemeldet." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "Sie werden automatisch in %d Sekunde abgemeldet." -@@ -1076,7 +1113,7 @@ - msgstr "Aktualisierungen installieren und ausschalten" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "Das System wird automatisch in %d Sekunde ausgeschaltet." -@@ -1103,7 +1140,7 @@ - msgstr "Neu starten" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "Das System wird automatisch in %d Sekunde neu gestartet." -@@ -1115,8 +1152,9 @@ - msgstr "Neu starten und Aktualisierungen installieren" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "" -@@ -1154,15 +1192,15 @@ - msgid "Other users are logged in." - msgstr "Andere Benutzer sind angemeldet." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (Entfernt)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (Konsole)" - -@@ -1171,99 +1209,118 @@ - msgstr "Installieren" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "»%s« von extensions.gnome.org herunterladen und installieren?" - --#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d Erweiterung ist veraltet" -+msgstr[1] "%d Erweiterungen sind veraltet" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "Updates finden Sie unter http://extensions.gnome.org" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Tastatur" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "Keine Erweiterungen installiert" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s hat keine Fehler ausgegeben." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Fehler verbergen" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Fehler anzeigen" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Aktiviert" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Deaktiviert" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Fehler" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Veraltet" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Herunterladen" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Quelle zeigen" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Webseite" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Öffnen" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Entfernen" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Benachrichtigungen" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Nachrichten leeren" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Benachrichtigungseinstellungen" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Benachrichtigungsfeldmenü" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "Keine Nachrichten" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Benachrichtigungsfeld" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d neue Nachricht" -+msgstr[1] "%d neue Nachrichten" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Systeminformationen" - -@@ -1272,13 +1329,6 @@ - msgid "Unknown" - msgstr "Unbekannt" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d neue Nachricht" --msgstr[1] "%d neue Nachrichten" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Rückgängig" -@@ -1290,7 +1340,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Suchbegriff eingeben …" -@@ -1300,15 +1350,20 @@ - msgstr "Beenden" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Aktivitäten" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - msgstr "Oberes Panel" - -+#. Translators: this MUST be either "toggle-switch-us" -+#. (for toggle switches containing the English words -+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle -+#. switches containing "◯" and "|"). Other values will -+#. simply result in invisible toggle switches. - #: ../js/ui/popupMenu.js:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1329,31 +1384,38 @@ - # %d - Tag des Monats als Zahl (Bereich 01 bis 31) - # %B - ausgeschriebener Name des Monats, abhängig von der gesetzten Umgebung - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A, %d. %B" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d neue Benachrichtigung" - msgstr[1] "%d neue Benachrichtigungen" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Sperren" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME muss den Bildschirm sperren" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "Sperrung fehlgeschlagen" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "Sperrung wurde von einer Anwendung blockiert" - -@@ -1433,6 +1495,8 @@ - msgid "Large Text" - msgstr "Große Schrift" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1449,7 +1513,7 @@ - msgstr "Bluetooth-Einstellungen" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d Verbundes Gerät" -@@ -1463,7 +1527,7 @@ - msgid "Brightness" - msgstr "Helligkeit" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Tastaturbelegung anzeigen" - -@@ -1501,7 +1565,7 @@ - msgstr "Verbunden" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Nicht verwaltet" -@@ -1514,19 +1578,19 @@ - msgid "Connecting" - msgstr "Verbinden" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Anmeldung erforderlich" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Firmware fehlt" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "Nicht verfügbar" -@@ -1614,7 +1678,7 @@ - msgid "connecting..." - msgstr "Verbindungsaufbau …" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "Anmeldung erforderlich" -@@ -1651,19 +1715,23 @@ - msgid "Fully Charged" - msgstr "Vollständig geladen" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "Schätzung …" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "%d∶%02d verbleibend (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d Verbleibend (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "%d∶%02d bis geladen (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d\\u2236%02d Bis Voll (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1673,6 +1741,9 @@ - msgid "Battery" - msgstr "Akku" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Flugzeugmodus" -@@ -1721,16 +1792,16 @@ - msgid "Unlock Window" - msgstr "Fenster entsperren" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Anwendungen" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Suchen" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "»%s« ist bereit" - -@@ -1740,7 +1811,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Zurücksetzen" -@@ -1750,10 +1821,11 @@ - msgstr "Beibehalten" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" --msgstr[0] "Die Änderungen der Einstellungen werden in %d Sekunde zurückgesetzt" -+msgstr[0] "" -+"Die Änderungen der Einstellungen werden in %d Sekunde zurückgesetzt" - msgstr[1] "" - "Die Änderungen der Einstellungen werden in %d Sekunden zurückgesetzt" - -@@ -1823,20 +1895,20 @@ - msgid "System Sounds" - msgstr "Systemklänge" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Version ausgeben" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Der durch GDM im Anmeldefenster verwendete Modus" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "" - "Einen spezifischen Modus nutzen, wie z.B. »gdm« für den Anmeldebildschirm" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Die möglichen Modi auflisten" - -@@ -1856,66 +1928,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "Der Dialog zur Anmeldung wurde vom Benutzer geschlossen" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "Maximale Ortsauflösung" -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "Legt die maximale Ortsauflösung für Anwendungen fest. Gültige Werte sind " --#~ "»off« (Ortung deaktiviert), »country« (Land), »city« (Stadt), " --#~ "»neighborhood« (Nachbarschaft), »street« (Straße) und »exact« (genau, " --#~ "benötigt üblicherweise einen GPS-Empfänger). Bitte bedenken Sie, dass " --#~ "diese Einstellung nur festlegt, welche Informationen GeoClue an " --#~ "Anwendungen weitergibt. Die Anwendungen können jedoch selbst den Ort des " --#~ "Benutzers durch Analyse von Netzwerkressourcen ausfindig machen (jedoch " --#~ "im besten Fall mit Straßengenauigkeit)." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "Anordnung der Knöpfe auf der Titelleiste" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "Dieser Schlüssel überschreibt den Schlüssel in org.gnome.desktop.wm." --#~ "preferences, wenn die GNOME-Shell läuft." -- --#~ msgid "Extension" --#~ msgstr "Erweiterung" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "Wählen Sie oben eine Erweiterung aus, die Sie konfigurieren wollen." -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:MY" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A, %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr " %d. %B, %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%d. %B %Y, %H:%M " -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "Liste der Kategorien, die als Ordner angezeigt werden sollen" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "Jeder Kategoriename in dieser Liste wird als Ordner in der " --#~ "Anwendungsansicht dargestellt, anstatt in der Hauptansicht eingebettet." -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -diff -urN gnome-shell-3.14.4/po/es.po gnome-shell-3.14.4_localized/po/es.po ---- gnome-shell-3.14.4/po/es.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/es.po 2016-03-11 22:07:50.544000000 +0530 -@@ -4,22 +4,22 @@ - # Jorge González , 2009, 2010, 2011. - # Benjamín Valero Espinosa , 2011. - # Daniel Mustieles , 2010, 2011, 2012, 2013, 2014. --# -+# gguerrer , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell.master\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-10-06 07:46+0000\n" --"PO-Revision-Date: 2014-10-06 13:00+0200\n" --"Last-Translator: Daniel Mustieles \n" --"Language-Team: Español; Castellano \n" --"Language: es\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-09 05:25+0000\n" -+"Last-Translator: gguerrer \n" -+"Language-Team: Español; Castellano \n" -+"Language: es\n" - "Plural-Forms: nplurals=2; plural=(n != 1);\n" --"X-Generator: Gtranslator 2.91.6\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -196,6 +196,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "" - "Asociación de teclas para abrir la vista «Mostrar aplicaciones» de la vista " - "de actividades." -@@ -214,7 +215,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 - msgid "Keybinding to toggle the visibility of the message tray." --msgstr "Asociación de teclas cambiar la visibilidad de la bandeja de mensajes." -+msgstr "" -+"Asociación de teclas cambiar la visibilidad de la bandeja de mensajes." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 - msgid "Keybinding to focus the active notification" -@@ -226,7 +228,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Asociación de teclas que pausa y reanuda los «tweens» en ejecución, para " - "depuración." -@@ -259,12 +262,12 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Configura cómo se muestran las ventanas en el selector. Los valore posibles " --"son «thumbnail-only» (muestra una miniatura de la ventana), «app-icon-" --"only» (sólo muestra el icono de la aplicación) «both»." -+"son «thumbnail-only» (muestra una miniatura de la ventana), «app-icon-only» " -+"(sólo muestra el icono de la aplicación) «both»." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 - msgid "" -@@ -308,7 +311,7 @@ - msgstr "Portal captivo" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "Hubo un error al lanzar el diálogo de preferencias para %s:" - -@@ -316,54 +319,68 @@ - msgid "GNOME Shell Extensions" - msgstr "Extensiones de GNOME Shell" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Cancelar" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Siguiente" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Desbloquear" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Iniciar sesión" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Elegir sesión" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "¿No está en la lista?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(ej., usuario o %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Nombre de usuario:" - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Ventana de inicio de sesión" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Error de autenticación" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(o pase el dedo)" - -@@ -371,58 +388,62 @@ - msgid "Command not found" - msgstr "Comando no encontrado" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "No se pudo analizar el comando:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "Falló la ejecución de «%s»:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Redirección para autenticación web" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Las aplicaciones usadas frecuentemente aparecerán aquí" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Frecuentes" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Todas" - --#: ../js/ui/appDisplay.js:1790 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Ventana nueva" - --#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Quitar de los favoritos" - --#: ../js/ui/appDisplay.js:1822 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Añadir a los favoritos" - --#: ../js/ui/appDisplay.js:1831 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Mostrar detalles" - --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "Se ha añadido %s a sus favoritos." - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "Se ha quitado %s de sus favoritos." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Configuración" -@@ -433,69 +454,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Todo el día" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "L" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "X" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "J" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "V" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "S" -@@ -505,86 +526,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "Dom" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "L" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "M" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "X" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "J" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "V" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "S" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Mes anterior" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Siguiente mes" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Nada programado" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A, %d de %B" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%A, %d de %B de %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Hoy" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Mañana" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Esta semana" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "La semana que viene" - -@@ -601,7 +622,7 @@ - msgstr "Dispositivos extraíbles" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Abrir con %s" - -@@ -622,6 +643,7 @@ - msgid "Connect" - msgstr "Conectar" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -630,6 +652,7 @@ - msgid "Password: " - msgstr "Contraseña: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Clave:" -@@ -651,7 +674,7 @@ - msgstr "La red inalámbrica requiere autenticación" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -688,7 +711,7 @@ - msgstr "Contraseña de la red de banda ancha móvil" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "Se requiere una contraseña para conectarse a «%s»." - -@@ -707,19 +730,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "Inténtelo de nuevo," - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Invitación" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Llamar" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Transferencia de archivos" -@@ -736,87 +763,95 @@ - msgid "Mute" - msgstr "Silenciar" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "Ayer, %H∶%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "Ayer, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%d de %B, %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%d de %B de %Y, %H∶%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d %Y, %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "Ayer a las %l∶%M %p" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "Ayer a las %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A, %l∶%M %p" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%d de %B, %l∶%M %p" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%d de %B de %Y, %l∶%M %p" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "Ahora %s se llama %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Invitación a %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s le está invitando a unirse a %s" - -@@ -833,19 +868,19 @@ - msgid "Accept" - msgstr "Aceptar" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Videollamada de %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Llamada de %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Responder" -@@ -854,15 +889,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s le está enviando %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s solicita permiso para ver cuándo está en línea" - -@@ -974,9 +1009,9 @@ - msgstr "Error interno" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "No se pudo conectar a %s" - -@@ -988,7 +1023,7 @@ - msgid "Unknown reason" - msgstr "Razón desconocida" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Ventanas" - -@@ -996,6 +1031,8 @@ - msgid "Show Applications" - msgstr "Mostrar aplicaciones" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Tablero" -@@ -1014,13 +1051,13 @@ - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ -+#. - #: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%A, %e de %B de %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "Cerrar la sesión %s" -@@ -1031,14 +1068,14 @@ - msgstr "Cerrar la sesión" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "se cerrará automáticamente la sesión de %s en %d segundo." - msgstr[1] "se cerrará automáticamente la sesión de %s en %d segundos." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "Su sesión se cerrará automáticamente en %d segundo." -@@ -1060,7 +1097,7 @@ - msgstr "Instalar actualizaciones y apagar" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "El sistema se apagará automáticamente en %d segundo." -@@ -1087,7 +1124,7 @@ - msgstr "Reiniciar" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "El sistema se reiniciará automáticamente en %d segundo." -@@ -1099,8 +1136,9 @@ - msgstr "Reiniciar e instalar actualizaciones" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "" -@@ -1138,15 +1176,15 @@ - msgid "Other users are logged in." - msgstr "Hay otros usuarios con la sesión iniciada" - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (remoto)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (consola)" - -@@ -1155,99 +1193,118 @@ - msgstr "Instalar" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "¿Descargar e instalar «%s» desde extensions.gnome.org?" - --#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "Extensión %d extensión está desactualizada" -+msgstr[1] "La extensión %d está desactualizada" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "Visite http://extensions.gnome.org para obtener actualizaciones" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Teclado" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "No hay extensiones instaladas" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s no ha generado ningún error." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Ocultar errores" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Mostrar errores" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Activado" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Desactivado" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Error" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Caducado" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Descargando" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Ver fuente" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Página web" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Abrir" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Quitar" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Notificaciones" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Limpiar mensajes" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Configuración de las notificaciones" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Bandeja de menú" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "No hay mensajes" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Bandeja de mensajes" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d mensaje nuevo" -+msgstr[1] "%d mensajes nuevos" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Información del sistema" - -@@ -1256,13 +1313,6 @@ - msgid "Unknown" - msgstr "Desconocido" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d mensaje nuevo" --msgstr[1] "%d mensajes nuevos" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Deshacer" -@@ -1274,7 +1324,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Escribir para buscar…" -@@ -1284,15 +1334,20 @@ - msgstr "Salir" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Actividades" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - msgstr "Barra superior" - -+#. Translators: this MUST be either "toggle-switch-us" -+#. (for toggle switches containing the English words -+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle -+#. switches containing "◯" and "|"). Other values will -+#. simply result in invisible toggle switches. - #: ../js/ui/popupMenu.js:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1310,31 +1365,38 @@ - msgstr "Reiniciando…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A, %d de %B" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d notificación nueva" - msgstr[1] "%d notificaciones nuevas" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Bloquear" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME necesita bloquear la pantalla" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "No se pudo bloquear" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "Una aplicación impidió el bloqueo" - -@@ -1414,6 +1476,8 @@ - msgid "Large Text" - msgstr "Texto grande" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1430,7 +1494,7 @@ - msgstr "Configuración de Bluetooth" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d dispositivo conectado" -@@ -1444,7 +1508,7 @@ - msgid "Brightness" - msgstr "Brillo" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Mostrar la distribución del teclado" - -@@ -1482,7 +1546,7 @@ - msgstr "Conectada" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Sin gestionar" -@@ -1495,19 +1559,19 @@ - msgid "Connecting" - msgstr "Conectando" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Autenticación requerida" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Falta el «firmware»" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "No disponible" -@@ -1592,7 +1656,7 @@ - msgid "connecting..." - msgstr "conectando…" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "se necesita autenticación" -@@ -1629,19 +1693,23 @@ - msgid "Fully Charged" - msgstr "Cargada completamente" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "Estimando…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "%d∶%02d queda (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d Restantes (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "%d∶%02d para la carga completa (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d\\u2236%02d hasta que esté completa (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1651,6 +1719,9 @@ - msgid "Battery" - msgstr "Batería" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Modo avión" -@@ -1699,16 +1770,16 @@ - msgid "Unlock Window" - msgstr "Desbloquear ventana" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Aplicaciones" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Buscar" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "«%s» está preparado" - -@@ -1718,7 +1789,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Revertir configuración" -@@ -1728,7 +1799,7 @@ - msgstr "Mantener cambios" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "La configuración se revertirá en %d segundo" -@@ -1800,21 +1871,21 @@ - msgid "System Sounds" - msgstr "Sonidos del sistema" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Imprimir versión" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Modo usado por GDM para la pantalla de inicio" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "" - "Usar un modo específico, por ejemplo, «gdm» para la pantalla de inicio de " - "sesión" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Listar los modos posibles" - -@@ -1834,953 +1905,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "El usuario rechazó el diálogo de autenticación" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "El nivel máximo de precisión de la ubicación." -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "Configura el nivel máximo de precisión de la ubicación que se permite ver " --#~ "a las aplicaciones. Las opciones válidas son «off» (desactivar el rastreo " --#~ "de la ubicación), «country», «city», «neighborhood», «street», y " --#~ "«exact» (normalmente necesita un receptor GPS). Tenga en cuenta que esto " --#~ "sólo controla lo que GeoClue permitirá ver a las aplicaciones y lo que " --#~ "pueden encontrar sobre la ubicación de usuario usando los recursos de la " --#~ "red (aunque con precisión a nivel de la calle, en el mejor de los casos)." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "Orden de los botones en la barra de título" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "Esta clave sobrescribe la clave en org.gnome.desktop.wm.preferences al " --#~ "ejecutar GNOME Shell." -- --#~ msgid "Extension" --#~ msgstr "Extensión" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "" --#~ "Seleccione una extensión que configurar usando la caja combinada de " --#~ "arriba." -- --#~ msgid "calendar:MY" --#~ msgstr "calendario:MA" -- --#~ msgid "unavailable" --#~ msgstr "no disponible" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A, %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%d de %B, %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%d de %B %Y, %H:%M " -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "Lista de categorías que se deben mostrar como carpetas" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "Cada nombre de categoría de esta lista se representará como una carpeta " --#~ "en la vista de aplicaciones, en lugar de mostrarse en línea en la vista " --#~ "principal." -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u2236%M\\u2009%p" -- --#~ msgid "Authorization request from %s" --#~ msgstr "Solicitud de autorización de %s" -- --#~ msgid "Device %s wants to pair with this computer" --#~ msgstr "El dispositivo «%s» quiere emparejarse con este equipo" -- --#~ msgid "Allow" --#~ msgstr "Permitir" -- --#~ msgid "Deny" --#~ msgstr "Denegar" -- --#~ msgid "Device %s wants access to the service '%s'" --#~ msgstr "El dispositivo %s quiere acceder al servicio «%s»" -- --#~ msgid "Always grant access" --#~ msgstr "Conceder acceso siempre" -- --#~ msgid "Grant this time only" --#~ msgstr "Conceder sólo esta vez" -- --#~ msgid "Reject" --#~ msgstr "Rechazar" -- --#~ msgid "Pairing confirmation for %s" --#~ msgstr "Confirmación de emparejamiento para «%s»" -- --#~ msgid "" --#~ "Please confirm whether the Passkey '%06d' matches the one on the device." --#~ msgstr "" --#~ "Confirme que la clave mostrada en «%06d» coincide con la del dispositivo." -- --#~ msgid "Matches" --#~ msgstr "Coincide" -- --#~ msgid "Does not match" --#~ msgstr "No coincide" -- --#~ msgid "Pairing request for %s" --#~ msgstr "Solicitud de emparejamiento para «%s»" -- --#~ msgid "Please enter the PIN mentioned on the device." --#~ msgstr "Introduzca el PIN mencionado en el dispositivo." -- --#~ msgid "OK" --#~ msgstr "Aceptar" -- --#~ msgid "" --#~ "Sorry, no wisdom for you today:\n" --#~ "%s" --#~ msgstr "" --#~ "Hoy no tiene ningún mensaje:\n" --#~ "%s" -- --#~ msgid "%s the Oracle says" --#~ msgstr "%s el oráculo dice" -- --#~ msgid "Settings Menu" --#~ msgstr "Menú de configuración" -- --#~ msgid "" --#~ "Internally used to store the last IM presence explicitly set by the user. " --#~ "The value here is from the TpConnectionPresenceType enumeration." --#~ msgstr "" --#~ "Usado internamente para guardar el último IM de presencia establecido " --#~ "explícitamente por el usuario. El valor aquí es de la enumeración " --#~ "TpConnectionPresenceType." -- --#~ msgid "" --#~ "Internally used to store the last session presence status for the user. " --#~ "The value here is from the GsmPresenceStatus enumeration." --#~ msgstr "" --#~ "Usado internamente para guardar el último estado de presencia de la " --#~ "sesión del usuario. El valor aquí es de la GsmPresenceStatus." -- --#~ msgid "Session" --#~ msgstr "Sesión" -- --#~ 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." -- --#~ msgid "Logging out of the system." --#~ msgstr "Cerrando la sesión." -- --#~ msgid "Click Power Off to quit these applications and power off the system." --#~ msgstr "Pulse «Apagar» para salir de esas aplicaciones y apagar el sistema." -- --#~ msgid "Powering off the system." --#~ msgstr "Apagando el sistema." -- --#~ msgid "Click Restart to quit these applications and restart the system." --#~ msgstr "" --#~ "Pulse «Reiniciar» para salir de esas aplicaciones y reiniciar el sistema." -- --#~ msgid "Restarting the system." --#~ msgstr "Reiniciando el sistema." -- --#~ msgid "Shutting down might cause them to lose unsaved work." --#~ msgstr "Apagar puede hacer que pierdan el trabajo que no hayan guardado." -- --#~ msgid "Screenshots" --#~ msgstr "Capturas de pantalla" -- --#~ msgid "Record a screencast" --#~ msgstr "Grabar una captura de pantalla" -- --#~ msgid "Keybinding to toggle the screen recorder" --#~ msgstr "Asociación de teclas cambiar el grabador de pantalla" -- --#~ msgid "Keybinding to start/stop the builtin screen recorder." --#~ msgstr "Asociación de teclas para iniciar/detener el grabador de pantalla." -- --#~ msgid "Framerate used for recording screencasts." --#~ msgstr "Tasa de fotogramas usada para grabar «screencast»." -- --#~ msgid "" --#~ "The framerate of the resulting screencast recordered by GNOME Shell's " --#~ "screencast recorder in frames-per-second." --#~ msgstr "" --#~ "La tasa de fotogramas de la grabación resultante grabada por el grabador " --#~ "de «screencast» de GNOME Shell, en fotogramas por segundo." -- --#~ msgid "The gstreamer pipeline used to encode the screencast" --#~ msgstr "La tubería de gstreamer usada para codificar el «screencast»" -- --#~ 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 'vp8enc min_quantizer=13 max_quantizer=13 " --#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " --#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " --#~ "optimal thread count on the system." --#~ msgstr "" --#~ "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») desconectado donde grabar el vídeo que se está grabando. " --#~ "Generalmente tendrá un punto de origen desconectado; la salida de ese " --#~ "punto se escribirá en el archivo de salida. Sin embargo, la tubería " --#~ "también puede tomar parte en su propia salida; esto se puede usar para " -- --#~ msgid "File extension used for storing the screencast" --#~ msgstr "Extensión de archivo que usar para almacenar los «screencast»" -- --#~ msgid "Screencast from %d %t" --#~ msgstr "Screencast desde %d %t" -- --#~ msgid "Power" --#~ msgstr "Energía" -- --#~ msgid "Restart" --#~ msgstr "Reiniciar" -- --#~ msgid "Volume, network, battery" --#~ msgstr "Volumen, red, batería" -- --#~ msgid "Visibility" --#~ msgstr "Visibilidad" -- --#~ msgid "Send Files to Device…" --#~ msgstr "Enviar archivos al dispositivo…" -- --#~ msgid "Set Up a New Device…" --#~ msgstr "Configurar un dispositivo nuevo…" -- --#~ msgid "Send Files…" --#~ msgstr "Enviar archivos…" -- --#~ msgid "Wi-Fi" --#~ msgstr "Wi-Fi" -- --#~ msgid "disabled" --#~ msgstr "desactivada" -- --#~ msgid "More…" --#~ msgstr "Más…" -- --#~ msgid "Wired" --#~ msgstr "Cableada" -- --#~ msgid "Networking is disabled" --#~ msgstr "La red está desactivada" -- --#~ msgid "Universal Access Settings" --#~ msgstr "Configuración del acceso universal" -- --#~ msgid "Keyboard Settings" --#~ msgstr "Configuración del teclado" -- --#~ msgid "Mouse Settings" --#~ msgstr "Configuración del ratón…" -- --#~ msgid "Sound Settings" --#~ msgstr "Configuración del sonido" -- --#~ msgid "Region & Language Settings" --#~ msgstr "Configuración de región e idioma" -- --#~ msgid "%d hour remaining" --#~ msgid_plural "%d hours remaining" --#~ msgstr[0] "Queda %d hora" --#~ msgstr[1] "Queda %d horas" -- --#~ msgid "%d %s %d %s remaining" --#~ msgstr "Quedan %d %s %d %s" -- --#~ msgid "hour" --#~ msgid_plural "hours" --#~ msgstr[0] "hora" --#~ msgstr[1] "horas" -- --#~ msgid "minute" --#~ msgid_plural "minutes" --#~ msgstr[0] "minuto" --#~ msgstr[1] "minutos" -- --#~ msgid "%d minute remaining" --#~ msgid_plural "%d minutes remaining" --#~ msgstr[0] "Queda %d minuto" --#~ msgstr[1] "Quedan %d minutos" -- --#~ msgctxt "percent of battery remaining" --#~ msgid "%d%%" --#~ msgstr "%d%%" -- --#~ msgid "AC Adapter" --#~ msgstr "Adaptador de corriente" -- --#~ msgid "Laptop Battery" --#~ msgstr "Batería del portátil" -- --#~ msgid "Monitor" --#~ msgstr "Monitor" -- --#~ msgid "Mouse" --#~ msgstr "Ratón" -- --#~ msgid "PDA" --#~ msgstr "PDA" -- --#~ msgid "Cell Phone" --#~ msgstr "Teléfono móvil" -- --#~ msgid "Media Player" --#~ msgstr "Reproductor multimedia" -- --#~ msgid "Tablet" --#~ msgstr "Tableta" -- --#~ msgid "Computer" --#~ msgstr "Equipo" -- --#~ msgctxt "device" --#~ msgid "Unknown" --#~ msgstr "Desconocido" -- --#~ msgid "Available" --#~ msgstr "Disponible" -- --#~ msgid "Busy" --#~ msgstr "Ocupado" -- --#~ msgid "Invisible" --#~ msgstr "Invisible" -- --#~ msgid "Away" --#~ msgstr "Ausente" -- --#~ msgid "Idle" --#~ msgstr "Inactivo" -- --#~ msgid "Your chat status will be set to busy" --#~ msgstr "Su estado del chat se establecerá a «ocupado»" -- --#~ msgid "" --#~ "Notifications are now disabled, including chat messages. Your online " --#~ "status has been adjusted to let others know that you might not see their " --#~ "messages." --#~ msgstr "" --#~ "Las notificaciones están ahora desactivadas, incluyendo los mensajes de " --#~ "chat. Su estado en línea se ha ajustado para que otros sepan que puede no " --#~ "leer sus mensajes." -- --#~ msgid "cable unplugged" --#~ msgstr "cable desconectado" -- --#~ msgid "Whether to collect stats about applications usage" --#~ msgstr "" --#~ "Indica si se deben recolectar estadísticas acerca del uso de las " --#~ "aplicaciones" -- --#~ 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 "" --#~ "La «shell» normalmente monitoriza todas las aplicaciones activas para " --#~ "presentar las más usadas (ej. en los lanzadores). Aunque estos datos se " --#~ "mantienen de forma privada, puede querer desactivarlo por razones de " --#~ "privacidad. Note que haciéndolo no eliminará los datos ya guardados." -- --#~ msgid "Auto Ethernet" --#~ msgstr "Ethernet automática" -- --#~ msgid "Auto broadband" --#~ msgstr "Banda ancha automática" -- --#~ msgid "Auto dial-up" --#~ msgstr "Marcado automático" -- --#~ msgid "Auto %s" --#~ msgstr "%s automática" -- --#~ msgid "Auto bluetooth" --#~ msgstr "Bluetooth automático" -- --#~ msgid "Auto wireless" --#~ msgstr "Inalámbrica automática" -- --#~ msgctxt "title" --#~ msgid "Sign In" --#~ msgstr "Iniciar sesión" -- --#~ msgid "tray" --#~ msgstr "bandeja" -- --#~ msgid "Clear" --#~ msgstr "Limpiar" -- --#~ msgid "More..." --#~ msgstr "Más…" -- --#~ msgctxt "event list time" --#~ msgid "%H:%M" --#~ msgstr "%H:%M" -- --#~ msgctxt "event list time" --#~ msgid "%l:%M %p" --#~ msgstr "%l:%M %p" -- --#~ msgid "United Kingdom" --#~ msgstr "Reino Unido" -- --#~ msgid "Default" --#~ msgstr "Predeterminada" -- --#~ msgid "Show full name in the user menu" --#~ msgstr "Mostrar el nombre completo en el menú del usuario" -- --#~ msgid "Whether the users full name is shown in the user menu or not." --#~ msgstr "" --#~ "Indica si se muestra el nombre del usuario en el menú del usuario o no." -- --#~ msgid "APPLICATIONS" --#~ msgstr "APLICACIONES" -- --#~ msgid "SETTINGS" --#~ msgstr "CONFIGURACIÓN" -- --#~ msgid "Your favorite Easter Egg" --#~ msgstr "Su mensaje oculto favorito" -- --#~ msgid "Subscription request" --#~ msgstr "Solicitud de suscripción" -- --#~ msgid "Connection error" --#~ msgstr "Error de conexión" -- --#~ msgid "Sent at %X on %A" --#~ msgstr "Enviado el %A a las %H:%M" -- --#~ msgid "Sent on %A, %B %d, %Y" --#~ msgstr "Enviado el %A, %d de %B de %Y" -- --#~ msgid "Connection to %s failed" --#~ msgstr "Falló la conexión a %s" -- --#~ msgid "Reconnect" --#~ msgstr "Reconectar" -- --#~ msgid "Browse Files..." --#~ msgstr "Examinar archivos…" -- --#~ msgid "Error browsing device" --#~ msgstr "Error al examinar el dispositivo" -- --#~ msgid "The requested device cannot be browsed, error is '%s'" --#~ msgstr "No se puede examinar el dispositivo solicitado, el error es «%s»" -- --#~ msgid "Wireless" --#~ msgstr "Inalámbrica" -- --#~ msgid "VPN Connections" --#~ msgstr "Conexiones VPN" -- --#~ msgid "System Settings" --#~ msgstr "Configuración del sistema" -- --#~ msgid "disabled OpenSearch providers" --#~ msgstr "proveedores OpenSearch desactivados" -- --#~ msgid "Failed to unmount '%s'" --#~ msgstr "Falló al desmontar «%s»" -- --#~ msgid "Retry" --#~ msgstr "Reintentar" -- --#~ msgid "PLACES & DEVICES" --#~ msgstr "LUGARES Y DISPOSITIVOS" -- --#~ msgid "Home" --#~ msgstr "Carpeta personal" -- --#~ msgid "%1$s: %2$s" --#~ msgstr "%1$s: %2$s" -- --#~ msgid "Connect to..." --#~ msgstr "Conectar a…" -- --#~ msgid "Passphrase" --#~ msgstr "Contraseña" -- --#~ msgid "Show time with seconds" --#~ msgstr "Mostrar la hora con segundos" -- --#~ msgid "If true, display seconds in time." --#~ msgstr "Si es cierta, muestra los segundos en la hora." -- --#~ msgid "Show date in clock" --#~ msgstr "Mostrar la fecha en el reloj" -- --#~ 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." -- --#~ msgctxt "contact" --#~ msgid "Unknown" --#~ msgstr "Desconocido" -- --#~ msgid "CONTACTS" --#~ msgstr "CONTACTOS" -- --#~ msgid "%a %b %e, %R:%S" --#~ msgstr "%a %e de %b, %R:%S" -- --#~ msgid "%a %b %e, %R" --#~ msgstr "%a %e de %b, %R" -- --#~ msgid "%a %R:%S" --#~ msgstr "%a %R:%S" -- --#~ msgid "%a %R" --#~ msgstr "%a %R" -- --#~ msgid "%a %b %e, %l:%M:%S %p" --#~ msgstr "%a %e de %b, %l:%M:%S %p" -- --#~ msgid "%a %l:%M:%S %p" --#~ msgstr "%a %l:%M:%S %p" -- --#~ msgid "%s is online." --#~ msgstr "%s está conectado/a." -- --#~ msgid "%s is offline." --#~ msgstr "%s está desconectado/a." -- --#~ msgid "%s is away." --#~ msgstr "%s está ausente." -- --#~ msgid "%s is busy." --#~ msgstr "%s está ocupado/a." -- --#~ msgid "Hidden" --#~ msgstr "Oculto" -- --#~ msgid "Wrong password, please try again" --#~ msgstr "Contraseña incorrecta; inténtelo de nuevo" -- --#~ msgid "Power Off..." --#~ msgstr "Apagar…" -- --#~ msgid "Online Accounts" --#~ msgstr "Cuentas en línea" -- --#~ msgid "Lock Screen" --#~ msgstr "Bloquear la pantalla" -- --#~ msgid "Log Out..." --#~ msgstr "Cerrar la sesión…" -- --#~ msgid "RECENT ITEMS" --#~ msgstr "ELEMENTOS RECIENTES" -- --#~ msgid "" --#~ "GNOME Shell extensions have a uuid property; this key lists extensions " --#~ "which should be loaded. disabled-extensions overrides this setting for " --#~ "extensions that appear in both lists." --#~ msgstr "" --#~ "Las extensiones de GNOME Shell tienen una propiedad uuid; esta clave " --#~ "lista las extensiones que no se deben cargar. «disabled-extensions» " --#~ "sobrescribe este ajuste para las extensiones que aparecen en ambas listas." -- --#~ msgid "Home Folder" --#~ msgstr "Carpeta personal" -- --#~ msgid "Show password" --#~ msgstr "Mostrar contraseña" -- --#~ msgid "%s has finished starting" --#~ msgstr "%s finalizó su lanzamiento" -- --#~ msgid "If true, display onscreen keyboard." --#~ msgstr "Si es cierta, muestra el teclado en pantalla." -- --#~ msgid "Show the onscreen keyboard" --#~ msgstr "Mostrar el teclado en pantalla" -- --#~ msgid "Connectivity lost" --#~ msgstr "Conectividad perdida" -- --#~| msgid "You're no longer connected to the network" --#~ msgid "You are no longer connected to the network" --#~ msgstr "Ya no está conectado a la red" -- --#~ msgid "calendar:week_start:0" --#~ msgstr "calendar:week_start:1" -- --#~ msgid "Do Not Disturb" --#~ msgstr "No molestar" -- --#, fuzzy --#~ msgid "The length of the server certificate, or the depth of the " --#~ msgstr "La longitud del certificado del servidor o la profundidad del" -- --#~ msgid "You're now connected to mobile broadband connection '%s'" --#~ msgstr "Ahora está conectado a la red de banda ancha móvil «%s»" -- --#~ msgid "You're now connected to wireless network '%s'" --#~ msgstr "Ahora está conectado a la red inalámbrica «%s»" -- --#~ msgid "You're now connected to VPN network '%s'" --#~ msgstr "Ahora está conectado a la VPN «%s»" -- --#~ msgid "Uuids of extensions to disable" --#~ msgstr "Uuid de las extensiones que desactivar" -- --#~ msgid "Localization Settings" --#~ msgstr "Configuración regional" -- --#~ msgid "Less than a minute ago" --#~ msgstr "Hace menos de un minuto" -- --#~ msgid "%d minute ago" --#~ msgid_plural "%d minutes ago" --#~ msgstr[0] "Hace %d minuto" --#~ msgstr[1] "Hace %d minutos" -- --#~ msgid "%d hour ago" --#~ msgid_plural "%d hours ago" --#~ msgstr[0] "Hace %d hora" --#~ msgstr[1] "Hace %d horas" -- --#~ msgid "%d day ago" --#~ msgid_plural "%d days ago" --#~ msgstr[0] "Hace %d día" --#~ msgstr[1] "Hace %d días" -- --#~ msgid "%d week ago" --#~ msgid_plural "%d weeks ago" --#~ msgstr[0] "Hace %d semana" --#~ msgstr[1] "Hace %d semanas" -- --#~ msgid "Shut Down" --#~ msgstr "Apagar" -- --#~ 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." -- --#~ msgid "The system will shut down automatically in %d seconds." --#~ msgstr "El sistema se apagará automáticamente en %d segundos." -- --#~ msgid "Shutting down the system." --#~ msgstr "Apagando el sistema." -- --#~ msgid "Confirm" --#~ msgstr "Confirmar" -- --#~ msgid "PREFERENCES" --#~ msgstr "PREFERENCIAS" -- --#~ msgid "Shut Down..." --#~ msgstr "Apagar…" -- --#~ msgid "Clip the crosshairs at the center" --#~ msgstr "Fijar los cursores en el centro" -- --#~ msgid "Color of the crosshairs" --#~ msgstr "Color de las cruces" -- --#~ msgid "" --#~ "Determines the length of the vertical and horizontal lines that make up " --#~ "the crosshairs." --#~ msgstr "" --#~ "Determina la longitud de las líneas verticales y horizontales que " --#~ "conforman los cursores." -- --#~ 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 "" --#~ "Determina la posición de la imagen magnificada del ratón dentro de la " --#~ "vista magnificada y cómo reacciona al movimiento del ratón del sistema. " --#~ "Los valores son «none» (ninguno): sin seguimiento del ratón; " --#~ "«centered» (centrado): la imagen del ratón se muestra en el centro de la " --#~ "región ampliada (que también representa el punto bajo el ratón del " --#~ "sistema) y el contenido magnificado se desliza según se mueve el ratón " --#~ "del sistema; «proporcional»: la posición del ratón magnificado en la " --#~ "región de ampliación es proporcionalmente la misma que la posición del " --#~ "ratón del sistema en el ratón; «push» (empujar): cuando el ratón " --#~ "magnificado cruza un límite de la región de ampliación, el contenido se " --#~ "desliza en la vista." -- --#~ msgid "" --#~ "Determines the transparency of the crosshairs, from fully opaque to fully " --#~ "transparent." --#~ msgstr "" --#~ "Determina la transparencia de los cursores, de completamente opacos a " --#~ "completamente transparentes." -- --#~ 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 "" --#~ "Determina si las cruces cruzan el «sprite» magnificado del ratón o se " --#~ "fijan de tal forma que los finales de las líneas horizontales y " --#~ "verticales rodean la imagen del ratón." -- --#~ msgid "Enable lens mode" --#~ msgstr "Activar el modo lente" -- --#~ msgid "" --#~ "Enables/disables display of crosshairs centered on the magnified mouse " --#~ "sprite." --#~ msgstr "" --#~ "Activa/desactiva el mostrado de los cursores centrados en el «sprite» " --#~ "magnificado del ratón." -- --#~ 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 "" --#~ "Para el seguimiento del centro del ratón, cuando el puntero del sistema " --#~ "está cerca del borde de la pantalla, el contenido magnificado continúa " --#~ "desplazándose de tal forma que el borde de la pantalla se mueve dentro de " --#~ "la vista magnificada." -- --#~ msgid "Length of the crosshairs" --#~ msgstr "Longitud de las cruces" -- --#~ msgid "Magnification factor" --#~ msgstr "Factor de magnificación" -- --#~ msgid "Mouse Tracking Mode" --#~ msgstr "Modo de seguimiento del ratón" -- --#~ msgid "Opacity of the crosshairs" --#~ msgstr "Opacidad de las cruces" -- --#~ msgid "Scroll magnified contents beyond the edges of the desktop" --#~ msgstr "" --#~ "Desplazar el contenido magnificado más allá de los bordes del escritorio" -- --#~ msgid "Show or hide crosshairs" --#~ msgstr "Mostrar u ocultar las cruces" -- --#~ msgid "Show or hide the magnifier" --#~ msgstr "Mostrar u ocultar el magnificador" -- --#~ msgid "Show or hide the magnifier and all of its zoom regions." --#~ msgstr "" --#~ "Mostrar u ocultar el magnificador y todas sus regiones de ampliación." -- --#~ msgid "" --#~ "The color of the the vertical and horizontal lines that make up the " --#~ "crosshairs." --#~ msgstr "" --#~ "El color de las líneas verticales y horizontales que conforman las cruces." -- --#~ msgid "" --#~ "The magnified view either fills the entire screen, or occupies the top-" --#~ "half, bottom-half, left-half, or right-half of the screen." --#~ msgstr "" --#~ "La vista magnificada o llena la pantalla u ocupa la mitad superior, mitad " --#~ "inferior, mitad izquierda o mitad derecha de la pantalla." -- --#~ msgid "" --#~ "The power of the magnification. A value of 1.0 means no magnification. A " --#~ "value of 2.0 doubles the size." --#~ msgstr "" --#~ "El poder de la magnificación. Un valor de 1.0 significa sin " --#~ "magnificación. Un valor de 2.0 duplica el tamaño." -- --#~ msgid "Thickness of the crosshairs" --#~ msgstr "Grosor de las cruces" -- --#~ msgid "" --#~ "Whether the magnified view should be centered over the location of the " --#~ "system mouse and move with it." --#~ msgstr "" --#~ "Indica si la vista magnificada se debe centrar sobre la ubicación del " --#~ "ratón del sistema y moverse con ella." -- --#~ 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." -- --#~ msgid "Bluetooth Agent" --#~ msgstr "Agente Bluetooth" -- --#~ msgid "Search your computer" --#~ msgstr "Buscar en su equipo" -- --#~ msgid "" --#~ "Can't add a new workspace because maximum workspaces limit has been " --#~ "reached." --#~ msgstr "" --#~ "No se puede añadir un área de trabajo nueva porque se ha llegado al " --#~ "límite de áreas de trabajo." -- --#~ msgid "Can't remove the first workspace." --#~ msgstr "No se puede quitar el primer área de trabajo." -- --#~ 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 "_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…" -- --#~ msgid "Overview workspace view mode" --#~ msgstr "Modo de visualización de la vista previa del área de trabajo" -- --#~ msgid "" --#~ "The selected workspace view mode in the overview. Supported values are " --#~ "\"single\" and \"grid\"." --#~ msgstr "" --#~ "El modo de vista del área de trabajo seleccionada en la vista general. " --#~ "Los valores soportados son «single» (sencillo) y «grid» (rejilla)." -- --#~ msgid "Drag here to add favorites" --#~ msgstr "Arrastrar aquí para añadir a los favoritos" -- --#~ msgid "Find" --#~ msgstr "Buscar" -- --#~ msgid "ON" --#~ msgstr "ENCENDIDO" -- --#~ msgid "OFF" --#~ msgstr "APAGADO" -- --#~ msgid "Sidebar" --#~ msgstr "Barra lateral" -- --#~ msgid "Recent Documents" --#~ msgstr "Documentos recientes" -- --#~ msgid "PLACES" --#~ msgstr "LUGARES" -- --#~ msgid "(see all)" --#~ msgstr "(ver todo)" -- --#~ msgid "SEARCH RESULTS" --#~ msgstr "RESULTADOS DE LA BÚSQUEDA" -- --#~ msgid "Can't lock screen: %s" --#~ msgstr "No se puede bloquear la pantalla: %s" -- --#~ msgid "Can't temporarily set screensaver to blank screen: %s" --#~ msgstr "" --#~ "No se puede establecer temporalmente el salvapantallas a oscurecer " --#~ "pantalla: %s" -- --#~ msgid "Can't logout: %s" --#~ msgstr "No se puede salir de la sesión: %s" -- --#~ msgid "Browse" --#~ msgstr "Examine" -- --#~ msgid "Find apps or documents" --#~ msgstr "Encuentre aplicaciones o documentos" -- --#~| msgid "RECENT DOCUMENTS" --#~ msgid "DOCUMENTS" --#~ msgstr "DOCUMENTOS" -- --#~ msgid "The user manager object this user is controlled by." --#~ msgstr "El objeto de gestión de usuarios que controla a este usuario." -diff -urN gnome-shell-3.14.4/po/fr.po gnome-shell-3.14.4_localized/po/fr.po ---- gnome-shell-3.14.4/po/fr.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/fr.po 2016-03-11 22:07:50.564000000 +0530 -@@ -1,7 +1,7 @@ - # French translations for gnome-shell package. - # Copyright (C) 2009-2012 Listed translators - # This file is distributed under the same license as the gnome-shell package. --# -+# - # Mathieu Bridon , 2009. - # Pablo Martin-Gomez , 2010. - # Claude Paroz , 2010-2011. -@@ -13,21 +13,22 @@ - # Alexandre Franke , 2012. - # Mathieu Stumpf , 2013. - # Alain Lojewski , 2014. --# -+# Sam Friedmann , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell master fr\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-12 17:00+0000\n" --"PO-Revision-Date: 2014-08-25 17:00+0200\n" --"Last-Translator: Alain Lojewski \n" --"Language-Team: français \n" --"Language: French\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-03 04:05+0000\n" -+"Last-Translator: Sam Friedmann \n" -+"Language-Team: français \n" -+"Language: fr\n" - "Plural-Forms: nplurals=2; plural=(n > 1);\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -208,6 +209,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "" - "Combinaison de touches pour ouvrir la vue « Afficher les applications » de " - "la vue d'ensemble des activités." -@@ -218,7 +220,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:24 - msgid "Keybinding to open the Activities Overview." --msgstr "Combinaison de touches pour ouvrir la vue d'ensemble des applications." -+msgstr "" -+"Combinaison de touches pour ouvrir la vue d'ensemble des applications." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:25 - msgid "Keybinding to toggle the visibility of the message tray" -@@ -240,7 +243,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Combinaison de touches pour stopper et fermer toutes les transitions à des " - "fins de débogage" -@@ -273,8 +277,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Configure la façon dont les fenêtres sont affichées dans le sélecteur. Les " - "choix possibles sont « thumbnail-only » (affiche une miniature de la " -@@ -323,7 +327,7 @@ - msgstr "Portail captif" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "" - "Une erreur s'est produite lors du chargement de la boîte de dialogue des " -@@ -333,54 +337,68 @@ - msgid "GNOME Shell Extensions" - msgstr "Extensions GNOME Shell" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Annuler" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Suivant" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Déverrouiller" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Se connecter" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Choisir une session" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "Absent de la liste ?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(par ex. utilisateur ou %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Nom d'utilisateur : " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Fenêtre de connexion" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Erreur d'authentification" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(ou faites glisser le doigt)" - -@@ -388,58 +406,62 @@ - msgid "Command not found" - msgstr "Commande non trouvée" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "Impossible d'analyser la commande :" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "Exécution de « %s » impossible :" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Redirection de l'authentification Web" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Les applications fréquemment utilisées apparaîtront ici" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Fréquemment utilisées" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Toutes" - --#: ../js/ui/appDisplay.js:1789 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Nouvelle fenêtre" - --#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Enlever des favoris" - --#: ../js/ui/appDisplay.js:1821 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Ajouter aux favoris" - --#: ../js/ui/appDisplay.js:1830 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Afficher les détails" - --#: ../js/ui/appFavorites.js:124 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s a été ajouté à vos favoris." - --#: ../js/ui/appFavorites.js:158 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s a été supprimé de vos favoris." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Paramètres" -@@ -455,79 +477,78 @@ - # Jour entier - # La journée - # Journée --# -+# - # All Day --# -+# - # le calendrier (mal) francisé : - # http://blog.arkezis.com/wp-content/uploads/2011/04/Capture.png --# -+# - # See also https://bugzilla.gnome.org/show_bug.cgi?id=658679 --# - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Journée" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "L" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "J" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "V" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "S" -@@ -543,86 +564,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "Di" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "Lu" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "Ma" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "Me" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "Je" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "Ve" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "Sa" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Mois précédent" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Mois suivant" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Rien de prévu" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A %d %B" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%A %d %B, %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Aujourd'hui" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Demain" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Cette semaine" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "La semaine prochaine" - -@@ -639,7 +660,7 @@ - msgstr "Périphériques amovibles" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Ouvrir avec %s" - -@@ -660,6 +681,7 @@ - msgid "Connect" - msgstr "Se connecter" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -668,6 +690,7 @@ - msgid "Password: " - msgstr "Mot de passe : " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Clé : " -@@ -689,7 +712,7 @@ - msgstr "L'authentification est requise par le réseau sans fil" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -726,7 +749,7 @@ - msgstr "Mot de passe du téléphone mobile à large bande" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "Un mot de passe est requis pour se connecter à « %s »." - -@@ -745,19 +768,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "Échec de l'authentification. Essayez à nouveau." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Invitation" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Appel" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Transfert de fichiers" -@@ -774,87 +801,95 @@ - msgid "Mute" - msgstr "Muet" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "Hier, %H∶%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "Hier, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%d %B, %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%d %B %Y, %H∶%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d %Y, %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "Hier, %l∶%M %p" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "Hier, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A, %l∶%M %p" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%d %B, %l∶%M %p" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%d %B %Y, %l∶%M %p" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s est maintenant connu sous le nom de %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Invitation vers %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s vous invite à rejoindre %s" - -@@ -871,19 +906,19 @@ - msgid "Accept" - msgstr "Accepter" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Appel vidéo de %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Appel provenant de %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Répondre" -@@ -892,15 +927,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s vous envoie %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s aimerait être autorisé à savoir lorsque vous êtes en ligne" - -@@ -1011,9 +1046,9 @@ - msgstr "Erreur interne" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "Impossible de se connecter à %s" - -@@ -1025,7 +1060,7 @@ - msgid "Unknown reason" - msgstr "Raison inconnue" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Fenêtres" - -@@ -1033,37 +1068,39 @@ - msgid "Show Applications" - msgstr "Afficher les applications" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "Ouvrir l'agenda" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "Ouvrir Horloges" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "Paramètres de date et heure" - - # luc: FIXME: how to have a capitalized weekday (start of sentence)? - # %a (abbreviated) %A (full weekday) %^A (full weekday all uppercase) - # https://bugzilla.gnome.org/show_bug.cgi?id=658686 --# -+# - # luc: TODO: to test, this possibly explodes on dimanche 25 septembre 2011 - # L M M J V S D - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%A %e %B %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "Fermer la session de %s" -@@ -1074,14 +1111,14 @@ - msgstr "Fermer la session" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s sera déconnecté automatiquement dans %d seconde." - msgstr[1] "%s sera déconnecté automatiquement dans %d secondes." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "Vous allez être déconnecté automatiquement dans %d seconde." -@@ -1103,7 +1140,7 @@ - msgstr "Installer les mises à jour et éteindre" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "Cet ordinateur s'éteindra automatiquement dans %d seconde." -@@ -1130,7 +1167,7 @@ - msgstr "Redémarrer" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "Cet ordinateur redémarrera automatiquement dans %d seconde." -@@ -1142,8 +1179,9 @@ - msgstr "Redémarrer et installer les mises à jour" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "Le système redémarrera automatiquement dans %d seconde." -@@ -1179,15 +1217,15 @@ - msgid "Other users are logged in." - msgstr "D'autres utilisateurs sont connectés." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (distant)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (console)" - -@@ -1196,99 +1234,119 @@ - msgstr "Installer" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "Télécharger et installer « %s » à partir de extensions.gnome.org ?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d extension n'est pas à jour" -+msgstr[1] "%d extensions ne sont pas à jour" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "" -+"Vous pouvez consulter http://extensions.gnome.org pour des mises à jour" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Clavier" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "Aucune extension installée" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s n'a émis aucune erreur." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Masquer les erreurs" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Afficher les erreurs" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Activé" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Désactivé" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Erreur" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Périmé" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Téléchargement" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Afficher la source" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Page Web" - --#: ../js/ui/messageTray.js:1326 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Ouvrir" - --#: ../js/ui/messageTray.js:1333 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Enlever" - --#: ../js/ui/messageTray.js:1630 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Notifications" - --#: ../js/ui/messageTray.js:1637 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Effacer les messages" - --#: ../js/ui/messageTray.js:1656 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Paramètres de notifications" - --#: ../js/ui/messageTray.js:1709 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Menu du tiroir de messagerie" - --#: ../js/ui/messageTray.js:1926 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "Aucun message" - --#: ../js/ui/messageTray.js:1968 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Tiroir de messagerie" - --#: ../js/ui/messageTray.js:2971 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d nouveau message" -+msgstr[1] "%d nouveaux messages" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Informations du système" - -@@ -1297,13 +1355,6 @@ - msgid "Unknown" - msgstr "Inconnu" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d nouveau message" --msgstr[1] "%d nouveaux messages" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Annuler" -@@ -1315,7 +1366,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Rechercher…" -@@ -1325,15 +1376,20 @@ - msgstr "Quitter" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Activités" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - msgstr "Barre supérieure" - -+#. Translators: this MUST be either "toggle-switch-us" -+#. (for toggle switches containing the English words -+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle -+#. switches containing "◯" and "|"). Other values will -+#. simply result in invisible toggle switches. - #: ../js/ui/popupMenu.js:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1351,39 +1407,46 @@ - msgstr "Redémarrage en cours…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A %d %B" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d nouvelle notification" - msgstr[1] "%d nouvelles notifications" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Verrouiller" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME a besoin de verrouiller l'écran" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "Impossible de verrouiller" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "Le verrouillage a été bloqué par une application" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "Recherche en cours…" - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "Aucun résultat." - -@@ -1455,6 +1518,8 @@ - msgid "Large Text" - msgstr "Grand texte" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1471,7 +1536,7 @@ - msgstr "Paramètres Bluetooth" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d périphérique connecté" -@@ -1485,7 +1550,7 @@ - msgid "Brightness" - msgstr "Luminosité" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Afficher la disposition du clavier" - -@@ -1523,7 +1588,7 @@ - msgstr "Connecté" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Non géré" -@@ -1536,19 +1601,19 @@ - msgid "Connecting" - msgstr "Connexion en cours" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Authentification nécessaire" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Micrologiciel manquant" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "Non disponible" -@@ -1633,7 +1698,7 @@ - msgid "connecting..." - msgstr "connexion..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "authentification nécessaire" -@@ -1670,19 +1735,23 @@ - msgid "Fully Charged" - msgstr "Charge complète" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "Estimation en cours…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "%d∶%02d restant (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d restant (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "%d∶%02d avant chargement complet (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d\\u2236%02d avant chargement complet (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1692,6 +1761,9 @@ - msgid "Battery" - msgstr "Batterie" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Mode avion" -@@ -1740,16 +1812,16 @@ - msgid "Unlock Window" - msgstr "Fenêtre de déverrouillage" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Applications" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Recherche" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "« %s » est prêt" - -@@ -1759,7 +1831,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Restaurer les paramètres" -@@ -1769,7 +1841,7 @@ - msgstr "Conserver les modifications" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "Les paramètres seront restaurés dans %d seconde" -@@ -1841,20 +1913,20 @@ - msgid "System Sounds" - msgstr "Sons système" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Affiche la version" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Mode utilisé par GDM pour l'écran de connexion" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "" - "Utiliser un mode particulier, par ex. « gdm » pour l'écran de connexion" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Lister les modes possibles" - -@@ -1874,502 +1946,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "La fenêtre d'authentification a été écartée par l'utilisateur" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "Le niveau de précision de localisation maximal" -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "Configure le niveau maximal de précision de localisation que les " --#~ "applications sont autorisées à voir. Les options valides sont " --#~ "« off » (désactiver le suivi de l'emplacement), « country » (pays), " --#~ "« city » (ville), « neighborhood » (quartier), « rue » (rue) et " --#~ "« exact » (emplacement exact, nécessite généralement un récepteur GPS). " --#~ "Veuillez garder en tête que ce paramètre contrôle uniquement ce que " --#~ "GeoClue autorisera les applications à voir mais qu'elles restent " --#~ "néanmoins capables de déterminer l'emplacement de l'utilisateur d'elle-" --#~ "même en utilisant les ressources réseau (avec au mieux un niveau de " --#~ "précision limité à la rue)." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "La disposition des boutons dans la barre de titre" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "Cette clé prend le pas sur la clé dans org.gnome.desktop.wm.preferences " --#~ "lorsque GNOME Shell est lancé." -- --#~ msgid "Extension" --#~ msgstr "Extension" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "" --#~ "Sélectionnez une extension à configurer en utilisant la boîte combinée ci-" --#~ "dessus." -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:MY" -- --#~ msgid "unavailable" --#~ msgstr "non disponible" -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "" --#~ "Liste des catégories qui devraient être affichées comme des dossiers" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "Chaque nom de catégorie dans cette liste sera représentée comme un " --#~ "dossier dans la vue des applications, plutôt qu'alignée dans la vue " --#~ "principale." -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u2236%M\\u2009%p" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A, %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%d %B, %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%d %B %Y, %H:%M " -- --#~ msgid "Authorization request from %s" --#~ msgstr "Demande d'autorisation de « %s »" -- --#~ msgid "Device %s wants to pair with this computer" --#~ msgstr "Le périphérique « %s » souhaite se connecter à cet ordinateur" -- --#~ msgid "Allow" --#~ msgstr "Autoriser" -- --#~ msgid "Deny" --#~ msgstr "Refuser" -- --#~ msgid "Device %s wants access to the service '%s'" --#~ msgstr "Le périphérique %s souhaite accéder au service « %s »" -- --#~ msgid "Always grant access" --#~ msgstr "Toujours accorder l'accès" -- --#~ msgid "Grant this time only" --#~ msgstr "Accorder l'accès cette fois uniquement" -- --#~ msgid "Reject" --#~ msgstr "Refuser" -- --#~ msgid "Pairing confirmation for %s" --#~ msgstr "Confirmation de la demande de liaison pour « %s »" -- --#~ msgid "" --#~ "Please confirm whether the Passkey '%06d' matches the one on the device." --#~ msgstr "" --#~ "Veuillez confirmer que la clé de passe (Passkey) « %06d » correspond à " --#~ "celle du périphérique." -- --#~ msgid "Matches" --#~ msgstr "Correspond" -- --#~ msgid "Does not match" --#~ msgstr "Ne correspond pas" -- --#~ msgid "Pairing request for %s" --#~ msgstr "Demande de liaison pour « %s »" -- --#~ msgid "Please enter the PIN mentioned on the device." --#~ msgstr "" --#~ "Veuillez saisir le numéro d'identification personnel (PIN) mentionné sur " --#~ "le périphérique." -- --#~ msgid "OK" --#~ msgstr "Valider" -- --#~ msgid "" --#~ "Sorry, no wisdom for you today:\n" --#~ "%s" --#~ msgstr "" --#~ "Désolé, aucune sagesse pour vous aujourd'hui :\n" --#~ "%s" -- --#~ msgid "%s the Oracle says" --#~ msgstr "L'Oracle %s déclare" -- --#~ msgid "Settings Menu" --#~ msgstr "Menu des paramètres" -- --#~ msgid "Screenshots" --#~ msgstr "Captures d'écran" -- --#~ msgid "Record a screencast" --#~ msgstr "Enregistrer une vidéo d'écran" -- --#~ msgid "Whether to collect stats about applications usage" --#~ msgstr "Collecter des statistiques sur l'utilisation des applications" -- --#~ 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 "" --#~ "Normalement GNOME Shell surveille les applications actives afin de " --#~ "déterminer les plus utilisées (par ex. pour les lanceurs). Bien que ces " --#~ "données soient gardées secrètes, des motifs de confidentialité peuvent " --#~ "vous pousser à désactiver cette fonctionnalité. Remarquez que cette " --#~ "désactivation ne supprime pas d'éventuelles données déjà enregistrées." -- --#~ msgid "" --#~ "Internally used to store the last IM presence explicitly set by the user. " --#~ "The value here is from the TpConnectionPresenceType enumeration." --#~ msgstr "" --#~ "Utilisé en interne pour enregistrer la dernière présence de messagerie " --#~ "instantanée IM explicitement définie par l'utilisateur. Ici la valeur est " --#~ "tirée de l'énumération TpConnectionPresenceType." -- --#~ msgid "" --#~ "Internally used to store the last session presence status for the user. " --#~ "The value here is from the GsmPresenceStatus enumeration." --#~ msgstr "" --#~ "Utilisé en interne pour enregistrer le dernier statut de présence de la " --#~ "session pour l'utilisateur. Ici la valeur est tirée de l'énumération " --#~ "GsmPresenceStatus." -- --#~ msgid "Keybinding to toggle the screen recorder" --#~ msgstr "Combinaison de touches pour basculer l'enregistreur d'écran" -- --#~ msgid "Keybinding to start/stop the builtin screen recorder." --#~ msgstr "" --#~ "Combinaison de touches pour démarrer/arrêter l'enregistreur d'écran " --#~ "intégré." -- --#~ msgid "Framerate used for recording screencasts." --#~ msgstr "" --#~ "Nombre d'images par seconde pour l'enregistrement des animations d'écran." -- --#~ msgid "" --#~ "The framerate of the resulting screencast recordered by GNOME Shell's " --#~ "screencast recorder in frames-per-second." --#~ msgstr "" --#~ "Le nombre d'images par seconde des animations d'écran enregistrées par " --#~ "l'outil idoine de GNOME Shell." -- --#~ msgid "The gstreamer pipeline used to encode the screencast" --#~ msgstr "Le pipeline GStreamer utilisé pour coder l'animation d'écran" -- --#~ 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 'vp8enc min_quantizer=13 max_quantizer=13 " --#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " --#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " --#~ "optimal thread count on the system." --#~ msgstr "" --#~ "Définition du pipeline GStreamer utilisé pour coder les enregistrements " --#~ "vidéo. La syntaxe est identique à celle de gst-launch. Le connecteur " --#~ "d'entrée (sink pad) du pipeline devrait être non connecté là où la vidéo " --#~ "est enregistrée. Le connecteur source devrait normalement être non " --#~ "connecté ; la sortie de ce connecteur est écrite dans le fichier de " --#~ "sortie. Cependant, le pipeline peut aussi se charger de sa propre sortie, " --#~ "par exemple pour diriger la sortie vers un serveur icecast via shout2send " --#~ "ou autre. Si cette clé n'est pas définie ou si elle est vide, c'est le " --#~ "pipeline par défaut qui est utilisé. Celui-ci est actuellement « vp8enc " --#~ "min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=" --#~ "%T ! queue ! webmmux' » et l'enregistrement utilise le format WEBM et le " --#~ "codec VP8. %T est utilisé comme paramètre pour une supposition quant au " --#~ "nombre optimal de threads à utiliser sur le système." -- --#~ msgid "File extension used for storing the screencast" --#~ msgstr "" --#~ "Extension de fichier à utiliser pour enregistrer l'animation d'écran" -- --#~ 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 "" --#~ "Le nom de fichier des animations d'écran est unique, se base sur la date, " --#~ "et utilise cette extension. Elle devrait être modifiée si le format du " --#~ "conteneur utilisé pour l'enregistrement est différent." -- --#~ msgid "Session…" --#~ msgstr "Session…" -- --#~ msgid "Power" --#~ msgstr "Énergie" -- --#~ msgid "Restart" --#~ msgstr "Redémarrer" -- --#~ msgid "Screencast from %d %t" --#~ msgstr "Vidéo d'écran %d %t" -- --#~ msgid "Click Log Out to quit these applications and log out of the system." --#~ msgstr "" --#~ "Cliquez sur « Fermer la session » pour quitter ces applications et fermer " --#~ "la session." -- --#~ msgid "Logging out of the system." --#~ msgstr "Déconnexion du système." -- --#~ msgid "Click Power Off to quit these applications and power off the system." --#~ msgstr "" --#~ "Cliquez sur « Éteindre » pour quitter ces applications et éteindre " --#~ "l'ordinateur." -- --#~ msgid "Powering off the system." --#~ msgstr "Extinction du système." -- --#~ msgid "Click Restart to quit these applications and restart the system." --#~ msgstr "" --#~ "Cliquez sur « Redémarrer » pour quitter ces applications et redémarrer " --#~ "l'ordinateur." -- --#~ msgid "Restarting the system." --#~ msgstr "Redémarrage du système." -- --#~ msgid "Universal Access Settings" --#~ msgstr "Paramètres de l'accès universel" -- --#~ msgid "Visibility" --#~ msgstr "Visibilité" -- --#~ msgid "Send Files to Device…" --#~ msgstr "Envoyer les fichiers au périphérique…" -- --#~ msgid "Set Up a New Device…" --#~ msgstr "Configurer un nouveau périphérique…" -- --#~ msgid "Send Files…" --#~ msgstr "Envoyer des fichiers…" -- --#~ msgid "Keyboard Settings" --#~ msgstr "Paramètres du clavier" -- --#~ msgid "Mouse Settings" --#~ msgstr "Paramètres de la souris" -- --#~ msgid "Sound Settings" --#~ msgstr "Paramètres du son" -- --#~ msgid "Region & Language Settings" --#~ msgstr "Paramètres de région et de langue" -- --#~ msgid "Volume, network, battery" --#~ msgstr "Volume, réseau, batterie" -- --#~ msgid "disabled" --#~ msgstr "désactivé" -- --#~ msgid "cable unplugged" --#~ msgstr "câble débranché" -- --#~ msgid "More…" --#~ msgstr "Plus…" -- --#~ msgid "Wired" --#~ msgstr "Filaire" -- --#~ msgid "Auto Ethernet" --#~ msgstr "Ethernet automatique" -- --#~ msgid "Auto broadband" --#~ msgstr "Connexion large bande automatique" -- --#~ msgid "Auto dial-up" --#~ msgstr "Connexion par téléphone automatique" -- --#~ msgid "Auto %s" --#~ msgstr "Auto %s" -- --#~ msgid "Auto bluetooth" --#~ msgstr "Bluetooth automatique" -- --#~ msgid "Auto wireless" --#~ msgstr "Sans fil automatique" -- --#~ msgid "Wi-Fi" --#~ msgstr "Wi-Fi" -- --#~ msgid "Networking is disabled" --#~ msgstr "Le réseau est désactivé" -- --#~ msgid "%d hour remaining" --#~ msgid_plural "%d hours remaining" --#~ msgstr[0] "%d heure restante" --#~ msgstr[1] "%d heures restantes" -- --#~ msgid "%d %s %d %s remaining" --#~ msgstr "%d %s %d %s restantes" -- --#~ msgid "hour" --#~ msgid_plural "hours" --#~ msgstr[0] "heure" --#~ msgstr[1] "heures" -- --#~ msgid "minute" --#~ msgid_plural "minutes" --#~ msgstr[0] "minute" --#~ msgstr[1] "minutes" -- --#~ msgid "%d minute remaining" --#~ msgid_plural "%d minutes remaining" --#~ msgstr[0] "%d minute restante" --#~ msgstr[1] "%d minutes restantes" -- --#~ msgctxt "percent of battery remaining" --#~ msgid "%d%%" --#~ msgstr "%d %%" -- --#~ msgid "AC Adapter" --#~ msgstr "Adaptateur secteur" -- --#~ msgid "Laptop Battery" --#~ msgstr "Batterie de l'ordinateur" -- --#~ msgid "Monitor" --#~ msgstr "Écran" -- --#~ msgid "Mouse" --#~ msgstr "Souris" -- --#~ msgid "PDA" --#~ msgstr "Assistant personnel" -- --#~ msgid "Cell Phone" --#~ msgstr "Téléphone portable" -- --#~ msgid "Media Player" --#~ msgstr "Lecteur multimédia" -- --#~ msgid "Tablet" --#~ msgstr "Tablette" -- --#~ msgid "Computer" --#~ msgstr "Ordinateur" -- --#~ msgctxt "device" --#~ msgid "Unknown" --#~ msgstr "Inconnu" -- --#~ msgid "Available" --#~ msgstr "Disponible" -- --#~ msgid "Busy" --#~ msgstr "Occupé" -- --#~ msgid "Invisible" --#~ msgstr "Invisible" -- --#~ msgid "Away" --#~ msgstr "Absent" -- --#~ msgid "Idle" --#~ msgstr "Inactif" -- --#~ msgid "Your chat status will be set to busy" --#~ msgstr "Votre statut pour les discussions sera défini à occupé" -- --#~ msgid "" --#~ "Notifications are now disabled, including chat messages. Your online " --#~ "status has been adjusted to let others know that you might not see their " --#~ "messages." --#~ msgstr "" --#~ "Les notifications sont maintenant désactivées, y compris les messages de " --#~ "discussion. Votre statut en ligne a été modifié afin que les autres " --#~ "sachent qu'il se peut que vous ne voyez pas leurs messages." -- --#~ msgid "Shutting down might cause them to lose unsaved work." --#~ msgstr "" --#~ "L'extinction pourrait leur faire perdre leur travaux non enregistrés." -- --#~ msgctxt "title" --#~ msgid "Sign In" --#~ msgstr "Connexion" -- --#~ msgid "APPLICATIONS" --#~ msgstr "APPLICATIONS" -- --#~ msgid "SETTINGS" --#~ msgstr "PARAMÈTRES" -- --# --# luc: https://bugzilla.gnome.org/show_bug.cgi?id=658675 --#~ msgctxt "event list time" --#~ msgid "%H:%M" --#~ msgstr "%H:%M" -- --#~ msgid "Subscription request" --#~ msgstr "Demande d'abonnement" -- --#~ msgid "Connection error" --#~ msgstr "Erreur de connexion" -- --# --# luc: TODO: double check with source code. %A is weekday « Envoyé lundi à 8:23» --#~ msgid "Sent at %X on %A" --#~ msgstr "Envoyé %A à %X" -- --#~ msgid "Sent on %A, %B %d, %Y" --#~ msgstr "Envoyé le %A %-d %B %Y" -- --#~ msgid "Connection to %s failed" --#~ msgstr "La connexion à %s a échoué" -- --#~ msgid "Reconnect" --#~ msgstr "Se reconnecter" -- --#~ msgid "tray" --#~ msgstr "tiroir de messagerie" -- --#~ msgid "Browse Files..." --#~ msgstr "Parcourir les fichiers..." -- --#~ msgid "Error browsing device" --#~ msgstr "Erreur en parcourant le périphérique" -- --#~ msgid "The requested device cannot be browsed, error is '%s'" --#~ msgstr "" --#~ "Le périphérique demandé ne peut pas être parcouru, l'erreur est « %s »" -- --#~ msgid "More..." --#~ msgstr "Plus..." -- --#~ msgid "Wireless" --#~ msgstr "Sans fil" -- --#~ msgid "VPN Connections" --#~ msgstr "Connexions par VPN" -- --#~ msgid "System Settings" --#~ msgstr "Paramètres système" -- --#~ msgid "Your favorite Easter Egg" --#~ msgstr "Votre œuf de Pâques favori" -- --#~ msgid "United Kingdom" --#~ msgstr "Royaume-Uni" -- --#~ msgid "Default" --#~ msgstr "Défaut" -diff -urN gnome-shell-3.14.4/po/it.po gnome-shell-3.14.4_localized/po/it.po ---- gnome-shell-3.14.4/po/it.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/it.po 2016-03-11 22:07:50.589000000 +0530 -@@ -2,26 +2,25 @@ - # Copyright (C) 2009, 2010, the gnome-shell copyright holder - # Copyright (C) 2011, 2012, 2013, 2014 the Free Software Foundation - # This file is distributed under the same license as the gnome-shell package. --# -+# - # Milo Casagrande , 2009, 2010, 2012, 2013, 2014. - # Luca Ferretti , 2010, 2011, 2012, 2013, 2014. --# -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-10-09 07:37+0000\n" --"PO-Revision-Date: 2014-10-10 10:01+0100\n" --"Last-Translator: Milo Casagrande \n" --"Language-Team: Italiano \n" --"Language: it\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2014-10-10 09:01+0000\n" -+"Last-Translator: Milo Casagrande \n" -+"Language-Team: Italiano \n" -+"Language: it\n" - "Plural-Forms: nplurals=2; plural=(n != 1);\n" - "X-DamnedLies-Scope: partial\n" --"X-Generator: Poedit 1.6.9\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -196,6 +195,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "" - "Associazione tasti per aprire la vista \"Mosta applicazioni\" della " - "panoramica Attività." -@@ -226,7 +226,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Associazione di tasti per mettere in pausa e ripristinare tutti i tween in " - "esecuzione, a scopo di debug" -@@ -259,8 +260,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Configura come le finestre vengono mostrate nel selettore. Valori consentiti " - "sono: \"thumbnail-only\" (mostra una miniatura della finestra), \"app-icon-" -@@ -311,7 +312,7 @@ - msgstr "Portale di accesso" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "" - "Si è verificato un errore durante il caricamento della finestra delle " -@@ -321,54 +322,68 @@ - msgid "GNOME Shell Extensions" - msgstr "Estensioni di GNOME Shell" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Annulla" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Avanti" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Sblocca" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Accedi" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Scegli sessione" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "Non elencato?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(p.e. utente o %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Nome utente: " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Finestra di accesso" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Errore di autenticazione" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(o passare il dito)" - -@@ -376,60 +391,64 @@ - msgid "Command not found" - msgstr "Comando non trovato" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "Impossibile analizzare il comando:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "Esecuzione di «%s» non riuscita:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Redirezione autenticazione web" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Qui saranno mostrate le applicazioni usate frequentemente" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Frequenti" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Tutte" - --#: ../js/ui/appDisplay.js:1790 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Nuova finestra" - --#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Rimuovi dai preferiti" - --#: ../js/ui/appDisplay.js:1822 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Aggiungi ai preferiti" - --#: ../js/ui/appDisplay.js:1831 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Mostra dettagli" - - # (ndt) e usare: - # L'elemento %s è stato rimosso... ? --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s è stato aggiunto ai preferiti." - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s è stato rimosso dai preferiti." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Impostazioni" -@@ -440,69 +459,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Giornata" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%k.%M" -+msgid "%H\\u2236%M" -+msgstr "%-H\\u002E%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l.%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u002E%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "L" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "M" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "G" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "V" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "S" -@@ -512,86 +531,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "Do" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "Lu" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "Ma" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "Me" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "Gi" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "Ve" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "Sa" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Mese precedente" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Mese successivo" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Nessun evento" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A, %e %B" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%A, %e %B %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Oggi" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Domani" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Questa settimana" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "Prossima settimana" - -@@ -608,7 +627,7 @@ - msgstr "Dispositivi rimovibili" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Apri con %s" - -@@ -629,6 +648,7 @@ - msgid "Connect" - msgstr "Connetti" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -637,6 +657,7 @@ - msgid "Password: " - msgstr "Password: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Chiave: " -@@ -658,7 +679,7 @@ - msgstr "Richiesta autenticazione dalla rete wireless" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -695,7 +716,7 @@ - msgstr "Password rete mobile" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "È richiesta una password per connettersi a «%s»." - -@@ -714,20 +735,24 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "Errore nell'autenticazione. Provare di nuovo." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Invito" - - # A memora del test che ho fatto è "chiamata"... da verificare meglio -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Chiamata" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Trasferimento file" -@@ -745,87 +770,97 @@ - msgid "Mute" - msgstr "Disattiva notifiche" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%k.%M" -+#, fuzzy -+msgid "%H\\u2236%M" -+msgstr "%-H\\u002E%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" -+#, fuzzy, no-c-format -+msgid "Yesterday, %H\\u2236%M" - msgstr "Ieri, %k.%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %k.%M" -+#, fuzzy, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%-H\\u002E%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%e %B, %k.%M" -+#, fuzzy, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%-H\\u002E%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" -+#, fuzzy, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" - msgstr "%e %B %Y, %k.%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%l.%M %p" -+#, fuzzy -+msgid "%l\\u2236%M %p" -+msgstr "%-H\\u002E%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" - msgstr "Ieri, %l.%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%A, %l\\u2236%M %p" - msgstr "%A, %l.%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%B %d, %l\\u2236%M %p" - msgstr "%d %B, %l.%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" - msgstr "%d %B %Y, %l.%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s ha cambiato nome in %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Invito su %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s ti sta invitando su %s" - -@@ -842,19 +877,19 @@ - msgid "Accept" - msgstr "Accetta" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Videochiamata da %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Chiamata da %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Rispondi" -@@ -863,15 +898,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s ti sta inviando %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s chiede il permesso di vedere quando sei online" - -@@ -985,9 +1020,9 @@ - msgstr "Errore interno" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "Impossibile connettersi a %s" - -@@ -999,7 +1034,7 @@ - msgid "Unknown reason" - msgstr "Motivo sconosciuto" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Finestre" - -@@ -1008,6 +1043,8 @@ - msgstr "Mostra applicazioni" - - # cruscotto?!?!?!?!?!?!? -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" -@@ -1026,13 +1063,13 @@ - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ -+#. - #: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%a %e %B %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "Termina sessione di %s" -@@ -1043,14 +1080,14 @@ - msgstr "Termina sessione" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "La sessione di %s verrà terminata automaticamente tra %d secondo." - msgstr[1] "La sessione di %s verrà terminata automaticamente tra %d secondi." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "La sessione verrà terminata automaticamente tra %d secondo." -@@ -1072,7 +1109,7 @@ - msgstr "Installa aggiornamenti e spegni" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "Il sistema verrà spento automaticamente tra %d secondo." -@@ -1099,7 +1136,7 @@ - msgstr "Riavvia" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "Il sistema verrà riavviato automaticamente tra %d secondo." -@@ -1111,8 +1148,9 @@ - msgstr "Riavvia e installa aggiornamenti" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "" -@@ -1151,15 +1189,15 @@ - msgid "Other users are logged in." - msgstr "Sono connessi altri utenti." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (remoto)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (console)" - -@@ -1168,101 +1206,120 @@ - msgstr "Installa" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "Scaricare e installare «%s» da extensions.gnome.org?" - --#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, fuzzy, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "Nessuna estensione installata" -+msgstr[1] "Nessuna estensione installata" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Tastiera" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "Nessuna estensione installata" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s non ha emesso alcun errore." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Nascondi errori" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Mostra errori" - - # (ndt) o abilitata? --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Abilitato" - - # (ndt) o disabilitata? - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Disabilitato" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Errore" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Non aggiornato" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Scaricamento" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Visualizza sorgente" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Pagina web" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Apri" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Rimuovi" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Notifiche" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Pulisci messaggi" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Impostazioni notifiche" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Menu tray" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "Nessun messaggio" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Cassetto messaggi" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d nuovo messaggio" -+msgstr[1] "%d nuovi messaggi" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Informazione di sistema" - -@@ -1271,13 +1328,6 @@ - msgid "Unknown" - msgstr "Sconosciuto" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d nuovo messaggio" --msgstr[1] "%d nuovi messaggi" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Annulla" -@@ -1289,7 +1339,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Digita per cercare…" -@@ -1299,15 +1349,20 @@ - msgstr "Esci" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Attività" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - msgstr "Barra superiore" - -+#. Translators: this MUST be either "toggle-switch-us" -+#. (for toggle switches containing the English words -+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle -+#. switches containing "◯" and "|"). Other values will -+#. simply result in invisible toggle switches. - #: ../js/ui/popupMenu.js:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-us" -@@ -1325,31 +1380,38 @@ - msgstr "Riavvio…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A, %d %B" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d nuova notifica" - msgstr[1] "%d nuove notifiche" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Blocca" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME deve bloccare lo schermo" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1309 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "Impossibile bloccare" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1310 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "Il blocco è stato impedito da un'applicazione." - -@@ -1430,6 +1492,8 @@ - msgid "Large Text" - msgstr "Caratteri grandi" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1446,7 +1510,7 @@ - msgstr "Impostazioni Bluetooth" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d dispositivo connesso" -@@ -1460,7 +1524,7 @@ - msgid "Brightness" - msgstr "Luminosità" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Mostra disposizione tastiera" - -@@ -1501,7 +1565,7 @@ - - # FIXME o femminile? boh - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Non gestito" -@@ -1514,19 +1578,19 @@ - msgid "Connecting" - msgstr "Connessione" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Richiesta autenticazione" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Firmware mancante" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "Non disponibile" -@@ -1612,7 +1676,7 @@ - msgid "connecting..." - msgstr "connessione..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "richiesta autenticazione" -@@ -1649,19 +1713,23 @@ - msgid "Fully Charged" - msgstr "Carica" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "In stima…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" -+#, fuzzy, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" - msgstr "%d.%02d rimanente (%d%%)" - - # in stile MacOS sarebbe "al pieno" :P -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" -+#, fuzzy, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" - msgstr "%d.%02d alla carica (%d%%)" - - #: ../js/ui/status/power.js:119 -@@ -1672,6 +1740,9 @@ - msgid "Battery" - msgstr "Batteria" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Modalità aereo" -@@ -1720,17 +1791,17 @@ - msgid "Unlock Window" - msgstr "Sblocca finestra" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Applicazioni" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Cerca" - - # (ndt) dovrebbe essere il nome dell'applicazione - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "«%s» è pronto" - -@@ -1740,7 +1811,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Ripristina impostazioni" -@@ -1750,7 +1821,7 @@ - msgstr "Mantieni modifiche" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "Le modifiche alle impostazioni saranno ripristinate tra %d secondo" -@@ -1822,19 +1893,19 @@ - msgid "System Sounds" - msgstr "Audio di sistema" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Stampa la versione" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Modalità usata da GDM per la schermata d'accesso" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "Usa una modalità specifica, p.e. \"gdm\" per la schermata di accesso" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Elenca le modalità possibili" - -@@ -1854,73 +1925,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "Il dialogo di autenticazione è stato annullato dall'utente" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "Il livello massimo di accuratezza della posizione." -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "Configura il livello massimo di accuratezza della posizione che è " --#~ "concesso di vedere alle applicazioni. Opzioni ammesse sono \"off" --#~ "\" (disabilita il tracciamento della posizione), \"country\", \"city\", " --#~ "\"neighborhood\", \"street\" ed \"exact\" (tipicamente richiede un " --#~ "ricevitore GPS). Notare che questa opzione controlla solo ciò che è " --#~ "permesso alle applicazioni vedere per mezzo di GeoClue, ma che le " --#~ "applicazioni possono rilevare autonomamente la posizione usando le " --#~ "risorse di rete (sebbene al massimo con accuratezza a livello \"street\")." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "Disposizione dei pulsanti nella barra del titolo" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "Questa chiave scavalca la chiave in org.gnome.desktop.wm.preferences " --#~ "quando si esegue GNOME Shell." -- --#~ msgid "Extension" --#~ msgstr "Estensione" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "" --#~ "Selezionare una estensione da configurare usando la casella combinata qui " --#~ "sopra." -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:MY" -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "Elenco di categorie che dovrebbero essere mostrare come cartelle" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "Ciascun nome di categoria in questa lista sarà rappresentata come una " --#~ "cartella nella vista applicazioni, invece che essere mostrata nella vista " --#~ "principale" -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%-H\\u002E%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u002E%M\\u2009%p" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A, %-H.%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%d %B, %-H.%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%d %B %Y, %-H.%M" -diff -urN gnome-shell-3.14.4/po/ja.po gnome-shell-3.14.4_localized/po/ja.po ---- gnome-shell-3.14.4/po/ja.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/ja.po 2016-03-11 22:07:50.617000000 +0530 -@@ -9,20 +9,22 @@ - # Takanori MATSUURA , 2012. - # Yoji TOYODA , 2013. - # Ikuya Awashiro , 2014. --# -+# kmoriguc , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell master\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-15 22:05+0000\n" --"PO-Revision-Date: 2014-09-16 22:12+0900\n" --"Last-Translator: Jiro Matsuzawa \n" --"Language-Team: Japanese \n" --"Language: ja\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-11 01:13+0000\n" -+"Last-Translator: kmoriguc \n" -+"Language-Team: Japanese \n" -+"Language: ja\n" - "Plural-Forms: nplurals=1; plural=0;\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -74,7 +76,9 @@ - msgstr "Alt-F2 から開発・テスト用の内部ツールを利用可能にする" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 --msgid "Allows access to internal debugging and monitoring tools using the Alt-F2 dialog." -+msgid "" -+"Allows access to internal debugging and monitoring tools using the Alt-F2 " -+"dialog." - msgstr "Alt-F2 ダイアログを利用した内部のデバッグツールとモニターツールへのアクセスを許可します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:3 -@@ -82,23 +86,37 @@ - msgstr "有効にする拡張機能の UUID" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:4 --msgid "GNOME Shell extensions have a UUID property; this key lists extensions which should be loaded. Any extension that wants to be loaded needs to be in this list. You can also manipulate this list with the EnableExtension and DisableExtension D-Bus methods on org.gnome.Shell." --msgstr "GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、ロードしたい拡張機能の UUID のリストです。ロードしたい拡張機能はこのリストに含めなければなりません。このリストは org.gnome.Shell の EnableExtensions や DisableExtensions といった DBus メソッドでも操作できます。" -+msgid "" -+"GNOME Shell extensions have a UUID property; this key lists extensions which " -+"should be loaded. Any extension that wants to be loaded needs to be in this " -+"list. You can also manipulate this list with the EnableExtension and " -+"DisableExtension D-Bus methods on org.gnome.Shell." -+msgstr "" -+"GNOME Shell の拡張機能には UUID プロパティがあり、このキーは、ロードしたい拡張機能の UUID " -+"のリストです。ロードしたい拡張機能はこのリストに含めなければなりません。このリストは org.gnome.Shell の " -+"EnableExtensions や DisableExtensions といった DBus メソッドでも操作できます。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 - msgid "Disables the validation of extension version compatibility" - msgstr "拡張機能のバージョン互換の検証を無効にする" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:6 --msgid "GNOME Shell will only load extensions that claim to support the current running version. Enabling this option will disable this check and try to load all extensions regardless of the versions they claim to support." --msgstr "通常では、現在起動中の GNOME Shell のバージョンをサポートする拡張機能だけがロードされます。この設定を true にした場合、バージョンチェック機能が無効になり、拡張機能のサポートバージョンに関係なくすべての拡張機能をロードします。" -+msgid "" -+"GNOME Shell will only load extensions that claim to support the current " -+"running version. Enabling this option will disable this check and try to " -+"load all extensions regardless of the versions they claim to support." -+msgstr "" -+"通常では、現在起動中の GNOME Shell のバージョンをサポートする拡張機能だけがロードされます。この設定を true " -+"にした場合、バージョンチェック機能が無効になり、拡張機能のサポートバージョンに関係なくすべての拡張機能をロードします。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 - msgid "List of desktop file IDs for favorite applications" - msgstr "お気に入りのアプリケーションの .desktop ファイル ID の一覧" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:8 --msgid "The applications corresponding to these identifiers will be displayed in the favorites area." -+msgid "" -+"The applications corresponding to these identifiers will be displayed in the " -+"favorites area." - msgstr "これらの ID で示されるアプリケーションは「お気に入り」に表示されます。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:9 -@@ -122,16 +140,25 @@ - msgstr "ユーザーメニューに「ログアウト」を常に表示する" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:14 --msgid "This key overrides the automatic hiding of the 'Log out' menu item in single-user, single-session situations." -+msgid "" -+"This key overrides the automatic hiding of the 'Log out' menu item in single-" -+"user, single-session situations." - msgstr "このキーは、単一ユーザー、単一セッション状況で「ログアウト」メニューアイテムを自動的に非表示にする機能よりも優先します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 --msgid "Whether to remember password for mounting encrypted or remote filesystems" -+msgid "" -+"Whether to remember password for mounting encrypted or remote filesystems" - msgstr "マウント対象の暗号化されたファイルシステムやリモートファイルシステムのパスワードを記憶する" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 --msgid "The shell will request a password when an encrypted device or a remote filesystem is mounted. If the password can be saved for future use a 'Remember Password' checkbox will be present. This key sets the default state of the checkbox." --msgstr "GNOME Shell は、暗号化されたデバイスやリモートファイルシステムのマウント時にパスワードを要求します。パスワードを保存できる場合は、「パスワードを保存」チェックボックスが表示されます。このキーは、チェックボックスのデフォルト値となります。" -+msgid "" -+"The shell will request a password when an encrypted device or a remote " -+"filesystem is mounted. If the password can be saved for future use a " -+"'Remember Password' checkbox will be present. This key sets the default " -+"state of the checkbox." -+msgstr "" -+"GNOME Shell " -+"は、暗号化されたデバイスやリモートファイルシステムのマウント時にパスワードを要求します。パスワードを保存できる場合は、「パスワードを保存」チェックボックスが表示されます。このキーは、チェックボックスのデフォルト値となります。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 - msgid "Show the week date in the calendar" -@@ -154,7 +181,9 @@ - msgstr "アプリケーション一覧を開くキーバインド" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 --msgid "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+msgid "" -+"Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "アプリケーション一覧を開くキーバインドです。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 -@@ -182,7 +211,9 @@ - msgstr "アクティブな通知にフォーカスを当てるキーバインドです。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 --msgid "Keybinding that pauses and resumes all running tweens, for debugging purposes" -+msgid "" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "Tween の一時停止および再開を行うキーバインドです。デバッグ用途で使用します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 -@@ -198,27 +229,41 @@ - msgstr "スイッチャーを現在のワークスペース内に制限する" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:33 --msgid "If true, only applications that have windows on the current workspace are shown in the switcher. Otherwise, all applications are included." --msgstr "true に設定した場合、現在のワークスペースにウィンドウのあるアプリケーションだけをスイッチャーに表示します。false に設定した場合はすべてのアプリケーションを表示します。" -+msgid "" -+"If true, only applications that have windows on the current workspace are " -+"shown in the switcher. Otherwise, all applications are included." -+msgstr "" -+"true に設定した場合、現在のワークスペースにウィンドウのあるアプリケーションだけをスイッチャーに表示します。false " -+"に設定した場合はすべてのアプリケーションを表示します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 - msgid "The application icon mode." - msgstr "アプリケーションアイコンモード" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 --msgid "Configures how the windows are shown in the switcher. Valid possibilities are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' (shows only the application icon) or 'both'." --msgstr "ウィンドウスイッチャーでのウィンドウの表示方法を設定します。指定可能な値は、'thumbnail-only' (ウィンドウのサムネイルを表示します)、'app-icon-only' (アプリケーションアイコンを表示します)、あるいは 'both' です。" -+msgid "" -+"Configures how the windows are shown in the switcher. Valid possibilities " -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." -+msgstr "" -+"ウィンドウスイッチャーでのウィンドウの表示方法を設定します。指定可能な値は、'thumbnail-only' " -+"(ウィンドウのサムネイルを表示します)、'app-icon-only' (アプリケーションアイコンを表示します)、あるいは 'both' です。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 --msgid "If true, only windows from the current workspace are shown in the switcher. Otherwise, all windows are included." --msgstr "true に設定した場合、現在のワークスペースのウィンドウだけをスイッチャーに表示します。false に設定した場合はすべてのアプリケーションを表示します。" -+msgid "" -+"If true, only windows from the current workspace are shown in the switcher. " -+"Otherwise, all windows are included." -+msgstr "" -+"true に設定した場合、現在のワークスペースのウィンドウだけをスイッチャーに表示します。false " -+"に設定した場合はすべてのアプリケーションを表示します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 - msgid "Attach modal dialog to the parent window" - msgstr "モーダルダイアログを親ウィンドウに結び付ける" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:38 --msgid "This key overrides the key in org.gnome.mutter when running GNOME Shell." -+msgid "" -+"This key overrides the key in org.gnome.mutter when running GNOME Shell." - msgstr "GNOME Shell 使用時は、 このキーが、org.gnome.mutter の同じキーよりも優先します。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:39 -@@ -242,7 +287,7 @@ - msgstr "キャプティブポータル" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "%s の設定ダイアログのロード中にエラーが発生しました。" - -@@ -250,54 +295,68 @@ - msgid "GNOME Shell Extensions" - msgstr "GNOME Shell 拡張機能" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "キャンセル" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "次へ" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "ロック解除" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "サインイン" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "セッションを選択する" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "アカウントが見つかりませんか?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(たとえば、user あるいは %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "ユーザー名: " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "ログインウィンドウ" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "認証エラー" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(あるいは指でスワイプする)" - -@@ -305,58 +364,62 @@ - msgid "Command not found" - msgstr "コマンドが見つかりません" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "次のコマンドは解析できません:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "”%s”の実行に失敗しました:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Web 認証リダイレクト" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "よく使うアプリケーションがここに表示されます" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "常用" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "すべて" - --#: ../js/ui/appDisplay.js:1789 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "新しいウィンドウで開く" - --#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "お気に入りから削除" - --#: ../js/ui/appDisplay.js:1821 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "お気に入りに追加" - --#: ../js/ui/appDisplay.js:1830 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "詳細を表示する" - --#: ../js/ui/appFavorites.js:131 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s をお気に入りに追加しました。" - --#: ../js/ui/appFavorites.js:165 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s をお気に入りから削除しました。" - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "設定" -@@ -367,69 +430,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "終日" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%p%l\\u2236%M" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "日" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "月" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "火" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "水" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "木" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "金" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "土" -@@ -439,86 +502,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "日" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "月" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "火" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "水" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "木" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "金" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "土" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "先月" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "来月" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "予定がありません" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%B%-e日 (%a)" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%Y年%B%-e日 (%a)" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "今日" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "明日" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "今週" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "来週" - -@@ -535,7 +598,7 @@ - msgstr "リムーバブルデバイス" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "%s で開く" - -@@ -556,6 +619,7 @@ - msgid "Connect" - msgstr "接続" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -564,6 +628,7 @@ - msgid "Password: " - msgstr "パスワード: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "キー: " -@@ -585,8 +650,10 @@ - msgstr "無線ネットワークでは認証が要求されます" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format --msgid "Passwords or encryption keys are required to access the wireless network “%s”." -+#, c-format -+msgid "" -+"Passwords or encryption keys are required to access the wireless network " -+"“%s”." - msgstr "無線ネットワーク ”%s” にアクセスするにはパスワードか、または暗号化キーが必要です。" - - #: ../js/ui/components/networkAgent.js:323 -@@ -618,7 +685,7 @@ - msgstr "モバイルブロードバンドネットワークのパスワード" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "”%s” への接続にはパスワードが必要です。" - -@@ -637,19 +704,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "申し訳ありません、認証できませんでした。再試行してください。" - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "招待" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "会話" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "ファイル転送" -@@ -666,87 +737,95 @@ - msgid "Mute" - msgstr "ミュート" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "昨日 %H:%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "昨日 %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%B%-e日 %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d日 %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%Y年%B%-e日 %H∶%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d日 %Y年 %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%p%l∶%M" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "昨日 %p%l∶%M" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "昨日 %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A %p%l∶%M" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%B%-e日 %p%l∶%M" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d日 %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%Y年%B%-e日 %p%l∶%M" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d日 %Y年 %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s は %s になりました" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "%s への招待" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s さんがあなたを %s に招待しています" - -@@ -763,19 +842,19 @@ - msgid "Accept" - msgstr "受け入れる" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "%s さんからビデオでの呼び出し" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "%s さんからの呼び出し" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "応答" -@@ -784,15 +863,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s さんがあなたに %s を送信しようとしています" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s さんが、あなたがオンライン状態になったことを知る許可を欲しいと思っています" - -@@ -865,7 +944,8 @@ - msgstr "このアカウントはすでにサーバーに接続済みです" - - #: ../js/ui/components/telepathyClient.js:1371 --msgid "Connection has been replaced by a new connection using the same resource" -+msgid "" -+"Connection has been replaced by a new connection using the same resource" - msgstr "接続は同じリソースを使って新しい接続で置き換わりました" - - #: ../js/ui/components/telepathyClient.js:1373 -@@ -881,11 +961,14 @@ - msgstr "証明書が無効化されました" - - #: ../js/ui/components/telepathyClient.js:1379 --msgid "Certificate uses an insecure cipher algorithm or is cryptographically weak" -+msgid "" -+"Certificate uses an insecure cipher algorithm or is cryptographically weak" - msgstr "証明書が安全でない暗号のアルゴリズムを使っているか、暗号的に弱いです" - - #: ../js/ui/components/telepathyClient.js:1381 --msgid "The length of the server certificate, or the depth of the server certificate chain, exceed the limits imposed by the cryptography library" -+msgid "" -+"The length of the server certificate, or the depth of the server certificate " -+"chain, exceed the limits imposed by the cryptography library" - msgstr "サーバー証明書の長さや、サーバー証明書のチェーンの深さが暗号ライブラリで規定されている長さを越えています" - - #: ../js/ui/components/telepathyClient.js:1383 -@@ -893,9 +976,9 @@ - msgstr "内部エラー" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "%s に接続できません" - -@@ -907,7 +990,7 @@ - msgid "Unknown reason" - msgstr "原因不明" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "ウィンドウ" - -@@ -915,31 +998,33 @@ - msgid "Show Applications" - msgstr "アプリケーションを表示する" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "ダッシュボード" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "カレンダーを開く" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "時計を開く" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "日時の設定" - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%Y年%B%-e日 (%a)" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "%s のログアウト" -@@ -950,13 +1035,13 @@ - msgstr "ログアウト" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s は %d 秒後に自動的にログアウトします。" - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "%d 秒後に自動的にログアウトします。" -@@ -977,7 +1062,7 @@ - msgstr "更新をインストールして電源オフ" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "%d 秒後に自動的にシステムの電源を切ります。" -@@ -1003,7 +1088,7 @@ - msgstr "再起動" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "%d 秒後にシステムを再起動します。" -@@ -1014,9 +1099,11 @@ - msgstr "再起動して更新をインストールする" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." --msgid_plural "The system will automatically restart and install updates in %d seconds." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." -+msgid_plural "" -+"The system will automatically restart and install updates in %d seconds." - msgstr[0] "%d 秒後にシステムを再起動して更新をインストールします。" - - #: ../js/ui/endSessionDialog.js:127 -@@ -1046,15 +1133,15 @@ - msgid "Other users are logged in." - msgstr "他のユーザーがログインしています。" - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (リモート)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (コンソール)" - -@@ -1063,99 +1150,116 @@ - msgstr "インストール" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "extensions.gnome.org から ”%s” をダウンロードしてインストールしますか?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d extension は最新ではありません" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "http://extensions.gnome.org で更新ができます" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "キーボード" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "機能拡張はインストールされていません" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s は何もエラーを出力していません。" - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "エラーを非表示" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "エラーを表示" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "有効" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "無効" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "エラー" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "最新ではありません" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "ダウンロード中" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "ソースの表示" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "ウェブページ" - --#: ../js/ui/messageTray.js:1326 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "開く" - --#: ../js/ui/messageTray.js:1333 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "削除" - --#: ../js/ui/messageTray.js:1630 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "通知" - --#: ../js/ui/messageTray.js:1637 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "メッセージをクリア" - --#: ../js/ui/messageTray.js:1656 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "通知設定" - --#: ../js/ui/messageTray.js:1709 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "トレイメニュー" - --#: ../js/ui/messageTray.js:1926 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "メッセージなし" - --#: ../js/ui/messageTray.js:1968 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "メッセージトレイ" - --#: ../js/ui/messageTray.js:2971 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d 件の新しいメッセージ" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "システム情報" - -@@ -1164,12 +1268,6 @@ - msgid "Unknown" - msgstr "不明なプログラム" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d 件の新しいメッセージ" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "元に戻す" -@@ -1181,7 +1279,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "検索ワードを入力…" -@@ -1191,15 +1289,20 @@ - msgstr "終了" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "アクティビティ" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - 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:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-us" -@@ -1217,38 +1320,45 @@ - msgstr "再起動中…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%B%-e日 (%a)" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d 件の新しい通知" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "ロック" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "画面をロックする必要があります" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "ロックできません" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "アプリケーションによってロックがブロックされました" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "検索しています…" - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "一致するものがありません。" - -@@ -1320,6 +1430,8 @@ - msgid "Large Text" - msgstr "大きな文字" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1336,7 +1448,7 @@ - msgstr "Bluetooth の設定" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "接続デバイス: %d台" -@@ -1349,7 +1461,7 @@ - msgid "Brightness" - msgstr "明るさ" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "キーボードレイアウトの表示" - -@@ -1387,7 +1499,7 @@ - msgstr "接続済み" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "管理対象外" -@@ -1400,19 +1512,19 @@ - msgid "Connecting" - msgstr "接続中" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "認証の要求" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "ファームウェア未検出" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "利用不可" -@@ -1497,7 +1609,7 @@ - msgid "connecting..." - msgstr "接続中..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "認証の要求" -@@ -1534,19 +1646,23 @@ - msgid "Fully Charged" - msgstr "充電完了" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "残量推計中…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "残り %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "残り時間 %d\\u2236%02d (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "充電完了まで %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "充電完了まで %d\\u2236%02d (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1556,6 +1672,9 @@ - msgid "Battery" - msgstr "バッテリー" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "機内モード" -@@ -1604,16 +1723,16 @@ - msgid "Unlock Window" - msgstr "ロック解除" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "アプリケーション" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "検索" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "”%s” は準備完了です" - -@@ -1623,7 +1742,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "設定を元に戻す" -@@ -1633,7 +1752,7 @@ - msgstr "変更を保存" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "%d 秒後に元の設定に戻ります" -@@ -1702,19 +1821,19 @@ - msgid "System Sounds" - msgstr "システムのサウンド" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "バージョンを表示" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "ログイン画面で GDM が使用するモード" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "指定したモードを使用する (例: ログイン画面用の \"gdm\")" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "使用可能なモードを一覧表示する" - -@@ -1734,318 +1853,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "認証ダイアログはユーザーに拒否されました" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "場所の最大精度レベルです。" -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "タイトルバーのボタン配置方法" -- --#~ msgid "This key overrides the key in org.gnome.desktop.wm.preferences when running GNOME Shell." --#~ msgstr "GNOME Shell 使用時は、 このキーが、org.gnome.desktop.wm.preferences の同じキーよりも優先します。" -- --#~ msgid "Extension" --#~ msgstr "拡張機能" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "設定する拡張機能を上部のコンボボックスから選択してください。" -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:YM" -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "フォルダー形式で表示するカテゴリ名のリスト" -- --#~ msgid "Each category name in this list will be represented as folder in the application view, rather than being displayed inline in the main view." --#~ msgstr "このリストに指定したカテゴリは、アプリケーションビューにおいてフォルダー形式で表示されます。メインビューのカテゴリ列には表示されません。" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%b%-e日 %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%Y年%b%-e日%H:%M" -- --#~ msgid "Authorization request from %s" --#~ msgstr "%s からアクセス許可の要求" -- --#~ msgid "Device %s wants to pair with this computer" --#~ msgstr "デバイス %s がこのコンピューターとのペアリングを要求しています" -- --#~ msgid "Allow" --#~ msgstr "許可" -- --#~ msgid "Deny" --#~ msgstr "拒否" -- --#~ msgid "Device %s wants access to the service '%s'" --#~ msgstr "デバイス '%s' が サービス '%s' へのアクセスを要求しています" -- --#~ msgid "Always grant access" --#~ msgstr "許可" -- --#~ msgid "Grant this time only" --#~ msgstr "今回のみ許可" -- --#~ msgid "Reject" --#~ msgstr "拒否" -- --#~ msgid "Pairing confirmation for %s" --#~ msgstr "%s からペアリングの確認" -- --#~ msgid "Please confirm whether the Passkey '%06d' matches the one on the device." --#~ msgstr "'%06d' がデバイスのパスキーと一致しているか確認してください。" -- --#~ msgid "Matches" --#~ msgstr "一致" -- --#~ msgid "Does not match" --#~ msgstr "不一致" -- --#~ msgid "Pairing request for %s" --#~ msgstr "%s からペアリングの要求" -- --#~ msgid "Please enter the PIN mentioned on the device." --#~ msgstr "デバイスの PIN コードを入力してください。" -- --#~ msgid "OK" --#~ msgstr "OK" -- --#~ msgid "" --#~ "Sorry, no wisdom for you today:\n" --#~ "%s" --#~ msgstr "" --#~ "すまない、今日は賢言がないのだ:\n" --#~ "%s" -- --#~ msgid "%s the Oracle says" --#~ msgstr "預言者 %s 曰く" -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%p%l\\u2236%M" -- --#~ msgid "Settings Menu" --#~ msgstr "設定メニュー" -- --#~ msgid "Internally used to store the last IM presence explicitly set by the user. The value here is from the TpConnectionPresenceType enumeration." --#~ msgstr "ユーザーにより明示的に設定された最新の IM プレゼンスを保存するのに内部的に使用されます。ここは TpConnectionPresenceType 列挙型の値になります。" -- --#~ msgid "Internally used to store the last session presence status for the user. The value here is from the GsmPresenceStatus enumeration." --#~ msgstr "ユーザーの最新のセッションプレゼンスの状態を保存するのに内部的に使用されます。ここは GsmPresenceStatus 列挙型の値になります。" -- --#~ msgid "Session" --#~ msgstr "セッション" -- --#~ msgid "Click Log Out to quit these applications and log out of the system." --#~ msgstr "ログアウトをクリックすると、起動中のアプリケーションを終了しシステムからログアウトします。" -- --#~ msgid "Logging out of the system." --#~ msgstr "システムからログアウトします。" -- --#~ msgid "Click Power Off to quit these applications and power off the system." --#~ msgstr "電源オフをクリックすると、起動中のアプリケーションを終了しシステムの電源を切ります。" -- --#~ msgid "Powering off the system." --#~ msgstr "システムの電源を切ります。" -- --#~ msgid "Click Restart to quit these applications and restart the system." --#~ msgstr "再起動をクリックすると、起動中のアプリケーションを終了しシステムを再起動します。" -- --#~ msgid "Restarting the system." --#~ msgstr "システムを再起動します。" -- --#~ msgid "Shutting down might cause them to lose unsaved work." --#~ msgstr "シャットダウンすると、他のユーザーによる未保存の作業が失われる可能性があります。" -- --#~ msgid "Screenshots" --#~ msgstr "スクリーンショット" -- --#~ msgid "Record a screencast" --#~ msgstr "スクリーンキャストを撮る" -- --#~ msgid "Keybinding to toggle the screen recorder" --#~ msgstr "スクリーンレコーダー切り替えのキーバインド" -- --#~ msgid "Keybinding to start/stop the builtin screen recorder." --#~ msgstr "内蔵のスクリーンレコーダーを起動したり止めたりするキーバインドです。" -- --#~ msgid "Framerate used for recording screencasts." --#~ msgstr "スクリーンキャスト録画のフレームレート" -- --#~ msgid "The framerate of the resulting screencast recordered by GNOME Shell's screencast recorder in frames-per-second." --#~ msgstr "GNOME Shell のスクリーンキャストレコーダーで録画するスクリーンキャストの 1秒あたりのフレーム数です。" -- --#~ msgid "The gstreamer pipeline used to encode the screencast" --#~ msgstr "スクリーンキャストのエンコードに使用する Gstreamer パイプライン" -- --#~ 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 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to WEBM using the VP8 codec. %T is used as a placeholder for a guess at the optimal thread count on the system." --#~ msgstr "録画したものをエンコードするための Gstreamer パイプラインを設定します。構文は gst-launch のものに準拠します。パイプラインは未接続の録画用 sink pad を持つようにしてください。パイプラインは通常未接続の source pad を持ち、ファイルへ出力データを書き込みますが、出力方法については独自に定義することもできます。shout2send プラグインやその類似プラグインを経由して icecast サーバーへ出力データを送信するときは、この方法をとります。値が設定されていないか、空の場合は、既定のパイプライン 'vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' が使用され、VP8 コーデックを使用した WebM 形式で録画します。 '%T' はシステムの最適スレッド数の推量値を示すプレースホルダーです。" -- --#~ msgid "File extension used for storing the screencast" --#~ msgstr "ファイルに保存するスクリーンキャストのファイル拡張子" -- --#~ 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 "録画したスクリーンキャストをファイルに保存する際は、日付を基にした固有の名前とこの拡張子をファイル名として使用します。異なる形式で録画するときは拡張子を変更する必要があります。" -- --#~ msgid "Power" --#~ msgstr "電源" -- --#~ msgid "Restart" --#~ msgstr "再起動" -- --#~ msgid "Screencast from %d %t" --#~ msgstr "Screencast from %d %t" -- --#~ msgid "Universal Access Settings" --#~ msgstr "ユニバーサルアクセスの設定" -- --#~ msgid "Visibility" --#~ msgstr "検出可能にする" -- --#~ msgid "Send Files to Device…" --#~ msgstr "デバイスにファイルを送る…" -- --#~ msgid "Set Up a New Device…" --#~ msgstr "新しいデバイスを設定…" -- --#~ msgid "Send Files…" --#~ msgstr "ファイルを送信…" -- --#~ msgid "Keyboard Settings" --#~ msgstr "キーボードの設定" -- --#~ msgid "Mouse Settings" --#~ msgstr "マウスの設定" -- --#~ msgid "Sound Settings" --#~ msgstr "サウンドの設定" -- --#~ msgid "Region & Language Settings" --#~ msgstr "地域と言語の設定" -- --#~ msgid "Volume, network, battery" --#~ msgstr "音量, ネットワーク, バッテリー" -- --#~ msgid "Wi-Fi" --#~ msgstr "Wi-Fi" -- --#~ msgid "disabled" --#~ msgstr "利用不可" -- --#~ msgid "More…" --#~ msgstr "その他…" -- --#~ msgid "Wired" --#~ msgstr "有線接続" -- --#~ msgid "Networking is disabled" --#~ msgstr "ネットワークを利用できません" -- --#~ msgid "%d hour remaining" --#~ msgid_plural "%d hours remaining" --#~ msgstr[0] "残り %d時間" -- --#~ msgid "%d %s %d %s remaining" --#~ msgstr "残り %d%s %d%s" -- --#~ msgid "hour" --#~ msgid_plural "hours" --#~ msgstr[0] "時間" -- --#~ msgid "minute" --#~ msgid_plural "minutes" --#~ msgstr[0] "分" -- --#~ msgid "%d minute remaining" --#~ msgid_plural "%d minutes remaining" --#~ msgstr[0] "残り %d分" -- --#~ msgctxt "percent of battery remaining" --#~ msgid "%d%%" --#~ msgstr "%d%%" -- --#~ msgid "AC Adapter" --#~ msgstr "AC アダプター" -- --#~ msgid "Laptop Battery" --#~ msgstr "バッテリー" -- --#~ msgid "Monitor" --#~ msgstr "モニター" -- --#~ msgid "Mouse" --#~ msgstr "マウス" -- --#~ msgid "PDA" --#~ msgstr "PDA" -- --#~ msgid "Cell Phone" --#~ msgstr "携帯電話" -- --#~ msgid "Media Player" --#~ msgstr "メディアプレイヤー" -- --#~ msgid "Tablet" --#~ msgstr "タブレット端末" -- --#~ msgid "Computer" --#~ msgstr "コンピューター" -- --#~ msgctxt "device" --#~ msgid "Unknown" --#~ msgstr "不明なデバイス" -- --#~ msgid "Available" --#~ msgstr "在席中" -- --#~ msgid "Busy" --#~ msgstr "取り込み中" -- --#~ msgid "Invisible" --#~ msgstr "非表示" -- --#~ msgid "Away" --#~ msgstr "離席中" -- --#~ msgid "Idle" --#~ msgstr "待機中" -- --#~ msgid "Your chat status will be set to busy" --#~ msgstr "取り込み中に設定されます" -- --#~ msgid "Notifications are now disabled, including chat messages. Your online status has been adjusted to let others know that you might not see their messages." --#~ msgstr "チャットなどの通知メッセージが表示されなくなります。オンライン状態が変更され、あなたがメッセージに目を通せない状態にあることを、他の人が知ることができます。" -- --#~ msgid "Whether to collect stats about applications usage" --#~ msgstr "アプリケーション使用状況の 有効/無効" -- --#~ 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 "通常、「お気に入り」を把握するためにアプリケーションの使用状況が監視されています。この情報が外部へ送信されることはありませんが、不安を感じるならば監視を無効にすることができます。なおすでに収集された情報は消去できません。" -- --#~ msgid "cable unplugged" --#~ msgstr "ケーブル抜け" -- --#~ msgid "Auto Ethernet" --#~ msgstr "自動イーサネット接続" -- --#~ msgid "Auto broadband" --#~ msgstr "自動ブロードバンド接続" -- --#~ msgid "Auto dial-up" --#~ msgstr "自動ダイヤルアップ" -- --#~ msgid "Auto %s" --#~ msgstr "自動 %s" -- --#~ msgid "Auto bluetooth" --#~ msgstr "自動 Bluetooth 接続" -- --#~ msgid "Auto wireless" --#~ msgstr "自動無線接続" -diff -urN gnome-shell-3.14.4/po/ko.po gnome-shell-3.14.4_localized/po/ko.po ---- gnome-shell-3.14.4/po/ko.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/ko.po 2016-03-11 22:07:50.644000000 +0530 -@@ -2,8 +2,8 @@ - # Young-Ho Cha , 2009. - # Seong-ho Cho , 2012. - # Changwoo Ryu , 2011-2014. --# --# -+# -+# - # 주의 사항: - # - 이 프로그램의 이름인 shell은 "셸"이라고 쓰고, "쉘"이라고 하지 않음. - # - 용어: -@@ -12,21 +12,21 @@ - # - VPN: 가상사설망 - # - pairing (bluetooth 관련): 페어링 - # - Wayland: 웨일랜드로 음역 --# -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-13 07:37+0000\n" --"PO-Revision-Date: 2014-09-18 01:41+0900\n" --"Last-Translator: Changwoo Ryu \n" --"Language-Team: GNOME Korea \n" --"Language: Korean\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2014-09-17 04:41+0000\n" -+"Last-Translator: Changwoo Ryu \n" -+"Language-Team: GNOME Korea \n" -+"Language: ko\n" - "Plural-Forms: nplurals=1; plural=0;\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -94,9 +94,8 @@ - "list. You can also manipulate this list with the EnableExtension and " - "DisableExtension D-Bus methods on org.gnome.Shell." - msgstr "" --"그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 읽어들일 확장의 UUID를 나열합" --"니다. 읽어들이려는 확장은 모두 이 목록에 들어 있어야 합니다. EnableExtension " --"및 DisableExtension D-버스 메소드를 이용해 이 목록을 조작할 수도 있습니다." -+"그놈 셸 확장에는 UUID 속성이 있습니다. 이 키는 읽어들일 확장의 UUID를 나열합니다. 읽어들이려는 확장은 모두 이 목록에 들어 " -+"있어야 합니다. EnableExtension 및 DisableExtension D-버스 메소드를 이용해 이 목록을 조작할 수도 있습니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 - msgid "Disables the validation of extension version compatibility" -@@ -108,9 +107,8 @@ - "running version. Enabling this option will disable this check and try to " - "load all extensions regardless of the versions they claim to support." - msgstr "" --"그놈 셸에서 현재 실행 중인 버전을 지원하는 확장 기능만 읽어들입니다. 이 옵션" --"을 사용하면 이 버전 검사를 하지 않고, 지원한다고 지정된 버전에 관계없이 모든 " --"확장 기능을 읽어들입니다." -+"그놈 셸에서 현재 실행 중인 버전을 지원하는 확장 기능만 읽어들입니다. 이 옵션을 사용하면 이 버전 검사를 하지 않고, 지원한다고 지정된 " -+"버전에 관계없이 모든 확장 기능을 읽어들입니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 - msgid "List of desktop file IDs for favorite applications" -@@ -146,16 +144,12 @@ - msgid "" - "This key overrides the automatic hiding of the 'Log out' menu item in single-" - "user, single-session situations." --msgstr "" --"이 키를 설정하면, 단일 사용자 및 단일 세션에서 '로그아웃' 메뉴 항목 자동 감추" --"기 기능을 사용하지 않습니다." -+msgstr "이 키를 설정하면, 단일 사용자 및 단일 세션에서 '로그아웃' 메뉴 항목 자동 감추기 기능을 사용하지 않습니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 - msgid "" - "Whether to remember password for mounting encrypted or remote filesystems" --msgstr "" --"암호화 볼륨을 마운트하거나 원격 파일 시스템을 마운트할 때 암호를 저장할지 여" --"부" -+msgstr "암호화 볼륨을 마운트하거나 원격 파일 시스템을 마운트할 때 암호를 저장할지 여부" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:16 - msgid "" -@@ -164,9 +158,8 @@ - "'Remember Password' checkbox will be present. This key sets the default " - "state of the checkbox." - msgstr "" --"암호화된 저장 장치나 원격 파일 시스템을 마운트하는 경우 암호를 입력해야 합니" --"다. 암호를 저장할 수 있으면 '암호 저장' 확인란이 나타납니다. 이 키에서는 이 " --"확인란의 기본 상태를 지정합니다." -+"암호화된 저장 장치나 원격 파일 시스템을 마운트하는 경우 암호를 입력해야 합니다. 암호를 저장할 수 있으면 '암호 저장' 확인란이 " -+"나타납니다. 이 키에서는 이 확인란의 기본 상태를 지정합니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 - msgid "Show the week date in the calendar" -@@ -191,6 +184,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "현재 활동 요약의 \"프로그램 보기\" 뷰를 여는 키 바인딩." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 -@@ -219,9 +213,9 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" --msgstr "" --"실행 중인 모든 하위 프로세스를 일시 중지하고 계속 하는 키 바인딩, 디버깅 목적" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" -+msgstr "실행 중인 모든 하위 프로세스를 일시 중지하고 계속 하는 키 바인딩, 디버깅 목적" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 - msgid "Which keyboard to use" -@@ -239,9 +233,7 @@ - msgid "" - "If true, only applications that have windows on the current workspace are " - "shown in the switcher. Otherwise, all applications are included." --msgstr "" --"참이면, 현재 작업 공간에 창이 있는 프로그램만 프로그램 전환 창에 표시합니다. " --"참이 아니면 모든 프로그램을 표시합니다." -+msgstr "참이면, 현재 작업 공간에 창이 있는 프로그램만 프로그램 전환 창에 표시합니다. 참이 아니면 모든 프로그램을 표시합니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 - msgid "The application icon mode." -@@ -250,19 +242,17 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" --"창 전환에서 창이 어떻게 표시될지 설정합니다. 가능한 값은: 'thumbnail-only'(창" --"의 섬네일만 표시), 'app-icon-only'(프로그램 아이콘만 표시), 'both'(모두)." -+"창 전환에서 창이 어떻게 표시될지 설정합니다. 가능한 값은: 'thumbnail-only'(창의 섬네일만 표시), 'app-icon-" -+"only'(프로그램 아이콘만 표시), 'both'(모두)." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 - msgid "" - "If true, only windows from the current workspace are shown in the switcher. " - "Otherwise, all windows are included." --msgstr "" --"참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모" --"든 창을 표시합니다." -+msgstr "참이면, 현재 작업 공간에 창이 있는 창만 창 전환 창에 표시합니다. 거짓이면 모든 창을 표시합니다." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 - msgid "Attach modal dialog to the parent window" -@@ -295,7 +285,7 @@ - msgstr "종속 포털" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "%s에 대한 기본 설정 대화상자를 불러오는데 오류가 발생했습니다:" - -@@ -303,54 +293,68 @@ - msgid "GNOME Shell Extensions" - msgstr "그놈 셸 확장" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "취소" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "다음" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "잠금 풀기" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "로그인" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "세션 선택" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "목록에 없습니까?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(예를 들어, 사용자 또는 %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "사용자 이름: " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "로그인 창" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "인증 오류" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(또는 지문을 문지르십시오)" - -@@ -358,59 +362,63 @@ - msgid "Command not found" - msgstr "명령이 없습니다" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "명령어를 파싱할 수 없습니다:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "“%s” 실행이 실패했습니다:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "웹 인증 리다이렉트" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "자주 사용하는 프로그램이 여기 나타납니다" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "자주" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "모두" - --#: ../js/ui/appDisplay.js:1789 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "새 창" - --#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "즐겨찾기에서 제거" - --#: ../js/ui/appDisplay.js:1821 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "즐겨찾기에 추가" - - # 주의: "Show ..." 형태지만 보이기로 번역하지 않는다 --#: ../js/ui/appDisplay.js:1830 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "자세히 보기" - --#: ../js/ui/appFavorites.js:124 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s 프로그램을 즐겨찾기에 추가했습니다." - --#: ../js/ui/appFavorites.js:158 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s 프로그램을 즐겨찾기에서 제거했습니다." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "설정" -@@ -421,69 +429,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "종일" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%p %l∶%M" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "일" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "월" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "화" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "수" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "목" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "금" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "토" -@@ -493,86 +501,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "일" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "월" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "화" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "수" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "목" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "금" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "토" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "이전 달" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "다음 달" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "일정이 없습니다" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%B %d일 %A" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%Y년 %B %d일 %A" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "오늘" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "내일" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "이번주" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "다음주" - -@@ -589,7 +597,7 @@ - msgstr "이동식 장치" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "%s 프로그램으로 열기" - -@@ -610,6 +618,7 @@ - msgid "Connect" - msgstr "연결" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -618,6 +627,7 @@ - msgid "Password: " - msgstr "암호: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "키: " -@@ -639,7 +649,7 @@ - msgstr "무선 네트워크에서 인증이 필요합니다" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -674,7 +684,7 @@ - msgstr "휴대전화 네트워크 암호" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "“%s”에 연결하려면 암호가 필요합니다." - -@@ -693,19 +703,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "죄송합니다. 동작하지 않았습니다. 다시 시도하십시오." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "초대" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "호출" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "파일 전송" -@@ -722,87 +736,96 @@ - msgid "Mute" - msgstr "음소거" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" -+#, fuzzy, no-c-format -+msgid "Yesterday, %H\\u2236%M" - msgstr "어제, %H:%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" -+#, fuzzy, no-c-format -+msgid "%A, %H\\u2236%M" - msgstr "%A, %H:%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" -+#, fuzzy, no-c-format -+msgid "%B %d, %H\\u2236%M" - msgstr "%B %d일, %H∶%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" -+#, fuzzy, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" - msgstr "%Y년 %B %d일, %H∶%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" -+#, fuzzy -+msgid "%l\\u2236%M %p" - msgstr "%p %l∶%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" - msgstr "어제, %p %l∶%M" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%A, %l\\u2236%M %p" - msgstr "%A, %p %l∶%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%B %d, %l\\u2236%M %p" - msgstr "%B %d일, %p %l∶%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" -+#, fuzzy, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" - msgstr "%Y년 %B %d일, %p %l∶%M" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s의 대화명이 이제 %s입니다" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "%s에 초대" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s 님이 %s에 입장하도록 초대합니다" - -@@ -819,19 +842,19 @@ - msgid "Accept" - msgstr "허용" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "%s에서 영상 호출" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "%s에서 호출" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "응답" -@@ -840,15 +863,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s님이 %s 파일을 보냅니다" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "연결 상태인지 알 수 있는 권한을 %s님이 요청합니다" - -@@ -946,18 +969,16 @@ - msgid "" - "The length of the server certificate, or the depth of the server certificate " - "chain, exceed the limits imposed by the cryptography library" --msgstr "" --"서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한" --"을 넘어갑니다." -+msgstr "서버 인증서의 길이, 또는 서버 인증서 체인의 단계가 암호화 라이브러리의 제한을 넘어갑니다." - - #: ../js/ui/components/telepathyClient.js:1383 - msgid "Internal error" - msgstr "내부 오류" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "%s에 연결할 수 없습니다" - -@@ -969,7 +990,7 @@ - msgid "Unknown reason" - msgstr "알 수 없는 이유" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "창" - -@@ -977,31 +998,33 @@ - msgid "Show Applications" - msgstr "프로그램 표시" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "대시보드" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "달력 열기" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "시계 열기" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "날짜 및 시각 설정" - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%Y년 %B %e일 %A" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "%s 로그아웃" -@@ -1012,13 +1035,13 @@ - msgstr "로그아웃" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s 사용자가 %d초 뒤에 자동으로 로그아웃합니다." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "%d초 뒤에 자동으로 로그아웃합니다." -@@ -1039,7 +1062,7 @@ - msgstr "업데이트 설치 및 컴퓨터 끄기" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "시스템이 %d초 뒤에 자동으로 꺼집니다." -@@ -1065,7 +1088,7 @@ - msgstr "다시 시작" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작합니다." -@@ -1076,8 +1099,9 @@ - msgstr "다시 시작 및 업데이트 설치" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "시스템이 %d초 뒤에 자동으로 다시 시작하고 업데이트를 설치합니다." -@@ -1109,15 +1133,15 @@ - msgid "Other users are logged in." - msgstr "다른 사용자가 로그인 중입니다." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (원격)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (콘솔)" - -@@ -1126,100 +1150,116 @@ - msgstr "설치" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" -+msgstr "extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?" -+ -+#: ../js/ui/extensionSystem.js:314 -+#, fuzzy, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "확장을 설치하지 않았습니다" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" - msgstr "" --"extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "키보드" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "확장을 설치하지 않았습니다" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s에서 발생한 에러가 없습니다." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "오류 숨기기" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "오류 보이기" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "사용" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "사용 않음" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "오류" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "오래 된 버전" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "다운로드 중" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "소스 보기" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "웹페이지" - --#: ../js/ui/messageTray.js:1326 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "열기" - --#: ../js/ui/messageTray.js:1333 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "제거" - --#: ../js/ui/messageTray.js:1630 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "알림" - --#: ../js/ui/messageTray.js:1637 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "메시지 지우기" - --#: ../js/ui/messageTray.js:1656 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "알림 설정" - --#: ../js/ui/messageTray.js:1709 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "트레이 메뉴" - --#: ../js/ui/messageTray.js:1926 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "메시지 없음" - --#: ../js/ui/messageTray.js:1968 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "메시지 트레이" - --#: ../js/ui/messageTray.js:2971 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "새 메시지 %d개" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "시스템 정보" - -@@ -1228,12 +1268,6 @@ - msgid "Unknown" - msgstr "알 수 없음" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "새 메시지 %d개" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "실행 취소" -@@ -1245,7 +1279,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "검색하려면 입력하십시오…" -@@ -1255,15 +1289,20 @@ - msgstr "끝내기" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "현재 활동" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - 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:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1281,38 +1320,45 @@ - msgstr "다시 시작하는 중…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%B %d일 %A" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "새 알림 %d개" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "잠그기" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "그놈에서 화면을 잠궈야 합니다" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "잠글 수 없습니다" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "프로그램이 잠금을 막았습니다" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "검색하는 중…" - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "결과가 없습니다." - -@@ -1384,6 +1430,8 @@ - msgid "Large Text" - msgstr "큰 글자" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "블루투스" -@@ -1400,7 +1448,7 @@ - msgstr "블루투스 설정" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "연결된 장치 %d개" -@@ -1413,7 +1461,7 @@ - msgid "Brightness" - msgstr "밝기" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "키보드 배치 표시" - -@@ -1451,7 +1499,7 @@ - msgstr "연결됨" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "관리되지 않음" -@@ -1464,19 +1512,19 @@ - msgid "Connecting" - msgstr "연결하는 중" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "인증 필요" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "펌웨어 없음" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "사용 불가" -@@ -1561,7 +1609,7 @@ - msgid "connecting..." - msgstr "연결하는 중..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "인증 필요" -@@ -1598,18 +1646,22 @@ - msgid "Fully Charged" - msgstr "완전 충전" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "예상치 계산 중…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" -+#, fuzzy, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" - msgstr "%d∶%02d 남음(%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" -+#, fuzzy, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" - msgstr "충전까지 %d:%02d(%d%%)" - - #: ../js/ui/status/power.js:119 -@@ -1620,6 +1672,9 @@ - msgid "Battery" - msgstr "배터리" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "비행기 모드" -@@ -1670,16 +1725,16 @@ - msgid "Unlock Window" - msgstr "창 잠금 풀기" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "프로그램" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "검색" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "“%s” 프로그램이 준비되었습니다" - -@@ -1689,7 +1744,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "설정 되돌리기" -@@ -1699,7 +1754,7 @@ - msgstr "바뀐 사항 유지" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "바뀐 설정을 %d초 후에 되돌립니다" -@@ -1769,19 +1824,19 @@ - msgstr "시스템 소리" - - # 커맨드라인 옵션 설명 --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "버전을 표시합니다" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "GDM에서 로그인 화면에 사용할 모드" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "특정 모드 사용. 예를 들어 로그인 화면에 대해 \"gdm\"" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "가능한 모드 목록 표시" - -@@ -1801,42 +1856,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "인증 대화 창을 사용자가 닫았습니다" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "위치의 정확도 단계." -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "프로그램에서 확인할 수 있는 위치의 정확도 최대 단계를 설정합니다. 쓸 수 있" --#~ "는 값은 'off'(위치 추적 기능 사용하지 않음), 'country'(국가), 'city'(도" --#~ "시), 'neighborhood'(이웃), 'street'(길), 'exact'(정확한 위치, 보통 GPS 리" --#~ "시버 필요)입니다. 단 이 옵션은 GeoClue를 사용하는 프로그램이 쓸 수 있는 위" --#~ "치 정보만 설정합니다. 그래서 응용 프로그램이 자체적으로 네트워크를 사용해 " --#~ "사용자 위치를 알아낼 수는 있습니다(이 경우 보통 길 위치 정도만 알아낼 수 " --#~ "있지만)." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "제목 표시줄의 단추 순서" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "그놈 셸을 실행할 때 org.gnome.desktop.wm.preferences의 키 대신 사용됩니다." -- --#~ msgid "Extension" --#~ msgstr "확장" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "위의 콤보상자를 사용해 설정할 확장을 선택하십시오." -- --# FIXME: 그냥 직접 포맷을 번역하지 왜 이렇게? --#~ msgid "calendar:MY" --#~ msgstr "calendar:YM" -diff -urN gnome-shell-3.14.4/po/pt_BR.po gnome-shell-3.14.4_localized/po/pt_BR.po ---- gnome-shell-3.14.4/po/pt_BR.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/pt_BR.po 2016-03-11 22:07:50.677000000 +0530 -@@ -15,22 +15,22 @@ - # Rafael Ferreira , 2013, 2014. - # Georges Basile Stavracas Neto , 2014. - # Enrico Nicoletto , 2013, 2014. --# -+# msuppesd , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-12 19:36+0000\n" --"PO-Revision-Date: 2014-09-12 22:49-0300\n" --"Last-Translator: Enrico Nicoletto \n" --"Language-Team: Brazilian Portuguese \n" --"Language: pt_BR\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-09 08:26+0000\n" -+"Last-Translator: msuppesd \n" -+"Language-Team: Brazilian Portuguese \n" -+"Language: pt-BR\n" - "Plural-Forms: nplurals=2; plural=(n > 1);\n" --"X-Generator: Poedit 1.6.3\n" -+"X-Generator: Zanata 3.8.2\n" - "X-Project-Style: gnome\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 -@@ -210,6 +210,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "" - "Atalho de teclado para abrir a visualização \"Mostrar aplicativos\" do " - "panorama de atividades." -@@ -228,7 +229,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:26 - msgid "Keybinding to toggle the visibility of the message tray." --msgstr "Atalho de teclado para alternar a visibilidade da área de notificação." -+msgstr "" -+"Atalho de teclado para alternar a visibilidade da área de notificação." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:27 - msgid "Keybinding to focus the active notification" -@@ -241,7 +243,8 @@ - # Tween pode significar uma contração de Between ou se referir a um termo "in-between" usado em animação gráfica. -- Enrico - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Atalho de teclado que pausa e continua todos os intermediários em execução, " - "a fim de depuração" -@@ -274,8 +277,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Configura como as janelas são mostradas no alternador. As possibilidades " - "válidas são 'thumbnail-only' (mostra uma miniatura da janela), 'app-icon-" -@@ -322,7 +325,7 @@ - msgstr "Portal cativo" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "Ocorreu um erro ao carregar o dialogo de preferências para %s:" - -@@ -330,54 +333,68 @@ - msgid "GNOME Shell Extensions" - msgstr "Extensões do Shell do GNOME" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Cancelar" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Próximo" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Desbloquear" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Entrar" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Escolher sessão" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "Não está listado?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(ex.: usuário ou %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Nome de usuário: " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Janela de sessão" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Erro de autenticação" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(ou deslize o dedo)" - -@@ -385,58 +402,62 @@ - msgid "Command not found" - msgstr "Comando não encontrado" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "Não foi possível analisar comando:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "A execução de \"%s\" falhou:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Redirecionamento para autenticação web" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Aplicativos usados frequentemente vão aparecer aqui" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Frequente" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Todos" - --#: ../js/ui/appDisplay.js:1789 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Nova janela" - --#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Remover dos favoritos" - --#: ../js/ui/appDisplay.js:1821 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Adicionar aos favoritos" - --#: ../js/ui/appDisplay.js:1830 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Mostrar detalhes" - --#: ../js/ui/appFavorites.js:124 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s foi adicionado aos seus favoritos." - --#: ../js/ui/appFavorites.js:158 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s foi removido dos seus favoritos." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Configurações" -@@ -447,69 +468,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Dia todo" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "D" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "S" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "T" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "Q" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "Q" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "S" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "S" -@@ -519,86 +540,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "Dom" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "Seg" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "Ter" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "Qua" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "Qui" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "Sex" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "Sab" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Mês anterior" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Próximo mês" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Nada agendado" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A, %d de %B" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%A, %d de %B de %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Hoje" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Amanhã" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Esta semana" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "Próxima semana" - -@@ -615,7 +636,7 @@ - msgstr "Dispositivos removíveis" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Abrir com %s" - -@@ -636,6 +657,7 @@ - msgid "Connect" - msgstr "Conectar" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -644,6 +666,7 @@ - msgid "Password: " - msgstr "Senha: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Chave: " -@@ -665,7 +688,7 @@ - msgstr "Autenticação requisitada pela rede sem fio" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -702,7 +725,7 @@ - msgstr "Senha da rede de banda larga móvel" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "Uma senha é necessária para se conectar a \"%s\"" - -@@ -721,19 +744,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "Desculpe, isto não funcionou. Por favor, tente novamente." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Convite" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Chamada" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Transferência de arquivo" -@@ -750,87 +777,95 @@ - msgid "Mute" - msgstr "Sem áudio" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "Ontem, %H∶%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "Ontem, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%d de %B, %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%d %B, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%d de %B de %Y, %H∶%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%d %B %Y, %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "Ontem, %l∶%M %p" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "Ontem, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A, %l∶%M %p" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%d de %B, %l∶%M %p" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr " %d %B, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%d de %B de %Y, %l∶%M %p" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%d %B %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s agora é conhecido como %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Convite para %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s está convidando você para participar de %s" - -@@ -847,19 +882,19 @@ - msgid "Accept" - msgstr "Aceitar" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Chamada de vídeo para %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Chamada de %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Atender" -@@ -868,15 +903,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s está enviando %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s quer permissão para vê-lo quando conectado" - -@@ -985,9 +1020,9 @@ - msgstr "Erro interno" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "Não foi possível conectar-se a %s" - -@@ -999,7 +1034,7 @@ - msgid "Unknown reason" - msgstr "Razão desconhecida" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Janelas" - -@@ -1007,32 +1042,34 @@ - msgid "Show Applications" - msgstr "Mostrar aplicativos" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "Abrir agenda" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "Abrir relógios" - - # O "&" foi inserido como "e" para versão 3.8.0 no gnome-control-center --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "Configurações de data & hora" - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%A, %e de %B de %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "Encerrar sessão de %s" -@@ -1043,14 +1080,14 @@ - msgstr "Encerrar sessão" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s encerrará a sessão automaticamente em %d segundo." - msgstr[1] "%s encerrará a sessão automaticamente em %d segundos." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "Sua sessão será encerrada automaticamente em %d segundo." -@@ -1072,7 +1109,7 @@ - msgstr "Instalar atualizações & desligar" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "O sistema será desligado automaticamente em %d segundo." -@@ -1099,7 +1136,7 @@ - msgstr "Reiniciar" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "O sistema irá reiniciar automaticamente em %d segundo." -@@ -1111,8 +1148,9 @@ - msgstr "Reiniciar & instalar atualizações" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "" -@@ -1151,15 +1189,15 @@ - msgid "Other users are logged in." - msgstr "Outros usuários estão com sessão aberta." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (remoto)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (console)" - -@@ -1168,99 +1206,118 @@ - msgstr "Instalar" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "Baixar e instalar \"%s\" de extensions.gnome.org?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "A extensão %d está desatualizada " -+msgstr[1] "As extensões %d estão desatualizadas " -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "Visite http://extensions.gnome.org para atualizações" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Teclado" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "Nenhuma extensão instalada" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s não emitiu erros." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Ocultar erros" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Exibir erros" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Habilitado" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Desabilitado" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Erro" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Expirado" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Baixando" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Ver fonte" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Página web" - --#: ../js/ui/messageTray.js:1326 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Abrir" - --#: ../js/ui/messageTray.js:1333 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Remover" - --#: ../js/ui/messageTray.js:1630 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Notificações" - --#: ../js/ui/messageTray.js:1637 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Sem mensagens" - --#: ../js/ui/messageTray.js:1656 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Configurações de notificação" - --#: ../js/ui/messageTray.js:1709 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Menu de notificação" - --#: ../js/ui/messageTray.js:1926 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "Sem mensagens" - --#: ../js/ui/messageTray.js:1968 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Área de notificação" - --#: ../js/ui/messageTray.js:2971 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d nova mensagem" -+msgstr[1] "%d novas mensagens" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Informações do sistema" - -@@ -1269,13 +1326,6 @@ - msgid "Unknown" - msgstr "Desconhecido" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d nova mensagem" --msgstr[1] "%d novas mensagens" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Desfazer" -@@ -1287,7 +1337,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Digite para pesquisar…" -@@ -1297,15 +1347,20 @@ - msgstr "Sair" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Atividades" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - msgstr "Barra superior" - -+#. Translators: this MUST be either "toggle-switch-us" -+#. (for toggle switches containing the English words -+#. "ON" and "OFF") or "toggle-switch-intl" (for toggle -+#. switches containing "◯" and "|"). Other values will -+#. simply result in invisible toggle switches. - #: ../js/ui/popupMenu.js:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1323,39 +1378,46 @@ - msgstr "Reiniciando…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A, %d de %B" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d nova notificação" - msgstr[1] "%d novas notificações" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Bloquear" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME precisa bloquear a tela" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "Não foi possível bloquear" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "O bloqueio foi impedido por um aplicativo" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "Pesquisando…" - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "Nenhum resultado." - -@@ -1427,6 +1489,8 @@ - msgid "Large Text" - msgstr "Texto grande" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1443,7 +1507,7 @@ - msgstr "Configurações de Bluetooth" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d dispositivo conectado" -@@ -1457,7 +1521,7 @@ - msgid "Brightness" - msgstr "Brilho" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Exibir disposição de teclado" - -@@ -1470,7 +1534,6 @@ - msgstr "Desabilitar" - - #: ../js/ui/status/location.js:73 --#| msgid "Power Settings" - msgid "Privacy Settings" - msgstr "Configurações de privacidade" - -@@ -1497,7 +1560,7 @@ - - # Não gerenciável para transmitir a idéia que o Networkmanager não consegue gerenciar o dispositivo --Enrico - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Não gerenciável" -@@ -1510,19 +1573,19 @@ - msgid "Connecting" - msgstr "Conectando" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Autenticação necessária" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Firmware em falta" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "Indisponível" -@@ -1607,7 +1670,7 @@ - msgid "connecting..." - msgstr "conectando..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "autenticação necessária" -@@ -1644,19 +1707,23 @@ - msgid "Fully Charged" - msgstr "Completamente carregada" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "Estimando…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "%d:%02d restante(s) (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d Restante(s) (%d%%) " - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "%d:%02d até completamente carregada (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d:%02d até estar cheio (%d%%)" - - # UPS significa uninterruptible power supply, mas no Brasil vejo usando mais - # "No-break", que é a mesma coisa, então optei pela segunda. -- Rafael Ferreira -@@ -1668,6 +1735,9 @@ - msgid "Battery" - msgstr "Bateria" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Modo avião" -@@ -1716,16 +1786,16 @@ - msgid "Unlock Window" - msgstr "Desbloquear janela" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Aplicativos" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Pesquisar" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "\"%s\" está pronto" - -@@ -1735,7 +1805,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Reverter configurações" -@@ -1745,7 +1815,7 @@ - msgstr "Manter alterações" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "Alterações nas configurações serão revertidas em %d segundo" -@@ -1817,19 +1887,19 @@ - msgid "System Sounds" - msgstr "Sons do sistema" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Versão de impressão" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Modo usado pelo GDM para a tela de início de sessão" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "Utilizar um modo específico, ex.: \"gdm\" para a tela de login" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Listar modos possíveis" - -@@ -1849,72 +1919,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "O diálogo de autenticação foi descartado pelo usuário" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "O nível máximo de precisão de local." -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "Configura o nível máximo de precisão de local a que os aplicativos com " --#~ "permissão podem ver. Opções válidas são \"off\" (desabilita o " --#~ "rastreamento de local), \"country\", \"city\", \"neighborhood\", \"street" --#~ "\" e \"exact\" (geralmente necessita de receptor de GPS). Por gentileza, " --#~ "tenha em mente que estes são os únicos controles que o GeoClue permitirá " --#~ "aos aplicativos observarem e eles podem localizar o local do usuário por " --#~ "si só, usando recursos de rede (apesar de na melhor hipótese usarem " --#~ "precisão à nível de rua)." -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "Organização dos botões na barra de título" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "Esta chave sobrescreve a chave em org.gnome.desktop.wm.preferences ao " --#~ "executar o Shell do GNOME." -- --#~ msgid "Extension" --#~ msgstr "Extensão" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "" --#~ "Selecione uma extensão para configurar usando a caixa de seleção abaixo." -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:MY" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A, %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%d de %B, às %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%d de %B de %Y, às %H:%M " -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "Lista de categorias que devem ser exibidas como pastas" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "Cada nome de categoria nesta lista será representado como uma pasta na " --#~ "visão do aplicativo, ao invés de ser exibido incorporado à visão " --#~ "principal." -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u2236%M\\u2009%p" -diff -urN gnome-shell-3.14.4/po/ru.po gnome-shell-3.14.4_localized/po/ru.po ---- gnome-shell-3.14.4/po/ru.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/ru.po 2016-03-11 22:07:50.703000000 +0530 -@@ -1,8 +1,8 @@ - # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER - # This file is distributed under the same license as the PACKAGE package. --# --# --# -+# -+# -+# - # Andrey Korzinev , 2009. - # Sergey V. Kovylov , 2009. - # Marina Zhurakhinskaya , 2009, 2010. -@@ -12,23 +12,23 @@ - # Valery Kirichenko , 2014. - # Stas Solovey , 2011, 2013, 2014. - # Yuri Myasoedov , 2012, 2013, 2014. --# -+# pnemade , 2016. #zanata -+# ypoyarko , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-17 07:35+0000\n" --"PO-Revision-Date: 2014-09-17 20:45+0400\n" --"Last-Translator: Yuri Myasoedov \n" --"Language-Team: русский \n" --"Language: ru\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" --"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" --"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" --"X-Generator: Poedit 1.6.9\n" -+"PO-Revision-Date: 2016-03-07 01:30+0000\n" -+"Last-Translator: ypoyarko \n" -+"Language-Team: русский \n" -+"Language: ru\n" -+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " -+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -77,7 +77,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:1 - msgid "Enable internal tools useful for developers and testers from Alt-F2" --msgstr "Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров" -+msgstr "" -+"Включить внутренние инструменты из Alt-F2 для разработчиков и тестеров" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:2 - msgid "" -@@ -101,6 +102,7 @@ - "У расширений GNOME Shell есть свойство UUID; в этом ключе перечислены " - "расширения, которые должны быть загружены. Этим список также можно управлять " - "через методы DBus EnableExtension и DisableExtension сервиса org.gnome.Shell." -+"" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 - msgid "Disables the validation of extension version compatibility" -@@ -200,6 +202,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "Комбинация клавиш для перехода в режим просмотра приложений." - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 -@@ -229,7 +232,8 @@ - # tweens — что-то типа анимации - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "" - "Комбинация клавиш, которая приостанавливает и возобновляет все запущенные " - "анимации (для отладки)" -@@ -262,8 +266,8 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" - "Управляет способом отображения окон в переключателе. Доступные значения: " - "«thumbnail-only» (показывать миниатюру окна), «app-icon-only» (показывать " -@@ -310,7 +314,7 @@ - msgstr "Captive-портал" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "Возникла ошибка загрузки диалогового окна параметров для %s:" - -@@ -318,54 +322,68 @@ - msgid "GNOME Shell Extensions" - msgstr "Расширения GNOME Shell" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "Отмена" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "Далее" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "Разблокировать" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "Войти" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "Выбрать сеанс" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "Нет в списке?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(например, пользователь или %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "Имя пользователя: " - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "Окно входа в систему" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "Ошибка проверки подлинности" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(или проведите пальцем по считывающему устройству)" - -@@ -373,58 +391,62 @@ - msgid "Command not found" - msgstr "Команда не найдена" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "Не удалось разобрать команду:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "Не удалось выполнить «%s»:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "Перенаправление для проверки подлинности" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "Здесь появляются часто используемые приложения" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "Популярные" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "Все" - --#: ../js/ui/appDisplay.js:1789 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "Новое окно" - --#: ../js/ui/appDisplay.js:1815 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "Удалить из избранного" - --#: ../js/ui/appDisplay.js:1821 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "Добавить в избранное" - --#: ../js/ui/appDisplay.js:1830 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "Показать подробности" - --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "Приложение %s добавлено в избранное." - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "Приложение %s удалено из избранного." - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "Параметры" -@@ -435,69 +457,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "Весь день" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "Вс" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "Пн" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "Вт" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "Ср" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "Чт" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "Пт" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "Сб" -@@ -507,88 +529,88 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "Вс" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "Пн" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "Вт" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "Ср" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "Чт" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "Пт" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "Сб" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "Предыдущий месяц" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "Следующий месяц" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "Нет событий" - - # fix для даты в календаре и на экране блокировки, за разъяснением обращаться к Stas Solovey --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%A, %d %b., %Y" - - # fix для даты в календаре и на экране блокировки --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%A, %d %b., %Y" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "Сегодня" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "Завтра" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "Эта неделя" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "Следующая неделя" - -@@ -605,7 +627,7 @@ - msgstr "Съёмные устройства" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "Открыть с помощью %s" - -@@ -626,6 +648,7 @@ - msgid "Connect" - msgstr "Соединиться" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -634,6 +657,7 @@ - msgid "Password: " - msgstr "Пароль: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "Ключ: " -@@ -655,7 +679,7 @@ - msgstr "Беспроводная сеть требует подтверждения подлинности" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -691,7 +715,7 @@ - msgstr "Пароль для мобильной широкополосной сети" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "Для подключения к «%s» требуется пароль." - -@@ -710,19 +734,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "Не удалось подтвердить подлинность. Попробуйте снова." - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "Приглашение" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "Вызов" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "Передача файлов" -@@ -739,92 +767,100 @@ - msgid "Mute" - msgstr "Приглушить звук" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "Вчера, %H∶%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "Вчера, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A, %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - # fix даты "11 мар., 20:35" - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%d %b., %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%d %B., %H\\u2236%M" - - # fix даты - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%d %b., %Y, %H∶%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%d %B. %Y, %H\\u2236%M" - - # по всей видимости разрабы коммент перепутали c "Translators: Time in 12h format" --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%l∶%M %p" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "Вчера, %l∶%M %p" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "Вчера, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A, %l∶%M %p" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - # fix даты - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%d %b., %l∶%M %p" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%d %B, %l\\u2236%M %p" - - # fix даты - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%d %b., %Y, %l∶%M %p" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%d %B. %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "Контакт %s теперь известен как %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "Приглашение в %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s приглашает вас присоединиться к %s" - -@@ -841,19 +877,19 @@ - msgid "Accept" - msgstr "Принять" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "Видеозвонок от %s" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "Вас вызывает %s" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "Ответить" -@@ -862,15 +898,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s отправляет вам %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s хочет видеть, когда вы доступны в сети" - -@@ -980,9 +1016,9 @@ - msgstr "Внутренняя ошибка" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "Не удалось подключиться к %s" - -@@ -994,7 +1030,7 @@ - msgid "Unknown reason" - msgstr "Неизвестная причина" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "Окна" - -@@ -1002,32 +1038,34 @@ - msgid "Show Applications" - msgstr "Показать приложения" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Панель приложений" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "Открыть календарь" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "Открыть часы" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "Настроить дату и время" - - # fix для даты в календаре и на экране блокировки - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%A, %e %b., %Y" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "Завершение сеанса пользователя %s" -@@ -1038,17 +1076,18 @@ - msgstr "Завершение сеанса" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "" - "Сеанс пользователя %s будет автоматически завершён через %d секунду." - msgstr[1] "" - "Сеанс пользователя %s будет автоматически завершён через %d секунды." --msgstr[2] "Сеанс пользователя %s будет автоматически завершён через %d секунд." -+msgstr[2] "" -+"Сеанс пользователя %s будет автоматически завершён через %d секунд." - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "Сеанс будет автоматически завершён через %d секунду." -@@ -1071,7 +1110,7 @@ - msgstr "Установить обновления и выключить" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "Система будет автоматически выключена через %d секунду." -@@ -1099,7 +1138,7 @@ - msgstr "Перезапуск" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "Система будет автоматически перезапущена через %d секунду." -@@ -1112,14 +1151,17 @@ - msgstr "Перезапуск и установка обновлений" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "" - "Система автоматически перезапустится и установит обновления через %d секунду." -+"" - msgstr[1] "" - "Система автоматически перезапустится и установит обновления через %d секунды." -+"" - msgstr[2] "" - "Система автоматически перезапустится и установит обновления через %d секунд." - -@@ -1152,15 +1194,15 @@ - msgid "Other users are logged in." - msgstr "В системе имеются открытые сеансы других пользователей." - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (удалённый)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (консоль)" - -@@ -1169,99 +1211,120 @@ - msgstr "Установить" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "Загрузить и установить расширение «%s» из extensions.gnome.org?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d расширение устарело" -+msgstr[1] "%d расширения устарело" -+msgstr[2] "%d расширений устарело" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "Чтобы установить обновления, перейдите на http://extensions.gnome.org" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "Клавиатура" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "Расширения не установлены" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s не сообщал о каких-либо ошибках." - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "Скрыть ошибки" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "Показать ошибки" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "Включено" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "Выключено" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "Ошибка" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "Устарело" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "Загрузка" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "Показать код" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "Веб-страница" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "Открыть" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "Удалить" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "Уведомления" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "Очистить список сообщений" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "Параметры уведомлений" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "Меню панели" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "Сообщений нет" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "Панель сообщений" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d новое сообщение" -+msgstr[1] "%d новых сообщения" -+msgstr[2] "%d новых сообщений" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "Системная информация" - -@@ -1270,14 +1333,6 @@ - msgid "Unknown" - msgstr "Неизвестное приложение" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d новое сообщение" --msgstr[1] "%d новых сообщения" --msgstr[2] "%d новых сообщений" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "Отменить" -@@ -1289,7 +1344,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "Найти…" -@@ -1299,15 +1354,20 @@ - msgstr "Закрыть" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "Обзор" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - 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:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-intl" -@@ -1326,40 +1386,47 @@ - - # fix для даты в календаре и на экране блокировки - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%A, %d %b., %Y" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d новое уведомление" - msgstr[1] "%d новых уведомления" - msgstr[2] "%d новых уведомлений" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "Заблокировать" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME необходимо заблокировать экран" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "Не удалось заблокировать" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "Блокировке помешало приложение" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "Поиск…" - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "Ничего не найдено." - -@@ -1431,6 +1498,8 @@ - msgid "Large Text" - msgstr "Крупный текст" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "Bluetooth" -@@ -1447,7 +1516,7 @@ - msgstr "Настроить Bluetooth" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "Подключено %d устройство" -@@ -1462,7 +1531,7 @@ - msgid "Brightness" - msgstr "Яркость" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "Показать раскладку клавиатуры" - -@@ -1500,7 +1569,7 @@ - msgstr "Подключено" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "Не управляется" -@@ -1513,19 +1582,19 @@ - msgid "Connecting" - msgstr "Подключение" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "Требуется подтверждение подлинности" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "Отсутствует прошивка" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "Недоступно" -@@ -1610,7 +1679,7 @@ - msgid "connecting..." - msgstr "подключение…" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "требуется подтверждение подлинности" -@@ -1647,19 +1716,25 @@ - msgid "Fully Charged" - msgstr "Полностью заряжена" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "Выполняется подсчёт…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "Осталось %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "Осталось %d ч. %02d мин.\n" -+"Заряд (%d %%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "До полного заряда %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "До полной %d ч. %02d мин.\\n\"\n" -+"Заряжается (%d%%)" - - # Источник Бесперебойного Питания - #: ../js/ui/status/power.js:119 -@@ -1670,6 +1745,9 @@ - msgid "Battery" - msgstr "Батарея" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "Режим авиаперелёта" -@@ -1718,16 +1796,16 @@ - msgid "Unlock Window" - msgstr "Разблокировать окно" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "Приложения" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "Поиск" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "Окно «%s» ожидает" - -@@ -1737,7 +1815,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "Вернуть параметры" -@@ -1747,7 +1825,7 @@ - msgstr "Сохранить изменения" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "Изменения параметров будут отменены через %d секунду" -@@ -1822,20 +1900,20 @@ - msgid "System Sounds" - msgstr "Системные звуки" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "Показать номер версии" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "Режим, используемый GDM для окна входа в систему" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "" - "Использовать для экрана входа в систему определённый режим, например «gdm»" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "Список возможных режимов" - -diff -urN gnome-shell-3.14.4/po/zh_CN.po gnome-shell-3.14.4_localized/po/zh_CN.po ---- gnome-shell-3.14.4/po/zh_CN.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/zh_CN.po 2016-03-11 22:07:50.732000000 +0530 -@@ -15,22 +15,22 @@ - # Tong Hui , 2013, 2014. - # hui , 2013, 2014. - # mosquito , 2014. --# -+# Leah Liu , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell master\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-09-19 13:13+0000\n" --"PO-Revision-Date: 2014-09-23 19:42+0800\n" --"Last-Translator: Yunqiang Su \n" --"Language-Team: Chinese (simplified) \n" --"Language: zh_CN\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-04 05:29+0000\n" -+"Last-Translator: Leah Liu \n" -+"Language-Team: Chinese (simplified) \n" -+"Language: zh-CN\n" - "Plural-Forms: nplurals=1; plural=0;\n" --"X-Generator: Poedit 1.6.9\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -98,9 +98,8 @@ - "list. You can also manipulate this list with the EnableExtension and " - "DisableExtension D-Bus methods on org.gnome.Shell." - msgstr "" --"GNOME Shell 扩展有一个 UUID 属性,此键列出了应该加载的扩展。任何需要加载的扩" --"展都需出现在此列表中。您还可以通过 DBus 的方式对 org.gnome.Shell 里的 " --"EnableExtension 和 DisableExtension 的值进行修改,以修改此列表。" -+"GNOME Shell 扩展有一个 UUID 属性,此键列出了应该加载的扩展。任何需要加载的扩展都需出现在此列表中。您还可以通过 DBus 的方式对 " -+"org.gnome.Shell 里的 EnableExtension 和 DisableExtension 的值进行修改,以修改此列表。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 - msgid "Disables the validation of extension version compatibility" -@@ -111,9 +110,7 @@ - "GNOME Shell will only load extensions that claim to support the current " - "running version. Enabling this option will disable this check and try to " - "load all extensions regardless of the versions they claim to support." --msgstr "" --"GNOME 只会加载声明支持当前运行版本的扩展。启用该选项会禁止此检查,并尝试加载" --"所有扩展,无视它们声明支持的版本。" -+msgstr "GNOME 只会加载声明支持当前运行版本的扩展。启用该选项会禁止此检查,并尝试加载所有扩展,无视它们声明支持的版本。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 - msgid "List of desktop file IDs for favorite applications" -@@ -150,8 +147,7 @@ - msgid "" - "This key overrides the automatic hiding of the 'Log out' menu item in single-" - "user, single-session situations." --msgstr "" --"单用户、单会话情形下,“注销”菜单项默认隐藏,使用这个按键会覆盖这种行为。" -+msgstr "单用户、单会话情形下,“注销”菜单项默认隐藏,使用这个按键会覆盖这种行为。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 - msgid "" -@@ -165,8 +161,8 @@ - "'Remember Password' checkbox will be present. This key sets the default " - "state of the checkbox." - msgstr "" --"挂载加密设备或远程文件系统时 Gnome Shell 将要求输入密码。如果该密码可以记住并" --"在今后使用,则会有“记住密码”复选框出现。这个键设置了该复选框的默认状态。" -+"挂载加密设备或远程文件系统时 Gnome Shell " -+"将要求输入密码。如果该密码可以记住并在今后使用,则会有“记住密码”复选框出现。这个键设置了该复选框的默认状态。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 - msgid "Show the week date in the calendar" -@@ -191,6 +187,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "用于在活动视图中打开“显示应用程序”视图的按键组合。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 -@@ -219,7 +216,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "暂停和恢复所有执行中动画的组合键,用于调试" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 -@@ -247,11 +245,9 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." --msgstr "" --"配置窗口如何显示于切换器中。有效的值有“thumbnail-only”“app-icon-" --"only”和“both”。" -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." -+msgstr "配置窗口如何显示于切换器中。有效的值有“thumbnail-only”“app-icon-only”和“both”。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 - msgid "" -@@ -289,7 +285,7 @@ - msgstr "网页认证" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "载入 %s 的首选想对话框出错:" - -@@ -297,54 +293,68 @@ - msgid "GNOME Shell Extensions" - msgstr "配置 GNOME Shell 扩展" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "取消" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "下一步" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "解锁" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "登录" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "选择会话" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "未列出?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(如 user 或 %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "用户名:" - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "登录窗口" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "认证出错" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(或滑动手指)" - -@@ -352,58 +362,62 @@ - msgid "Command not found" - msgstr "命令未找到" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "不能解析命令:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "运行“%s”失败:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "网页认证重定向" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "常用的应用程序会出现在这里" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "常用" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "全部" - --#: ../js/ui/appDisplay.js:1790 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "新窗口" - --#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "从收藏夹中移除" - --#: ../js/ui/appDisplay.js:1822 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "添加到收藏夹" - --#: ../js/ui/appDisplay.js:1831 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "显示细节" - --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s 已经添加到了您的收藏夹。" - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s 已经从您的收藏夹移除。" - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "设置" -@@ -414,69 +428,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "全天" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%p %-l:%M" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "日" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "一" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "二" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "三" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "四" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "五" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "六" -@@ -486,86 +500,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "周日" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "周一" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "周二" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "周三" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "周四" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "周五" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "周六" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "上个月" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "下个月" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "无计划" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%m月%d日 %A" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%Y年%m月%d日 %A" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "今天" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "明天" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "本周" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "下周" - -@@ -582,7 +596,7 @@ - msgstr "可移动设备" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "使用 %s 打开" - -@@ -603,6 +617,7 @@ - msgid "Connect" - msgstr "连接" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -611,6 +626,7 @@ - msgid "Password: " - msgstr "密码:" - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "密钥:" -@@ -632,7 +648,7 @@ - msgstr "无线网络要求身份认证" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -667,7 +683,7 @@ - msgstr "移动宽带网络密码" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "连接到“%s”需要密码。" - -@@ -686,19 +702,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "抱歉,您的输入有误。请重试。" - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "邀请" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "呼叫" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "文件传送" -@@ -715,87 +735,95 @@ - msgid "Mute" - msgstr "静音" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "昨天 %H:%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "昨天,%H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A %H:%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%m月%d日, %H:%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%Y年%m月%d日, %H:%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d %Y, %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%p %-l:%M" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "昨天%p %-l:%M" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "昨天,%l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A%p %-l:%M" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%m月%d日%p %-l:%M" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%Y年%m月%d日,%p %-l:%M" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s 现在叫做 %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "邀请 %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s 要请您加入 %s" - -@@ -812,19 +840,19 @@ - msgid "Accept" - msgstr "接受" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "来自 %s 的视频呼叫" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "来自 %s 的呼叫" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "接听" -@@ -833,15 +861,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s 正在向您发送 %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s 想得到授权来查看您的在线状态" - -@@ -946,9 +974,9 @@ - msgstr "内部错误" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "无法连接到 %s" - -@@ -960,7 +988,7 @@ - msgid "Unknown reason" - msgstr "未知原因" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "窗口" - -@@ -968,31 +996,33 @@ - msgid "Show Applications" - msgstr "显示应用程序" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" - --#: ../js/ui/dateMenu.js:96 -+#: ../js/ui/dateMenu.js:97 - msgid "Open Calendar" - msgstr "打开日历" - --#: ../js/ui/dateMenu.js:100 -+#: ../js/ui/dateMenu.js:101 - msgid "Open Clocks" - msgstr "打开时钟" - --#: ../js/ui/dateMenu.js:107 -+#: ../js/ui/dateMenu.js:108 - msgid "Date & Time Settings" - msgstr "日期和时间设置" - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ --#: ../js/ui/dateMenu.js:204 -+#. -+#: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%Y年%m月%d日%A" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "注销 %s" -@@ -1003,13 +1033,13 @@ - msgstr "注销" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s 将在 %d 秒后自动注销。" - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "您将在 %d 秒后自动注销。" -@@ -1030,7 +1060,7 @@ - msgstr "安装更新并关机" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "系统将在 %d 秒后自动关机。" -@@ -1056,7 +1086,7 @@ - msgstr "重启" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "系统将在 %d 秒后自动重启。" -@@ -1067,8 +1097,9 @@ - msgstr "重启并安装更新" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "系统将在 %d 秒后自动重启并安装更新。" -@@ -1100,15 +1131,15 @@ - msgid "Other users are logged in." - msgstr "有其他用户登录。" - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (远程)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (控制台)" - -@@ -1117,99 +1148,116 @@ - msgstr "安装" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "从 extensions.gnome.org 下载并安装“%s”?" - --#: ../js/ui/keyboard.js:692 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d 扩展已过期" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "您可以访问 http://extensions.gnome.org 查看更新" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "键盘" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "未安装扩展" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s 没有传出任何错误信息。" - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "隐藏错误" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "显示错误" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "已启用" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "已禁用" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "错误" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "过时" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "正在下载" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "查看源" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "网页" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "打开" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "移除" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "提示" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "清空消息" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "通知设置" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "托盘菜单" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "无消息" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "消息托盘" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d 条新消息" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "系统信息" - -@@ -1218,12 +1266,6 @@ - msgid "Unknown" - msgstr "未知" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d 条新消息" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "撤销" -@@ -1235,7 +1277,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "输入以搜索..." -@@ -1245,15 +1287,20 @@ - msgstr "退出" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "活动" - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - 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:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-us" -@@ -1271,38 +1318,45 @@ - msgstr "正在重新启动..." - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%m月%d日 %A" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d 条新通知" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "锁定" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME 需要锁定屏幕" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "无法锁定" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "一个应用程序阻止了锁定" - --#: ../js/ui/search.js:594 -+#: ../js/ui/search.js:611 - msgid "Searching…" - msgstr "正在搜索..." - --#: ../js/ui/search.js:596 -+#: ../js/ui/search.js:613 - msgid "No results." - msgstr "无结果。" - -@@ -1374,6 +1428,8 @@ - msgid "Large Text" - msgstr "大号文本" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "蓝牙" -@@ -1390,7 +1446,7 @@ - msgstr "蓝牙设置" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "已连接 %d 台设备" -@@ -1403,7 +1459,7 @@ - msgid "Brightness" - msgstr "亮度" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "显示键盘布局" - -@@ -1441,7 +1497,7 @@ - msgstr "已连接" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "未托管" -@@ -1454,19 +1510,19 @@ - msgid "Connecting" - msgstr "正在连接" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "需要认证" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "固件缺失" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "不可用" -@@ -1551,7 +1607,7 @@ - msgid "connecting..." - msgstr "正在连接..." - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "需要认证" -@@ -1588,19 +1644,23 @@ - msgid "Fully Charged" - msgstr "已充满电" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "正在估计..." - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "剩余 %d:%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d 剩余 (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "距充满还剩 %d:%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d\\u2236%02d 直至全满 (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1610,6 +1670,9 @@ - msgid "Battery" - msgstr "电池" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "乘机模式" -@@ -1658,16 +1721,16 @@ - msgid "Unlock Window" - msgstr "解锁窗口" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "应用程序" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "搜索" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "“%s”已就绪" - -@@ -1677,7 +1740,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "还原设置" -@@ -1687,7 +1750,7 @@ - msgstr "保留更改" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "设置更改将在 %d 后还原" -@@ -1756,19 +1819,19 @@ - msgid "System Sounds" - msgstr "系统声音" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "打印版本" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "GDM 用于登录屏幕的模式" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "使用指定模式,如 “gdm”用于登录屏幕的模式" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "列出可用的模式" - -@@ -1788,396 +1851,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "认证对话框被用户驳回" -- --#~ msgctxt "event list time" --#~ msgid "%H:%M" --#~ msgstr "%H:%M" -- --#~ msgid "%H:%M" --#~ msgstr "%H:%M" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "最大位置精度。" -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "配置应用程序可见的最大位置精度级别。有效选项有“off”(禁止追踪位" --#~ "置)、“country”(国家)、“city”(城市)、“neighborhood”(邻近)、“street”(街道)、" --#~ "和“exact”(精确,通常需要 GPS 传感器)。注意,这一选项只控制 Geoclue 让应用" --#~ "程序知道多少,但程序自己可以自行通过网络资源找到用户的位置(即使最多精确到" --#~ "街道)。" -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "标题栏上的按钮排列" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "当 GNOME Shell 运行时,此键会覆盖 org.gnome.desktop.wm.preferences 键。" -- --#~ msgid "Extension" --#~ msgstr "扩展" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "使用上面的下拉框选择一个要配置的扩展。" -- --#~ msgid "calendar:MY" --#~ msgstr "日历:我" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A %H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%B %H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%Y年%B%d日 %H:%M " -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "应显示为文件夹的类别列表" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "在应用程序视图中,这个列表中的每个类别的名称都会显示为文件夹,而不是在主视" --#~ "图中内嵌显示。" -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u2236%M\\u2009%p" -- --#~ msgid "Authorization request from %s" --#~ msgstr "来自 %s 的认证请求" -- --#~ msgid "Device %s wants to pair with this computer" --#~ msgstr "设备 %s 希望与此电脑配对" -- --#~ msgid "Allow" --#~ msgstr "允许" -- --#~ msgid "Deny" --#~ msgstr "拒绝" -- --#~ msgid "Device %s wants access to the service '%s'" --#~ msgstr "设备 %s 希望访问 %s 服务" -- --#~ msgid "Always grant access" --#~ msgstr "始终允许" -- --#~ msgid "Grant this time only" --#~ msgstr "允许一次" -- --#~ msgid "Reject" --#~ msgstr "拒绝" -- --#~ msgid "Pairing confirmation for %s" --#~ msgstr "%s 的配对确认" -- --#~ msgid "" --#~ "Please confirm whether the Passkey '%06d' matches the one on the device." --#~ msgstr "请确认密钥“%06d”是否与设备上的相符。" -- --#~ msgid "Matches" --#~ msgstr "相同" -- --#~ msgid "Does not match" --#~ msgstr "不同" -- --#~ msgid "Pairing request for %s" --#~ msgstr "%s 的配对请求" -- --#~ msgid "Please enter the PIN mentioned on the device." --#~ msgstr "请输入设备上的 PIN 码。" -- --#~ msgid "OK" --#~ msgstr "确定" -- --#~ msgid "" --#~ "Sorry, no wisdom for you today:\n" --#~ "%s" --#~ msgstr "" --#~ "抱歉,今天没有学问给你:\n" --#~ "%s" -- --#~ msgid "%s the Oracle says" --#~ msgstr "预言家 %s 说" -- --#~ msgid "" --#~ "Internally used to store the last IM presence explicitly set by the user. " --#~ "The value here is from the TpConnectionPresenceType enumeration." --#~ msgstr "" --#~ "用于内部保存用户自主设置的即时通信程序上次的在线状态。这里的值取自 " --#~ "TpConnectionPresenceType 枚举变量。" -- --#~ msgid "" --#~ "Internally used to store the last session presence status for the user. " --#~ "The value here is from the GsmPresenceStatus enumeration." --#~ msgstr "" --#~ "用于内部保存上次会话用户的在线状态。这里的值取自 GsmPresenceStatus 枚举变" --#~ "量。" -- --#~ msgid "Session" --#~ msgstr "会话" -- --#~ msgid "Click Log Out to quit these applications and log out of the system." --#~ msgstr "点“注销“来退出这些应用程序及系统" -- --#~ msgid "Logging out of the system." --#~ msgstr "从系统注销" -- --#~ msgid "Click Power Off to quit these applications and power off the system." --#~ msgstr "点击关机以退出应用程序并关闭系统。" -- --#~ msgid "Powering off the system." --#~ msgstr "关闭系统。" -- --#~ msgid "Click Restart to quit these applications and restart the system." --#~ msgstr "点“重启”来退出这些应用程序并重启系统。" -- --#~ msgid "Restarting the system." --#~ msgstr "正在重启系统。" -- --#, fuzzy --#~| msgid "Settings" --#~ msgid "Settings Menu" --#~ msgstr "设置" -- --#~ msgid "Shutting down might cause them to lose unsaved work." --#~ msgstr "关机可能导致他们丢失尚未保存的工作内容。" -- --#~ msgid "Screenshots" --#~ msgstr "屏幕截图" -- --#~ msgid "Record a screencast" --#~ msgstr "屏幕录像" -- --#~ msgid "Keybinding to toggle the screen recorder" --#~ msgstr "用来开关屏幕录像程序的快捷键" -- --#~ msgid "Keybinding to start/stop the builtin screen recorder." --#~ msgstr "用来启用/停止内嵌屏幕录像程序的快捷键。" -- --#~ msgid "Framerate used for recording screencasts." --#~ msgstr "屏幕录像的帧率。" -- --#~ msgid "" --#~ "The framerate of the resulting screencast recordered by GNOME Shell's " --#~ "screencast recorder in frames-per-second." --#~ msgstr "GNOME Shell 的屏幕录像程序录制的屏幕录像的帧率,以 帧/秒 为格式。" -- --#~ msgid "The gstreamer pipeline used to encode the screencast" --#~ msgstr "用于编码屏幕录像的 GStreamer 管道" -- --#~ 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 'vp8enc min_quantizer=13 max_quantizer=13 " --#~ "cpu-used=5 deadline=1000000 threads=%T ! queue ! webmmux' and records to " --#~ "WEBM using the VP8 codec. %T is used as a placeholder for a guess at the " --#~ "optimal thread count on the system." --#~ msgstr "" --#~ "设置用来编码录像的 GStreamer 管道。它遵循 gst-launch 的语法。该管道应当有" --#~ "一个未连接的 sink 衬垫(pad),录制的视频就是在此录制的。该管道一般还会有一" --#~ "个未连接的 source 衬垫(pad);这个衬垫的输出将被写入输出文件中。但是管道还" --#~ "能够处理自己的输出 - 这将用来通过 shout2send 或者类似方法把输出发送到一个 " --#~ "icecast 服务器。当管道未被设置或者设置为空值时,将使用默认的管道。其值当前" --#~ "为“vp8enc min_quantizer=13 max_quantizer=13 cpu-used=5 deadline=1000000 " --#~ "threads=%T ! queue ! webmmux”并输出为 VP8 编码的 WebM 格式。这里的 %T 是一" --#~ "个占位符,其实际值是根据您系统的情况估计的线程数。" -- --#~ msgid "File extension used for storing the screencast" --#~ msgstr "存储屏幕录像的文件扩展名" -- --#~ 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 "" --#~ "录制的屏幕录像的文件名将是根据当前时间得到的独特值,并使用这个扩展名。录制" --#~ "另外一个不同容器格式的录像时,它应该被更改。" -- --#~ msgid "Power" --#~ msgstr "电源" -- --#~ msgid "Restart" --#~ msgstr "重启" -- --#~ msgid "Screencast from %d %t" --#~ msgstr "%d %t 的屏幕录像" -- --#~ msgid "Volume, network, battery" --#~ msgstr "Volume, network, battery, 卷, 网络, 电源" -- --#~ msgid "Universal Access Settings" --#~ msgstr "通用访问设置" -- --#~ msgid "Visibility" --#~ msgstr "可见性" -- --#~ msgid "Send Files to Device…" --#~ msgstr "发送文件到设备..." -- --#~ msgid "Set Up a New Device…" --#~ msgstr "安装新设备..." -- --#~ msgid "Send Files…" --#~ msgstr "发送文件..." -- --#~ msgid "Keyboard Settings" --#~ msgstr "键盘设置" -- --#~ msgid "Mouse Settings" --#~ msgstr "鼠标设置" -- --#~ msgid "Sound Settings" --#~ msgstr "声音设置" -- --#~ msgid "Region & Language Settings" --#~ msgstr "区域和语言设置" -- --#~ msgid "Wi-Fi" --#~ msgstr "Wi-Fi" -- --#~ msgid "disabled" --#~ msgstr "已禁用" -- --#~ msgid "More…" --#~ msgstr "更多..." -- --#~ msgid "Wired" --#~ msgstr "有线" -- --#~ msgid "Networking is disabled" --#~ msgstr "联网已禁用" -- --#~ msgid "%d hour remaining" --#~ msgid_plural "%d hours remaining" --#~ msgstr[0] "剩余 %d 小时" -- --#~ msgid "%d %s %d %s remaining" --#~ msgstr "剩余 %d %s %d %s" -- --#~ msgid "hour" --#~ msgid_plural "hours" --#~ msgstr[0] "小时" -- --#~ msgid "minute" --#~ msgid_plural "minutes" --#~ msgstr[0] "分钟" -- --#~ msgid "%d minute remaining" --#~ msgid_plural "%d minutes remaining" --#~ msgstr[0] "剩余 %d 分钟" -- --#~ msgctxt "percent of battery remaining" --#~ msgid "%d%%" --#~ msgstr "%d%%" -- --#~ msgid "AC Adapter" --#~ msgstr "AC 适配器" -- --#~ msgid "Laptop Battery" --#~ msgstr "笔记本电池" -- --#~ msgid "Monitor" --#~ msgstr "显示器" -- --#~ msgid "Mouse" --#~ msgstr "鼠标" -- --#~ msgid "PDA" --#~ msgstr "PDA" -- --#~ msgid "Cell Phone" --#~ msgstr "手机" -- --#~ msgid "Media Player" --#~ msgstr "媒体播放器" -- --#~ msgid "Tablet" --#~ msgstr "触摸板" -- --#~ msgid "Computer" --#~ msgstr "计算机" -- --#~ msgctxt "device" --#~ msgid "Unknown" --#~ msgstr "未知" -- --#~ msgid "Available" --#~ msgstr "可用" -- --#~ msgid "Busy" --#~ msgstr "忙碌" -- --#~ msgid "Invisible" --#~ msgstr "隐身" -- --#~ msgid "Away" --#~ msgstr "离开" -- --#~ msgid "Idle" --#~ msgstr "空闲" -- --#~ msgid "Your chat status will be set to busy" --#~ msgstr "您的聊天状态将被设置为忙碌" -- --#~ msgid "" --#~ "Notifications are now disabled, including chat messages. Your online " --#~ "status has been adjusted to let others know that you might not see their " --#~ "messages." --#~ msgstr "" --#~ "提示现已禁用,聊天消息也同时被禁用。您的在线状态已被自动调整,以便他人知道" --#~ "您可能无法看到消息。" -- --#~ msgid "cable unplugged" --#~ msgstr "线缆被拔出" -- --#~ msgid "Whether to collect stats about applications usage" --#~ msgstr "是否收集应用程序的使用情况" -- --#~ 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 "" --#~ "Gnome Shell 一般将监视活动应用程序,以便呈现最常用的(例如,在启动器中)。同" --#~ "时,此数据将保持私密,您可能因为隐私原因想要禁用此项。请注意,这么做,并不" --#~ "会移除已经保存的数据。" -- --#~ msgid "Auto Ethernet" --#~ msgstr "自动以太网" -- --#~ msgid "Auto broadband" --#~ msgstr "自动移动宽带" -- --#~ msgid "Auto dial-up" --#~ msgstr "自动拨号" -- --#~ msgid "Auto %s" --#~ msgstr "自动 %s" -- --#~ msgid "Auto bluetooth" --#~ msgstr "自动蓝牙" -- --#~ msgid "Auto wireless" --#~ msgstr "自动无线" -diff -urN gnome-shell-3.14.4/po/zh_TW.po gnome-shell-3.14.4_localized/po/zh_TW.po ---- gnome-shell-3.14.4/po/zh_TW.po 2015-03-23 23:39:15.000000000 +0530 -+++ gnome-shell-3.14.4_localized/po/zh_TW.po 2016-03-11 22:07:50.749000000 +0530 -@@ -3,22 +3,22 @@ - # This file is distributed under the same license as the gnome-shell package. - # Chao-Hsiung Liao , 2010. - # Wei-Lun Chao , 2010. --# -+# ccheng , 2016. #zanata -+# pnemade , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell 3.3.90\n" --"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" --"shell&keywords=I18N+L10N&component=general\n" --"POT-Creation-Date: 2014-10-02 07:43+0000\n" --"PO-Revision-Date: 2014-10-02 20:02+0800\n" --"Last-Translator: Cheng-Chia Tseng \n" --"Language-Team: Chinese (Taiwan) \n" --"Language: zh_TW\n" -+"Report-Msgid-Bugs-To: \n" -+"POT-Creation-Date: 2016-02-10 14:02+0530\n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" -+"PO-Revision-Date: 2016-03-04 04:32+0000\n" -+"Last-Translator: ccheng \n" -+"Language-Team: Chinese (Taiwan) \n" -+"Language: zh-TW\n" - "Plural-Forms: nplurals=1; plural=0;\n" --"X-Generator: Poedit 1.5.4\n" -+"X-Generator: Zanata 3.8.2\n" - - #: ../data/50-gnome-shell-system.xml.in.h:1 - msgid "System" -@@ -86,9 +86,8 @@ - "list. You can also manipulate this list with the EnableExtension and " - "DisableExtension D-Bus methods on org.gnome.Shell." - msgstr "" --"GNOME Shell 擴充功能有 UUID 屬性;這個設定鍵列出了應載入的擴充功能。任何要載" --"入的擴充功能都要出現在這個清單中。您也可以用 org.gnome.Shell 中的 " --"EnableExtension 和 DisableExtension D-Bus 方法來操作這個清單。" -+"GNOME Shell 擴充功能有 UUID 屬性;這個設定鍵列出了應載入的擴充功能。任何要載入的擴充功能都要出現在這個清單中。您也可以用 org." -+"gnome.Shell 中的 EnableExtension 和 DisableExtension D-Bus 方法來操作這個清單。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:5 - msgid "Disables the validation of extension version compatibility" -@@ -100,8 +99,7 @@ - "running version. Enabling this option will disable this check and try to " - "load all extensions regardless of the versions they claim to support." - msgstr "" --"GNOME Shell 只會載入宣稱支援目前運行中版本的擴充功能。啟用此選項會停用這項檢" --"查,並嘗試載入所有的擴充功能,而不去管它們所宣稱支援的版本為何。" -+"GNOME Shell 只會載入宣稱支援目前運行中版本的擴充功能。啟用此選項會停用這項檢查,並嘗試載入所有的擴充功能,而不去管它們所宣稱支援的版本為何。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:7 - msgid "List of desktop file IDs for favorite applications" -@@ -137,8 +135,7 @@ - msgid "" - "This key overrides the automatic hiding of the 'Log out' menu item in single-" - "user, single-session situations." --msgstr "" --"這個設定鍵會覆蓋在單一使用者、單一作業階段情況下對「登出」選單項目的隱藏。" -+msgstr "這個設定鍵會覆蓋在單一使用者、單一作業階段情況下對「登出」選單項目的隱藏。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:15 - msgid "" -@@ -151,9 +148,7 @@ - "filesystem is mounted. If the password can be saved for future use a " - "'Remember Password' checkbox will be present. This key sets the default " - "state of the checkbox." --msgstr "" --"當掛載加密裝置或遠端檔案系統時會要求密碼。如果密碼可以被儲存以供未來使用時會" --"顯示「記住密碼」。這個設定鍵設定了核取方塊的預設狀態。" -+msgstr "當掛載加密裝置或遠端檔案系統時會要求密碼。如果密碼可以被儲存以供未來使用時會顯示「記住密碼」。這個設定鍵設定了核取方塊的預設狀態。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:17 - msgid "Show the week date in the calendar" -@@ -178,6 +173,7 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:22 - msgid "" - "Keybinding to open the \"Show Applications\" view of the Activities Overview." -+"" - msgstr "開啟活動概覽「顯示應用程式」檢視的組合鍵" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:23 -@@ -206,7 +202,8 @@ - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:29 - msgid "" --"Keybinding that pauses and resumes all running tweens, for debugging purposes" -+"Keybinding that pauses and resumes all running tweens, for debugging " -+"purposes" - msgstr "暫停與恢復執行中重複項的組合鍵,用於除錯用途" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:30 -@@ -225,9 +222,7 @@ - msgid "" - "If true, only applications that have windows on the current workspace are " - "shown in the switcher. Otherwise, all applications are included." --msgstr "" --"如果設定為「true」,切換器將僅顯示目前工作區中的應用程式視窗。否則,所有的應" --"用程式都會包含在內。" -+msgstr "如果設定為「true」,切換器將僅顯示目前工作區中的應用程式視窗。否則,所有的應用程式都會包含在內。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:34 - msgid "The application icon mode." -@@ -236,19 +231,17 @@ - #: ../data/org.gnome.shell.gschema.xml.in.in.h:35 - msgid "" - "Configures how the windows are shown in the switcher. Valid possibilities " --"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-" --"only' (shows only the application icon) or 'both'." -+"are 'thumbnail-only' (shows a thumbnail of the window), 'app-icon-only' " -+"(shows only the application icon) or 'both'." - msgstr "" --"設定視窗在切換器中如何顯示。有效的數值為「thumbnail-only」(顯示視窗縮圖)、" --"「app-icon-only」(只顯示應用程式圖示) 或「both」。" -+"設定視窗在切換器中如何顯示。有效的數值為「thumbnail-only」(顯示視窗縮圖)、「app-icon-only」(只顯示應用程式圖示) " -+"或「both」。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:36 - msgid "" - "If true, only windows from the current workspace are shown in the switcher. " - "Otherwise, all windows are included." --msgstr "" --"如果設定為「true」,切換器將僅顯示目前工作區中的視窗。否則,所有的視窗都會包" --"含在內。" -+msgstr "如果設定為「true」,切換器將僅顯示目前工作區中的視窗。否則,所有的視窗都會包含在內。" - - #: ../data/org.gnome.shell.gschema.xml.in.in.h:37 - msgid "Attach modal dialog to the parent window" -@@ -280,7 +273,7 @@ - msgstr "網頁入口管制" - - #: ../js/extensionPrefs/main.js:123 --#, javascript-format -+#, c-format - msgid "There was an error loading the preferences dialog for %s:" - msgstr "載入 %s 的偏好設定對話盒時發生錯誤:" - -@@ -288,54 +281,68 @@ - msgid "GNOME Shell Extensions" - msgstr "GNOME Shell 擴充功能" - --#: ../js/gdm/authPrompt.js:147 ../js/ui/components/networkAgent.js:143 -+#: ../js/gdm/authPrompt.js:159 ../js/ui/components/networkAgent.js:143 - #: ../js/ui/components/polkitAgent.js:166 ../js/ui/endSessionDialog.js:452 - #: ../js/ui/extensionDownloader.js:195 ../js/ui/shellMountOperation.js:399 - #: ../js/ui/status/network.js:915 - msgid "Cancel" - msgstr "取消" - --#: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:217 -+#: ../js/gdm/authPrompt.js:181 ../js/gdm/authPrompt.js:228 -+#: ../js/gdm/authPrompt.js:466 - msgid "Next" - msgstr "下一個" - --#: ../js/gdm/authPrompt.js:213 ../js/ui/shellMountOperation.js:403 -+#: ../js/gdm/authPrompt.js:224 ../js/ui/shellMountOperation.js:403 - #: ../js/ui/unlockDialog.js:59 - msgid "Unlock" - msgstr "解鎖" - --#: ../js/gdm/authPrompt.js:215 -+#: ../js/gdm/authPrompt.js:226 - msgctxt "button" - msgid "Sign In" - msgstr "登入" - --#: ../js/gdm/loginDialog.js:269 -+#: ../js/gdm/loginDialog.js:297 - msgid "Choose Session" - msgstr "選擇作業階段" - --#: ../js/gdm/loginDialog.js:429 -+#. translators: this message is shown below the user list on the -+#. login screen. It can be activated to reveal an entry for -+#. manually entering the username. -+#: ../js/gdm/loginDialog.js:458 - msgid "Not listed?" - msgstr "沒有列出來?" - --#: ../js/gdm/loginDialog.js:614 --#, javascript-format -+#. Translators: this message is shown below the username entry field -+#. to clue the user in on how to login to the local network realm -+#: ../js/gdm/loginDialog.js:859 -+#, c-format - msgid "(e.g., user or %s)" - msgstr "(例如: user 或 %s)" - --#: ../js/gdm/loginDialog.js:619 ../js/ui/components/networkAgent.js:269 -+#. TTLS and PEAP are actually much more complicated, but this complication -+#. is not visible here since we only care about phase2 authentication -+#. (and don't even care of which one) -+#: ../js/gdm/loginDialog.js:864 ../js/ui/components/networkAgent.js:269 - #: ../js/ui/components/networkAgent.js:287 - msgid "Username: " - msgstr "使用者名稱:" - --#: ../js/gdm/loginDialog.js:922 -+#: ../js/gdm/loginDialog.js:1193 - msgid "Login Window" - msgstr "登入視窗" - --#: ../js/gdm/util.js:323 -+#: ../js/gdm/util.js:344 - msgid "Authentication error" - msgstr "核對錯誤" - --#: ../js/gdm/util.js:453 -+#. We don't show fingerprint messages directly since it's -+#. not the main auth service. Instead we use the messages -+#. as a cue to display our own message. -+#. Translators: this message is shown below the password entry field -+#. to indicate the user can swipe their finger instead -+#: ../js/gdm/util.js:483 - msgid "(or swipe finger)" - msgstr "(或是滑過手指)" - -@@ -343,58 +350,62 @@ - msgid "Command not found" - msgstr "找不到指令" - -+#. Replace "Error invoking GLib.shell_parse_argv: " with -+#. something nicer - #: ../js/misc/util.js:148 - msgid "Could not parse command:" - msgstr "無法分析指令:" - - #: ../js/misc/util.js:156 --#, javascript-format -+#, c-format - msgid "Execution of “%s” failed:" - msgstr "執行「%s」失敗:" - -+#. TRANSLATORS: this is the title of the wifi captive portal login -+#. window, until we know the title of the actual login page - #: ../js/portalHelper/main.js:85 - msgid "Web Authentication Redirect" - msgstr "網頁核對重新導向" - --#: ../js/ui/appDisplay.js:772 -+#: ../js/ui/appDisplay.js:773 - msgid "Frequently used applications will appear here" - msgstr "經常使用的應用程式會出現在這裡" - --#: ../js/ui/appDisplay.js:883 -+#: ../js/ui/appDisplay.js:884 - msgid "Frequent" - msgstr "常用" - --#: ../js/ui/appDisplay.js:890 -+#: ../js/ui/appDisplay.js:891 - msgid "All" - msgstr "全部" - --#: ../js/ui/appDisplay.js:1790 -+#: ../js/ui/appDisplay.js:1795 - msgid "New Window" - msgstr "新視窗" - --#: ../js/ui/appDisplay.js:1816 ../js/ui/dash.js:285 -+#: ../js/ui/appDisplay.js:1821 ../js/ui/dash.js:285 - msgid "Remove from Favorites" - msgstr "自喜好中移除" - --#: ../js/ui/appDisplay.js:1822 -+#: ../js/ui/appDisplay.js:1827 - msgid "Add to Favorites" - msgstr "加入喜好" - --#: ../js/ui/appDisplay.js:1831 -+#: ../js/ui/appDisplay.js:1836 - msgid "Show Details" - msgstr "顯示詳細資訊" - --#: ../js/ui/appFavorites.js:132 --#, javascript-format -+#: ../js/ui/appFavorites.js:133 -+#, c-format - msgid "%s has been added to your favorites." - msgstr "%s 已加入您的喜好中。" - --#: ../js/ui/appFavorites.js:166 --#, javascript-format -+#: ../js/ui/appFavorites.js:167 -+#, c-format - msgid "%s has been removed from your favorites." - msgstr "%s 已經從您的喜好中移除。" - --#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:813 -+#: ../js/ui/backgroundMenu.js:19 ../js/ui/panel.js:820 - #: ../js/ui/status/system.js:337 - msgid "Settings" - msgstr "設定值" -@@ -405,69 +416,69 @@ - - #. Translators: Shown in calendar event list for all day events - #. * Keep it short, best if you can use less then 10 characters --#. */ --#: ../js/ui/calendar.js:67 -+#. -+#: ../js/ui/calendar.js:70 - msgctxt "event list time" - msgid "All Day" - msgstr "整天" - - #. Translators: Shown in calendar event list, if 24h format, --#. \u2236 is a ratio character, similar to : */ --#: ../js/ui/calendar.js:73 -+#. \u2236 is a ratio character, similar to : -+#: ../js/ui/calendar.js:77 - msgctxt "event list time" --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is --#. a thin space */ --#: ../js/ui/calendar.js:82 -+#. a thin space -+#: ../js/ui/calendar.js:86 - msgctxt "event list time" --msgid "%l∶%M %p" --msgstr "%p %l∶%M" -+msgid "%l\\u2236%M\\u2009%p" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * - #. * NOTE: These grid abbreviations are always shown together - #. * and in order, e.g. "S M T W T F S". --#. */ --#: ../js/ui/calendar.js:113 -+#. -+#: ../js/ui/calendar.js:100 - msgctxt "grid sunday" - msgid "S" - msgstr "日" - --#. Translators: Calendar grid abbreviation for Monday */ --#: ../js/ui/calendar.js:115 -+#. Translators: Calendar grid abbreviation for Monday -+#: ../js/ui/calendar.js:102 - msgctxt "grid monday" - msgid "M" - msgstr "一" - --#. Translators: Calendar grid abbreviation for Tuesday */ --#: ../js/ui/calendar.js:117 -+#. Translators: Calendar grid abbreviation for Tuesday -+#: ../js/ui/calendar.js:104 - msgctxt "grid tuesday" - msgid "T" - msgstr "二" - --#. Translators: Calendar grid abbreviation for Wednesday */ --#: ../js/ui/calendar.js:119 -+#. Translators: Calendar grid abbreviation for Wednesday -+#: ../js/ui/calendar.js:106 - msgctxt "grid wednesday" - msgid "W" - msgstr "三" - --#. Translators: Calendar grid abbreviation for Thursday */ --#: ../js/ui/calendar.js:121 -+#. Translators: Calendar grid abbreviation for Thursday -+#: ../js/ui/calendar.js:108 - msgctxt "grid thursday" - msgid "T" - msgstr "四" - --#. Translators: Calendar grid abbreviation for Friday */ --#: ../js/ui/calendar.js:123 -+#. Translators: Calendar grid abbreviation for Friday -+#: ../js/ui/calendar.js:110 - msgctxt "grid friday" - msgid "F" - msgstr "五" - --#. Translators: Calendar grid abbreviation for Saturday */ --#: ../js/ui/calendar.js:125 -+#. Translators: Calendar grid abbreviation for Saturday -+#: ../js/ui/calendar.js:112 - msgctxt "grid saturday" - msgid "S" - msgstr "六" -@@ -477,86 +488,86 @@ - #. * NOTE: These list abbreviations are normally not shown together - #. * so they need to be unique (e.g. Tuesday and Thursday cannot - #. * both be 'T'). --#. */ --#: ../js/ui/calendar.js:138 -+#. -+#: ../js/ui/calendar.js:125 - msgctxt "list sunday" - msgid "Su" - msgstr "日" - --#. Translators: Event list abbreviation for Monday */ --#: ../js/ui/calendar.js:140 -+#. Translators: Event list abbreviation for Monday -+#: ../js/ui/calendar.js:127 - msgctxt "list monday" - msgid "M" - msgstr "一" - --#. Translators: Event list abbreviation for Tuesday */ --#: ../js/ui/calendar.js:142 -+#. Translators: Event list abbreviation for Tuesday -+#: ../js/ui/calendar.js:129 - msgctxt "list tuesday" - msgid "T" - msgstr "二" - --#. Translators: Event list abbreviation for Wednesday */ --#: ../js/ui/calendar.js:144 -+#. Translators: Event list abbreviation for Wednesday -+#: ../js/ui/calendar.js:131 - msgctxt "list wednesday" - msgid "W" - msgstr "三" - --#. Translators: Event list abbreviation for Thursday */ --#: ../js/ui/calendar.js:146 -+#. Translators: Event list abbreviation for Thursday -+#: ../js/ui/calendar.js:133 - msgctxt "list thursday" - msgid "Th" - msgstr "四" - --#. Translators: Event list abbreviation for Friday */ --#: ../js/ui/calendar.js:148 -+#. Translators: Event list abbreviation for Friday -+#: ../js/ui/calendar.js:135 - msgctxt "list friday" - msgid "F" - msgstr "五" - --#. Translators: Event list abbreviation for Saturday */ --#: ../js/ui/calendar.js:150 -+#. Translators: Event list abbreviation for Saturday -+#: ../js/ui/calendar.js:137 - msgctxt "list saturday" - msgid "S" - msgstr "六" - --#: ../js/ui/calendar.js:453 -+#: ../js/ui/calendar.js:462 - msgid "Previous month" - msgstr "上個月" - --#: ../js/ui/calendar.js:463 -+#: ../js/ui/calendar.js:472 - msgid "Next month" - msgstr "下個月" - --#. Translators: Text to show if there are no events */ --#: ../js/ui/calendar.js:781 -+#. Translators: Text to show if there are no events -+#: ../js/ui/calendar.js:811 - msgid "Nothing Scheduled" - msgstr "沒有預訂行程" - --#. Translators: Shown on calendar heading when selected day occurs on current year */ --#: ../js/ui/calendar.js:799 -+#. Translators: Shown on calendar heading when selected day occurs on current year -+#: ../js/ui/calendar.js:827 - msgctxt "calendar heading" - msgid "%A, %B %d" - msgstr "%m月%d日%A" - --#. Translators: Shown on calendar heading when selected day occurs on different year */ --#: ../js/ui/calendar.js:802 -+#. Translators: Shown on calendar heading when selected day occurs on different year -+#: ../js/ui/calendar.js:830 - msgctxt "calendar heading" - msgid "%A, %B %d, %Y" - msgstr "%Y年%m月%d日%A" - --#: ../js/ui/calendar.js:813 -+#: ../js/ui/calendar.js:840 - msgid "Today" - msgstr "今天" - --#: ../js/ui/calendar.js:817 -+#: ../js/ui/calendar.js:844 - msgid "Tomorrow" - msgstr "明天" - --#: ../js/ui/calendar.js:828 -+#: ../js/ui/calendar.js:855 - msgid "This week" - msgstr "本週" - --#: ../js/ui/calendar.js:836 -+#: ../js/ui/calendar.js:863 - msgid "Next week" - msgstr "下週" - -@@ -573,7 +584,7 @@ - msgstr "可移除式裝置" - - #: ../js/ui/components/autorunManager.js:596 --#, javascript-format -+#, c-format - msgid "Open with %s" - msgstr "用 %s 開啟" - -@@ -594,6 +605,7 @@ - msgid "Connect" - msgstr "連線" - -+#. Cisco LEAP - #: ../js/ui/components/networkAgent.js:231 - #: ../js/ui/components/networkAgent.js:243 - #: ../js/ui/components/networkAgent.js:271 -@@ -602,6 +614,7 @@ - msgid "Password: " - msgstr "密碼: " - -+#. static WEP - #: ../js/ui/components/networkAgent.js:236 - msgid "Key: " - msgstr "金鑰:" -@@ -623,7 +636,7 @@ - msgstr "無線網路所需要的核對" - - #: ../js/ui/components/networkAgent.js:319 --#, javascript-format -+#, c-format - msgid "" - "Passwords or encryption keys are required to access the wireless network " - "“%s”." -@@ -658,7 +671,7 @@ - msgstr "行動寬頻網路密碼" - - #: ../js/ui/components/networkAgent.js:346 --#, javascript-format -+#, c-format - msgid "A password is required to connect to “%s”." - msgstr "連線至「%s」需要密碼。" - -@@ -677,19 +690,23 @@ - #. Translators: "that didn't work" refers to the fact that the - #. * requested authentication was not gained; this can happen - #. * because of an authentication error (like invalid password), --#. * for instance. */ -+#. * for instance. - #: ../js/ui/components/polkitAgent.js:271 ../js/ui/shellMountOperation.js:383 - msgid "Sorry, that didn't work. Please try again." - msgstr "抱歉,那樣沒有作用。請再試一次。" - -+#. FIXME: We don't have a 'chat room' icon (bgo #653737) use -+#. system-users for now as Empathy does. - #: ../js/ui/components/telepathyClient.js:240 - msgid "Invitation" - msgstr "邀請" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:300 - msgid "Call" - msgstr "通話" - -+#. We got the TpContact - #: ../js/ui/components/telepathyClient.js:316 - msgid "File Transfer" - msgstr "檔案傳輸程式" -@@ -706,87 +723,95 @@ - msgid "Mute" - msgstr "靜音" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --msgid "%H∶%M" --msgstr "%H∶%M" -+msgid "%H\\u2236%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 24h format. i.e. "Yesterday, 14:30" */ -+#. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --msgid "Yesterday, %H∶%M" --msgstr "昨天 %H:%M" -+#, no-c-format -+msgid "Yesterday, %H\\u2236%M" -+msgstr "昨天,%H\\u2236%M" - - #. Translators: this is the week day name followed by a time --#. string in 24h format. i.e. "Monday, 14:30" */ -+#. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --msgid "%A, %H∶%M" --msgstr "%A %H∶%M" -+#, no-c-format -+msgid "%A, %H\\u2236%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. --#. i.e. "May 25, 14:30" */ -+#. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --msgid "%B %d, %H∶%M" --msgstr "%m月%d日 %H∶%M" -+#, no-c-format -+msgid "%B %d, %H\\u2236%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. --#. i.e. "May 25 2012, 14:30" */ -+#. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --msgid "%B %d %Y, %H∶%M" --msgstr "%Y年%m月%d日 %H:%M" -+#, no-c-format -+msgid "%B %d %Y, %H\\u2236%M" -+msgstr "%B %d %Y, %H\\u2236%M" - --#. Translators: Time in 24h format */ -+#. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --msgid "%l∶%M %p" --msgstr "%p %l∶%M" -+msgid "%l\\u2236%M %p" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a --#. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ -+#. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --msgid "Yesterday, %l∶%M %p" --msgstr "昨天 %p %l∶%M" -+#, no-c-format -+msgid "Yesterday, %l\\u2236%M %p" -+msgstr "昨天,%l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time --#. string in 12h format. i.e. "Monday, 2:30 pm" */ -+#. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --msgid "%A, %l∶%M %p" --msgstr "%A%p %l∶%M" -+#, no-c-format -+msgid "%A, %l\\u2236%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. --#. i.e. "May 25, 2:30 pm" */ -+#. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --msgid "%B %d, %l∶%M %p" --msgstr "%m月%d日%p %l∶%M" -+#, no-c-format -+msgid "%B %d, %l\\u2236%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. --#. i.e. "May 25 2012, 2:30 pm"*/ -+#. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --msgid "%B %d %Y, %l∶%M %p" --msgstr "%Y年%m月%d日%p %l∶%M" -+#, no-c-format -+msgid "%B %d %Y, %l\\u2236%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new --#. IM name. */ -+#. IM name. - #: ../js/ui/components/telepathyClient.js:1045 --#, javascript-format -+#, c-format - msgid "%s is now known as %s" - msgstr "%s 現在被稱為 %s" - - #. translators: argument is a room name like --#. * room@jabber.org for example. */ -+#. * room@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1149 --#, javascript-format -+#, c-format - msgid "Invitation to %s" - msgstr "邀請加入 %s" - - #. translators: first argument is the name of a contact and the second - #. * one the name of a room. "Alice is inviting you to join room@jabber.org --#. * for example. */ -+#. * for example. - #: ../js/ui/components/telepathyClient.js:1157 --#, javascript-format -+#, c-format - msgid "%s is inviting you to join %s" - msgstr "%s 正在邀請您加入 %s" - -@@ -803,19 +828,19 @@ - msgid "Accept" - msgstr "接受" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1184 --#, javascript-format -+#, c-format - msgid "Video call from %s" - msgstr "來自 %s 的視訊電話" - --#. translators: argument is a contact name like Alice for example. */ -+#. translators: argument is a contact name like Alice for example. - #: ../js/ui/components/telepathyClient.js:1187 --#, javascript-format -+#, c-format - msgid "Call from %s" - msgstr "%s 來電" - --#. translators: this is a button label (verb), not a noun */ -+#. translators: this is a button label (verb), not a noun - #: ../js/ui/components/telepathyClient.js:1201 - msgid "Answer" - msgstr "接聽" -@@ -824,15 +849,15 @@ - #. * the contact's alias and the second one is the - #. * file name. The string will be something - #. * like: "Alice is sending you test.ogg" --#. */ -+#. - #: ../js/ui/components/telepathyClient.js:1222 --#, javascript-format -+#, c-format - msgid "%s is sending you %s" - msgstr "%s 正傳送給您 %s" - --#. To translators: The parameter is the contact's alias */ -+#. To translators: The parameter is the contact's alias - #: ../js/ui/components/telepathyClient.js:1251 --#, javascript-format -+#, c-format - msgid "%s would like permission to see when you are online" - msgstr "%s 想要得到查看您上線狀態的許可" - -@@ -937,9 +962,9 @@ - msgstr "內部的錯誤" - - #. translators: argument is the account name, like --#. * name@jabber.org for example. */ -+#. * name@jabber.org for example. - #: ../js/ui/components/telepathyClient.js:1393 --#, javascript-format -+#, c-format - msgid "Unable to connect to %s" - msgstr "無法連線到 %s" - -@@ -951,7 +976,7 @@ - msgid "Unknown reason" - msgstr "不明原因" - --#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:154 -+#: ../js/ui/ctrlAltTab.js:29 ../js/ui/viewSelector.js:155 - msgid "Windows" - msgstr "視窗" - -@@ -959,6 +984,8 @@ - msgid "Show Applications" - msgstr "顯示應用程式" - -+#. Translators: this is the name of the dock/favorites area on -+#. the left of the overview - #: ../js/ui/dash.js:445 - msgid "Dash" - msgstr "Dash" -@@ -977,13 +1004,13 @@ - - #. Translators: This is the date format to use when the calendar popup is - #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). --#. */ -+#. - #: ../js/ui/dateMenu.js:132 - msgid "%A %B %e, %Y" - msgstr "%Y年%m月%e日%A" - - #: ../js/ui/endSessionDialog.js:64 --#, javascript-format -+#, c-format - msgctxt "title" - msgid "Log Out %s" - msgstr "登出 %s" -@@ -994,13 +1021,13 @@ - msgstr "登出" - - #: ../js/ui/endSessionDialog.js:67 --#, javascript-format -+#, c-format - msgid "%s will be logged out automatically in %d second." - msgid_plural "%s will be logged out automatically in %d seconds." - msgstr[0] "%s 會在 %d 秒後自動登出。" - - #: ../js/ui/endSessionDialog.js:72 --#, javascript-format -+#, c-format - msgid "You will be logged out automatically in %d second." - msgid_plural "You will be logged out automatically in %d seconds." - msgstr[0] "您會在 %d 秒後自動登出。" -@@ -1021,7 +1048,7 @@ - msgstr "安裝更新並關機" - - #: ../js/ui/endSessionDialog.js:87 --#, javascript-format -+#, c-format - msgid "The system will power off automatically in %d second." - msgid_plural "The system will power off automatically in %d seconds." - msgstr[0] "系統會在 %d 秒後關閉電源。" -@@ -1047,7 +1074,7 @@ - msgstr "重新啟動" - - #: ../js/ui/endSessionDialog.js:105 --#, javascript-format -+#, c-format - msgid "The system will restart automatically in %d second." - msgid_plural "The system will restart automatically in %d seconds." - msgstr[0] "系統會在 %d 秒後自動重新啟動。" -@@ -1058,8 +1085,9 @@ - msgstr "重新啟動並安裝更新" - - #: ../js/ui/endSessionDialog.js:121 --#, javascript-format --msgid "The system will automatically restart and install updates in %d second." -+#, c-format -+msgid "" -+"The system will automatically restart and install updates in %d second." - msgid_plural "" - "The system will automatically restart and install updates in %d seconds." - msgstr[0] "系統會在 %d 秒後自動重新啟動。" -@@ -1091,15 +1119,15 @@ - msgid "Other users are logged in." - msgstr "其他使用者已登入。" - --#. Translators: Remote here refers to a remote session, like a ssh login */ -+#. Translators: Remote here refers to a remote session, like a ssh login - #: ../js/ui/endSessionDialog.js:640 --#, javascript-format -+#, c-format - msgid "%s (remote)" - msgstr "%s (遠端)" - --#. Translators: Console here refers to a tty like a VT console */ -+#. Translators: Console here refers to a tty like a VT console - #: ../js/ui/endSessionDialog.js:643 --#, javascript-format -+#, c-format - msgid "%s (console)" - msgstr "%s (主控臺)" - -@@ -1108,99 +1136,116 @@ - msgstr "安裝" - - #: ../js/ui/extensionDownloader.js:204 --#, javascript-format -+#, c-format - msgid "Download and install “%s” from extensions.gnome.org?" - msgstr "是否從 extensions.gnome.org 下載並安裝「%s」?" - --#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:523 -+#: ../js/ui/extensionSystem.js:314 -+#, c-format -+msgid "%d extension is out of date" -+msgid_plural "%d extensions are out of date" -+msgstr[0] "%d 延伸已過期" -+ -+#: ../js/ui/extensionSystem.js:317 -+msgid "You can visit http://extensions.gnome.org for updates" -+msgstr "您可透過 http://extensions.gnome.org 更新" -+ -+#: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" - msgstr "鍵盤" - --#: ../js/ui/lookingGlass.js:643 -+#: ../js/ui/lookingGlass.js:645 - msgid "No extensions installed" - msgstr "沒有安裝擴充功能" - --#. Translators: argument is an extension UUID. */ --#: ../js/ui/lookingGlass.js:697 --#, javascript-format -+#. Translators: argument is an extension UUID. -+#: ../js/ui/lookingGlass.js:699 -+#, c-format - msgid "%s has not emitted any errors." - msgstr "%s 沒有發出任何錯誤。" - --#: ../js/ui/lookingGlass.js:703 -+#: ../js/ui/lookingGlass.js:705 - msgid "Hide Errors" - msgstr "隱藏錯誤" - --#: ../js/ui/lookingGlass.js:707 ../js/ui/lookingGlass.js:767 -+#: ../js/ui/lookingGlass.js:709 ../js/ui/lookingGlass.js:769 - msgid "Show Errors" - msgstr "顯示錯誤" - --#: ../js/ui/lookingGlass.js:716 ../js/ui/status/location.js:71 -+#: ../js/ui/lookingGlass.js:718 ../js/ui/status/location.js:71 - #: ../js/ui/status/location.js:176 - msgid "Enabled" - msgstr "已啟用" - - #. Translators: this is for a network device that cannot be activated --#. because it's disabled by rfkill (airplane mode) */ -+#. because it's disabled by rfkill (airplane mode) - #. translators: - #. * The device has been disabled --#: ../js/ui/lookingGlass.js:719 ../js/ui/status/location.js:179 -+#: ../js/ui/lookingGlass.js:721 ../js/ui/status/location.js:179 - #: ../js/ui/status/network.js:592 ../src/gvc/gvc-mixer-control.c:1830 - msgid "Disabled" - msgstr "已停用" - --#: ../js/ui/lookingGlass.js:721 -+#: ../js/ui/lookingGlass.js:723 - msgid "Error" - msgstr "錯誤" - --#: ../js/ui/lookingGlass.js:723 -+#: ../js/ui/lookingGlass.js:725 - msgid "Out of date" - msgstr "過期" - --#: ../js/ui/lookingGlass.js:725 -+#: ../js/ui/lookingGlass.js:727 - msgid "Downloading" - msgstr "下載中" - --#: ../js/ui/lookingGlass.js:749 -+#: ../js/ui/lookingGlass.js:751 - msgid "View Source" - msgstr "檢示來源" - --#: ../js/ui/lookingGlass.js:758 -+#: ../js/ui/lookingGlass.js:760 - msgid "Web Page" - msgstr "網頁" - --#: ../js/ui/messageTray.js:1327 -+#: ../js/ui/messageTray.js:1334 - msgid "Open" - msgstr "開啟" - --#: ../js/ui/messageTray.js:1334 -+#: ../js/ui/messageTray.js:1341 - msgid "Remove" - msgstr "移除" - --#: ../js/ui/messageTray.js:1631 -+#: ../js/ui/messageTray.js:1638 - msgid "Notifications" - msgstr "通知" - --#: ../js/ui/messageTray.js:1638 -+#: ../js/ui/messageTray.js:1645 - msgid "Clear Messages" - msgstr "清除訊息" - --#: ../js/ui/messageTray.js:1657 -+#: ../js/ui/messageTray.js:1664 - msgid "Notification Settings" - msgstr "通知設定值" - --#: ../js/ui/messageTray.js:1710 -+#: ../js/ui/messageTray.js:1717 - msgid "Tray Menu" - msgstr "系統匣選單" - --#: ../js/ui/messageTray.js:1934 -+#: ../js/ui/messageTray.js:1941 - msgid "No Messages" - msgstr "沒有訊息" - --#: ../js/ui/messageTray.js:1979 -+#: ../js/ui/messageTray.js:1988 - msgid "Message Tray" - msgstr "訊息匣" - --#: ../js/ui/messageTray.js:2992 -+#: ../js/ui/messageTray.js:2447 ../js/ui/overviewControls.js:483 -+#: ../js/ui/screenShield.js:151 -+#, c-format -+msgid "%d new message" -+msgid_plural "%d new messages" -+msgstr[0] "%d 個新訊息" -+ -+#: ../js/ui/messageTray.js:3017 - msgid "System Information" - msgstr "系統資訊" - -@@ -1209,12 +1254,6 @@ - msgid "Unknown" - msgstr "不明" - --#: ../js/ui/overviewControls.js:482 ../js/ui/screenShield.js:151 --#, javascript-format --msgid "%d new message" --msgid_plural "%d new messages" --msgstr[0] "%d 個新訊息" -- - #: ../js/ui/overview.js:84 - msgid "Undo" - msgstr "復原" -@@ -1226,7 +1265,7 @@ - #. Translators: this is the text displayed - #. in the search entry when no search is - #. active; it should not exceed ~30 --#. characters. */ -+#. characters. - #: ../js/ui/overview.js:246 - msgid "Type to search…" - msgstr "輸入以搜尋…" -@@ -1236,15 +1275,20 @@ - msgstr "結束" - - #. Translators: If there is no suitable word for "Activities" --#. in your language, you can use the word for "Overview". */ --#: ../js/ui/panel.js:567 -+#. in your language, you can use the word for "Overview". -+#: ../js/ui/panel.js:574 - msgid "Activities" - msgstr "概覽 " - --#: ../js/ui/panel.js:918 -+#: ../js/ui/panel.js:925 - msgid "Top Bar" - 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:269 - msgid "toggle-switch-us" - msgstr "toggle-switch-us" -@@ -1262,30 +1306,37 @@ - msgstr "重新啟動…" - - #. Translators: This is a time format for a date in --#. long format */ -+#. long format - #: ../js/ui/screenShield.js:88 - msgid "%A, %B %d" - msgstr "%m月%d日%A" - - #: ../js/ui/screenShield.js:153 --#, javascript-format -+#, c-format - msgid "%d new notification" - msgid_plural "%d new notifications" - msgstr[0] "%d 個新通知" - --#: ../js/ui/screenShield.js:472 ../js/ui/status/system.js:345 -+#: ../js/ui/screenShield.js:473 ../js/ui/status/system.js:345 - msgid "Lock" - msgstr "鎖定" - --#: ../js/ui/screenShield.js:706 -+#: ../js/ui/screenShield.js:709 - msgid "GNOME needs to lock the screen" - msgstr "GNOME 需要鎖定螢幕" - --#: ../js/ui/screenShield.js:833 ../js/ui/screenShield.js:1304 -+#. We could not become modal, so we can't activate the -+#. screenshield. The user is probably very upset at this -+#. point, but any application using global grabs is broken -+#. Just tell him to stop using this app -+#. -+#. XXX: another option is to kick the user into the gdm login -+#. screen, where we're not affected by grabs -+#: ../js/ui/screenShield.js:836 ../js/ui/screenShield.js:1312 - msgid "Unable to lock" - msgstr "無法鎖定" - --#: ../js/ui/screenShield.js:834 ../js/ui/screenShield.js:1305 -+#: ../js/ui/screenShield.js:837 ../js/ui/screenShield.js:1313 - msgid "Lock was blocked by an application" - msgstr "鎖定被應用程式阻擋" - -@@ -1365,6 +1416,8 @@ - msgid "Large Text" - msgstr "大型文字" - -+#. The Bluetooth menu only appears when Bluetooth is in use, -+#. so just statically build it with a "Turn Off" menu item. - #: ../js/ui/status/bluetooth.js:49 - msgid "Bluetooth" - msgstr "藍牙" -@@ -1381,7 +1434,7 @@ - msgstr "藍牙設定值" - - #: ../js/ui/status/bluetooth.js:104 --#, javascript-format -+#, c-format - msgid "%d Connected Device" - msgid_plural "%d Connected Devices" - msgstr[0] "%d 已連線的裝置" -@@ -1394,7 +1447,7 @@ - msgid "Brightness" - msgstr "亮度" - --#: ../js/ui/status/keyboard.js:547 -+#: ../js/ui/status/keyboard.js:559 - msgid "Show Keyboard Layout" - msgstr "顯示鍵盤配置" - -@@ -1407,7 +1460,6 @@ - msgstr "停用" - - #: ../js/ui/status/location.js:73 --#| msgid "Power Settings" - msgid "Privacy Settings" - msgstr "隱私設定值" - -@@ -1433,7 +1485,7 @@ - msgstr "已連線" - - #. Translators: this is for network devices that are physically present but are not --#. under NetworkManager's control (and thus cannot be used in the menu) */ -+#. under NetworkManager's control (and thus cannot be used in the menu) - #: ../js/ui/status/network.js:463 - msgid "Unmanaged" - msgstr "未管理" -@@ -1446,19 +1498,19 @@ - msgid "Connecting" - msgstr "連線中" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:474 - msgid "Authentication required" - msgstr "要求核對" - - #. Translators: this is for devices that require some kind of firmware or kernel --#. module, which is missing */ -+#. module, which is missing - #: ../js/ui/status/network.js:482 - msgid "Firmware missing" - msgstr "缺少韌體" - - #. Translators: this is for a network device that cannot be activated (for example it --#. is disabled by rfkill, or it has no coverage */ -+#. is disabled by rfkill, or it has no coverage - #: ../js/ui/status/network.js:486 - msgid "Unavailable" - msgstr "無法使用" -@@ -1543,7 +1595,7 @@ - msgid "connecting..." - msgstr "連線中…" - --#. Translators: this is for network connections that require some kind of key or password */ -+#. Translators: this is for network connections that require some kind of key or password - #: ../js/ui/status/network.js:1412 - msgid "authentication required" - msgstr "要求核對" -@@ -1580,19 +1632,23 @@ - msgid "Fully Charged" - msgstr "已完全充飽" - -+#. 0 is reported when UPower does not have enough data -+#. to estimate battery life - #: ../js/ui/status/power.js:72 ../js/ui/status/power.js:78 - msgid "Estimating…" - msgstr "評估中…" - -+#. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, javascript-format --msgid "%d∶%02d Remaining (%d%%)" --msgstr "剩餘時間 %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Remaining (%d%%)" -+msgstr "%d\\u2236%02d 剩餘 (%d%%)" - -+#. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, javascript-format --msgid "%d∶%02d Until Full (%d%%)" --msgstr "直到充滿還需 %d∶%02d (%d%%)" -+#, c-format -+msgid "%d\\u2236%02d Until Full (%d%%)" -+msgstr "%d\\u2236%02d 直到充滿還需 (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -@@ -1602,6 +1658,9 @@ - msgid "Battery" - msgstr "電池" - -+#. The menu only appears when airplane mode is on, so just -+#. statically build it as if it was on, rather than dynamically -+#. changing the menu contents. - #: ../js/ui/status/rfkill.js:83 - msgid "Airplane Mode" - msgstr "飛安模式" -@@ -1650,16 +1709,16 @@ - msgid "Unlock Window" - msgstr "解鎖視窗" - --#: ../js/ui/viewSelector.js:158 -+#: ../js/ui/viewSelector.js:159 - msgid "Applications" - msgstr "應用程式" - --#: ../js/ui/viewSelector.js:162 -+#: ../js/ui/viewSelector.js:163 - msgid "Search" - msgstr "搜尋" - - #: ../js/ui/windowAttentionHandler.js:19 --#, javascript-format -+#, c-format - msgid "“%s” is ready" - msgstr "「%s」已就緒" - -@@ -1669,7 +1728,7 @@ - - #. Translators: this and the following message should be limited in lenght, - #. to avoid ellipsizing the labels. --#. */ -+#. - #: ../js/ui/windowManager.js:84 - msgid "Revert Settings" - msgstr "還原設定值" -@@ -1679,7 +1738,7 @@ - msgstr "保留變更" - - #: ../js/ui/windowManager.js:107 --#, javascript-format -+#, c-format - msgid "Settings changes will revert in %d second" - msgid_plural "Settings changes will revert in %d seconds" - msgstr[0] "設定值的變更會在 %d 秒內還原" -@@ -1748,19 +1807,19 @@ - msgid "System Sounds" - msgstr "系統音效" - --#: ../src/main.c:373 -+#: ../src/main.c:381 - msgid "Print version" - msgstr "顯示版本" - --#: ../src/main.c:379 -+#: ../src/main.c:387 - msgid "Mode used by GDM for login screen" - msgstr "GDM 在登入畫面使用的模式" - --#: ../src/main.c:385 -+#: ../src/main.c:393 - msgid "Use a specific mode, e.g. \"gdm\" for login screen" - msgstr "使用指定的模式,例如「gdm」為登入畫面" - --#: ../src/main.c:391 -+#: ../src/main.c:399 - msgid "List possible modes" - msgstr "列出可能的模式" - -@@ -1780,123 +1839,3 @@ - #: ../src/shell-polkit-authentication-agent.c:346 - msgid "Authentication dialog was dismissed by the user" - msgstr "核對對話盒被使用者取消了" -- --#~ msgid "The maximum accuracy level of location." --#~ msgstr "地理位置的最高精確等級。" -- --#~ msgid "" --#~ "Configures the maximum level of location accuracy applications are " --#~ "allowed to see. Valid options are 'off' (disable location tracking), " --#~ "'country', 'city', 'neighborhood', 'street', and 'exact' (typically " --#~ "requires GPS receiver). Please keep in mind that this only controls what " --#~ "GeoClue will allow applications to see and they can find user's location " --#~ "on their own using network resources (albeit with street-level accuracy " --#~ "at best)." --#~ msgstr "" --#~ "設定應用程式可查看的地理位置最高精確等級。有效的選項為「off」(停用地理位置" --#~ "追蹤)、「country」(國家)、「city」(縣市)、「neiborhood」(鄰里)、「street」" --#~ "(街路)、「exact」(一般需要 GPS 接收器)。請務必記住這只能控制 GeoClue 所允" --#~ "許應用程式查看的等級,而程式可自行使用本身的網路資源尋找使用者的所在位置 " --#~ "(雖然精確度最高只能到達街路等級)。" -- --#~ msgid "Arrangement of buttons on the titlebar" --#~ msgstr "標題列上的按鈕排列" -- --#~ msgid "" --#~ "This key overrides the key in org.gnome.desktop.wm.preferences when " --#~ "running GNOME Shell." --#~ msgstr "" --#~ "這個設定鍵會在執行 GNOME Shell 時覆蓋 org.gnome.desktop.wm.preferences 中" --#~ "的設定鍵。" -- --#~ msgid "Extension" --#~ msgstr "擴充功能" -- --#~ msgid "Select an extension to configure using the combobox above." --#~ msgstr "使用上面的組合方塊選擇要設定的擴充功能。" -- --#~ msgid "calendar:MY" --#~ msgstr "calendar:MY" -- --#~ msgid "%A, %H:%M" --#~ msgstr "%A%H:%M" -- --#~ msgid "%B %d, %H:%M" --#~ msgstr "%m月%d日%H:%M" -- --#~ msgid "%B %d %Y, %H:%M " --#~ msgstr "%Y年%m月%d日%H:%M " -- --#~ msgid "List of categories that should be displayed as folders" --#~ msgstr "要顯示為資料夾的分類清單" -- --#~ msgid "" --#~ "Each category name in this list will be represented as folder in the " --#~ "application view, rather than being displayed inline in the main view." --#~ msgstr "" --#~ "這個清單中的每個分類名稱都會在應用程式檢視中以資料夾表示,而不是在主要檢視" --#~ "中直接顯示。" -- --#~ msgid "Authorization request from %s" --#~ msgstr "來自「%s」的核對要求" -- --#~ msgid "Device %s wants to pair with this computer" --#~ msgstr "裝置 %s 想要和這個電腦配對" -- --#~ msgid "Allow" --#~ msgstr "允許" -- --#~ msgid "Deny" --#~ msgstr "禁止" -- --#~ msgid "Device %s wants access to the service '%s'" --#~ msgstr "裝置 %s 想要存取服務「%s」" -- --#~ msgid "Always grant access" --#~ msgstr "永遠准許存取" -- --#~ msgid "Grant this time only" --#~ msgstr "只有這次准許" -- --#~ msgid "Reject" --#~ msgstr "拒絕" -- --#~ msgid "Pairing confirmation for %s" --#~ msgstr "%s 的配對確認" -- --#~ msgid "" --#~ "Please confirm whether the Passkey '%06d' matches the one on the device." --#~ msgstr "請確認通行碼「%06d」是否和裝置上的相符。" -- --#~ msgid "Matches" --#~ msgstr "相符" -- --#~ msgid "Does not match" --#~ msgstr "不相符" -- --#~ msgid "Pairing request for %s" --#~ msgstr "%s 的配對請求" -- --#~ msgid "Please enter the PIN mentioned on the device." --#~ msgstr "請輸入裝置所提及的 PIN。" -- --#~ msgid "OK" --#~ msgstr "確定" -- --#~ msgid "" --#~ "Sorry, no wisdom for you today:\n" --#~ "%s" --#~ msgstr "" --#~ "抱歉,今天可能有些問題:\n" --#~ "%s" -- --#~ msgid "%s the Oracle says" --#~ msgstr "%s Oracle 說:" -- --#~ msgctxt "event list time" --#~ msgid "%H\\u2236%M" --#~ msgstr "%H\\u2236%M" -- --#~ msgctxt "event list time" --#~ msgid "%l\\u2236%M\\u2009%p" --#~ msgstr "%l\\u2236%M\\u2009%p" -diff -urN gnome-shell-3.14.4/po/it.po gnome-shell-3.14.4_localized/po/it.po ---- gnome-shell-3.14.4/po/it.po 2016-06-19 11:34:52.159323415 +0530 -+++ gnome-shell-3.14.4_localized/po/it.po 2016-06-19 11:35:04.860322404 +0530 -@@ -6,6 +6,7 @@ - # Milo Casagrande , 2009, 2010, 2012, 2013, 2014. - # Luca Ferretti , 2010, 2011, 2012, 2013, 2014. - # pnemade , 2016. #zanata -+# tchuang , 2016. #zanata - msgid "" - msgstr "" - "Project-Id-Version: gnome-shell\n" -@@ -14,7 +15,7 @@ - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" --"PO-Revision-Date: 2014-10-10 09:01+0000\n" -+"PO-Revision-Date: 2016-06-13 01:46+0000\n" - "Last-Translator: Milo Casagrande \n" - "Language-Team: Italiano \n" - "Language: it\n" -@@ -772,75 +773,73 @@ - - #. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 --#, fuzzy - msgid "%H\\u2236%M" --msgstr "%-H\\u002E%M" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a - #. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --#, fuzzy, no-c-format -+#, no-c-format - msgid "Yesterday, %H\\u2236%M" --msgstr "Ieri, %k.%M" -+msgstr "Ieri, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time - #. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%A, %H\\u2236%M" --msgstr "%-H\\u002E%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. - #. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d, %H\\u2236%M" --msgstr "%-H\\u002E%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. - #. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d %Y, %H\\u2236%M" --msgstr "%e %B %Y, %k.%M" -+msgstr "%B %d %Y, %H\\u2236%M" - - #. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --#, fuzzy - msgid "%l\\u2236%M %p" --msgstr "%-H\\u002E%M" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a - #. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --#, fuzzy, no-c-format -+#, no-c-format - msgid "Yesterday, %l\\u2236%M %p" --msgstr "Ieri, %l.%M %p" -+msgstr "Ieri, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time - #. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%A, %l\\u2236%M %p" --msgstr "%A, %l.%M %p" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. - #. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d, %l\\u2236%M %p" --msgstr "%d %B, %l.%M %p" -+msgstr "%B %d, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. - #. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d %Y, %l\\u2236%M %p" --msgstr "%d %B %Y, %l.%M %p" -+msgstr "%B %d %Y, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new - #. IM name. -@@ -1211,15 +1210,15 @@ - msgstr "Scaricare e installare «%s» da extensions.gnome.org?" - - #: ../js/ui/extensionSystem.js:314 --#, fuzzy, c-format -+#, c-format - msgid "%d extension is out of date" - msgid_plural "%d extensions are out of date" --msgstr[0] "Nessuna estensione installata" --msgstr[1] "Nessuna estensione installata" -+msgstr[0] "l'estensione %d non è aggiornata" -+msgstr[1] "Le estensioni %d non sono aggiornate" - - #: ../js/ui/extensionSystem.js:317 - msgid "You can visit http://extensions.gnome.org for updates" --msgstr "" -+msgstr "Per aggiornamenti, visitare http://extensions.gnome.org" - - #: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" -@@ -1721,16 +1720,16 @@ - - #. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, fuzzy, c-format -+#, c-format - msgid "%d\\u2236%02d Remaining (%d%%)" --msgstr "%d.%02d rimanente (%d%%)" -+msgstr "%d\\u2236%02d rimanente (%d%%)" - - # in stile MacOS sarebbe "al pieno" :P - #. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, fuzzy, c-format -+#, c-format - msgid "%d\\u2236%02d Until Full (%d%%)" --msgstr "%d.%02d alla carica (%d%%)" -+msgstr "%d\\u2236%02d alla carica (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" -diff -urN gnome-shell-3.14.4/po/ko.po gnome-shell-3.14.4_localized/po/ko.po ---- gnome-shell-3.14.4/po/ko.po 2016-06-19 11:34:52.161323415 +0530 -+++ gnome-shell-3.14.4_localized/po/ko.po 2016-06-19 11:35:04.865322404 +0530 -@@ -12,6 +12,7 @@ - # - VPN: 가상사설망 - # - pairing (bluetooth 관련): 페어링 - # - Wayland: 웨일랜드로 음역 -+# eukim , 2016. #zanata - # pnemade , 2016. #zanata - msgid "" - msgstr "" -@@ -21,8 +22,8 @@ - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=UTF-8\n" - "Content-Transfer-Encoding: 8bit\n" --"PO-Revision-Date: 2014-09-17 04:41+0000\n" --"Last-Translator: Changwoo Ryu \n" -+"PO-Revision-Date: 2016-05-24 05:39+0000\n" -+"Last-Translator: eukim \n" - "Language-Team: GNOME Korea \n" - "Language: ko\n" - "Plural-Forms: nplurals=1; plural=0;\n" -@@ -440,7 +441,7 @@ - #: ../js/ui/calendar.js:77 - msgctxt "event list time" - msgid "%H\\u2236%M" --msgstr "" -+msgstr "%H\\u2236%M" - - #. Translators: Shown in calendar event list, if 12h format, - #. \u2236 is a ratio character, similar to : and \u2009 is -@@ -448,7 +449,7 @@ - #: ../js/ui/calendar.js:86 - msgctxt "event list time" - msgid "%l\\u2236%M\\u2009%p" --msgstr "" -+msgstr "%l\\u2236%M\\u2009%p" - - #. Translators: Calendar grid abbreviation for Sunday. - #. * -@@ -739,73 +740,72 @@ - #. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:953 - msgid "%H\\u2236%M" --msgstr "" -+msgstr "%H\\u2236%M" - - #. Translators: this is the word "Yesterday" followed by a - #. time string in 24h format. i.e. "Yesterday, 14:30" - #: ../js/ui/components/telepathyClient.js:960 --#, fuzzy, no-c-format -+#, no-c-format - msgid "Yesterday, %H\\u2236%M" --msgstr "어제, %H:%M" -+msgstr "어제, %H\\u2236%M" - - #. Translators: this is the week day name followed by a time - #. string in 24h format. i.e. "Monday, 14:30" - #: ../js/ui/components/telepathyClient.js:967 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%A, %H\\u2236%M" --msgstr "%A, %H:%M" -+msgstr "%A, %H\\u2236%M" - - #. Translators: this is the month name and day number - #. followed by a time string in 24h format. - #. i.e. "May 25, 14:30" - #: ../js/ui/components/telepathyClient.js:974 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d, %H\\u2236%M" --msgstr "%B %d일, %H∶%M" -+msgstr "%B %d, %H\\u2236%M" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 24h format. - #. i.e. "May 25 2012, 14:30" - #: ../js/ui/components/telepathyClient.js:980 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d %Y, %H\\u2236%M" --msgstr "%Y년 %B %d일, %H∶%M" -+msgstr "%B %d %Y, %H\\u2236%M" - - #. Translators: Time in 24h format - #: ../js/ui/components/telepathyClient.js:986 --#, fuzzy - msgid "%l\\u2236%M %p" --msgstr "%p %l∶%M" -+msgstr "%l\\u2236%M %p" - - #. Translators: this is the word "Yesterday" followed by a - #. time string in 12h format. i.e. "Yesterday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:993 --#, fuzzy, no-c-format -+#, no-c-format - msgid "Yesterday, %l\\u2236%M %p" --msgstr "어제, %p %l∶%M" -+msgstr "어제, %l\\u2236%M %p" - - #. Translators: this is the week day name followed by a time - #. string in 12h format. i.e. "Monday, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1000 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%A, %l\\u2236%M %p" --msgstr "%A, %p %l∶%M" -+msgstr "%A, %l\\u2236%M %p" - - #. Translators: this is the month name and day number - #. followed by a time string in 12h format. - #. i.e. "May 25, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1007 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d, %l\\u2236%M %p" --msgstr "%B %d일, %p %l∶%M" -+msgstr "%B %d일, %l\\u2236%M %p" - - #. Translators: this is the month name, day number, year - #. number followed by a time string in 12h format. - #. i.e. "May 25 2012, 2:30 pm" - #: ../js/ui/components/telepathyClient.js:1013 --#, fuzzy, no-c-format -+#, no-c-format - msgid "%B %d %Y, %l\\u2236%M %p" --msgstr "%Y년 %B %d일, %p %l∶%M" -+msgstr "%Y년 %B %d일, %l\\u2236%M %p" - - #. Translators: this is the other person changing their old IM name to their new - #. IM name. -@@ -1155,14 +1155,14 @@ - msgstr "extensions.gnome.org 사이트에서 “%s” 확장을 다운로드해 설치하시겠습니까?" - - #: ../js/ui/extensionSystem.js:314 --#, fuzzy, c-format -+#, c-format - msgid "%d extension is out of date" - msgid_plural "%d extensions are out of date" --msgstr[0] "확장을 설치하지 않았습니다" -+msgstr[0] "%d 확장이 업데이트되지 않았습니다" - - #: ../js/ui/extensionSystem.js:317 - msgid "You can visit http://extensions.gnome.org for updates" --msgstr "" -+msgstr "http://extensions.gnome.org에서 업데이트할 수 있습니다" - - #: ../js/ui/keyboard.js:700 ../js/ui/status/keyboard.js:535 - msgid "Keyboard" -@@ -1654,15 +1654,15 @@ - - #. Translators: this is : Remaining () - #: ../js/ui/status/power.js:86 --#, fuzzy, c-format -+#, c-format - msgid "%d\\u2236%02d Remaining (%d%%)" --msgstr "%d∶%02d 남음(%d%%)" -+msgstr "%d\\u2236%02d 남음 (%d%%)" - - #. Translators: this is : Until Full () - #: ../js/ui/status/power.js:91 --#, fuzzy, c-format -+#, c-format - msgid "%d\\u2236%02d Until Full (%d%%)" --msgstr "충전까지 %d:%02d(%d%%)" -+msgstr "충전까지 %d\\u2236%02d (%d%%)" - - #: ../js/ui/status/power.js:119 - msgid "UPS" diff --git a/SOURCES/gnome-shell-favourite-apps-firefox.patch b/SOURCES/gnome-shell-favourite-apps-firefox.patch index 7964871..56c498b 100644 --- a/SOURCES/gnome-shell-favourite-apps-firefox.patch +++ b/SOURCES/gnome-shell-favourite-apps-firefox.patch @@ -1,13 +1,13 @@ ---- gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in.in.firefox 2014-08-20 20:28:07.601133033 +0200 -+++ gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in.in 2014-08-20 20:28:41.741503518 +0200 +--- gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in.firefox 2014-08-20 20:28:07.601133033 +0200 ++++ gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in 2014-08-20 20:28:41.741503518 +0200 @@ -31,7 +31,7 @@ - + - [ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] + [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] - <_summary>List of desktop file IDs for favorite applications - <_description> + List of desktop file IDs for favorite applications + The applications corresponding to these identifiers --- a/js/ui/appFavorites.js +++ b/js/ui/appFavorites.js diff --git a/SOURCES/gnome-shell-favourite-apps-terminal.patch b/SOURCES/gnome-shell-favourite-apps-terminal.patch index 7b4e835..5ab9f6b 100644 --- a/SOURCES/gnome-shell-favourite-apps-terminal.patch +++ b/SOURCES/gnome-shell-favourite-apps-terminal.patch @@ -1,12 +1,13 @@ -diff -up gnome-shell-3.8.4/data/org.gnome.shell.gschema.xml.in.in.terminal gnome-shell-3.8.4/data/org.gnome.shell.gschema.xml.in.in ---- gnome-shell-3.8.4/data/org.gnome.shell.gschema.xml.in.in.terminal 2013-12-04 19:55:59.264274478 -0500 -+++ gnome-shell-3.8.4/data/org.gnome.shell.gschema.xml.in.in 2013-12-04 19:56:51.813151886 -0500 -@@ -32,7 +32,7 @@ - +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in +index 1e35ca3..95b8c52 100644 +--- a/data/org.gnome.shell.gschema.xml.in ++++ b/data/org.gnome.shell.gschema.xml.in +@@ -31,7 +31,7 @@ + - [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] + [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop', 'gnome-terminal.desktop' ] - <_summary>List of desktop file IDs for favorite applications - <_description> + List of desktop file IDs for favorite applications + The applications corresponding to these identifiers diff --git a/SOURCES/gnome-shell-favourite-apps-yelp.patch b/SOURCES/gnome-shell-favourite-apps-yelp.patch index 7d68117..09138f0 100644 --- a/SOURCES/gnome-shell-favourite-apps-yelp.patch +++ b/SOURCES/gnome-shell-favourite-apps-yelp.patch @@ -1,26 +1,26 @@ -From 13e92bff3bf4c32476999916280e87cefa5d954b Mon Sep 17 00:00:00 2001 +From bd1b67c5901023dd9919f15a45226e987b4fea42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 1 May 2013 01:33:16 +0200 Subject: [PATCH] Add 'yelp' to default favorites Help should be easily available, so add it to the default favorites. --- - data/org.gnome.shell.gschema.xml.in.in | 2 +- + 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.in b/data/org.gnome.shell.gschema.xml.in.in -index 27adddc..eee70b1 100644 ---- a/data/org.gnome.shell.gschema.xml.in.in -+++ b/data/org.gnome.shell.gschema.xml.in.in -@@ -32,7 +32,7 @@ - +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in +index 9ba2418..1e35ca3 100644 +--- a/data/org.gnome.shell.gschema.xml.in ++++ b/data/org.gnome.shell.gschema.xml.in +@@ -31,7 +31,7 @@ + - [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] + [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] - <_summary>List of desktop file IDs for favorite applications - <_description> + List of desktop file IDs for favorite applications + The applications corresponding to these identifiers -- -1.8.2.1 +1.8.3.1 diff --git a/SOURCES/keep-vpn-list-sorted.patch b/SOURCES/keep-vpn-list-sorted.patch new file mode 100644 index 0000000..ddc0175 --- /dev/null +++ b/SOURCES/keep-vpn-list-sorted.patch @@ -0,0 +1,95 @@ +From ec8c1bbcb97699e51a2aa0306a7811c911f1a930 Mon Sep 17 00:00:00 2001 +From: Benjamin Berg +Date: Mon, 13 Feb 2017 16:02:02 +0100 +Subject: [PATCH 1/2] ui: Allow moving menu items to a certain position + +This function is a helper to simplify keeping menu items ordered when +their order is updated on the fly (e.g. network connections being +renamed). + +https://bugzilla.gnome.org/show_bug.cgi?id=778686 +--- + js/ui/popupMenu.js | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js +index 52a58d6b8..011a95ac0 100644 +--- a/js/ui/popupMenu.js ++++ b/js/ui/popupMenu.js +@@ -605,6 +605,24 @@ const PopupMenuBase = new Lang.Class({ + menuItem.actor.show(); + }, + ++ moveMenuItem: function(menuItem, position) { ++ let items = this._getMenuItems(); ++ let i = 0; ++ ++ while (i < items.length && position > 0) { ++ if (items[i] != menuItem) ++ position--; ++ i++; ++ } ++ ++ if (i < items.length) { ++ if (items[i] != menuItem) ++ this.box.set_child_below_sibling(menuItem.actor, items[i].actor); ++ } else { ++ this.box.set_child_above_sibling(menuItem.actor, null); ++ } ++ }, ++ + addMenuItem: function(menuItem, position) { + let before_item = null; + if (position == undefined) { +-- +2.12.0 + + +From 40bb56b24c95289ee4bfc121cf9405d303a22609 Mon Sep 17 00:00:00 2001 +From: Benjamin Berg +Date: Mon, 13 Feb 2017 14:52:23 +0100 +Subject: [PATCH 2/2] network: Ensure the connection list is sorted after + rename + +Items were inserted correctly but the synchronisation was lost if the +name of a connection was changed. Simply making sure the position is +correct after a connection is updated fixes the issue. + +Reported-by: Oliver Haessler + +https://bugzilla.gnome.org/show_bug.cgi?id=778686 +--- + js/ui/status/network.js | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/js/ui/status/network.js b/js/ui/status/network.js +index c386bff1d..11ca16014 100644 +--- a/js/ui/status/network.js ++++ b/js/ui/status/network.js +@@ -299,11 +299,22 @@ const NMConnectionSection = new Lang.Class({ + + let item = this._connectionItems.get(connection.get_uuid()); + if (item) +- item.updateForConnection(connection); ++ this._updateForConnection(item, connection); + else + this._addConnection(connection); + }, + ++ _updateForConnection: function(item, connection) { ++ let pos = this._connections.indexOf(connection); ++ ++ this._connections.splice(pos, 1); ++ pos = Util.insertSorted(this._connections, connection, Lang.bind(this, this._connectionSortFunction)); ++ this._labelSection.moveMenuItem(item.labelItem, pos); ++ this._radioSection.moveMenuItem(item.radioItem, pos); ++ ++ item.updateForConnection(connection); ++ }, ++ + _addConnection: function(connection) { + let item = this._makeConnectionItem(connection); + if (!item) +-- +2.12.0 + diff --git a/SOURCES/login-screen-backport.patch b/SOURCES/login-screen-backport.patch deleted file mode 100644 index a5d976f..0000000 --- a/SOURCES/login-screen-backport.patch +++ /dev/null @@ -1,1221 +0,0 @@ -From 067ae5de5b42169d0105ce1deb1147f640308d27 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 10 Nov 2014 14:36:07 -0500 -Subject: [PATCH 01/19] loginDialog: allocate children manually - -The login screen is pretty custom full screen container and the standard -layout managers aren't really a good fit for the kind of layout that's -happening. This will be even more problematic with upcoming changes -to login banners, so we need to switch techniques. - -This commit moves login dialog over to using a custom allocate handler -that has specific domain knowledge of the parts of the login screen -and where they go. - -https://bugzilla.gnome.org/show_bug.cgi?id=703972 ---- - js/gdm/loginDialog.js | 94 ++++++++++++++++++++++++++++++++++++++++++++++----- - 1 file changed, 85 insertions(+), 9 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 7fbeb3e..ced6fc2 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -368,12 +368,12 @@ const LoginDialog = new Lang.Class({ - Name: 'LoginDialog', - - _init: function(parentActor) { -- this.actor = new St.Widget({ accessible_role: Atk.Role.WINDOW, -- layout_manager: new Clutter.BinLayout(), -- style_class: 'login-dialog', -- visible: false }); -+ this.actor = new Shell.GenericContainer({ style_class: 'login-dialog', -+ visible: false }); -+ this.actor.get_accessible().set_role(Atk.Role.WINDOW); - - this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true })); -+ this.actor.connect('allocate', Lang.bind(this, this._onAllocate)); - this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); - parentActor.add_child(this.actor); - -@@ -409,8 +409,6 @@ const LoginDialog = new Lang.Class({ - this._userSelectionBox = new St.BoxLayout({ style_class: 'login-dialog-user-selection-box', - x_align: Clutter.ActorAlign.CENTER, - y_align: Clutter.ActorAlign.CENTER, -- x_expand: true, -- y_expand: true, - vertical: true, - visible: false }); - this.actor.add_child(this._userSelectionBox); -@@ -456,9 +454,7 @@ const LoginDialog = new Lang.Class({ - - this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin', - x_align: Clutter.ActorAlign.CENTER, -- y_align: Clutter.ActorAlign.END, -- x_expand: true, -- y_expand: true }); -+ y_align: Clutter.ActorAlign.END }); - this.actor.add_child(this._logoBin); - this._updateLogo(); - -@@ -489,6 +485,86 @@ const LoginDialog = new Lang.Class({ - Lang.bind(this, this._updateDisableUserList)); - }, - -+ _getLogoBinAllocation: function (dialogBox) { -+ let actorBox = new Clutter.ActorBox(); -+ -+ let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size(); -+ let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; -+ -+ actorBox.x1 = centerX - natWidth / 2; -+ actorBox.y1 = dialogBox.y2 - natHeight; -+ actorBox.x2 = actorBox.x1 + natWidth; -+ actorBox.y2 = actorBox.y1 + natHeight; -+ -+ return actorBox; -+ }, -+ -+ _getCenterActorAllocation: function (dialogBox, actor) { -+ let actorBox = new Clutter.ActorBox(); -+ -+ let [minWidth, minHeight, natWidth, natHeight] = actor.get_preferred_size(); -+ let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; -+ let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; -+ -+ actorBox.x1 = centerX - natWidth / 2; -+ actorBox.y1 = centerY - natHeight / 2; -+ actorBox.x2 = actorBox.x1 + natWidth; -+ actorBox.y2 = actorBox.y1 + natHeight; -+ -+ return actorBox; -+ }, -+ -+ _onAllocate: function (actor, dialogBox, flags) { -+ let dialogHeight = dialogBox.y2 - dialogBox.y1; -+ -+ // First find out what space the children require -+ let authPromptAllocation = null; -+ if (this._authPrompt.actor.visible) -+ authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor); -+ -+ let userSelectionAllocation = null; -+ let userSelectionHeight = 0; -+ if (this._userSelectionBox.visible) { -+ userSelectionAllocation = this._getCenterActorAllocation(dialogBox, this._userSelectionBox); -+ userSelectionHeight = userSelectionAllocation.y2 - userSelectionAllocation.y1; -+ } -+ -+ let logoAllocation = null; -+ let logoHeight = 0; -+ if (this._logoBin.visible) { -+ logoAllocation = this._getLogoBinAllocation(dialogBox); -+ logoHeight = logoAllocation.y2 - logoAllocation.y1; -+ } -+ -+ // Then figure out what extra space we can hand out -+ let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; -+ if (leftOverYSpace > 0) { -+ if (userSelectionAllocation) { -+ let topExpansion = leftOverYSpace / 2; -+ -+ // Don't ever expand more than we have space for -+ if (userSelectionAllocation.y1 - topExpansion < 0) -+ topExpansion = userSelectionAllocation.y1; -+ -+ // Always expand the bottom the same as the top since it's centered -+ let bottomExpansion = topExpansion; -+ -+ userSelectionAllocation.y1 -= topExpansion; -+ userSelectionAllocation.y2 += bottomExpansion; -+ } -+ } -+ -+ // Finally hand out the allocations -+ if (authPromptAllocation) -+ this._authPrompt.actor.allocate(authPromptAllocation, flags); -+ -+ if (userSelectionAllocation) -+ this._userSelectionBox.allocate(userSelectionAllocation, flags); -+ -+ if (logoAllocation) -+ this._logoBin.allocate(logoAllocation, flags); -+ }, -+ - _ensureUserListLoaded: function() { - if (!this._userManager.is_loaded) { - this._userManagerLoadedId = this._userManager.connect('notify::is-loaded', --- -2.5.0 - - -From b9975d16c2d253bf5636d6ad95e0c22d2b93d05a Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 11 Nov 2014 09:11:01 -0500 -Subject: [PATCH 02/19] loginDialog: display banner message when - disable-user-list=true - -The login screen supports showing a banner message which admins -can use to mention login rules or disclaimers. - -This message only shows up currently if the user list is enabled. -Most people who want to show a banner message also want to disable -the user list. - -This commit moves the banner message to display when the user is -prompted for login credentials instead of when showing the user -list. It also adds a scrollbar if the message is too long. - -https://bugzilla.gnome.org/show_bug.cgi?id=703972 ---- - data/theme/gnome-shell.css | 8 ++-- - js/gdm/loginDialog.js | 105 +++++++++++++++++++++++++++++++++++++++------ - 2 files changed, 95 insertions(+), 18 deletions(-) - -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 04994fa..2ec51b2 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -2392,6 +2392,10 @@ StScrollBar StButton#vhandle:active { - } - - /* Login Dialog */ -+.login-dialog-banner-view { -+ padding-top: 24px; -+ max-width: 23em; -+} - - .framed-user-icon { - border: 2px solid #8b8b8b; -@@ -2404,11 +2408,7 @@ StScrollBar StButton#vhandle:active { - } - - .login-dialog-banner { -- font-size: 10pt; -- font-weight: bold; -- text-align: center; - color: #666666; -- padding-bottom: 1em; - } - - .login-dialog { -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index ced6fc2..41aa89c 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -27,6 +27,7 @@ const Gtk = imports.gi.Gtk; - const Lang = imports.lang; - const Mainloop = imports.mainloop; - const Meta = imports.gi.Meta; -+const Pango = imports.gi.Pango; - const Shell = imports.gi.Shell; - const Signals = imports.signals; - const St = imports.gi.St; -@@ -413,11 +414,6 @@ const LoginDialog = new Lang.Class({ - visible: false }); - this.actor.add_child(this._userSelectionBox); - -- this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner', -- text: '' }); -- this._userSelectionBox.add(this._bannerLabel); -- this._updateBanner(); -- - this._userList = new UserList(); - this._userSelectionBox.add(this._userList.actor, - { expand: true, -@@ -452,6 +448,22 @@ const LoginDialog = new Lang.Class({ - x_align: St.Align.START, - x_fill: true }); - -+ this._bannerView = new St.ScrollView({ style_class: 'login-dialog-banner-view', -+ opacity: 0, -+ vscrollbar_policy: Gtk.PolicyType.AUTOMATIC, -+ hscrollbar_policy: Gtk.PolicyType.NEVER }); -+ this.actor.add_child(this._bannerView); -+ -+ let bannerBox = new St.BoxLayout({ vertical: true }); -+ -+ this._bannerView.add_actor(bannerBox); -+ this._bannerLabel = new St.Label({ style_class: 'login-dialog-banner', -+ text: '' }); -+ this._bannerLabel.clutter_text.line_wrap = true; -+ this._bannerLabel.clutter_text.ellipsize = Pango.EllipsizeMode.NONE; -+ bannerBox.add_child(this._bannerLabel); -+ this._updateBanner(); -+ - this._logoBin = new St.Widget({ style_class: 'login-dialog-logo-bin', - x_align: Clutter.ActorAlign.CENTER, - y_align: Clutter.ActorAlign.END }); -@@ -485,6 +497,20 @@ const LoginDialog = new Lang.Class({ - Lang.bind(this, this._updateDisableUserList)); - }, - -+ _getBannerAllocation: function (dialogBox) { -+ let actorBox = new Clutter.ActorBox(); -+ -+ let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size(); -+ let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; -+ -+ actorBox.x1 = centerX - natWidth / 2; -+ actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height; -+ actorBox.x2 = actorBox.x1 + natWidth; -+ actorBox.y2 = actorBox.y1 + natHeight; -+ -+ return actorBox; -+ }, -+ - _getLogoBinAllocation: function (dialogBox) { - let actorBox = new Clutter.ActorBox(); - -@@ -518,9 +544,21 @@ const LoginDialog = new Lang.Class({ - let dialogHeight = dialogBox.y2 - dialogBox.y1; - - // First find out what space the children require -+ let bannerAllocation = null; -+ let bannerHeight = 0; -+ let bannerWidth = 0; -+ if (this._bannerView.visible) { -+ bannerAllocation = this._getBannerAllocation(dialogBox, this._bannerView); -+ bannerHeight = bannerAllocation.y2 - bannerAllocation.y1; -+ bannerWidth = bannerAllocation.x2 - bannerAllocation.x1; -+ } -+ - let authPromptAllocation = null; -- if (this._authPrompt.actor.visible) -+ let authPromptHeight = 0; -+ if (this._authPrompt.actor.visible) { - authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor); -+ authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1; -+ } - - let userSelectionAllocation = null; - let userSelectionHeight = 0; -@@ -537,16 +575,37 @@ const LoginDialog = new Lang.Class({ - } - - // Then figure out what extra space we can hand out -- let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; -- if (leftOverYSpace > 0) { -- if (userSelectionAllocation) { -- let topExpansion = leftOverYSpace / 2; -+ if (bannerAllocation) { -+ let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight; -+ -+ if (leftOverYSpace > 0) { -+ // First figure out how much left over space is up top -+ let leftOverTopSpace = leftOverYSpace / 2; - -- // Don't ever expand more than we have space for -- if (userSelectionAllocation.y1 - topExpansion < 0) -- topExpansion = userSelectionAllocation.y1; -+ // Then, shift the banner into the middle of that extra space -+ let yShift = leftOverTopSpace / 2; -+ -+ bannerAllocation.y1 += yShift; -+ bannerAllocation.y2 += yShift; -+ } else { -+ // recompute banner height to be constrained if there's no room for its -+ // requested height -+ -+ // First figure out how much space there is without the banner -+ leftOverYSpace += bannerHeight; -+ -+ // Then figure out how much of that space is up top -+ let availableTopSpace = leftOverYSpace / 2; -+ -+ // Then give all of that space to the banner -+ bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; -+ } -+ } else if (userSelectionAllocation) { -+ // Grow the user list to fill the space -+ let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; - -- // Always expand the bottom the same as the top since it's centered -+ if (leftOverYSpace > 0) { -+ let topExpansion = leftOverYSpace / 2; - let bottomExpansion = topExpansion; - - userSelectionAllocation.y1 -= topExpansion; -@@ -555,6 +614,10 @@ const LoginDialog = new Lang.Class({ - } - - // Finally hand out the allocations -+ if (bannerAllocation) { -+ this._bannerView.allocate(bannerAllocation, flags); -+ } -+ - if (authPromptAllocation) - this._authPrompt.actor.allocate(authPromptAllocation, flags); - -@@ -617,6 +680,18 @@ const LoginDialog = new Lang.Class({ - } - }, - -+ _fadeInBannerView: function() { -+ Tweener.addTween(this._bannerView, -+ { opacity: 255, -+ time: _FADE_ANIMATION_TIME, -+ transition: 'easeOutQuad' }); -+ }, -+ -+ _hideBannerView: function() { -+ Tweener.removeTweens(this._bannerView); -+ this._bannerView.opacity = 0; -+ }, -+ - _updateLogoTexture: function(cache, uri) { - if (this._logoFileUri != uri) - return; -@@ -684,6 +759,7 @@ const LoginDialog = new Lang.Class({ - { opacity: 255, - time: _FADE_ANIMATION_TIME, - transition: 'easeOutQuad' }); -+ this._fadeInBannerView(); - }, - - _showRealmLoginHint: function(realmManager, hint) { -@@ -940,6 +1016,7 @@ const LoginDialog = new Lang.Class({ - _showUserList: function() { - this._ensureUserListLoaded(); - this._authPrompt.hide(); -+ this._hideBannerView(); - this._sessionMenuButton.close(); - this._setUserListExpanded(true); - this._notListedButton.show(); --- -2.5.0 - - -From 5c2fb5d1d1ace07e2f9c27d563289e315fe53509 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 11 Nov 2014 09:11:01 -0500 -Subject: [PATCH 03/19] loginDialog: use two column view if banner message long - -Frequently banner messages are longer than can reasonable -fit in a one column view, which leads to a smooshed layout. - -This commit changes the layout to a two column view, with the -banner on the left and the prompt on the right, if the banner -message is long enough that it can't fit well above the prompt. -If there isn't enough space for two columns then we keep the -one column layout but add scrollbars. - -https://bugzilla.gnome.org/show_bug.cgi?id=703972 ---- - js/gdm/loginDialog.js | 67 ++++++++++++++++++++++++++++++++++++++++++--------- - 1 file changed, 55 insertions(+), 12 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 41aa89c..575effa 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -541,6 +541,7 @@ const LoginDialog = new Lang.Class({ - }, - - _onAllocate: function (actor, dialogBox, flags) { -+ let dialogWidth = dialogBox.x2 - dialogBox.x1; - let dialogHeight = dialogBox.y2 - dialogBox.y1; - - // First find out what space the children require -@@ -555,9 +556,11 @@ const LoginDialog = new Lang.Class({ - - let authPromptAllocation = null; - let authPromptHeight = 0; -+ let authPromptWidth = 0; - if (this._authPrompt.actor.visible) { - authPromptAllocation = this._getCenterActorAllocation(dialogBox, this._authPrompt.actor); - authPromptHeight = authPromptAllocation.y2 - authPromptAllocation.y1; -+ authPromptWidth = authPromptAllocation.x2 - authPromptAllocation.x1; - } - - let userSelectionAllocation = null; -@@ -574,7 +577,9 @@ const LoginDialog = new Lang.Class({ - logoHeight = logoAllocation.y2 - logoAllocation.y1; - } - -- // Then figure out what extra space we can hand out -+ // Then figure out if we're overly constrained and need to -+ // try a different layout, or if we have what extra space we -+ // can hand out - if (bannerAllocation) { - let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight; - -@@ -588,17 +593,55 @@ const LoginDialog = new Lang.Class({ - bannerAllocation.y1 += yShift; - bannerAllocation.y2 += yShift; - } else { -- // recompute banner height to be constrained if there's no room for its -- // requested height -- -- // First figure out how much space there is without the banner -- leftOverYSpace += bannerHeight; -- -- // Then figure out how much of that space is up top -- let availableTopSpace = leftOverYSpace / 2; -- -- // Then give all of that space to the banner -- bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; -+ // Then figure out how much space there would be if we switched to a -+ // wide layout with banner on one side and authprompt on the other. -+ let leftOverXSpace = dialogWidth - authPromptWidth; -+ -+ // In a wide view, half of the available space goes to the banner, -+ // and the other half goes to the margins. -+ let wideBannerWidth = leftOverXSpace / 2; -+ let wideSpacing = leftOverXSpace - wideBannerWidth; -+ -+ // If we do go with a wide layout, we need there to be at least enough -+ // space for the banner and the auth prompt to be the same width, -+ // so it doesn't look unbalanced. -+ if (authPromptWidth > 0 && wideBannerWidth > authPromptWidth) { -+ let centerX = dialogBox.x1 + dialogWidth / 2; -+ let centerY = dialogBox.y1 + dialogHeight / 2; -+ -+ // A small portion of the spacing goes down the center of the -+ // screen to help delimit the two columns of the wide view -+ let centerGap = wideSpacing / 8; -+ -+ // place the banner along the left edge of the center margin -+ bannerAllocation.x2 = centerX - centerGap / 2; -+ bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth; -+ -+ // figure out how tall it would like to be and try to accomodate -+ // but don't let it get too close to the logo -+ let [wideMinHeight, wideBannerHeight] = this._bannerView.get_preferred_height(wideBannerWidth); -+ -+ let maxWideHeight = dialogHeight - 3 * logoHeight; -+ wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight); -+ bannerAllocation.y1 = centerY - wideBannerHeight / 2; -+ bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight; -+ -+ // place the auth prompt along the right edge of the center margin -+ authPromptAllocation.x1 = centerX + centerGap / 2; -+ authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth; -+ } else { -+ // If we aren't going to do a wide view, then we need to limit -+ // the height of the banner so it will present scrollbars -+ -+ // First figure out how much space there is without the banner -+ leftOverYSpace += bannerHeight; -+ -+ // Then figure out how much of that space is up top -+ let availableTopSpace = leftOverYSpace / 2; -+ -+ // Then give all of that space to the banner -+ bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; -+ } - } - } else if (userSelectionAllocation) { - // Grow the user list to fill the space --- -2.5.0 - - -From f349bc2c4b437430dfc65d13bba24e39c5ab8c59 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 22 Jan 2015 14:00:01 -0500 -Subject: [PATCH 04/19] loginDialog: fix reactivity of first user in user list - -After the login banner is shown and hidden, the first user -in the user list becomes non-reactive. This is because the -banner is given an opacity of 0, but still allocated. - -This commit fixes that by hiding the banner explicitly. - -https://bugzilla.gnome.org/show_bug.cgi?id=743370 ---- - js/gdm/loginDialog.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 575effa..930f82b 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -724,6 +724,7 @@ const LoginDialog = new Lang.Class({ - }, - - _fadeInBannerView: function() { -+ this._bannerView.show(); - Tweener.addTween(this._bannerView, - { opacity: 255, - time: _FADE_ANIMATION_TIME, -@@ -733,6 +734,7 @@ const LoginDialog = new Lang.Class({ - _hideBannerView: function() { - Tweener.removeTweens(this._bannerView); - this._bannerView.opacity = 0; -+ this._bannerView.hide(); - }, - - _updateLogoTexture: function(cache, uri) { --- -2.5.0 - - -From 4c16f0573d5b72ffb99261692353d004d4e13337 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Cl=C3=A9ment=20Gu=C3=A9rin?= -Date: Fri, 27 Mar 2015 22:19:47 +0100 -Subject: [PATCH 05/19] gdm: use integer coordinates for login dialog actors - -If the login screen actors aren't placed at pixel -boundaries then they will show up blurred with fuzzy -text. - -This commit ensures all actor allocations are floored -to integer coordinates. - -https://bugzilla.gnome.org/show_bug.cgi?id=746912 ---- - js/gdm/loginDialog.js | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 930f82b..34bef7d 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -503,7 +503,7 @@ const LoginDialog = new Lang.Class({ - let [minWidth, minHeight, natWidth, natHeight] = this._bannerView.get_preferred_size(); - let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; - -- actorBox.x1 = centerX - natWidth / 2; -+ actorBox.x1 = Math.floor(centerX - natWidth / 2); - actorBox.y1 = dialogBox.y1 + Main.layoutManager.panelBox.height; - actorBox.x2 = actorBox.x1 + natWidth; - actorBox.y2 = actorBox.y1 + natHeight; -@@ -517,7 +517,7 @@ const LoginDialog = new Lang.Class({ - let [minWidth, minHeight, natWidth, natHeight] = this._logoBin.get_preferred_size(); - let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; - -- actorBox.x1 = centerX - natWidth / 2; -+ actorBox.x1 = Math.floor(centerX - natWidth / 2); - actorBox.y1 = dialogBox.y2 - natHeight; - actorBox.x2 = actorBox.x1 + natWidth; - actorBox.y2 = actorBox.y1 + natHeight; -@@ -532,8 +532,8 @@ const LoginDialog = new Lang.Class({ - let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; - let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; - -- actorBox.x1 = centerX - natWidth / 2; -- actorBox.y1 = centerY - natHeight / 2; -+ actorBox.x1 = Math.floor(centerX - natWidth / 2); -+ actorBox.y1 = Math.floor(centerY - natHeight / 2); - actorBox.x2 = actorBox.x1 + natWidth; - actorBox.y2 = actorBox.y1 + natHeight; - -@@ -588,7 +588,7 @@ const LoginDialog = new Lang.Class({ - let leftOverTopSpace = leftOverYSpace / 2; - - // Then, shift the banner into the middle of that extra space -- let yShift = leftOverTopSpace / 2; -+ let yShift = Math.floor(leftOverTopSpace / 2); - - bannerAllocation.y1 += yShift; - bannerAllocation.y2 += yShift; -@@ -614,8 +614,8 @@ const LoginDialog = new Lang.Class({ - let centerGap = wideSpacing / 8; - - // place the banner along the left edge of the center margin -- bannerAllocation.x2 = centerX - centerGap / 2; -- bannerAllocation.x1 = bannerAllocation.x2 - wideBannerWidth; -+ bannerAllocation.x2 = Math.floor(centerX - centerGap / 2); -+ bannerAllocation.x1 = Math.floor(bannerAllocation.x2 - wideBannerWidth); - - // figure out how tall it would like to be and try to accomodate - // but don't let it get too close to the logo -@@ -623,11 +623,11 @@ const LoginDialog = new Lang.Class({ - - let maxWideHeight = dialogHeight - 3 * logoHeight; - wideBannerHeight = Math.min(maxWideHeight, wideBannerHeight); -- bannerAllocation.y1 = centerY - wideBannerHeight / 2; -+ bannerAllocation.y1 = Math.floor(centerY - wideBannerHeight / 2); - bannerAllocation.y2 = bannerAllocation.y1 + wideBannerHeight; - - // place the auth prompt along the right edge of the center margin -- authPromptAllocation.x1 = centerX + centerGap / 2; -+ authPromptAllocation.x1 = Math.floor(centerX + centerGap / 2); - authPromptAllocation.x2 = authPromptAllocation.x1 + authPromptWidth; - } else { - // If we aren't going to do a wide view, then we need to limit -@@ -637,7 +637,7 @@ const LoginDialog = new Lang.Class({ - leftOverYSpace += bannerHeight; - - // Then figure out how much of that space is up top -- let availableTopSpace = leftOverYSpace / 2; -+ let availableTopSpace = Math.floor(leftOverYSpace / 2); - - // Then give all of that space to the banner - bannerAllocation.y2 = bannerAllocation.y1 + availableTopSpace; -@@ -648,7 +648,7 @@ const LoginDialog = new Lang.Class({ - let leftOverYSpace = dialogHeight - userSelectionHeight - logoHeight; - - if (leftOverYSpace > 0) { -- let topExpansion = leftOverYSpace / 2; -+ let topExpansion = Math.floor(leftOverYSpace / 2); - let bottomExpansion = topExpansion; - - userSelectionAllocation.y1 -= topExpansion; --- -2.5.0 - - -From a179abc0adf73f19aeb4ec8069ffaecd0b229179 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 20 Mar 2015 14:29:40 +0100 -Subject: [PATCH 06/19] loginDialog: Move long session-list menus to the side - -Currently the menu position below the button means that the menu -can extend to roughly half the screen height before ending up partly -off-screen. This is plenty of space for commonly installed sessions, -but some users have a significantly higher number of sessions in the -list. Move the menu to the side of the button in that case to maximize -the vertical space the menu may take up. - -https://bugzilla.gnome.org/show_bug.cgi?id=734352 ---- - js/gdm/loginDialog.js | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 34bef7d..bf47c2d 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -49,6 +49,7 @@ const _FADE_ANIMATION_TIME = 0.25; - const _SCROLL_ANIMATION_TIME = 0.5; - const _TIMED_LOGIN_IDLE_THRESHOLD = 5.0; - const _LOGO_ICON_HEIGHT = 48; -+const _MAX_BOTTOM_MENU_ITEMS = 5; - - const UserListItem = new Lang.Class({ - Name: 'UserListItem', -@@ -283,7 +284,16 @@ const SessionMenuButton = new Lang.Class({ - - this.actor = new St.Bin({ child: this._button }); - -- this._menu = new PopupMenu.PopupMenu(this._button, 0, St.Side.TOP); -+ let side = St.Side.TOP; -+ let align = 0; -+ if (Gdm.get_session_ids().length > _MAX_BOTTOM_MENU_ITEMS) { -+ if (this.actor.text_direction == Clutter.TextDirection.RTL) -+ side = St.Side.RIGHT; -+ else -+ side = St.Side.LEFT; -+ align = 0.5; -+ } -+ this._menu = new PopupMenu.PopupMenu(this._button, align, side); - Main.uiGroup.add_actor(this._menu.actor); - this._menu.actor.hide(); - --- -2.5.0 - - -From cd87ad4e3f9aa3e18f35f6f4069412412eeb1977 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 16 Mar 2015 07:38:04 -0400 -Subject: [PATCH 07/19] gdm: fix empty user list on user switching - -There's some vestigial code for hiding the user list -that runs at the same time its parent is hidden. - -Only the parent should be hidden, at this point, so -there's situations where the user list hides and -never comes back. - -This commit fixes that, by deleting the vestigial code. - -https://bugzilla.gnome.org/show_bug.cgi?id=719418 ---- - js/gdm/loginDialog.js | 9 +-------- - 1 file changed, 1 insertion(+), 8 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index bf47c2d..9ef7b2a 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -1090,18 +1090,11 @@ const LoginDialog = new Lang.Class({ - }, - - _onUserListActivated: function(activatedItem) { -- let tasks = [function() { -- return GdmUtil.cloneAndFadeOutActor(this._userSelectionBox); -- }, -- function() { -- this._setUserListExpanded(false); -- }]; -- - this._user = activatedItem.user; - - this._updateCancelButton(); - -- let batch = new Batch.ConcurrentBatch(this, [new Batch.ConsecutiveBatch(this, tasks), -+ let batch = new Batch.ConcurrentBatch(this, [GdmUtil.cloneAndFadeOutActor(this._userSelectionBox), - this._beginVerificationForItem(activatedItem)]); - batch.run(); - }, --- -2.5.0 - - -From 15559166cb1039289a3d81851d7834e3b74cc4cb Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 12 Jun 2015 14:14:46 +0200 -Subject: [PATCH 08/19] theme: Make banner message more prominent - -Drop the dedicated dimmed font color for the banner message in favor -of the brighter default, to make the banner message more prominent. ---- - data/theme/gnome-shell.css | 4 ---- - 1 file changed, 4 deletions(-) - -diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css -index 2ec51b2..97634b1 100644 ---- a/data/theme/gnome-shell.css -+++ b/data/theme/gnome-shell.css -@@ -2407,10 +2407,6 @@ StScrollBar StButton#vhandle:active { - border: 2px solid #bbbbbb; - } - --.login-dialog-banner { -- color: #666666; --} -- - .login-dialog { - /* Reset border and background */ - border: none; --- -2.5.0 - - -From a3cf129242f79a598bfc0f699ccdfafe99eca754 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Thu, 25 Jun 2015 15:39:58 -0400 -Subject: [PATCH 09/19] gdm: fix banner allocation computation - -The code to figure how how much room that banner had was wrong. -This commit fixes it. ---- - js/gdm/loginDialog.js | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 9ef7b2a..d58daaa 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -591,7 +591,14 @@ const LoginDialog = new Lang.Class({ - // try a different layout, or if we have what extra space we - // can hand out - if (bannerAllocation) { -- let leftOverYSpace = dialogHeight - bannerHeight - authPromptHeight - logoHeight; -+ let bannerSpace; -+ -+ if (authPromptAllocation) -+ bannerSpace = authPromptAllocation.y1 - bannerAllocation.y1; -+ else -+ bannerSpace = 0; -+ -+ let leftOverYSpace = bannerSpace - bannerHeight; - - if (leftOverYSpace > 0) { - // First figure out how much left over space is up top --- -2.5.0 - - -From 03743107d8b630254d22533c404806bc48cdc44b Mon Sep 17 00:00:00 2001 -From: David Liang -Date: Thu, 26 Feb 2015 15:40:56 -0500 -Subject: [PATCH 10/19] gdm: prevent nextSignalId from being connected multiply - times - -The problem is caused by '_askForUsernameAndBeginVerification' being -called multiply times. So when we click 'next', the old connected -function will also be executed. ---- - js/gdm/loginDialog.js | 45 ++++++++++++++++++++++++++------------------- - 1 file changed, 26 insertions(+), 19 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index d58daaa..02c8201 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -498,6 +498,10 @@ const LoginDialog = new Lang.Class({ - this._disableUserList = undefined; - this._userListLoaded = false; - -+ this._realmManager = new Realmd.Manager(); -+ this._realmSignalId = this._realmManager.connect('login-format-changed', -+ Lang.bind(this, this._showRealmLoginHint)); -+ - LoginManager.getLoginManager().getCurrentSessionProxy(Lang.bind(this, this._gotGreeterSessionProxy)); - - // If the user list is enabled, it should take key focus; make sure the -@@ -841,25 +845,22 @@ const LoginDialog = new Lang.Class({ - this._authPrompt.setPasswordChar(''); - this._authPrompt.setQuestion(_("Username: ")); - -- let realmManager = new Realmd.Manager(); -- let realmSignalId = realmManager.connect('login-format-changed', -- Lang.bind(this, this._showRealmLoginHint)); -- this._showRealmLoginHint(realmManager.loginFormat); -- -- let nextSignalId = this._authPrompt.connect('next', -- Lang.bind(this, function() { -- this._authPrompt.disconnect(nextSignalId); -- this._authPrompt.updateSensitivity(false); -- let answer = this._authPrompt.getAnswer(); -- this._user = this._userManager.get_user(answer); -- this._authPrompt.clear(); -- this._authPrompt.startSpinning(); -- this._authPrompt.begin({ userName: answer }); -- this._updateCancelButton(); -- -- realmManager.disconnect(realmSignalId) -- realmManager.release(); -- })); -+ this._showRealmLoginHint(this._realmManager.loginFormat); -+ -+ if (this._nextSignalId) -+ this._authPrompt.disconnect(this._nextSignalId); -+ this._nextSignalId = this._authPrompt.connect('next', -+ Lang.bind(this, function() { -+ this._authPrompt.disconnect(this._nextSignalId); -+ this._nextSignalId = 0; -+ this._authPrompt.updateSensitivity(false); -+ let answer = this._authPrompt.getAnswer(); -+ this._user = this._userManager.get_user(answer); -+ this._authPrompt.clear(); -+ this._authPrompt.startSpinning(); -+ this._authPrompt.begin({ userName: answer }); -+ this._updateCancelButton(); -+ })); - this._updateCancelButton(); - - this._authPrompt.updateSensitivity(true); -@@ -1135,6 +1136,12 @@ const LoginDialog = new Lang.Class({ - this._greeterSessionProxy.disconnect(this._greeterSessionProxyChangedId); - this._greeterSessionProxy = null; - } -+ if (this._realmManager) { -+ this._realmManager.disconnect(this._realmSignalId); -+ this._realmSignalId = 0; -+ this._realmManager.release(); -+ this._realmManager = null; -+ } - }, - - _loadUserList: function() { --- -2.5.0 - - -From 284fef5e484a76d919e9dade90cdc8ea99a304f9 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 30 Jun 2015 12:51:59 -0400 -Subject: [PATCH 11/19] gdm: fix cancel button when not listed is clicked - -We currently ignore cancellation attempts on the authprompt if -the pam conversation isn't authenticating. Of course the authprompt -asks questions before PAM gets involved, so that's wrong. - -This commit makes cancel work at the "Not Listed?" username screen. ---- - js/gdm/authPrompt.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index a4d69d9..2ac0a54 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -501,7 +501,7 @@ const AuthPrompt = new Lang.Class({ - }, - - cancel: function() { -- if (this.verificationStatus == AuthPromptStatus.NOT_VERIFYING || this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) { -+ if (this.verificationStatus == AuthPromptStatus.VERIFICATION_SUCCEEDED) { - return; - } - this.reset(); --- -2.5.0 - - -From b1f7ee30ae333a288528215b0f120d7b342ad448 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 14 Nov 2014 15:57:16 -0500 -Subject: [PATCH 12/19] gdm: fix handling of removed smartcard at startup - -If a smartcard is missing from the reader when we start up, -and the system is configured to disable password authentication, -then we need to ask the user to insert their smartcard. - -This commit fixes that. - -https://bugzilla.gnome.org/show_bug.cgi?id=740143 ---- - js/gdm/util.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 4bfaf7c..6286b84 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -410,7 +410,7 @@ const ShellUserVerifier = new Lang.Class({ - _updateDefaultService: function() { - if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) - this._defaultService = PASSWORD_SERVICE_NAME; -- else if (this.smartcardDetected) -+ else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) - this._defaultService = SMARTCARD_SERVICE_NAME; - else if (this._haveFingerprintReader) - this._defaultService = FINGERPRINT_SERVICE_NAME; --- -2.5.0 - - -From 4bf6c66b064b24161889900aa8cb3ba0fa2701df Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 1 Jul 2015 11:18:44 -0400 -Subject: [PATCH 13/19] gdm: use password authentication if all schemes are - disabled - -This prevents a traceback, at least. ---- - js/gdm/util.js | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/js/gdm/util.js b/js/gdm/util.js -index 6286b84..dd04544 100644 ---- a/js/gdm/util.js -+++ b/js/gdm/util.js -@@ -414,6 +414,11 @@ const ShellUserVerifier = new Lang.Class({ - this._defaultService = SMARTCARD_SERVICE_NAME; - else if (this._haveFingerprintReader) - this._defaultService = FINGERPRINT_SERVICE_NAME; -+ -+ if (!this._defaultService) { -+ log("no authentication service is enabled, using password authentication"); -+ this._defaultService = PASSWORD_SERVICE_NAME; -+ } - }, - - _startService: function(serviceName) { --- -2.5.0 - - -From 9f99fbecd20cb1d1270138c1a207559a663a7c67 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Fri, 10 Jul 2015 18:58:05 +0200 -Subject: [PATCH 14/19] loginDialog: Limit user list to the available height - -We currently will always allocate the user list's preferred size, so it -will grow indefinitely and never scroll; limit the height instead to -get the desired scrolling behavior when necessary. ---- - js/gdm/loginDialog.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 02c8201..66b8fff 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -546,6 +546,8 @@ const LoginDialog = new Lang.Class({ - let centerX = dialogBox.x1 + (dialogBox.x2 - dialogBox.x1) / 2; - let centerY = dialogBox.y1 + (dialogBox.y2 - dialogBox.y1) / 2; - -+ natHeight = Math.min(natHeight, dialogBox.y2 - dialogBox.y1); -+ - actorBox.x1 = Math.floor(centerX - natWidth / 2); - actorBox.y1 = Math.floor(centerY - natHeight / 2); - actorBox.x2 = actorBox.x1 + natWidth; --- -2.5.0 - - -From 1a10f4dde018a19226daeef95556c0582d3c39a9 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 15 Jul 2015 15:52:29 -0400 -Subject: [PATCH 15/19] gdm: unconditionally cancel auth user verifier on reset - -We currently only cancel the user verifier on reset if -verifying, but that means we don't properly cancel it when -asking for a username at the Not Listed screen. - -The object already handles getting called when there is -nothing to cancel, so just cancel it unconditionally. ---- - js/gdm/authPrompt.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 2ac0a54..22b102c 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -434,7 +434,7 @@ const AuthPrompt = new Lang.Class({ - this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; - this.cancelButton.reactive = true; - -- if (oldStatus == AuthPromptStatus.VERIFYING) -+ if (this._userVerifier) - this._userVerifier.cancel(); - - this._queryingService = null; --- -2.5.0 - - -From 8b5dfd5db42a9f5688edb304fd31f09fcbde129b Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Fri, 17 Jul 2015 12:57:21 -0400 -Subject: [PATCH 16/19] authPrompt: set next button to next when asking for - username - -If the next button ever gets set to Sign In, it won't -get reset to next until the next question asked by pam. - -This commit ensures it gets reset to Next when asking -for the username. ---- - js/gdm/authPrompt.js | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 22b102c..c69ade4 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -433,6 +433,7 @@ const AuthPrompt = new Lang.Class({ - let oldStatus = this.verificationStatus; - this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; - this.cancelButton.reactive = true; -+ this.nextButton.label = _("Next"); - - if (this._userVerifier) - this._userVerifier.cancel(); --- -2.5.0 - - -From 87eb68c1c9edd1c1a8c961669c9a4b01f29377d9 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Wed, 22 Jul 2015 14:52:22 -0400 -Subject: [PATCH 17/19] authPrompt: don't allow next if entry is empty - -Normally the user isn't allowed to proceed past -the username question until they've filled it in. -To ensure this, the authprompt code desensitizes -the next button when the number of characters change to -zero. - -Unfortunately it fails to desensitize the next button -up front when the entry starts out empty. - -This commit addresses that bug. ---- - js/gdm/authPrompt.js | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index c69ade4..3e9eb9a 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -402,7 +402,7 @@ const AuthPrompt = new Lang.Class({ - }, - - updateSensitivity: function(sensitive) { -- this._updateNextButtonSensitivity(sensitive); -+ this._updateNextButtonSensitivity(sensitive && this._entry.text.length > 0); - this._entry.reactive = sensitive; - this._entry.clutter_text.editable = sensitive; - }, --- -2.5.0 - - -From 20d76a7dac49ece9477be410c243aedf79535bc4 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Tue, 4 Aug 2015 09:53:04 -0400 -Subject: [PATCH 18/19] gdm: make user list fade-in on vt switch more reliable - -We fade out the authentication prompt when a user successfully -logs into a user session. We reset it and fade it back in when -the user switches back to the login screen VT. - -The problem is, we only fade it back in if the auth prompt status is -VERIFICATION_SUCCEEDED. It's possible for it to be NOT_VERIFYING -if the authprompt gets reset for some other reason in the interim. - -This commit changes the check to be more precise. We now only skip -the fade-in, if we're already faded in, and we only skip the reset if -we're already reset. - -https://bugzilla.gnome.org/show_bug.cgi?id=753181 ---- - js/gdm/loginDialog.js | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js -index 66b8fff..a51ffd5 100644 ---- a/js/gdm/loginDialog.js -+++ b/js/gdm/loginDialog.js -@@ -870,7 +870,7 @@ const LoginDialog = new Lang.Class({ - }, - - _loginScreenSessionActivated: function() { -- if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.VERIFICATION_SUCCEEDED) -+ if (this.actor.opacity == 255 && this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) - return; - - Tweener.addTween(this.actor, -@@ -887,7 +887,8 @@ const LoginDialog = new Lang.Class({ - }, - onUpdateScope: this, - onComplete: function() { -- this._authPrompt.reset(); -+ if (this._authPrompt.verificationStatus != AuthPrompt.AuthPromptStatus.NOT_VERIFYING) -+ this._authPrompt.reset(); - }, - onCompleteScope: this }); - }, --- -2.5.0 - - -From eb2381cff936e62f68d72730dbff2d485408059f Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 3 Aug 2015 14:07:17 -0400 -Subject: [PATCH 19/19] gdm: clear user verifier when finished with it - -We only need the user verifier for the purpose of user verification. -Once it's complete we should clear it so it doesn't get in the way -later. - -This fixes a bug introduced in commit 3c8c5a557059 that leads to the -user session crashing when the login screen is reactivated. - -https://bugzilla.gnome.org/show_bug.cgi?id=753181 ---- - js/gdm/authPrompt.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js -index 3e9eb9a..34ad7fb 100644 ---- a/js/gdm/authPrompt.js -+++ b/js/gdm/authPrompt.js -@@ -490,6 +490,7 @@ const AuthPrompt = new Lang.Class({ - - finish: function(onComplete) { - if (!this._userVerifier.hasPendingMessages) { -+ this._userVerifier.clear(); - onComplete(); - return; - } -@@ -497,6 +498,7 @@ const AuthPrompt = new Lang.Class({ - let signalId = this._userVerifier.connect('no-more-messages', - Lang.bind(this, function() { - this._userVerifier.disconnect(signalId); -+ this._userVerifier.clear(); - onComplete(); - })); - }, --- -2.5.0 - diff --git a/SOURCES/pass-mode-parameter-with-accelerators.patch b/SOURCES/pass-mode-parameter-with-accelerators.patch deleted file mode 100644 index 66930c3..0000000 --- a/SOURCES/pass-mode-parameter-with-accelerators.patch +++ /dev/null @@ -1,80 +0,0 @@ -From 17df7d3b30dee931d1934a5b8783749837569818 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 12 Nov 2014 21:21:44 +0100 -Subject: [PATCH 1/2] shellDBus: Change AcceleratorActivated signature - -Adding new parameters to the signal currently will break keybindings -until gnome-settings-daemon is updated to the new API as well. -Put additional parameters into a dictionary instead to make future -extensions easier. - -https://bugzilla.gnome.org/show_bug.cgi?id=711682 ---- - js/ui/shellDBus.js | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js -index f8b05f4..871a387 100644 ---- a/js/ui/shellDBus.js -+++ b/js/ui/shellDBus.js -@@ -44,8 +44,7 @@ const GnomeShellIface = ' \ - \ - \ - \ -- \ -- \ -+ \ - \ - \ - \ -@@ -190,11 +189,13 @@ const GnomeShell = new Lang.Class({ - - let connection = this._dbusImpl.get_connection(); - let info = this._dbusImpl.get_info(); -+ let params = { 'device-id': GLib.Variant.new('u', deviceid), -+ 'timestamp': GLib.Variant.new('u', timestamp) }; - connection.emit_signal(destination, - this._dbusImpl.get_object_path(), - info ? info.name : null, - 'AcceleratorActivated', -- GLib.Variant.new('(uuu)', [action, deviceid, timestamp])); -+ GLib.Variant.new('(ua{sv})', [action, params])); - }, - - _grabAcceleratorForSender: function(accelerator, flags, sender) { --- -2.3.6 - - -From 74a42c3f12fa23aa6cdb0f6f1fbe8464efd41640 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Florian=20M=C3=BCllner?= -Date: Wed, 12 Nov 2014 20:49:24 +0100 -Subject: [PATCH 2/2] shellDBus: Add mode parameter to AcceleratorActivated - signal - -This will allow g-s-d to handle actions differently based on the -current mode - namely, allow the power button when locked, but -make sure to never show any dialogs in that case. - -https://bugzilla.gnome.org/show_bug.cgi?id=711682 ---- - js/ui/shellDBus.js | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js -index 871a387..73fbb07 100644 ---- a/js/ui/shellDBus.js -+++ b/js/ui/shellDBus.js -@@ -190,7 +190,8 @@ const GnomeShell = new Lang.Class({ - let connection = this._dbusImpl.get_connection(); - let info = this._dbusImpl.get_info(); - let params = { 'device-id': GLib.Variant.new('u', deviceid), -- 'timestamp': GLib.Variant.new('u', timestamp) }; -+ 'timestamp': GLib.Variant.new('u', timestamp), -+ 'action-mode': GLib.Variant.new('u', Main.actionMode) }; - connection.emit_signal(destination, - this._dbusImpl.get_object_path(), - info ? info.name : null, --- -2.3.6 - diff --git a/SOURCES/respect-lockscreen-lockdown.patch b/SOURCES/respect-lockscreen-lockdown.patch new file mode 100644 index 0000000..6b1a501 --- /dev/null +++ b/SOURCES/respect-lockscreen-lockdown.patch @@ -0,0 +1,104 @@ +From 957e20baa7d82f532134e02ef54c8368c18cd76f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 17 Mar 2017 15:48:22 +0100 +Subject: [PATCH 1/2] screenShield: Do not lock the screen when locked down + +When using the 'disable-lock-screen' setting to lock down the screen +lock, the expectation is that users cannot lock the screen. However +as it turns out, all the setting currently does is hiding the lock +button in the system menu and making the lock settings in the privacy +panel inactive. That means that if the 'lock-screen-enabled' setting +isn't disabled and locked down as well, we will just continue to +lock the screen on inactivity - not to mention the keyboard shortcut +that isn't subject to that setting anyway. + +Instead of expecting administrators to hunt down every possible way +of locking the screen and disabling it individually, we can easily +handle all cases by refusing to lock the screen when disabled by the +lockdown settings. + +https://bugzilla.gnome.org/show_bug.cgi?id=780212 +--- + js/ui/screenShield.js | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js +index 3d55375b0..0d822353a 100644 +--- a/js/ui/screenShield.js ++++ b/js/ui/screenShield.js +@@ -33,6 +33,9 @@ const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver'; + const LOCK_ENABLED_KEY = 'lock-enabled'; + const LOCK_DELAY_KEY = 'lock-delay'; + ++const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown'; ++const DISABLE_LOCK_KEY = 'disable-lock-screen'; ++ + const LOCKED_STATE_STR = 'screenShield.locked'; + // fraction of screen height the arrow must reach before completing + // the slide up automatically +@@ -543,6 +546,8 @@ const ScreenShield = new Lang.Class({ + this._settings = new Gio.Settings({ schema_id: SCREENSAVER_SCHEMA }); + this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor)); + ++ this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); ++ + this._isModal = false; + this._hasLockScreen = false; + this._isGreeter = false; +@@ -1289,6 +1294,11 @@ const ScreenShield = new Lang.Class({ + }, + + lock: function(animate) { ++ if (this._lockSettings.get_boolean(DISABLE_LOCK_KEY)) { ++ log('Screen lock is locked down, not locking') // lock, lock - who's there? ++ return; ++ } ++ + // Warn the user if we can't become modal + if (!this._becomeModal()) { + Main.notifyError(_("Unable to lock"), +-- +2.12.0 + + +From 4ff403d64d44b220824122601656db847f0c1a7b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 17 Mar 2017 15:48:22 +0100 +Subject: [PATCH 2/2] screenShield: Do not take an inhibitor when disabled by + lockdown + +Just as with the normal lock screen settings, we shouldn't request +a logind inhibitor when locking is disabled via lockdown settings. + +https://bugzilla.gnome.org/show_bug.cgi?id=780212 +--- + js/ui/screenShield.js | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js +index 0d822353a..f6382d28f 100644 +--- a/js/ui/screenShield.js ++++ b/js/ui/screenShield.js +@@ -547,6 +547,7 @@ const ScreenShield = new Lang.Class({ + this._settings.connect('changed::' + LOCK_ENABLED_KEY, Lang.bind(this, this._syncInhibitor)); + + this._lockSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA }); ++ this._lockSettings.connect('changed::' + DISABLE_LOCK_KEY, Lang.bind(this, this._syncInhibitor)); + + this._isModal = false; + this._hasLockScreen = false; +@@ -705,8 +706,10 @@ const ScreenShield = new Lang.Class({ + }, + + _syncInhibitor: function() { ++ let lockEnabled = this._settings.get_boolean(LOCK_ENABLED_KEY); ++ let lockLocked = this._lockSettings.get_boolean(DISABLE_LOCK_KEY); + let inhibit = (this._loginSession && this._loginSession.Active && +- !this._isActive && this._settings.get_boolean(LOCK_ENABLED_KEY)); ++ !this._isActive && lockEnabled && !lockLocked); + if (inhibit) { + this._loginManager.inhibit(_("GNOME needs to lock the screen"), + Lang.bind(this, function(inhibitor) { +-- +2.12.0 + diff --git a/SOURCES/support-headless-mode.patch b/SOURCES/support-headless-mode.patch index f800072..5e7c1ab 100644 --- a/SOURCES/support-headless-mode.patch +++ b/SOURCES/support-headless-mode.patch @@ -1,66 +1,33 @@ -From 261497c9581472621320072c4f243bcc33d75726 Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Wed, 10 Jun 2015 16:05:41 +0200 -Subject: [PATCH 1/2] AllView: prevent accessing a NULL effect - -In some cases we might be allocated a size such that -this._grid.topPadding and this._grid.bottomPadding are both 0 which -means that the ScrollView fade effect gets removed. In that case don't -try to access the effect since it will be NULL. - -https://bugzilla.gnome.org/show_bug.cgi?id=750714 ---- - js/ui/appDisplay.js | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js -index ae40f3e..45e5c71 100644 ---- a/js/ui/appDisplay.js -+++ b/js/ui/appDisplay.js -@@ -738,7 +738,8 @@ const AllView = new Lang.Class({ - let fadeOffset = Math.min(this._grid.topPadding, - this._grid.bottomPadding); - this._scrollView.update_fade_effect(fadeOffset, 0); -- this._scrollView.get_effect('fade').fade_edges = true; -+ if (fadeOffset > 0) -+ this._scrollView.get_effect('fade').fade_edges = true; - - if (this._availWidth != availWidth || this._availHeight != availHeight || oldNPages != this._grid.nPages()) { - this._adjustment.value = 0; --- -2.5.0 - - -From 2076a96ee5ad7669e050de035aa10c33af76d810 Mon Sep 17 00:00:00 2001 +From 191f8b08f0235b300fab68384abf4ecec2845a03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 16 Jul 2015 15:15:41 +0200 -Subject: [PATCH 2/2] layout: Handle the no-monitor case +Subject: [PATCH] layout: Handle the no-monitor case --- - js/ui/layout.js | 66 ++++++++++++++++++++++++++++++++------------- - js/ui/lookingGlass.js | 4 +++ - js/ui/messageTray.js | 6 +++-- - js/ui/panel.js | 5 +++- + js/ui/layout.js | 50 +++++++++++++++++++++++++++++++++------------ + js/ui/lookingGlass.js | 4 ++++ + js/ui/messageTray.js | 3 ++- + js/ui/panel.js | 5 ++++- js/ui/workspaceThumbnail.js | 3 ++- - 5 files changed, 62 insertions(+), 22 deletions(-) + 5 files changed, 49 insertions(+), 16 deletions(-) diff --git a/js/ui/layout.js b/js/ui/layout.js -index e9aab13..d124705 100644 +index aaf9da536..9e41d779e 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js -@@ -106,7 +106,10 @@ const MonitorConstraint = new Lang.Class({ - return; +@@ -136,7 +136,10 @@ const MonitorConstraint = new Lang.Class({ + index = Math.min(this._index, Main.layoutManager.monitors.length - 1); - let monitor; -- if (this._primary) { + let rect; +- if (this._workArea) { + if (Main.layoutManager.monitors.length == 0) { -+ monitor = new Meta.Rectangle({ width: global.screen_width, -+ height: global.screen_height }); -+ } else if (this._primary) { - monitor = Main.layoutManager.primaryMonitor; ++ rect = new Meta.Rectangle({ width: global.screen_width, ++ height: global.screen_height }); ++ } else if (this._workArea) { + let ws = global.screen.get_workspace_by_index(0); + rect = ws.get_work_area_for_monitor(index); } else { - let index = Math.min(this._index, Main.layoutManager.monitors.length - 1); -@@ -297,7 +300,9 @@ const LayoutManager = new Lang.Class({ +@@ -323,7 +326,9 @@ const LayoutManager = new Lang.Class({ for (let i = 0; i < nMonitors; i++) this.monitors.push(new Monitor(i, screen.get_monitor_geometry(i))); @@ -71,7 +38,7 @@ index e9aab13..d124705 100644 this.primaryIndex = this.bottomIndex = 0; } else { // If there are monitors below the primary, then we need -@@ -311,8 +316,10 @@ const LayoutManager = new Lang.Class({ +@@ -337,8 +342,10 @@ const LayoutManager = new Lang.Class({ } } } @@ -84,7 +51,7 @@ index e9aab13..d124705 100644 }, _updateHotCorners: function() { -@@ -423,6 +430,10 @@ const LayoutManager = new Lang.Class({ +@@ -449,6 +456,10 @@ const LayoutManager = new Lang.Class({ }, _updateKeyboardBox: function() { @@ -95,7 +62,7 @@ index e9aab13..d124705 100644 this.keyboardBox.set_position(this.keyboardMonitor.x, this.keyboardMonitor.y + this.keyboardMonitor.height); this.keyboardBox.set_size(this.keyboardMonitor.width, -1); -@@ -432,17 +443,27 @@ const LayoutManager = new Lang.Class({ +@@ -458,8 +469,13 @@ const LayoutManager = new Lang.Class({ this.screenShieldGroup.set_position(0, 0); this.screenShieldGroup.set_size(global.screen_width, global.screen_height); @@ -109,26 +76,9 @@ index e9aab13..d124705 100644 + this.panelBox.set_size(global.screen_width, -1); + } - if (this.keyboardIndex < 0) - this.keyboardIndex = this.primaryIndex; - else - this._updateKeyboardBox(); - -- this.trayBox.set_position(this.bottomMonitor.x, -- this.bottomMonitor.y + this.bottomMonitor.height); -- this.trayBox.set_size(this.bottomMonitor.width, -1); -+ if (this.bottomMonitor != null) { -+ this.trayBox.set_position(this.bottomMonitor.x, -+ this.bottomMonitor.y + this.bottomMonitor.height); -+ this.trayBox.set_size(this.bottomMonitor.width, -1); -+ } else { -+ this.trayBox.set_position(0, global.screen_height); -+ this.trayBox.set_size(global.screen_width, -1); -+ } + this.keyboardIndex = this.primaryIndex; }, - - _panelBoxChanged: function() { -@@ -461,9 +482,8 @@ const LayoutManager = new Lang.Class({ +@@ -480,9 +496,8 @@ const LayoutManager = new Lang.Class({ this._rightPanelBarrier = null; } @@ -140,26 +90,7 @@ index e9aab13..d124705 100644 this._rightPanelBarrier = new Meta.Barrier({ display: global.display, x1: primary.x + primary.width, y1: primary.y, x2: primary.x + primary.width, y2: primary.y + this.panelBox.height, -@@ -486,14 +506,16 @@ const LayoutManager = new Lang.Class({ - }, - - _updateTrayBarrier: function() { -- let monitor = this.bottomMonitor; -- - if (this._trayBarrier) { - this._trayPressure.removeBarrier(this._trayBarrier); - this._trayBarrier.destroy(); - this._trayBarrier = null; - } - -+ let monitor = this.bottomMonitor; -+ if (!monitor) -+ return; -+ - this._trayBarrier = new Meta.Barrier({ display: global.display, - x1: monitor.x, x2: monitor.x + monitor.width, - y1: monitor.y + monitor.height, y2: monitor.y + monitor.height, -@@ -544,7 +566,7 @@ const LayoutManager = new Lang.Class({ +@@ -522,7 +537,7 @@ const LayoutManager = new Lang.Class({ }, get keyboardMonitor() { @@ -168,7 +99,7 @@ index e9aab13..d124705 100644 }, get focusIndex() { -@@ -558,7 +580,7 @@ const LayoutManager = new Lang.Class({ +@@ -536,7 +551,7 @@ const LayoutManager = new Lang.Class({ }, get focusMonitor() { @@ -177,16 +108,18 @@ index e9aab13..d124705 100644 }, set keyboardIndex(v) { -@@ -613,7 +635,7 @@ const LayoutManager = new Lang.Class({ +@@ -591,7 +606,9 @@ const LayoutManager = new Lang.Class({ reactive: true }); this.addChrome(this._coverPane); - if (Meta.is_restart()) { -+ if (Meta.is_restart() || global.screen.get_n_monitors() == 0) { - // On restart, we don't do an animation - } else if (Main.sessionMode.isGreeter) { - this.panelBox.translation_y = -this.panelBox.height; -@@ -654,7 +676,7 @@ const LayoutManager = new Lang.Class({ ++ if (global.screen.get_n_monitors() == 0) { ++ // Don't do anything ++ } else if (Meta.is_restart()) { + // On restart, we don't do an animation. Force an update of the + // regions immediately so that maximized windows restore to the + // right size taking struts into account. +@@ -634,7 +651,7 @@ const LayoutManager = new Lang.Class({ }, _startupAnimation: function() { @@ -195,17 +128,16 @@ index e9aab13..d124705 100644 this._startupAnimationComplete(); else if (Main.sessionMode.isGreeter) this._startupAnimationGreeter(); -@@ -885,6 +907,9 @@ const LayoutManager = new Lang.Class({ - global.window_group.visible = windowsVisible; - global.top_window_group.visible = windowsVisible; - +@@ -863,6 +880,8 @@ const LayoutManager = new Lang.Class({ + _updateActorVisibility: function(actorData) { + if (!actorData.trackFullscreen) + return; + if (global.screen.get_n_monitors() == 0) + return; -+ - for (let i = 0; i < this._trackedActors.length; i++) { - let actorData = this._trackedActors[i], visible; - if (!actorData.trackFullscreen) -@@ -901,6 +926,9 @@ const LayoutManager = new Lang.Class({ + + let monitor = this.findMonitorForActor(actorData.actor); + actorData.actor.visible = !(global.window_group.visible && +@@ -880,6 +899,9 @@ const LayoutManager = new Lang.Class({ }, getWorkAreaForMonitor: function(monitorIndex) { @@ -215,17 +147,17 @@ index e9aab13..d124705 100644 // Assume that all workspaces will have the same // struts and pick the first one. let ws = global.screen.get_workspace_by_index(0); -@@ -1008,6 +1036,8 @@ const LayoutManager = new Lang.Class({ - // we don't create a strut for it at all. +@@ -985,6 +1007,8 @@ const LayoutManager = new Lang.Class({ + + let monitor = this.findMonitorForActor(actorData.actor); let side; - let primary = this.primaryMonitor; -+ if (!primary) -+ continue; - if (x1 <= primary.x && x2 >= primary.x + primary.width) { - if (y1 <= primary.y) ++ if (!monitor) ++ continue; + if (x1 <= monitor.x && x2 >= monitor.x + monitor.width) { + if (y1 <= monitor.y) side = Meta.Side.TOP; diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js -index eb837d8..d5e3353 100644 +index 7dd8bd1c0..abca97600 100644 --- a/js/ui/lookingGlass.js +++ b/js/ui/lookingGlass.js @@ -538,6 +538,8 @@ const Inspector = new Lang.Class({ @@ -247,34 +179,24 @@ index eb837d8..d5e3353 100644 let availableHeight = primary.height - Main.layoutManager.keyboardBox.height; let myHeight = Math.min(primary.height * 0.7, availableHeight * 0.9); diff --git a/js/ui/messageTray.js b/js/ui/messageTray.js -index f1ce7f2..0be69bc 100644 +index 4f1ab7fea..16b9ef6bc 100644 --- a/js/ui/messageTray.js +++ b/js/ui/messageTray.js -@@ -1995,7 +1995,8 @@ const MessageTray = new Lang.Class({ - - _checkTrayDwell: function(x, y) { - let monitor = Main.layoutManager.bottomMonitor; -- let shouldDwell = (x >= monitor.x && x <= monitor.x + monitor.width && -+ let shouldDwell = monitor && -+ (x >= monitor.x && x <= monitor.x + monitor.width && - y == monitor.y + monitor.height - 1); - if (shouldDwell) { - // We only set up dwell timeout when the user is not hovering over the tray -@@ -2434,7 +2435,8 @@ const MessageTray = new Lang.Class({ - let shouldShowNotification = (hasNotifications && this._trayState == State.HIDDEN && !this._traySummoned); +@@ -1224,7 +1224,8 @@ const MessageTray = new Lang.Class({ + if (this._notificationState == State.HIDDEN) { let nextNotification = this._notificationQueue[0] || null; - if (shouldShowNotification && nextNotification) { + if (hasNotifications && nextNotification) { - let limited = this._busy || Main.layoutManager.bottomMonitor.inFullscreen; + let bottomMonitor = Main.layoutManager.bottomMonitor; + let limited = this._busy || (bottomMonitor && bottomMonitor.inFullscreen); let showNextNotification = (!limited || nextNotification.forFeedback || nextNotification.urgency == Urgency.CRITICAL); - if (showNextNotification) { - let len = this._notificationQueue.length; + if (showNextNotification) + this._showNotification(); diff --git a/js/ui/panel.js b/js/ui/panel.js -index dd04601..fedc7cc 100644 +index eededfae1..d07bbaa7b 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js -@@ -931,7 +931,10 @@ const Panel = new Lang.Class({ +@@ -820,7 +820,10 @@ const Panel = new Lang.Class({ _getPreferredWidth: function(actor, forHeight, alloc) { alloc.min_size = -1; @@ -287,10 +209,10 @@ index dd04601..fedc7cc 100644 _getPreferredHeight: function(actor, forWidth, alloc) { diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js -index 3adc327..bb1c8fe 100644 +index 980ffd665..d19ce1f6a 100644 --- a/js/ui/workspaceThumbnail.js +++ b/js/ui/workspaceThumbnail.js -@@ -264,7 +264,8 @@ const WorkspaceThumbnail = new Lang.Class({ +@@ -275,7 +275,8 @@ const WorkspaceThumbnail = new Lang.Class({ this._createBackground(); let monitor = Main.layoutManager.primaryMonitor; @@ -301,5 +223,5 @@ index 3adc327..bb1c8fe 100644 let windows = global.get_window_actors().filter(Lang.bind(this, function(actor) { let win = actor.meta_window; -- -2.5.0 +2.12.0 diff --git a/SOURCES/video-memory-purge.patch b/SOURCES/video-memory-purge.patch deleted file mode 100644 index 0ce020c..0000000 --- a/SOURCES/video-memory-purge.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 9c0338bf22b1267059b26b3ad17033a22139c462 Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Fri, 3 Jun 2016 15:20:20 +0200 -Subject: [PATCH 1/3] main: Reload theme on loss of graphics context - -The theme machinery uses FBOs in some cases (mainly for shadows) which -need to be reloaded if we get a GL context lost error. - -https://bugzilla.gnome.org/show_bug.cgi?id=739178 ---- - js/ui/main.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/ui/main.js b/js/ui/main.js -index ad95ce0..789dd69 100644 ---- a/js/ui/main.js -+++ b/js/ui/main.js -@@ -191,6 +191,8 @@ function _initializeUI() { - return true; - }); - -+ global.display.connect('gl-video-memory-purged', loadTheme); -+ - // Provide the bus object for gnome-session to - // initiate logouts. - EndSessionDialog.init(); --- -2.7.4 - - -From fea1b97af6db2e8a237b011aa720da4c4a8b4622 Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Sun, 29 May 2016 19:42:25 +0200 -Subject: [PATCH 2/3] screenShield: Stop using an offscreen buffer for the - arrow actor - -This isn't a performance critical actor and the NVIDIA driver discards -offscreen buffers in some cases which would require us to go through -extra hoops to handle here which isn't worth it. - -https://bugzilla.gnome.org/show_bug.cgi?id=739178 ---- - js/ui/screenShield.js | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index 18f5124..cbde55c 100644 ---- a/js/ui/screenShield.js -+++ b/js/ui/screenShield.js -@@ -349,7 +349,6 @@ const Arrow = new Lang.Class({ - _init: function(params) { - this.parent(params); - this.x_fill = this.y_fill = true; -- this.set_offscreen_redirect(Clutter.OffscreenRedirect.ALWAYS); - - this._drawingArea = new St.DrawingArea(); - this._drawingArea.connect('repaint', Lang.bind(this, this._drawArrow)); --- -2.7.4 - - -From d4350a7c16f61f7efac59f3b0501668b510c12bb Mon Sep 17 00:00:00 2001 -From: Rui Matos -Date: Tue, 14 Jun 2016 17:55:35 +0200 -Subject: [PATCH 3/3] screenShield: Chain up Arrow's style_changed vfunc - -This makes style changes propagate to our child widget as they -should. - -https://bugzilla.gnome.org/show_bug.cgi?id=739178 ---- - js/ui/screenShield.js | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js -index cbde55c..e4c3429 100644 ---- a/js/ui/screenShield.js -+++ b/js/ui/screenShield.js -@@ -383,6 +383,8 @@ const Arrow = new Lang.Class({ - this._shadowHelper = St.ShadowHelper.new(this._shadow); - else - this._shadowHelper = null; -+ -+ this.parent(); - }, - - vfunc_paint: function() { --- -2.7.4 - diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec index 0c20277..c8f0af0 100644 --- a/SPECS/gnome-shell.spec +++ b/SPECS/gnome-shell.spec @@ -1,73 +1,62 @@ Name: gnome-shell -Version: 3.14.4 -Release: 53%{?dist} +Version: 3.22.3 +Release: 17%{?dist} Summary: Window management and application launching for GNOME Group: User Interface/Desktops License: GPLv2+ Provides: desktop-notification-daemon -URL: http://live.gnome.org/GnomeShell +URL: https://wiki.gnome.org/Projects/GnomeShell #VCS: git:git://git.gnome.org/gnome-shell -Source0: http://download.gnome.org/sources/gnome-shell/3.14/%{name}-%{version}.tar.xz -Source1: org.gnome.shell.gschema.override +Source0: http://download.gnome.org/sources/gnome-shell/3.22/%{name}-%{version}.tar.xz +Source1: org.gnome.shell.gschema.override # Replace Epiphany with Firefox in the default favourite apps list Patch1: gnome-shell-favourite-apps-firefox.patch Patch2: gnome-shell-favourite-apps-yelp.patch Patch3: gnome-shell-favourite-apps-terminal.patch -Patch10: support-headless-mode.patch -Patch11: fix-menu-ornament-oddities.patch -Patch12: 0001-st-button-Don-t-rely-on-hover-to-accept-clicks.patch -Patch13: 0001-theme-Use-font-relative-sizes-for-menu-widths.patch -Patch14: 0001-altTab-Don-t-error-out-if-we-don-t-have-windows-for-.patch -Patch15: fix-cycle-keybindings.patch - -Patch20: gnome-shell-3.14.4-EL7.3_translations.patch - -Patch50: fix-background-leaks.patch - -Patch60: drop-gsystem-dependency.patch -Patch61: 0001-messageTray-Emit-signal-when-notifications-are-enabl.patch -Patch62: pass-mode-parameter-with-accelerators.patch -Patch80: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch -Patch81: 0002-extensions-Add-a-SESSION_MODE-extension-type.patch -Patch82: 0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch -Patch83: 0001-extensionSystem-Notify-about-extension-issues-on-upd.patch -Patch84: 0001-ScreenShield-set-LockedHint-property-from-systemd.patch - -Patch90: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch -Patch91: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch -Patch92: 0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch -Patch93: 0001-network-Summarize-sections-with-too-many-devices.patch -Patch94: 0001-network-Always-show-primary-icon-when-connected.patch -Patch95: 0001-app-Add-a-construct-only-app-info-property.patch -Patch96: 0001-Don-t-crash-on-accesses-to-stale-window-backed-apps.patch - -Patch99: login-screen-backport.patch -Patch100: 0001-screenShield-unblank-when-inserting-smartcard.patch -Patch101: enforce-smartcard-at-unlock.patch -Patch102: disable-unlock-entry-until-question.patch - -Patch110: 0001-shell_dbus_acquire_name-Don-t-leak-error.patch -Patch111: 0002-shell_dbus_acquire_name-Don-t-leak-the-result.patch -Patch112: 0003-Check-error-of-g_dbus_proxy_new_sync-call.patch -Patch113: allow-timed-login-with-no-user-list.patch - -Patch114: video-memory-purge.patch - -# https://bugzilla.gnome.org/show_bug.cgi?id=761566 -Patch120: fix-maximized-windows-flickering-to-the-wrong-struts.patch - -%define clutter_version 1.15.90 +# GDM/Lock stuff +Patch10: 0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch +Patch11: 0001-gdm-use-password-authentication-if-all-schemes-are-d.patch +Patch12: 0001-screenShield-unblank-when-inserting-smartcard.patch +Patch13: enforce-smartcard-at-unlock.patch +Patch14: disable-unlock-entry-until-question.patch +Patch15: allow-timed-login-with-no-user-list.patch +Patch16: 0001-gdm-Handle-absence-of-Fprint.Manager-service.patch +Patch17: respect-lockscreen-lockdown.patch +Patch18: 0001-gdmUtil-Fix-auth-prompt-drawing-over-user-list.patch +Patch19: 0001-data-install-process-working.svg-to-filesystem.patch +Patch20: 0001-authPrompt-allow-empty-response-to-PAM-messages.patch +Patch21: 0001-objectManager-handle-proxies-coming-and-going.patch +Patch22: 0002-objectManager-handle-object-manager-sending-empty-ar.patch +Patch23: 0001-loginDialog-make-info-messages-themed.patch + +# Misc. +Patch30: support-headless-mode.patch +Patch31: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch +Patch32: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch +Patch33: 0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch +Patch34: 0001-extensionSystem-Notify-about-extension-issues-on-upd.patch +Patch35: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch +Patch36: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch +Patch37: 0001-network-Summarize-sections-with-too-many-devices.patch +Patch38: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch +Patch39: keep-vpn-list-sorted.patch +Patch40: 0001-network-Close-Wifi-selection-dialog-when-appropriate.patch +Patch41: 0001-calendar-server-Remove-unused-variables-and-function.patch +Patch42: 0001-st-Add-missing-NULL-check.patch +patch43: 0001-network-Fix-initial-visibility-of-summary-item.patch + %define gnome_bluetooth_version 1:3.9.0 -%define gobject_introspection_version 1.41.0 +%define gobject_introspection_version 1.45.4 %define gjs_version 1.39.0 -%define mutter_version 3.14.4-31 -%define eds_version 3.5.3 +%define mutter_version 3.22.1 +%define gtk3_version 3.15.0 +%define eds_version 3.13.90 %define gnome_desktop_version 3.7.90 %define json_glib_version 0.13.2 -%define gsettings_desktop_schemas_version 3.11.4 +%define gsettings_desktop_schemas_version 3.21.3 %define caribou_version 0.4.8 %define libcroco_version 0.6.8 %define telepathy_logger_version 0.2.6 @@ -76,10 +65,12 @@ Patch120: fix-maximized-windows-flickering-to-the-wrong-struts.patch ## Needed when we re-autogen BuildRequires: autoconf >= 2.53 BuildRequires: automake >= 1.10 +BuildRequires: gettext-devel +BuildRequires: git BuildRequires: gnome-common >= 2.2.0 BuildRequires: libtool >= 1.4.3 BuildRequires: caribou-devel >= %{caribou_version} -BuildRequires: clutter-devel >= %{clutter_version} +BuildRequires: chrpath BuildRequires: dbus-glib-devel BuildRequires: desktop-file-utils BuildRequires: evolution-data-server-devel >= %{eds_version} @@ -98,10 +89,15 @@ BuildRequires: telepathy-glib-devel BuildRequires: telepathy-logger-devel >= %{telepathy_logger_version} # for screencast recorder functionality BuildRequires: gstreamer1-devel >= %{gstreamer_version} -BuildRequires: gtk3-devel -BuildRequires: intltool +BuildRequires: gtk3-devel >= %{gtk3_version} +BuildRequires: gettext >= 0.19.6 BuildRequires: libcanberra-devel BuildRequires: libcroco-devel >= %{libcroco_version} +%if 0%{?rhel} +BuildRequires: python +%else +BuildRequires: python3 +%endif # for barriers BuildRequires: libXfixes-devel >= 5.0 @@ -123,6 +119,7 @@ Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} # from the command line Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} Requires: gjs%{?_isa} >= %{gjs_version} +Requires: gtk3%{?_isa} >= %{gtk3_version} # needed for loading SVG's via gdk-pixbuf Requires: librsvg2%{?_isa} # needed as it is now split from Clutter @@ -144,10 +141,14 @@ Requires: caribou%{?_isa} >= %{caribou_version} # needed for the user menu Requires: accountsservice-libs%{?_isa} Requires: gdm-libs%{?_isa} -Requires: clutter%{?_isa} >= %{clutter_version} # needed for settings items in menus -Requires: control-center - +Requires: control-center +# needed by some utilities +%if 0%{?rhel} +Requires: python%{_isa} +%else +Requires: python3%{_isa} +%endif %description GNOME Shell provides core user interface functions for the GNOME 3 desktop, @@ -167,53 +168,14 @@ Gnome Shell for live extension enabling and disabling. It can be used only by extensions.gnome.org. %prep -%setup -q -%patch1 -p1 -b .firefox -%patch2 -p1 -b .yelp -%patch3 -p1 -b .terminal - -%patch10 -p1 -b .support-headless-start -%patch11 -p1 -b .fix-menu-ornament-oddities -%patch12 -p1 -b .fix-st-button-clicks -%patch13 -p1 -b .use-font-relative-menu-widths -%patch14 -p1 -b .fix-windowless-apps-in-switcher -%patch15 -p1 -b .fix-cycle-keybindings - -%patch20 -p1 -b .update-translations - -%patch50 -p1 -b .fix-background-leaks - -%patch60 -p1 -b .drop-gsystem-dependency -%patch61 -p1 -b .fix-enable-notifications -%patch62 -p1 -b .pass-mode-parameter-with-accelerators - -%patch80 -p1 -%patch81 -p1 -%patch82 -p1 -b .fix-magnifier-spew -%patch83 -p1 -b .extension-update-notification -%patch84 -p1 -b .set-locked-hint - -%patch90 -p1 -b .panel-add-an-icon-to-the-ActivitiesButton -%patch91 -p1 -b .change-fallback-app-name -%patch92 -p1 -b .honor-timed-login-delay-even-if-animations-disabled -%patch93 -p1 -b .summarize-network-device-sections -%patch94 -p1 -b .always-show-network-icon-when-connected -%patch95 -p1 -b .allow-contructing-app-from-info -%patch96 -p1 -b .dont-crash-on-accesses-to-stale-window-backed-apps - -%patch99 -p1 -b .login-screen-backport -%patch100 -p1 -b .unblank-when-inserting-smartcard -%patch101 -p1 -b .enforce-smartcard-at-unlock-time -%patch102 -p1 -b .disable-unlock-entry-until-question - -%patch110 -p1 -b .dont-leak -%patch111 -p1 -b .dont-leak-more -%patch112 -p1 -b .clean-exit -%patch113 -p1 -b .allow-timed-login-with-no-user-list - -%patch114 -p1 -b .video-memory-purge - -%patch120 -p1 -b .wrong-struts +%autosetup -S git + +%if 0%{?rhel} +# Use Python 2 +sed -i -e 's|/usr/bin/python3|/usr/bin/python|' tools/check-for-missing.py +sed -i -e 's/AM_PATH_PYTHON(\[3\])/AM_PATH_PYTHON([2.5])/' configure.ac +autoreconf -fi +%endif %build (if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; fi; @@ -221,19 +183,23 @@ be used only by extensions.gnome.org. make V=1 %{?_smp_mflags} %install -make install DESTDIR=$RPM_BUILD_ROOT +%make_install rm -rf %{buildroot}/%{_libdir}/mozilla/plugins/*.la -desktop-file-validate %{buildroot}%{_datadir}/applications/gnome-shell.desktop -desktop-file-validate %{buildroot}%{_datadir}/applications/gnome-shell-extension-prefs.desktop -desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.desktop -rm -f %{buildroot}%{_datadir}/applications/gnome-shell-wayland.desktop +# Create empty directories where other packages can drop extensions +mkdir -p %{buildroot}%{_datadir}/gnome-shell/extensions +mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers cp %{SOURCE1} %{buildroot}/%{_datadir}/glib-2.0/schemas %find_lang %{name} +%check +desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/gnome-shell-extension-prefs.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.desktop + %preun glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null ||: @@ -241,19 +207,22 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null ||: %files -f %{name}.lang -%doc COPYING README +%license COPYING +%doc README %{_bindir}/gnome-shell %{_bindir}/gnome-shell-extension-tool %{_bindir}/gnome-shell-perf-tool %{_bindir}/gnome-shell-extension-prefs %{_datadir}/glib-2.0/schemas/*.xml %{_datadir}/glib-2.0/schemas/*.override -%{_datadir}/applications/gnome-shell.desktop +%{_datadir}/applications/org.gnome.Shell.desktop %{_datadir}/applications/gnome-shell-extension-prefs.desktop %{_datadir}/applications/evolution-calendar.desktop %{_datadir}/applications/org.gnome.Shell.PortalHelper.desktop %{_datadir}/gnome-control-center/keybindings/50-gnome-shell-system.xml -%{_datadir}/gnome-shell/ +%{_datadir}/gnome-shell +%{_datadir}/gnome-shell/theme +%{_datadir}/gnome-shell/theme/*.svg %{_datadir}/dbus-1/services/org.gnome.Shell.CalendarServer.service %{_datadir}/dbus-1/services/org.gnome.Shell.HotplugSniffer.service %{_datadir}/dbus-1/services/org.gnome.Shell.PortalHelper.service @@ -261,6 +230,10 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null %{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml %{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml %{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml +# Co own directory instead of pulling in xdg-desktop-portal - we +# are providing a backend to the portal, not depending on it +%dir %{_datadir}/xdg-desktop-portal/portals/ +%{_datadir}/xdg-desktop-portal/portals/gnome-shell.portal %{_libdir}/gnome-shell/ %{_libexecdir}/gnome-shell-calendar-server %{_libexecdir}/gnome-shell-perf-helper @@ -279,6 +252,79 @@ glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null %{_libdir}/mozilla/plugins/*.so %changelog +* Mon Jun 26 2017 Ray Strode - 3.22.3-17 +- Fix PAM info messages in unlock screen + Related: #1449359 + +* Wed Jun 14 2017 Ray Strode - 3.22.3-16 +- Address race with g-s-d startup + Related: #1450176 + +* Wed Jun 14 2017 Ray Strode 3.22.3-15 +- Allow PAM modules to ask questions that require empty answers + Resolves: #1448503 + +* Thu Jun 08 2017 Ray Strode - 3.22.3-14 +- fix unlock after upgrade + Related: #1448786 +- switch from setup to autosetup -S git for easier patch maintenance + +* Thu Jun 08 2017 Florian Müllner - 3.22.3-13 +- Drop gnome-session-xsession dependency again +- Resolves: #1449246 + +* Wed Jun 07 2017 Ray Strode - 3.22.3-12 +- Fix escape after password failure + Resolves: #1446759 + +* Tue Jun 06 2017 Ray Strode - 3.22.3-11 +- Correct typo in timed login patch + Related: #1446762 + +* Wed May 31 2017 Florian Müllner - 3.22.3-10 +- Fix initial visibility of network summary items +- Resolves: #1435376 + +* Fri Apr 28 2017 Florian Müllner - 3.22.3-9 +- Re-add requirements dropped in the rebase +- Resolves: #1386959 + +* Wed Mar 22 2017 Florian Müllner - 3.22.3-8 +- Fix some coverity warnings +- Resolves: #1386959 + +* Tue Mar 21 2017 Florian Müllner - 3.22.3-7 +- Respect lockscreen lockdown +- Resolves: #1414898 + +* Tue Mar 21 2017 Florian Müllner - 3.22.3-7 +- Fix previous patch after re-testing +- Resolves: #1259538 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-6 +- Handle missing fprint service +- Resolves: #1259538 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-5 +- Close Wifi selection dialog on screen lock +- Resolves: #1379468 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-4 +- Keep VPN list sorted +- Resolves: #1404663 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-3 +- Bring back workspaces submenu for static workspaces +- Resolves: #1367319 + +* Thu Mar 09 2017 Florian Müllner - 3.22.3-2 +- Re-add downstream patches +- Resolves: #1386959 + +* Thu Feb 16 2017 Kalev Lember - 3.22.3-1 +- Update to 3.22.3 +- Resolves: #1386959 + * Fri Sep 09 2016 Florian Müllner - 3.14.4-53 - Improve cycle keybindings Resolves: #1306670