Compare commits
	
		
			46 Commits
		
	
	
		
			main
			...
			gnome-3-18
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | a8c769e0ff | ||
|   | efd8b2d3a6 | ||
|   | 2b8d16e685 | ||
|   | 598cf48973 | ||
|   | ce811ec063 | ||
|   | 535fb0e2a0 | ||
|   | 281101d942 | ||
|   | 045e1f01af | ||
|   | db252a65f8 | ||
|   | 358ee88e1c | ||
|   | cdc9652f5b | ||
|   | fcfa752fbd | ||
|   | 4651b7adcc | ||
|   | 4562a431ad | ||
|   | f5d9d188a7 | ||
|   | cca01e3f02 | ||
|   | 1874f3605d | ||
|   | 3001f3376c | ||
|   | 491e511a96 | ||
|   | 293bc98394 | ||
|   | 2ed3482d54 | ||
|   | 4e4414a84d | ||
|   | 934a08f28f | ||
|   | 732ea2a91e | ||
|   | aae6a3cbbd | ||
|   | f67a6589bd | ||
|   | 88c1fa8a3e | ||
|   | 012443bffa | ||
|   | 61b14c7f04 | ||
|   | 13dff7d5eb | ||
|   | 55087d03e4 | ||
|   | e7528bf2fa | ||
|   | 9e64a1e3d6 | ||
|   | 007ac93cd6 | ||
|   | d8336efddc | ||
|   | a83f822512 | ||
|   | f64d64035a | ||
|   | 5583f881df | ||
|   | 10e4382a7d | ||
|   | 9f0ee0dc9f | ||
|   | 2f82f783f2 | ||
|   | 4d066e3916 | ||
|   | 342fbd16d3 | ||
|   | 8ae0c69ccf | ||
|   | bed660bdf4 | ||
|   | ab2ca17b76 | 
							
								
								
									
										52
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										52
									
								
								NEWS
									
									
									
									
									
								
							| @@ -1,3 +1,55 @@ | ||||
| 3.18.5 | ||||
| ====== | ||||
| * Fix deleting chat notifications in calendar [Florian; #747991] | ||||
| * Fix recount issue in network agent component [Christophe; #759708] | ||||
| * Plug a memory leak [Aaron; #735705] | ||||
| * Do not assert on non-fatal runtime errors [Florian; #765061] | ||||
|  | ||||
| Contributors: | ||||
|   Christophe Fergeau, Florian Müllner, Aaron Plattner | ||||
|  | ||||
| Translations: | ||||
|   Matej Urbančič [sl], Marek Černocký [cs] | ||||
|  | ||||
| 3.18.4 | ||||
| ====== | ||||
| * Fix thumbnail scaling in window switcher on HiDPI [Florian; #758676] | ||||
| * loginDialog: Update user list on user changes [Michael; #758568] | ||||
| * gdm: Do not allow bypassing disabled Sign In button  [Michael; #746180] | ||||
| * Correctly identify VPN secret requests [Lubomir; #760999] | ||||
|  | ||||
| Contributors: | ||||
|   Michael Catanzaro, Florian Müllner, Lubomir Rintel | ||||
|  | ||||
| Translations: | ||||
|   Kristjan SCHMIDT [eo], Daniel Korostil [uk], Andika Triwidada [id] | ||||
|  | ||||
| 3.18.3 | ||||
| ====== | ||||
| * Fix browser plugin crash in Firefox [Carlos; #737932, #757940] | ||||
|  | ||||
| Contributors: | ||||
|   Carlos Garcia Campos | ||||
|  | ||||
| 3.18.2 | ||||
| ====== | ||||
| * Fix fullscreen animation glitches [Florian, Cosimo; #756697, #756714] | ||||
| * Fix window menu being closed immediately in top orientation [Rui; #756605] | ||||
| * Respect text-scaling factor under wayland [Owen; #756447] | ||||
| * Fix login screen getting stuck after authentification [Ray; #754814] | ||||
| * Fix overview being toggled while still animating [Rui; #756925] | ||||
| * Improve robustness of browser plugin [Carlos; #737932, #757940] | ||||
| * Misc. bug fixes [Owen, Florian; #756983, #757150, #757779] | ||||
|  | ||||
| Contributors: | ||||
|   Cosimo Cecchi, Carlos Garcia Campos, Rui Matos, Florian Müllner, Ray Strode, | ||||
|   Owen W. Taylor | ||||
|  | ||||
| Translations: | ||||
|   Kjartan Maraas [nb], Khaled Hosny [ar], Sveinn í Felli [is], | ||||
|   Balázs Meskó [hu], Daniel Șerbănescu [ro], Aron Xu [zh_CN], | ||||
|   Anthony Fok [zh_TW] | ||||
|  | ||||
| 3.18.1 | ||||
| ====== | ||||
| * Fix screen freezes when a notification is pushed [Carlos; #755425] | ||||
|   | ||||
| @@ -3,7 +3,10 @@ mozillalibdir = $(BROWSER_PLUGIN_DIR) | ||||
|  | ||||
| mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined | ||||
| # Browsers can unload and reload the module while browsing, which is not supported by GObject. | ||||
| # We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded. | ||||
| # https://bugzilla.gnome.org/show_bug.cgi?id=737932 | ||||
| libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete | ||||
|  | ||||
| libgnome_shell_browser_plugin_la_LIBADD = 	\ | ||||
| 	$(BROWSER_PLUGIN_LIBS) | ||||
|   | ||||
| @@ -43,10 +43,6 @@ | ||||
|  | ||||
| #define EXTENSION_DISABLE_VERSION_CHECK_KEY "disable-extension-version-validation" | ||||
|  | ||||
| typedef struct { | ||||
|   GDBusProxy *proxy; | ||||
| } PluginData; | ||||
|  | ||||
| static NPNetscapeFuncs funcs; | ||||
|  | ||||
| static inline gchar * | ||||
| @@ -145,121 +141,6 @@ check_origin_and_protocol (NPP instance) | ||||
|   return ret; | ||||
| } | ||||
|  | ||||
| /* =============== public entry points =================== */ | ||||
|  | ||||
| NPError | ||||
| NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin) | ||||
| { | ||||
|   /* global initialization routine, called once when plugin | ||||
|      is loaded */ | ||||
|  | ||||
|   g_debug ("plugin loaded"); | ||||
|  | ||||
|   memcpy (&funcs, pfuncs, sizeof (funcs)); | ||||
|  | ||||
|   plugin->size = sizeof(NPPluginFuncs); | ||||
|   plugin->newp = NPP_New; | ||||
|   plugin->destroy = NPP_Destroy; | ||||
|   plugin->getvalue = NPP_GetValue; | ||||
|   plugin->setwindow = NPP_SetWindow; | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_Shutdown(void) | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| const char* | ||||
| NP_GetMIMEDescription(void) | ||||
| { | ||||
|   return PLUGIN_MIME_STRING; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_GetValue(void         *instance, | ||||
|             NPPVariable   variable, | ||||
|             void         *value) | ||||
| { | ||||
|   switch (variable) { | ||||
|   case NPPVpluginNameString: | ||||
|     *(char**)value = PLUGIN_NAME; | ||||
|     break; | ||||
|   case NPPVpluginDescriptionString: | ||||
|     *(char**)value = PLUGIN_DESCRIPTION; | ||||
|     break; | ||||
|   default: | ||||
|     ; | ||||
|   } | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_New(NPMIMEType    mimetype, | ||||
|         NPP           instance, | ||||
|         uint16_t      mode, | ||||
|         int16_t       argc, | ||||
|         char        **argn, | ||||
|         char        **argv, | ||||
|         NPSavedData  *saved) | ||||
| { | ||||
|   /* instance initialization function */ | ||||
|   PluginData *data; | ||||
|   GError *error = NULL; | ||||
|  | ||||
|   g_debug ("plugin created"); | ||||
|  | ||||
|   if (!check_origin_and_protocol (instance)) | ||||
|     return NPERR_GENERIC_ERROR; | ||||
|  | ||||
|   data = g_slice_new (PluginData); | ||||
|   instance->pdata = data; | ||||
|  | ||||
|   data->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, | ||||
|                                                G_DBUS_PROXY_FLAGS_NONE, | ||||
|                                                NULL, /* interface info */ | ||||
|                                                "org.gnome.Shell", | ||||
|                                                "/org/gnome/Shell", | ||||
|                                                "org.gnome.Shell.Extensions", | ||||
|                                                NULL, /* GCancellable */ | ||||
|                                                &error); | ||||
|   if (!data->proxy) | ||||
|     { | ||||
|       /* ignore error if the shell is not running, otherwise warn */ | ||||
|       if (error->domain != G_DBUS_ERROR || | ||||
|           error->code != G_DBUS_ERROR_NAME_HAS_NO_OWNER) | ||||
|         { | ||||
|           g_warning ("Failed to set up Shell proxy: %s", error->message); | ||||
|         } | ||||
|       g_clear_error (&error); | ||||
|       return NPERR_GENERIC_ERROR; | ||||
|     } | ||||
|  | ||||
|   g_debug ("plugin created successfully"); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_Destroy(NPP           instance, | ||||
| 	    NPSavedData **saved) | ||||
| { | ||||
|   /* instance finalization function */ | ||||
|  | ||||
|   PluginData *data = instance->pdata; | ||||
|  | ||||
|   g_debug ("plugin destroyed"); | ||||
|  | ||||
|   g_object_unref (data->proxy); | ||||
|  | ||||
|   g_slice_free (PluginData, data); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| /* =================== scripting interface =================== */ | ||||
|  | ||||
| typedef struct { | ||||
| @@ -344,45 +225,18 @@ static NPObject * | ||||
| plugin_object_allocate (NPP      instance, | ||||
|                         NPClass *klass) | ||||
| { | ||||
|   PluginData *data = instance->pdata; | ||||
|   PluginObject *obj = g_slice_new0 (PluginObject); | ||||
|   PluginObject *obj = (PluginObject *) funcs.memalloc (sizeof (PluginObject)); | ||||
|  | ||||
|   memset (obj, 0, sizeof (PluginObject)); | ||||
|   obj->instance = instance; | ||||
|   obj->proxy = g_object_ref (data->proxy); | ||||
|   obj->settings = g_settings_new (SHELL_SCHEMA); | ||||
|   obj->signal_id = g_signal_connect (obj->proxy, "g-signal", | ||||
|                                      G_CALLBACK (on_shell_signal), obj); | ||||
|  | ||||
|   obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION, | ||||
|                                          "org.gnome.Shell", | ||||
|                                          G_BUS_NAME_WATCHER_FLAGS_NONE, | ||||
|                                          on_shell_appeared, | ||||
|                                          NULL, | ||||
|                                          obj, | ||||
|                                          NULL); | ||||
|  | ||||
|   g_debug ("plugin object created"); | ||||
|  | ||||
|   return (NPObject*)obj; | ||||
|   return (NPObject*) obj; | ||||
| } | ||||
|  | ||||
| static void | ||||
| plugin_object_deallocate (NPObject *npobj) | ||||
| { | ||||
|   PluginObject *obj = (PluginObject*)npobj; | ||||
|  | ||||
|   g_signal_handler_disconnect (obj->proxy, obj->signal_id); | ||||
|   g_object_unref (obj->proxy); | ||||
|  | ||||
|   if (obj->listener) | ||||
|     funcs.releaseobject (obj->listener); | ||||
|  | ||||
|   if (obj->watch_name_id) | ||||
|     g_bus_unwatch_name (obj->watch_name_id); | ||||
|  | ||||
|   g_debug ("plugin object destroyed"); | ||||
|  | ||||
|   g_slice_free (PluginObject, obj); | ||||
|   funcs.memfree (npobj); | ||||
| } | ||||
|  | ||||
| static inline gboolean | ||||
| @@ -1033,6 +887,149 @@ init_methods_and_properties (void) | ||||
|   onextension_changed_id = funcs.getstringidentifier ("onchange"); | ||||
| } | ||||
|  | ||||
| /* =============== public entry points =================== */ | ||||
|  | ||||
| NPError | ||||
| NP_Initialize(NPNetscapeFuncs *pfuncs, NPPluginFuncs *plugin) | ||||
| { | ||||
|   /* global initialization routine, called once when plugin | ||||
|      is loaded */ | ||||
|  | ||||
|   g_debug ("plugin loaded"); | ||||
|  | ||||
|   memcpy (&funcs, pfuncs, sizeof (funcs)); | ||||
|  | ||||
|   plugin->size = sizeof(NPPluginFuncs); | ||||
|   plugin->newp = NPP_New; | ||||
|   plugin->destroy = NPP_Destroy; | ||||
|   plugin->getvalue = NPP_GetValue; | ||||
|   plugin->setwindow = NPP_SetWindow; | ||||
|   plugin->event = NPP_HandleEvent; | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_Shutdown(void) | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| const char* | ||||
| NP_GetMIMEDescription(void) | ||||
| { | ||||
|   return PLUGIN_MIME_STRING; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NP_GetValue(void         *instance, | ||||
|             NPPVariable   variable, | ||||
|             void         *value) | ||||
| { | ||||
|   switch (variable) { | ||||
|   case NPPVpluginNameString: | ||||
|     *(char**)value = PLUGIN_NAME; | ||||
|     break; | ||||
|   case NPPVpluginDescriptionString: | ||||
|     *(char**)value = PLUGIN_DESCRIPTION; | ||||
|     break; | ||||
|   default: | ||||
|     ; | ||||
|   } | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_New(NPMIMEType    mimetype, | ||||
|         NPP           instance, | ||||
|         uint16_t      mode, | ||||
|         int16_t       argc, | ||||
|         char        **argn, | ||||
|         char        **argv, | ||||
|         NPSavedData  *saved) | ||||
| { | ||||
|   /* instance initialization function */ | ||||
|   PluginObject *obj; | ||||
|   GError *error = NULL; | ||||
|  | ||||
|   g_debug ("plugin created"); | ||||
|  | ||||
|   if (!check_origin_and_protocol (instance)) | ||||
|     return NPERR_GENERIC_ERROR; | ||||
|  | ||||
|   /* set windowless mode */ | ||||
|   funcs.setvalue(instance, NPPVpluginWindowBool, NULL); | ||||
|  | ||||
|   g_debug ("creating scriptable object"); | ||||
|   init_methods_and_properties (); | ||||
|   obj = (PluginObject *) funcs.createobject (instance, &plugin_class); | ||||
|   instance->pdata = obj; | ||||
|  | ||||
|   obj->proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SESSION, | ||||
|                                               G_DBUS_PROXY_FLAGS_NONE, | ||||
|                                               NULL, /* interface info */ | ||||
|                                               "org.gnome.Shell", | ||||
|                                               "/org/gnome/Shell", | ||||
|                                               "org.gnome.Shell.Extensions", | ||||
|                                               NULL, /* GCancellable */ | ||||
|                                               &error); | ||||
|   if (!obj->proxy) | ||||
|     { | ||||
|       /* ignore error if the shell is not running, otherwise warn */ | ||||
|       if (!g_error_matches (error, G_DBUS_ERROR, G_DBUS_ERROR_NAME_HAS_NO_OWNER)) | ||||
|         { | ||||
|           g_warning ("Failed to set up Shell proxy: %s", error->message); | ||||
|         } | ||||
|       g_clear_error (&error); | ||||
|       return NPERR_GENERIC_ERROR; | ||||
|     } | ||||
|  | ||||
|   obj->settings = g_settings_new (SHELL_SCHEMA); | ||||
|   obj->signal_id = g_signal_connect (obj->proxy, "g-signal", | ||||
|                                      G_CALLBACK (on_shell_signal), obj); | ||||
|   obj->watch_name_id = g_bus_watch_name (G_BUS_TYPE_SESSION, | ||||
|                                          "org.gnome.Shell", | ||||
|                                          G_BUS_NAME_WATCHER_FLAGS_NONE, | ||||
|                                          on_shell_appeared, | ||||
|                                          NULL, | ||||
|                                          obj, | ||||
|                                          NULL); | ||||
|  | ||||
|   g_debug ("plugin created successfully"); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_Destroy(NPP           instance, | ||||
| 	    NPSavedData **saved) | ||||
| { | ||||
|   /* instance finalization function */ | ||||
|   PluginObject *obj = (PluginObject *) instance->pdata; | ||||
|  | ||||
|   if (!obj) | ||||
|     return NPERR_INVALID_INSTANCE_ERROR; | ||||
|  | ||||
|   g_debug ("plugin destroyed"); | ||||
|  | ||||
|   g_signal_handler_disconnect (obj->proxy, obj->signal_id); | ||||
|   g_object_unref (obj->proxy); | ||||
|  | ||||
|   if (obj->listener) | ||||
|     funcs.releaseobject (obj->listener); | ||||
|  | ||||
|   if (obj->restart_listener) | ||||
|     funcs.releaseobject (obj->restart_listener); | ||||
|  | ||||
|   if (obj->watch_name_id) | ||||
|     g_bus_unwatch_name (obj->watch_name_id); | ||||
|  | ||||
|   funcs.releaseobject((NPObject *)obj); | ||||
|  | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| NPError | ||||
| NPP_GetValue(NPP          instance, | ||||
| 	     NPPVariable  variable, | ||||
| @@ -1043,13 +1040,11 @@ NPP_GetValue(NPP          instance, | ||||
|   switch (variable) { | ||||
|   case NPPVpluginScriptableNPObject: | ||||
|     g_debug ("creating scriptable object"); | ||||
|     init_methods_and_properties (); | ||||
|     if (!instance->pdata) | ||||
|       return NPERR_INVALID_INSTANCE_ERROR; | ||||
|  | ||||
|     *(NPObject**)value = funcs.createobject (instance, &plugin_class); | ||||
|     break; | ||||
|  | ||||
|   case NPPVpluginNeedsXEmbed: | ||||
|     *(bool *)value = TRUE; | ||||
|     funcs.retainobject (instance->pdata); | ||||
|     *(NPObject**)value = instance->pdata; | ||||
|     break; | ||||
|  | ||||
|   default: | ||||
| @@ -1067,3 +1062,11 @@ NPP_SetWindow(NPP          instance, | ||||
| { | ||||
|   return NPERR_NO_ERROR; | ||||
| } | ||||
|  | ||||
| int16_t | ||||
| NPP_HandleEvent(NPP   instance, | ||||
|                 void *event) | ||||
| { | ||||
|   /* Ignore the event */ | ||||
|   return FALSE; | ||||
| } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| AC_PREREQ(2.63) | ||||
| AC_INIT([gnome-shell],[3.18.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||
| AC_INIT([gnome-shell],[3.18.5],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) | ||||
| AX_IS_RELEASE([git-directory]) | ||||
|  | ||||
| AC_CONFIG_HEADERS([config.h]) | ||||
|   | ||||
| @@ -189,7 +189,8 @@ const AuthPrompt = new Lang.Class({ | ||||
|                                              this._updateNextButtonSensitivity(this._entry.text.length > 0); | ||||
|                                          })); | ||||
|         this._entry.clutter_text.connect('activate', Lang.bind(this, function() { | ||||
|             this.emit('next'); | ||||
|             if (this.nextButton.reactive) | ||||
|                 this.emit('next'); | ||||
|         })); | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -96,7 +96,7 @@ const UserListItem = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _onDestroy: function() { | ||||
|         this._user.disconnect(this._userChangedId); | ||||
|         this.user.disconnect(this._userChangedId); | ||||
|     }, | ||||
|  | ||||
|     _onClicked: function() { | ||||
| @@ -212,6 +212,10 @@ const UserList = new Lang.Class({ | ||||
|         return item; | ||||
|     }, | ||||
|  | ||||
|     containsUser: function(user) { | ||||
|         return this._items[user.get_user_name()] != null; | ||||
|     }, | ||||
|  | ||||
|     addUser: function(user) { | ||||
|         if (!user.is_loaded) | ||||
|             return; | ||||
| @@ -924,11 +928,7 @@ const LoginDialog = new Lang.Class({ | ||||
|                            }, | ||||
|                            onUpdateScope: this, | ||||
|                            onComplete: function() { | ||||
|                                let id = Mainloop.idle_add(Lang.bind(this, function() { | ||||
|                                    this._greeter.call_start_session_when_ready_sync(serviceName, true, null); | ||||
|                                    return GLib.SOURCE_REMOVE; | ||||
|                                })); | ||||
|                                GLib.Source.set_name_by_id(id, '[gnome-shell] this._greeter.call_start_session_when_ready_sync'); | ||||
|                                this._greeter.call_start_session_when_ready_sync(serviceName, true, null); | ||||
|                            }, | ||||
|                            onCompleteScope: this }); | ||||
|     }, | ||||
| @@ -1130,6 +1130,10 @@ const LoginDialog = new Lang.Class({ | ||||
|             this._userManager.disconnect(this._userRemovedId); | ||||
|             this._userRemovedId = 0; | ||||
|         } | ||||
|         if (this._userChangedId) { | ||||
|             this._userManager.disconnect(this._userChangedId); | ||||
|             this._userChangedId = 0; | ||||
|         } | ||||
|         this._textureCache.disconnect(this._updateLogoTextureId); | ||||
|         Main.layoutManager.disconnect(this._startupCompleteId); | ||||
|         if (this._settings) { | ||||
| @@ -1176,6 +1180,14 @@ const LoginDialog = new Lang.Class({ | ||||
|                                                             this._userList.removeUser(user); | ||||
|                                                         })); | ||||
|  | ||||
|         this._userChangedId = this._userManager.connect('user-changed', | ||||
|                                                         Lang.bind(this, function(userManager, user) { | ||||
|                                                             if (this._userList.containsUser(user) && user.locked) | ||||
|                                                                 this._userList.removeUser(user); | ||||
|                                                             else if (!this._userList.containsUser(user) && !user.locked) | ||||
|                                                                 this._userList.addUser(user); | ||||
|                                                         })); | ||||
|  | ||||
|         return GLib.SOURCE_REMOVE; | ||||
|     }, | ||||
|  | ||||
|   | ||||
| @@ -685,15 +685,17 @@ const WindowIcon = new Lang.Class({ | ||||
|  | ||||
|         this._icon.destroy_all_children(); | ||||
|  | ||||
|         let scaleFactor = St.ThemeContext.get_for_stage(global.stage).scale_factor; | ||||
|  | ||||
|         switch (mode) { | ||||
|             case AppIconMode.THUMBNAIL_ONLY: | ||||
|                 size = WINDOW_PREVIEW_SIZE; | ||||
|                 this._icon.add_actor(_createWindowClone(mutterWindow, WINDOW_PREVIEW_SIZE)); | ||||
|                 this._icon.add_actor(_createWindowClone(mutterWindow, size * scaleFactor)); | ||||
|                 break; | ||||
|  | ||||
|             case AppIconMode.BOTH: | ||||
|                 size = WINDOW_PREVIEW_SIZE; | ||||
|                 this._icon.add_actor(_createWindowClone(mutterWindow, WINDOW_PREVIEW_SIZE)); | ||||
|                 this._icon.add_actor(_createWindowClone(mutterWindow, size * scaleFactor)); | ||||
|  | ||||
|                 if (this.app) | ||||
|                     this._icon.add_actor(this._createAppIcon(this.app, | ||||
| @@ -705,7 +707,7 @@ const WindowIcon = new Lang.Class({ | ||||
|                 this._icon.add_actor(this._createAppIcon(this.app, size)); | ||||
|         } | ||||
|  | ||||
|         this._icon.set_size(size, size); | ||||
|         this._icon.set_size(size * scaleFactor, size * scaleFactor); | ||||
|     }, | ||||
|  | ||||
|     _createAppIcon: function(app, size) { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ const St = imports.gi.St; | ||||
| const Signals = imports.signals; | ||||
| const Atk = imports.gi.Atk; | ||||
|  | ||||
| const ANIMATED_ICON_UPDATE_TIMEOUT = 14; | ||||
| const ANIMATED_ICON_UPDATE_TIMEOUT = 16; | ||||
|  | ||||
| const Animation = new Lang.Class({ | ||||
|     Name: 'Animation', | ||||
| @@ -33,7 +33,7 @@ const Animation = new Lang.Class({ | ||||
|             if (this._frame == 0) | ||||
|                 this._showFrame(0); | ||||
|  | ||||
|             this._timeoutId = Mainloop.timeout_add(this._speed, Lang.bind(this, this._update)); | ||||
|             this._timeoutId = GLib.timeout_add(GLib.PRIORITY_LOW, this._speed, Lang.bind(this, this._update)); | ||||
|             GLib.Source.set_name_by_id(this._timeoutId, '[gnome-shell] this._update'); | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -469,6 +469,7 @@ const ChatSource = new Lang.Class({ | ||||
|  | ||||
|     destroy: function(reason) { | ||||
|         if (this._client.is_handling_channel(this._channel)) { | ||||
|             this._ackMessages(); | ||||
|             // The chat box has been destroyed so it can't | ||||
|             // handle the channel any more. | ||||
|             this._channel.close_async(function(channel, result) { | ||||
|   | ||||
| @@ -459,7 +459,8 @@ const ActivitiesButton = new Lang.Class({ | ||||
|  | ||||
|         if (event.type() == Clutter.EventType.TOUCH_END || | ||||
|             event.type() == Clutter.EventType.BUTTON_RELEASE) | ||||
|             Main.overview.toggle(); | ||||
|             if (Main.overview.shouldToggleByCornerOrButton()) | ||||
|                 Main.overview.toggle(); | ||||
|  | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
| @@ -467,7 +468,8 @@ const ActivitiesButton = new Lang.Class({ | ||||
|     _onKeyRelease: function(actor, event) { | ||||
|         let symbol = event.get_key_symbol(); | ||||
|         if (symbol == Clutter.KEY_Return || symbol == Clutter.KEY_space) { | ||||
|             Main.overview.toggle(); | ||||
|             if (Main.overview.shouldToggleByCornerOrButton()) | ||||
|                 Main.overview.toggle(); | ||||
|         } | ||||
|         return Clutter.EVENT_PROPAGATE; | ||||
|     }, | ||||
|   | ||||
| @@ -1235,15 +1235,17 @@ const WindowManager = new Lang.Class({ | ||||
|     }, | ||||
|  | ||||
|     _fullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) { | ||||
|         actor.translation_x = oldFrameRect.x; | ||||
|         actor.translation_y = oldFrameRect.y; | ||||
|         let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; | ||||
|         actor.translation_x = oldFrameRect.x - monitor.x; | ||||
|         actor.translation_y = oldFrameRect.y - monitor.y; | ||||
|         this._fullscreenAnimation(shellwm, actor, oldFrameRect); | ||||
|     }, | ||||
|  | ||||
|     _unfullscreenWindow: function(shellwm, actor, oldFrameRect, oldBufferRect) { | ||||
|         let targetRect = actor.meta_window.get_frame_rect(); | ||||
|         actor.translation_x = -targetRect.x; | ||||
|         actor.translation_y = -targetRect.y; | ||||
|         let monitor = Main.layoutManager.monitors[actor.meta_window.get_monitor()]; | ||||
|         actor.translation_x = -(targetRect.x - monitor.x); | ||||
|         actor.translation_y = -(targetRect.y - monitor.y); | ||||
|         this._fullscreenAnimation(shellwm, actor, oldFrameRect); | ||||
|     }, | ||||
|  | ||||
| @@ -1294,7 +1296,10 @@ const WindowManager = new Lang.Class({ | ||||
|                            transition: 'easeOutQuad', | ||||
|                            onComplete: this._sizeChangeWindowDone, | ||||
|                            onCompleteScope: this, | ||||
|                            onCompleteParams: [shellwm, actor] | ||||
|                            onCompleteParams: [shellwm, actor], | ||||
|                            onOverwrite: this._sizeChangeWindowOverwritten, | ||||
|                            onOverwriteScope: this, | ||||
|                            onOverwriteParams: [shellwm, actor] | ||||
|                          }); | ||||
|  | ||||
|         // Now unfreeze actor updates, to get it to the new size. | ||||
| @@ -1319,6 +1324,16 @@ const WindowManager = new Lang.Class({ | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _sizeChangeWindowOverwritten: function(shellwm, actor) { | ||||
|         if (this._removeEffect(this._resizing, actor)) { | ||||
|             let actorClone = actor.__fullscreenClone; | ||||
|             if (actorClone) { | ||||
|                 actorClone.destroy(); | ||||
|                 delete actor.__fullscreenClone; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|  | ||||
|     _hasAttachedDialogs: function(window, ignoreWindow) { | ||||
|         var count = 0; | ||||
|         window.foreach_transient(function(win) { | ||||
|   | ||||
| @@ -214,7 +214,7 @@ const WindowMenuManager = new Lang.Class({ | ||||
|                 menu.close(); | ||||
|             }); | ||||
|  | ||||
|         this._sourceActor.set_size(rect.width, rect.height); | ||||
|         this._sourceActor.set_size(Math.max(1, rect.width), Math.max(1, rect.height)); | ||||
|         this._sourceActor.set_position(rect.x, rect.y); | ||||
|         this._sourceActor.show(); | ||||
|  | ||||
|   | ||||
| @@ -28,6 +28,7 @@ gl | ||||
| gu | ||||
| he | ||||
| hi | ||||
| hr | ||||
| hu | ||||
| ia | ||||
| id | ||||
|   | ||||
							
								
								
									
										16
									
								
								po/ar.po
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								po/ar.po
									
									
									
									
									
								
							| @@ -1223,13 +1223,13 @@ msgstr "<غير معروفة>" | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s مغلق" | ||||
| msgstr "%s مغلق" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:454 | ||||
| #, javascript-format | ||||
| msgid "%s Connected" | ||||
| msgstr "%s مُتصل" | ||||
| msgstr "%s مُتصل" | ||||
|  | ||||
| #. 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); | ||||
| @@ -1237,19 +1237,19 @@ msgstr "%s مُتصل" | ||||
| #: ../js/ui/status/network.js:459 | ||||
| #, javascript-format | ||||
| msgid "%s Unmanaged" | ||||
| msgstr "%s غير مُدار" | ||||
| msgstr "%s غير مُدار" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:462 | ||||
| #, javascript-format | ||||
| msgid "%s Disconnecting" | ||||
| msgstr "%s يقطع الاتّصال" | ||||
| msgstr "%s يقطع الاتّصال" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s يتّصل" | ||||
| msgstr "%s يتّصل" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:472 | ||||
| @@ -1269,7 +1269,7 @@ msgstr "برمجيات %s المغروسة (Firmware) غير متاحة" | ||||
| #: ../js/ui/status/network.js:484 | ||||
| #, javascript-format | ||||
| msgid "%s Unavailable" | ||||
| msgstr "%s غير متاح" | ||||
| msgstr "%s غير متاح" | ||||
|  | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:487 | ||||
| @@ -1296,7 +1296,7 @@ msgstr "عتاد %s مُعَطَّل" | ||||
| #: ../js/ui/status/network.js:592 | ||||
| #, javascript-format | ||||
| msgid "%s Disabled" | ||||
| msgstr "%s معطّل" | ||||
| msgstr "%s معطّل" | ||||
|  | ||||
| #: ../js/ui/status/network.js:632 | ||||
| msgid "Use as Internet connection" | ||||
| @@ -1364,7 +1364,7 @@ msgstr "نقطة اتصال %s نشطة" | ||||
| #: ../js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| msgstr "%s غير متّصل" | ||||
| msgstr "%s غير متّصل" | ||||
|  | ||||
| #: ../js/ui/status/network.js:1411 | ||||
| msgid "connecting..." | ||||
|   | ||||
							
								
								
									
										4
									
								
								po/cs.po
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								po/cs.po
									
									
									
									
									
								
							| @@ -1222,7 +1222,7 @@ msgstr "Zjišťování polohy je povoleno" | ||||
|  | ||||
| #: ../js/ui/status/location.js:72 ../js/ui/status/location.js:178 | ||||
| msgid "Disable" | ||||
| msgstr "Zakázáno" | ||||
| msgstr "Zakázat" | ||||
|  | ||||
| #: ../js/ui/status/location.js:73 | ||||
| msgid "Privacy Settings" | ||||
| @@ -1238,7 +1238,7 @@ msgstr "Zjišťování polohy je zakázáno" | ||||
|  | ||||
| #: ../js/ui/status/location.js:181 | ||||
| msgid "Enable" | ||||
| msgstr "Povoleno" | ||||
| msgstr "Povolit" | ||||
|  | ||||
| #: ../js/ui/status/network.js:101 | ||||
| msgid "<unknown>" | ||||
|   | ||||
							
								
								
									
										210
									
								
								po/id.po
									
									
									
									
									
								
							
							
						
						
									
										210
									
								
								po/id.po
									
									
									
									
									
								
							| @@ -7,11 +7,11 @@ | ||||
| # Wibiharto <wibinem@yahoo.com>, 2011. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell master\n" | ||||
| "Project-Id-Version: gnome-shell gnome-3-18\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" | ||||
| "shell&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2015-09-19 08:21+0000\n" | ||||
| "PO-Revision-Date: 2015-09-19 19:34+0700\n" | ||||
| "POT-Creation-Date: 2016-01-02 10:15+0000\n" | ||||
| "PO-Revision-Date: 2016-01-02 19:12+0700\n" | ||||
| "Last-Translator: Andika Triwidada <andika@gmail.com>\n" | ||||
| "Language-Team: Indonesian <gnome-l10n-id@googlegroups.com>\n" | ||||
| "Language: id\n" | ||||
| @@ -20,7 +20,7 @@ msgstr "" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=1; plural=0;\n" | ||||
| "X-Poedit-SourceCharset: UTF-8\n" | ||||
| "X-Generator: Poedit 1.6.10\n" | ||||
| "X-Generator: Poedit 1.8.4\n" | ||||
|  | ||||
| #: ../data/50-gnome-shell-system.xml.in.h:1 | ||||
| msgid "System" | ||||
| @@ -336,25 +336,33 @@ msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Masuk" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:281 | ||||
| #: ../js/gdm/loginDialog.js:285 | ||||
| msgid "Choose Session" | ||||
| msgstr "Pilih Sesi" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:431 | ||||
| #. 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:435 | ||||
| msgid "Not listed?" | ||||
| msgstr "Tak masuk daftar?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:850 | ||||
| #. 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:854 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(cth., pengguna dari %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271 | ||||
| #. 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:859 ../js/ui/components/networkAgent.js:271 | ||||
| #: ../js/ui/components/networkAgent.js:289 | ||||
| msgid "Username: " | ||||
| msgstr "Nama pengguna: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:1184 | ||||
| #: ../js/gdm/loginDialog.js:1196 | ||||
| msgid "Login Window" | ||||
| msgstr "Jendela Log Masuk" | ||||
|  | ||||
| @@ -362,6 +370,11 @@ msgstr "Jendela Log Masuk" | ||||
| msgid "Authentication error" | ||||
| msgstr "Galat otentikasi" | ||||
|  | ||||
| #. 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:473 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(atau gesekkan jari)" | ||||
| @@ -370,6 +383,8 @@ msgstr "(atau gesekkan jari)" | ||||
| msgid "Command not found" | ||||
| msgstr "Perintah tidak ditemukan" | ||||
|  | ||||
| #. Replace "Error invoking GLib.shell_parse_argv: " with | ||||
| #. something nicer | ||||
| #: ../js/misc/util.js:152 | ||||
| msgid "Could not parse command:" | ||||
| msgstr "Tak dapat mengurai perintah:" | ||||
| @@ -379,70 +394,78 @@ msgstr "Tak dapat mengurai perintah:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "Eksekusi \"%s\" gagal:" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #. Translators: Time in 24h format | ||||
| #: ../js/misc/util.js:191 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" | ||||
| #: ../js/misc/util.js:197 | ||||
| #, no-c-format | ||||
| msgid "Yesterday, %H∶%M" | ||||
| msgstr "Kemarin, %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/misc/util.js:203 | ||||
| #, no-c-format | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #. i.e. "May 25, 14:30" | ||||
| #: ../js/misc/util.js:209 | ||||
| #, no-c-format | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%d %B, %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 24h format. | ||||
| #. i.e. "May 25 2012, 14:30" */ | ||||
| #. i.e. "May 25 2012, 14:30" | ||||
| #: ../js/misc/util.js:215 | ||||
| #, no-c-format | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%d %B %Y, %H∶%M" | ||||
|  | ||||
| #. Translators: Time in 12h format */ | ||||
| #. Translators: Time in 12h format | ||||
| #: ../js/misc/util.js:220 | ||||
| msgid "%l∶%M %p" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" */ | ||||
| #. time string in 12h format. i.e. "Yesterday, 2:30 pm" | ||||
| #: ../js/misc/util.js:226 | ||||
| #, no-c-format | ||||
| msgid "Yesterday, %l∶%M %p" | ||||
| msgstr "Kemarin, %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/misc/util.js:232 | ||||
| #, no-c-format | ||||
| msgid "%A, %l∶%M %p" | ||||
| msgstr "%A, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 12h format. | ||||
| #. i.e. "May 25, 2:30 pm" */ | ||||
| #. i.e. "May 25, 2:30 pm" | ||||
| #: ../js/misc/util.js:238 | ||||
| #, no-c-format | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%d %B, %l∶%M %p" | ||||
|  | ||||
| #. Translators: this is the month name, day number, year | ||||
| #. number followed by a time string in 12h format. | ||||
| #. i.e. "May 25 2012, 2:30 pm"*/ | ||||
| #. i.e. "May 25 2012, 2:30 pm" | ||||
| #: ../js/misc/util.js:244 | ||||
| #, no-c-format | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%d %B %Y, %l∶%M %p" | ||||
|  | ||||
| #. TRANSLATORS: this is the title of the wifi captive portal login | ||||
| #. * window, until we know the title of the actual login page */ | ||||
| #. * window, until we know the title of the actual login page | ||||
| #: ../js/portalHelper/main.js:85 | ||||
| msgid "Web Authentication Redirect" | ||||
| msgstr "Pengalihan Otentikasi Web" | ||||
| @@ -493,12 +516,11 @@ msgstr "Ubah Latar…" | ||||
| msgid "Display Settings" | ||||
| msgstr "Pengaturan Tampilan" | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650 | ||||
| #: ../js/ui/status/system.js:366 | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366 | ||||
| msgid "Settings" | ||||
| msgstr "Pengaturan" | ||||
|  | ||||
| #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ | ||||
| #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). | ||||
| #: ../js/ui/calendar.js:55 | ||||
| msgctxt "calendar-no-work" | ||||
| msgid "06" | ||||
| @@ -508,43 +530,43 @@ msgstr "06" | ||||
| #. * | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/calendar.js:84 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "M" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #. Translators: Calendar grid abbreviation for Monday | ||||
| #: ../js/ui/calendar.js:86 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #. Translators: Calendar grid abbreviation for Tuesday | ||||
| #: ../js/ui/calendar.js:88 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "S" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #. Translators: Calendar grid abbreviation for Wednesday | ||||
| #: ../js/ui/calendar.js:90 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "R" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #. Translators: Calendar grid abbreviation for Thursday | ||||
| #: ../js/ui/calendar.js:92 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "K" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #. Translators: Calendar grid abbreviation for Friday | ||||
| #: ../js/ui/calendar.js:94 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "J" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #. Translators: Calendar grid abbreviation for Saturday | ||||
| #: ../js/ui/calendar.js:96 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| @@ -564,39 +586,39 @@ msgstr "Minggu %V" | ||||
|  | ||||
| #. 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:1188 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Sepanjang Hari" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1291 | ||||
| #: ../js/ui/calendar.js:1295 | ||||
| msgid "Clear section" | ||||
| msgstr "Bersihkan seksi" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1518 | ||||
| #: ../js/ui/calendar.js:1522 | ||||
| msgid "Events" | ||||
| msgstr "Kejadian" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1527 | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d %B" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| #: ../js/ui/calendar.js:1535 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A, %d %B %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1616 | ||||
| #: ../js/ui/calendar.js:1620 | ||||
| msgid "Notifications" | ||||
| msgstr "Pemberitahuan" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1767 | ||||
| #: ../js/ui/calendar.js:1771 | ||||
| msgid "No Notifications" | ||||
| msgstr "Tak Ada Pemberitahuan" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1770 | ||||
| #: ../js/ui/calendar.js:1774 | ||||
| msgid "No Events" | ||||
| msgstr "Tak Ada Kejadian" | ||||
|  | ||||
| @@ -608,7 +630,7 @@ msgstr "Drive eksternal tersambung" | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Drive eksternal terputus" | ||||
|  | ||||
| #: ../js/ui/components/autorunManager.js:354 | ||||
| #: ../js/ui/components/autorunManager.js:351 | ||||
| #, javascript-format | ||||
| msgid "Open with %s" | ||||
| msgstr "Buka dengan %s" | ||||
| @@ -626,6 +648,7 @@ msgstr "Ketik lagi:" | ||||
| msgid "Connect" | ||||
| msgstr "Sambung" | ||||
|  | ||||
| #. Cisco LEAP | ||||
| #: ../js/ui/components/networkAgent.js:233 | ||||
| #: ../js/ui/components/networkAgent.js:245 | ||||
| #: ../js/ui/components/networkAgent.js:273 | ||||
| @@ -634,6 +657,7 @@ msgstr "Sambung" | ||||
| msgid "Password: " | ||||
| msgstr "Sandi: " | ||||
|  | ||||
| #. static WEP | ||||
| #: ../js/ui/components/networkAgent.js:238 | ||||
| msgid "Key: " | ||||
| msgstr "Tombol: " | ||||
| @@ -725,13 +749,13 @@ msgstr "Otentikasi" | ||||
| #. 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:301 ../js/ui/shellMountOperation.js:383 | ||||
| msgid "Sorry, that didn't work. Please try again." | ||||
| msgstr "Maaf, tidak berhasil. Silakan coba lagi." | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #. IM name. | ||||
| #: ../js/ui/components/telepathyClient.js:759 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| @@ -745,13 +769,15 @@ msgstr "Jendela" | ||||
| msgid "Show Applications" | ||||
| msgstr "Tampilkan Aplikasi" | ||||
|  | ||||
| #. Translators: this is the name of the dock/favorites area on | ||||
| #. the left of the overview | ||||
| #: ../js/ui/dash.js:449 | ||||
| msgid "Dash" | ||||
| msgstr "Dash" | ||||
|  | ||||
| #. Translators: This is the date format to use when the calendar popup is | ||||
| #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/dateMenu.js:73 | ||||
| msgid "%B %e %Y" | ||||
| msgstr "%e %B %Y" | ||||
| @@ -759,7 +785,7 @@ msgstr "%e %B %Y" | ||||
| #. Translators: This is the accessible name of the date button shown | ||||
| #. * below the time in the shell; it should combine the weekday and the | ||||
| #. * date, e.g. "Tuesday February 17 2015". | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/dateMenu.js:80 | ||||
| msgid "%A %B %e %Y" | ||||
| msgstr "%A %e %B %Y" | ||||
| @@ -884,13 +910,13 @@ msgstr "Beberapa aplikasi sedang sibuk atau belum disimpan perubahannya." | ||||
| msgid "Other users are logged in." | ||||
| msgstr "Pengguna lain sedang log masuk." | ||||
|  | ||||
| #. 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 | ||||
| msgid "%s (remote)" | ||||
| msgstr "%s (jarak jauh)" | ||||
|  | ||||
| #. 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 | ||||
| msgid "%s (console)" | ||||
| @@ -909,7 +935,7 @@ msgstr "Unduh dan pasang \"%s\" dari extensions.gnome.org?" | ||||
| msgid "Keyboard" | ||||
| msgstr "Papan Ketik" | ||||
|  | ||||
| #. translators: 'Hide' is a verb */ | ||||
| #. translators: 'Hide' is a verb | ||||
| #: ../js/ui/legacyTray.js:66 | ||||
| msgid "Hide tray" | ||||
| msgstr "Sembunyikan baki" | ||||
| @@ -922,7 +948,7 @@ msgstr "Ikon Status" | ||||
| msgid "No extensions installed" | ||||
| msgstr "Tak ada ekstensi terpasang" | ||||
|  | ||||
| #. Translators: argument is an extension UUID. */ | ||||
| #. Translators: argument is an extension UUID. | ||||
| #: ../js/ui/lookingGlass.js:697 | ||||
| #, javascript-format | ||||
| msgid "%s has not emitted any errors." | ||||
| @@ -942,7 +968,7 @@ msgstr "Diaktifkan" | ||||
|  | ||||
| #. translators: | ||||
| #. * The device has been disabled | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830 | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828 | ||||
| msgid "Disabled" | ||||
| msgstr "Dinonaktifkan" | ||||
|  | ||||
| @@ -981,26 +1007,36 @@ msgstr "Gambaran" | ||||
| #. 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:244 | ||||
| msgid "Type to search…" | ||||
| msgstr "Ketik untuk mencari…" | ||||
|  | ||||
| #: ../js/ui/panel.js:352 | ||||
| #: ../js/ui/panel.js:358 | ||||
| msgid "Quit" | ||||
| msgstr "Keluar" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". */ | ||||
| #: ../js/ui/panel.js:404 | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: ../js/ui/panel.js:414 | ||||
| msgid "Activities" | ||||
| msgstr "Aktivitas" | ||||
|  | ||||
| #: ../js/ui/panel.js:754 | ||||
| #: ../js/ui/panel.js:695 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Sistem" | ||||
|  | ||||
| #: ../js/ui/panel.js:807 | ||||
| msgid "Top Bar" | ||||
| msgstr "Bar Atas" | ||||
|  | ||||
| # Dirgita: Hayo, enaknya pake I/O atau ON/OFF?^^ | ||||
| #. Translators: this MUST be either "toggle-switch-us" | ||||
| #. (for toggle switches containing the English words | ||||
| #. "ON" and "OFF") or "toggle-switch-intl" (for toggle | ||||
| #. switches containing "◯" and "|"). Other values will | ||||
| #. simply result in invisible toggle switches. | ||||
| #: ../js/ui/popupMenu.js:289 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-intl" | ||||
| @@ -1018,7 +1054,7 @@ msgid "Restarting…" | ||||
| msgstr "Memulai ulang..." | ||||
|  | ||||
| #. Translators: This is a time format for a date in | ||||
| #. long format */ | ||||
| #. long format | ||||
| #: ../js/ui/screenShield.js:85 | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A, %d %B" | ||||
| @@ -1043,6 +1079,13 @@ msgstr "Kunci" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME perlu mengunci layar" | ||||
|  | ||||
| #. 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:805 ../js/ui/screenShield.js:1271 | ||||
| msgid "Unable to lock" | ||||
| msgstr "Tak bisa mengunci" | ||||
| @@ -1138,7 +1181,7 @@ msgstr "Matikan" | ||||
| msgid "Bluetooth Settings" | ||||
| msgstr "Pengaturan Bluetooth" | ||||
|  | ||||
| #. Translators: this is the number of connected bluetooth devices */ | ||||
| #. Translators: this is the number of connected bluetooth devices | ||||
| #: ../js/ui/status/bluetooth.js:105 | ||||
| #, javascript-format | ||||
| msgid "%d Connected" | ||||
| @@ -1185,13 +1228,13 @@ msgstr "Fungsikan" | ||||
| msgid "<unknown>" | ||||
| msgstr "<tak dikenal>" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s Mati" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:454 | ||||
| #, javascript-format | ||||
| msgid "%s Connected" | ||||
| @@ -1199,45 +1242,45 @@ msgstr "%s Tersambung" | ||||
|  | ||||
| #. 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); | ||||
| #. %s is a network identifier */ | ||||
| #. %s is a network identifier | ||||
| #: ../js/ui/status/network.js:459 | ||||
| #, javascript-format | ||||
| msgid "%s Unmanaged" | ||||
| msgstr "%s Tak Dikelola" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:462 | ||||
| #, javascript-format | ||||
| msgid "%s Disconnecting" | ||||
| msgstr "%s Memutus" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "%s Menyambung" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier */ | ||||
| #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:472 | ||||
| #, javascript-format | ||||
| msgid "%s Requires Authentication" | ||||
| msgstr "%s Memerlukan Otentikasi" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing; %s is a network identifier */ | ||||
| #. module, which is missing; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:480 | ||||
| #, javascript-format | ||||
| msgid "Firmware Missing For %s" | ||||
| msgstr "Firmware Hilang Untuk %s" | ||||
|  | ||||
| #. Translators: this is for a network device that cannot be activated (for example it | ||||
| #. is disabled by rfkill, or it has no coverage; %s is a network identifier */ | ||||
| #. is disabled by rfkill, or it has no coverage; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:484 | ||||
| #, javascript-format | ||||
| msgid "%s Unavailable" | ||||
| msgstr "%s Tak tersedia" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:487 | ||||
| #, javascript-format | ||||
| msgid "%s Connection Failed" | ||||
| @@ -1251,14 +1294,14 @@ msgstr "Pengaturan Kabel" | ||||
| msgid "Mobile Broadband Settings" | ||||
| msgstr "Pengaturan Data Seluler" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s Perangkat Keras Dinonaktifkan" | ||||
|  | ||||
| #. Translators: this is for a network device that cannot be activated | ||||
| #. because it's disabled by rfkill (airplane mode); %s is a network identifier */ | ||||
| #. because it's disabled by rfkill (airplane mode); %s is a network identifier | ||||
| #: ../js/ui/status/network.js:592 | ||||
| #, javascript-format | ||||
| msgid "%s Disabled" | ||||
| @@ -1320,13 +1363,13 @@ msgstr "Pengaturan Wi-Fi" | ||||
| msgid "Turn On" | ||||
| msgstr "Nyalakan" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:1296 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "%s Hotspot Aktif" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| @@ -1336,7 +1379,7 @@ msgstr "%s Tak Tersambung" | ||||
| msgid "connecting..." | ||||
| msgstr "menghubungi..." | ||||
|  | ||||
| #. 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:1414 | ||||
| msgid "authentication required" | ||||
| msgstr "diperlukan otentikasi" | ||||
| @@ -1377,20 +1420,27 @@ msgstr "Pengaturan Daya" | ||||
| msgid "Fully Charged" | ||||
| msgstr "Terisi Penuh" | ||||
|  | ||||
| #. 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 "Memperkirakan…" | ||||
|  | ||||
| #. Translators: this is <hours>:<minutes> Remaining (<percentage>) | ||||
| #: ../js/ui/status/power.js:86 | ||||
| #, javascript-format | ||||
| msgid "%d∶%02d Remaining (%d%%)" | ||||
| msgstr "%d:%02d Tersisa (%d%%)" | ||||
|  | ||||
| #. Translators: this is <hours>:<minutes> Until Full (<percentage>) | ||||
| #: ../js/ui/status/power.js:91 | ||||
| #, javascript-format | ||||
| msgid "%d∶%02d Until Full (%d%%)" | ||||
| msgstr "%d:%02d Sampai Penuh (%d%%)" | ||||
|  | ||||
| #. 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:88 | ||||
| msgid "Airplane Mode On" | ||||
| msgstr "Mode Pesawat Terbang Aktif" | ||||
| @@ -1458,7 +1508,7 @@ msgstr "Apakah Anda ingin mempertahankan pengaturan tampilan ini?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/windowManager.js:82 | ||||
| msgid "Revert Settings" | ||||
| msgstr "Balikkan Tatanan" | ||||
| @@ -1474,7 +1524,7 @@ msgid_plural "Settings changes will revert in %d seconds" | ||||
| msgstr[0] "Perubahan tatanan akan dikembalikan dalam %d detik" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. */ | ||||
| #. * the width of the window and the second is the height. | ||||
| #: ../js/ui/windowManager.js:658 | ||||
| #, javascript-format | ||||
| msgid "%d x %d" | ||||
| @@ -1550,7 +1600,7 @@ msgstr "Evolution Kalender" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound outputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1837 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1835 | ||||
| #, c-format | ||||
| msgid "%u Output" | ||||
| msgid_plural "%u Outputs" | ||||
| @@ -1558,38 +1608,38 @@ msgstr[0] "%u Keluaran" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound inputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1847 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1845 | ||||
| #, c-format | ||||
| msgid "%u Input" | ||||
| msgid_plural "%u Inputs" | ||||
| msgstr[0] "%u Masukan" | ||||
|  | ||||
| #: ../src/gvc/gvc-mixer-control.c:2373 | ||||
| #: ../src/gvc/gvc-mixer-control.c:2371 | ||||
| msgid "System Sounds" | ||||
| msgstr "Suara Sistem" | ||||
|  | ||||
| #: ../src/main.c:373 | ||||
| #: ../src/main.c:381 | ||||
| msgid "Print version" | ||||
| msgstr "Versi Cetak" | ||||
|  | ||||
| #: ../src/main.c:379 | ||||
| #: ../src/main.c:387 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "Mode yang dipakai oleh layar log masuk GDM" | ||||
|  | ||||
| #: ../src/main.c:385 | ||||
| #: ../src/main.c:393 | ||||
| msgid "Use a specific mode, e.g. \"gdm\" for login screen" | ||||
| msgstr "Menggunakan mode tertentu, mis. \"gdm\" untuk layar masuk" | ||||
|  | ||||
| #: ../src/main.c:391 | ||||
| #: ../src/main.c:399 | ||||
| msgid "List possible modes" | ||||
| msgstr "Menampilkan mode yang mungkin" | ||||
|  | ||||
| #: ../src/shell-app.c:239 | ||||
| #: ../src/shell-app.c:246 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Tak dikenal" | ||||
|  | ||||
| #: ../src/shell-app.c:480 | ||||
| #: ../src/shell-app.c:487 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Gagal meluncurkan \"%s\"" | ||||
|   | ||||
							
								
								
									
										54
									
								
								po/nb.po
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								po/nb.po
									
									
									
									
									
								
							| @@ -9,8 +9,8 @@ msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell 3.17.x\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2015-09-07 19:22+0200\n" | ||||
| "PO-Revision-Date: 2015-09-07 19:31+0200\n" | ||||
| "POT-Creation-Date: 2015-10-16 18:11+0200\n" | ||||
| "PO-Revision-Date: 2015-10-16 18:11+0200\n" | ||||
| "Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n" | ||||
| "Language-Team: Norwegian bokmål <i18n-nb@lister.ping.uio.no>\n" | ||||
| "Language: Norwegian bokmål\n" | ||||
| @@ -508,8 +508,7 @@ msgstr "Bytt bakgrunn …" | ||||
| msgid "Display Settings" | ||||
| msgstr "Innstillinger for skjerm" | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650 | ||||
| #: ../js/ui/status/system.js:366 | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366 | ||||
| msgid "Settings" | ||||
| msgstr "Innstillinger" | ||||
|  | ||||
| @@ -585,33 +584,33 @@ msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "Hele dagen" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1291 | ||||
| #: ../js/ui/calendar.js:1295 | ||||
| msgid "Clear section" | ||||
| msgstr "Tøm seksjon" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1518 | ||||
| #: ../js/ui/calendar.js:1522 | ||||
| msgid "Events" | ||||
| msgstr "Hendelser" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1527 | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%A %B %d" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| #: ../js/ui/calendar.js:1535 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%A %B %d, %Y" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1616 | ||||
| #: ../js/ui/calendar.js:1620 | ||||
| msgid "Notifications" | ||||
| msgstr "Varslinger" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1767 | ||||
| #: ../js/ui/calendar.js:1771 | ||||
| msgid "No Notifications" | ||||
| msgstr "Ingen varslinger" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1770 | ||||
| #: ../js/ui/calendar.js:1774 | ||||
| msgid "No Events" | ||||
| msgstr "Ingen hendelser" | ||||
|  | ||||
| @@ -623,7 +622,7 @@ msgstr "Ekstern stasjon koblet til" | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Ekstern stasjon koblet fra" | ||||
|  | ||||
| #: ../js/ui/components/autorunManager.js:354 | ||||
| #: ../js/ui/components/autorunManager.js:351 | ||||
| #, javascript-format | ||||
| msgid "Open with %s" | ||||
| msgstr "Åpne med %s" | ||||
| @@ -1012,17 +1011,22 @@ msgstr "Oversikt" | ||||
| msgid "Type to search…" | ||||
| msgstr "Skriv for å søke …" | ||||
|  | ||||
| #: ../js/ui/panel.js:352 | ||||
| #: ../js/ui/panel.js:358 | ||||
| msgid "Quit" | ||||
| msgstr "Avslutt" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: ../js/ui/panel.js:404 | ||||
| #: ../js/ui/panel.js:414 | ||||
| msgid "Activities" | ||||
| msgstr "Aktiviteter" | ||||
|  | ||||
| #: ../js/ui/panel.js:754 | ||||
| #: ../js/ui/panel.js:693 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "System" | ||||
|  | ||||
| #: ../js/ui/panel.js:805 | ||||
| msgid "Top Bar" | ||||
| msgstr "Topp-panel" | ||||
|  | ||||
| @@ -1562,19 +1566,19 @@ msgstr "Alltid på synlig arbeidsområde" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:105 | ||||
| msgid "Move to Workspace Left" | ||||
| msgstr "Gå til arbeidsområdet til venstre" | ||||
| msgstr "Flytt til arbeidsområdet til venstre" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:110 | ||||
| msgid "Move to Workspace Right" | ||||
| msgstr "Gå til arbeidsområdet til høyre" | ||||
| msgstr "Flytt til arbeidsområdet til høyre" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:115 | ||||
| msgid "Move to Workspace Up" | ||||
| msgstr "Gå til arbeidsområdet over" | ||||
| msgstr "Flytt til arbeidsområdet over" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:120 | ||||
| msgid "Move to Workspace Down" | ||||
| msgstr "Gå til arbeidsområdet under" | ||||
| msgstr "Flytt til arbeidsområdet under" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:136 | ||||
| msgid "Move to Monitor Up" | ||||
| @@ -1618,28 +1622,28 @@ msgstr[1] "%u innganger" | ||||
| msgid "System Sounds" | ||||
| msgstr "Systemlyder" | ||||
|  | ||||
| #: ../src/main.c:373 | ||||
| #: ../src/main.c:381 | ||||
| msgid "Print version" | ||||
| msgstr "Vis versjon" | ||||
|  | ||||
| #: ../src/main.c:379 | ||||
| #: ../src/main.c:387 | ||||
| msgid "Mode used by GDM for login screen" | ||||
| msgstr "Modus som brukes av GDM for innloggingsskjermen" | ||||
|  | ||||
| #: ../src/main.c:385 | ||||
| #: ../src/main.c:393 | ||||
| msgid "Use a specific mode, e.g. \"gdm\" for login screen" | ||||
| msgstr "Bruk spesifikt modus, f.eks «gdm» for innloggingsskjerm" | ||||
|  | ||||
| #: ../src/main.c:391 | ||||
| #: ../src/main.c:399 | ||||
| msgid "List possible modes" | ||||
| msgstr "Vis mulige modi" | ||||
|  | ||||
| #: ../src/shell-app.c:239 | ||||
| #: ../src/shell-app.c:246 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Ukjent" | ||||
|  | ||||
| #: ../src/shell-app.c:480 | ||||
| #: ../src/shell-app.c:487 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Klarte ikke å starte «%s»" | ||||
|   | ||||
							
								
								
									
										65
									
								
								po/pl.po
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								po/pl.po
									
									
									
									
									
								
							| @@ -4,16 +4,16 @@ | ||||
| # pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas: | ||||
| # gnomepl@aviary.pl | ||||
| # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||||
| # Piotr Drąg <piotrdrag@gmail.com>, 2009-2015. | ||||
| # Piotr Drąg <piotrdrag@gmail.com>, 2009-2016. | ||||
| # Tomasz Dominikowski <dominikowski@gmail.com>, 2009. | ||||
| # Wojciech Szczęsny <wszczesny@aviary.pl>, 2013. | ||||
| # Aviary.pl <gnomepl@aviary.pl>, 2009-2015. | ||||
| # Aviary.pl <gnomepl@aviary.pl>, 2009-2016. | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell\n" | ||||
| "Report-Msgid-Bugs-To: \n" | ||||
| "POT-Creation-Date: 2015-09-29 00:50+0200\n" | ||||
| "PO-Revision-Date: 2015-09-29 00:52+0200\n" | ||||
| "POT-Creation-Date: 2016-07-12 21:23+0200\n" | ||||
| "PO-Revision-Date: 2016-07-12 21:24+0200\n" | ||||
| "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n" | ||||
| "Language-Team: Polish <gnomepl@aviary.pl>\n" | ||||
| "Language: pl\n" | ||||
| @@ -330,35 +330,35 @@ msgstr "Rozszerzenia powłoki GNOME" | ||||
| msgid "Cancel" | ||||
| msgstr "Anuluj" | ||||
|  | ||||
| #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215 | ||||
| #: ../js/gdm/authPrompt.js:447 | ||||
| #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:216 | ||||
| #: ../js/gdm/authPrompt.js:448 | ||||
| msgid "Next" | ||||
| msgstr "Dalej" | ||||
|  | ||||
| #: ../js/gdm/authPrompt.js:211 ../js/ui/shellMountOperation.js:403 | ||||
| #: ../js/gdm/authPrompt.js:212 ../js/ui/shellMountOperation.js:403 | ||||
| #: ../js/ui/unlockDialog.js:59 | ||||
| msgid "Unlock" | ||||
| msgstr "Odblokuj" | ||||
|  | ||||
| #: ../js/gdm/authPrompt.js:213 | ||||
| #: ../js/gdm/authPrompt.js:214 | ||||
| msgctxt "button" | ||||
| msgid "Sign In" | ||||
| msgstr "Zaloguj" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:281 | ||||
| #: ../js/gdm/loginDialog.js:285 | ||||
| msgid "Choose Session" | ||||
| msgstr "Wybór sesji" | ||||
|  | ||||
| #. 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:431 | ||||
| #: ../js/gdm/loginDialog.js:435 | ||||
| msgid "Not listed?" | ||||
| msgstr "Inny użytkownik?" | ||||
|  | ||||
| #. 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:850 | ||||
| #: ../js/gdm/loginDialog.js:854 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(np. użytkownik lub %s)" | ||||
| @@ -366,12 +366,12 @@ msgstr "(np. użytkownik lub %s)" | ||||
| #. TTLS and PEAP are actually much more complicated, but this complication | ||||
| #. is not visible here since we only care about phase2 authentication | ||||
| #. (and don't even care of which one) | ||||
| #: ../js/gdm/loginDialog.js:855 ../js/ui/components/networkAgent.js:271 | ||||
| #: ../js/gdm/loginDialog.js:859 ../js/ui/components/networkAgent.js:271 | ||||
| #: ../js/ui/components/networkAgent.js:289 | ||||
| msgid "Username: " | ||||
| msgstr "Nazwa użytkownika: " | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:1184 | ||||
| #: ../js/gdm/loginDialog.js:1196 | ||||
| msgid "Login Window" | ||||
| msgstr "Okno logowania" | ||||
|  | ||||
| @@ -639,7 +639,7 @@ msgstr "Podłączono dysk zewnętrzny" | ||||
| msgid "External drive disconnected" | ||||
| msgstr "Odłączono dysk zewnętrzny" | ||||
|  | ||||
| #: ../js/ui/components/autorunManager.js:354 | ||||
| #: ../js/ui/components/autorunManager.js:351 | ||||
| #, javascript-format | ||||
| msgid "Open with %s" | ||||
| msgstr "Otwórz za pomocą „%s”" | ||||
| @@ -765,7 +765,7 @@ msgstr "To nie zadziałało. Proszę spróbować ponownie." | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. | ||||
| #: ../js/ui/components/telepathyClient.js:759 | ||||
| #: ../js/ui/components/telepathyClient.js:760 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| msgstr "Użytkownik %s jest teraz znany jako %s" | ||||
| @@ -990,7 +990,7 @@ msgstr "Włączone" | ||||
|  | ||||
| #. translators: | ||||
| #. * The device has been disabled | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828 | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1866 | ||||
| msgid "Disabled" | ||||
| msgstr "Wyłączone" | ||||
|  | ||||
| @@ -1034,22 +1034,22 @@ msgstr "Podgląd" | ||||
| msgid "Type to search…" | ||||
| msgstr "Wyszukiwanie…" | ||||
|  | ||||
| #: ../js/ui/panel.js:352 | ||||
| #: ../js/ui/panel.js:358 | ||||
| msgid "Quit" | ||||
| msgstr "Zakończ" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: ../js/ui/panel.js:404 | ||||
| #: ../js/ui/panel.js:414 | ||||
| msgid "Activities" | ||||
| msgstr "Podgląd" | ||||
|  | ||||
| #: ../js/ui/panel.js:650 | ||||
| #: ../js/ui/panel.js:695 | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "Menu systemowe" | ||||
|  | ||||
| #: ../js/ui/panel.js:754 | ||||
| #: ../js/ui/panel.js:807 | ||||
| msgid "Top Bar" | ||||
| msgstr "Górny pasek" | ||||
|  | ||||
| @@ -1064,7 +1064,7 @@ msgstr "toggle-switch-intl" | ||||
|  | ||||
| #: ../js/ui/runDialog.js:70 | ||||
| msgid "Enter a Command" | ||||
| msgstr "Proszę wprowadzić polecenie" | ||||
| msgstr "Proszę wprowadzić polecenie:" | ||||
|  | ||||
| #: ../js/ui/runDialog.js:110 ../js/ui/windowMenu.js:162 | ||||
| msgid "Close" | ||||
| @@ -1629,7 +1629,7 @@ msgstr "Kalendarz programu Evolution" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound outputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1835 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1873 | ||||
| #, c-format | ||||
| msgid "%u Output" | ||||
| msgid_plural "%u Outputs" | ||||
| @@ -1639,7 +1639,7 @@ msgstr[2] "%u wyjść" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound inputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1845 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1883 | ||||
| #, c-format | ||||
| msgid "%u Input" | ||||
| msgid_plural "%u Inputs" | ||||
| @@ -1647,7 +1647,7 @@ msgstr[0] "%u wejście" | ||||
| msgstr[1] "%u wejścia" | ||||
| msgstr[2] "%u wejść" | ||||
|  | ||||
| #: ../src/gvc/gvc-mixer-control.c:2371 | ||||
| #: ../src/gvc/gvc-mixer-control.c:2738 | ||||
| msgid "System Sounds" | ||||
| msgstr "Dźwięki systemowe" | ||||
|  | ||||
| @@ -1667,12 +1667,12 @@ msgstr "Używa podanego trybu, np. „gdm” dla ekranu logowania" | ||||
| msgid "List possible modes" | ||||
| msgstr "Wyświetla listę możliwych trybów" | ||||
|  | ||||
| #: ../src/shell-app.c:239 | ||||
| #: ../src/shell-app.c:246 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "Nieznany" | ||||
|  | ||||
| #: ../src/shell-app.c:480 | ||||
| #: ../src/shell-app.c:487 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "Uruchomienie „%s” się nie powiodło" | ||||
| @@ -1688,3 +1688,16 @@ msgstr "Hasło nie może być puste" | ||||
| #: ../src/shell-polkit-authentication-agent.c:346 | ||||
| msgid "Authentication dialog was dismissed by the user" | ||||
| msgstr "Okno dialogowe uwierzytelnienia zostało odrzucone przez użytkownika" | ||||
|  | ||||
| msgctxt "title" | ||||
| msgid "Restart & Install Upgrade" | ||||
| msgstr "Ponowne uruchomienie i instalacja aktualizacji" | ||||
|  | ||||
| msgid "" | ||||
| "%s %s will be installed after restart. Upgrade installation can take a " | ||||
| "long time: ensure that you have backed up and that the computer is " | ||||
| "plugged in." | ||||
| msgstr "" | ||||
| "System %s %s zostanie zainstalowany po ponownym uruchomieniu. Instalacja " | ||||
| "aktualizacji może zająć dużo czasu. Proszę się upewnić, że wykonano kopię " | ||||
| "zapasową danych i podłączono komputer do prądu." | ||||
|   | ||||
							
								
								
									
										631
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
							
						
						
									
										631
									
								
								po/zh_CN.po
									
									
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										217
									
								
								po/zh_TW.po
									
									
									
									
									
								
							
							
						
						
									
										217
									
								
								po/zh_TW.po
									
									
									
									
									
								
							| @@ -1,17 +1,18 @@ | ||||
| # Chinese (Taiwan) translation for gnome-shell. | ||||
| # Copyright (C) 2010 gnome-shell's COPYRIGHT HOLDER | ||||
| # This file is distributed under the same license as the gnome-shell package. | ||||
| # Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2010. | ||||
| # Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>, 2010, 2014. | ||||
| # Wei-Lun Chao <chaoweilun@gmail.com>, 2010. | ||||
| # Anthony Fok <foka@debian.org>, 2015. | ||||
| # | ||||
| msgid "" | ||||
| msgstr "" | ||||
| "Project-Id-Version: gnome-shell 3.3.90\n" | ||||
| "Project-Id-Version: gnome-shell 3.18\n" | ||||
| "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" | ||||
| "shell&keywords=I18N+L10N&component=general\n" | ||||
| "POT-Creation-Date: 2015-08-25 13:32+0800\n" | ||||
| "PO-Revision-Date: 2015-08-25 13:37+0800\n" | ||||
| "Last-Translator: Chao-Hsiung Liao <j_h_liau@yahoo.com.tw>\n" | ||||
| "POT-Creation-Date: 2015-10-16 21:11+0000\n" | ||||
| "PO-Revision-Date: 2015-10-17 09:30+0800\n" | ||||
| "Last-Translator: Anthony Fok <foka@debian.org>\n" | ||||
| "Language-Team: Chinese (Taiwan) <zh-l10n@lists.linux.org.tw>\n" | ||||
| "Language: zh_TW\n" | ||||
| "MIME-Version: 1.0\n" | ||||
| @@ -297,7 +298,7 @@ msgid "Cancel" | ||||
| msgstr "取消" | ||||
|  | ||||
| #: ../js/gdm/authPrompt.js:169 ../js/gdm/authPrompt.js:215 | ||||
| #: ../js/gdm/authPrompt.js:435 | ||||
| #: ../js/gdm/authPrompt.js:447 | ||||
| msgid "Next" | ||||
| msgstr "下一個" | ||||
|  | ||||
| @@ -315,21 +316,29 @@ msgstr "登入" | ||||
| msgid "Choose Session" | ||||
| msgstr "選擇作業階段" | ||||
|  | ||||
| #. 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:431 | ||||
| msgid "Not listed?" | ||||
| msgstr "沒有列出來?" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:847 | ||||
| #. 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:850 | ||||
| #, javascript-format | ||||
| msgid "(e.g., user or %s)" | ||||
| msgstr "(例如: user 或 %s)" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:852 ../js/ui/components/networkAgent.js:271 | ||||
| #. 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:855 ../js/ui/components/networkAgent.js:271 | ||||
| #: ../js/ui/components/networkAgent.js:289 | ||||
| msgid "Username: " | ||||
| msgstr "使用者名稱:" | ||||
|  | ||||
| #: ../js/gdm/loginDialog.js:1181 | ||||
| #: ../js/gdm/loginDialog.js:1184 | ||||
| msgid "Login Window" | ||||
| msgstr "登入視窗" | ||||
|  | ||||
| @@ -337,6 +346,11 @@ msgstr "登入視窗" | ||||
| msgid "Authentication error" | ||||
| msgstr "核對錯誤" | ||||
|  | ||||
| #. 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:473 | ||||
| msgid "(or swipe finger)" | ||||
| msgstr "(或是滑過手指)" | ||||
| @@ -345,6 +359,8 @@ msgstr "(或是滑過手指)" | ||||
| msgid "Command not found" | ||||
| msgstr "找不到指令" | ||||
|  | ||||
| #. Replace "Error invoking GLib.shell_parse_argv: " with | ||||
| #. something nicer | ||||
| #: ../js/misc/util.js:152 | ||||
| msgid "Could not parse command:" | ||||
| msgstr "無法分析指令:" | ||||
| @@ -354,70 +370,78 @@ msgstr "無法分析指令:" | ||||
| msgid "Execution of “%s” failed:" | ||||
| msgstr "執行「%s」失敗:" | ||||
|  | ||||
| #. Translators: Time in 24h format */ | ||||
| #. Translators: Time in 24h format | ||||
| #: ../js/misc/util.js:191 | ||||
| msgid "%H∶%M" | ||||
| msgstr "%H∶%M" | ||||
|  | ||||
| #. Translators: this is the word "Yesterday" followed by a | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" */ | ||||
| #. time string in 24h format. i.e. "Yesterday, 14:30" | ||||
| #: ../js/misc/util.js:197 | ||||
| #, no-c-format | ||||
| msgid "Yesterday, %H∶%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/misc/util.js:203 | ||||
| #, no-c-format | ||||
| msgid "%A, %H∶%M" | ||||
| msgstr "%A %H∶%M" | ||||
|  | ||||
| #. Translators: this is the month name and day number | ||||
| #. followed by a time string in 24h format. | ||||
| #. i.e. "May 25, 14:30" */ | ||||
| #. i.e. "May 25, 14:30" | ||||
| #: ../js/misc/util.js:209 | ||||
| #, no-c-format | ||||
| msgid "%B %d, %H∶%M" | ||||
| msgstr "%m月%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/misc/util.js:215 | ||||
| #, no-c-format | ||||
| msgid "%B %d %Y, %H∶%M" | ||||
| msgstr "%Y年%m月%d日 %H:%M" | ||||
|  | ||||
| #. Translators: Time in 12h format */ | ||||
| #. Translators: Time in 12h format | ||||
| #: ../js/misc/util.js:220 | ||||
| msgid "%l∶%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/misc/util.js:226 | ||||
| #, no-c-format | ||||
| msgid "Yesterday, %l∶%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/misc/util.js:232 | ||||
| #, no-c-format | ||||
| msgid "%A, %l∶%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/misc/util.js:238 | ||||
| #, no-c-format | ||||
| msgid "%B %d, %l∶%M %p" | ||||
| msgstr "%m月%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/misc/util.js:244 | ||||
| #, no-c-format | ||||
| msgid "%B %d %Y, %l∶%M %p" | ||||
| msgstr "%Y年%m月%d日%p %l∶%M" | ||||
|  | ||||
| #. TRANSLATORS: this is the title of the wifi captive portal login | ||||
| #. * window, until we know the title of the actual login page */ | ||||
| #. * window, until we know the title of the actual login page | ||||
| #: ../js/portalHelper/main.js:85 | ||||
| msgid "Web Authentication Redirect" | ||||
| msgstr "網頁核對重新導向" | ||||
| @@ -468,12 +492,11 @@ msgstr "改變背景…" | ||||
| msgid "Display Settings" | ||||
| msgstr "顯示設定值" | ||||
|  | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/panel.js:650 | ||||
| #: ../js/ui/status/system.js:366 | ||||
| #: ../js/ui/backgroundMenu.js:22 ../js/ui/status/system.js:366 | ||||
| msgid "Settings" | ||||
| msgstr "設定值" | ||||
|  | ||||
| #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). */ | ||||
| #. Translators: Enter 0-6 (Sunday-Saturday) for non-work days. Examples: "0" (Sunday) "6" (Saturday) "06" (Sunday and Saturday). | ||||
| #: ../js/ui/calendar.js:55 | ||||
| msgctxt "calendar-no-work" | ||||
| msgid "06" | ||||
| @@ -483,43 +506,43 @@ msgstr "06" | ||||
| #. * | ||||
| #. * NOTE: These grid abbreviations are always shown together | ||||
| #. * and in order, e.g. "S M T W T F S". | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/calendar.js:84 | ||||
| msgctxt "grid sunday" | ||||
| msgid "S" | ||||
| msgstr "日" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Monday */ | ||||
| #. Translators: Calendar grid abbreviation for Monday | ||||
| #: ../js/ui/calendar.js:86 | ||||
| msgctxt "grid monday" | ||||
| msgid "M" | ||||
| msgstr "一" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Tuesday */ | ||||
| #. Translators: Calendar grid abbreviation for Tuesday | ||||
| #: ../js/ui/calendar.js:88 | ||||
| msgctxt "grid tuesday" | ||||
| msgid "T" | ||||
| msgstr "二" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Wednesday */ | ||||
| #. Translators: Calendar grid abbreviation for Wednesday | ||||
| #: ../js/ui/calendar.js:90 | ||||
| msgctxt "grid wednesday" | ||||
| msgid "W" | ||||
| msgstr "三" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Thursday */ | ||||
| #. Translators: Calendar grid abbreviation for Thursday | ||||
| #: ../js/ui/calendar.js:92 | ||||
| msgctxt "grid thursday" | ||||
| msgid "T" | ||||
| msgstr "四" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Friday */ | ||||
| #. Translators: Calendar grid abbreviation for Friday | ||||
| #: ../js/ui/calendar.js:94 | ||||
| msgctxt "grid friday" | ||||
| msgid "F" | ||||
| msgstr "五" | ||||
|  | ||||
| #. Translators: Calendar grid abbreviation for Saturday */ | ||||
| #. Translators: Calendar grid abbreviation for Saturday | ||||
| #: ../js/ui/calendar.js:96 | ||||
| msgctxt "grid saturday" | ||||
| msgid "S" | ||||
| @@ -539,39 +562,39 @@ msgstr "%V 週" | ||||
|  | ||||
| #. 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:1188 | ||||
| msgctxt "event list time" | ||||
| msgid "All Day" | ||||
| msgstr "整天" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1291 | ||||
| #: ../js/ui/calendar.js:1295 | ||||
| msgid "Clear section" | ||||
| msgstr "清除區段" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1518 | ||||
| #: ../js/ui/calendar.js:1522 | ||||
| msgid "Events" | ||||
| msgstr "行程" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1527 | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%m月%d日%A" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1531 | ||||
| #: ../js/ui/calendar.js:1535 | ||||
| msgctxt "calendar heading" | ||||
| msgid "%A, %B %d, %Y" | ||||
| msgstr "%Y年%m月%d日%A" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1616 | ||||
| #: ../js/ui/calendar.js:1620 | ||||
| msgid "Notifications" | ||||
| msgstr "通知" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1767 | ||||
| #: ../js/ui/calendar.js:1771 | ||||
| msgid "No Notifications" | ||||
| msgstr "沒有通知" | ||||
|  | ||||
| #: ../js/ui/calendar.js:1770 | ||||
| #: ../js/ui/calendar.js:1774 | ||||
| msgid "No Events" | ||||
| msgstr "沒有行程" | ||||
|  | ||||
| @@ -583,7 +606,7 @@ msgstr "外部裝置已連接" | ||||
| msgid "External drive disconnected" | ||||
| msgstr "外部裝置已拔除" | ||||
|  | ||||
| #: ../js/ui/components/autorunManager.js:354 | ||||
| #: ../js/ui/components/autorunManager.js:351 | ||||
| #, javascript-format | ||||
| msgid "Open with %s" | ||||
| msgstr "用 %s 開啟" | ||||
| @@ -601,6 +624,7 @@ msgstr "再輸入一次:" | ||||
| msgid "Connect" | ||||
| msgstr "連線" | ||||
|  | ||||
| #. Cisco LEAP | ||||
| #: ../js/ui/components/networkAgent.js:233 | ||||
| #: ../js/ui/components/networkAgent.js:245 | ||||
| #: ../js/ui/components/networkAgent.js:273 | ||||
| @@ -609,6 +633,7 @@ msgstr "連線" | ||||
| msgid "Password: " | ||||
| msgstr "密碼: " | ||||
|  | ||||
| #. static WEP | ||||
| #: ../js/ui/components/networkAgent.js:238 | ||||
| msgid "Key: " | ||||
| msgstr "金鑰:" | ||||
| @@ -698,13 +723,13 @@ msgstr "核對" | ||||
| #. 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:301 ../js/ui/shellMountOperation.js:383 | ||||
| msgid "Sorry, that didn't work. Please try again." | ||||
| msgstr "抱歉,那樣沒有作用。請再試一次。" | ||||
|  | ||||
| #. Translators: this is the other person changing their old IM name to their new | ||||
| #. IM name. */ | ||||
| #. IM name. | ||||
| #: ../js/ui/components/telepathyClient.js:759 | ||||
| #, javascript-format | ||||
| msgid "%s is now known as %s" | ||||
| @@ -718,13 +743,15 @@ msgstr "視窗" | ||||
| msgid "Show Applications" | ||||
| msgstr "顯示應用程式" | ||||
|  | ||||
| #. Translators: this is the name of the dock/favorites area on | ||||
| #. the left of the overview | ||||
| #: ../js/ui/dash.js:449 | ||||
| msgid "Dash" | ||||
| msgstr "Dash" | ||||
|  | ||||
| #. Translators: This is the date format to use when the calendar popup is | ||||
| #. * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM"). | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/dateMenu.js:73 | ||||
| msgid "%B %e %Y" | ||||
| msgstr "%Y年%m月%e日" | ||||
| @@ -732,7 +759,7 @@ msgstr "%Y年%m月%e日" | ||||
| #. Translators: This is the accessible name of the date button shown | ||||
| #. * below the time in the shell; it should combine the weekday and the | ||||
| #. * date, e.g. "Tuesday February 17 2015". | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/dateMenu.js:80 | ||||
| msgid "%A %B %e %Y" | ||||
| msgstr "%Y年%m月%e日%A" | ||||
| @@ -854,13 +881,13 @@ msgstr "部分應用程式忙碌中或有未儲存的工作。" | ||||
| 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 | ||||
| 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 | ||||
| msgid "%s (console)" | ||||
| @@ -879,7 +906,7 @@ msgstr "是否從 extensions.gnome.org 下載並安裝「%s」?" | ||||
| msgid "Keyboard" | ||||
| msgstr "鍵盤" | ||||
|  | ||||
| #. translators: 'Hide' is a verb */ | ||||
| #. translators: 'Hide' is a verb | ||||
| #: ../js/ui/legacyTray.js:66 | ||||
| msgid "Hide tray" | ||||
| msgstr "隱藏系統匣" | ||||
| @@ -892,7 +919,7 @@ msgstr "狀態圖示" | ||||
| msgid "No extensions installed" | ||||
| msgstr "沒有安裝擴充功能" | ||||
|  | ||||
| #. Translators: argument is an extension UUID. */ | ||||
| #. Translators: argument is an extension UUID. | ||||
| #: ../js/ui/lookingGlass.js:697 | ||||
| #, javascript-format | ||||
| msgid "%s has not emitted any errors." | ||||
| @@ -912,7 +939,7 @@ msgstr "已啟用" | ||||
|  | ||||
| #. translators: | ||||
| #. * The device has been disabled | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1830 | ||||
| #: ../js/ui/lookingGlass.js:719 ../src/gvc/gvc-mixer-control.c:1828 | ||||
| msgid "Disabled" | ||||
| msgstr "已停用" | ||||
|  | ||||
| @@ -951,25 +978,37 @@ msgstr "概覽" | ||||
| #. 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:244 | ||||
| msgid "Type to search…" | ||||
| msgstr "輸入以搜尋…" | ||||
|  | ||||
| #: ../js/ui/panel.js:352 | ||||
| #: ../js/ui/panel.js:358 | ||||
| msgid "Quit" | ||||
| msgstr "結束" | ||||
|  | ||||
| #. Translators: If there is no suitable word for "Activities" | ||||
| #. in your language, you can use the word for "Overview". */ | ||||
| #: ../js/ui/panel.js:404 | ||||
| #. in your language, you can use the word for "Overview". | ||||
| #: ../js/ui/panel.js:414 | ||||
| msgid "Activities" | ||||
| msgstr "概覽 " | ||||
|  | ||||
| #: ../js/ui/panel.js:754 | ||||
| #: ../js/ui/panel.js:693 | ||||
| #, fuzzy | ||||
| #| msgid "System" | ||||
| msgctxt "System menu in the top bar" | ||||
| msgid "System" | ||||
| msgstr "系統" | ||||
|  | ||||
| #: ../js/ui/panel.js:805 | ||||
| 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:289 | ||||
| msgid "toggle-switch-us" | ||||
| msgstr "toggle-switch-us" | ||||
| @@ -987,7 +1026,7 @@ msgid "Restarting…" | ||||
| msgstr "重新啟動…" | ||||
|  | ||||
| #. Translators: This is a time format for a date in | ||||
| #. long format */ | ||||
| #. long format | ||||
| #: ../js/ui/screenShield.js:85 | ||||
| msgid "%A, %B %d" | ||||
| msgstr "%m月%d日%A" | ||||
| @@ -1012,6 +1051,13 @@ msgstr "鎖定" | ||||
| msgid "GNOME needs to lock the screen" | ||||
| msgstr "GNOME 需要鎖定螢幕" | ||||
|  | ||||
| #. 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:805 ../js/ui/screenShield.js:1271 | ||||
| msgid "Unable to lock" | ||||
| msgstr "無法鎖定" | ||||
| @@ -1107,7 +1153,7 @@ msgstr "關閉" | ||||
| msgid "Bluetooth Settings" | ||||
| msgstr "藍牙設定值" | ||||
|  | ||||
| #. Translators: this is the number of connected bluetooth devices */ | ||||
| #. Translators: this is the number of connected bluetooth devices | ||||
| #: ../js/ui/status/bluetooth.js:105 | ||||
| #, javascript-format | ||||
| msgid "%d Connected" | ||||
| @@ -1154,13 +1200,13 @@ msgstr "啟用" | ||||
| msgid "<unknown>" | ||||
| msgstr "<不明>" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:451 ../js/ui/status/network.js:1308 | ||||
| #, javascript-format | ||||
| msgid "%s Off" | ||||
| msgstr "%s 關閉" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:454 | ||||
| #, javascript-format | ||||
| msgid "%s Connected" | ||||
| @@ -1168,45 +1214,45 @@ msgstr "%s 已連線" | ||||
|  | ||||
| #. 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); | ||||
| #. %s is a network identifier */ | ||||
| #. %s is a network identifier | ||||
| #: ../js/ui/status/network.js:459 | ||||
| #, javascript-format | ||||
| msgid "%s Unmanaged" | ||||
| msgstr "%s 未受管理" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:462 | ||||
| #, javascript-format | ||||
| msgid "%s Disconnecting" | ||||
| msgstr "%s 正在斷線" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:469 ../js/ui/status/network.js:1300 | ||||
| #, javascript-format | ||||
| msgid "%s Connecting" | ||||
| msgstr "正連線到 %s" | ||||
|  | ||||
| #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier */ | ||||
| #. Translators: this is for network connections that require some kind of key or password; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:472 | ||||
| #, javascript-format | ||||
| msgid "%s Requires Authentication" | ||||
| msgstr "%s 需要核對" | ||||
|  | ||||
| #. Translators: this is for devices that require some kind of firmware or kernel | ||||
| #. module, which is missing; %s is a network identifier */ | ||||
| #. module, which is missing; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:480 | ||||
| #, javascript-format | ||||
| msgid "Firmware Missing For %s" | ||||
| msgstr "缺少 %s 韌體" | ||||
|  | ||||
| #. Translators: this is for a network device that cannot be activated (for example it | ||||
| #. is disabled by rfkill, or it has no coverage; %s is a network identifier */ | ||||
| #. is disabled by rfkill, or it has no coverage; %s is a network identifier | ||||
| #: ../js/ui/status/network.js:484 | ||||
| #, javascript-format | ||||
| msgid "%s Unavailable" | ||||
| msgstr "%s 無法使用" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:487 | ||||
| #, javascript-format | ||||
| msgid "%s Connection Failed" | ||||
| @@ -1220,14 +1266,14 @@ msgstr "有線設定值" | ||||
| msgid "Mobile Broadband Settings" | ||||
| msgstr "行動寬頻設定值" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:588 ../js/ui/status/network.js:1305 | ||||
| #, javascript-format | ||||
| msgid "%s Hardware Disabled" | ||||
| msgstr "%s 硬體已停用" | ||||
|  | ||||
| #. Translators: this is for a network device that cannot be activated | ||||
| #. because it's disabled by rfkill (airplane mode); %s is a network identifier */ | ||||
| #. because it's disabled by rfkill (airplane mode); %s is a network identifier | ||||
| #: ../js/ui/status/network.js:592 | ||||
| #, javascript-format | ||||
| msgid "%s Disabled" | ||||
| @@ -1289,13 +1335,13 @@ msgstr "Wi-Fi 設定值" | ||||
| msgid "Turn On" | ||||
| msgstr "開啟" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:1296 | ||||
| #, javascript-format | ||||
| msgid "%s Hotspot Active" | ||||
| msgstr "%s 熱點有效" | ||||
|  | ||||
| #. Translators: %s is a network identifier */ | ||||
| #. Translators: %s is a network identifier | ||||
| #: ../js/ui/status/network.js:1311 | ||||
| #, javascript-format | ||||
| msgid "%s Not Connected" | ||||
| @@ -1305,7 +1351,7 @@ msgstr "%s 未連線" | ||||
| 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:1414 | ||||
| msgid "authentication required" | ||||
| msgstr "要求核對" | ||||
| @@ -1346,20 +1392,27 @@ msgstr "電源設定值" | ||||
| 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 <hours>:<minutes> Remaining (<percentage>) | ||||
| #: ../js/ui/status/power.js:86 | ||||
| #, javascript-format | ||||
| msgid "%d∶%02d Remaining (%d%%)" | ||||
| msgstr "剩餘時間 %d∶%02d (%d%%)" | ||||
|  | ||||
| #. Translators: this is <hours>:<minutes> Until Full (<percentage>) | ||||
| #: ../js/ui/status/power.js:91 | ||||
| #, javascript-format | ||||
| msgid "%d∶%02d Until Full (%d%%)" | ||||
| msgstr "直到充滿還需 %d∶%02d (%d%%)" | ||||
|  | ||||
| #. 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:88 | ||||
| msgid "Airplane Mode On" | ||||
| msgstr "飛安模式已開啟" | ||||
| @@ -1427,7 +1480,7 @@ msgstr "您想要保留這些顯示器設定值嗎?" | ||||
|  | ||||
| #. Translators: this and the following message should be limited in lenght, | ||||
| #. to avoid ellipsizing the labels. | ||||
| #. */ | ||||
| #. | ||||
| #: ../js/ui/windowManager.js:82 | ||||
| msgid "Revert Settings" | ||||
| msgstr "還原設定值" | ||||
| @@ -1443,7 +1496,7 @@ msgid_plural "Settings changes will revert in %d seconds" | ||||
| msgstr[0] "設定值的變更會在 %d 秒內還原" | ||||
|  | ||||
| #. Translators: This represents the size of a window. The first number is | ||||
| #. * the width of the window and the second is the height. */ | ||||
| #. * the width of the window and the second is the height. | ||||
| #: ../js/ui/windowManager.js:658 | ||||
| #, javascript-format | ||||
| msgid "%d x %d" | ||||
| @@ -1499,11 +1552,11 @@ msgstr "將工作區下移" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:136 | ||||
| msgid "Move to Monitor Up" | ||||
| msgstr "將工作區上移" | ||||
| msgstr "移至螢幕上端" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:142 | ||||
| msgid "Move to Monitor Down" | ||||
| msgstr "將工作區下移" | ||||
| msgstr "移至螢幕下端" | ||||
|  | ||||
| #: ../js/ui/windowMenu.js:148 | ||||
| msgid "Move to Monitor Left" | ||||
| @@ -1519,7 +1572,7 @@ msgstr "Evolution 行事曆" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound outputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1837 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1835 | ||||
| #, c-format | ||||
| msgid "%u Output" | ||||
| msgid_plural "%u Outputs" | ||||
| @@ -1527,38 +1580,38 @@ msgstr[0] "%u 輸出" | ||||
|  | ||||
| #. translators: | ||||
| #. * The number of sound inputs on a particular device | ||||
| #: ../src/gvc/gvc-mixer-control.c:1847 | ||||
| #: ../src/gvc/gvc-mixer-control.c:1845 | ||||
| #, c-format | ||||
| msgid "%u Input" | ||||
| msgid_plural "%u Inputs" | ||||
| msgstr[0] "%u 輸入" | ||||
|  | ||||
| #: ../src/gvc/gvc-mixer-control.c:2373 | ||||
| #: ../src/gvc/gvc-mixer-control.c:2371 | ||||
| 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 "列出可能的模式" | ||||
|  | ||||
| #: ../src/shell-app.c:239 | ||||
| #: ../src/shell-app.c:246 | ||||
| msgctxt "program" | ||||
| msgid "Unknown" | ||||
| msgstr "不明" | ||||
|  | ||||
| #: ../src/shell-app.c:480 | ||||
| #: ../src/shell-app.c:487 | ||||
| #, c-format | ||||
| msgid "Failed to launch “%s”" | ||||
| msgstr "無法啟動「%s」" | ||||
|   | ||||
| @@ -867,7 +867,12 @@ update_scale_factor (GtkSettings *settings, | ||||
|     { | ||||
|       g_object_set (context, "scale-factor", g_value_get_int (&value), NULL); | ||||
|       if (meta_is_wayland_compositor ()) | ||||
|         g_object_set (clutter_settings_get_default (), "font-dpi", 96 * 1024 * g_value_get_int (&value), NULL); | ||||
|         { | ||||
|           int xft_dpi; | ||||
|           g_object_get (settings, "gtk-xft-dpi", &xft_dpi, NULL); | ||||
|  | ||||
|           g_object_set (clutter_settings_get_default (), "font-dpi", xft_dpi, NULL); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   /* Make sure clutter and gdk scaling stays disabled */ | ||||
|   | ||||
| @@ -315,8 +315,6 @@ get_secrets_keyring_cb (GObject            *source, | ||||
|  | ||||
|               secrets_found = TRUE; | ||||
|  | ||||
|               g_hash_table_unref (attributes); | ||||
|               secret_value_unref (secret); | ||||
|               break; | ||||
|             } | ||||
|         } | ||||
| @@ -366,8 +364,6 @@ shell_network_agent_get_secrets (NMSecretAgent                 *agent, | ||||
| { | ||||
|   ShellNetworkAgent *self = SHELL_NETWORK_AGENT (agent); | ||||
|   ShellAgentRequest *request; | ||||
|   NMSettingConnection *setting_connection; | ||||
|   const char *connection_type; | ||||
|   GHashTable *attributes; | ||||
|   char *request_id; | ||||
|  | ||||
| @@ -381,9 +377,6 @@ shell_network_agent_get_secrets (NMSecretAgent                 *agent, | ||||
|       shell_agent_request_cancel (request); | ||||
|     } | ||||
|  | ||||
|   setting_connection = nm_connection_get_setting_connection (connection); | ||||
|   connection_type = nm_setting_connection_get_connection_type (setting_connection); | ||||
|  | ||||
|   request = g_slice_new (ShellAgentRequest); | ||||
|   request->self = g_object_ref (self); | ||||
|   request->cancellable = g_cancellable_new (); | ||||
| @@ -393,7 +386,7 @@ shell_network_agent_get_secrets (NMSecretAgent                 *agent, | ||||
|   request->flags = flags; | ||||
|   request->callback = callback; | ||||
|   request->callback_data = callback_data; | ||||
|   request->is_vpn = !strcmp(connection_type, NM_SETTING_VPN_SETTING_NAME); | ||||
|   request->is_vpn = !strcmp(setting_name, NM_SETTING_VPN_SETTING_NAME); | ||||
|   request->entries = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, gvalue_destroy_notify); | ||||
|  | ||||
|   if (request->is_vpn) | ||||
|   | ||||
| @@ -211,7 +211,7 @@ calculate_gaussian_kernel (gdouble   sigma, | ||||
| { | ||||
|   gdouble *ret, sum; | ||||
|   gdouble exp_divisor; | ||||
|   guint half, i; | ||||
|   int half, i; | ||||
|  | ||||
|   g_return_val_if_fail (sigma > 0, NULL); | ||||
|  | ||||
| @@ -223,14 +223,14 @@ calculate_gaussian_kernel (gdouble   sigma, | ||||
|   exp_divisor = 2 * sigma * sigma; | ||||
|  | ||||
|   /* n_values of 1D Gauss function */ | ||||
|   for (i = 0; i < n_values; i++) | ||||
|   for (i = 0; i < (int)n_values; i++) | ||||
|     { | ||||
|       ret[i] = exp (-(i - half) * (i - half) / exp_divisor); | ||||
|       sum += ret[i]; | ||||
|     } | ||||
|  | ||||
|   /* normalize */ | ||||
|   for (i = 0; i < n_values; i++) | ||||
|   for (i = 0; i < (int)n_values; i++) | ||||
|     ret[i] /= sum; | ||||
|  | ||||
|   return ret; | ||||
| @@ -347,6 +347,7 @@ _st_create_shadow_pipeline (StShadow    *shadow_spec, | ||||
| { | ||||
|   ClutterBackend *backend = clutter_get_default_backend (); | ||||
|   CoglContext *ctx = clutter_backend_get_cogl_context (backend); | ||||
|   CoglError *error = NULL; | ||||
|  | ||||
|   static CoglPipeline *shadow_pipeline_template = NULL; | ||||
|  | ||||
| @@ -377,7 +378,13 @@ _st_create_shadow_pipeline (StShadow    *shadow_spec, | ||||
|                                                          COGL_PIXEL_FORMAT_A_8, | ||||
|                                                          rowstride_out, | ||||
|                                                          pixels_out, | ||||
|                                                          NULL)); | ||||
|                                                          &error)); | ||||
|  | ||||
|   if (error) | ||||
|     { | ||||
|       g_warning ("Failed to allocate texture: %s", error->message); | ||||
|       cogl_error_free (error); | ||||
|     } | ||||
|  | ||||
|   g_free (pixels_out); | ||||
|  | ||||
| @@ -395,7 +402,10 @@ _st_create_shadow_pipeline (StShadow    *shadow_spec, | ||||
|  | ||||
|   pipeline = cogl_pipeline_copy (shadow_pipeline_template); | ||||
|   cogl_pipeline_set_layer_texture (pipeline, 0, texture); | ||||
|   cogl_object_unref (texture); | ||||
|  | ||||
|   if (texture) | ||||
|     cogl_object_unref (texture); | ||||
|  | ||||
|   return pipeline; | ||||
| } | ||||
|  | ||||
| @@ -442,6 +452,7 @@ _st_create_shadow_pipeline_from_actor (StShadow     *shadow_spec, | ||||
|       if (!cogl_framebuffer_allocate (fb, &catch_error)) | ||||
|         { | ||||
|           cogl_error_free (catch_error); | ||||
|           cogl_object_unref (offscreen); | ||||
|           cogl_object_unref (buffer); | ||||
|           return NULL; | ||||
|         } | ||||
| @@ -512,7 +523,12 @@ _st_create_shadow_cairo_pattern (StShadow        *shadow_spec, | ||||
|   g_return_val_if_fail (shadow_spec != NULL, NULL); | ||||
|   g_return_val_if_fail (src_pattern != NULL, NULL); | ||||
|  | ||||
|   cairo_pattern_get_surface (src_pattern, &src_surface); | ||||
|   if (cairo_pattern_get_surface (src_pattern, &src_surface) != CAIRO_STATUS_SUCCESS) | ||||
|     /* The most likely reason we can't get the pattern is that sizing went hairwire | ||||
|      * and the caller tried to create a surface too big for memory, leaving us with | ||||
|      * a pattern in an error state; we return a transparent pattern for the shadow. | ||||
|      */ | ||||
|     return cairo_pattern_create_rgba(1.0, 1.0, 1.0, 0.0); | ||||
|  | ||||
|   width_in  = cairo_image_surface_get_width  (src_surface); | ||||
|   height_in = cairo_image_surface_get_height (src_surface); | ||||
|   | ||||
| @@ -469,14 +469,24 @@ pixbuf_to_cogl_texture (GdkPixbuf *pixbuf) | ||||
| { | ||||
|   ClutterBackend *backend = clutter_get_default_backend (); | ||||
|   CoglContext *ctx = clutter_backend_get_cogl_context (backend); | ||||
|   CoglError *error = NULL; | ||||
|   CoglTexture2D *texture; | ||||
|  | ||||
|   return COGL_TEXTURE (cogl_texture_2d_new_from_data (ctx, | ||||
|                                                       gdk_pixbuf_get_width (pixbuf), | ||||
|                                                       gdk_pixbuf_get_height (pixbuf), | ||||
|                                                       gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888, | ||||
|                                                       gdk_pixbuf_get_rowstride (pixbuf), | ||||
|                                                       gdk_pixbuf_get_pixels (pixbuf), | ||||
|                                                       NULL)); | ||||
|   texture = cogl_texture_2d_new_from_data (ctx, | ||||
|                                            gdk_pixbuf_get_width (pixbuf), | ||||
|                                            gdk_pixbuf_get_height (pixbuf), | ||||
|                                            gdk_pixbuf_get_has_alpha (pixbuf) ? COGL_PIXEL_FORMAT_RGBA_8888 : COGL_PIXEL_FORMAT_RGB_888, | ||||
|                                            gdk_pixbuf_get_rowstride (pixbuf), | ||||
|                                            gdk_pixbuf_get_pixels (pixbuf), | ||||
|                                            &error); | ||||
|  | ||||
|   if (error) | ||||
|     { | ||||
|       g_warning ("Failed to allocate texture: %s", error->message); | ||||
|       cogl_error_free (error); | ||||
|     } | ||||
|  | ||||
|   return texture ? COGL_TEXTURE (texture) : NULL; | ||||
| } | ||||
|  | ||||
| static cairo_surface_t * | ||||
| @@ -640,6 +650,8 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind, | ||||
|       (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32 || | ||||
|        cairo_image_surface_get_format (surface) == CAIRO_FORMAT_RGB24)) | ||||
|     { | ||||
|       CoglError *error = NULL; | ||||
|  | ||||
|       texdata = COGL_TEXTURE (cogl_texture_2d_new_from_data (ctx, | ||||
|                                                              cairo_image_surface_get_width (surface), | ||||
|                                                              cairo_image_surface_get_height (surface), | ||||
| @@ -647,9 +659,18 @@ st_texture_cache_reset_texture (StTextureCachePropertyBind *bind, | ||||
|                                                              COGL_PIXEL_FORMAT_BGRA_8888 : COGL_PIXEL_FORMAT_BGR_888, | ||||
|                                                              cairo_image_surface_get_stride (surface), | ||||
|                                                              cairo_image_surface_get_data (surface), | ||||
|                                                              NULL)); | ||||
|       clutter_texture_set_cogl_texture (bind->texture, texdata); | ||||
|       cogl_object_unref (texdata); | ||||
|                                                              &error)); | ||||
|  | ||||
|       if (texdata) | ||||
|         { | ||||
|           clutter_texture_set_cogl_texture (bind->texture, texdata); | ||||
|           cogl_object_unref (texdata); | ||||
|         } | ||||
|       else if (error) | ||||
|         { | ||||
|           g_warning ("Failed to allocate texture: %s", error->message); | ||||
|           cogl_error_free (error); | ||||
|         } | ||||
|  | ||||
|       clutter_actor_set_opacity (CLUTTER_ACTOR (bind->texture), 255); | ||||
|     } | ||||
|   | ||||
| @@ -71,6 +71,7 @@ create_corner_material (StCornerSpec *corner) | ||||
| { | ||||
|   ClutterBackend *backend = clutter_get_default_backend (); | ||||
|   CoglContext *ctx = clutter_backend_get_cogl_context (backend); | ||||
|   CoglError *error = NULL; | ||||
|   CoglHandle texture; | ||||
|   cairo_t *cr; | ||||
|   cairo_surface_t *surface; | ||||
| @@ -172,9 +173,15 @@ create_corner_material (StCornerSpec *corner) | ||||
|                                                          CLUTTER_CAIRO_FORMAT_ARGB32, | ||||
|                                                          rowstride, | ||||
|                                                          data, | ||||
|                                                          NULL)); | ||||
|                                                          &error)); | ||||
|  | ||||
|   if (error) | ||||
|     { | ||||
|       g_warning ("Failed to allocate texture: %s", error->message); | ||||
|       cogl_error_free (error); | ||||
|     } | ||||
|  | ||||
|   g_free (data); | ||||
|   g_assert (texture != COGL_INVALID_HANDLE); | ||||
|  | ||||
|   return texture; | ||||
| } | ||||
| @@ -347,7 +354,7 @@ st_theme_node_lookup_corner (StThemeNode    *node, | ||||
|                              float           height, | ||||
|                              StCorner        corner_id) | ||||
| { | ||||
|   CoglHandle texture, material; | ||||
|   CoglHandle texture, material = COGL_INVALID_HANDLE; | ||||
|   char *key; | ||||
|   StTextureCache *cache; | ||||
|   StCornerSpec corner; | ||||
| @@ -396,8 +403,12 @@ st_theme_node_lookup_corner (StThemeNode    *node, | ||||
|  | ||||
|   key = corner_to_string (&corner); | ||||
|   texture = st_texture_cache_load (cache, key, ST_TEXTURE_CACHE_POLICY_NONE, load_corner, &corner, NULL); | ||||
|   material = _st_create_texture_pipeline (texture); | ||||
|   cogl_handle_unref (texture); | ||||
|  | ||||
|   if (texture) | ||||
|     { | ||||
|       material = _st_create_texture_pipeline (texture); | ||||
|       cogl_handle_unref (texture); | ||||
|     } | ||||
|  | ||||
|   g_free (key); | ||||
|  | ||||
| @@ -741,7 +752,11 @@ paint_shadow_pattern_to_cairo_context (StShadow *shadow_spec, | ||||
|       /* Then subtract out the bounds of the surface in the surface | ||||
|        * pattern; we transform the context by the inverse of the | ||||
|        * pattern matrix to get to surface coordinates */ | ||||
|       cairo_pattern_get_surface (pattern, &surface); | ||||
|  | ||||
|       if (cairo_pattern_get_surface (pattern, &surface) != CAIRO_STATUS_SUCCESS) | ||||
|         /* Something went wrong previously */ | ||||
|         goto no_surface; | ||||
|  | ||||
|       width = cairo_image_surface_get_width  (surface); | ||||
|       height = cairo_image_surface_get_height (surface); | ||||
|  | ||||
| @@ -752,6 +767,7 @@ paint_shadow_pattern_to_cairo_context (StShadow *shadow_spec, | ||||
|       cairo_rectangle (cr, 0, height, width, - height); | ||||
|       cairo_fill (cr); | ||||
|  | ||||
|     no_surface: | ||||
|       cairo_restore (cr); | ||||
|     } | ||||
|  | ||||
| @@ -953,6 +969,7 @@ st_theme_node_prerender_background (StThemeNode *node, | ||||
| { | ||||
|   ClutterBackend *backend = clutter_get_default_backend (); | ||||
|   CoglContext *ctx = clutter_backend_get_cogl_context (backend); | ||||
|   CoglError *error = NULL; | ||||
|   StBorderImage *border_image; | ||||
|   CoglHandle texture; | ||||
|   guint radius[4]; | ||||
| @@ -1272,7 +1289,13 @@ st_theme_node_prerender_background (StThemeNode *node, | ||||
|                                                          CLUTTER_CAIRO_FORMAT_ARGB32, | ||||
|                                                          rowstride, | ||||
|                                                          data, | ||||
|                                                          NULL)); | ||||
|                                                          &error)); | ||||
|  | ||||
|   if (error) | ||||
|     { | ||||
|       g_warning ("Failed to allocate texture: %s", error->message); | ||||
|       cogl_error_free (error); | ||||
|     } | ||||
|  | ||||
|   cairo_destroy (cr); | ||||
|   cairo_surface_destroy (surface); | ||||
| @@ -2145,7 +2168,7 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state) | ||||
|   guint border_radius[4]; | ||||
|   int max_borders[4]; | ||||
|   int center_radius, corner_id; | ||||
|   CoglHandle buffer, offscreen; | ||||
|   CoglHandle buffer, offscreen = COGL_INVALID_HANDLE; | ||||
|  | ||||
|   /* Get infos from the node */ | ||||
|   if (state->alloc_width < node->box_shadow_min_width || | ||||
| @@ -2186,7 +2209,8 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state) | ||||
|                                        state->box_shadow_height, | ||||
|                                        COGL_TEXTURE_NO_SLICING, | ||||
|                                        COGL_PIXEL_FORMAT_ANY); | ||||
|   offscreen = cogl_offscreen_new_to_texture (buffer); | ||||
|   if (buffer != COGL_INVALID_HANDLE) | ||||
|     offscreen = cogl_offscreen_new_to_texture (buffer); | ||||
|  | ||||
|   if (offscreen != COGL_INVALID_HANDLE) | ||||
|     { | ||||
| @@ -2206,7 +2230,9 @@ st_theme_node_prerender_shadow (StThemeNodePaintState *state) | ||||
|       state->box_shadow_material = _st_create_shadow_pipeline (st_theme_node_get_box_shadow (node), | ||||
|                                                                buffer); | ||||
|     } | ||||
|   cogl_handle_unref (buffer); | ||||
|  | ||||
|   if (buffer != COGL_INVALID_HANDLE) | ||||
|     cogl_handle_unref (buffer); | ||||
| } | ||||
|  | ||||
| static void | ||||
|   | ||||
		Reference in New Issue
	
	Block a user